Merge pull request #16 from okapteinis/claude/pr-review-maintainability-01WNkTGGrYURxe9JATA3gX6y

Consolidate connector metadata and fix return type hint
This commit is contained in:
Ojārs Kapteinis 2025-11-19 01:19:31 +02:00 committed by GitHub
commit cd2cc27dbf
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 90 additions and 94 deletions

View file

@ -20,57 +20,13 @@ from .configuration import Configuration, SearchMode
from .prompts import get_further_questions_system_prompt from .prompts import get_further_questions_system_prompt
from .qna_agent.graph import graph as qna_agent_graph from .qna_agent.graph import graph as qna_agent_graph
from .state import State from .state import State
from .utils import get_connector_emoji, get_connector_friendly_name from .utils import (
CONNECTOR_EMOJIS,
CONNECTOR_RESULT_NAMES,
# Connector search result metadata get_connector_emoji,
CONNECTOR_EMOJIS = { get_connector_friendly_name,
"YOUTUBE_VIDEO": "📹", get_connector_result_name,
"EXTENSION": "🧩", )
"CRAWLED_URL": "🌐",
"FILE": "📄",
"SLACK_CONNECTOR": "💬",
"NOTION_CONNECTOR": "📘",
"GITHUB_CONNECTOR": "🐙",
"LINEAR_CONNECTOR": "📊",
"TAVILY_API": "🔍",
"SEARXNG_API": "🌐",
"LINKUP_API": "🔗",
"BAIDU_SEARCH_API": "🇨🇳",
"DISCORD_CONNECTOR": "🗨️",
"JIRA_CONNECTOR": "🎫",
"GOOGLE_CALENDAR_CONNECTOR": "📅",
"AIRTABLE_CONNECTOR": "🗃️",
"GOOGLE_GMAIL_CONNECTOR": "📧",
"CONFLUENCE_CONNECTOR": "📚",
"CLICKUP_CONNECTOR": "📋",
"LUMA_CONNECTOR": "🎯",
"ELASTICSEARCH_CONNECTOR": "🔎",
}
CONNECTOR_RESULT_NAMES = {
"YOUTUBE_VIDEO": "YouTube chunks",
"EXTENSION": "Browser Extension chunks",
"CRAWLED_URL": "Web Pages chunks",
"FILE": "Files chunks",
"SLACK_CONNECTOR": "Slack messages",
"NOTION_CONNECTOR": "Notion pages/blocks",
"GITHUB_CONNECTOR": "GitHub files/issues",
"LINEAR_CONNECTOR": "Linear issues",
"TAVILY_API": "Web Search results",
"SEARXNG_API": "SearxNG results",
"LINKUP_API": "Linkup results",
"BAIDU_SEARCH_API": "Baidu Search results",
"DISCORD_CONNECTOR": "Discord messages",
"JIRA_CONNECTOR": "Jira issues",
"GOOGLE_CALENDAR_CONNECTOR": "calendar events",
"AIRTABLE_CONNECTOR": "Airtable records",
"GOOGLE_GMAIL_CONNECTOR": "Gmail messages",
"CONFLUENCE_CONNECTOR": "Confluence pages",
"CLICKUP_CONNECTOR": "ClickUp tasks",
"LUMA_CONNECTOR": "Luma events",
"ELASTICSEARCH_CONNECTOR": "Elasticsearch chunks",
}
async def search_single_connector( async def search_single_connector(
@ -81,10 +37,10 @@ async def search_single_connector(
search_space_id: int, search_space_id: int,
top_k: int, top_k: int,
search_mode: SearchMode, search_mode: SearchMode,
) -> tuple[str, Any, list]: ) -> tuple[str, Any | None, list, str | None]:
""" """
Search a single connector and return results. Search a single connector and return results.
Returns (connector_name, source_object, chunks). Returns (connector_name, source_object, chunks, error).
""" """
source_object = None source_object = None
chunks = [] chunks = []

View file

@ -14,53 +14,93 @@ class DocumentTokenInfo(NamedTuple):
token_count: int token_count: int
# Centralized connector metadata - single source of truth
CONNECTOR_EMOJIS = {
"YOUTUBE_VIDEO": "📹",
"EXTENSION": "🧩",
"CRAWLED_URL": "🌐",
"FILE": "📄",
"SLACK_CONNECTOR": "💬",
"NOTION_CONNECTOR": "📘",
"GITHUB_CONNECTOR": "🐙",
"LINEAR_CONNECTOR": "📊",
"TAVILY_API": "🔍",
"SEARXNG_API": "🌐",
"LINKUP_API": "🔗",
"BAIDU_SEARCH_API": "🇨🇳",
"DISCORD_CONNECTOR": "🗨️",
"JIRA_CONNECTOR": "🎫",
"GOOGLE_CALENDAR_CONNECTOR": "📅",
"AIRTABLE_CONNECTOR": "🗃️",
"GOOGLE_GMAIL_CONNECTOR": "📧",
"CONFLUENCE_CONNECTOR": "📚",
"CLICKUP_CONNECTOR": "📋",
"LUMA_CONNECTOR": "🎯",
"ELASTICSEARCH_CONNECTOR": "🔎",
}
CONNECTOR_RESULT_NAMES = {
"YOUTUBE_VIDEO": "YouTube chunks",
"EXTENSION": "Browser Extension chunks",
"CRAWLED_URL": "Web Pages chunks",
"FILE": "Files chunks",
"SLACK_CONNECTOR": "Slack messages",
"NOTION_CONNECTOR": "Notion pages/blocks",
"GITHUB_CONNECTOR": "GitHub files/issues",
"LINEAR_CONNECTOR": "Linear issues",
"TAVILY_API": "Web Search results",
"SEARXNG_API": "SearxNG results",
"LINKUP_API": "Linkup results",
"BAIDU_SEARCH_API": "Baidu Search results",
"DISCORD_CONNECTOR": "Discord messages",
"JIRA_CONNECTOR": "Jira issues",
"GOOGLE_CALENDAR_CONNECTOR": "calendar events",
"AIRTABLE_CONNECTOR": "Airtable records",
"GOOGLE_GMAIL_CONNECTOR": "Gmail messages",
"CONFLUENCE_CONNECTOR": "Confluence pages",
"CLICKUP_CONNECTOR": "ClickUp tasks",
"LUMA_CONNECTOR": "Luma events",
"ELASTICSEARCH_CONNECTOR": "Elasticsearch chunks",
}
CONNECTOR_FRIENDLY_NAMES = {
"YOUTUBE_VIDEO": "YouTube",
"EXTENSION": "Browser Extension",
"CRAWLED_URL": "Web Pages",
"FILE": "Files",
"SLACK_CONNECTOR": "Slack",
"NOTION_CONNECTOR": "Notion",
"GITHUB_CONNECTOR": "GitHub",
"LINEAR_CONNECTOR": "Linear",
"JIRA_CONNECTOR": "Jira",
"CONFLUENCE_CONNECTOR": "Confluence",
"GOOGLE_CALENDAR_CONNECTOR": "Google Calendar",
"DISCORD_CONNECTOR": "Discord",
"TAVILY_API": "Tavily Search",
"SEARXNG_API": "SearxNG Search",
"LINKUP_API": "Linkup Search",
"BAIDU_SEARCH_API": "Baidu Search",
"AIRTABLE_CONNECTOR": "Airtable",
"GOOGLE_GMAIL_CONNECTOR": "Gmail",
"CLICKUP_CONNECTOR": "ClickUp",
"LUMA_CONNECTOR": "Luma",
"ELASTICSEARCH_CONNECTOR": "Elasticsearch",
}
def get_connector_emoji(connector_name: str) -> str: def get_connector_emoji(connector_name: str) -> str:
"""Get an appropriate emoji for a connector type.""" """Get an appropriate emoji for a connector type."""
connector_emojis = { return CONNECTOR_EMOJIS.get(connector_name, "🔎")
"YOUTUBE_VIDEO": "📹",
"EXTENSION": "🧩",
"CRAWLED_URL": "🌐",
"FILE": "📄",
"SLACK_CONNECTOR": "💬",
"NOTION_CONNECTOR": "📘",
"GITHUB_CONNECTOR": "🐙",
"LINEAR_CONNECTOR": "📊",
"JIRA_CONNECTOR": "🎫",
"DISCORD_CONNECTOR": "🗨️",
"TAVILY_API": "🔍",
"LINKUP_API": "🔗",
"BAIDU_SEARCH_API": "🇨🇳",
"GOOGLE_CALENDAR_CONNECTOR": "📅",
"AIRTABLE_CONNECTOR": "🗃️",
"LUMA_CONNECTOR": "",
"ELASTICSEARCH_CONNECTOR": "",
}
return connector_emojis.get(connector_name, "🔎")
def get_connector_friendly_name(connector_name: str) -> str: def get_connector_friendly_name(connector_name: str) -> str:
"""Convert technical connector IDs to user-friendly names.""" """Convert technical connector IDs to user-friendly names."""
connector_friendly_names = { return CONNECTOR_FRIENDLY_NAMES.get(connector_name, connector_name)
"YOUTUBE_VIDEO": "YouTube",
"EXTENSION": "Browser Extension",
"CRAWLED_URL": "Web Pages", def get_connector_result_name(connector_name: str) -> str:
"FILE": "Files", """Get the result type name for a connector (e.g., 'Slack messages')."""
"SLACK_CONNECTOR": "Slack", return CONNECTOR_RESULT_NAMES.get(connector_name, "chunks")
"NOTION_CONNECTOR": "Notion",
"GITHUB_CONNECTOR": "GitHub",
"LINEAR_CONNECTOR": "Linear",
"JIRA_CONNECTOR": "Jira",
"CONFLUENCE_CONNECTOR": "Confluence",
"GOOGLE_CALENDAR_CONNECTOR": "Google Calendar",
"DISCORD_CONNECTOR": "Discord",
"TAVILY_API": "Tavily Search",
"LINKUP_API": "Linkup Search",
"BAIDU_SEARCH_API": "Baidu Search",
"AIRTABLE_CONNECTOR": "Airtable",
"LUMA_CONNECTOR": "Luma",
"ELASTICSEARCH_CONNECTOR": "Elasticsearch",
}
return connector_friendly_names.get(connector_name, connector_name)
def convert_langchain_messages_to_dict( def convert_langchain_messages_to_dict(