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,103 @@
1
+ """Todoist 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.todoist import TodoistTools
17
+
18
+
19
+ @register_tool_with_metadata(
20
+ name="todoist",
21
+ display_name="Todoist",
22
+ description="Task management with Todoist - create, update, delete, and organize tasks and projects",
23
+ category=ToolCategory.PRODUCTIVITY,
24
+ status=ToolStatus.REQUIRES_CONFIG,
25
+ setup_type=SetupType.API_KEY,
26
+ icon="FaTasks",
27
+ icon_color="text-red-500",
28
+ config_fields=[
29
+ # Authentication
30
+ ConfigField(
31
+ name="api_token",
32
+ label="API Token",
33
+ type="password",
34
+ required=False,
35
+ placeholder="your_api_token",
36
+ description="Todoist API token (can also be set via TODOIST_API_TOKEN env var). Get from https://app.todoist.com/app/settings/integrations/developer",
37
+ ),
38
+ # Task operations
39
+ ConfigField(
40
+ name="create_task",
41
+ label="Create Task",
42
+ type="boolean",
43
+ required=False,
44
+ default=True,
45
+ description="Enable creating new tasks in Todoist",
46
+ ),
47
+ ConfigField(
48
+ name="get_task",
49
+ label="Get Task",
50
+ type="boolean",
51
+ required=False,
52
+ default=True,
53
+ description="Enable fetching specific tasks by ID",
54
+ ),
55
+ ConfigField(
56
+ name="update_task",
57
+ label="Update Task",
58
+ type="boolean",
59
+ required=False,
60
+ default=True,
61
+ description="Enable updating existing tasks with new properties",
62
+ ),
63
+ ConfigField(
64
+ name="close_task",
65
+ label="Close Task",
66
+ type="boolean",
67
+ required=False,
68
+ default=True,
69
+ description="Enable marking tasks as completed",
70
+ ),
71
+ ConfigField(
72
+ name="delete_task",
73
+ label="Delete Task",
74
+ type="boolean",
75
+ required=False,
76
+ default=True,
77
+ description="Enable deleting tasks from Todoist",
78
+ ),
79
+ ConfigField(
80
+ name="get_active_tasks",
81
+ label="Get Active Tasks",
82
+ type="boolean",
83
+ required=False,
84
+ default=True,
85
+ description="Enable retrieving all active (non-completed) tasks",
86
+ ),
87
+ ConfigField(
88
+ name="get_projects",
89
+ label="Get Projects",
90
+ type="boolean",
91
+ required=False,
92
+ default=True,
93
+ description="Enable retrieving all projects in Todoist",
94
+ ),
95
+ ],
96
+ dependencies=["todoist-api-python"],
97
+ docs_url="https://docs.agno.com/tools/toolkits/others/todoist",
98
+ )
99
+ def todoist_tools() -> type[TodoistTools]:
100
+ """Return Todoist tools for task management."""
101
+ from agno.tools.todoist import TodoistTools
102
+
103
+ return TodoistTools
@@ -0,0 +1,121 @@
1
+ """Trello 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.trello import TrelloTools
17
+
18
+
19
+ @register_tool_with_metadata(
20
+ name="trello",
21
+ display_name="Trello",
22
+ description="Project board management with Trello API integration",
23
+ category=ToolCategory.DEVELOPMENT,
24
+ status=ToolStatus.REQUIRES_CONFIG,
25
+ setup_type=SetupType.API_KEY,
26
+ icon="SiTrello",
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_trello_api_key",
36
+ description="Trello API key (can also be set via TRELLO_API_KEY env var)",
37
+ ),
38
+ ConfigField(
39
+ name="api_secret",
40
+ label="API Secret",
41
+ type="password",
42
+ required=False,
43
+ placeholder="your_trello_api_secret",
44
+ description="Trello API secret (can also be set via TRELLO_API_SECRET env var)",
45
+ ),
46
+ ConfigField(
47
+ name="token",
48
+ label="Token",
49
+ type="password",
50
+ required=False,
51
+ placeholder="your_trello_token",
52
+ description="Trello token (can also be set via TRELLO_TOKEN env var)",
53
+ ),
54
+ # Card operations
55
+ ConfigField(
56
+ name="create_card",
57
+ label="Create Card",
58
+ type="boolean",
59
+ required=False,
60
+ default=True,
61
+ description="Enable creating new cards in boards and lists",
62
+ ),
63
+ ConfigField(
64
+ name="move_card",
65
+ label="Move Card",
66
+ type="boolean",
67
+ required=False,
68
+ default=True,
69
+ description="Enable moving cards between lists",
70
+ ),
71
+ ConfigField(
72
+ name="get_cards",
73
+ label="Get Cards",
74
+ type="boolean",
75
+ required=False,
76
+ default=True,
77
+ description="Enable retrieving all cards from a list",
78
+ ),
79
+ # Board operations
80
+ ConfigField(
81
+ name="create_board",
82
+ label="Create Board",
83
+ type="boolean",
84
+ required=False,
85
+ default=True,
86
+ description="Enable creating new Trello boards",
87
+ ),
88
+ ConfigField(
89
+ name="list_boards",
90
+ label="List Boards",
91
+ type="boolean",
92
+ required=False,
93
+ default=True,
94
+ description="Enable listing all accessible Trello boards",
95
+ ),
96
+ ConfigField(
97
+ name="get_board_lists",
98
+ label="Get Board Lists",
99
+ type="boolean",
100
+ required=False,
101
+ default=True,
102
+ description="Enable retrieving all lists on a board",
103
+ ),
104
+ # List operations
105
+ ConfigField(
106
+ name="create_list",
107
+ label="Create List",
108
+ type="boolean",
109
+ required=False,
110
+ default=True,
111
+ description="Enable creating new lists on boards",
112
+ ),
113
+ ],
114
+ dependencies=["py-trello"],
115
+ docs_url="https://docs.agno.com/tools/toolkits/others/trello",
116
+ )
117
+ def trello_tools() -> type[TrelloTools]:
118
+ """Return Trello tools for project board management."""
119
+ from agno.tools.trello import TrelloTools
120
+
121
+ return TrelloTools
@@ -0,0 +1,97 @@
1
+ """Twilio 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.twilio import TwilioTools
17
+
18
+
19
+ @register_tool_with_metadata(
20
+ name="twilio",
21
+ display_name="Twilio",
22
+ description="SMS messaging and voice communication platform",
23
+ category=ToolCategory.COMMUNICATION,
24
+ status=ToolStatus.REQUIRES_CONFIG,
25
+ setup_type=SetupType.API_KEY,
26
+ icon="FaPhone",
27
+ icon_color="text-red-600", # Twilio red
28
+ config_fields=[
29
+ # Authentication - Account credentials
30
+ ConfigField(
31
+ name="account_sid",
32
+ label="Account SID",
33
+ type="text",
34
+ required=False,
35
+ placeholder="ACxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
36
+ description="Twilio Account SID (can also be set via TWILIO_ACCOUNT_SID env var)",
37
+ ),
38
+ ConfigField(
39
+ name="auth_token",
40
+ label="Auth Token",
41
+ type="password",
42
+ required=False,
43
+ placeholder="your_auth_token_here",
44
+ description="Twilio Auth Token for basic authentication (can also be set via TWILIO_AUTH_TOKEN env var)",
45
+ ),
46
+ # Alternative API Key authentication
47
+ ConfigField(
48
+ name="api_key",
49
+ label="API Key",
50
+ type="password",
51
+ required=False,
52
+ placeholder="SKxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
53
+ description="Twilio API Key for key-based authentication (can also be set via TWILIO_API_KEY env var)",
54
+ ),
55
+ ConfigField(
56
+ name="api_secret",
57
+ label="API Secret",
58
+ type="password",
59
+ required=False,
60
+ placeholder="your_api_secret_here",
61
+ description="Twilio API Secret for key-based authentication (can also be set via TWILIO_API_SECRET env var)",
62
+ ),
63
+ # Connection configuration
64
+ ConfigField(
65
+ name="region",
66
+ label="Region",
67
+ type="text",
68
+ required=False,
69
+ placeholder="au1",
70
+ description="Optional Twilio region (e.g. 'au1' for Australia) (can also be set via TWILIO_REGION env var)",
71
+ ),
72
+ ConfigField(
73
+ name="edge",
74
+ label="Edge Location",
75
+ type="text",
76
+ required=False,
77
+ placeholder="sydney",
78
+ description="Optional Twilio edge location (e.g. 'sydney') (can also be set via TWILIO_EDGE env var)",
79
+ ),
80
+ # Feature configuration
81
+ ConfigField(
82
+ name="debug",
83
+ label="Debug Mode",
84
+ type="boolean",
85
+ required=False,
86
+ default=False,
87
+ description="Enable debug logging for Twilio HTTP client",
88
+ ),
89
+ ],
90
+ dependencies=["twilio"],
91
+ docs_url="https://docs.agno.com/tools/toolkits/social/twilio",
92
+ )
93
+ def twilio_tools() -> type[TwilioTools]:
94
+ """Return Twilio tools for SMS messaging and voice communication."""
95
+ from agno.tools.twilio import TwilioTools
96
+
97
+ return TwilioTools
@@ -0,0 +1,37 @@
1
+ """Web Browser Tools configuration."""
2
+
3
+ from __future__ import annotations
4
+
5
+ from typing import TYPE_CHECKING
6
+
7
+ from mindroom.tools_metadata import (
8
+ SetupType,
9
+ ToolCategory,
10
+ ToolStatus,
11
+ register_tool_with_metadata,
12
+ )
13
+
14
+ if TYPE_CHECKING:
15
+ from agno.tools.webbrowser import WebBrowserTools
16
+
17
+
18
+ @register_tool_with_metadata(
19
+ name="web_browser_tools",
20
+ display_name="Web Browser Tools",
21
+ description="Open URLs in web browser tabs or windows",
22
+ category=ToolCategory.DEVELOPMENT, # From docs URL: /tools/toolkits/others/
23
+ status=ToolStatus.AVAILABLE, # No configuration required
24
+ setup_type=SetupType.NONE, # No authentication needed
25
+ icon="FaGlobe",
26
+ icon_color="text-blue-600", # Web browser blue
27
+ config_fields=[
28
+ # No configuration parameters - WebBrowserTools.__init__() takes no arguments
29
+ ],
30
+ dependencies=[], # Uses standard library webbrowser module
31
+ docs_url="https://docs.agno.com/tools/toolkits/others/web-browser",
32
+ )
33
+ def web_browser_tools() -> type[WebBrowserTools]:
34
+ """Return Web Browser Tools for opening URLs."""
35
+ from agno.tools.webbrowser import WebBrowserTools
36
+
37
+ return WebBrowserTools
@@ -0,0 +1,63 @@
1
+ """Webex 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.webex import WebexTools
17
+
18
+
19
+ @register_tool_with_metadata(
20
+ name="webex",
21
+ display_name="Webex",
22
+ description="Video conferencing and messaging platform for teams",
23
+ category=ToolCategory.COMMUNICATION,
24
+ status=ToolStatus.REQUIRES_CONFIG,
25
+ setup_type=SetupType.API_KEY,
26
+ icon="FaVideo",
27
+ icon_color="text-blue-600",
28
+ config_fields=[
29
+ # Authentication
30
+ ConfigField(
31
+ name="access_token",
32
+ label="Access Token",
33
+ type="password",
34
+ required=False,
35
+ placeholder="Bearer token from Webex Developer Portal",
36
+ description="Webex access token for authentication (can also be set via WEBEX_ACCESS_TOKEN env var)",
37
+ ),
38
+ # Feature flags
39
+ ConfigField(
40
+ name="send_message",
41
+ label="Send Message",
42
+ type="boolean",
43
+ required=False,
44
+ default=True,
45
+ description="Enable sending messages to Webex spaces/rooms",
46
+ ),
47
+ ConfigField(
48
+ name="list_rooms",
49
+ label="List Rooms",
50
+ type="boolean",
51
+ required=False,
52
+ default=True,
53
+ description="Enable listing Webex spaces/rooms",
54
+ ),
55
+ ],
56
+ dependencies=["webexpythonsdk"],
57
+ docs_url="https://docs.agno.com/tools/toolkits/social/webex",
58
+ )
59
+ def webex_tools() -> type[WebexTools]:
60
+ """Return Webex tools for video conferencing and messaging."""
61
+ from agno.tools.webex import WebexTools
62
+
63
+ return WebexTools
@@ -0,0 +1,45 @@
1
+ """Website tools 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.website import WebsiteTools
17
+
18
+
19
+ @register_tool_with_metadata(
20
+ name="website",
21
+ display_name="Website Tools",
22
+ description="Web scraping and content extraction from websites",
23
+ category=ToolCategory.RESEARCH,
24
+ status=ToolStatus.AVAILABLE,
25
+ setup_type=SetupType.NONE,
26
+ icon="FaGlobe",
27
+ icon_color="text-blue-600",
28
+ config_fields=[
29
+ ConfigField(
30
+ name="knowledge_base",
31
+ label="Knowledge Base",
32
+ type="text",
33
+ required=False,
34
+ default=None,
35
+ description="Advanced: Optional knowledge base instance for storing website content (WebsiteKnowledgeBase or CombinedKnowledgeBase)",
36
+ ),
37
+ ],
38
+ dependencies=["httpx", "beautifulsoup4"],
39
+ docs_url="https://docs.agno.com/tools/toolkits/web_scrape/website",
40
+ )
41
+ def website_tools() -> type[WebsiteTools]:
42
+ """Return website tools for web scraping and content extraction."""
43
+ from agno.tools.website import WebsiteTools
44
+
45
+ return WebsiteTools
@@ -0,0 +1,81 @@
1
+ """WhatsApp 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.whatsapp import WhatsAppTools
17
+
18
+
19
+ @register_tool_with_metadata(
20
+ name="whatsapp",
21
+ display_name="WhatsApp Business",
22
+ description="Send text and template messages via WhatsApp Business API",
23
+ category=ToolCategory.COMMUNICATION,
24
+ status=ToolStatus.REQUIRES_CONFIG,
25
+ setup_type=SetupType.API_KEY,
26
+ icon="FaWhatsapp",
27
+ icon_color="text-green-500",
28
+ config_fields=[
29
+ # Authentication/Connection parameters first
30
+ ConfigField(
31
+ name="access_token",
32
+ label="Access Token",
33
+ type="password",
34
+ required=False,
35
+ placeholder="EAAxxxxxxx...",
36
+ description="WhatsApp Business API access token (can also be set via WHATSAPP_ACCESS_TOKEN env var)",
37
+ ),
38
+ ConfigField(
39
+ name="phone_number_id",
40
+ label="Phone Number ID",
41
+ type="text",
42
+ required=False,
43
+ placeholder="1234567890123456",
44
+ description="WhatsApp Business Account phone number ID (can also be set via WHATSAPP_PHONE_NUMBER_ID env var)",
45
+ ),
46
+ ConfigField(
47
+ name="version",
48
+ label="API Version",
49
+ type="text",
50
+ required=False,
51
+ default="v22.0",
52
+ placeholder="v22.0",
53
+ description="WhatsApp API version to use",
54
+ ),
55
+ ConfigField(
56
+ name="recipient_waid",
57
+ label="Default Recipient WhatsApp ID",
58
+ type="text",
59
+ required=False,
60
+ default=None,
61
+ placeholder="+1234567890",
62
+ description="Default recipient WhatsApp ID or phone number (optional, can also be set via WHATSAPP_RECIPIENT_WAID env var)",
63
+ ),
64
+ # Feature flags/boolean parameters
65
+ ConfigField(
66
+ name="async_mode",
67
+ label="Async Mode",
68
+ type="boolean",
69
+ required=False,
70
+ default=False,
71
+ description="Enable asynchronous message sending",
72
+ ),
73
+ ],
74
+ dependencies=["httpx"],
75
+ docs_url="https://docs.agno.com/tools/toolkits/social/whatsapp",
76
+ )
77
+ def whatsapp_tools() -> type[WhatsAppTools]:
78
+ """Return WhatsApp Business API tools for messaging."""
79
+ from agno.tools.whatsapp import WhatsAppTools
80
+
81
+ return WhatsAppTools
@@ -0,0 +1,45 @@
1
+ """Wikipedia 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.wikipedia import WikipediaTools
17
+
18
+
19
+ @register_tool_with_metadata(
20
+ name="wikipedia",
21
+ display_name="Wikipedia",
22
+ description="Search and retrieve information from Wikipedia",
23
+ category=ToolCategory.RESEARCH,
24
+ status=ToolStatus.AVAILABLE,
25
+ setup_type=SetupType.NONE,
26
+ icon="FaWikipediaW",
27
+ icon_color="text-gray-700",
28
+ config_fields=[
29
+ ConfigField(
30
+ name="knowledge_base",
31
+ label="Knowledge Base",
32
+ type="text",
33
+ required=False,
34
+ default=None,
35
+ description="Optional WikipediaKnowledgeBase instance for advanced usage (typically left empty)",
36
+ ),
37
+ ],
38
+ dependencies=["wikipedia"],
39
+ docs_url="https://docs.agno.com/tools/toolkits/search/wikipedia",
40
+ )
41
+ def wikipedia_tools() -> type[WikipediaTools]:
42
+ """Return Wikipedia tools for searching and retrieving information."""
43
+ from agno.tools.wikipedia import WikipediaTools
44
+
45
+ return WikipediaTools
mindroom/tools/x.py ADDED
@@ -0,0 +1,97 @@
1
+ """X (Twitter) 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.x import XTools
17
+
18
+
19
+ @register_tool_with_metadata(
20
+ name="x",
21
+ display_name="X (Twitter)",
22
+ description="Post tweets, send DMs, and search Twitter/X content",
23
+ category=ToolCategory.SOCIAL,
24
+ status=ToolStatus.REQUIRES_CONFIG,
25
+ setup_type=SetupType.API_KEY,
26
+ icon="FaTwitter",
27
+ icon_color="text-blue-400",
28
+ config_fields=[
29
+ # Authentication/Connection parameters first
30
+ ConfigField(
31
+ name="bearer_token",
32
+ label="Bearer Token",
33
+ type="password",
34
+ required=False,
35
+ placeholder="AAA...",
36
+ description="Twitter API Bearer token (can also be set via X_BEARER_TOKEN env var)",
37
+ ),
38
+ ConfigField(
39
+ name="consumer_key",
40
+ label="Consumer Key",
41
+ type="password",
42
+ required=False,
43
+ placeholder="consumer_key...",
44
+ description="Twitter API consumer key (can also be set via X_CONSUMER_KEY env var)",
45
+ ),
46
+ ConfigField(
47
+ name="consumer_secret",
48
+ label="Consumer Secret",
49
+ type="password",
50
+ required=False,
51
+ placeholder="consumer_secret...",
52
+ description="Twitter API consumer secret (can also be set via X_CONSUMER_SECRET env var)",
53
+ ),
54
+ ConfigField(
55
+ name="access_token",
56
+ label="Access Token",
57
+ type="password",
58
+ required=False,
59
+ placeholder="access_token...",
60
+ description="Twitter API access token (can also be set via X_ACCESS_TOKEN env var)",
61
+ ),
62
+ ConfigField(
63
+ name="access_token_secret",
64
+ label="Access Token Secret",
65
+ type="password",
66
+ required=False,
67
+ placeholder="access_token_secret...",
68
+ description="Twitter API access token secret (can also be set via X_ACCESS_TOKEN_SECRET env var)",
69
+ ),
70
+ # Feature flags/boolean parameters grouped by functionality
71
+ # Search and content features
72
+ ConfigField(
73
+ name="include_post_metrics",
74
+ label="Include Post Metrics",
75
+ type="boolean",
76
+ required=False,
77
+ default=False,
78
+ description="Enable including post metrics (likes, retweets, etc.) in search results",
79
+ ),
80
+ # API behavior settings
81
+ ConfigField(
82
+ name="wait_on_rate_limit",
83
+ label="Wait on Rate Limit",
84
+ type="boolean",
85
+ required=False,
86
+ default=False,
87
+ description="Enable waiting when rate limit is reached instead of failing",
88
+ ),
89
+ ],
90
+ dependencies=["tweepy"],
91
+ docs_url="https://docs.agno.com/tools/toolkits/social/x",
92
+ )
93
+ def x_tools() -> type[XTools]:
94
+ """Return X (Twitter) tools for posting tweets and social media interaction."""
95
+ from agno.tools.x import XTools
96
+
97
+ return XTools