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,121 @@
1
+ """Yahoo Finance 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.yfinance import YFinanceTools
17
+
18
+
19
+ @register_tool_with_metadata(
20
+ name="yfinance",
21
+ display_name="Yahoo Finance",
22
+ description="Get financial data and stock information from Yahoo Finance",
23
+ category=ToolCategory.PRODUCTIVITY,
24
+ status=ToolStatus.AVAILABLE,
25
+ setup_type=SetupType.NONE,
26
+ icon="FaChartLine",
27
+ icon_color="text-purple-600",
28
+ config_fields=[
29
+ # Basic stock data
30
+ ConfigField(
31
+ name="stock_price",
32
+ label="Stock Price",
33
+ type="boolean",
34
+ required=False,
35
+ default=True,
36
+ description="Enable getting current stock prices",
37
+ ),
38
+ ConfigField(
39
+ name="company_info",
40
+ label="Company Info",
41
+ type="boolean",
42
+ required=False,
43
+ default=False,
44
+ description="Enable getting company information and overview",
45
+ ),
46
+ ConfigField(
47
+ name="stock_fundamentals",
48
+ label="Stock Fundamentals",
49
+ type="boolean",
50
+ required=False,
51
+ default=False,
52
+ description="Enable getting fundamental data for stocks",
53
+ ),
54
+ ConfigField(
55
+ name="historical_prices",
56
+ label="Historical Prices",
57
+ type="boolean",
58
+ required=False,
59
+ default=False,
60
+ description="Enable getting historical stock prices",
61
+ ),
62
+ # Financial statements and analysis
63
+ ConfigField(
64
+ name="income_statements",
65
+ label="Income Statements",
66
+ type="boolean",
67
+ required=False,
68
+ default=False,
69
+ description="Enable getting income statements",
70
+ ),
71
+ ConfigField(
72
+ name="key_financial_ratios",
73
+ label="Key Financial Ratios",
74
+ type="boolean",
75
+ required=False,
76
+ default=False,
77
+ description="Enable getting key financial ratios",
78
+ ),
79
+ # Market data and recommendations
80
+ ConfigField(
81
+ name="analyst_recommendations",
82
+ label="Analyst Recommendations",
83
+ type="boolean",
84
+ required=False,
85
+ default=False,
86
+ description="Enable getting analyst recommendations",
87
+ ),
88
+ ConfigField(
89
+ name="company_news",
90
+ label="Company News",
91
+ type="boolean",
92
+ required=False,
93
+ default=False,
94
+ description="Enable getting company news and press releases",
95
+ ),
96
+ ConfigField(
97
+ name="technical_indicators",
98
+ label="Technical Indicators",
99
+ type="boolean",
100
+ required=False,
101
+ default=False,
102
+ description="Enable getting technical indicators",
103
+ ),
104
+ # Enable all features
105
+ ConfigField(
106
+ name="enable_all",
107
+ label="Enable All",
108
+ type="boolean",
109
+ required=False,
110
+ default=False,
111
+ description="Enable all available Yahoo Finance tools",
112
+ ),
113
+ ],
114
+ dependencies=["yfinance"],
115
+ docs_url="https://docs.agno.com/tools/toolkits/others/yfinance",
116
+ )
117
+ def yfinance_tools() -> type[YFinanceTools]:
118
+ """Return Yahoo Finance tools for financial data."""
119
+ from agno.tools.yfinance import YFinanceTools
120
+
121
+ return YFinanceTools
@@ -0,0 +1,81 @@
1
+ """YouTube 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.youtube import YouTubeTools
17
+
18
+
19
+ @register_tool_with_metadata(
20
+ name="youtube",
21
+ display_name="YouTube",
22
+ description="Extract video data, captions, and timestamps from YouTube videos",
23
+ category=ToolCategory.ENTERTAINMENT,
24
+ status=ToolStatus.AVAILABLE,
25
+ setup_type=SetupType.NONE,
26
+ icon="FaYoutube",
27
+ icon_color="text-red-600",
28
+ config_fields=[
29
+ # Feature toggles - main functionality
30
+ ConfigField(
31
+ name="get_video_captions",
32
+ label="Get Video Captions",
33
+ type="boolean",
34
+ required=False,
35
+ default=True,
36
+ description="Enable extracting captions/transcripts from YouTube videos",
37
+ ),
38
+ ConfigField(
39
+ name="get_video_data",
40
+ label="Get Video Data",
41
+ type="boolean",
42
+ required=False,
43
+ default=True,
44
+ description="Enable extracting video metadata (title, author, thumbnail, etc.)",
45
+ ),
46
+ ConfigField(
47
+ name="get_video_timestamps",
48
+ label="Get Video Timestamps",
49
+ type="boolean",
50
+ required=False,
51
+ default=True,
52
+ description="Enable generating timestamped transcripts from video captions",
53
+ ),
54
+ # Configuration options
55
+ ConfigField(
56
+ name="languages",
57
+ label="Languages",
58
+ type="text",
59
+ required=False,
60
+ default=None,
61
+ placeholder="en,es,fr",
62
+ description="Comma-separated list of preferred language codes for captions (e.g., 'en,es,fr'). If not specified, defaults to English.",
63
+ ),
64
+ ConfigField(
65
+ name="proxies",
66
+ label="Proxies",
67
+ type="text",
68
+ required=False,
69
+ default=None,
70
+ placeholder='{"http": "http://proxy:8080"}',
71
+ description="JSON string of proxy configuration for network requests (e.g., for bypassing geo-restrictions)",
72
+ ),
73
+ ],
74
+ dependencies=["youtube_transcript_api"],
75
+ docs_url="https://docs.agno.com/tools/toolkits/entertainment/youtube",
76
+ )
77
+ def youtube_tools() -> type[YouTubeTools]:
78
+ """Return YouTube tools for video data extraction."""
79
+ from agno.tools.youtube import YouTubeTools
80
+
81
+ return YouTubeTools
@@ -0,0 +1,62 @@
1
+ """Zendesk 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.zendesk import ZendeskTools
17
+
18
+
19
+ @register_tool_with_metadata(
20
+ name="zendesk",
21
+ display_name="Zendesk",
22
+ description="Customer support platform for searching help center articles",
23
+ category=ToolCategory.DEVELOPMENT, # From others/ category
24
+ status=ToolStatus.REQUIRES_CONFIG, # Requires username, password, company_name
25
+ setup_type=SetupType.API_KEY, # Uses username/password authentication
26
+ icon="HelpCircle", # React icon for help/support
27
+ icon_color="text-green-600", # Zendesk brand green
28
+ config_fields=[
29
+ # Authentication parameters
30
+ ConfigField(
31
+ name="username",
32
+ label="Username",
33
+ type="text",
34
+ required=False,
35
+ placeholder="john.doe@company.com",
36
+ description="The username used for authentication or identification purposes (can also be set via ZENDESK_USERNAME env var)",
37
+ ),
38
+ ConfigField(
39
+ name="password",
40
+ label="Password",
41
+ type="password",
42
+ required=False,
43
+ placeholder="•••••••••",
44
+ description="The password associated with the username for authentication purposes (can also be set via ZENDESK_PW env var)",
45
+ ),
46
+ ConfigField(
47
+ name="company_name",
48
+ label="Company Name",
49
+ type="text",
50
+ required=False,
51
+ placeholder="mycompany",
52
+ description="The name of the company related to the user or the data being accessed (can also be set via ZENDESK_COMPANY_NAME env var)",
53
+ ),
54
+ ],
55
+ dependencies=["requests"],
56
+ docs_url="https://docs.agno.com/tools/toolkits/others/zendesk",
57
+ )
58
+ def zendesk_tools() -> type[ZendeskTools]:
59
+ """Return Zendesk tools for searching help center articles."""
60
+ from agno.tools.zendesk import ZendeskTools
61
+
62
+ return ZendeskTools
mindroom/tools/zep.py ADDED
@@ -0,0 +1,107 @@
1
+ """Zep memory system 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.zep import ZepTools
11
+
12
+
13
+ @register_tool_with_metadata(
14
+ name="zep",
15
+ display_name="Zep Memory",
16
+ description="Memory system for storing, retrieving, and searching conversational data",
17
+ category=ToolCategory.PRODUCTIVITY,
18
+ status=ToolStatus.REQUIRES_CONFIG,
19
+ setup_type=SetupType.API_KEY,
20
+ icon="Brain",
21
+ icon_color="text-purple-600",
22
+ config_fields=[
23
+ # Authentication
24
+ ConfigField(
25
+ name="api_key",
26
+ label="API Key",
27
+ type="password",
28
+ required=False,
29
+ placeholder="your_zep_api_key",
30
+ description="Zep API key for authentication (can also be set via ZEP_API_KEY env var)",
31
+ ),
32
+ # Session and user configuration
33
+ ConfigField(
34
+ name="session_id",
35
+ label="Session ID",
36
+ type="text",
37
+ required=False,
38
+ placeholder="agno-session",
39
+ description="Optional session ID. Auto-generated if not provided",
40
+ ),
41
+ ConfigField(
42
+ name="user_id",
43
+ label="User ID",
44
+ type="text",
45
+ required=False,
46
+ placeholder="user-123",
47
+ description="Optional user ID. Auto-generated if not provided",
48
+ ),
49
+ ConfigField(
50
+ name="instructions",
51
+ label="Custom Instructions",
52
+ type="text",
53
+ required=False,
54
+ placeholder="Custom instructions for using the Zep tools",
55
+ description="Custom instructions for using the Zep tools",
56
+ ),
57
+ # Feature toggles
58
+ ConfigField(
59
+ name="ignore_assistant_messages",
60
+ label="Ignore Assistant Messages",
61
+ type="boolean",
62
+ required=False,
63
+ default=False,
64
+ description="Whether to ignore assistant messages when adding to memory",
65
+ ),
66
+ ConfigField(
67
+ name="add_instructions",
68
+ label="Add Instructions",
69
+ type="boolean",
70
+ required=False,
71
+ default=False,
72
+ description="Whether to add default instructions",
73
+ ),
74
+ # Memory operations
75
+ ConfigField(
76
+ name="add_zep_message",
77
+ label="Add Zep Message",
78
+ type="boolean",
79
+ required=False,
80
+ default=True,
81
+ description="Enable adding messages to the current Zep session memory",
82
+ ),
83
+ ConfigField(
84
+ name="get_zep_memory",
85
+ label="Get Zep Memory",
86
+ type="boolean",
87
+ required=False,
88
+ default=True,
89
+ description="Enable retrieving memory for the current Zep session",
90
+ ),
91
+ ConfigField(
92
+ name="search_zep_memory",
93
+ label="Search Zep Memory",
94
+ type="boolean",
95
+ required=False,
96
+ default=True,
97
+ description="Enable searching the Zep memory store for relevant information",
98
+ ),
99
+ ],
100
+ dependencies=["zep-cloud"],
101
+ docs_url="https://docs.agno.com/tools/toolkits/database/zep",
102
+ )
103
+ def zep_tools() -> type[ZepTools]:
104
+ """Return Zep memory tools for storing and retrieving conversational data."""
105
+ from agno.tools.zep import ZepTools
106
+
107
+ return ZepTools
mindroom/tools/zoom.py ADDED
@@ -0,0 +1,62 @@
1
+ """Zoom 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.zoom import ZoomTools
17
+
18
+
19
+ @register_tool_with_metadata(
20
+ name="zoom",
21
+ display_name="Zoom",
22
+ description="Video conferencing platform for scheduling and managing meetings",
23
+ category=ToolCategory.SOCIAL,
24
+ status=ToolStatus.REQUIRES_CONFIG,
25
+ setup_type=SetupType.OAUTH,
26
+ icon="FaVideo",
27
+ icon_color="text-blue-500", # Zoom blue
28
+ config_fields=[
29
+ # Authentication parameters
30
+ ConfigField(
31
+ name="account_id",
32
+ label="Account ID",
33
+ type="text",
34
+ required=False,
35
+ placeholder="your_account_id",
36
+ description="Zoom account ID from Server-to-Server OAuth app (can also be set via ZOOM_ACCOUNT_ID env var)",
37
+ ),
38
+ ConfigField(
39
+ name="client_id",
40
+ label="Client ID",
41
+ type="text",
42
+ required=False,
43
+ placeholder="your_client_id",
44
+ description="Client ID from Server-to-Server OAuth app (can also be set via ZOOM_CLIENT_ID env var)",
45
+ ),
46
+ ConfigField(
47
+ name="client_secret",
48
+ label="Client Secret",
49
+ type="password",
50
+ required=False,
51
+ placeholder="your_client_secret",
52
+ description="Client secret from Server-to-Server OAuth app (can also be set via ZOOM_CLIENT_SECRET env var)",
53
+ ),
54
+ ],
55
+ dependencies=["requests"],
56
+ docs_url="https://docs.agno.com/tools/toolkits/social/zoom",
57
+ )
58
+ def zoom_tools() -> type[ZoomTools]:
59
+ """Return Zoom tools for video conferencing and meeting management."""
60
+ from agno.tools.zoom import ZoomTools
61
+
62
+ return ZoomTools