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,84 @@
|
|
|
1
|
+
"""Cartesia 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.cartesia import CartesiaTools
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
@register_tool_with_metadata(
|
|
14
|
+
name="cartesia",
|
|
15
|
+
display_name="Cartesia",
|
|
16
|
+
description="Voice AI services including text-to-speech and voice localization",
|
|
17
|
+
category=ToolCategory.DEVELOPMENT, # others/ → DEVELOPMENT according to mapping
|
|
18
|
+
status=ToolStatus.REQUIRES_CONFIG, # requires API key
|
|
19
|
+
setup_type=SetupType.API_KEY, # API key authentication
|
|
20
|
+
icon="VolumeX", # Voice/sound related icon
|
|
21
|
+
icon_color="text-purple-500", # Purple for voice AI
|
|
22
|
+
config_fields=[
|
|
23
|
+
# Authentication
|
|
24
|
+
ConfigField(
|
|
25
|
+
name="api_key",
|
|
26
|
+
label="API Key",
|
|
27
|
+
type="password",
|
|
28
|
+
required=False,
|
|
29
|
+
placeholder="your_api_key_here",
|
|
30
|
+
description="Cartesia API key for authentication (can also be set via CARTESIA_API_KEY env var)",
|
|
31
|
+
),
|
|
32
|
+
# Model configuration
|
|
33
|
+
ConfigField(
|
|
34
|
+
name="model_id",
|
|
35
|
+
label="Model ID",
|
|
36
|
+
type="text",
|
|
37
|
+
required=False,
|
|
38
|
+
default="sonic-2",
|
|
39
|
+
placeholder="sonic-2",
|
|
40
|
+
description="The model ID to use for text-to-speech",
|
|
41
|
+
),
|
|
42
|
+
ConfigField(
|
|
43
|
+
name="default_voice_id",
|
|
44
|
+
label="Default Voice ID",
|
|
45
|
+
type="text",
|
|
46
|
+
required=False,
|
|
47
|
+
default="78ab82d5-25be-4f7d-82b3-7ad64e5b85b2",
|
|
48
|
+
placeholder="78ab82d5-25be-4f7d-82b3-7ad64e5b85b2",
|
|
49
|
+
description="The default voice ID to use for text-to-speech and localization",
|
|
50
|
+
),
|
|
51
|
+
# Feature flags
|
|
52
|
+
ConfigField(
|
|
53
|
+
name="text_to_speech_enabled",
|
|
54
|
+
label="Text to Speech Enabled",
|
|
55
|
+
type="boolean",
|
|
56
|
+
required=False,
|
|
57
|
+
default=True,
|
|
58
|
+
description="Enable text-to-speech functionality",
|
|
59
|
+
),
|
|
60
|
+
ConfigField(
|
|
61
|
+
name="list_voices_enabled",
|
|
62
|
+
label="List Voices Enabled",
|
|
63
|
+
type="boolean",
|
|
64
|
+
required=False,
|
|
65
|
+
default=True,
|
|
66
|
+
description="Enable listing available voices functionality",
|
|
67
|
+
),
|
|
68
|
+
ConfigField(
|
|
69
|
+
name="voice_localize_enabled",
|
|
70
|
+
label="Voice Localize Enabled",
|
|
71
|
+
type="boolean",
|
|
72
|
+
required=False,
|
|
73
|
+
default=False,
|
|
74
|
+
description="Enable voice localization functionality",
|
|
75
|
+
),
|
|
76
|
+
],
|
|
77
|
+
dependencies=["cartesia"],
|
|
78
|
+
docs_url="https://docs.agno.com/tools/toolkits/others/cartesia",
|
|
79
|
+
)
|
|
80
|
+
def cartesia_tools() -> type[CartesiaTools]:
|
|
81
|
+
"""Return Cartesia tools for voice AI services."""
|
|
82
|
+
from agno.tools.cartesia import CartesiaTools
|
|
83
|
+
|
|
84
|
+
return CartesiaTools
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
"""Composio 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 composio_agno import ComposioToolSet # type: ignore[import-untyped]
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
@register_tool_with_metadata(
|
|
14
|
+
name="composio",
|
|
15
|
+
display_name="Composio",
|
|
16
|
+
description="Access 1000+ integrations including Gmail, Salesforce, GitHub, and more",
|
|
17
|
+
category=ToolCategory.INTEGRATIONS,
|
|
18
|
+
status=ToolStatus.REQUIRES_CONFIG,
|
|
19
|
+
setup_type=SetupType.API_KEY,
|
|
20
|
+
icon="FaConnectdevelop",
|
|
21
|
+
icon_color="text-blue-600",
|
|
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="comp_...",
|
|
30
|
+
description="Composio API key (can also be set via COMPOSIO_API_KEY env var)",
|
|
31
|
+
),
|
|
32
|
+
ConfigField(
|
|
33
|
+
name="base_url",
|
|
34
|
+
label="Base URL",
|
|
35
|
+
type="url",
|
|
36
|
+
required=False,
|
|
37
|
+
description="Base URL for Composio API (leave empty for default)",
|
|
38
|
+
),
|
|
39
|
+
ConfigField(
|
|
40
|
+
name="entity_id",
|
|
41
|
+
label="Entity ID",
|
|
42
|
+
type="text",
|
|
43
|
+
required=False,
|
|
44
|
+
default="default",
|
|
45
|
+
placeholder="default",
|
|
46
|
+
description="Entity identifier for Composio workspace",
|
|
47
|
+
),
|
|
48
|
+
# Workspace Configuration
|
|
49
|
+
ConfigField(
|
|
50
|
+
name="workspace_id",
|
|
51
|
+
label="Workspace ID",
|
|
52
|
+
type="text",
|
|
53
|
+
required=False,
|
|
54
|
+
placeholder="workspace_123",
|
|
55
|
+
description="Workspace identifier for organizing tools and data",
|
|
56
|
+
),
|
|
57
|
+
ConfigField(
|
|
58
|
+
name="workspace_config",
|
|
59
|
+
label="Workspace Config",
|
|
60
|
+
type="text",
|
|
61
|
+
required=False,
|
|
62
|
+
placeholder='{"type": "local"}',
|
|
63
|
+
description="JSON configuration for workspace settings",
|
|
64
|
+
),
|
|
65
|
+
# Connection Configuration
|
|
66
|
+
ConfigField(
|
|
67
|
+
name="connected_account_ids",
|
|
68
|
+
label="Connected Account IDs",
|
|
69
|
+
type="text",
|
|
70
|
+
required=False,
|
|
71
|
+
placeholder='{"github": "account_123"}',
|
|
72
|
+
description="JSON mapping of app names to connected account IDs",
|
|
73
|
+
),
|
|
74
|
+
# Advanced Configuration
|
|
75
|
+
ConfigField(
|
|
76
|
+
name="metadata",
|
|
77
|
+
label="Metadata",
|
|
78
|
+
type="text",
|
|
79
|
+
required=False,
|
|
80
|
+
placeholder='{"key": "value"}',
|
|
81
|
+
description="JSON metadata for tools and actions configuration",
|
|
82
|
+
),
|
|
83
|
+
ConfigField(
|
|
84
|
+
name="processors",
|
|
85
|
+
label="Processors",
|
|
86
|
+
type="text",
|
|
87
|
+
required=False,
|
|
88
|
+
description="Custom processors configuration (JSON format)",
|
|
89
|
+
),
|
|
90
|
+
ConfigField(
|
|
91
|
+
name="output_dir",
|
|
92
|
+
label="Output Directory",
|
|
93
|
+
type="text",
|
|
94
|
+
required=False,
|
|
95
|
+
placeholder="/path/to/output",
|
|
96
|
+
description="Directory path for output files",
|
|
97
|
+
),
|
|
98
|
+
ConfigField(
|
|
99
|
+
name="lockfile",
|
|
100
|
+
label="Lock File Path",
|
|
101
|
+
type="text",
|
|
102
|
+
required=False,
|
|
103
|
+
placeholder="/path/to/lockfile",
|
|
104
|
+
description="Path to lock file for concurrency control",
|
|
105
|
+
),
|
|
106
|
+
# Numerical Configuration
|
|
107
|
+
ConfigField(
|
|
108
|
+
name="max_retries",
|
|
109
|
+
label="Max Retries",
|
|
110
|
+
type="number",
|
|
111
|
+
required=False,
|
|
112
|
+
default=3,
|
|
113
|
+
description="Maximum number of retries for failed operations",
|
|
114
|
+
),
|
|
115
|
+
ConfigField(
|
|
116
|
+
name="verbosity_level",
|
|
117
|
+
label="Verbosity Level",
|
|
118
|
+
type="number",
|
|
119
|
+
required=False,
|
|
120
|
+
placeholder="1",
|
|
121
|
+
description="Logging verbosity level (0-3, higher = more verbose)",
|
|
122
|
+
),
|
|
123
|
+
# Feature Flags
|
|
124
|
+
ConfigField(
|
|
125
|
+
name="output_in_file",
|
|
126
|
+
label="Output in File",
|
|
127
|
+
type="boolean",
|
|
128
|
+
required=False,
|
|
129
|
+
default=False,
|
|
130
|
+
description="Enable file-based output for operations",
|
|
131
|
+
),
|
|
132
|
+
ConfigField(
|
|
133
|
+
name="allow_tracing",
|
|
134
|
+
label="Allow Tracing",
|
|
135
|
+
type="boolean",
|
|
136
|
+
required=False,
|
|
137
|
+
default=False,
|
|
138
|
+
description="Enable operation tracing for debugging",
|
|
139
|
+
),
|
|
140
|
+
ConfigField(
|
|
141
|
+
name="lock",
|
|
142
|
+
label="Enable Locking",
|
|
143
|
+
type="boolean",
|
|
144
|
+
required=False,
|
|
145
|
+
default=True,
|
|
146
|
+
description="Enable file locking for concurrent operations",
|
|
147
|
+
),
|
|
148
|
+
# Logging Configuration
|
|
149
|
+
ConfigField(
|
|
150
|
+
name="logging_level",
|
|
151
|
+
label="Logging Level",
|
|
152
|
+
type="text",
|
|
153
|
+
required=False,
|
|
154
|
+
default="INFO",
|
|
155
|
+
placeholder="INFO",
|
|
156
|
+
description="Logging level (DEBUG, INFO, WARNING, ERROR, CRITICAL)",
|
|
157
|
+
),
|
|
158
|
+
],
|
|
159
|
+
dependencies=["composio-agno"],
|
|
160
|
+
docs_url="https://docs.agno.com/tools/toolkits/others/composio",
|
|
161
|
+
)
|
|
162
|
+
def composio_tools() -> type[ComposioToolSet]:
|
|
163
|
+
"""Return Composio tools for accessing 1000+ integrations."""
|
|
164
|
+
from composio_agno import ComposioToolSet
|
|
165
|
+
|
|
166
|
+
return ComposioToolSet # type: ignore[no-any-return]
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
"""Config Manager 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.config_manager import ConfigManagerTools
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
@register_tool_with_metadata(
|
|
20
|
+
name="config_manager",
|
|
21
|
+
display_name="Config Manager",
|
|
22
|
+
description="Build and manage MindRoom agents with expert knowledge of the system",
|
|
23
|
+
category=ToolCategory.DEVELOPMENT,
|
|
24
|
+
status=ToolStatus.AVAILABLE,
|
|
25
|
+
setup_type=SetupType.NONE,
|
|
26
|
+
icon="Settings",
|
|
27
|
+
icon_color="text-purple-500",
|
|
28
|
+
config_fields=[
|
|
29
|
+
ConfigField(
|
|
30
|
+
name="config_path",
|
|
31
|
+
label="Configuration Path",
|
|
32
|
+
type="text",
|
|
33
|
+
required=False,
|
|
34
|
+
description="Path to the configuration file (uses default if not specified)",
|
|
35
|
+
),
|
|
36
|
+
],
|
|
37
|
+
dependencies=["agno", "pydantic", "yaml"],
|
|
38
|
+
docs_url="https://github.com/mindroom-ai/mindroom",
|
|
39
|
+
)
|
|
40
|
+
def config_manager_tools() -> type[ConfigManagerTools]:
|
|
41
|
+
"""Return config manager tools for agent building."""
|
|
42
|
+
from mindroom.custom_tools.config_manager import ConfigManagerTools
|
|
43
|
+
|
|
44
|
+
return ConfigManagerTools
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
"""Confluence 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.confluence import ConfluenceTools
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
@register_tool_with_metadata(
|
|
14
|
+
name="confluence",
|
|
15
|
+
display_name="Confluence",
|
|
16
|
+
description="Atlassian wiki platform for retrieving, creating, and updating pages",
|
|
17
|
+
category=ToolCategory.DEVELOPMENT,
|
|
18
|
+
status=ToolStatus.REQUIRES_CONFIG,
|
|
19
|
+
setup_type=SetupType.API_KEY,
|
|
20
|
+
icon="FaConfluence",
|
|
21
|
+
icon_color="text-blue-600",
|
|
22
|
+
config_fields=[
|
|
23
|
+
# Authentication/Connection parameters
|
|
24
|
+
ConfigField(
|
|
25
|
+
name="url",
|
|
26
|
+
label="Confluence URL",
|
|
27
|
+
type="url",
|
|
28
|
+
required=False,
|
|
29
|
+
placeholder="https://your-confluence-instance.atlassian.net",
|
|
30
|
+
description="Confluence instance URL (can also be set via CONFLUENCE_URL env var)",
|
|
31
|
+
),
|
|
32
|
+
ConfigField(
|
|
33
|
+
name="username",
|
|
34
|
+
label="Username",
|
|
35
|
+
type="text",
|
|
36
|
+
required=False,
|
|
37
|
+
placeholder="your-username",
|
|
38
|
+
description="Confluence username (can also be set via CONFLUENCE_USERNAME env var)",
|
|
39
|
+
),
|
|
40
|
+
ConfigField(
|
|
41
|
+
name="password",
|
|
42
|
+
label="Password",
|
|
43
|
+
type="password",
|
|
44
|
+
required=False,
|
|
45
|
+
placeholder="your-password",
|
|
46
|
+
description="Confluence password (can also be set via CONFLUENCE_PASSWORD env var)",
|
|
47
|
+
),
|
|
48
|
+
ConfigField(
|
|
49
|
+
name="api_key",
|
|
50
|
+
label="API Key",
|
|
51
|
+
type="password",
|
|
52
|
+
required=False,
|
|
53
|
+
placeholder="your-api-key",
|
|
54
|
+
description="Confluence API key - alternative to password (can also be set via CONFLUENCE_API_KEY env var)",
|
|
55
|
+
),
|
|
56
|
+
# Configuration options
|
|
57
|
+
ConfigField(
|
|
58
|
+
name="verify_ssl",
|
|
59
|
+
label="Verify SSL",
|
|
60
|
+
type="boolean",
|
|
61
|
+
required=False,
|
|
62
|
+
default=True,
|
|
63
|
+
description="Whether to verify SSL certificates when connecting to Confluence",
|
|
64
|
+
),
|
|
65
|
+
],
|
|
66
|
+
dependencies=["atlassian-python-api"],
|
|
67
|
+
docs_url="https://docs.agno.com/tools/toolkits/others/confluence",
|
|
68
|
+
)
|
|
69
|
+
def confluence_tools() -> type[ConfluenceTools]:
|
|
70
|
+
"""Return Confluence tools for wiki management."""
|
|
71
|
+
from agno.tools.confluence import ConfluenceTools
|
|
72
|
+
|
|
73
|
+
return ConfluenceTools
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
"""Crawl4AI 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.crawl4ai import Crawl4aiTools
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
@register_tool_with_metadata(
|
|
20
|
+
name="crawl4ai",
|
|
21
|
+
display_name="Crawl4AI",
|
|
22
|
+
description="Web crawling and scraping using the Crawl4ai library",
|
|
23
|
+
category=ToolCategory.RESEARCH,
|
|
24
|
+
status=ToolStatus.AVAILABLE,
|
|
25
|
+
setup_type=SetupType.NONE,
|
|
26
|
+
icon="FaSpider",
|
|
27
|
+
icon_color="text-blue-600",
|
|
28
|
+
config_fields=[
|
|
29
|
+
# Content extraction settings
|
|
30
|
+
ConfigField(
|
|
31
|
+
name="max_length",
|
|
32
|
+
label="Max Length",
|
|
33
|
+
type="number",
|
|
34
|
+
required=False,
|
|
35
|
+
default=5000,
|
|
36
|
+
placeholder="5000",
|
|
37
|
+
description="Maximum length of the text from the webpage to be returned",
|
|
38
|
+
),
|
|
39
|
+
ConfigField(
|
|
40
|
+
name="timeout",
|
|
41
|
+
label="Timeout",
|
|
42
|
+
type="number",
|
|
43
|
+
required=False,
|
|
44
|
+
default=60,
|
|
45
|
+
placeholder="60",
|
|
46
|
+
description="Timeout in seconds for page loading",
|
|
47
|
+
),
|
|
48
|
+
# Content filtering settings
|
|
49
|
+
ConfigField(
|
|
50
|
+
name="use_pruning",
|
|
51
|
+
label="Use Pruning",
|
|
52
|
+
type="boolean",
|
|
53
|
+
required=False,
|
|
54
|
+
default=False,
|
|
55
|
+
description="Enable content pruning to remove low-quality content",
|
|
56
|
+
),
|
|
57
|
+
ConfigField(
|
|
58
|
+
name="pruning_threshold",
|
|
59
|
+
label="Pruning Threshold",
|
|
60
|
+
type="number",
|
|
61
|
+
required=False,
|
|
62
|
+
default=0.48,
|
|
63
|
+
placeholder="0.48",
|
|
64
|
+
description="Threshold for content pruning (0.0 to 1.0)",
|
|
65
|
+
),
|
|
66
|
+
ConfigField(
|
|
67
|
+
name="bm25_threshold",
|
|
68
|
+
label="BM25 Threshold",
|
|
69
|
+
type="number",
|
|
70
|
+
required=False,
|
|
71
|
+
default=1.0,
|
|
72
|
+
placeholder="1.0",
|
|
73
|
+
description="Threshold for BM25 content filtering when using search queries",
|
|
74
|
+
),
|
|
75
|
+
# Browser settings
|
|
76
|
+
ConfigField(
|
|
77
|
+
name="headless",
|
|
78
|
+
label="Headless Mode",
|
|
79
|
+
type="boolean",
|
|
80
|
+
required=False,
|
|
81
|
+
default=True,
|
|
82
|
+
description="Run browser in headless mode (no GUI)",
|
|
83
|
+
),
|
|
84
|
+
ConfigField(
|
|
85
|
+
name="wait_until",
|
|
86
|
+
label="Wait Until",
|
|
87
|
+
type="text",
|
|
88
|
+
required=False,
|
|
89
|
+
default="domcontentloaded",
|
|
90
|
+
placeholder="domcontentloaded",
|
|
91
|
+
description="Browser event to wait for before extracting content (domcontentloaded, load, networkidle)",
|
|
92
|
+
),
|
|
93
|
+
],
|
|
94
|
+
dependencies=["crawl4ai"],
|
|
95
|
+
docs_url="https://docs.agno.com/tools/toolkits/web_scrape/crawl4ai",
|
|
96
|
+
)
|
|
97
|
+
def crawl4ai_tools() -> type[Crawl4aiTools]:
|
|
98
|
+
"""Return Crawl4AI tools for web crawling and scraping."""
|
|
99
|
+
from agno.tools.crawl4ai import Crawl4aiTools
|
|
100
|
+
|
|
101
|
+
return Crawl4aiTools
|
mindroom/tools/csv.py
ADDED
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
"""CSV toolkit 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.csv_toolkit import CsvTools
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
@register_tool_with_metadata(
|
|
20
|
+
name="csv",
|
|
21
|
+
display_name="CSV Toolkit",
|
|
22
|
+
description="CSV file analysis and querying with SQL support",
|
|
23
|
+
category=ToolCategory.PRODUCTIVITY,
|
|
24
|
+
status=ToolStatus.AVAILABLE,
|
|
25
|
+
setup_type=SetupType.NONE,
|
|
26
|
+
icon="FaFileCsv",
|
|
27
|
+
icon_color="text-green-600",
|
|
28
|
+
config_fields=[
|
|
29
|
+
# File configuration
|
|
30
|
+
ConfigField(
|
|
31
|
+
name="csvs",
|
|
32
|
+
label="CSV Files",
|
|
33
|
+
type="text",
|
|
34
|
+
required=False,
|
|
35
|
+
placeholder="/path/to/file1.csv,/path/to/file2.csv",
|
|
36
|
+
description="List of CSV file paths to work with (comma-separated)",
|
|
37
|
+
),
|
|
38
|
+
ConfigField(
|
|
39
|
+
name="row_limit",
|
|
40
|
+
label="Row Limit",
|
|
41
|
+
type="number",
|
|
42
|
+
required=False,
|
|
43
|
+
placeholder="1000",
|
|
44
|
+
description="Maximum number of rows to read from CSV files",
|
|
45
|
+
),
|
|
46
|
+
# Feature toggles
|
|
47
|
+
ConfigField(
|
|
48
|
+
name="read_csvs",
|
|
49
|
+
label="Read CSVs",
|
|
50
|
+
type="boolean",
|
|
51
|
+
required=False,
|
|
52
|
+
default=True,
|
|
53
|
+
description="Enable reading CSV file contents",
|
|
54
|
+
),
|
|
55
|
+
ConfigField(
|
|
56
|
+
name="list_csvs",
|
|
57
|
+
label="List CSVs",
|
|
58
|
+
type="boolean",
|
|
59
|
+
required=False,
|
|
60
|
+
default=True,
|
|
61
|
+
description="Enable listing available CSV files",
|
|
62
|
+
),
|
|
63
|
+
ConfigField(
|
|
64
|
+
name="query_csvs",
|
|
65
|
+
label="Query CSVs",
|
|
66
|
+
type="boolean",
|
|
67
|
+
required=False,
|
|
68
|
+
default=True,
|
|
69
|
+
description="Enable SQL querying of CSV files (requires DuckDB)",
|
|
70
|
+
),
|
|
71
|
+
ConfigField(
|
|
72
|
+
name="read_column_names",
|
|
73
|
+
label="Read Column Names",
|
|
74
|
+
type="boolean",
|
|
75
|
+
required=False,
|
|
76
|
+
default=True,
|
|
77
|
+
description="Enable reading column names from CSV files",
|
|
78
|
+
),
|
|
79
|
+
# DuckDB configuration
|
|
80
|
+
ConfigField(
|
|
81
|
+
name="duckdb_connection",
|
|
82
|
+
label="DuckDB Connection",
|
|
83
|
+
type="text",
|
|
84
|
+
required=False,
|
|
85
|
+
placeholder="Auto-created if not provided",
|
|
86
|
+
description="Existing DuckDB connection object (advanced usage)",
|
|
87
|
+
),
|
|
88
|
+
ConfigField(
|
|
89
|
+
name="duckdb_kwargs",
|
|
90
|
+
label="DuckDB Arguments",
|
|
91
|
+
type="text",
|
|
92
|
+
required=False,
|
|
93
|
+
placeholder='{"memory_limit": "1GB"}',
|
|
94
|
+
description="Additional arguments for DuckDB connection (JSON format)",
|
|
95
|
+
),
|
|
96
|
+
],
|
|
97
|
+
dependencies=["duckdb"],
|
|
98
|
+
docs_url="https://docs.agno.com/tools/toolkits/database/csv",
|
|
99
|
+
)
|
|
100
|
+
def csv_tools() -> type[CsvTools]:
|
|
101
|
+
"""Return CSV toolkit for data analysis and querying."""
|
|
102
|
+
from agno.tools.csv_toolkit import CsvTools
|
|
103
|
+
|
|
104
|
+
return CsvTools
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
"""Custom API 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.api import CustomApiTools
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
@register_tool_with_metadata(
|
|
14
|
+
name="custom_api",
|
|
15
|
+
display_name="Custom API",
|
|
16
|
+
description="Make HTTP requests to any external API with customizable authentication and parameters",
|
|
17
|
+
category=ToolCategory.DEVELOPMENT,
|
|
18
|
+
status=ToolStatus.AVAILABLE,
|
|
19
|
+
setup_type=SetupType.NONE,
|
|
20
|
+
icon="Globe",
|
|
21
|
+
icon_color="text-blue-500",
|
|
22
|
+
config_fields=[
|
|
23
|
+
# Connection parameters
|
|
24
|
+
ConfigField(
|
|
25
|
+
name="base_url",
|
|
26
|
+
label="Base URL",
|
|
27
|
+
type="url",
|
|
28
|
+
required=False,
|
|
29
|
+
default=None,
|
|
30
|
+
placeholder="https://api.example.com",
|
|
31
|
+
description="Base URL for API calls. If not provided, full URLs must be specified in endpoints",
|
|
32
|
+
),
|
|
33
|
+
# Authentication parameters
|
|
34
|
+
ConfigField(
|
|
35
|
+
name="username",
|
|
36
|
+
label="Username",
|
|
37
|
+
type="text",
|
|
38
|
+
required=False,
|
|
39
|
+
default=None,
|
|
40
|
+
placeholder="username",
|
|
41
|
+
description="Username for basic authentication",
|
|
42
|
+
),
|
|
43
|
+
ConfigField(
|
|
44
|
+
name="password",
|
|
45
|
+
label="Password",
|
|
46
|
+
type="password",
|
|
47
|
+
required=False,
|
|
48
|
+
default=None,
|
|
49
|
+
placeholder="password",
|
|
50
|
+
description="Password for basic authentication",
|
|
51
|
+
),
|
|
52
|
+
ConfigField(
|
|
53
|
+
name="api_key",
|
|
54
|
+
label="API Key",
|
|
55
|
+
type="password",
|
|
56
|
+
required=False,
|
|
57
|
+
default=None,
|
|
58
|
+
placeholder="sk-...",
|
|
59
|
+
description="API key for bearer token authentication",
|
|
60
|
+
),
|
|
61
|
+
# Headers configuration
|
|
62
|
+
ConfigField(
|
|
63
|
+
name="headers",
|
|
64
|
+
label="Default Headers",
|
|
65
|
+
type="text",
|
|
66
|
+
required=False,
|
|
67
|
+
default=None,
|
|
68
|
+
placeholder='{"Content-Type": "application/json"}',
|
|
69
|
+
description="Default headers to include in requests (JSON format)",
|
|
70
|
+
),
|
|
71
|
+
# Configuration parameters
|
|
72
|
+
ConfigField(
|
|
73
|
+
name="verify_ssl",
|
|
74
|
+
label="Verify SSL",
|
|
75
|
+
type="boolean",
|
|
76
|
+
required=False,
|
|
77
|
+
default=True,
|
|
78
|
+
description="Whether to verify SSL certificates for HTTPS requests",
|
|
79
|
+
),
|
|
80
|
+
ConfigField(
|
|
81
|
+
name="timeout",
|
|
82
|
+
label="Timeout",
|
|
83
|
+
type="number",
|
|
84
|
+
required=False,
|
|
85
|
+
default=30,
|
|
86
|
+
placeholder="30",
|
|
87
|
+
description="Request timeout in seconds",
|
|
88
|
+
),
|
|
89
|
+
# Feature flags
|
|
90
|
+
ConfigField(
|
|
91
|
+
name="make_request",
|
|
92
|
+
label="Enable Make Request",
|
|
93
|
+
type="boolean",
|
|
94
|
+
required=False,
|
|
95
|
+
default=True,
|
|
96
|
+
description="Whether to register the make_request function",
|
|
97
|
+
),
|
|
98
|
+
],
|
|
99
|
+
dependencies=["requests"],
|
|
100
|
+
docs_url="https://docs.agno.com/tools/toolkits/others/custom_api",
|
|
101
|
+
)
|
|
102
|
+
def custom_api_tools() -> type[CustomApiTools]:
|
|
103
|
+
"""Return Custom API tools for making HTTP requests to external APIs."""
|
|
104
|
+
from agno.tools.api import CustomApiTools
|
|
105
|
+
|
|
106
|
+
return CustomApiTools
|