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,71 @@
|
|
|
1
|
+
"""Luma Labs 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.lumalab import LumaLabTools
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
@register_tool_with_metadata(
|
|
20
|
+
name="lumalabs",
|
|
21
|
+
display_name="Luma Labs",
|
|
22
|
+
description="3D content creation and video generation using Luma AI Dream Machine",
|
|
23
|
+
category=ToolCategory.DEVELOPMENT, # others/ category maps to DEVELOPMENT
|
|
24
|
+
status=ToolStatus.REQUIRES_CONFIG, # Requires LUMAAI_API_KEY
|
|
25
|
+
setup_type=SetupType.API_KEY, # API key authentication
|
|
26
|
+
icon="FaVideo", # Video-related icon
|
|
27
|
+
icon_color="text-purple-600", # Purple color for AI/ML tools
|
|
28
|
+
config_fields=[
|
|
29
|
+
# Authentication
|
|
30
|
+
ConfigField(
|
|
31
|
+
name="api_key",
|
|
32
|
+
label="API Key",
|
|
33
|
+
type="password",
|
|
34
|
+
required=False,
|
|
35
|
+
placeholder="luma_api_...",
|
|
36
|
+
description="Luma AI API key for authentication (can also be set via LUMAAI_API_KEY env var)",
|
|
37
|
+
),
|
|
38
|
+
# Generation settings
|
|
39
|
+
ConfigField(
|
|
40
|
+
name="wait_for_completion",
|
|
41
|
+
label="Wait for Completion",
|
|
42
|
+
type="boolean",
|
|
43
|
+
required=False,
|
|
44
|
+
default=True,
|
|
45
|
+
description="Wait for video generation to complete before returning results",
|
|
46
|
+
),
|
|
47
|
+
ConfigField(
|
|
48
|
+
name="poll_interval",
|
|
49
|
+
label="Poll Interval",
|
|
50
|
+
type="number",
|
|
51
|
+
required=False,
|
|
52
|
+
default=3,
|
|
53
|
+
description="Interval in seconds between status checks during video generation",
|
|
54
|
+
),
|
|
55
|
+
ConfigField(
|
|
56
|
+
name="max_wait_time",
|
|
57
|
+
label="Max Wait Time",
|
|
58
|
+
type="number",
|
|
59
|
+
required=False,
|
|
60
|
+
default=300,
|
|
61
|
+
description="Maximum time in seconds to wait for video generation completion",
|
|
62
|
+
),
|
|
63
|
+
],
|
|
64
|
+
dependencies=["lumaai"],
|
|
65
|
+
docs_url="https://docs.agno.com/tools/toolkits/others/lumalabs",
|
|
66
|
+
)
|
|
67
|
+
def lumalabs_tools() -> type[LumaLabTools]:
|
|
68
|
+
"""Return Luma Labs tools for 3D content creation and video generation."""
|
|
69
|
+
from agno.tools.lumalab import LumaLabTools
|
|
70
|
+
|
|
71
|
+
return LumaLabTools
|
mindroom/tools/mem0.py
ADDED
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
"""Mem0 Memory 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.mem0 import Mem0Tools
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
@register_tool_with_metadata(
|
|
14
|
+
name="mem0",
|
|
15
|
+
display_name="Mem0 Memory",
|
|
16
|
+
description="Persistent memory system that stores, retrieves, searches, and manages user memories and context",
|
|
17
|
+
category=ToolCategory.PRODUCTIVITY, # Database tools → Productivity
|
|
18
|
+
status=ToolStatus.REQUIRES_CONFIG, # Requires API key for cloud usage
|
|
19
|
+
setup_type=SetupType.API_KEY, # Optional API key for cloud usage
|
|
20
|
+
icon="Brain",
|
|
21
|
+
icon_color="text-purple-600", # Memory/brain theme
|
|
22
|
+
config_fields=[
|
|
23
|
+
# Authentication/Connection parameters first
|
|
24
|
+
ConfigField(
|
|
25
|
+
name="api_key",
|
|
26
|
+
label="API Key",
|
|
27
|
+
type="password",
|
|
28
|
+
required=False,
|
|
29
|
+
placeholder="mem0_...",
|
|
30
|
+
description="Mem0 API key for cloud usage (can also be set via MEM0_API_KEY env var)",
|
|
31
|
+
),
|
|
32
|
+
ConfigField(
|
|
33
|
+
name="org_id",
|
|
34
|
+
label="Organization ID",
|
|
35
|
+
type="text",
|
|
36
|
+
required=False,
|
|
37
|
+
placeholder="org_123...",
|
|
38
|
+
description="Organization ID for Mem0 cloud (can also be set via MEM0_ORG_ID env var)",
|
|
39
|
+
),
|
|
40
|
+
ConfigField(
|
|
41
|
+
name="project_id",
|
|
42
|
+
label="Project ID",
|
|
43
|
+
type="text",
|
|
44
|
+
required=False,
|
|
45
|
+
placeholder="proj_456...",
|
|
46
|
+
description="Project ID for Mem0 cloud (can also be set via MEM0_PROJECT_ID env var)",
|
|
47
|
+
),
|
|
48
|
+
# Configuration parameters
|
|
49
|
+
ConfigField(
|
|
50
|
+
name="config",
|
|
51
|
+
label="Local Configuration",
|
|
52
|
+
type="text",
|
|
53
|
+
required=False,
|
|
54
|
+
placeholder='{"vector_store": {"provider": "chroma"}}',
|
|
55
|
+
description="JSON configuration for self-hosted Mem0 instance (overrides cloud API)",
|
|
56
|
+
),
|
|
57
|
+
ConfigField(
|
|
58
|
+
name="user_id",
|
|
59
|
+
label="Default User ID",
|
|
60
|
+
type="text",
|
|
61
|
+
required=False,
|
|
62
|
+
placeholder="user_123",
|
|
63
|
+
description="Default user ID for memory operations (can be overridden per operation)",
|
|
64
|
+
),
|
|
65
|
+
# Feature parameters
|
|
66
|
+
ConfigField(
|
|
67
|
+
name="infer",
|
|
68
|
+
label="Enable Memory Inference",
|
|
69
|
+
type="boolean",
|
|
70
|
+
required=False,
|
|
71
|
+
default=True,
|
|
72
|
+
description="Enable automatic memory inference and extraction from conversations",
|
|
73
|
+
),
|
|
74
|
+
],
|
|
75
|
+
dependencies=["mem0ai"], # Already in pyproject.toml
|
|
76
|
+
docs_url="https://docs.agno.com/tools/toolkits/database/mem0",
|
|
77
|
+
)
|
|
78
|
+
def mem0_tools() -> type[Mem0Tools]:
|
|
79
|
+
"""Return Mem0 memory tools for persistent memory management."""
|
|
80
|
+
from agno.tools.mem0 import Mem0Tools
|
|
81
|
+
|
|
82
|
+
return Mem0Tools
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
"""ModelsLabs 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.models_labs import ModelsLabTools
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
@register_tool_with_metadata(
|
|
20
|
+
name="modelslabs",
|
|
21
|
+
display_name="ModelsLabs",
|
|
22
|
+
description="AI model marketplace for generating videos, audio, and GIFs from text prompts",
|
|
23
|
+
category=ToolCategory.DEVELOPMENT, # From docs URL: /tools/toolkits/others/
|
|
24
|
+
status=ToolStatus.REQUIRES_CONFIG, # Requires API key
|
|
25
|
+
setup_type=SetupType.API_KEY, # Uses api_key parameter
|
|
26
|
+
icon="Video", # React icon for video generation
|
|
27
|
+
icon_color="text-purple-600", # Purple color for creative/AI tools
|
|
28
|
+
config_fields=[
|
|
29
|
+
# Authentication parameter
|
|
30
|
+
ConfigField(
|
|
31
|
+
name="api_key",
|
|
32
|
+
label="API Key",
|
|
33
|
+
type="password",
|
|
34
|
+
required=False,
|
|
35
|
+
default=None,
|
|
36
|
+
placeholder="your-modelslabs-api-key",
|
|
37
|
+
description="The ModelsLab API key for authentication (can also be set via MODELS_LAB_API_KEY env var)",
|
|
38
|
+
),
|
|
39
|
+
# Media generation parameters
|
|
40
|
+
ConfigField(
|
|
41
|
+
name="file_type",
|
|
42
|
+
label="File Type",
|
|
43
|
+
type="text",
|
|
44
|
+
required=False,
|
|
45
|
+
# The agno default is FileType.MP4, which has value "mp4"
|
|
46
|
+
default="mp4",
|
|
47
|
+
placeholder="mp4",
|
|
48
|
+
description="The type of file to generate (mp4, gif, or mp3)",
|
|
49
|
+
),
|
|
50
|
+
# Timing and completion parameters
|
|
51
|
+
ConfigField(
|
|
52
|
+
name="wait_for_completion",
|
|
53
|
+
label="Wait for Completion",
|
|
54
|
+
type="boolean",
|
|
55
|
+
required=False,
|
|
56
|
+
default=False,
|
|
57
|
+
description="Whether to wait for the media generation to complete before returning",
|
|
58
|
+
),
|
|
59
|
+
ConfigField(
|
|
60
|
+
name="add_to_eta",
|
|
61
|
+
label="Add to ETA",
|
|
62
|
+
type="number",
|
|
63
|
+
required=False,
|
|
64
|
+
default=15,
|
|
65
|
+
placeholder="15",
|
|
66
|
+
description="Time in seconds to add to the ETA to account for the time it takes to fetch the media",
|
|
67
|
+
),
|
|
68
|
+
ConfigField(
|
|
69
|
+
name="max_wait_time",
|
|
70
|
+
label="Max Wait Time",
|
|
71
|
+
type="number",
|
|
72
|
+
required=False,
|
|
73
|
+
default=60,
|
|
74
|
+
placeholder="60",
|
|
75
|
+
description="Maximum time in seconds to wait for the media to be ready",
|
|
76
|
+
),
|
|
77
|
+
],
|
|
78
|
+
dependencies=["requests"], # Already in pyproject.toml
|
|
79
|
+
docs_url="https://docs.agno.com/tools/toolkits/others/models_labs",
|
|
80
|
+
)
|
|
81
|
+
def modelslabs_tools() -> type[ModelsLabTools]:
|
|
82
|
+
"""Return ModelsLabs tool for AI-powered media generation."""
|
|
83
|
+
from agno.tools.models_labs import ModelsLabTools
|
|
84
|
+
|
|
85
|
+
return ModelsLabTools
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
"""MoviePy Video 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.moviepy_video import MoviePyVideoTools
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
@register_tool_with_metadata(
|
|
20
|
+
name="moviepy_video_tools",
|
|
21
|
+
display_name="MoviePy Video Tools",
|
|
22
|
+
description="Process videos, extract audio, generate SRT caption files, and embed rich word-highlighted captions",
|
|
23
|
+
category=ToolCategory.DEVELOPMENT, # Derived from docs URL (/others/)
|
|
24
|
+
status=ToolStatus.AVAILABLE, # No authentication required
|
|
25
|
+
setup_type=SetupType.NONE, # No authentication needed
|
|
26
|
+
icon="FaVideo", # React icon name for video
|
|
27
|
+
icon_color="text-purple-600", # Purple color for video processing
|
|
28
|
+
config_fields=[
|
|
29
|
+
# Video processing features
|
|
30
|
+
ConfigField(
|
|
31
|
+
name="process_video",
|
|
32
|
+
label="Process Video",
|
|
33
|
+
type="boolean",
|
|
34
|
+
required=False,
|
|
35
|
+
default=True,
|
|
36
|
+
description="Enable the extract_audio tool for extracting audio tracks from video files",
|
|
37
|
+
),
|
|
38
|
+
ConfigField(
|
|
39
|
+
name="generate_captions",
|
|
40
|
+
label="Generate Captions",
|
|
41
|
+
type="boolean",
|
|
42
|
+
required=False,
|
|
43
|
+
default=True,
|
|
44
|
+
description="Enable the create_srt tool for saving transcriptions to SRT formatted files",
|
|
45
|
+
),
|
|
46
|
+
ConfigField(
|
|
47
|
+
name="embed_captions",
|
|
48
|
+
label="Embed Captions",
|
|
49
|
+
type="boolean",
|
|
50
|
+
required=False,
|
|
51
|
+
default=True,
|
|
52
|
+
description="Enable the embed_captions tool for creating videos with word-level highlighted captions",
|
|
53
|
+
),
|
|
54
|
+
],
|
|
55
|
+
dependencies=["moviepy"], # From agno requirements
|
|
56
|
+
docs_url="https://docs.agno.com/tools/toolkits/others/moviepy", # URL from llms.txt but WITHOUT .md extension
|
|
57
|
+
)
|
|
58
|
+
def moviepy_video_tools() -> type[MoviePyVideoTools]:
|
|
59
|
+
"""Return MoviePy Video Tools for video processing, audio extraction, and caption generation."""
|
|
60
|
+
from agno.tools.moviepy_video import MoviePyVideoTools
|
|
61
|
+
|
|
62
|
+
return MoviePyVideoTools
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
"""Newspaper4k 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.newspaper4k import Newspaper4kTools
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
@register_tool_with_metadata(
|
|
20
|
+
name="newspaper4k",
|
|
21
|
+
display_name="Newspaper4k",
|
|
22
|
+
description="Read and extract content from news articles using advanced web scraping",
|
|
23
|
+
category=ToolCategory.RESEARCH,
|
|
24
|
+
status=ToolStatus.AVAILABLE,
|
|
25
|
+
setup_type=SetupType.NONE,
|
|
26
|
+
icon="FaNewspaper",
|
|
27
|
+
icon_color="text-blue-600",
|
|
28
|
+
config_fields=[
|
|
29
|
+
# Article reading functionality
|
|
30
|
+
ConfigField(
|
|
31
|
+
name="read_article",
|
|
32
|
+
label="Read Article",
|
|
33
|
+
type="boolean",
|
|
34
|
+
required=False,
|
|
35
|
+
default=True,
|
|
36
|
+
description="Enable the functionality to read the full content of an article",
|
|
37
|
+
),
|
|
38
|
+
# Content options
|
|
39
|
+
ConfigField(
|
|
40
|
+
name="include_summary",
|
|
41
|
+
label="Include Summary",
|
|
42
|
+
type="boolean",
|
|
43
|
+
required=False,
|
|
44
|
+
default=False,
|
|
45
|
+
description="Include a summary of the article along with the full content",
|
|
46
|
+
),
|
|
47
|
+
ConfigField(
|
|
48
|
+
name="article_length",
|
|
49
|
+
label="Article Length",
|
|
50
|
+
type="number",
|
|
51
|
+
required=False,
|
|
52
|
+
placeholder="5000",
|
|
53
|
+
description="Maximum length of the article or its summary to be processed or returned",
|
|
54
|
+
),
|
|
55
|
+
],
|
|
56
|
+
dependencies=["newspaper4k", "lxml_html_clean"],
|
|
57
|
+
docs_url="https://docs.agno.com/tools/toolkits/web_scrape/newspaper4k",
|
|
58
|
+
)
|
|
59
|
+
def newspaper4k_tools() -> type[Newspaper4kTools]:
|
|
60
|
+
"""Return Newspaper4k tools for news article extraction."""
|
|
61
|
+
from agno.tools.newspaper4k import Newspaper4kTools
|
|
62
|
+
|
|
63
|
+
return Newspaper4kTools
|
mindroom/tools/openai.py
ADDED
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
"""OpenAI 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.openai import OpenAITools
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
@register_tool_with_metadata(
|
|
20
|
+
name="openai",
|
|
21
|
+
display_name="OpenAI",
|
|
22
|
+
description="AI-powered tools for transcription, image generation, and speech synthesis",
|
|
23
|
+
category=ToolCategory.DEVELOPMENT,
|
|
24
|
+
status=ToolStatus.REQUIRES_CONFIG,
|
|
25
|
+
setup_type=SetupType.API_KEY,
|
|
26
|
+
icon="SiOpenai",
|
|
27
|
+
icon_color="text-green-600",
|
|
28
|
+
config_fields=[
|
|
29
|
+
# Authentication
|
|
30
|
+
ConfigField(
|
|
31
|
+
name="api_key",
|
|
32
|
+
label="API Key",
|
|
33
|
+
type="password",
|
|
34
|
+
required=False,
|
|
35
|
+
placeholder="sk-...",
|
|
36
|
+
description="OpenAI API key (can also be set via OPENAI_API_KEY env var)",
|
|
37
|
+
),
|
|
38
|
+
# Feature toggles
|
|
39
|
+
ConfigField(
|
|
40
|
+
name="enable_transcription",
|
|
41
|
+
label="Enable Transcription",
|
|
42
|
+
type="boolean",
|
|
43
|
+
required=False,
|
|
44
|
+
default=True,
|
|
45
|
+
description="Enable audio transcription using Whisper",
|
|
46
|
+
),
|
|
47
|
+
ConfigField(
|
|
48
|
+
name="enable_image_generation",
|
|
49
|
+
label="Enable Image Generation",
|
|
50
|
+
type="boolean",
|
|
51
|
+
required=False,
|
|
52
|
+
default=True,
|
|
53
|
+
description="Enable image generation using DALL-E",
|
|
54
|
+
),
|
|
55
|
+
ConfigField(
|
|
56
|
+
name="enable_speech_generation",
|
|
57
|
+
label="Enable Speech Generation",
|
|
58
|
+
type="boolean",
|
|
59
|
+
required=False,
|
|
60
|
+
default=True,
|
|
61
|
+
description="Enable text-to-speech synthesis",
|
|
62
|
+
),
|
|
63
|
+
# Transcription settings
|
|
64
|
+
ConfigField(
|
|
65
|
+
name="transcription_model",
|
|
66
|
+
label="Transcription Model",
|
|
67
|
+
type="text",
|
|
68
|
+
required=False,
|
|
69
|
+
default="whisper-1",
|
|
70
|
+
placeholder="whisper-1",
|
|
71
|
+
description="Model to use for audio transcription",
|
|
72
|
+
),
|
|
73
|
+
# Text-to-speech settings
|
|
74
|
+
ConfigField(
|
|
75
|
+
name="text_to_speech_voice",
|
|
76
|
+
label="Text-to-Speech Voice",
|
|
77
|
+
type="text",
|
|
78
|
+
required=False,
|
|
79
|
+
default="alloy",
|
|
80
|
+
placeholder="alloy",
|
|
81
|
+
description="Voice to use for speech generation (alloy, echo, fable, onyx, nova, shimmer)",
|
|
82
|
+
),
|
|
83
|
+
ConfigField(
|
|
84
|
+
name="text_to_speech_model",
|
|
85
|
+
label="Text-to-Speech Model",
|
|
86
|
+
type="text",
|
|
87
|
+
required=False,
|
|
88
|
+
default="tts-1",
|
|
89
|
+
placeholder="tts-1",
|
|
90
|
+
description="Model to use for text-to-speech (tts-1, tts-1-hd)",
|
|
91
|
+
),
|
|
92
|
+
ConfigField(
|
|
93
|
+
name="text_to_speech_format",
|
|
94
|
+
label="Text-to-Speech Format",
|
|
95
|
+
type="text",
|
|
96
|
+
required=False,
|
|
97
|
+
default="mp3",
|
|
98
|
+
placeholder="mp3",
|
|
99
|
+
description="Audio format for speech generation (mp3, opus, aac, flac, wav, pcm)",
|
|
100
|
+
),
|
|
101
|
+
# Image generation settings
|
|
102
|
+
ConfigField(
|
|
103
|
+
name="image_model",
|
|
104
|
+
label="Image Model",
|
|
105
|
+
type="text",
|
|
106
|
+
required=False,
|
|
107
|
+
default="dall-e-3",
|
|
108
|
+
placeholder="dall-e-3",
|
|
109
|
+
description="Model to use for image generation",
|
|
110
|
+
),
|
|
111
|
+
ConfigField(
|
|
112
|
+
name="image_quality",
|
|
113
|
+
label="Image Quality",
|
|
114
|
+
type="text",
|
|
115
|
+
required=False,
|
|
116
|
+
placeholder="standard",
|
|
117
|
+
description="Quality setting for image generation (standard, hd)",
|
|
118
|
+
),
|
|
119
|
+
ConfigField(
|
|
120
|
+
name="image_size",
|
|
121
|
+
label="Image Size",
|
|
122
|
+
type="text",
|
|
123
|
+
required=False,
|
|
124
|
+
placeholder="1024x1024",
|
|
125
|
+
description="Size for generated images (256x256, 512x512, 1024x1024, 1792x1024, 1024x1792)",
|
|
126
|
+
),
|
|
127
|
+
ConfigField(
|
|
128
|
+
name="image_style",
|
|
129
|
+
label="Image Style",
|
|
130
|
+
type="text",
|
|
131
|
+
required=False,
|
|
132
|
+
placeholder="vivid",
|
|
133
|
+
description="Style for generated images (vivid, natural)",
|
|
134
|
+
),
|
|
135
|
+
],
|
|
136
|
+
dependencies=["openai"],
|
|
137
|
+
docs_url="https://docs.agno.com/tools/toolkits/models/openai",
|
|
138
|
+
)
|
|
139
|
+
def openai_tools() -> type[OpenAITools]:
|
|
140
|
+
"""Return OpenAI tools for AI-powered transcription, image generation, and speech synthesis."""
|
|
141
|
+
from agno.tools.openai import OpenAITools
|
|
142
|
+
|
|
143
|
+
return OpenAITools
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
"""OpenWeather 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.openweather import OpenWeatherTools
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
@register_tool_with_metadata(
|
|
20
|
+
name="openweather",
|
|
21
|
+
display_name="OpenWeather",
|
|
22
|
+
description="Weather data services from OpenWeatherMap API",
|
|
23
|
+
category=ToolCategory.DEVELOPMENT, # Based on agno docs structure: /tools/toolkits/others/
|
|
24
|
+
status=ToolStatus.REQUIRES_CONFIG, # Requires API key
|
|
25
|
+
setup_type=SetupType.API_KEY, # Uses api_key parameter
|
|
26
|
+
icon="WiDaySunny", # Weather icon
|
|
27
|
+
icon_color="text-orange-500", # Orange sun color
|
|
28
|
+
config_fields=[
|
|
29
|
+
# Authentication
|
|
30
|
+
ConfigField(
|
|
31
|
+
name="api_key",
|
|
32
|
+
label="API Key",
|
|
33
|
+
type="password",
|
|
34
|
+
required=False,
|
|
35
|
+
placeholder="your_openweather_api_key",
|
|
36
|
+
description="OpenWeatherMap API key. If not provided, uses OPENWEATHER_API_KEY env var.",
|
|
37
|
+
),
|
|
38
|
+
# Configuration
|
|
39
|
+
ConfigField(
|
|
40
|
+
name="units",
|
|
41
|
+
label="Units",
|
|
42
|
+
type="text",
|
|
43
|
+
required=False,
|
|
44
|
+
default="metric",
|
|
45
|
+
placeholder="metric",
|
|
46
|
+
description="Units of measurement. Options: 'standard', 'metric', 'imperial'.",
|
|
47
|
+
),
|
|
48
|
+
# Feature flags
|
|
49
|
+
ConfigField(
|
|
50
|
+
name="current_weather",
|
|
51
|
+
label="Current Weather",
|
|
52
|
+
type="boolean",
|
|
53
|
+
required=False,
|
|
54
|
+
default=True,
|
|
55
|
+
description="Enable current weather function",
|
|
56
|
+
),
|
|
57
|
+
ConfigField(
|
|
58
|
+
name="forecast",
|
|
59
|
+
label="Forecast",
|
|
60
|
+
type="boolean",
|
|
61
|
+
required=False,
|
|
62
|
+
default=True,
|
|
63
|
+
description="Enable forecast function",
|
|
64
|
+
),
|
|
65
|
+
ConfigField(
|
|
66
|
+
name="air_pollution",
|
|
67
|
+
label="Air Pollution",
|
|
68
|
+
type="boolean",
|
|
69
|
+
required=False,
|
|
70
|
+
default=True,
|
|
71
|
+
description="Enable air pollution function",
|
|
72
|
+
),
|
|
73
|
+
ConfigField(
|
|
74
|
+
name="geocoding",
|
|
75
|
+
label="Geocoding",
|
|
76
|
+
type="boolean",
|
|
77
|
+
required=False,
|
|
78
|
+
default=True,
|
|
79
|
+
description="Enable geocoding function",
|
|
80
|
+
),
|
|
81
|
+
],
|
|
82
|
+
dependencies=["requests"], # From agno requirements
|
|
83
|
+
docs_url="https://docs.agno.com/tools/toolkits/others/openweather", # URL without .md extension
|
|
84
|
+
)
|
|
85
|
+
def openweather_tools() -> type[OpenWeatherTools]:
|
|
86
|
+
"""Return OpenWeather tools for weather data access."""
|
|
87
|
+
from agno.tools.openweather import OpenWeatherTools
|
|
88
|
+
|
|
89
|
+
return OpenWeatherTools
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
"""Oxylabs 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.oxylabs import OxylabsTools
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
@register_tool_with_metadata(
|
|
20
|
+
name="oxylabs",
|
|
21
|
+
display_name="Oxylabs",
|
|
22
|
+
description="Powerful web scraping capabilities including SERP, Amazon product data, and universal web scraping",
|
|
23
|
+
category=ToolCategory.RESEARCH, # web_scrape maps to RESEARCH
|
|
24
|
+
status=ToolStatus.REQUIRES_CONFIG, # requires username and password
|
|
25
|
+
setup_type=SetupType.API_KEY, # uses username/password credentials
|
|
26
|
+
icon="FaGlobe",
|
|
27
|
+
icon_color="text-blue-600", # Web/scraping theme
|
|
28
|
+
config_fields=[
|
|
29
|
+
# Authentication credentials
|
|
30
|
+
ConfigField(
|
|
31
|
+
name="username",
|
|
32
|
+
label="Username",
|
|
33
|
+
type="text",
|
|
34
|
+
required=False,
|
|
35
|
+
placeholder="your_oxylabs_username",
|
|
36
|
+
description="Oxylabs dashboard username (can also be set via OXYLABS_USERNAME env var)",
|
|
37
|
+
),
|
|
38
|
+
ConfigField(
|
|
39
|
+
name="password",
|
|
40
|
+
label="Password",
|
|
41
|
+
type="password",
|
|
42
|
+
required=False,
|
|
43
|
+
placeholder="your_oxylabs_password",
|
|
44
|
+
description="Oxylabs dashboard password (can also be set via OXYLABS_PASSWORD env var)",
|
|
45
|
+
),
|
|
46
|
+
],
|
|
47
|
+
dependencies=["oxylabs"],
|
|
48
|
+
docs_url="https://docs.agno.com/tools/toolkits/web_scrape/oxylabs",
|
|
49
|
+
)
|
|
50
|
+
def oxylabs_tools() -> type[OxylabsTools]:
|
|
51
|
+
"""Return Oxylabs tools for web scraping and data extraction."""
|
|
52
|
+
from agno.tools.oxylabs import OxylabsTools
|
|
53
|
+
|
|
54
|
+
return OxylabsTools
|
mindroom/tools/pandas.py
ADDED
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"""Pandas 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.pandas import PandasTools
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
@register_tool_with_metadata(
|
|
19
|
+
name="pandas",
|
|
20
|
+
display_name="Pandas",
|
|
21
|
+
description="Advanced data manipulation and analysis",
|
|
22
|
+
category=ToolCategory.PRODUCTIVITY,
|
|
23
|
+
status=ToolStatus.AVAILABLE,
|
|
24
|
+
setup_type=SetupType.NONE,
|
|
25
|
+
icon="Database",
|
|
26
|
+
icon_color="text-blue-600",
|
|
27
|
+
config_fields=[],
|
|
28
|
+
dependencies=["pandas"],
|
|
29
|
+
docs_url="https://docs.agno.com/tools/toolkits/database/pandas",
|
|
30
|
+
)
|
|
31
|
+
def pandas_tools() -> type[PandasTools]:
|
|
32
|
+
"""Return Pandas tools for data manipulation and analysis."""
|
|
33
|
+
from agno.tools.pandas import PandasTools
|
|
34
|
+
|
|
35
|
+
return PandasTools
|