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
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
"""Google Sheets 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 mindroom.custom_tools.google_sheets import GoogleSheetsTools
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
@register_tool_with_metadata(
|
|
20
|
+
name="google_sheets",
|
|
21
|
+
display_name="Google Sheets",
|
|
22
|
+
description="Read, create, update, and duplicate Google Sheets spreadsheets",
|
|
23
|
+
category=ToolCategory.DEVELOPMENT,
|
|
24
|
+
status=ToolStatus.REQUIRES_CONFIG,
|
|
25
|
+
setup_type=SetupType.SPECIAL,
|
|
26
|
+
auth_provider="google", # Authentication provided by Google Services integration
|
|
27
|
+
icon="FaGoogle",
|
|
28
|
+
icon_color="text-green-600",
|
|
29
|
+
config_fields=[
|
|
30
|
+
ConfigField(
|
|
31
|
+
name="spreadsheet_id",
|
|
32
|
+
label="Spreadsheet ID",
|
|
33
|
+
type="text",
|
|
34
|
+
required=False,
|
|
35
|
+
placeholder="Leave empty to work with multiple spreadsheets",
|
|
36
|
+
description="The ID of the Google Spreadsheet to work with. If not specified, you can work with multiple spreadsheets.",
|
|
37
|
+
),
|
|
38
|
+
ConfigField(
|
|
39
|
+
name="spreadsheet_range",
|
|
40
|
+
label="Default Range",
|
|
41
|
+
type="text",
|
|
42
|
+
required=False,
|
|
43
|
+
placeholder="e.g., Sheet1!A1:Z100",
|
|
44
|
+
description="Default range to use for operations (optional)",
|
|
45
|
+
),
|
|
46
|
+
ConfigField(
|
|
47
|
+
name="read",
|
|
48
|
+
label="Enable Read Operations",
|
|
49
|
+
type="boolean",
|
|
50
|
+
required=False,
|
|
51
|
+
default=True,
|
|
52
|
+
description="Allow reading data from spreadsheets",
|
|
53
|
+
),
|
|
54
|
+
ConfigField(
|
|
55
|
+
name="create",
|
|
56
|
+
label="Enable Create Operations",
|
|
57
|
+
type="boolean",
|
|
58
|
+
required=False,
|
|
59
|
+
default=False,
|
|
60
|
+
description="Allow creating new spreadsheets",
|
|
61
|
+
),
|
|
62
|
+
ConfigField(
|
|
63
|
+
name="update",
|
|
64
|
+
label="Enable Update Operations",
|
|
65
|
+
type="boolean",
|
|
66
|
+
required=False,
|
|
67
|
+
default=False,
|
|
68
|
+
description="Allow updating existing spreadsheets",
|
|
69
|
+
),
|
|
70
|
+
ConfigField(
|
|
71
|
+
name="duplicate",
|
|
72
|
+
label="Enable Duplicate Operations",
|
|
73
|
+
type="boolean",
|
|
74
|
+
required=False,
|
|
75
|
+
default=False,
|
|
76
|
+
description="Allow duplicating spreadsheets",
|
|
77
|
+
),
|
|
78
|
+
],
|
|
79
|
+
dependencies=["google-api-python-client", "google-auth-httplib2", "google-auth-oauthlib"],
|
|
80
|
+
docs_url="https://docs.agno.com/tools/toolkits/others/google_sheets",
|
|
81
|
+
)
|
|
82
|
+
def google_sheets_tools() -> type[GoogleSheetsTools]:
|
|
83
|
+
"""Return Google Sheets tools for spreadsheet integration."""
|
|
84
|
+
from mindroom.custom_tools.google_sheets import GoogleSheetsTools
|
|
85
|
+
|
|
86
|
+
return GoogleSheetsTools
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
"""Google Search 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.googlesearch import GoogleSearchTools
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
@register_tool_with_metadata(
|
|
20
|
+
name="googlesearch",
|
|
21
|
+
display_name="Google Search",
|
|
22
|
+
description="Search Google for web results using Python library",
|
|
23
|
+
category=ToolCategory.RESEARCH,
|
|
24
|
+
status=ToolStatus.AVAILABLE,
|
|
25
|
+
setup_type=SetupType.NONE,
|
|
26
|
+
icon="FaGoogle",
|
|
27
|
+
icon_color="text-blue-500",
|
|
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
|
+
default=None,
|
|
36
|
+
placeholder="10",
|
|
37
|
+
description="Fixed number of maximum search results to return (overrides per-query max_results)",
|
|
38
|
+
),
|
|
39
|
+
ConfigField(
|
|
40
|
+
name="fixed_language",
|
|
41
|
+
label="Fixed Language",
|
|
42
|
+
type="text",
|
|
43
|
+
required=False,
|
|
44
|
+
default=None,
|
|
45
|
+
placeholder="en",
|
|
46
|
+
description="Fixed language for search results (overrides per-query language setting)",
|
|
47
|
+
),
|
|
48
|
+
ConfigField(
|
|
49
|
+
name="proxy",
|
|
50
|
+
label="Proxy",
|
|
51
|
+
type="url",
|
|
52
|
+
required=False,
|
|
53
|
+
default=None,
|
|
54
|
+
placeholder="http://proxy.example.com:8080",
|
|
55
|
+
description="Proxy server for search requests",
|
|
56
|
+
),
|
|
57
|
+
ConfigField(
|
|
58
|
+
name="timeout",
|
|
59
|
+
label="Request Timeout",
|
|
60
|
+
type="number",
|
|
61
|
+
required=False,
|
|
62
|
+
default=10,
|
|
63
|
+
placeholder="10",
|
|
64
|
+
description="Timeout for search requests in seconds",
|
|
65
|
+
),
|
|
66
|
+
ConfigField(
|
|
67
|
+
name="headers",
|
|
68
|
+
label="Custom Headers",
|
|
69
|
+
type="text",
|
|
70
|
+
required=False,
|
|
71
|
+
default=None,
|
|
72
|
+
placeholder='{"User-Agent": "Custom Agent"}',
|
|
73
|
+
description="Custom headers for search requests (JSON format)",
|
|
74
|
+
),
|
|
75
|
+
],
|
|
76
|
+
dependencies=["googlesearch-python", "pycountry"],
|
|
77
|
+
docs_url="https://docs.agno.com/tools/toolkits/search/googlesearch",
|
|
78
|
+
)
|
|
79
|
+
def googlesearch_tools() -> type[GoogleSearchTools]:
|
|
80
|
+
"""Return Google Search tools for web search."""
|
|
81
|
+
from agno.tools.googlesearch import GoogleSearchTools
|
|
82
|
+
|
|
83
|
+
return GoogleSearchTools
|
mindroom/tools/groq.py
ADDED
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
"""Groq 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.models.groq import GroqTools
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
@register_tool_with_metadata(
|
|
14
|
+
name="groq",
|
|
15
|
+
display_name="Groq",
|
|
16
|
+
description="Fast AI inference for audio transcription, translation, and text-to-speech",
|
|
17
|
+
category=ToolCategory.DEVELOPMENT,
|
|
18
|
+
status=ToolStatus.REQUIRES_CONFIG,
|
|
19
|
+
setup_type=SetupType.API_KEY,
|
|
20
|
+
icon="TbBrain",
|
|
21
|
+
icon_color="text-orange-500", # Groq brand orange
|
|
22
|
+
config_fields=[
|
|
23
|
+
# Authentication
|
|
24
|
+
ConfigField(
|
|
25
|
+
name="api_key",
|
|
26
|
+
label="API Key",
|
|
27
|
+
type="password",
|
|
28
|
+
required=False,
|
|
29
|
+
placeholder="gsk_...",
|
|
30
|
+
description="Groq API key for authentication (can also be set via GROQ_API_KEY env var)",
|
|
31
|
+
),
|
|
32
|
+
# Model Configuration
|
|
33
|
+
ConfigField(
|
|
34
|
+
name="transcription_model",
|
|
35
|
+
label="Transcription Model",
|
|
36
|
+
type="text",
|
|
37
|
+
required=False,
|
|
38
|
+
default="whisper-large-v3",
|
|
39
|
+
placeholder="whisper-large-v3",
|
|
40
|
+
description="Whisper model to use for audio transcription",
|
|
41
|
+
),
|
|
42
|
+
ConfigField(
|
|
43
|
+
name="translation_model",
|
|
44
|
+
label="Translation Model",
|
|
45
|
+
type="text",
|
|
46
|
+
required=False,
|
|
47
|
+
default="whisper-large-v3",
|
|
48
|
+
placeholder="whisper-large-v3",
|
|
49
|
+
description="Whisper model to use for audio translation to English",
|
|
50
|
+
),
|
|
51
|
+
ConfigField(
|
|
52
|
+
name="tts_model",
|
|
53
|
+
label="Text-to-Speech Model",
|
|
54
|
+
type="text",
|
|
55
|
+
required=False,
|
|
56
|
+
default="playai-tts",
|
|
57
|
+
placeholder="playai-tts",
|
|
58
|
+
description="Model to use for text-to-speech generation",
|
|
59
|
+
),
|
|
60
|
+
ConfigField(
|
|
61
|
+
name="tts_voice",
|
|
62
|
+
label="TTS Voice",
|
|
63
|
+
type="text",
|
|
64
|
+
required=False,
|
|
65
|
+
default="Chip-PlayAI",
|
|
66
|
+
placeholder="Chip-PlayAI",
|
|
67
|
+
description="Voice to use for text-to-speech generation",
|
|
68
|
+
),
|
|
69
|
+
],
|
|
70
|
+
dependencies=["groq"],
|
|
71
|
+
docs_url="https://docs.agno.com/tools/toolkits/models/groq",
|
|
72
|
+
)
|
|
73
|
+
def groq_tools() -> type[GroqTools]:
|
|
74
|
+
"""Return Groq AI tools for fast audio transcription, translation, and text-to-speech."""
|
|
75
|
+
from agno.tools.models.groq import GroqTools
|
|
76
|
+
|
|
77
|
+
return GroqTools
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
"""Hacker News 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.hackernews import HackerNewsTools
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
@register_tool_with_metadata(
|
|
20
|
+
name="hackernews",
|
|
21
|
+
display_name="Hacker News",
|
|
22
|
+
description="Get top stories and user details from Hacker News",
|
|
23
|
+
category=ToolCategory.RESEARCH,
|
|
24
|
+
status=ToolStatus.AVAILABLE,
|
|
25
|
+
setup_type=SetupType.NONE,
|
|
26
|
+
icon="FaHackerNews",
|
|
27
|
+
icon_color="text-orange-600", # Hacker News orange
|
|
28
|
+
config_fields=[
|
|
29
|
+
# Feature flags
|
|
30
|
+
ConfigField(
|
|
31
|
+
name="get_top_stories",
|
|
32
|
+
label="Get Top Stories",
|
|
33
|
+
type="boolean",
|
|
34
|
+
required=False,
|
|
35
|
+
default=True,
|
|
36
|
+
description="Enable getting top stories from Hacker News",
|
|
37
|
+
),
|
|
38
|
+
ConfigField(
|
|
39
|
+
name="get_user_details",
|
|
40
|
+
label="Get User Details",
|
|
41
|
+
type="boolean",
|
|
42
|
+
required=False,
|
|
43
|
+
default=True,
|
|
44
|
+
description="Enable getting user details from Hacker News",
|
|
45
|
+
),
|
|
46
|
+
],
|
|
47
|
+
dependencies=["httpx"],
|
|
48
|
+
docs_url="https://docs.agno.com/tools/toolkits/search/hackernews",
|
|
49
|
+
)
|
|
50
|
+
def hackernews_tools() -> type[HackerNewsTools]:
|
|
51
|
+
"""Return Hacker News tools for getting stories and user details."""
|
|
52
|
+
from agno.tools.hackernews import HackerNewsTools
|
|
53
|
+
|
|
54
|
+
return HackerNewsTools
|
mindroom/tools/jina.py
ADDED
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
"""Jina Reader 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.jina import JinaReaderTools
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
@register_tool_with_metadata(
|
|
20
|
+
name="jina",
|
|
21
|
+
display_name="Jina Reader",
|
|
22
|
+
description="Web content reading and search using Jina AI Reader API",
|
|
23
|
+
category=ToolCategory.RESEARCH,
|
|
24
|
+
status=ToolStatus.REQUIRES_CONFIG,
|
|
25
|
+
setup_type=SetupType.API_KEY,
|
|
26
|
+
icon="FaGlobe",
|
|
27
|
+
icon_color="text-blue-600",
|
|
28
|
+
config_fields=[
|
|
29
|
+
# Authentication/Connection parameters first
|
|
30
|
+
ConfigField(
|
|
31
|
+
name="api_key",
|
|
32
|
+
label="API Key",
|
|
33
|
+
type="password",
|
|
34
|
+
required=False,
|
|
35
|
+
placeholder="jina_...",
|
|
36
|
+
description="API key for Jina Reader (can also be set via JINA_API_KEY env var)",
|
|
37
|
+
),
|
|
38
|
+
ConfigField(
|
|
39
|
+
name="base_url",
|
|
40
|
+
label="Base URL",
|
|
41
|
+
type="url",
|
|
42
|
+
required=False,
|
|
43
|
+
default="https://r.jina.ai/",
|
|
44
|
+
placeholder="https://r.jina.ai/",
|
|
45
|
+
description="Base URL for Jina Reader API",
|
|
46
|
+
),
|
|
47
|
+
ConfigField(
|
|
48
|
+
name="search_url",
|
|
49
|
+
label="Search URL",
|
|
50
|
+
type="url",
|
|
51
|
+
required=False,
|
|
52
|
+
default="https://s.jina.ai/",
|
|
53
|
+
placeholder="https://s.jina.ai/",
|
|
54
|
+
description="Search URL for Jina Reader API",
|
|
55
|
+
),
|
|
56
|
+
# Configuration parameters
|
|
57
|
+
ConfigField(
|
|
58
|
+
name="max_content_length",
|
|
59
|
+
label="Max Content Length",
|
|
60
|
+
type="number",
|
|
61
|
+
required=False,
|
|
62
|
+
default=10000,
|
|
63
|
+
description="Maximum content length in characters",
|
|
64
|
+
),
|
|
65
|
+
ConfigField(
|
|
66
|
+
name="timeout",
|
|
67
|
+
label="Timeout",
|
|
68
|
+
type="number",
|
|
69
|
+
required=False,
|
|
70
|
+
placeholder="30",
|
|
71
|
+
description="Timeout for Jina Reader API requests in seconds",
|
|
72
|
+
),
|
|
73
|
+
# Feature flags grouped by functionality
|
|
74
|
+
# URL Reading Features
|
|
75
|
+
ConfigField(
|
|
76
|
+
name="read_url",
|
|
77
|
+
label="Read URL",
|
|
78
|
+
type="boolean",
|
|
79
|
+
required=False,
|
|
80
|
+
default=True,
|
|
81
|
+
description="Enable URL reading functionality",
|
|
82
|
+
),
|
|
83
|
+
# Search Features
|
|
84
|
+
ConfigField(
|
|
85
|
+
name="search_query",
|
|
86
|
+
label="Search Query",
|
|
87
|
+
type="boolean",
|
|
88
|
+
required=False,
|
|
89
|
+
default=False,
|
|
90
|
+
description="Enable web search functionality",
|
|
91
|
+
),
|
|
92
|
+
ConfigField(
|
|
93
|
+
name="search_query_content",
|
|
94
|
+
label="Search Query Content",
|
|
95
|
+
type="boolean",
|
|
96
|
+
required=False,
|
|
97
|
+
default=True,
|
|
98
|
+
description="Include full URL content in search results",
|
|
99
|
+
),
|
|
100
|
+
],
|
|
101
|
+
dependencies=["httpx", "pydantic"],
|
|
102
|
+
docs_url="https://docs.agno.com/tools/toolkits/web_scrape/jina_reader",
|
|
103
|
+
)
|
|
104
|
+
def jina_tools() -> type[JinaReaderTools]:
|
|
105
|
+
"""Return Jina Reader tools for web content reading and search."""
|
|
106
|
+
from agno.tools.jina import JinaReaderTools
|
|
107
|
+
|
|
108
|
+
return JinaReaderTools
|
mindroom/tools/jira.py
ADDED
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
"""Jira 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.jira import JiraTools
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
@register_tool_with_metadata(
|
|
20
|
+
name="jira",
|
|
21
|
+
display_name="Jira",
|
|
22
|
+
description="Issue tracking and project management",
|
|
23
|
+
category=ToolCategory.DEVELOPMENT,
|
|
24
|
+
status=ToolStatus.REQUIRES_CONFIG,
|
|
25
|
+
setup_type=SetupType.API_KEY,
|
|
26
|
+
icon="FaTicketAlt",
|
|
27
|
+
icon_color="text-blue-600", # Jira blue
|
|
28
|
+
config_fields=[
|
|
29
|
+
# Authentication
|
|
30
|
+
ConfigField(
|
|
31
|
+
name="server_url",
|
|
32
|
+
label="Server URL",
|
|
33
|
+
type="url",
|
|
34
|
+
required=True,
|
|
35
|
+
placeholder="https://your-domain.atlassian.net",
|
|
36
|
+
description="The URL of the JIRA server (can also be set via JIRA_SERVER_URL env var)",
|
|
37
|
+
),
|
|
38
|
+
ConfigField(
|
|
39
|
+
name="username",
|
|
40
|
+
label="Username",
|
|
41
|
+
type="text",
|
|
42
|
+
required=False,
|
|
43
|
+
placeholder="your.email@company.com",
|
|
44
|
+
description="The JIRA username for authentication (can also be set via JIRA_USERNAME env var)",
|
|
45
|
+
),
|
|
46
|
+
ConfigField(
|
|
47
|
+
name="password",
|
|
48
|
+
label="Password",
|
|
49
|
+
type="password",
|
|
50
|
+
required=False,
|
|
51
|
+
placeholder="your-password",
|
|
52
|
+
description="The JIRA password for authentication (can also be set via JIRA_PASSWORD env var)",
|
|
53
|
+
),
|
|
54
|
+
ConfigField(
|
|
55
|
+
name="token",
|
|
56
|
+
label="API Token",
|
|
57
|
+
type="password",
|
|
58
|
+
required=False,
|
|
59
|
+
placeholder="your-api-token",
|
|
60
|
+
description="The JIRA API token for authentication (can also be set via JIRA_TOKEN env var)",
|
|
61
|
+
),
|
|
62
|
+
],
|
|
63
|
+
dependencies=["jira"],
|
|
64
|
+
docs_url="https://docs.agno.com/tools/toolkits/others/jira",
|
|
65
|
+
)
|
|
66
|
+
def jira_tools() -> type[JiraTools]:
|
|
67
|
+
"""Return Jira tools for issue tracking and project management."""
|
|
68
|
+
from agno.tools.jira import JiraTools
|
|
69
|
+
|
|
70
|
+
return JiraTools
|
mindroom/tools/linear.py
ADDED
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
"""Linear 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.linear import LinearTools
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
@register_tool_with_metadata(
|
|
20
|
+
name="linear",
|
|
21
|
+
display_name="Linear",
|
|
22
|
+
description="Issue tracking and project management",
|
|
23
|
+
category=ToolCategory.DEVELOPMENT,
|
|
24
|
+
status=ToolStatus.REQUIRES_CONFIG,
|
|
25
|
+
setup_type=SetupType.API_KEY,
|
|
26
|
+
icon="FaLinear",
|
|
27
|
+
icon_color="text-purple-600",
|
|
28
|
+
config_fields=[
|
|
29
|
+
# User operations
|
|
30
|
+
ConfigField(
|
|
31
|
+
name="get_user_details",
|
|
32
|
+
label="Get User Details",
|
|
33
|
+
type="boolean",
|
|
34
|
+
required=False,
|
|
35
|
+
default=True,
|
|
36
|
+
description="Enable fetching authenticated user details",
|
|
37
|
+
),
|
|
38
|
+
ConfigField(
|
|
39
|
+
name="get_teams_details",
|
|
40
|
+
label="Get Teams Details",
|
|
41
|
+
type="boolean",
|
|
42
|
+
required=False,
|
|
43
|
+
default=True,
|
|
44
|
+
description="Enable fetching team details for the authenticated user",
|
|
45
|
+
),
|
|
46
|
+
# Issue operations
|
|
47
|
+
ConfigField(
|
|
48
|
+
name="get_issue_details",
|
|
49
|
+
label="Get Issue Details",
|
|
50
|
+
type="boolean",
|
|
51
|
+
required=False,
|
|
52
|
+
default=True,
|
|
53
|
+
description="Enable retrieving details of specific issues by ID",
|
|
54
|
+
),
|
|
55
|
+
ConfigField(
|
|
56
|
+
name="create_issue",
|
|
57
|
+
label="Create Issue",
|
|
58
|
+
type="boolean",
|
|
59
|
+
required=False,
|
|
60
|
+
default=True,
|
|
61
|
+
description="Enable creating new issues within teams and projects",
|
|
62
|
+
),
|
|
63
|
+
ConfigField(
|
|
64
|
+
name="update_issue",
|
|
65
|
+
label="Update Issue",
|
|
66
|
+
type="boolean",
|
|
67
|
+
required=False,
|
|
68
|
+
default=True,
|
|
69
|
+
description="Enable updating issue titles and states",
|
|
70
|
+
),
|
|
71
|
+
ConfigField(
|
|
72
|
+
name="get_user_assigned_issues",
|
|
73
|
+
label="Get User Assigned Issues",
|
|
74
|
+
type="boolean",
|
|
75
|
+
required=False,
|
|
76
|
+
default=True,
|
|
77
|
+
description="Enable retrieving issues assigned to specific users",
|
|
78
|
+
),
|
|
79
|
+
ConfigField(
|
|
80
|
+
name="get_workflow_issues",
|
|
81
|
+
label="Get Workflow Issues",
|
|
82
|
+
type="boolean",
|
|
83
|
+
required=False,
|
|
84
|
+
default=True,
|
|
85
|
+
description="Enable retrieving issues within specific workflow states",
|
|
86
|
+
),
|
|
87
|
+
ConfigField(
|
|
88
|
+
name="get_high_priority_issues",
|
|
89
|
+
label="Get High Priority Issues",
|
|
90
|
+
type="boolean",
|
|
91
|
+
required=False,
|
|
92
|
+
default=True,
|
|
93
|
+
description="Enable retrieving issues with high priority (priority <= 2)",
|
|
94
|
+
),
|
|
95
|
+
],
|
|
96
|
+
dependencies=["requests"],
|
|
97
|
+
docs_url="https://docs.agno.com/tools/toolkits/others/linear",
|
|
98
|
+
)
|
|
99
|
+
def linear_tools() -> type[LinearTools]:
|
|
100
|
+
"""Return Linear tools for issue tracking and project management."""
|
|
101
|
+
from agno.tools.linear import LinearTools
|
|
102
|
+
|
|
103
|
+
return LinearTools
|
mindroom/tools/linkup.py
ADDED
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
"""Linkup 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.linkup import LinkupTools
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
@register_tool_with_metadata(
|
|
20
|
+
name="linkup",
|
|
21
|
+
display_name="Linkup",
|
|
22
|
+
description="Web search using Linkup API for real-time information",
|
|
23
|
+
category=ToolCategory.RESEARCH,
|
|
24
|
+
status=ToolStatus.REQUIRES_CONFIG,
|
|
25
|
+
setup_type=SetupType.API_KEY,
|
|
26
|
+
icon="FaSearch",
|
|
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="linkup_...",
|
|
36
|
+
description="Linkup API key for authentication (can also be set via LINKUP_API_KEY env var)",
|
|
37
|
+
),
|
|
38
|
+
# Search configuration
|
|
39
|
+
ConfigField(
|
|
40
|
+
name="depth",
|
|
41
|
+
label="Search Depth",
|
|
42
|
+
type="text",
|
|
43
|
+
required=False,
|
|
44
|
+
default="standard",
|
|
45
|
+
placeholder="standard",
|
|
46
|
+
description="Depth of the search. Use 'standard' for fast and affordable web search or 'deep' for comprehensive, in-depth web search",
|
|
47
|
+
),
|
|
48
|
+
ConfigField(
|
|
49
|
+
name="output_type",
|
|
50
|
+
label="Output Type",
|
|
51
|
+
type="text",
|
|
52
|
+
required=False,
|
|
53
|
+
default="searchResults",
|
|
54
|
+
placeholder="searchResults",
|
|
55
|
+
description="Type of output. 'sourcedAnswer' provides a comprehensive natural language answer with citations, 'searchResults' returns raw search context data",
|
|
56
|
+
),
|
|
57
|
+
],
|
|
58
|
+
dependencies=["linkup-sdk"],
|
|
59
|
+
docs_url="https://docs.agno.com/tools/toolkits/search/linkup",
|
|
60
|
+
)
|
|
61
|
+
def linkup_tools() -> type[LinkupTools]:
|
|
62
|
+
"""Return Linkup tools for web search."""
|
|
63
|
+
from agno.tools.linkup import LinkupTools
|
|
64
|
+
|
|
65
|
+
return LinkupTools
|