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,112 @@
|
|
|
1
|
+
"""Financial Datasets 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.financial_datasets import FinancialDatasetsTools
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
@register_tool_with_metadata(
|
|
14
|
+
name="financial_datasets_api",
|
|
15
|
+
display_name="Financial Datasets API",
|
|
16
|
+
description="Comprehensive financial data API for stocks, financial statements, SEC filings, and cryptocurrency",
|
|
17
|
+
category=ToolCategory.DEVELOPMENT, # From /tools/toolkits/others/ path
|
|
18
|
+
status=ToolStatus.REQUIRES_CONFIG, # Requires API key
|
|
19
|
+
setup_type=SetupType.API_KEY, # Uses API key authentication
|
|
20
|
+
icon="TrendingUp", # Financial/trending icon
|
|
21
|
+
icon_color="text-green-600", # Financial green color
|
|
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="Financial Datasets API key (can also be set via FINANCIAL_DATASETS_API_KEY env var)",
|
|
31
|
+
),
|
|
32
|
+
# Financial Statements
|
|
33
|
+
ConfigField(
|
|
34
|
+
name="enable_financial_statements",
|
|
35
|
+
label="Enable Financial Statements",
|
|
36
|
+
type="boolean",
|
|
37
|
+
required=False,
|
|
38
|
+
default=True,
|
|
39
|
+
description="Enable financial statement related functions (income statements, balance sheets, cash flow)",
|
|
40
|
+
),
|
|
41
|
+
# Company Information
|
|
42
|
+
ConfigField(
|
|
43
|
+
name="enable_company_info",
|
|
44
|
+
label="Enable Company Info",
|
|
45
|
+
type="boolean",
|
|
46
|
+
required=False,
|
|
47
|
+
default=True,
|
|
48
|
+
description="Enable company information related functions",
|
|
49
|
+
),
|
|
50
|
+
# Market Data
|
|
51
|
+
ConfigField(
|
|
52
|
+
name="enable_market_data",
|
|
53
|
+
label="Enable Market Data",
|
|
54
|
+
type="boolean",
|
|
55
|
+
required=False,
|
|
56
|
+
default=True,
|
|
57
|
+
description="Enable market data related functions (stock prices, earnings, metrics)",
|
|
58
|
+
),
|
|
59
|
+
# Ownership Data
|
|
60
|
+
ConfigField(
|
|
61
|
+
name="enable_ownership_data",
|
|
62
|
+
label="Enable Ownership Data",
|
|
63
|
+
type="boolean",
|
|
64
|
+
required=False,
|
|
65
|
+
default=True,
|
|
66
|
+
description="Enable ownership data related functions (insider trades, institutional ownership)",
|
|
67
|
+
),
|
|
68
|
+
# News
|
|
69
|
+
ConfigField(
|
|
70
|
+
name="enable_news",
|
|
71
|
+
label="Enable News",
|
|
72
|
+
type="boolean",
|
|
73
|
+
required=False,
|
|
74
|
+
default=True,
|
|
75
|
+
description="Enable news related functions",
|
|
76
|
+
),
|
|
77
|
+
# SEC Filings
|
|
78
|
+
ConfigField(
|
|
79
|
+
name="enable_sec_filings",
|
|
80
|
+
label="Enable SEC Filings",
|
|
81
|
+
type="boolean",
|
|
82
|
+
required=False,
|
|
83
|
+
default=True,
|
|
84
|
+
description="Enable SEC filings related functions",
|
|
85
|
+
),
|
|
86
|
+
# Cryptocurrency
|
|
87
|
+
ConfigField(
|
|
88
|
+
name="enable_crypto",
|
|
89
|
+
label="Enable Crypto",
|
|
90
|
+
type="boolean",
|
|
91
|
+
required=False,
|
|
92
|
+
default=True,
|
|
93
|
+
description="Enable cryptocurrency related functions",
|
|
94
|
+
),
|
|
95
|
+
# Search
|
|
96
|
+
ConfigField(
|
|
97
|
+
name="enable_search",
|
|
98
|
+
label="Enable Search",
|
|
99
|
+
type="boolean",
|
|
100
|
+
required=False,
|
|
101
|
+
default=True,
|
|
102
|
+
description="Enable search related functions",
|
|
103
|
+
),
|
|
104
|
+
],
|
|
105
|
+
dependencies=["requests"], # Only standard dependency needed
|
|
106
|
+
docs_url="https://docs.agno.com/tools/toolkits/others/financial_datasets",
|
|
107
|
+
)
|
|
108
|
+
def financial_datasets_api_tools() -> type[FinancialDatasetsTools]:
|
|
109
|
+
"""Return Financial Datasets API tools for comprehensive financial data access."""
|
|
110
|
+
from agno.tools.financial_datasets import FinancialDatasetsTools
|
|
111
|
+
|
|
112
|
+
return FinancialDatasetsTools
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
"""Firecrawl 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.firecrawl import FirecrawlTools
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
@register_tool_with_metadata(
|
|
20
|
+
name="firecrawl",
|
|
21
|
+
display_name="Firecrawl",
|
|
22
|
+
description="Web scraping and crawling tool for extracting content from websites",
|
|
23
|
+
category=ToolCategory.RESEARCH, # Web scraping tool for research
|
|
24
|
+
status=ToolStatus.REQUIRES_CONFIG, # Requires API key
|
|
25
|
+
setup_type=SetupType.API_KEY, # API key authentication
|
|
26
|
+
icon="FaSpider", # Web crawler icon
|
|
27
|
+
icon_color="text-orange-500", # Orange color for fire/crawling theme
|
|
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="fc-...",
|
|
36
|
+
description="Firecrawl API key for authentication (can also be set via FIRECRAWL_API_KEY env var)",
|
|
37
|
+
),
|
|
38
|
+
ConfigField(
|
|
39
|
+
name="api_url",
|
|
40
|
+
label="API URL",
|
|
41
|
+
type="url",
|
|
42
|
+
required=False,
|
|
43
|
+
default="https://api.firecrawl.dev",
|
|
44
|
+
placeholder="https://api.firecrawl.dev",
|
|
45
|
+
description="Firecrawl API endpoint URL",
|
|
46
|
+
),
|
|
47
|
+
# Configuration parameters
|
|
48
|
+
ConfigField(
|
|
49
|
+
name="formats",
|
|
50
|
+
label="Output Formats",
|
|
51
|
+
type="text",
|
|
52
|
+
required=False,
|
|
53
|
+
placeholder="markdown,html,text",
|
|
54
|
+
description="Comma-separated list of output formats (e.g., markdown, html, text)",
|
|
55
|
+
),
|
|
56
|
+
ConfigField(
|
|
57
|
+
name="limit",
|
|
58
|
+
label="Crawl Limit",
|
|
59
|
+
type="number",
|
|
60
|
+
required=False,
|
|
61
|
+
default=10,
|
|
62
|
+
placeholder="10",
|
|
63
|
+
description="Maximum number of pages to crawl",
|
|
64
|
+
),
|
|
65
|
+
ConfigField(
|
|
66
|
+
name="poll_interval",
|
|
67
|
+
label="Poll Interval",
|
|
68
|
+
type="number",
|
|
69
|
+
required=False,
|
|
70
|
+
default=30,
|
|
71
|
+
placeholder="30",
|
|
72
|
+
description="Polling interval in seconds for crawl operations",
|
|
73
|
+
),
|
|
74
|
+
ConfigField(
|
|
75
|
+
name="search_params",
|
|
76
|
+
label="Search Parameters",
|
|
77
|
+
type="text",
|
|
78
|
+
required=False,
|
|
79
|
+
placeholder='{"location": "US", "language": "en"}',
|
|
80
|
+
description="Additional search parameters as JSON string",
|
|
81
|
+
),
|
|
82
|
+
# Feature flags/boolean parameters grouped by functionality
|
|
83
|
+
# Core Operations
|
|
84
|
+
ConfigField(
|
|
85
|
+
name="scrape",
|
|
86
|
+
label="Enable Scraping",
|
|
87
|
+
type="boolean",
|
|
88
|
+
required=False,
|
|
89
|
+
default=True,
|
|
90
|
+
description="Enable website scraping functionality",
|
|
91
|
+
),
|
|
92
|
+
ConfigField(
|
|
93
|
+
name="crawl",
|
|
94
|
+
label="Enable Crawling",
|
|
95
|
+
type="boolean",
|
|
96
|
+
required=False,
|
|
97
|
+
default=False,
|
|
98
|
+
description="Enable website crawling functionality",
|
|
99
|
+
),
|
|
100
|
+
ConfigField(
|
|
101
|
+
name="mapping",
|
|
102
|
+
label="Enable Mapping",
|
|
103
|
+
type="boolean",
|
|
104
|
+
required=False,
|
|
105
|
+
default=False,
|
|
106
|
+
description="Enable website structure mapping functionality",
|
|
107
|
+
),
|
|
108
|
+
ConfigField(
|
|
109
|
+
name="search",
|
|
110
|
+
label="Enable Search",
|
|
111
|
+
type="boolean",
|
|
112
|
+
required=False,
|
|
113
|
+
default=False,
|
|
114
|
+
description="Enable web search functionality",
|
|
115
|
+
),
|
|
116
|
+
],
|
|
117
|
+
dependencies=["firecrawl-py"],
|
|
118
|
+
docs_url="https://docs.agno.com/tools/toolkits/web_scrape/firecrawl",
|
|
119
|
+
)
|
|
120
|
+
def firecrawl_tools() -> type[FirecrawlTools]:
|
|
121
|
+
"""Return Firecrawl tools for web scraping and crawling."""
|
|
122
|
+
from agno.tools.firecrawl import FirecrawlTools
|
|
123
|
+
|
|
124
|
+
return FirecrawlTools
|
mindroom/tools/gemini.py
ADDED
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
"""Gemini 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.gemini import GeminiTools
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
@register_tool_with_metadata(
|
|
14
|
+
name="gemini",
|
|
15
|
+
display_name="Gemini",
|
|
16
|
+
description="Google AI API services for generating images and videos using Gemini models",
|
|
17
|
+
category=ToolCategory.DEVELOPMENT,
|
|
18
|
+
status=ToolStatus.REQUIRES_CONFIG,
|
|
19
|
+
setup_type=SetupType.API_KEY,
|
|
20
|
+
icon="FaGoogle",
|
|
21
|
+
icon_color="text-blue-500",
|
|
22
|
+
config_fields=[
|
|
23
|
+
# Authentication
|
|
24
|
+
ConfigField(
|
|
25
|
+
name="api_key",
|
|
26
|
+
label="API Key",
|
|
27
|
+
type="password",
|
|
28
|
+
required=False,
|
|
29
|
+
placeholder="AIza...",
|
|
30
|
+
description="Google AI API key for authentication (can also be set via GOOGLE_API_KEY env var)",
|
|
31
|
+
),
|
|
32
|
+
# Vertex AI configuration
|
|
33
|
+
ConfigField(
|
|
34
|
+
name="vertexai",
|
|
35
|
+
label="Use Vertex AI",
|
|
36
|
+
type="boolean",
|
|
37
|
+
required=False,
|
|
38
|
+
default=False,
|
|
39
|
+
description="Enable Vertex AI API instead of Gemini API (required for video generation)",
|
|
40
|
+
),
|
|
41
|
+
ConfigField(
|
|
42
|
+
name="project_id",
|
|
43
|
+
label="Project ID",
|
|
44
|
+
type="text",
|
|
45
|
+
required=False,
|
|
46
|
+
placeholder="my-project-123",
|
|
47
|
+
description="Google Cloud project ID (for Vertex AI, can also be set via GOOGLE_CLOUD_PROJECT env var)",
|
|
48
|
+
),
|
|
49
|
+
ConfigField(
|
|
50
|
+
name="location",
|
|
51
|
+
label="Location",
|
|
52
|
+
type="text",
|
|
53
|
+
required=False,
|
|
54
|
+
default="us-central1",
|
|
55
|
+
placeholder="us-central1",
|
|
56
|
+
description="Google Cloud location/region (for Vertex AI, can also be set via GOOGLE_CLOUD_LOCATION env var)",
|
|
57
|
+
),
|
|
58
|
+
# Model configuration
|
|
59
|
+
ConfigField(
|
|
60
|
+
name="image_generation_model",
|
|
61
|
+
label="Image Generation Model",
|
|
62
|
+
type="text",
|
|
63
|
+
required=False,
|
|
64
|
+
default="imagen-3.0-generate-002",
|
|
65
|
+
placeholder="imagen-3.0-generate-002",
|
|
66
|
+
description="Model to use for image generation",
|
|
67
|
+
),
|
|
68
|
+
ConfigField(
|
|
69
|
+
name="video_generation_model",
|
|
70
|
+
label="Video Generation Model",
|
|
71
|
+
type="text",
|
|
72
|
+
required=False,
|
|
73
|
+
default="veo-2.0-generate-001",
|
|
74
|
+
placeholder="veo-2.0-generate-001",
|
|
75
|
+
description="Model to use for video generation (requires Vertex AI)",
|
|
76
|
+
),
|
|
77
|
+
],
|
|
78
|
+
dependencies=["google-genai"],
|
|
79
|
+
docs_url="https://docs.agno.com/tools/toolkits/models/gemini",
|
|
80
|
+
)
|
|
81
|
+
def gemini_tools() -> type[GeminiTools]:
|
|
82
|
+
"""Return Gemini tools for image and video generation."""
|
|
83
|
+
from agno.tools.models.gemini import GeminiTools
|
|
84
|
+
|
|
85
|
+
return GeminiTools
|
mindroom/tools/giphy.py
ADDED
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
"""Giphy 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.giphy import GiphyTools
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
@register_tool_with_metadata(
|
|
14
|
+
name="giphy",
|
|
15
|
+
display_name="Giphy",
|
|
16
|
+
description="GIF search and integration",
|
|
17
|
+
category=ToolCategory.DEVELOPMENT,
|
|
18
|
+
status=ToolStatus.REQUIRES_CONFIG,
|
|
19
|
+
setup_type=SetupType.API_KEY,
|
|
20
|
+
icon="GiGift",
|
|
21
|
+
icon_color="text-purple-500",
|
|
22
|
+
config_fields=[
|
|
23
|
+
# Authentication
|
|
24
|
+
ConfigField(
|
|
25
|
+
name="api_key",
|
|
26
|
+
label="API Key",
|
|
27
|
+
type="password",
|
|
28
|
+
required=False,
|
|
29
|
+
placeholder="dc6zaTOxFJmzC",
|
|
30
|
+
description="Giphy API key (can also be set via GIPHY_API_KEY env var)",
|
|
31
|
+
),
|
|
32
|
+
# Search configuration
|
|
33
|
+
ConfigField(
|
|
34
|
+
name="limit",
|
|
35
|
+
label="GIF Limit",
|
|
36
|
+
type="number",
|
|
37
|
+
required=False,
|
|
38
|
+
default=1,
|
|
39
|
+
description="Number of GIFs to return in search results",
|
|
40
|
+
),
|
|
41
|
+
],
|
|
42
|
+
dependencies=["httpx"],
|
|
43
|
+
docs_url="https://docs.agno.com/tools/toolkits/others/giphy",
|
|
44
|
+
)
|
|
45
|
+
def giphy_tools() -> type[GiphyTools]:
|
|
46
|
+
"""Return Giphy tools for GIF search and integration."""
|
|
47
|
+
from agno.tools.giphy import GiphyTools
|
|
48
|
+
|
|
49
|
+
return GiphyTools
|