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.
- 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.1.dist-info/METADATA +425 -0
- mindroom-0.1.1.dist-info/RECORD +152 -0
- {mindroom-0.0.0.dist-info → mindroom-0.1.1.dist-info}/WHEEL +1 -2
- mindroom-0.1.1.dist-info/entry_points.txt +2 -0
- mindroom-0.0.0.dist-info/METADATA +0 -24
- mindroom-0.0.0.dist-info/RECORD +0 -4
- mindroom-0.0.0.dist-info/top_level.txt +0 -1
mindroom/tools/arxiv.py
ADDED
|
@@ -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
|