mirror of
https://github.com/tinyhumansai/openhuman.git
synced 2026-07-28 13:32:23 +00:00
feat(composio): add Linear provider for Memory Tree ingest (#2402)
Co-authored-by: Steven Enamakel <enamakel@tinyhumans.ai>
This commit is contained in:
co-authored by
Steven Enamakel
parent
1cb6a14686
commit
5b297251bb
@@ -208,9 +208,31 @@ const de5: TranslationMap = {
|
||||
'settings.developerMenu.composioRouting.title': 'Composio Routing (Direktmodus)',
|
||||
'settings.developerMenu.composioRouting.desc':
|
||||
'Bring deinen eigenen Composio API-Schlüssel mit und leite Anrufe direkt an backend.composio.dev weiter',
|
||||
'settings.developerMenu.mcpServer.title': 'MCP Server',
|
||||
'settings.developerMenu.mcpServer.desc':
|
||||
'Konfiguriere externe MCP-Clients für die Verbindung mit OpenHuman',
|
||||
'settings.developerMenu.integrationTriggers.title': 'Integrationsauslöser',
|
||||
'settings.developerMenu.integrationTriggers.desc':
|
||||
'Konfiguriere KI-Triage-Einstellungen für Composio-Integrationsauslöser',
|
||||
'settings.mcpServer.title': 'MCP-Server',
|
||||
'settings.mcpServer.toolsSectionTitle': 'Verfügbare Werkzeuge',
|
||||
'settings.mcpServer.toolsSectionDesc':
|
||||
'Werkzeuge, die über den MCP-Stdio-Server beim Ausführen von openhuman-core mcp bereitgestellt werden',
|
||||
'settings.mcpServer.configSectionTitle': 'Client-Konfiguration',
|
||||
'settings.mcpServer.configSectionDesc':
|
||||
'Wähle deinen MCP-Client aus, um das richtige Konfigurations-Snippet zu generieren',
|
||||
'settings.mcpServer.copySnippet': 'In die Zwischenablage kopieren',
|
||||
'settings.mcpServer.copied': 'Kopiert!',
|
||||
'settings.mcpServer.openConfigFile': 'Konfigurationsdatei öffnen',
|
||||
'settings.mcpServer.binaryPathNotFound':
|
||||
'OpenHuman-Binärdatei nicht gefunden. Wenn du aus dem Quellcode arbeitest, baue sie mit: cargo build --bin openhuman-core',
|
||||
'settings.mcpServer.openConfigError': 'Konfigurationsdatei konnte nicht geöffnet werden',
|
||||
'settings.mcpServer.clientClaudeDesktop': 'Claude Desktop',
|
||||
'settings.mcpServer.clientCursor': 'Cursor',
|
||||
'settings.mcpServer.clientCodex': 'Codex',
|
||||
'settings.mcpServer.clientZed': 'Zed',
|
||||
'settings.mcpServer.configFilePath': 'Konfigurationsdatei',
|
||||
'settings.mcpServer.clientSelectorAriaLabel': 'MCP-Client-Auswahl',
|
||||
'settings.appearance.menuDesc': 'Wähle hell, dunkel oder passend zu deinem Systemthema',
|
||||
'settings.mascot.active': 'Aktiv',
|
||||
'settings.mascot.characterDesc': 'Charakterbeschreibung',
|
||||
|
||||
@@ -31,4 +31,8 @@ pub use super::catalogs_microsoft::{EXCEL_CURATED, ONE_DRIVE_CURATED};
|
||||
pub use super::catalogs_productivity::{
|
||||
ASANA_CURATED, DROPBOX_CURATED, JIRA_CURATED, OUTLOOK_CURATED, TODOIST_CURATED, TRELLO_CURATED,
|
||||
};
|
||||
// `LINEAR_CURATED` moved into `super::linear::LINEAR_CURATED` alongside
|
||||
// the native LinearProvider impl. `catalog_for_toolkit("linear")` now
|
||||
// routes there directly. Removing the re-export keeps a single source
|
||||
// of truth and matches how `gmail` / `notion` / `clickup` are wired.
|
||||
pub use super::catalogs_social_media::{SPOTIFY_CURATED, TWITTER_CURATED, YOUTUBE_CURATED};
|
||||
|
||||
@@ -106,6 +106,14 @@ pub const OUTLOOK_CURATED: &[CuratedTool] = &[
|
||||
},
|
||||
];
|
||||
|
||||
// ── linear ──────────────────────────────────────────────────────────
|
||||
//
|
||||
// `LINEAR_CURATED` lives in `super::linear::tools` alongside the native
|
||||
// `LinearProvider` impl (per-issue #2400). `catalog_for_toolkit("linear")`
|
||||
// in `super::mod` routes through that constant directly. Removing the
|
||||
// catalog-only declaration here keeps a single source of truth and
|
||||
// matches how `gmail` / `notion` / `clickup` are wired.
|
||||
|
||||
// ── jira ────────────────────────────────────────────────────────────
|
||||
pub const JIRA_CURATED: &[CuratedTool] = &[
|
||||
CuratedTool {
|
||||
|
||||
@@ -20,7 +20,10 @@ pub fn toolkit_description(slug: &str) -> &'static str {
|
||||
"google_sheets" => "Read, write, and manage Google Sheets spreadsheets",
|
||||
"outlook" => "Send, read, and manage emails in Microsoft Outlook",
|
||||
"microsoft_teams" => "Send messages and manage channels in Microsoft Teams",
|
||||
"linear" => "Create and manage issues, projects, and cycles in Linear; sync assigned issues into Memory Tree",
|
||||
"linear" => {
|
||||
"Create, read, and manage issues, projects, and cycles in Linear; sync \
|
||||
assigned issues into Memory Tree"
|
||||
}
|
||||
"jira" => "Create and manage issues, projects, and sprints in Jira",
|
||||
"trello" => "Create and manage cards, lists, and boards in Trello",
|
||||
"asana" => "Create and manage tasks, projects, and sections in Asana",
|
||||
|
||||
@@ -187,6 +187,7 @@ pub fn catalog_for_toolkit(toolkit: &str) -> Option<&'static [CuratedTool]> {
|
||||
"gmail" => Some(gmail::GMAIL_CURATED),
|
||||
"notion" => Some(notion::NOTION_CURATED),
|
||||
"github" => Some(github::GITHUB_CURATED),
|
||||
"linear" => Some(linear::LINEAR_CURATED),
|
||||
// Catalog-only toolkits
|
||||
"slack" => Some(catalogs::SLACK_CURATED),
|
||||
"discord" => Some(catalogs::DISCORD_CURATED),
|
||||
@@ -197,7 +198,6 @@ pub fn catalog_for_toolkit(toolkit: &str) -> Option<&'static [CuratedTool]> {
|
||||
"outlook" => Some(catalogs::OUTLOOK_CURATED),
|
||||
// MICROSOFT_TEAMS_* slugs extract to "microsoft" via toolkit_from_slug.
|
||||
"microsoft" | "microsoft_teams" => Some(catalogs::MICROSOFT_TEAMS_CURATED),
|
||||
"linear" => Some(linear::LINEAR_CURATED),
|
||||
"jira" => Some(catalogs::JIRA_CURATED),
|
||||
"trello" => Some(catalogs::TRELLO_CURATED),
|
||||
"asana" => Some(catalogs::ASANA_CURATED),
|
||||
@@ -473,15 +473,14 @@ mod tests {
|
||||
|
||||
#[test]
|
||||
fn capability_matrix_includes_linear_as_native_memory_provider() {
|
||||
// Locks in the per-issue #2400 registration: a Linear row must
|
||||
// appear in the capability matrix with the same native-provider
|
||||
// flags Gmail/Notion/Slack/ClickUp already carry (`memory_ingest`,
|
||||
// `periodic_sync`, non-zero `sync_interval_secs`). If a future
|
||||
// change drops one of the four registration touchpoints
|
||||
// Per-issue #2400 registration: a Linear row must appear in
|
||||
// the capability matrix as a native memory-ingest provider,
|
||||
// matching gmail / notion / slack / clickup. If a future
|
||||
// change drops one of the five registration touchpoints
|
||||
// (CAPABILITY_TOOLKITS, has_native_provider,
|
||||
// native_provider_sync_interval, catalog_for_toolkit) this test
|
||||
// fails loud rather than silently degrading the provider to
|
||||
// catalog-only status.
|
||||
// native_provider_sync_interval, catalog_for_toolkit,
|
||||
// toolkit_description) this test fails loud rather than
|
||||
// silently degrading the provider to catalog-only status.
|
||||
let matrix = capability_matrix();
|
||||
let linear = matrix
|
||||
.iter()
|
||||
|
||||
Reference in New Issue
Block a user