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
|
@@ -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
|
mindroom/tools/trello.py
ADDED
|
@@ -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
|
mindroom/tools/twilio.py
ADDED
|
@@ -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
|
mindroom/tools/webex.py
ADDED
|
@@ -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
|