diff --git a/.claude/commands/add-block.md b/.claude/commands/add-block.md index 6d51062660..e07600c265 100644 --- a/.claude/commands/add-block.md +++ b/.claude/commands/add-block.md @@ -19,7 +19,7 @@ When the user asks you to create a block: ```typescript import { {ServiceName}Icon } from '@/components/icons' import type { BlockConfig } from '@/blocks/types' -import { AuthMode } from '@/blocks/types' +import { AuthMode, IntegrationType } from '@/blocks/types' import { getScopesForService } from '@/lib/oauth/utils' export const {ServiceName}Block: BlockConfig = { @@ -29,6 +29,8 @@ export const {ServiceName}Block: BlockConfig = { longDescription: 'Detailed description for docs', docsLink: 'https://docs.sim.ai/tools/{service}', category: 'tools', // 'tools' | 'blocks' | 'triggers' + integrationType: IntegrationType.X, // Primary category (see IntegrationType enum) + tags: ['oauth', 'api'], // Cross-cutting tags (see IntegrationTag type) bgColor: '#HEXCOLOR', // Brand color icon: {ServiceName}Icon, @@ -629,7 +631,7 @@ export const registry: Record = { ```typescript import { ServiceIcon } from '@/components/icons' import type { BlockConfig } from '@/blocks/types' -import { AuthMode } from '@/blocks/types' +import { AuthMode, IntegrationType } from '@/blocks/types' import { getScopesForService } from '@/lib/oauth/utils' export const ServiceBlock: BlockConfig = { @@ -639,6 +641,8 @@ export const ServiceBlock: BlockConfig = { longDescription: 'Full description for documentation...', docsLink: 'https://docs.sim.ai/tools/service', category: 'tools', + integrationType: IntegrationType.DeveloperTools, + tags: ['oauth', 'api'], bgColor: '#FF6B6B', icon: ServiceIcon, authMode: AuthMode.OAuth, @@ -796,6 +800,8 @@ All tool IDs referenced in `tools.access` and returned by `tools.config.tool` MU ## Checklist Before Finishing +- [ ] `integrationType` is set to the correct `IntegrationType` enum value +- [ ] `tags` array includes all applicable `IntegrationTag` values - [ ] All subBlocks have `id`, `title` (except switch), and `type` - [ ] Conditions use correct syntax (field, value, not, and) - [ ] DependsOn set for fields that need other values diff --git a/.claude/commands/add-integration.md b/.claude/commands/add-integration.md index c990f39a7b..c0fb91e7fa 100644 --- a/.claude/commands/add-integration.md +++ b/.claude/commands/add-integration.md @@ -113,7 +113,7 @@ export const {service}{Action}Tool: ToolConfig = { ```typescript import { {Service}Icon } from '@/components/icons' import type { BlockConfig } from '@/blocks/types' -import { AuthMode } from '@/blocks/types' +import { AuthMode, IntegrationType } from '@/blocks/types' import { getScopesForService } from '@/lib/oauth/utils' export const {Service}Block: BlockConfig = { @@ -123,6 +123,8 @@ export const {Service}Block: BlockConfig = { longDescription: '...', docsLink: 'https://docs.sim.ai/tools/{service}', category: 'tools', + integrationType: IntegrationType.X, // Primary category (see IntegrationType enum) + tags: ['oauth', 'api'], // Cross-cutting tags (see IntegrationTag type) bgColor: '#HEXCOLOR', icon: {Service}Icon, authMode: AuthMode.OAuth, // or AuthMode.ApiKey @@ -410,6 +412,8 @@ If creating V2 versions (API-aligned outputs): ### Block - [ ] Created `blocks/blocks/{service}.ts` +- [ ] Set `integrationType` to the correct `IntegrationType` enum value +- [ ] Set `tags` array with all applicable `IntegrationTag` values - [ ] Defined operation dropdown with all operations - [ ] Added credential field with `requiredScopes: getScopesForService('{service}')` - [ ] Added conditional fields per operation diff --git a/apps/sim/app/(landing)/integrations/components/integration-grid.tsx b/apps/sim/app/(landing)/integrations/components/integration-grid.tsx index b06307162d..61975a2951 100644 --- a/apps/sim/app/(landing)/integrations/components/integration-grid.tsx +++ b/apps/sim/app/(landing)/integrations/components/integration-grid.tsx @@ -6,54 +6,132 @@ import { blockTypeToIconMap } from '@/app/(landing)/integrations/data/icon-mappi import type { Integration } from '@/app/(landing)/integrations/data/types' import { IntegrationCard } from './integration-card' +const CATEGORY_LABELS: Record = { + ai: 'AI', + analytics: 'Analytics', + automation: 'Automation', + communication: 'Communication', + crm: 'CRM', + 'customer-support': 'Customer Support', + databases: 'Databases', + design: 'Design', + 'developer-tools': 'Developer Tools', + documents: 'Documents', + ecommerce: 'E-commerce', + email: 'Email', + 'file-storage': 'File Storage', + hr: 'HR', + media: 'Media', + productivity: 'Productivity', + 'sales-intelligence': 'Sales Intelligence', + search: 'Search', + security: 'Security', + social: 'Social', + other: 'Other', +} as const + interface IntegrationGridProps { integrations: Integration[] } export function IntegrationGrid({ integrations }: IntegrationGridProps) { const [query, setQuery] = useState('') + const [activeCategory, setActiveCategory] = useState(null) + + const availableCategories = useMemo(() => { + const counts = new Map() + for (const i of integrations) { + if (i.integrationType) { + counts.set(i.integrationType, (counts.get(i.integrationType) || 0) + 1) + } + } + return Array.from(counts.entries()) + .sort((a, b) => b[1] - a[1]) + .map(([key]) => key) + }, [integrations]) const filtered = useMemo(() => { + let results = integrations + + if (activeCategory) { + results = results.filter((i) => i.integrationType === activeCategory) + } + const q = query.trim().toLowerCase() - if (!q) return integrations - return integrations.filter( - (i) => - i.name.toLowerCase().includes(q) || - i.description.toLowerCase().includes(q) || - i.operations.some( - (op) => op.name.toLowerCase().includes(q) || op.description.toLowerCase().includes(q) - ) || - i.triggers.some((t) => t.name.toLowerCase().includes(q)) - ) - }, [integrations, query]) + if (q) { + results = results.filter( + (i) => + i.name.toLowerCase().includes(q) || + i.description.toLowerCase().includes(q) || + i.operations.some( + (op) => op.name.toLowerCase().includes(q) || op.description.toLowerCase().includes(q) + ) || + i.triggers.some((t) => t.name.toLowerCase().includes(q)) + ) + } + + return results + }, [integrations, query, activeCategory]) return (
-
-
+ + setQuery(e.target.value)} + className='pl-9' + aria-label='Search integrations' + /> +
+
+ +
+ + {availableCategories.map((cat) => ( + + ))}
{filtered.length === 0 ? (

- No integrations found for “{query}” + No integrations found + {query ? <> for “{query}” : null} + {activeCategory ? <> in {CATEGORY_LABELS[activeCategory] || activeCategory} : null}

) : (
diff --git a/apps/sim/app/(landing)/integrations/data/integrations.json b/apps/sim/app/(landing)/integrations/data/integrations.json index d1048bd260..ee1bedb0da 100644 --- a/apps/sim/app/(landing)/integrations/data/integrations.json +++ b/apps/sim/app/(landing)/integrations/data/integrations.json @@ -50,7 +50,9 @@ "triggers": [], "triggerCount": 0, "authType": "api-key", - "category": "tools" + "category": "tools", + "integrationType": "security", + "tags": ["secrets-management", "identity"] }, { "type": "a2a", @@ -99,7 +101,9 @@ "triggers": [], "triggerCount": 0, "authType": "api-key", - "category": "tools" + "category": "tools", + "integrationType": "developer-tools", + "tags": ["agentic", "automation"] }, { "type": "ahrefs", @@ -148,7 +152,9 @@ "triggers": [], "triggerCount": 0, "authType": "api-key", - "category": "tools" + "category": "tools", + "integrationType": "analytics", + "tags": ["seo", "marketing", "data-analytics"] }, { "type": "airtable", @@ -203,7 +209,9 @@ ], "triggerCount": 1, "authType": "oauth", - "category": "tools" + "category": "tools", + "integrationType": "databases", + "tags": ["spreadsheet", "automation"] }, { "type": "airweave", @@ -219,7 +227,9 @@ "triggers": [], "triggerCount": 0, "authType": "api-key", - "category": "tools" + "category": "tools", + "integrationType": "search", + "tags": ["vector-search", "knowledge-base"] }, { "type": "algolia", @@ -296,7 +306,9 @@ "triggers": [], "triggerCount": 0, "authType": "api-key", - "category": "tools" + "category": "tools", + "integrationType": "search", + "tags": ["vector-search", "knowledge-base"] }, { "type": "dynamodb", @@ -341,7 +353,9 @@ "triggers": [], "triggerCount": 0, "authType": "none", - "category": "tools" + "category": "tools", + "integrationType": "databases", + "tags": ["cloud", "data-warehouse"] }, { "type": "rds", @@ -382,7 +396,9 @@ "triggers": [], "triggerCount": 0, "authType": "none", - "category": "tools" + "category": "tools", + "integrationType": "databases", + "tags": ["cloud", "data-warehouse"] }, { "type": "sqs", @@ -403,7 +419,9 @@ "triggers": [], "triggerCount": 0, "authType": "none", - "category": "tools" + "category": "tools", + "integrationType": "developer-tools", + "tags": ["cloud", "messaging", "automation"] }, { "type": "amplitude", @@ -464,7 +482,9 @@ "triggers": [], "triggerCount": 0, "authType": "api-key", - "category": "tools" + "category": "tools", + "integrationType": "analytics", + "tags": ["data-analytics", "marketing"] }, { "type": "apify", @@ -489,7 +509,9 @@ "triggers": [], "triggerCount": 0, "authType": "api-key", - "category": "tools" + "category": "tools", + "integrationType": "automation", + "tags": ["web-scraping", "automation", "data-analytics"] }, { "type": "apollo", @@ -606,7 +628,9 @@ "triggers": [], "triggerCount": 0, "authType": "api-key", - "category": "tools" + "category": "tools", + "integrationType": "sales-intelligence", + "tags": ["enrichment", "sales-engagement"] }, { "type": "arxiv", @@ -635,7 +659,9 @@ "triggers": [], "triggerCount": 0, "authType": "none", - "category": "tools" + "category": "tools", + "integrationType": "search", + "tags": ["document-processing", "knowledge-base"] }, { "type": "asana", @@ -676,7 +702,9 @@ "triggers": [], "triggerCount": 0, "authType": "oauth", - "category": "tools" + "category": "tools", + "integrationType": "productivity", + "tags": ["project-management", "ticketing", "automation"] }, { "type": "ashby", @@ -836,7 +864,9 @@ ], "triggerCount": 6, "authType": "api-key", - "category": "tools" + "category": "tools", + "integrationType": "hr", + "tags": ["hiring"] }, { "type": "attio", @@ -1104,7 +1134,9 @@ ], "triggerCount": 18, "authType": "oauth", - "category": "tools" + "category": "tools", + "integrationType": "crm", + "tags": ["sales-engagement", "enrichment"] }, { "type": "textract_v2", @@ -1120,7 +1152,9 @@ "triggers": [], "triggerCount": 0, "authType": "none", - "category": "tools" + "category": "tools", + "integrationType": "ai", + "tags": ["document-processing", "ocr", "cloud"] }, { "type": "microsoft_ad", @@ -1189,7 +1223,9 @@ "triggers": [], "triggerCount": 0, "authType": "oauth", - "category": "tools" + "category": "tools", + "integrationType": "security", + "tags": ["identity", "microsoft-365"] }, { "type": "box", @@ -1266,7 +1302,9 @@ "triggers": [], "triggerCount": 0, "authType": "oauth", - "category": "tools" + "category": "tools", + "integrationType": "file-storage", + "tags": ["cloud", "content-management", "e-signatures"] }, { "type": "brandfetch", @@ -1291,7 +1329,9 @@ "triggers": [], "triggerCount": 0, "authType": "api-key", - "category": "tools" + "category": "tools", + "integrationType": "sales-intelligence", + "tags": ["enrichment", "marketing"] }, { "type": "browser_use", @@ -1307,7 +1347,9 @@ "triggers": [], "triggerCount": 0, "authType": "api-key", - "category": "tools" + "category": "tools", + "integrationType": "automation", + "tags": ["web-scraping", "automation", "agentic"] }, { "type": "calcom", @@ -1446,7 +1488,9 @@ ], "triggerCount": 9, "authType": "oauth", - "category": "tools" + "category": "tools", + "integrationType": "productivity", + "tags": ["scheduling", "calendar", "meeting"] }, { "type": "calendly", @@ -1512,7 +1556,9 @@ ], "triggerCount": 4, "authType": "api-key", - "category": "tools" + "category": "tools", + "integrationType": "productivity", + "tags": ["scheduling", "calendar", "meeting"] }, { "type": "circleback", @@ -1544,7 +1590,9 @@ ], "triggerCount": 3, "authType": "none", - "category": "triggers" + "category": "triggers", + "integrationType": "ai", + "tags": ["meeting", "note-taking", "automation"] }, { "type": "clay", @@ -1560,7 +1608,9 @@ "triggers": [], "triggerCount": 0, "authType": "none", - "category": "tools" + "category": "tools", + "integrationType": "sales-intelligence", + "tags": ["enrichment", "sales-engagement", "data-analytics"] }, { "type": "clerk", @@ -1621,7 +1671,9 @@ "triggers": [], "triggerCount": 0, "authType": "none", - "category": "tools" + "category": "tools", + "integrationType": "security", + "tags": ["identity", "automation"] }, { "type": "cloudflare", @@ -1690,7 +1742,9 @@ "triggers": [], "triggerCount": 0, "authType": "api-key", - "category": "tools" + "category": "tools", + "integrationType": "developer-tools", + "tags": ["cloud", "monitoring"] }, { "type": "confluence_v2", @@ -1972,7 +2026,9 @@ ], "triggerCount": 16, "authType": "oauth", - "category": "tools" + "category": "tools", + "integrationType": "documents", + "tags": ["knowledge-base", "content-management", "note-taking"] }, { "type": "cursor_v2", @@ -2017,7 +2073,9 @@ "triggers": [], "triggerCount": 0, "authType": "api-key", - "category": "tools" + "category": "tools", + "integrationType": "developer-tools", + "tags": ["agentic", "automation"] }, { "type": "databricks", @@ -2066,7 +2124,9 @@ "triggers": [], "triggerCount": 0, "authType": "api-key", - "category": "tools" + "category": "tools", + "integrationType": "databases", + "tags": ["data-warehouse", "data-analytics", "cloud"] }, { "type": "datadog", @@ -2131,7 +2191,9 @@ "triggers": [], "triggerCount": 0, "authType": "api-key", - "category": "tools" + "category": "tools", + "integrationType": "analytics", + "tags": ["monitoring", "incident-management", "error-tracking"] }, { "type": "devin", @@ -2164,7 +2226,9 @@ "triggers": [], "triggerCount": 0, "authType": "api-key", - "category": "tools" + "category": "tools", + "integrationType": "developer-tools", + "tags": ["agentic", "automation"] }, { "type": "discord", @@ -2321,7 +2385,9 @@ "triggers": [], "triggerCount": 0, "authType": "none", - "category": "tools" + "category": "tools", + "integrationType": "communication", + "tags": ["messaging", "webhooks", "automation"] }, { "type": "docusign", @@ -2370,7 +2436,9 @@ "triggers": [], "triggerCount": 0, "authType": "oauth", - "category": "tools" + "category": "tools", + "integrationType": "documents", + "tags": ["e-signatures", "document-processing"] }, { "type": "dropbox", @@ -2427,7 +2495,9 @@ "triggers": [], "triggerCount": 0, "authType": "oauth", - "category": "tools" + "category": "tools", + "integrationType": "file-storage", + "tags": ["cloud", "document-processing"] }, { "type": "dspy", @@ -2456,7 +2526,9 @@ "triggers": [], "triggerCount": 0, "authType": "api-key", - "category": "tools" + "category": "tools", + "integrationType": "ai", + "tags": ["llm", "agentic", "automation"] }, { "type": "dub", @@ -2501,7 +2573,9 @@ "triggers": [], "triggerCount": 0, "authType": "api-key", - "category": "tools" + "category": "tools", + "integrationType": "developer-tools", + "tags": ["link-management", "marketing", "data-analytics"] }, { "type": "duckduckgo", @@ -2517,7 +2591,9 @@ "triggers": [], "triggerCount": 0, "authType": "none", - "category": "tools" + "category": "tools", + "integrationType": "search", + "tags": ["web-scraping", "seo"] }, { "type": "elasticsearch", @@ -2586,7 +2662,9 @@ "triggers": [], "triggerCount": 0, "authType": "api-key", - "category": "tools" + "category": "tools", + "integrationType": "databases", + "tags": ["vector-search", "data-analytics"] }, { "type": "elevenlabs", @@ -2602,7 +2680,9 @@ "triggers": [], "triggerCount": 0, "authType": "api-key", - "category": "tools" + "category": "tools", + "integrationType": "media", + "tags": ["text-to-speech"] }, { "type": "openai", @@ -2618,7 +2698,9 @@ "triggers": [], "triggerCount": 0, "authType": "api-key", - "category": "tools" + "category": "tools", + "integrationType": "ai", + "tags": ["llm", "vector-search"] }, { "type": "enrich", @@ -2751,7 +2833,9 @@ "triggers": [], "triggerCount": 0, "authType": "api-key", - "category": "tools" + "category": "tools", + "integrationType": "sales-intelligence", + "tags": ["enrichment", "data-analytics"] }, { "type": "evernote", @@ -2812,7 +2896,9 @@ "triggers": [], "triggerCount": 0, "authType": "api-key", - "category": "tools" + "category": "tools", + "integrationType": "documents", + "tags": ["note-taking", "knowledge-base"] }, { "type": "exa", @@ -2849,7 +2935,9 @@ "triggers": [], "triggerCount": 0, "authType": "api-key", - "category": "tools" + "category": "tools", + "integrationType": "search", + "tags": ["web-scraping", "enrichment"] }, { "type": "fathom", @@ -2897,7 +2985,9 @@ ], "triggerCount": 2, "authType": "api-key", - "category": "tools" + "category": "tools", + "integrationType": "analytics", + "tags": ["meeting", "note-taking"] }, { "type": "file_v3", @@ -2913,7 +3003,9 @@ "triggers": [], "triggerCount": 0, "authType": "none", - "category": "tools" + "category": "tools", + "integrationType": "file-storage", + "tags": ["document-processing"] }, { "type": "firecrawl", @@ -2954,7 +3046,9 @@ "triggers": [], "triggerCount": 0, "authType": "api-key", - "category": "tools" + "category": "tools", + "integrationType": "automation", + "tags": ["web-scraping", "automation"] }, { "type": "fireflies_v2", @@ -3017,7 +3111,9 @@ ], "triggerCount": 1, "authType": "api-key", - "category": "tools" + "category": "tools", + "integrationType": "media", + "tags": ["meeting", "speech-to-text", "note-taking"] }, { "type": "gamma", @@ -3054,7 +3150,9 @@ "triggers": [], "triggerCount": 0, "authType": "api-key", - "category": "tools" + "category": "tools", + "integrationType": "design", + "tags": ["document-processing", "content-management"] }, { "type": "github_v2", @@ -3459,7 +3557,9 @@ ], "triggerCount": 11, "authType": "api-key", - "category": "tools" + "category": "tools", + "integrationType": "developer-tools", + "tags": ["version-control", "ci-cd"] }, { "type": "gitlab", @@ -3552,7 +3652,9 @@ "triggers": [], "triggerCount": 0, "authType": "api-key", - "category": "tools" + "category": "tools", + "integrationType": "developer-tools", + "tags": ["version-control", "ci-cd"] }, { "type": "gmail_v2", @@ -3617,7 +3719,9 @@ "triggers": [], "triggerCount": 0, "authType": "oauth", - "category": "tools" + "category": "tools", + "integrationType": "email", + "tags": ["google-workspace", "messaging"] }, { "type": "gong", @@ -3706,7 +3810,9 @@ "triggers": [], "triggerCount": 0, "authType": "none", - "category": "tools" + "category": "tools", + "integrationType": "sales-intelligence", + "tags": ["meeting", "sales-engagement", "speech-to-text"] }, { "type": "google_ads", @@ -3747,7 +3853,9 @@ "triggers": [], "triggerCount": 0, "authType": "oauth", - "category": "tools" + "category": "tools", + "integrationType": "analytics", + "tags": ["marketing", "google-workspace", "data-analytics"] }, { "type": "google_bigquery", @@ -3784,7 +3892,9 @@ "triggers": [], "triggerCount": 0, "authType": "oauth", - "category": "tools" + "category": "tools", + "integrationType": "databases", + "tags": ["data-warehouse", "google-workspace", "data-analytics"] }, { "type": "google_books", @@ -3809,7 +3919,9 @@ "triggers": [], "triggerCount": 0, "authType": "api-key", - "category": "tools" + "category": "tools", + "integrationType": "search", + "tags": ["google-workspace", "knowledge-base", "content-management"] }, { "type": "google_calendar_v2", @@ -3866,7 +3978,9 @@ "triggers": [], "triggerCount": 0, "authType": "oauth", - "category": "tools" + "category": "tools", + "integrationType": "productivity", + "tags": ["calendar", "scheduling", "google-workspace"] }, { "type": "google_contacts", @@ -3907,7 +4021,9 @@ "triggers": [], "triggerCount": 0, "authType": "oauth", - "category": "tools" + "category": "tools", + "integrationType": "productivity", + "tags": ["google-workspace", "customer-support", "enrichment"] }, { "type": "google_docs", @@ -3936,7 +4052,9 @@ "triggers": [], "triggerCount": 0, "authType": "oauth", - "category": "tools" + "category": "tools", + "integrationType": "documents", + "tags": ["google-workspace", "document-processing", "content-management"] }, { "type": "google_drive", @@ -4009,7 +4127,9 @@ "triggers": [], "triggerCount": 0, "authType": "oauth", - "category": "tools" + "category": "tools", + "integrationType": "file-storage", + "tags": ["cloud", "google-workspace", "document-processing"] }, { "type": "google_forms", @@ -4068,7 +4188,9 @@ ], "triggerCount": 1, "authType": "oauth", - "category": "tools" + "category": "tools", + "integrationType": "documents", + "tags": ["google-workspace", "forms", "data-analytics"] }, { "type": "google_groups", @@ -4149,7 +4271,9 @@ "triggers": [], "triggerCount": 0, "authType": "oauth", - "category": "tools" + "category": "tools", + "integrationType": "communication", + "tags": ["google-workspace", "messaging", "identity"] }, { "type": "google_maps", @@ -4218,7 +4342,9 @@ "triggers": [], "triggerCount": 0, "authType": "api-key", - "category": "tools" + "category": "tools", + "integrationType": "developer-tools", + "tags": ["google-workspace", "enrichment"] }, { "type": "google_meet", @@ -4259,7 +4385,9 @@ "triggers": [], "triggerCount": 0, "authType": "oauth", - "category": "tools" + "category": "tools", + "integrationType": "communication", + "tags": ["meeting", "google-workspace", "scheduling"] }, { "type": "google_pagespeed", @@ -4275,7 +4403,9 @@ "triggers": [], "triggerCount": 0, "authType": "api-key", - "category": "tools" + "category": "tools", + "integrationType": "analytics", + "tags": ["google-workspace", "seo", "monitoring"] }, { "type": "google_search", @@ -4291,7 +4421,9 @@ "triggers": [], "triggerCount": 0, "authType": "api-key", - "category": "tools" + "category": "tools", + "integrationType": "search", + "tags": ["google-workspace", "web-scraping", "seo"] }, { "type": "google_sheets_v2", @@ -4352,7 +4484,9 @@ "triggers": [], "triggerCount": 0, "authType": "oauth", - "category": "tools" + "category": "tools", + "integrationType": "documents", + "tags": ["spreadsheet", "google-workspace", "data-analytics"] }, { "type": "google_slides_v2", @@ -4425,7 +4559,9 @@ "triggers": [], "triggerCount": 0, "authType": "oauth", - "category": "tools" + "category": "tools", + "integrationType": "documents", + "tags": ["google-workspace", "document-processing", "content-management"] }, { "type": "google_tasks", @@ -4466,7 +4602,9 @@ "triggers": [], "triggerCount": 0, "authType": "oauth", - "category": "tools" + "category": "tools", + "integrationType": "productivity", + "tags": ["google-workspace", "project-management", "scheduling"] }, { "type": "google_translate", @@ -4491,7 +4629,9 @@ "triggers": [], "triggerCount": 0, "authType": "api-key", - "category": "tools" + "category": "tools", + "integrationType": "ai", + "tags": ["google-workspace", "content-management", "automation"] }, { "type": "google_vault", @@ -4536,7 +4676,9 @@ "triggers": [], "triggerCount": 0, "authType": "oauth", - "category": "tools" + "category": "tools", + "integrationType": "security", + "tags": ["google-workspace", "secrets-management", "document-processing"] }, { "type": "grafana", @@ -4629,7 +4771,9 @@ "triggers": [], "triggerCount": 0, "authType": "api-key", - "category": "tools" + "category": "tools", + "integrationType": "analytics", + "tags": ["monitoring", "data-analytics"] }, { "type": "grain", @@ -4723,7 +4867,9 @@ ], "triggerCount": 8, "authType": "api-key", - "category": "tools" + "category": "tools", + "integrationType": "media", + "tags": ["meeting", "note-taking"] }, { "type": "greenhouse", @@ -4784,7 +4930,9 @@ "triggers": [], "triggerCount": 0, "authType": "api-key", - "category": "tools" + "category": "tools", + "integrationType": "hr", + "tags": ["hiring"] }, { "type": "greptile", @@ -4817,7 +4965,9 @@ "triggers": [], "triggerCount": 0, "authType": "api-key", - "category": "tools" + "category": "tools", + "integrationType": "developer-tools", + "tags": ["version-control", "knowledge-base"] }, { "type": "hex", @@ -4898,7 +5048,9 @@ "triggers": [], "triggerCount": 0, "authType": "api-key", - "category": "tools" + "category": "tools", + "integrationType": "analytics", + "tags": ["data-warehouse", "data-analytics"] }, { "type": "hubspot", @@ -5046,7 +5198,9 @@ ], "triggerCount": 18, "authType": "oauth", - "category": "tools" + "category": "tools", + "integrationType": "crm", + "tags": ["marketing", "sales-engagement", "customer-support"] }, { "type": "huggingface", @@ -5062,7 +5216,9 @@ "triggers": [], "triggerCount": 0, "authType": "api-key", - "category": "tools" + "category": "tools", + "integrationType": "ai", + "tags": ["llm", "agentic"] }, { "type": "hunter", @@ -5103,7 +5259,9 @@ "triggers": [], "triggerCount": 0, "authType": "api-key", - "category": "tools" + "category": "tools", + "integrationType": "sales-intelligence", + "tags": ["enrichment", "sales-engagement"] }, { "type": "image_generator", @@ -5119,7 +5277,9 @@ "triggers": [], "triggerCount": 0, "authType": "api-key", - "category": "tools" + "category": "tools", + "integrationType": "ai", + "tags": ["image-generation", "llm"] }, { "type": "imap", @@ -5141,7 +5301,9 @@ ], "triggerCount": 1, "authType": "none", - "category": "triggers" + "category": "triggers", + "integrationType": "email", + "tags": ["messaging", "automation"] }, { "type": "incidentio", @@ -5334,7 +5496,9 @@ "triggers": [], "triggerCount": 0, "authType": "api-key", - "category": "tools" + "category": "tools", + "integrationType": "developer-tools", + "tags": ["incident-management", "monitoring"] }, { "type": "infisical", @@ -5371,7 +5535,9 @@ "triggers": [], "triggerCount": 0, "authType": "api-key", - "category": "tools" + "category": "tools", + "integrationType": "security", + "tags": ["secrets-management"] }, { "type": "intercom_v2", @@ -5512,7 +5678,9 @@ "triggers": [], "triggerCount": 0, "authType": "api-key", - "category": "tools" + "category": "tools", + "integrationType": "customer-support", + "tags": ["customer-support", "messaging"] }, { "type": "jina", @@ -5537,7 +5705,9 @@ "triggers": [], "triggerCount": 0, "authType": "api-key", - "category": "tools" + "category": "tools", + "integrationType": "search", + "tags": ["web-scraping", "knowledge-base"] }, { "type": "jira", @@ -5681,7 +5851,9 @@ ], "triggerCount": 6, "authType": "oauth", - "category": "tools" + "category": "tools", + "integrationType": "productivity", + "tags": ["project-management", "ticketing"] }, { "type": "jira_service_management", @@ -5782,7 +5954,9 @@ "triggers": [], "triggerCount": 0, "authType": "oauth", - "category": "tools" + "category": "tools", + "integrationType": "customer-support", + "tags": ["customer-support", "ticketing", "incident-management"] }, { "type": "kalshi_v2", @@ -5867,7 +6041,9 @@ "triggers": [], "triggerCount": 0, "authType": "none", - "category": "tools" + "category": "tools", + "integrationType": "analytics", + "tags": ["prediction-markets", "data-analytics"] }, { "type": "knowledge", @@ -5965,7 +6141,9 @@ "triggers": [], "triggerCount": 0, "authType": "api-key", - "category": "tools" + "category": "tools", + "integrationType": "developer-tools", + "tags": ["monitoring", "llm", "data-analytics"] }, { "type": "lemlist", @@ -6040,7 +6218,9 @@ ], "triggerCount": 9, "authType": "api-key", - "category": "tools" + "category": "tools", + "integrationType": "email", + "tags": ["sales-engagement", "email-marketing", "automation"] }, { "type": "linear", @@ -6445,7 +6625,9 @@ ], "triggerCount": 15, "authType": "oauth", - "category": "tools" + "category": "tools", + "integrationType": "productivity", + "tags": ["project-management", "ticketing"] }, { "type": "linkedin", @@ -6470,7 +6652,9 @@ "triggers": [], "triggerCount": 0, "authType": "oauth", - "category": "tools" + "category": "tools", + "integrationType": "social", + "tags": ["marketing", "sales-engagement", "enrichment"] }, { "type": "linkup", @@ -6486,7 +6670,9 @@ "triggers": [], "triggerCount": 0, "authType": "api-key", - "category": "tools" + "category": "tools", + "integrationType": "search", + "tags": ["web-scraping", "enrichment"] }, { "type": "loops", @@ -6543,7 +6729,9 @@ "triggers": [], "triggerCount": 0, "authType": "api-key", - "category": "tools" + "category": "tools", + "integrationType": "email", + "tags": ["email-marketing", "marketing", "automation"] }, { "type": "luma", @@ -6584,7 +6772,9 @@ "triggers": [], "triggerCount": 0, "authType": "api-key", - "category": "tools" + "category": "tools", + "integrationType": "productivity", + "tags": ["events", "calendar", "scheduling"] }, { "type": "mailchimp", @@ -6893,7 +7083,9 @@ "triggers": [], "triggerCount": 0, "authType": "api-key", - "category": "tools" + "category": "tools", + "integrationType": "email", + "tags": ["email-marketing", "marketing", "automation"] }, { "type": "mailgun", @@ -6942,7 +7134,9 @@ "triggers": [], "triggerCount": 0, "authType": "api-key", - "category": "tools" + "category": "tools", + "integrationType": "email", + "tags": ["messaging", "email-marketing"] }, { "type": "mem0", @@ -6971,7 +7165,9 @@ "triggers": [], "triggerCount": 0, "authType": "api-key", - "category": "tools" + "category": "tools", + "integrationType": "ai", + "tags": ["llm", "knowledge-base", "agentic"] }, { "type": "memory", @@ -7089,7 +7285,9 @@ "triggers": [], "triggerCount": 0, "authType": "oauth", - "category": "tools" + "category": "tools", + "integrationType": "databases", + "tags": ["microsoft-365", "data-warehouse", "cloud"] }, { "type": "microsoft_excel_v2", @@ -7114,7 +7312,9 @@ "triggers": [], "triggerCount": 0, "authType": "oauth", - "category": "tools" + "category": "tools", + "integrationType": "documents", + "tags": ["spreadsheet", "microsoft-365"] }, { "type": "microsoft_planner", @@ -7183,7 +7383,9 @@ "triggers": [], "triggerCount": 0, "authType": "oauth", - "category": "tools" + "category": "tools", + "integrationType": "productivity", + "tags": ["project-management", "microsoft-365", "ticketing"] }, { "type": "microsoft_teams", @@ -7262,7 +7464,9 @@ ], "triggerCount": 1, "authType": "oauth", - "category": "tools" + "category": "tools", + "integrationType": "communication", + "tags": ["messaging", "microsoft-365"] }, { "type": "mistral_parse_v3", @@ -7278,7 +7482,9 @@ "triggers": [], "triggerCount": 0, "authType": "api-key", - "category": "tools" + "category": "tools", + "integrationType": "ai", + "tags": ["document-processing", "ocr"] }, { "type": "mongodb", @@ -7319,7 +7525,9 @@ "triggers": [], "triggerCount": 0, "authType": "none", - "category": "tools" + "category": "tools", + "integrationType": "databases", + "tags": ["data-warehouse", "cloud"] }, { "type": "mysql", @@ -7360,7 +7568,9 @@ "triggers": [], "triggerCount": 0, "authType": "none", - "category": "tools" + "category": "tools", + "integrationType": "databases", + "tags": ["data-warehouse", "data-analytics"] }, { "type": "neo4j", @@ -7405,7 +7615,9 @@ "triggers": [], "triggerCount": 0, "authType": "none", - "category": "tools" + "category": "tools", + "integrationType": "databases", + "tags": ["data-warehouse", "data-analytics"] }, { "type": "notion_v2", @@ -7421,7 +7633,9 @@ "triggers": [], "triggerCount": 0, "authType": "oauth", - "category": "tools" + "category": "tools", + "integrationType": "documents", + "tags": ["note-taking", "knowledge-base", "content-management"] }, { "type": "obsidian", @@ -7498,7 +7712,9 @@ "triggers": [], "triggerCount": 0, "authType": "api-key", - "category": "tools" + "category": "tools", + "integrationType": "documents", + "tags": ["note-taking", "knowledge-base"] }, { "type": "okta", @@ -7587,7 +7803,9 @@ "triggers": [], "triggerCount": 0, "authType": "api-key", - "category": "tools" + "category": "tools", + "integrationType": "security", + "tags": ["identity", "automation"] }, { "type": "onedrive", @@ -7628,7 +7846,9 @@ "triggers": [], "triggerCount": 0, "authType": "oauth", - "category": "tools" + "category": "tools", + "integrationType": "file-storage", + "tags": ["microsoft-365", "cloud", "document-processing"] }, { "type": "outlook", @@ -7681,7 +7901,9 @@ "triggers": [], "triggerCount": 0, "authType": "oauth", - "category": "tools" + "category": "tools", + "integrationType": "email", + "tags": ["microsoft-365", "messaging", "automation"] }, { "type": "pagerduty", @@ -7722,7 +7944,9 @@ "triggers": [], "triggerCount": 0, "authType": "api-key", - "category": "tools" + "category": "tools", + "integrationType": "developer-tools", + "tags": ["incident-management", "monitoring"] }, { "type": "parallel_ai", @@ -7751,7 +7975,9 @@ "triggers": [], "triggerCount": 0, "authType": "api-key", - "category": "tools" + "category": "tools", + "integrationType": "search", + "tags": ["web-scraping", "llm", "agentic"] }, { "type": "perplexity", @@ -7776,7 +8002,9 @@ "triggers": [], "triggerCount": 0, "authType": "api-key", - "category": "tools" + "category": "tools", + "integrationType": "ai", + "tags": ["llm", "web-scraping", "agentic"] }, { "type": "pinecone", @@ -7813,7 +8041,9 @@ "triggers": [], "triggerCount": 0, "authType": "api-key", - "category": "tools" + "category": "tools", + "integrationType": "databases", + "tags": ["vector-search", "knowledge-base"] }, { "type": "pipedrive", @@ -7902,7 +8132,9 @@ "triggers": [], "triggerCount": 0, "authType": "oauth", - "category": "tools" + "category": "tools", + "integrationType": "crm", + "tags": ["sales-engagement", "project-management"] }, { "type": "polymarket", @@ -7999,7 +8231,9 @@ "triggers": [], "triggerCount": 0, "authType": "none", - "category": "tools" + "category": "tools", + "integrationType": "analytics", + "tags": ["prediction-markets", "data-analytics"] }, { "type": "postgresql", @@ -8040,7 +8274,9 @@ "triggers": [], "triggerCount": 0, "authType": "none", - "category": "tools" + "category": "tools", + "integrationType": "databases", + "tags": ["data-warehouse", "data-analytics"] }, { "type": "posthog", @@ -8229,7 +8465,9 @@ "triggers": [], "triggerCount": 0, "authType": "none", - "category": "tools" + "category": "tools", + "integrationType": "analytics", + "tags": ["data-analytics", "monitoring"] }, { "type": "pulse_v2", @@ -8245,7 +8483,9 @@ "triggers": [], "triggerCount": 0, "authType": "api-key", - "category": "tools" + "category": "tools", + "integrationType": "ai", + "tags": ["document-processing", "ocr"] }, { "type": "qdrant", @@ -8274,7 +8514,9 @@ "triggers": [], "triggerCount": 0, "authType": "api-key", - "category": "tools" + "category": "tools", + "integrationType": "databases", + "tags": ["vector-search", "knowledge-base"] }, { "type": "reddit", @@ -8359,7 +8601,9 @@ "triggers": [], "triggerCount": 0, "authType": "oauth", - "category": "tools" + "category": "tools", + "integrationType": "social", + "tags": ["content-management", "web-scraping"] }, { "type": "redis", @@ -8464,7 +8708,9 @@ "triggers": [], "triggerCount": 0, "authType": "none", - "category": "tools" + "category": "tools", + "integrationType": "databases", + "tags": ["cloud", "data-warehouse"] }, { "type": "reducto_v2", @@ -8480,7 +8726,9 @@ "triggers": [], "triggerCount": 0, "authType": "api-key", - "category": "tools" + "category": "tools", + "integrationType": "ai", + "tags": ["document-processing", "ocr"] }, { "type": "resend", @@ -8529,7 +8777,9 @@ "triggers": [], "triggerCount": 0, "authType": "none", - "category": "tools" + "category": "tools", + "integrationType": "email", + "tags": ["email-marketing", "messaging"] }, { "type": "revenuecat", @@ -8586,7 +8836,9 @@ "triggers": [], "triggerCount": 0, "authType": "api-key", - "category": "tools" + "category": "tools", + "integrationType": "ecommerce", + "tags": ["payments", "subscriptions"] }, { "type": "s3", @@ -8623,7 +8875,9 @@ "triggers": [], "triggerCount": 0, "authType": "none", - "category": "tools" + "category": "tools", + "integrationType": "file-storage", + "tags": ["cloud", "data-warehouse"] }, { "type": "salesforce", @@ -8780,7 +9034,9 @@ "triggers": [], "triggerCount": 0, "authType": "oauth", - "category": "tools" + "category": "tools", + "integrationType": "crm", + "tags": ["sales-engagement", "customer-support"] }, { "type": "search", @@ -8796,7 +9052,9 @@ "triggers": [], "triggerCount": 0, "authType": "none", - "category": "tools" + "category": "tools", + "integrationType": "search", + "tags": ["web-scraping", "seo"] }, { "type": "sendgrid", @@ -8877,7 +9135,9 @@ "triggers": [], "triggerCount": 0, "authType": "api-key", - "category": "tools" + "category": "tools", + "integrationType": "email", + "tags": ["email-marketing", "messaging"] }, { "type": "sentry", @@ -8942,7 +9202,9 @@ "triggers": [], "triggerCount": 0, "authType": "api-key", - "category": "tools" + "category": "tools", + "integrationType": "developer-tools", + "tags": ["error-tracking", "monitoring"] }, { "type": "serper", @@ -8958,7 +9220,9 @@ "triggers": [], "triggerCount": 0, "authType": "api-key", - "category": "tools" + "category": "tools", + "integrationType": "search", + "tags": ["web-scraping", "seo"] }, { "type": "servicenow", @@ -8991,7 +9255,9 @@ "triggers": [], "triggerCount": 0, "authType": "none", - "category": "tools" + "category": "tools", + "integrationType": "customer-support", + "tags": ["customer-support", "ticketing", "incident-management"] }, { "type": "sftp", @@ -9032,7 +9298,9 @@ "triggers": [], "triggerCount": 0, "authType": "none", - "category": "tools" + "category": "tools", + "integrationType": "file-storage", + "tags": ["cloud", "automation"] }, { "type": "sharepoint", @@ -9081,7 +9349,9 @@ "triggers": [], "triggerCount": 0, "authType": "oauth", - "category": "tools" + "category": "tools", + "integrationType": "documents", + "tags": ["microsoft-365", "content-management", "document-processing"] }, { "type": "shopify", @@ -9182,7 +9452,9 @@ "triggers": [], "triggerCount": 0, "authType": "oauth", - "category": "tools" + "category": "tools", + "integrationType": "ecommerce", + "tags": ["payments", "subscriptions"] }, { "type": "similarweb", @@ -9219,7 +9491,9 @@ "triggers": [], "triggerCount": 0, "authType": "api-key", - "category": "tools" + "category": "tools", + "integrationType": "analytics", + "tags": ["marketing", "data-analytics", "seo"] }, { "type": "slack", @@ -9334,7 +9608,9 @@ ], "triggerCount": 1, "authType": "oauth", - "category": "tools" + "category": "tools", + "integrationType": "communication", + "tags": ["messaging", "webhooks", "automation"] }, { "type": "smtp", @@ -9350,7 +9626,9 @@ "triggers": [], "triggerCount": 0, "authType": "none", - "category": "tools" + "category": "tools", + "integrationType": "email", + "tags": ["email-marketing", "messaging"] }, { "type": "stt_v2", @@ -9366,7 +9644,9 @@ "triggers": [], "triggerCount": 0, "authType": "api-key", - "category": "tools" + "category": "tools", + "integrationType": "ai", + "tags": ["speech-to-text", "document-processing"] }, { "type": "ssh", @@ -9435,7 +9715,9 @@ "triggers": [], "triggerCount": 0, "authType": "none", - "category": "tools" + "category": "tools", + "integrationType": "developer-tools", + "tags": ["cloud", "automation"] }, { "type": "stagehand", @@ -9460,7 +9742,9 @@ "triggers": [], "triggerCount": 0, "authType": "api-key", - "category": "tools" + "category": "tools", + "integrationType": "automation", + "tags": ["web-scraping", "automation", "agentic"] }, { "type": "stripe", @@ -9683,7 +9967,9 @@ ], "triggerCount": 1, "authType": "api-key", - "category": "tools" + "category": "tools", + "integrationType": "ecommerce", + "tags": ["payments", "subscriptions", "webhooks"] }, { "type": "supabase", @@ -9788,7 +10074,9 @@ "triggers": [], "triggerCount": 0, "authType": "api-key", - "category": "tools" + "category": "tools", + "integrationType": "databases", + "tags": ["cloud", "data-warehouse", "vector-search"] }, { "type": "tavily", @@ -9821,7 +10109,9 @@ "triggers": [], "triggerCount": 0, "authType": "api-key", - "category": "tools" + "category": "tools", + "integrationType": "search", + "tags": ["web-scraping", "enrichment"] }, { "type": "telegram", @@ -9872,7 +10162,9 @@ ], "triggerCount": 1, "authType": "none", - "category": "tools" + "category": "tools", + "integrationType": "communication", + "tags": ["messaging", "webhooks", "automation"] }, { "type": "tts", @@ -9888,7 +10180,9 @@ "triggers": [], "triggerCount": 0, "authType": "api-key", - "category": "tools" + "category": "tools", + "integrationType": "ai", + "tags": ["text-to-speech", "llm"] }, { "type": "tinybird", @@ -9913,7 +10207,9 @@ "triggers": [], "triggerCount": 0, "authType": "none", - "category": "tools" + "category": "tools", + "integrationType": "analytics", + "tags": ["data-warehouse", "data-analytics"] }, { "type": "translate", @@ -9929,7 +10225,9 @@ "triggers": [], "triggerCount": 0, "authType": "none", - "category": "tools" + "category": "tools", + "integrationType": "ai", + "tags": ["document-processing", "llm"] }, { "type": "trello", @@ -9970,7 +10268,9 @@ "triggers": [], "triggerCount": 0, "authType": "oauth", - "category": "tools" + "category": "tools", + "integrationType": "productivity", + "tags": ["project-management", "ticketing"] }, { "type": "twilio_sms", @@ -9986,7 +10286,9 @@ "triggers": [], "triggerCount": 0, "authType": "none", - "category": "tools" + "category": "tools", + "integrationType": "communication", + "tags": ["messaging", "automation"] }, { "type": "twilio_voice", @@ -10021,7 +10323,9 @@ ], "triggerCount": 1, "authType": "none", - "category": "tools" + "category": "tools", + "integrationType": "communication", + "tags": ["messaging", "text-to-speech"] }, { "type": "typeform", @@ -10076,7 +10380,9 @@ ], "triggerCount": 1, "authType": "api-key", - "category": "tools" + "category": "tools", + "integrationType": "documents", + "tags": ["forms", "data-analytics"] }, { "type": "upstash", @@ -10157,7 +10463,9 @@ "triggers": [], "triggerCount": 0, "authType": "none", - "category": "tools" + "category": "tools", + "integrationType": "databases", + "tags": ["cloud", "data-warehouse"] }, { "type": "vercel", @@ -10374,7 +10682,9 @@ "triggers": [], "triggerCount": 0, "authType": "api-key", - "category": "tools" + "category": "tools", + "integrationType": "developer-tools", + "tags": ["cloud", "ci-cd"] }, { "type": "video_generator_v2", @@ -10390,7 +10700,9 @@ "triggers": [], "triggerCount": 0, "authType": "api-key", - "category": "tools" + "category": "tools", + "integrationType": "ai", + "tags": ["video-generation", "llm"] }, { "type": "vision_v2", @@ -10406,7 +10718,9 @@ "triggers": [], "triggerCount": 0, "authType": "api-key", - "category": "tools" + "category": "tools", + "integrationType": "ai", + "tags": ["llm", "document-processing", "ocr"] }, { "type": "wealthbox", @@ -10447,7 +10761,9 @@ "triggers": [], "triggerCount": 0, "authType": "oauth", - "category": "tools" + "category": "tools", + "integrationType": "crm", + "tags": ["sales-engagement", "customer-support"] }, { "type": "webflow", @@ -10505,7 +10821,9 @@ ], "triggerCount": 4, "authType": "oauth", - "category": "tools" + "category": "tools", + "integrationType": "design", + "tags": ["content-management", "seo"] }, { "type": "whatsapp", @@ -10527,7 +10845,9 @@ ], "triggerCount": 1, "authType": "api-key", - "category": "tools" + "category": "tools", + "integrationType": "communication", + "tags": ["messaging", "automation"] }, { "type": "wikipedia", @@ -10560,7 +10880,9 @@ "triggers": [], "triggerCount": 0, "authType": "none", - "category": "tools" + "category": "tools", + "integrationType": "search", + "tags": ["knowledge-base", "web-scraping"] }, { "type": "wordpress", @@ -10681,7 +11003,9 @@ "triggers": [], "triggerCount": 0, "authType": "oauth", - "category": "tools" + "category": "tools", + "integrationType": "design", + "tags": ["content-management", "seo"] }, { "type": "workday", @@ -10738,7 +11062,9 @@ "triggers": [], "triggerCount": 0, "authType": "none", - "category": "tools" + "category": "tools", + "integrationType": "hr", + "tags": ["hiring", "project-management"] }, { "type": "x", @@ -10867,7 +11193,9 @@ "triggers": [], "triggerCount": 0, "authType": "oauth", - "category": "tools" + "category": "tools", + "integrationType": "social", + "tags": ["marketing", "messaging"] }, { "type": "youtube", @@ -10920,7 +11248,9 @@ "triggers": [], "triggerCount": 0, "authType": "api-key", - "category": "tools" + "category": "tools", + "integrationType": "media", + "tags": ["google-workspace", "marketing", "content-management"] }, { "type": "zendesk", @@ -11041,7 +11371,9 @@ "triggers": [], "triggerCount": 0, "authType": "none", - "category": "tools" + "category": "tools", + "integrationType": "customer-support", + "tags": ["customer-support", "ticketing"] }, { "type": "zep", @@ -11094,7 +11426,9 @@ "triggers": [], "triggerCount": 0, "authType": "api-key", - "category": "tools" + "category": "tools", + "integrationType": "ai", + "tags": ["llm", "knowledge-base", "agentic"] }, { "type": "zoom", @@ -11151,6 +11485,8 @@ "triggers": [], "triggerCount": 0, "authType": "oauth", - "category": "tools" + "category": "tools", + "integrationType": "communication", + "tags": ["meeting", "calendar", "scheduling"] } ] diff --git a/apps/sim/app/(landing)/integrations/data/types.ts b/apps/sim/app/(landing)/integrations/data/types.ts index 125247ce61..b1a17f7a2b 100644 --- a/apps/sim/app/(landing)/integrations/data/types.ts +++ b/apps/sim/app/(landing)/integrations/data/types.ts @@ -34,4 +34,6 @@ export interface Integration { triggerCount: number authType: AuthType category: string + integrationType?: string + tags?: string[] } diff --git a/apps/sim/blocks/blocks/a2a.ts b/apps/sim/blocks/blocks/a2a.ts index b12905b4b7..44b70d3803 100644 --- a/apps/sim/blocks/blocks/a2a.ts +++ b/apps/sim/blocks/blocks/a2a.ts @@ -1,5 +1,6 @@ import { A2AIcon } from '@/components/icons' import type { BlockConfig } from '@/blocks/types' +import { IntegrationType } from '@/blocks/types' import { normalizeFileInput } from '@/blocks/utils' import type { ToolResponse } from '@/tools/types' @@ -63,6 +64,8 @@ export const A2ABlock: BlockConfig = { 'Compatible with any A2A-compliant agent including LangGraph, Google ADK, and other Sim workflows.', docsLink: 'https://docs.sim.ai/blocks/a2a', category: 'tools', + integrationType: IntegrationType.DeveloperTools, + tags: ['agentic', 'automation'], bgColor: '#4151B5', icon: A2AIcon, subBlocks: [ diff --git a/apps/sim/blocks/blocks/agent.ts b/apps/sim/blocks/blocks/agent.ts index 651d3d9295..a5585816a6 100644 --- a/apps/sim/blocks/blocks/agent.ts +++ b/apps/sim/blocks/blocks/agent.ts @@ -2,7 +2,7 @@ import { createLogger } from '@sim/logger' import { AgentIcon } from '@/components/icons' import { getScopesForService } from '@/lib/oauth/utils' import type { BlockConfig } from '@/blocks/types' -import { AuthMode } from '@/blocks/types' +import { AuthMode, IntegrationType } from '@/blocks/types' import { getApiKeyCondition, getModelOptions, RESPONSE_FORMAT_WAND_CONFIG } from '@/blocks/utils' import { getBaseModelProviders, @@ -69,6 +69,8 @@ export const AgentBlock: BlockConfig = { `, docsLink: 'https://docs.sim.ai/blocks/agent', category: 'blocks', + integrationType: IntegrationType.AI, + tags: ['llm', 'agentic', 'automation'], bgColor: 'var(--brand-primary-hex)', icon: AgentIcon, subBlocks: [ diff --git a/apps/sim/blocks/blocks/ahrefs.ts b/apps/sim/blocks/blocks/ahrefs.ts index 7624f10b00..02857936b5 100644 --- a/apps/sim/blocks/blocks/ahrefs.ts +++ b/apps/sim/blocks/blocks/ahrefs.ts @@ -1,6 +1,6 @@ import { AhrefsIcon } from '@/components/icons' import type { BlockConfig } from '@/blocks/types' -import { AuthMode } from '@/blocks/types' +import { AuthMode, IntegrationType } from '@/blocks/types' import type { AhrefsResponse } from '@/tools/ahrefs/types' export const AhrefsBlock: BlockConfig = { @@ -12,6 +12,8 @@ export const AhrefsBlock: BlockConfig = { 'Integrate Ahrefs SEO tools into your workflow. Analyze domain ratings, backlinks, organic keywords, top pages, and more. Requires an Ahrefs Enterprise plan with API access.', docsLink: 'https://docs.ahrefs.com/docs/api/reference/introduction', category: 'tools', + integrationType: IntegrationType.Analytics, + tags: ['seo', 'marketing', 'data-analytics'], bgColor: '#E0E0E0', icon: AhrefsIcon, subBlocks: [ diff --git a/apps/sim/blocks/blocks/airtable.ts b/apps/sim/blocks/blocks/airtable.ts index ced9b6d8f9..48e9b670bc 100644 --- a/apps/sim/blocks/blocks/airtable.ts +++ b/apps/sim/blocks/blocks/airtable.ts @@ -1,7 +1,7 @@ import { AirtableIcon } from '@/components/icons' import { getScopesForService } from '@/lib/oauth/utils' import type { BlockConfig } from '@/blocks/types' -import { AuthMode } from '@/blocks/types' +import { AuthMode, IntegrationType } from '@/blocks/types' import type { AirtableResponse } from '@/tools/airtable/types' import { getTrigger } from '@/triggers' @@ -14,6 +14,8 @@ export const AirtableBlock: BlockConfig = { 'Integrates Airtable into the workflow. Can list bases, list tables (with schema), and create, get, list, or update records. Can also be used in trigger mode to trigger a workflow when an update is made to an Airtable table.', docsLink: 'https://docs.sim.ai/tools/airtable', category: 'tools', + integrationType: IntegrationType.Databases, + tags: ['spreadsheet', 'automation'], bgColor: '#E0E0E0', icon: AirtableIcon, subBlocks: [ diff --git a/apps/sim/blocks/blocks/airweave.ts b/apps/sim/blocks/blocks/airweave.ts index 3edf0335fa..caa9c4097f 100644 --- a/apps/sim/blocks/blocks/airweave.ts +++ b/apps/sim/blocks/blocks/airweave.ts @@ -1,6 +1,6 @@ import { AirweaveIcon } from '@/components/icons' import type { BlockConfig } from '@/blocks/types' -import { AuthMode } from '@/blocks/types' +import { AuthMode, IntegrationType } from '@/blocks/types' import type { AirweaveSearchResponse } from '@/tools/airweave/types' export const AirweaveBlock: BlockConfig = { @@ -12,6 +12,8 @@ export const AirweaveBlock: BlockConfig = { 'Search across your synced data sources using Airweave. Supports semantic search with hybrid, neural, or keyword retrieval strategies. Optionally generate AI-powered answers from search results.', docsLink: 'https://docs.airweave.ai', category: 'tools', + integrationType: IntegrationType.Search, + tags: ['vector-search', 'knowledge-base'], bgColor: '#6366F1', icon: AirweaveIcon, subBlocks: [ diff --git a/apps/sim/blocks/blocks/algolia.ts b/apps/sim/blocks/blocks/algolia.ts index 0848d6175a..f2d0d8f264 100644 --- a/apps/sim/blocks/blocks/algolia.ts +++ b/apps/sim/blocks/blocks/algolia.ts @@ -1,6 +1,6 @@ import { AlgoliaIcon } from '@/components/icons' import type { BlockConfig } from '@/blocks/types' -import { AuthMode } from '@/blocks/types' +import { AuthMode, IntegrationType } from '@/blocks/types' export const AlgoliaBlock: BlockConfig = { type: 'algolia', @@ -10,6 +10,8 @@ export const AlgoliaBlock: BlockConfig = { 'Integrate Algolia into your workflow. Search indices, manage records (add, update, delete, browse), configure index settings, and perform batch operations.', docsLink: 'https://docs.sim.ai/tools/algolia', category: 'tools', + integrationType: IntegrationType.Search, + tags: ['vector-search', 'knowledge-base'], bgColor: '#003DFF', icon: AlgoliaIcon, authMode: AuthMode.ApiKey, diff --git a/apps/sim/blocks/blocks/amplitude.ts b/apps/sim/blocks/blocks/amplitude.ts index e9cbf61834..689f5a9d0c 100644 --- a/apps/sim/blocks/blocks/amplitude.ts +++ b/apps/sim/blocks/blocks/amplitude.ts @@ -1,5 +1,5 @@ import { AmplitudeIcon } from '@/components/icons' -import { AuthMode, type BlockConfig } from '@/blocks/types' +import { AuthMode, type BlockConfig, IntegrationType } from '@/blocks/types' export const AmplitudeBlock: BlockConfig = { type: 'amplitude', @@ -9,6 +9,8 @@ export const AmplitudeBlock: BlockConfig = { 'Integrate Amplitude into your workflow to track events, identify users and groups, search for users, query analytics, and retrieve revenue data.', docsLink: 'https://docs.sim.ai/tools/amplitude', category: 'tools', + integrationType: IntegrationType.Analytics, + tags: ['data-analytics', 'marketing'], bgColor: '#1B1F3B', icon: AmplitudeIcon, authMode: AuthMode.ApiKey, diff --git a/apps/sim/blocks/blocks/api.ts b/apps/sim/blocks/blocks/api.ts index e12c1422ff..8eafbb423e 100644 --- a/apps/sim/blocks/blocks/api.ts +++ b/apps/sim/blocks/blocks/api.ts @@ -1,5 +1,6 @@ import { ApiIcon } from '@/components/icons' import type { BlockConfig } from '@/blocks/types' +import { IntegrationType } from '@/blocks/types' import type { RequestResponse } from '@/tools/http/types' export const ApiBlock: BlockConfig = { @@ -13,6 +14,8 @@ export const ApiBlock: BlockConfig = { - Curl the endpoint yourself before filling out the API block to make sure it's working IF you have the necessary authentication headers. Clarify with the user if you need any additional headers. `, category: 'blocks', + integrationType: IntegrationType.DeveloperTools, + tags: ['automation', 'webhooks'], bgColor: '#2F55FF', icon: ApiIcon, subBlocks: [ diff --git a/apps/sim/blocks/blocks/apify.ts b/apps/sim/blocks/blocks/apify.ts index 39b92f7f2b..bbcca0055b 100644 --- a/apps/sim/blocks/blocks/apify.ts +++ b/apps/sim/blocks/blocks/apify.ts @@ -1,5 +1,6 @@ import { ApifyIcon } from '@/components/icons' import type { BlockConfig } from '@/blocks/types' +import { IntegrationType } from '@/blocks/types' import type { RunActorResult } from '@/tools/apify/types' export const ApifyBlock: BlockConfig = { @@ -10,6 +11,8 @@ export const ApifyBlock: BlockConfig = { 'Integrate Apify into your workflow. Run any Apify actor with custom input and retrieve results. Supports both synchronous and asynchronous execution with automatic dataset fetching.', docsLink: 'https://docs.sim.ai/tools/apify', category: 'tools', + integrationType: IntegrationType.Automation, + tags: ['web-scraping', 'automation', 'data-analytics'], bgColor: '#E0E0E0', icon: ApifyIcon, diff --git a/apps/sim/blocks/blocks/apollo.ts b/apps/sim/blocks/blocks/apollo.ts index 11e03b52ac..5383123dcb 100644 --- a/apps/sim/blocks/blocks/apollo.ts +++ b/apps/sim/blocks/blocks/apollo.ts @@ -1,6 +1,6 @@ import { ApolloIcon } from '@/components/icons' import type { BlockConfig } from '@/blocks/types' -import { AuthMode } from '@/blocks/types' +import { AuthMode, IntegrationType } from '@/blocks/types' import type { ApolloResponse } from '@/tools/apollo/types' export const ApolloBlock: BlockConfig = { @@ -12,6 +12,8 @@ export const ApolloBlock: BlockConfig = { 'Integrates Apollo.io into the workflow. Search for people and companies, enrich contact data, manage your CRM contacts and accounts, add contacts to sequences, and create tasks.', docsLink: 'https://docs.sim.ai/tools/apollo', category: 'tools', + integrationType: IntegrationType.SalesIntelligence, + tags: ['enrichment', 'sales-engagement'], bgColor: '#EBF212', icon: ApolloIcon, subBlocks: [ diff --git a/apps/sim/blocks/blocks/arxiv.ts b/apps/sim/blocks/blocks/arxiv.ts index b8946f0c9b..c7bbbe1d90 100644 --- a/apps/sim/blocks/blocks/arxiv.ts +++ b/apps/sim/blocks/blocks/arxiv.ts @@ -1,5 +1,6 @@ import { ArxivIcon } from '@/components/icons' import type { BlockConfig } from '@/blocks/types' +import { IntegrationType } from '@/blocks/types' import type { ArxivResponse } from '@/tools/arxiv/types' export const ArxivBlock: BlockConfig = { @@ -10,6 +11,8 @@ export const ArxivBlock: BlockConfig = { 'Integrates ArXiv into the workflow. Can search for papers, get paper details, and get author papers. Does not require OAuth or an API key.', docsLink: 'https://docs.sim.ai/tools/arxiv', category: 'tools', + integrationType: IntegrationType.Search, + tags: ['document-processing', 'knowledge-base'], bgColor: '#E0E0E0', icon: ArxivIcon, subBlocks: [ diff --git a/apps/sim/blocks/blocks/asana.ts b/apps/sim/blocks/blocks/asana.ts index a92c7384a8..4da1b84f96 100644 --- a/apps/sim/blocks/blocks/asana.ts +++ b/apps/sim/blocks/blocks/asana.ts @@ -1,7 +1,7 @@ import { AsanaIcon } from '@/components/icons' import { getScopesForService } from '@/lib/oauth/utils' import type { BlockConfig } from '@/blocks/types' -import { AuthMode } from '@/blocks/types' +import { AuthMode, IntegrationType } from '@/blocks/types' import type { AsanaResponse } from '@/tools/asana/types' export const AsanaBlock: BlockConfig = { @@ -12,6 +12,8 @@ export const AsanaBlock: BlockConfig = { longDescription: 'Integrate Asana into the workflow. Can read, write, and update tasks.', docsLink: 'https://docs.sim.ai/tools/asana', category: 'tools', + integrationType: IntegrationType.Productivity, + tags: ['project-management', 'ticketing', 'automation'], bgColor: '#E0E0E0', icon: AsanaIcon, subBlocks: [ diff --git a/apps/sim/blocks/blocks/ashby.ts b/apps/sim/blocks/blocks/ashby.ts index 175979503b..0659dcbeda 100644 --- a/apps/sim/blocks/blocks/ashby.ts +++ b/apps/sim/blocks/blocks/ashby.ts @@ -1,5 +1,5 @@ import { AshbyIcon } from '@/components/icons' -import { AuthMode, type BlockConfig } from '@/blocks/types' +import { AuthMode, type BlockConfig, IntegrationType } from '@/blocks/types' import { getTrigger } from '@/triggers' export const AshbyBlock: BlockConfig = { @@ -10,6 +10,8 @@ export const AshbyBlock: BlockConfig = { 'Integrate Ashby into the workflow. Manage candidates (list, get, create, update, search, tag), applications (list, get, create, change stage), jobs (list, get), job postings (list, get), offers (list, get), notes (list, create), interviews (list), and reference data (sources, tags, archive reasons, custom fields, departments, locations, openings, users).', docsLink: 'https://docs.sim.ai/tools/ashby', category: 'tools', + integrationType: IntegrationType.HR, + tags: ['hiring'], bgColor: '#5D4ED6', icon: AshbyIcon, authMode: AuthMode.ApiKey, diff --git a/apps/sim/blocks/blocks/attio.ts b/apps/sim/blocks/blocks/attio.ts index aebea95d36..21ee5ffdf8 100644 --- a/apps/sim/blocks/blocks/attio.ts +++ b/apps/sim/blocks/blocks/attio.ts @@ -1,6 +1,6 @@ import { AttioIcon } from '@/components/icons' import type { BlockConfig } from '@/blocks/types' -import { AuthMode } from '@/blocks/types' +import { AuthMode, IntegrationType } from '@/blocks/types' import type { AttioResponse } from '@/tools/attio/types' import { getTrigger } from '@/triggers' @@ -12,6 +12,8 @@ export const AttioBlock: BlockConfig = { 'Connect to Attio to manage CRM records (people, companies, custom objects), notes, tasks, lists, list entries, comments, workspace members, and webhooks.', docsLink: 'https://docs.sim.ai/tools/attio', category: 'tools', + integrationType: IntegrationType.CRM, + tags: ['sales-engagement', 'enrichment'], bgColor: '#1D1E20', icon: AttioIcon, authMode: AuthMode.OAuth, diff --git a/apps/sim/blocks/blocks/box.ts b/apps/sim/blocks/blocks/box.ts index a341b9e7cf..27318f8353 100644 --- a/apps/sim/blocks/blocks/box.ts +++ b/apps/sim/blocks/blocks/box.ts @@ -1,7 +1,7 @@ import { BoxCompanyIcon } from '@/components/icons' import { getScopesForService } from '@/lib/oauth/utils' import type { BlockConfig } from '@/blocks/types' -import { AuthMode } from '@/blocks/types' +import { AuthMode, IntegrationType } from '@/blocks/types' import { normalizeFileInput } from '@/blocks/utils' export const BoxBlock: BlockConfig = { @@ -12,6 +12,8 @@ export const BoxBlock: BlockConfig = { 'Integrate Box into your workflow to manage files, folders, and e-signatures. Upload and download files, search content, create folders, send documents for e-signature, track signing status, and more.', docsLink: 'https://docs.sim.ai/tools/box', category: 'tools', + integrationType: IntegrationType.FileStorage, + tags: ['cloud', 'content-management', 'e-signatures'], bgColor: '#FFFFFF', icon: BoxCompanyIcon, authMode: AuthMode.OAuth, diff --git a/apps/sim/blocks/blocks/brandfetch.ts b/apps/sim/blocks/blocks/brandfetch.ts index 68bbcd1db3..6b1965b8ba 100644 --- a/apps/sim/blocks/blocks/brandfetch.ts +++ b/apps/sim/blocks/blocks/brandfetch.ts @@ -1,6 +1,6 @@ import { BrandfetchIcon } from '@/components/icons' import type { BlockConfig } from '@/blocks/types' -import { AuthMode } from '@/blocks/types' +import { AuthMode, IntegrationType } from '@/blocks/types' import type { BrandfetchGetBrandResponse, BrandfetchSearchResponse } from '@/tools/brandfetch/types' export const BrandfetchBlock: BlockConfig = { @@ -11,6 +11,8 @@ export const BrandfetchBlock: BlockConfig = { @@ -11,6 +11,8 @@ export const BrowserUseBlock: BlockConfig = { 'Integrate Browser Use into the workflow. Can navigate the web and perform actions as if a real user was interacting with the browser.', docsLink: 'https://docs.sim.ai/tools/browser_use', category: 'tools', + integrationType: IntegrationType.Automation, + tags: ['web-scraping', 'automation', 'agentic'], bgColor: '#181C1E', icon: BrowserUseIcon, subBlocks: [ diff --git a/apps/sim/blocks/blocks/calcom.ts b/apps/sim/blocks/blocks/calcom.ts index 0a32aa854d..2b08bac416 100644 --- a/apps/sim/blocks/blocks/calcom.ts +++ b/apps/sim/blocks/blocks/calcom.ts @@ -1,6 +1,6 @@ import { CalComIcon } from '@/components/icons' import type { BlockConfig } from '@/blocks/types' -import { AuthMode } from '@/blocks/types' +import { AuthMode, IntegrationType } from '@/blocks/types' import type { ToolResponse } from '@/tools/types' import { getTrigger } from '@/triggers' @@ -14,6 +14,8 @@ export const CalComBlock: BlockConfig = { 'Integrate Cal.com into your workflow. Create and manage bookings, event types, schedules, and check availability slots. Supports creating, listing, rescheduling, and canceling bookings, as well as managing event types and schedules. Can also trigger workflows based on Cal.com webhook events (booking created, cancelled, rescheduled). Connect your Cal.com account via OAuth.', docsLink: 'https://docs.sim.ai/tools/calcom', category: 'tools', + integrationType: IntegrationType.Productivity, + tags: ['scheduling', 'calendar', 'meeting'], bgColor: '#FFFFFE', icon: CalComIcon, subBlocks: [ diff --git a/apps/sim/blocks/blocks/calendly.ts b/apps/sim/blocks/blocks/calendly.ts index 4f4bfcce69..aa99278402 100644 --- a/apps/sim/blocks/blocks/calendly.ts +++ b/apps/sim/blocks/blocks/calendly.ts @@ -1,6 +1,6 @@ import { CalendlyIcon } from '@/components/icons' import type { BlockConfig } from '@/blocks/types' -import { AuthMode } from '@/blocks/types' +import { AuthMode, IntegrationType } from '@/blocks/types' import type { ToolResponse } from '@/tools/types' import { getTrigger } from '@/triggers' @@ -14,6 +14,8 @@ export const CalendlyBlock: BlockConfig = { 'Integrate Calendly into your workflow. Manage event types, scheduled events, invitees, and webhooks. Can also trigger workflows based on Calendly webhook events (invitee scheduled, invitee canceled, routing form submitted). Requires Personal Access Token.', docsLink: 'https://docs.sim.ai/tools/calendly', category: 'tools', + integrationType: IntegrationType.Productivity, + tags: ['scheduling', 'calendar', 'meeting'], bgColor: '#FFFFFF', icon: CalendlyIcon, subBlocks: [ diff --git a/apps/sim/blocks/blocks/circleback.ts b/apps/sim/blocks/blocks/circleback.ts index b6fc448c87..519549cc70 100644 --- a/apps/sim/blocks/blocks/circleback.ts +++ b/apps/sim/blocks/blocks/circleback.ts @@ -1,5 +1,6 @@ import { CirclebackIcon } from '@/components/icons' import type { BlockConfig } from '@/blocks/types' +import { IntegrationType } from '@/blocks/types' import { getTrigger } from '@/triggers' export const CirclebackBlock: BlockConfig = { @@ -9,6 +10,8 @@ export const CirclebackBlock: BlockConfig = { longDescription: 'Receive meeting notes, action items, transcripts, and recordings when meetings are processed. Circleback uses webhooks to push data to your workflows.', category: 'triggers', + integrationType: IntegrationType.AI, + tags: ['meeting', 'note-taking', 'automation'], bgColor: 'linear-gradient(180deg, #E0F7FA 0%, #FFFFFF 100%)', docsLink: 'https://docs.sim.ai/tools/circleback', icon: CirclebackIcon, diff --git a/apps/sim/blocks/blocks/clay.ts b/apps/sim/blocks/blocks/clay.ts index 0d981c9f3e..b662cb091b 100644 --- a/apps/sim/blocks/blocks/clay.ts +++ b/apps/sim/blocks/blocks/clay.ts @@ -1,5 +1,5 @@ import { ClayIcon } from '@/components/icons' -import { AuthMode, type BlockConfig } from '@/blocks/types' +import { AuthMode, type BlockConfig, IntegrationType } from '@/blocks/types' import type { ClayPopulateResponse } from '@/tools/clay/types' export const ClayBlock: BlockConfig = { @@ -10,6 +10,8 @@ export const ClayBlock: BlockConfig = { longDescription: 'Integrate Clay into the workflow. Can populate a table with data.', docsLink: 'https://docs.sim.ai/tools/clay', category: 'tools', + integrationType: IntegrationType.SalesIntelligence, + tags: ['enrichment', 'sales-engagement', 'data-analytics'], bgColor: '#E0E0E0', icon: ClayIcon, subBlocks: [ diff --git a/apps/sim/blocks/blocks/clerk.ts b/apps/sim/blocks/blocks/clerk.ts index 246d50d4e6..a88d67be27 100644 --- a/apps/sim/blocks/blocks/clerk.ts +++ b/apps/sim/blocks/blocks/clerk.ts @@ -1,5 +1,6 @@ import { ClerkIcon } from '@/components/icons' import type { BlockConfig } from '@/blocks/types' +import { IntegrationType } from '@/blocks/types' import type { ClerkResponse } from '@/tools/clerk/types' export const ClerkBlock: BlockConfig = { @@ -10,6 +11,8 @@ export const ClerkBlock: BlockConfig = { 'Integrate Clerk authentication and user management into your workflow. Create, update, delete, and list users. Manage organizations and their memberships. Monitor and control user sessions.', docsLink: 'https://docs.sim.ai/tools/clerk', category: 'tools', + integrationType: IntegrationType.Security, + tags: ['identity', 'automation'], bgColor: '#131316', icon: ClerkIcon, diff --git a/apps/sim/blocks/blocks/cloudflare.ts b/apps/sim/blocks/blocks/cloudflare.ts index d1a264d718..9ef661fc81 100644 --- a/apps/sim/blocks/blocks/cloudflare.ts +++ b/apps/sim/blocks/blocks/cloudflare.ts @@ -1,5 +1,5 @@ import { CloudflareIcon } from '@/components/icons' -import { AuthMode, type BlockConfig } from '@/blocks/types' +import { AuthMode, type BlockConfig, IntegrationType } from '@/blocks/types' import type { CloudflareResponse } from '@/tools/cloudflare/types' export const CloudflareBlock: BlockConfig = { @@ -11,6 +11,8 @@ export const CloudflareBlock: BlockConfig = { 'Integrate Cloudflare into the workflow. Manage zones (domains), DNS records, SSL/TLS certificates, zone settings, DNS analytics, and cache purging via the Cloudflare API.', docsLink: 'https://docs.sim.ai/tools/cloudflare', category: 'tools', + integrationType: IntegrationType.DeveloperTools, + tags: ['cloud', 'monitoring'], bgColor: '#F5F6FA', icon: CloudflareIcon, subBlocks: [ diff --git a/apps/sim/blocks/blocks/confluence.ts b/apps/sim/blocks/blocks/confluence.ts index ad52791c83..8d90cfda4c 100644 --- a/apps/sim/blocks/blocks/confluence.ts +++ b/apps/sim/blocks/blocks/confluence.ts @@ -1,7 +1,7 @@ import { ConfluenceIcon } from '@/components/icons' import { getScopesForService } from '@/lib/oauth/utils' import type { BlockConfig } from '@/blocks/types' -import { AuthMode } from '@/blocks/types' +import { AuthMode, IntegrationType } from '@/blocks/types' import { normalizeFileInput } from '@/blocks/utils' import type { ConfluenceResponse } from '@/tools/confluence/types' import { getTrigger } from '@/triggers' @@ -16,6 +16,8 @@ export const ConfluenceBlock: BlockConfig = { 'Integrate Confluence into the workflow. Can read, create, update, delete pages, manage comments, attachments, labels, and search content.', docsLink: 'https://docs.sim.ai/tools/confluence', category: 'tools', + integrationType: IntegrationType.Documents, + tags: ['knowledge-base', 'content-management', 'note-taking'], bgColor: '#E0E0E0', icon: ConfluenceIcon, subBlocks: [ diff --git a/apps/sim/blocks/blocks/cursor.ts b/apps/sim/blocks/blocks/cursor.ts index 3c96fc78e6..60ceec13e3 100644 --- a/apps/sim/blocks/blocks/cursor.ts +++ b/apps/sim/blocks/blocks/cursor.ts @@ -1,6 +1,6 @@ import { CursorIcon } from '@/components/icons' import type { BlockConfig } from '@/blocks/types' -import { AuthMode } from '@/blocks/types' +import { AuthMode, IntegrationType } from '@/blocks/types' import { createVersionedToolSelector } from '@/blocks/utils' import type { CursorResponse } from '@/tools/cursor/types' @@ -12,6 +12,8 @@ export const CursorBlock: BlockConfig = { 'Interact with Cursor Cloud Agents API to launch AI agents that can work on your GitHub repositories. Supports launching agents, adding follow-up instructions, checking status, viewing conversations, and managing agent lifecycle.', docsLink: 'https://cursor.com/docs/cloud-agent/api/endpoints', category: 'tools', + integrationType: IntegrationType.DeveloperTools, + tags: ['agentic', 'automation'], bgColor: '#1E1E1E', icon: CursorIcon, authMode: AuthMode.ApiKey, diff --git a/apps/sim/blocks/blocks/databricks.ts b/apps/sim/blocks/blocks/databricks.ts index d4473fd41e..3985fb9afc 100644 --- a/apps/sim/blocks/blocks/databricks.ts +++ b/apps/sim/blocks/blocks/databricks.ts @@ -1,6 +1,6 @@ import { DatabricksIcon } from '@/components/icons' import type { BlockConfig } from '@/blocks/types' -import { AuthMode } from '@/blocks/types' +import { AuthMode, IntegrationType } from '@/blocks/types' import type { DatabricksResponse } from '@/tools/databricks/types' export const DatabricksBlock: BlockConfig = { @@ -12,6 +12,8 @@ export const DatabricksBlock: BlockConfig = { 'Connect to Databricks to execute SQL queries against SQL warehouses, trigger and monitor job runs, manage clusters, and retrieve run outputs. Requires a Personal Access Token and workspace host URL.', docsLink: 'https://docs.sim.ai/tools/databricks', category: 'tools', + integrationType: IntegrationType.Databases, + tags: ['data-warehouse', 'data-analytics', 'cloud'], bgColor: '#F9F7F4', icon: DatabricksIcon, subBlocks: [ diff --git a/apps/sim/blocks/blocks/datadog.ts b/apps/sim/blocks/blocks/datadog.ts index ac06a5b87c..c66ad2dc1e 100644 --- a/apps/sim/blocks/blocks/datadog.ts +++ b/apps/sim/blocks/blocks/datadog.ts @@ -1,6 +1,6 @@ import { DatadogIcon } from '@/components/icons' import type { BlockConfig } from '@/blocks/types' -import { AuthMode } from '@/blocks/types' +import { AuthMode, IntegrationType } from '@/blocks/types' import type { DatadogResponse } from '@/tools/datadog/types' export const DatadogBlock: BlockConfig = { @@ -12,6 +12,8 @@ export const DatadogBlock: BlockConfig = { 'Integrate Datadog monitoring into workflows. Submit metrics, manage monitors, query logs, create events, handle downtimes, and more.', docsLink: 'https://docs.sim.ai/tools/datadog', category: 'tools', + integrationType: IntegrationType.Analytics, + tags: ['monitoring', 'incident-management', 'error-tracking'], bgColor: '#632CA6', icon: DatadogIcon, subBlocks: [ diff --git a/apps/sim/blocks/blocks/devin.ts b/apps/sim/blocks/blocks/devin.ts index 8289fc3476..291722e7d7 100644 --- a/apps/sim/blocks/blocks/devin.ts +++ b/apps/sim/blocks/blocks/devin.ts @@ -1,6 +1,6 @@ import { DevinIcon } from '@/components/icons' import type { BlockConfig } from '@/blocks/types' -import { AuthMode } from '@/blocks/types' +import { AuthMode, IntegrationType } from '@/blocks/types' export const DevinBlock: BlockConfig = { type: 'devin', @@ -17,6 +17,8 @@ export const DevinBlock: BlockConfig = { `, docsLink: 'https://docs.sim.ai/tools/devin', category: 'tools', + integrationType: IntegrationType.DeveloperTools, + tags: ['agentic', 'automation'], bgColor: '#12141A', icon: DevinIcon, authMode: AuthMode.ApiKey, diff --git a/apps/sim/blocks/blocks/discord.ts b/apps/sim/blocks/blocks/discord.ts index 0e245c9e82..992874e4e0 100644 --- a/apps/sim/blocks/blocks/discord.ts +++ b/apps/sim/blocks/blocks/discord.ts @@ -1,6 +1,6 @@ import { DiscordIcon } from '@/components/icons' import type { BlockConfig } from '@/blocks/types' -import { AuthMode } from '@/blocks/types' +import { AuthMode, IntegrationType } from '@/blocks/types' import { normalizeFileInput } from '@/blocks/utils' import type { DiscordResponse } from '@/tools/discord/types' @@ -12,6 +12,8 @@ export const DiscordBlock: BlockConfig = { longDescription: 'Comprehensive Discord integration: messages, threads, channels, roles, members, invites, and webhooks.', category: 'tools', + integrationType: IntegrationType.Communication, + tags: ['messaging', 'webhooks', 'automation'], bgColor: '#5865F2', icon: DiscordIcon, docsLink: 'https://docs.sim.ai/tools/discord', diff --git a/apps/sim/blocks/blocks/docusign.ts b/apps/sim/blocks/blocks/docusign.ts index 3dd9cb11bf..d66c001f37 100644 --- a/apps/sim/blocks/blocks/docusign.ts +++ b/apps/sim/blocks/blocks/docusign.ts @@ -1,7 +1,7 @@ import { DocuSignIcon } from '@/components/icons' import { getScopesForService } from '@/lib/oauth/utils' import type { BlockConfig } from '@/blocks/types' -import { AuthMode } from '@/blocks/types' +import { AuthMode, IntegrationType } from '@/blocks/types' import { normalizeFileInput } from '@/blocks/utils' import type { DocuSignResponse } from '@/tools/docusign/types' @@ -13,6 +13,8 @@ export const DocuSignBlock: BlockConfig = { 'Create and send envelopes for e-signature, use templates, check signing status, download signed documents, and manage recipients with DocuSign.', docsLink: 'https://docs.sim.ai/tools/docusign', category: 'tools', + integrationType: IntegrationType.Documents, + tags: ['e-signatures', 'document-processing'], bgColor: '#FFFFFF', icon: DocuSignIcon, authMode: AuthMode.OAuth, diff --git a/apps/sim/blocks/blocks/dropbox.ts b/apps/sim/blocks/blocks/dropbox.ts index cec6c26a85..1290787726 100644 --- a/apps/sim/blocks/blocks/dropbox.ts +++ b/apps/sim/blocks/blocks/dropbox.ts @@ -1,7 +1,7 @@ import { DropboxIcon } from '@/components/icons' import { getScopesForService } from '@/lib/oauth/utils' import type { BlockConfig } from '@/blocks/types' -import { AuthMode } from '@/blocks/types' +import { AuthMode, IntegrationType } from '@/blocks/types' import { normalizeFileInput } from '@/blocks/utils' import type { DropboxResponse } from '@/tools/dropbox/types' @@ -14,6 +14,8 @@ export const DropboxBlock: BlockConfig = { 'Integrate Dropbox into your workflow for file management, sharing, and collaboration. Upload files, download content, create folders, manage shared links, and more.', docsLink: 'https://docs.sim.ai/tools/dropbox', category: 'tools', + integrationType: IntegrationType.FileStorage, + tags: ['cloud', 'document-processing'], icon: DropboxIcon, bgColor: '#0061FF', subBlocks: [ diff --git a/apps/sim/blocks/blocks/dspy.ts b/apps/sim/blocks/blocks/dspy.ts index c2bf4a4b2e..5cf823d99c 100644 --- a/apps/sim/blocks/blocks/dspy.ts +++ b/apps/sim/blocks/blocks/dspy.ts @@ -1,5 +1,6 @@ import { DsPyIcon } from '@/components/icons' import type { BlockConfig } from '@/blocks/types' +import { IntegrationType } from '@/blocks/types' export const DSPyBlock: BlockConfig = { type: 'dspy', @@ -8,6 +9,8 @@ export const DSPyBlock: BlockConfig = { longDescription: 'Integrate with your self-hosted DSPy programs for LLM-powered predictions. Supports Predict, Chain of Thought, and ReAct agents. DSPy is the framework for programming—not prompting—language models.', category: 'tools', + integrationType: IntegrationType.AI, + tags: ['llm', 'agentic', 'automation'], bgColor: '#E0E0E0', icon: DsPyIcon, diff --git a/apps/sim/blocks/blocks/dub.ts b/apps/sim/blocks/blocks/dub.ts index 3e2e8fb174..4894ab1152 100644 --- a/apps/sim/blocks/blocks/dub.ts +++ b/apps/sim/blocks/blocks/dub.ts @@ -1,6 +1,6 @@ import { DubIcon } from '@/components/icons' import type { BlockConfig } from '@/blocks/types' -import { AuthMode } from '@/blocks/types' +import { AuthMode, IntegrationType } from '@/blocks/types' import type { DubResponse } from '@/tools/dub/types' export const DubBlock: BlockConfig = { @@ -12,6 +12,8 @@ export const DubBlock: BlockConfig = { 'Create, manage, and track short links with Dub. Supports custom domains, UTM parameters, link analytics, and more.', docsLink: 'https://docs.sim.ai/tools/dub', category: 'tools', + integrationType: IntegrationType.DeveloperTools, + tags: ['link-management', 'marketing', 'data-analytics'], bgColor: '#181C1E', icon: DubIcon, subBlocks: [ diff --git a/apps/sim/blocks/blocks/duckduckgo.ts b/apps/sim/blocks/blocks/duckduckgo.ts index 933e6b6a23..87d4d84a4f 100644 --- a/apps/sim/blocks/blocks/duckduckgo.ts +++ b/apps/sim/blocks/blocks/duckduckgo.ts @@ -1,5 +1,6 @@ import { DuckDuckGoIcon } from '@/components/icons' import type { BlockConfig } from '@/blocks/types' +import { IntegrationType } from '@/blocks/types' import type { DuckDuckGoResponse } from '@/tools/duckduckgo/types' export const DuckDuckGoBlock: BlockConfig = { @@ -10,6 +11,8 @@ export const DuckDuckGoBlock: BlockConfig = { 'Search the web using DuckDuckGo Instant Answers API. Returns instant answers, abstracts, related topics, and more. Free to use without an API key.', docsLink: 'https://docs.sim.ai/tools/duckduckgo', category: 'tools', + integrationType: IntegrationType.Search, + tags: ['web-scraping', 'seo'], bgColor: '#FFFFFF', icon: DuckDuckGoIcon, subBlocks: [ diff --git a/apps/sim/blocks/blocks/dynamodb.ts b/apps/sim/blocks/blocks/dynamodb.ts index 11e51c7b45..628174f209 100644 --- a/apps/sim/blocks/blocks/dynamodb.ts +++ b/apps/sim/blocks/blocks/dynamodb.ts @@ -1,5 +1,6 @@ import { DynamoDBIcon } from '@/components/icons' import type { BlockConfig } from '@/blocks/types' +import { IntegrationType } from '@/blocks/types' import type { DynamoDBIntrospectResponse, DynamoDBResponse } from '@/tools/dynamodb/types' export const DynamoDBBlock: BlockConfig = { @@ -10,6 +11,8 @@ export const DynamoDBBlock: BlockConfig = { @@ -12,6 +12,8 @@ export const ElasticsearchBlock: BlockConfig = { 'Integrate Elasticsearch into workflows for powerful search, indexing, and data management. Supports document CRUD operations, advanced search queries, bulk operations, index management, and cluster monitoring. Works with both self-hosted and Elastic Cloud deployments.', docsLink: 'https://docs.sim.ai/tools/elasticsearch', category: 'tools', + integrationType: IntegrationType.Databases, + tags: ['vector-search', 'data-analytics'], bgColor: '#E0E0E0', icon: ElasticsearchIcon, subBlocks: [ diff --git a/apps/sim/blocks/blocks/elevenlabs.ts b/apps/sim/blocks/blocks/elevenlabs.ts index 58d79fe67a..805a38b4a7 100644 --- a/apps/sim/blocks/blocks/elevenlabs.ts +++ b/apps/sim/blocks/blocks/elevenlabs.ts @@ -1,5 +1,5 @@ import { ElevenLabsIcon } from '@/components/icons' -import { AuthMode, type BlockConfig } from '@/blocks/types' +import { AuthMode, type BlockConfig, IntegrationType } from '@/blocks/types' import type { ElevenLabsBlockResponse } from '@/tools/elevenlabs/types' export const ElevenLabsBlock: BlockConfig = { @@ -10,6 +10,8 @@ export const ElevenLabsBlock: BlockConfig = { longDescription: 'Integrate ElevenLabs into the workflow. Can convert text to speech.', docsLink: 'https://docs.sim.ai/tools/elevenlabs', category: 'tools', + integrationType: IntegrationType.Media, + tags: ['text-to-speech'], bgColor: '#181C1E', icon: ElevenLabsIcon, diff --git a/apps/sim/blocks/blocks/enrich.ts b/apps/sim/blocks/blocks/enrich.ts index 40081c16f0..90d594398d 100644 --- a/apps/sim/blocks/blocks/enrich.ts +++ b/apps/sim/blocks/blocks/enrich.ts @@ -1,6 +1,6 @@ import { EnrichSoIcon } from '@/components/icons' import type { BlockConfig } from '@/blocks/types' -import { AuthMode } from '@/blocks/types' +import { AuthMode, IntegrationType } from '@/blocks/types' export const EnrichBlock: BlockConfig = { type: 'enrich', @@ -11,6 +11,8 @@ export const EnrichBlock: BlockConfig = { 'Access real-time B2B data intelligence with Enrich.so. Enrich profiles from email addresses, find work emails from LinkedIn, verify email deliverability, search for people and companies, and analyze LinkedIn post engagement.', docsLink: 'https://docs.enrich.so/', category: 'tools', + integrationType: IntegrationType.SalesIntelligence, + tags: ['enrichment', 'data-analytics'], bgColor: '#E5E5E6', icon: EnrichSoIcon, subBlocks: [ diff --git a/apps/sim/blocks/blocks/evernote.ts b/apps/sim/blocks/blocks/evernote.ts index acc7fde5cc..af80ad1cd8 100644 --- a/apps/sim/blocks/blocks/evernote.ts +++ b/apps/sim/blocks/blocks/evernote.ts @@ -1,6 +1,6 @@ import { EvernoteIcon } from '@/components/icons' import type { BlockConfig } from '@/blocks/types' -import { AuthMode } from '@/blocks/types' +import { AuthMode, IntegrationType } from '@/blocks/types' export const EvernoteBlock: BlockConfig = { type: 'evernote', @@ -10,6 +10,8 @@ export const EvernoteBlock: BlockConfig = { 'Integrate with Evernote to manage notes, notebooks, and tags. Create, read, update, copy, search, and delete notes. Create and list notebooks and tags.', docsLink: 'https://docs.sim.ai/tools/evernote', category: 'tools', + integrationType: IntegrationType.Documents, + tags: ['note-taking', 'knowledge-base'], bgColor: '#E0E0E0', icon: EvernoteIcon, authMode: AuthMode.ApiKey, diff --git a/apps/sim/blocks/blocks/exa.ts b/apps/sim/blocks/blocks/exa.ts index 193fe9c292..483dba6458 100644 --- a/apps/sim/blocks/blocks/exa.ts +++ b/apps/sim/blocks/blocks/exa.ts @@ -1,6 +1,6 @@ import { ExaAIIcon } from '@/components/icons' import type { BlockConfig } from '@/blocks/types' -import { AuthMode } from '@/blocks/types' +import { AuthMode, IntegrationType } from '@/blocks/types' import type { ExaResponse } from '@/tools/exa/types' export const ExaBlock: BlockConfig = { @@ -12,6 +12,8 @@ export const ExaBlock: BlockConfig = { 'Integrate Exa into the workflow. Can search, get contents, find similar links, answer a question, and perform research.', docsLink: 'https://docs.sim.ai/tools/exa', category: 'tools', + integrationType: IntegrationType.Search, + tags: ['web-scraping', 'enrichment'], bgColor: '#1F40ED', icon: ExaAIIcon, subBlocks: [ diff --git a/apps/sim/blocks/blocks/fathom.ts b/apps/sim/blocks/blocks/fathom.ts index b6d8dd4db1..7e8a83f2fe 100644 --- a/apps/sim/blocks/blocks/fathom.ts +++ b/apps/sim/blocks/blocks/fathom.ts @@ -1,5 +1,5 @@ import { FathomIcon } from '@/components/icons' -import { AuthMode, type BlockConfig } from '@/blocks/types' +import { AuthMode, type BlockConfig, IntegrationType } from '@/blocks/types' import type { FathomResponse } from '@/tools/fathom/types' import { getTrigger } from '@/triggers' import { fathomTriggerOptions } from '@/triggers/fathom/utils' @@ -14,6 +14,8 @@ export const FathomBlock: BlockConfig = { 'Integrate Fathom AI Notetaker into your workflow. List meetings, get transcripts and summaries, and manage team members and teams. Can also trigger workflows when new meeting content is ready.', docsLink: 'https://docs.sim.ai/tools/fathom', category: 'tools', + integrationType: IntegrationType.Analytics, + tags: ['meeting', 'note-taking'], bgColor: '#181C1E', icon: FathomIcon, subBlocks: [ diff --git a/apps/sim/blocks/blocks/file.ts b/apps/sim/blocks/blocks/file.ts index f9b3058f25..9e6b14b7d9 100644 --- a/apps/sim/blocks/blocks/file.ts +++ b/apps/sim/blocks/blocks/file.ts @@ -2,6 +2,7 @@ import { createLogger } from '@sim/logger' import { DocumentIcon } from '@/components/icons' import { inferContextFromKey } from '@/lib/uploads/utils/file-utils' import type { BlockConfig, SubBlockType } from '@/blocks/types' +import { IntegrationType } from '@/blocks/types' import { createVersionedToolSelector, normalizeFileInput } from '@/blocks/utils' import type { FileParserOutput, FileParserV3Output } from '@/tools/file/types' @@ -53,6 +54,8 @@ export const FileBlock: BlockConfig = { `, docsLink: 'https://docs.sim.ai/tools/file', category: 'tools', + integrationType: IntegrationType.FileStorage, + tags: ['document-processing'], bgColor: '#40916C', icon: DocumentIcon, hideFromToolbar: true, @@ -252,6 +255,8 @@ export const FileV3Block: BlockConfig = { 'Upload files directly or import from external URLs to get UserFile objects for use in other blocks.', docsLink: 'https://docs.sim.ai/tools/file', category: 'tools', + integrationType: IntegrationType.FileStorage, + tags: ['document-processing'], bgColor: '#40916C', icon: DocumentIcon, subBlocks: [ diff --git a/apps/sim/blocks/blocks/firecrawl.ts b/apps/sim/blocks/blocks/firecrawl.ts index add2d60ff5..51ce40ed12 100644 --- a/apps/sim/blocks/blocks/firecrawl.ts +++ b/apps/sim/blocks/blocks/firecrawl.ts @@ -1,6 +1,6 @@ import { FirecrawlIcon } from '@/components/icons' import type { BlockConfig } from '@/blocks/types' -import { AuthMode } from '@/blocks/types' +import { AuthMode, IntegrationType } from '@/blocks/types' import type { FirecrawlResponse } from '@/tools/firecrawl/types' export const FirecrawlBlock: BlockConfig = { @@ -12,6 +12,8 @@ export const FirecrawlBlock: BlockConfig = { 'Integrate Firecrawl into the workflow. Scrape pages, search the web, crawl entire sites, map URL structures, and extract structured data with AI.', docsLink: 'https://docs.sim.ai/tools/firecrawl', category: 'tools', + integrationType: IntegrationType.Automation, + tags: ['web-scraping', 'automation'], bgColor: '#181C1E', icon: FirecrawlIcon, subBlocks: [ diff --git a/apps/sim/blocks/blocks/fireflies.ts b/apps/sim/blocks/blocks/fireflies.ts index 347ffb04f4..9812095fc4 100644 --- a/apps/sim/blocks/blocks/fireflies.ts +++ b/apps/sim/blocks/blocks/fireflies.ts @@ -1,7 +1,7 @@ import { FirefliesIcon } from '@/components/icons' import { resolveHttpsUrlFromFileInput } from '@/lib/uploads/utils/file-utils' import type { BlockConfig } from '@/blocks/types' -import { AuthMode } from '@/blocks/types' +import { AuthMode, IntegrationType } from '@/blocks/types' import { normalizeFileInput } from '@/blocks/utils' import type { FirefliesResponse } from '@/tools/fireflies/types' import { getTrigger } from '@/triggers' @@ -17,6 +17,8 @@ export const FirefliesBlock: BlockConfig = { 'Integrate Fireflies.ai into the workflow. Manage meeting transcripts, add bot to live meetings, create soundbites, and more. Can also trigger workflows when transcriptions complete.', docsLink: 'https://docs.sim.ai/tools/fireflies', category: 'tools', + integrationType: IntegrationType.Media, + tags: ['meeting', 'speech-to-text', 'note-taking'], icon: FirefliesIcon, bgColor: '#100730', subBlocks: [ @@ -613,6 +615,8 @@ export const FirefliesV2Block: BlockConfig = { name: 'Fireflies', description: 'Interact with Fireflies.ai meeting transcripts and recordings', hideFromToolbar: false, + integrationType: IntegrationType.Media, + tags: ['meeting', 'speech-to-text', 'note-taking'], subBlocks: firefliesV2SubBlocks, tools: { ...FirefliesBlock.tools, diff --git a/apps/sim/blocks/blocks/gamma.ts b/apps/sim/blocks/blocks/gamma.ts index 27aad52221..5def6c2f20 100644 --- a/apps/sim/blocks/blocks/gamma.ts +++ b/apps/sim/blocks/blocks/gamma.ts @@ -1,5 +1,5 @@ import { GammaIcon } from '@/components/icons' -import { AuthMode, type BlockConfig } from '@/blocks/types' +import { AuthMode, type BlockConfig, IntegrationType } from '@/blocks/types' import type { GammaResponse } from '@/tools/gamma/types' export const GammaBlock: BlockConfig = { @@ -10,6 +10,8 @@ export const GammaBlock: BlockConfig = { 'Integrate Gamma into the workflow. Can generate presentations, documents, webpages, and social posts from text, create from templates, check generation status, and browse themes and folders.', docsLink: 'https://docs.sim.ai/tools/gamma', category: 'tools', + integrationType: IntegrationType.Design, + tags: ['document-processing', 'content-management'], bgColor: '#002253', icon: GammaIcon, authMode: AuthMode.ApiKey, diff --git a/apps/sim/blocks/blocks/github.ts b/apps/sim/blocks/blocks/github.ts index 0d8f1dbf24..4ce959f28e 100644 --- a/apps/sim/blocks/blocks/github.ts +++ b/apps/sim/blocks/blocks/github.ts @@ -1,6 +1,6 @@ import { GithubIcon } from '@/components/icons' import type { BlockConfig } from '@/blocks/types' -import { AuthMode } from '@/blocks/types' +import { AuthMode, IntegrationType } from '@/blocks/types' import { createVersionedToolSelector } from '@/blocks/utils' import type { GitHubResponse } from '@/tools/github/types' import { getTrigger } from '@/triggers' @@ -14,6 +14,8 @@ export const GitHubBlock: BlockConfig = { 'Integrate Github into the workflow. Can get get PR details, create PR comment, get repository info, and get latest commit. Can be used in trigger mode to trigger a workflow when a PR is created, commented on, or a commit is pushed.', docsLink: 'https://docs.sim.ai/tools/github', category: 'tools', + integrationType: IntegrationType.DeveloperTools, + tags: ['version-control', 'ci-cd'], bgColor: '#181C1E', icon: GithubIcon, triggerAllowed: true, @@ -2023,6 +2025,8 @@ export const GitHubV2Block: BlockConfig = { type: 'github_v2', name: 'GitHub', hideFromToolbar: false, + integrationType: IntegrationType.DeveloperTools, + tags: ['version-control', 'ci-cd'], tools: { ...GitHubBlock.tools, access: (GitHubBlock.tools?.access || []).map((toolId) => `${toolId}_v2`), diff --git a/apps/sim/blocks/blocks/gitlab.ts b/apps/sim/blocks/blocks/gitlab.ts index 9d25f8fe1e..845ffa4f07 100644 --- a/apps/sim/blocks/blocks/gitlab.ts +++ b/apps/sim/blocks/blocks/gitlab.ts @@ -1,6 +1,6 @@ import { GitLabIcon } from '@/components/icons' import type { BlockConfig } from '@/blocks/types' -import { AuthMode } from '@/blocks/types' +import { AuthMode, IntegrationType } from '@/blocks/types' import type { GitLabResponse } from '@/tools/gitlab/types' export const GitLabBlock: BlockConfig = { @@ -13,6 +13,8 @@ export const GitLabBlock: BlockConfig = { 'Integrate GitLab into the workflow. Can manage projects, issues, merge requests, pipelines, and add comments. Supports all core GitLab DevOps operations.', docsLink: 'https://docs.sim.ai/tools/gitlab', category: 'tools', + integrationType: IntegrationType.DeveloperTools, + tags: ['version-control', 'ci-cd'], icon: GitLabIcon, bgColor: '#E0E0E0', subBlocks: [ diff --git a/apps/sim/blocks/blocks/gmail.ts b/apps/sim/blocks/blocks/gmail.ts index fb210593a1..ca9f6eda69 100644 --- a/apps/sim/blocks/blocks/gmail.ts +++ b/apps/sim/blocks/blocks/gmail.ts @@ -1,7 +1,7 @@ import { GmailIcon } from '@/components/icons' import { getScopesForService } from '@/lib/oauth/utils' import type { BlockConfig } from '@/blocks/types' -import { AuthMode } from '@/blocks/types' +import { AuthMode, IntegrationType } from '@/blocks/types' import { createVersionedToolSelector, normalizeFileInput } from '@/blocks/utils' import type { GmailToolResponse } from '@/tools/gmail/types' import { getTrigger } from '@/triggers' @@ -46,6 +46,8 @@ export const GmailBlock: BlockConfig = { 'Integrate Gmail into the workflow. Can send, read, search, and move emails. Can be used in trigger mode to trigger a workflow when a new email is received.', docsLink: 'https://docs.sim.ai/tools/gmail', category: 'tools', + integrationType: IntegrationType.Email, + tags: ['google-workspace', 'messaging'], bgColor: '#E0E0E0', icon: GmailIcon, hideFromToolbar: true, @@ -553,6 +555,8 @@ export const GmailV2Block: BlockConfig = { type: 'gmail_v2', name: 'Gmail', hideFromToolbar: false, + integrationType: IntegrationType.Email, + tags: ['google-workspace', 'messaging'], tools: { ...GmailBlock.tools, access: [ diff --git a/apps/sim/blocks/blocks/gong.ts b/apps/sim/blocks/blocks/gong.ts index 5623efe408..33adaf2874 100644 --- a/apps/sim/blocks/blocks/gong.ts +++ b/apps/sim/blocks/blocks/gong.ts @@ -1,5 +1,5 @@ import { GongIcon } from '@/components/icons' -import { AuthMode, type BlockConfig } from '@/blocks/types' +import { AuthMode, type BlockConfig, IntegrationType } from '@/blocks/types' import type { GongResponse } from '@/tools/gong/types' export const GongBlock: BlockConfig = { @@ -11,6 +11,8 @@ export const GongBlock: BlockConfig = { 'Integrate Gong into your workflow. Access call recordings, transcripts, user data, activity stats, scorecards, trackers, library content, coaching metrics, and more via the Gong API.', docsLink: 'https://docs.sim.ai/tools/gong', category: 'tools', + integrationType: IntegrationType.SalesIntelligence, + tags: ['meeting', 'sales-engagement', 'speech-to-text'], bgColor: '#8039DF', icon: GongIcon, subBlocks: [ diff --git a/apps/sim/blocks/blocks/google.ts b/apps/sim/blocks/blocks/google.ts index 2cc817a702..c7370af563 100644 --- a/apps/sim/blocks/blocks/google.ts +++ b/apps/sim/blocks/blocks/google.ts @@ -1,6 +1,6 @@ import { GoogleIcon } from '@/components/icons' import type { BlockConfig } from '@/blocks/types' -import { AuthMode } from '@/blocks/types' +import { AuthMode, IntegrationType } from '@/blocks/types' import type { GoogleSearchResponse } from '@/tools/google/types' export const GoogleSearchBlock: BlockConfig = { @@ -11,6 +11,8 @@ export const GoogleSearchBlock: BlockConfig = { longDescription: 'Integrate Google Search into the workflow. Can search the web.', docsLink: 'https://docs.sim.ai/tools/google_search', category: 'tools', + integrationType: IntegrationType.Search, + tags: ['google-workspace', 'web-scraping', 'seo'], bgColor: '#E0E0E0', icon: GoogleIcon, diff --git a/apps/sim/blocks/blocks/google_ads.ts b/apps/sim/blocks/blocks/google_ads.ts index d482c72fed..8e20e42895 100644 --- a/apps/sim/blocks/blocks/google_ads.ts +++ b/apps/sim/blocks/blocks/google_ads.ts @@ -1,7 +1,7 @@ import { GoogleAdsIcon } from '@/components/icons' import { getScopesForService } from '@/lib/oauth/utils' import type { BlockConfig } from '@/blocks/types' -import { AuthMode } from '@/blocks/types' +import { AuthMode, IntegrationType } from '@/blocks/types' export const GoogleAdsBlock: BlockConfig = { type: 'google_ads', @@ -11,6 +11,8 @@ export const GoogleAdsBlock: BlockConfig = { 'Connect to Google Ads to list accessible accounts, list campaigns, view ad group details, get performance metrics, and run custom GAQL queries.', docsLink: 'https://docs.sim.ai/tools/google_ads', category: 'tools', + integrationType: IntegrationType.Analytics, + tags: ['marketing', 'google-workspace', 'data-analytics'], bgColor: '#E0E0E0', icon: GoogleAdsIcon, authMode: AuthMode.OAuth, diff --git a/apps/sim/blocks/blocks/google_bigquery.ts b/apps/sim/blocks/blocks/google_bigquery.ts index 44eb3d30a8..ee6d7014d1 100644 --- a/apps/sim/blocks/blocks/google_bigquery.ts +++ b/apps/sim/blocks/blocks/google_bigquery.ts @@ -1,7 +1,7 @@ import { GoogleBigQueryIcon } from '@/components/icons' import { getScopesForService } from '@/lib/oauth/utils' import type { BlockConfig } from '@/blocks/types' -import { AuthMode } from '@/blocks/types' +import { AuthMode, IntegrationType } from '@/blocks/types' export const GoogleBigQueryBlock: BlockConfig = { type: 'google_bigquery', @@ -11,6 +11,8 @@ export const GoogleBigQueryBlock: BlockConfig = { 'Connect to Google BigQuery to run SQL queries, list datasets and tables, get table metadata, and insert rows.', docsLink: 'https://docs.sim.ai/tools/google_bigquery', category: 'tools', + integrationType: IntegrationType.Databases, + tags: ['data-warehouse', 'google-workspace', 'data-analytics'], bgColor: '#E0E0E0', icon: GoogleBigQueryIcon, authMode: AuthMode.OAuth, diff --git a/apps/sim/blocks/blocks/google_books.ts b/apps/sim/blocks/blocks/google_books.ts index 1b36cd7e4a..033fd12948 100644 --- a/apps/sim/blocks/blocks/google_books.ts +++ b/apps/sim/blocks/blocks/google_books.ts @@ -1,6 +1,6 @@ import { GoogleBooksIcon } from '@/components/icons' import type { BlockConfig } from '@/blocks/types' -import { AuthMode } from '@/blocks/types' +import { AuthMode, IntegrationType } from '@/blocks/types' export const GoogleBooksBlock: BlockConfig = { type: 'google_books', @@ -11,6 +11,8 @@ export const GoogleBooksBlock: BlockConfig = { 'Search for books using the Google Books API. Find volumes by title, author, ISBN, or keywords, and retrieve detailed information about specific books including descriptions, ratings, and publication details.', docsLink: 'https://docs.sim.ai/tools/google_books', category: 'tools', + integrationType: IntegrationType.Search, + tags: ['google-workspace', 'knowledge-base', 'content-management'], bgColor: '#E0E0E0', icon: GoogleBooksIcon, diff --git a/apps/sim/blocks/blocks/google_calendar.ts b/apps/sim/blocks/blocks/google_calendar.ts index 24a35e1fbf..22b5acd29c 100644 --- a/apps/sim/blocks/blocks/google_calendar.ts +++ b/apps/sim/blocks/blocks/google_calendar.ts @@ -1,7 +1,7 @@ import { GoogleCalendarIcon } from '@/components/icons' import { getScopesForService } from '@/lib/oauth/utils' import type { BlockConfig } from '@/blocks/types' -import { AuthMode } from '@/blocks/types' +import { AuthMode, IntegrationType } from '@/blocks/types' import { createVersionedToolSelector } from '@/blocks/utils' import type { GoogleCalendarResponse } from '@/tools/google_calendar/types' @@ -14,6 +14,8 @@ export const GoogleCalendarBlock: BlockConfig = { 'Integrate Google Calendar into the workflow. Can create, read, update, and list calendar events.', docsLink: 'https://docs.sim.ai/tools/google_calendar', category: 'tools', + integrationType: IntegrationType.Productivity, + tags: ['calendar', 'scheduling', 'google-workspace'], bgColor: '#E0E0E0', icon: GoogleCalendarIcon, hideFromToolbar: true, @@ -648,6 +650,8 @@ export const GoogleCalendarV2Block: BlockConfig = { type: 'google_calendar_v2', name: 'Google Calendar', hideFromToolbar: false, + integrationType: IntegrationType.Productivity, + tags: ['calendar', 'scheduling', 'google-workspace'], tools: { ...GoogleCalendarBlock.tools, access: [ diff --git a/apps/sim/blocks/blocks/google_contacts.ts b/apps/sim/blocks/blocks/google_contacts.ts index 629b0a6001..5ba85d7dbb 100644 --- a/apps/sim/blocks/blocks/google_contacts.ts +++ b/apps/sim/blocks/blocks/google_contacts.ts @@ -1,7 +1,7 @@ import { GoogleContactsIcon } from '@/components/icons' import { getScopesForService } from '@/lib/oauth/utils' import type { BlockConfig } from '@/blocks/types' -import { AuthMode } from '@/blocks/types' +import { AuthMode, IntegrationType } from '@/blocks/types' import type { GoogleContactsResponse } from '@/tools/google_contacts/types' export const GoogleContactsBlock: BlockConfig = { @@ -13,6 +13,8 @@ export const GoogleContactsBlock: BlockConfig = { 'Integrate Google Contacts into the workflow. Can create, read, update, delete, list, and search contacts.', docsLink: 'https://docs.sim.ai/tools/google_contacts', category: 'tools', + integrationType: IntegrationType.Productivity, + tags: ['google-workspace', 'customer-support', 'enrichment'], bgColor: '#E0E0E0', icon: GoogleContactsIcon, subBlocks: [ diff --git a/apps/sim/blocks/blocks/google_docs.ts b/apps/sim/blocks/blocks/google_docs.ts index ac9098395e..d103a46796 100644 --- a/apps/sim/blocks/blocks/google_docs.ts +++ b/apps/sim/blocks/blocks/google_docs.ts @@ -1,7 +1,7 @@ import { GoogleDocsIcon } from '@/components/icons' import { getScopesForService } from '@/lib/oauth/utils' import type { BlockConfig } from '@/blocks/types' -import { AuthMode } from '@/blocks/types' +import { AuthMode, IntegrationType } from '@/blocks/types' import type { GoogleDocsResponse } from '@/tools/google_docs/types' export const GoogleDocsBlock: BlockConfig = { @@ -13,6 +13,8 @@ export const GoogleDocsBlock: BlockConfig = { 'Integrate Google Docs into the workflow. Can read, write, and create documents.', docsLink: 'https://docs.sim.ai/tools/google_docs', category: 'tools', + integrationType: IntegrationType.Documents, + tags: ['google-workspace', 'document-processing', 'content-management'], bgColor: '#E0E0E0', icon: GoogleDocsIcon, subBlocks: [ diff --git a/apps/sim/blocks/blocks/google_drive.ts b/apps/sim/blocks/blocks/google_drive.ts index 362d1c8042..cf9b988e9a 100644 --- a/apps/sim/blocks/blocks/google_drive.ts +++ b/apps/sim/blocks/blocks/google_drive.ts @@ -1,7 +1,7 @@ import { GoogleDriveIcon } from '@/components/icons' import { getScopesForService } from '@/lib/oauth/utils' import type { BlockConfig } from '@/blocks/types' -import { AuthMode } from '@/blocks/types' +import { AuthMode, IntegrationType } from '@/blocks/types' import { normalizeFileInput } from '@/blocks/utils' import type { GoogleDriveResponse } from '@/tools/google_drive/types' @@ -14,6 +14,8 @@ export const GoogleDriveBlock: BlockConfig = { 'Integrate Google Drive into the workflow. Can create, upload, download, copy, move, delete, share files and manage permissions.', docsLink: 'https://docs.sim.ai/tools/google_drive', category: 'tools', + integrationType: IntegrationType.FileStorage, + tags: ['cloud', 'google-workspace', 'document-processing'], bgColor: '#E0E0E0', icon: GoogleDriveIcon, subBlocks: [ diff --git a/apps/sim/blocks/blocks/google_forms.ts b/apps/sim/blocks/blocks/google_forms.ts index bf26311b38..a5bbf82952 100644 --- a/apps/sim/blocks/blocks/google_forms.ts +++ b/apps/sim/blocks/blocks/google_forms.ts @@ -1,6 +1,7 @@ import { GoogleFormsIcon } from '@/components/icons' import { getScopesForService } from '@/lib/oauth/utils' import type { BlockConfig } from '@/blocks/types' +import { IntegrationType } from '@/blocks/types' import { getTrigger } from '@/triggers' export const GoogleFormsBlock: BlockConfig = { @@ -11,6 +12,8 @@ export const GoogleFormsBlock: BlockConfig = { 'Integrate Google Forms into your workflow. Read form structure, get responses, create forms, update content, and manage notification watches.', docsLink: 'https://docs.sim.ai/tools/google_forms', category: 'tools', + integrationType: IntegrationType.Documents, + tags: ['google-workspace', 'forms', 'data-analytics'], bgColor: '#E0E0E0', icon: GoogleFormsIcon, subBlocks: [ diff --git a/apps/sim/blocks/blocks/google_groups.ts b/apps/sim/blocks/blocks/google_groups.ts index c44830f3b7..98a2e19ec0 100644 --- a/apps/sim/blocks/blocks/google_groups.ts +++ b/apps/sim/blocks/blocks/google_groups.ts @@ -1,7 +1,7 @@ import { GoogleGroupsIcon } from '@/components/icons' import { getScopesForService } from '@/lib/oauth/utils' import type { BlockConfig } from '@/blocks/types' -import { AuthMode } from '@/blocks/types' +import { AuthMode, IntegrationType } from '@/blocks/types' export const GoogleGroupsBlock: BlockConfig = { type: 'google_groups', @@ -12,6 +12,8 @@ export const GoogleGroupsBlock: BlockConfig = { 'Connect to Google Workspace to create, update, and manage groups and their members using the Admin SDK Directory API.', docsLink: 'https://developers.google.com/admin-sdk/directory/v1/guides/manage-groups', category: 'tools', + integrationType: IntegrationType.Communication, + tags: ['google-workspace', 'messaging', 'identity'], bgColor: '#E8F0FE', icon: GoogleGroupsIcon, subBlocks: [ diff --git a/apps/sim/blocks/blocks/google_maps.ts b/apps/sim/blocks/blocks/google_maps.ts index 5a582250e8..24676cb10f 100644 --- a/apps/sim/blocks/blocks/google_maps.ts +++ b/apps/sim/blocks/blocks/google_maps.ts @@ -1,5 +1,6 @@ import { GoogleMapsIcon } from '@/components/icons' import type { BlockConfig } from '@/blocks/types' +import { IntegrationType } from '@/blocks/types' export const GoogleMapsBlock: BlockConfig = { type: 'google_maps', @@ -9,6 +10,8 @@ export const GoogleMapsBlock: BlockConfig = { 'Integrate Google Maps Platform APIs into your workflow. Supports geocoding addresses to coordinates, reverse geocoding, getting directions between locations, calculating distance matrices, searching for places, retrieving place details, elevation data, and timezone information.', docsLink: 'https://docs.sim.ai/tools/google_maps', category: 'tools', + integrationType: IntegrationType.DeveloperTools, + tags: ['google-workspace', 'enrichment'], bgColor: '#E0E0E0', icon: GoogleMapsIcon, diff --git a/apps/sim/blocks/blocks/google_meet.ts b/apps/sim/blocks/blocks/google_meet.ts index 28fa1d7f03..9484359b1a 100644 --- a/apps/sim/blocks/blocks/google_meet.ts +++ b/apps/sim/blocks/blocks/google_meet.ts @@ -1,7 +1,7 @@ import { GoogleMeetIcon } from '@/components/icons' import { getScopesForService } from '@/lib/oauth/utils' import type { BlockConfig } from '@/blocks/types' -import { AuthMode } from '@/blocks/types' +import { AuthMode, IntegrationType } from '@/blocks/types' import type { GoogleMeetResponse } from '@/tools/google_meet/types' export const GoogleMeetBlock: BlockConfig = { @@ -12,6 +12,8 @@ export const GoogleMeetBlock: BlockConfig = { 'Integrate Google Meet into your workflow. Create meeting spaces, get space details, end conferences, list conference records, and view participants.', docsLink: 'https://docs.sim.ai/tools/google_meet', category: 'tools', + integrationType: IntegrationType.Communication, + tags: ['meeting', 'google-workspace', 'scheduling'], bgColor: '#E0E0E0', icon: GoogleMeetIcon, authMode: AuthMode.OAuth, diff --git a/apps/sim/blocks/blocks/google_pagespeed.ts b/apps/sim/blocks/blocks/google_pagespeed.ts index eca3a30996..fada86e318 100644 --- a/apps/sim/blocks/blocks/google_pagespeed.ts +++ b/apps/sim/blocks/blocks/google_pagespeed.ts @@ -1,5 +1,5 @@ import { GooglePagespeedIcon } from '@/components/icons' -import { AuthMode, type BlockConfig } from '@/blocks/types' +import { AuthMode, type BlockConfig, IntegrationType } from '@/blocks/types' import type { GooglePagespeedAnalyzeResponse } from '@/tools/google_pagespeed/types' export const GooglePagespeedBlock: BlockConfig = { @@ -10,6 +10,8 @@ export const GooglePagespeedBlock: BlockConfig = 'Analyze web pages for performance, accessibility, SEO, and best practices using Google PageSpeed Insights API powered by Lighthouse.', docsLink: 'https://docs.sim.ai/tools/google_pagespeed', category: 'tools', + integrationType: IntegrationType.Analytics, + tags: ['google-workspace', 'seo', 'monitoring'], bgColor: '#E0E0E0', icon: GooglePagespeedIcon, authMode: AuthMode.ApiKey, diff --git a/apps/sim/blocks/blocks/google_sheets.ts b/apps/sim/blocks/blocks/google_sheets.ts index 31f9aab66e..eeb41cd053 100644 --- a/apps/sim/blocks/blocks/google_sheets.ts +++ b/apps/sim/blocks/blocks/google_sheets.ts @@ -1,7 +1,7 @@ import { GoogleSheetsIcon } from '@/components/icons' import { getScopesForService } from '@/lib/oauth/utils' import type { BlockConfig } from '@/blocks/types' -import { AuthMode } from '@/blocks/types' +import { AuthMode, IntegrationType } from '@/blocks/types' import { createVersionedToolSelector } from '@/blocks/utils' import type { GoogleSheetsResponse, GoogleSheetsV2Response } from '@/tools/google_sheets/types' @@ -16,6 +16,8 @@ export const GoogleSheetsBlock: BlockConfig = { 'Integrate Google Sheets into the workflow. Can read, write, append, and update data.', docsLink: 'https://docs.sim.ai/tools/google_sheets', category: 'tools', + integrationType: IntegrationType.Documents, + tags: ['spreadsheet', 'google-workspace', 'data-analytics'], bgColor: '#E0E0E0', icon: GoogleSheetsIcon, subBlocks: [ @@ -302,6 +304,8 @@ export const GoogleSheetsV2Block: BlockConfig = { 'Integrate Google Sheets into the workflow with explicit sheet selection. Can read, write, append, update, clear data, create spreadsheets, get spreadsheet info, and copy sheets.', docsLink: 'https://docs.sim.ai/tools/google_sheets', category: 'tools', + integrationType: IntegrationType.Documents, + tags: ['spreadsheet', 'google-workspace', 'data-analytics'], bgColor: '#E0E0E0', icon: GoogleSheetsIcon, subBlocks: [ diff --git a/apps/sim/blocks/blocks/google_slides.ts b/apps/sim/blocks/blocks/google_slides.ts index 9fc8fdbf1d..fb2d6fca53 100644 --- a/apps/sim/blocks/blocks/google_slides.ts +++ b/apps/sim/blocks/blocks/google_slides.ts @@ -2,7 +2,7 @@ import { GoogleSlidesIcon } from '@/components/icons' import { getScopesForService } from '@/lib/oauth/utils' import { resolveHttpsUrlFromFileInput } from '@/lib/uploads/utils/file-utils' import type { BlockConfig } from '@/blocks/types' -import { AuthMode } from '@/blocks/types' +import { AuthMode, IntegrationType } from '@/blocks/types' import { normalizeFileInput } from '@/blocks/utils' import type { GoogleSlidesResponse } from '@/tools/google_slides/types' @@ -16,6 +16,8 @@ export const GoogleSlidesBlock: BlockConfig = { 'Integrate Google Slides into the workflow. Can read, write, create presentations, replace text, add slides, add images, get thumbnails, get page details, delete objects, duplicate objects, reorder slides, create tables, create shapes, and insert text.', docsLink: 'https://docs.sim.ai/tools/google_slides', category: 'tools', + integrationType: IntegrationType.Documents, + tags: ['google-workspace', 'document-processing', 'content-management'], bgColor: '#E0E0E0', icon: GoogleSlidesIcon, subBlocks: [ @@ -955,6 +957,8 @@ export const GoogleSlidesV2Block: BlockConfig = { name: 'Google Slides', description: 'Read, write, and create presentations', hideFromToolbar: false, + integrationType: IntegrationType.Documents, + tags: ['google-workspace', 'document-processing', 'content-management'], subBlocks: googleSlidesV2SubBlocks, tools: { access: GoogleSlidesBlock.tools!.access, diff --git a/apps/sim/blocks/blocks/google_tasks.ts b/apps/sim/blocks/blocks/google_tasks.ts index cd930ecb21..12569327ad 100644 --- a/apps/sim/blocks/blocks/google_tasks.ts +++ b/apps/sim/blocks/blocks/google_tasks.ts @@ -1,7 +1,7 @@ import { GoogleTasksIcon } from '@/components/icons' import { getScopesForService } from '@/lib/oauth/utils' import type { BlockConfig } from '@/blocks/types' -import { AuthMode } from '@/blocks/types' +import { AuthMode, IntegrationType } from '@/blocks/types' import type { GoogleTasksResponse } from '@/tools/google_tasks/types' export const GoogleTasksBlock: BlockConfig = { @@ -12,6 +12,8 @@ export const GoogleTasksBlock: BlockConfig = { 'Integrate Google Tasks into your workflow. Create, read, update, delete, and list tasks and task lists.', docsLink: 'https://docs.sim.ai/tools/google_tasks', category: 'tools', + integrationType: IntegrationType.Productivity, + tags: ['google-workspace', 'project-management', 'scheduling'], bgColor: '#E0E0E0', icon: GoogleTasksIcon, authMode: AuthMode.OAuth, diff --git a/apps/sim/blocks/blocks/google_translate.ts b/apps/sim/blocks/blocks/google_translate.ts index 2eaeb2bb22..86d6cf131c 100644 --- a/apps/sim/blocks/blocks/google_translate.ts +++ b/apps/sim/blocks/blocks/google_translate.ts @@ -1,5 +1,5 @@ import { GoogleTranslateIcon } from '@/components/icons' -import { AuthMode, type BlockConfig } from '@/blocks/types' +import { AuthMode, type BlockConfig, IntegrationType } from '@/blocks/types' const SUPPORTED_LANGUAGES = [ { label: 'Afrikaans', id: 'af' }, @@ -145,6 +145,8 @@ export const GoogleTranslateBlock: BlockConfig = { 'Translate and detect languages using the Google Cloud Translation API. Supports auto-detection of the source language.', docsLink: 'https://docs.sim.ai/tools/google_translate', category: 'tools', + integrationType: IntegrationType.AI, + tags: ['google-workspace', 'content-management', 'automation'], bgColor: '#E0E0E0', icon: GoogleTranslateIcon, authMode: AuthMode.ApiKey, diff --git a/apps/sim/blocks/blocks/google_vault.ts b/apps/sim/blocks/blocks/google_vault.ts index 1cbb334e69..7ca1ed4485 100644 --- a/apps/sim/blocks/blocks/google_vault.ts +++ b/apps/sim/blocks/blocks/google_vault.ts @@ -1,7 +1,7 @@ import { GoogleVaultIcon } from '@/components/icons' import { getScopesForService } from '@/lib/oauth/utils' import type { BlockConfig } from '@/blocks/types' -import { AuthMode } from '@/blocks/types' +import { AuthMode, IntegrationType } from '@/blocks/types' export const GoogleVaultBlock: BlockConfig = { type: 'google_vault', @@ -12,6 +12,8 @@ export const GoogleVaultBlock: BlockConfig = { 'Connect Google Vault to create exports, list exports, and manage holds within matters.', docsLink: 'https://developers.google.com/vault', category: 'tools', + integrationType: IntegrationType.Security, + tags: ['google-workspace', 'secrets-management', 'document-processing'], bgColor: '#E8F0FE', icon: GoogleVaultIcon, subBlocks: [ diff --git a/apps/sim/blocks/blocks/grafana.ts b/apps/sim/blocks/blocks/grafana.ts index fd71cfa7d1..4ef7f36810 100644 --- a/apps/sim/blocks/blocks/grafana.ts +++ b/apps/sim/blocks/blocks/grafana.ts @@ -1,6 +1,6 @@ import { GrafanaIcon } from '@/components/icons' import type { BlockConfig } from '@/blocks/types' -import { AuthMode } from '@/blocks/types' +import { AuthMode, IntegrationType } from '@/blocks/types' import type { GrafanaResponse } from '@/tools/grafana/types' export const GrafanaBlock: BlockConfig = { @@ -12,6 +12,8 @@ export const GrafanaBlock: BlockConfig = { 'Integrate Grafana into workflows. Manage dashboards, alerts, annotations, data sources, folders, and monitor health status.', docsLink: 'https://docs.sim.ai/tools/grafana', category: 'tools', + integrationType: IntegrationType.Analytics, + tags: ['monitoring', 'data-analytics'], bgColor: '#E0E0E0', icon: GrafanaIcon, subBlocks: [ diff --git a/apps/sim/blocks/blocks/grain.ts b/apps/sim/blocks/blocks/grain.ts index aa0a623682..2a4684bdf8 100644 --- a/apps/sim/blocks/blocks/grain.ts +++ b/apps/sim/blocks/blocks/grain.ts @@ -1,6 +1,6 @@ import { GrainIcon } from '@/components/icons' import type { BlockConfig } from '@/blocks/types' -import { AuthMode } from '@/blocks/types' +import { AuthMode, IntegrationType } from '@/blocks/types' import { getTrigger } from '@/triggers' import { grainTriggerOptions } from '@/triggers/grain/utils' @@ -13,6 +13,8 @@ export const GrainBlock: BlockConfig = { longDescription: 'Integrate Grain into your workflow. Access meeting recordings, transcripts, highlights, and AI-generated summaries. Can also trigger workflows based on Grain webhook events.', category: 'tools', + integrationType: IntegrationType.Media, + tags: ['meeting', 'note-taking'], docsLink: 'https://docs.sim.ai/tools/grain', icon: GrainIcon, bgColor: '#F6FAF9', diff --git a/apps/sim/blocks/blocks/greenhouse.ts b/apps/sim/blocks/blocks/greenhouse.ts index 5478756faa..4df4963fca 100644 --- a/apps/sim/blocks/blocks/greenhouse.ts +++ b/apps/sim/blocks/blocks/greenhouse.ts @@ -1,5 +1,5 @@ import { GreenhouseIcon } from '@/components/icons' -import { AuthMode, type BlockConfig } from '@/blocks/types' +import { AuthMode, type BlockConfig, IntegrationType } from '@/blocks/types' import type { GreenhouseResponse } from '@/tools/greenhouse/types' export const GreenhouseBlock: BlockConfig = { @@ -10,6 +10,8 @@ export const GreenhouseBlock: BlockConfig = { 'Integrate Greenhouse into the workflow. List and retrieve candidates, jobs, applications, users, departments, offices, and job stages from your Greenhouse ATS account.', docsLink: 'https://docs.sim.ai/tools/greenhouse', category: 'tools', + integrationType: IntegrationType.HR, + tags: ['hiring'], bgColor: '#469776', icon: GreenhouseIcon, authMode: AuthMode.ApiKey, diff --git a/apps/sim/blocks/blocks/greptile.ts b/apps/sim/blocks/blocks/greptile.ts index 05b2e68b4c..76cb142cf3 100644 --- a/apps/sim/blocks/blocks/greptile.ts +++ b/apps/sim/blocks/blocks/greptile.ts @@ -1,6 +1,6 @@ import { GreptileIcon } from '@/components/icons' import type { BlockConfig } from '@/blocks/types' -import { AuthMode } from '@/blocks/types' +import { AuthMode, IntegrationType } from '@/blocks/types' import type { GreptileResponse } from '@/tools/greptile/types' export const GreptileBlock: BlockConfig = { @@ -12,6 +12,8 @@ export const GreptileBlock: BlockConfig = { 'Query and search codebases using natural language with Greptile. Get AI-generated answers about your code, find relevant files, and understand complex codebases.', docsLink: 'https://docs.sim.ai/tools/greptile', category: 'tools', + integrationType: IntegrationType.DeveloperTools, + tags: ['version-control', 'knowledge-base'], bgColor: '#e5e5e5', icon: GreptileIcon, subBlocks: [ diff --git a/apps/sim/blocks/blocks/hex.ts b/apps/sim/blocks/blocks/hex.ts index f3ea6a2cb8..4da74a5f32 100644 --- a/apps/sim/blocks/blocks/hex.ts +++ b/apps/sim/blocks/blocks/hex.ts @@ -1,6 +1,6 @@ import { HexIcon } from '@/components/icons' import type { BlockConfig } from '@/blocks/types' -import { AuthMode } from '@/blocks/types' +import { AuthMode, IntegrationType } from '@/blocks/types' import type { HexResponse } from '@/tools/hex/types' export const HexBlock: BlockConfig = { @@ -11,6 +11,8 @@ export const HexBlock: BlockConfig = { 'Integrate Hex into your workflow. Run projects, check run status, manage collections and groups, list users, and view data connections. Requires a Hex API token.', docsLink: 'https://docs.sim.ai/tools/hex', category: 'tools', + integrationType: IntegrationType.Analytics, + tags: ['data-warehouse', 'data-analytics'], bgColor: '#14151A', icon: HexIcon, authMode: AuthMode.ApiKey, diff --git a/apps/sim/blocks/blocks/hubspot.ts b/apps/sim/blocks/blocks/hubspot.ts index 24bf1a3981..ecacf1d588 100644 --- a/apps/sim/blocks/blocks/hubspot.ts +++ b/apps/sim/blocks/blocks/hubspot.ts @@ -1,7 +1,7 @@ import { HubspotIcon } from '@/components/icons' import { getScopesForService } from '@/lib/oauth/utils' import type { BlockConfig } from '@/blocks/types' -import { AuthMode } from '@/blocks/types' +import { AuthMode, IntegrationType } from '@/blocks/types' import type { HubSpotResponse } from '@/tools/hubspot/types' import { getTrigger } from '@/triggers' import { hubspotAllTriggerOptions } from '@/triggers/hubspot/utils' @@ -15,6 +15,8 @@ export const HubSpotBlock: BlockConfig = { 'Integrate HubSpot into your workflow. Manage contacts, companies, deals, tickets, and other CRM objects with powerful automation capabilities. Can be used in trigger mode to start workflows when contacts are created, deleted, or updated.', docsLink: 'https://docs.sim.ai/tools/hubspot', category: 'tools', + integrationType: IntegrationType.CRM, + tags: ['marketing', 'sales-engagement', 'customer-support'], bgColor: '#FF7A59', icon: HubspotIcon, subBlocks: [ diff --git a/apps/sim/blocks/blocks/huggingface.ts b/apps/sim/blocks/blocks/huggingface.ts index c02f4a9bf3..9333d0d590 100644 --- a/apps/sim/blocks/blocks/huggingface.ts +++ b/apps/sim/blocks/blocks/huggingface.ts @@ -1,6 +1,6 @@ import { HuggingFaceIcon } from '@/components/icons' import type { BlockConfig } from '@/blocks/types' -import { AuthMode } from '@/blocks/types' +import { AuthMode, IntegrationType } from '@/blocks/types' import type { HuggingFaceChatResponse } from '@/tools/huggingface/types' export const HuggingFaceBlock: BlockConfig = { @@ -12,6 +12,8 @@ export const HuggingFaceBlock: BlockConfig = { 'Integrate Hugging Face into the workflow. Can generate completions using the Hugging Face Inference API.', docsLink: 'https://docs.sim.ai/tools/huggingface', category: 'tools', + integrationType: IntegrationType.AI, + tags: ['llm', 'agentic'], bgColor: '#0B0F19', icon: HuggingFaceIcon, subBlocks: [ diff --git a/apps/sim/blocks/blocks/hunter.ts b/apps/sim/blocks/blocks/hunter.ts index f713227916..614ab7dd39 100644 --- a/apps/sim/blocks/blocks/hunter.ts +++ b/apps/sim/blocks/blocks/hunter.ts @@ -1,5 +1,5 @@ import { HunterIOIcon } from '@/components/icons' -import { AuthMode, type BlockConfig } from '@/blocks/types' +import { AuthMode, type BlockConfig, IntegrationType } from '@/blocks/types' import type { HunterResponse } from '@/tools/hunter/types' export const HunterBlock: BlockConfig = { @@ -11,6 +11,8 @@ export const HunterBlock: BlockConfig = { 'Integrate Hunter into the workflow. Can search domains, find email addresses, verify email addresses, discover companies, find companies, and count email addresses.', docsLink: 'https://docs.sim.ai/tools/hunter', category: 'tools', + integrationType: IntegrationType.SalesIntelligence, + tags: ['enrichment', 'sales-engagement'], bgColor: '#E0E0E0', icon: HunterIOIcon, subBlocks: [ diff --git a/apps/sim/blocks/blocks/image_generator.ts b/apps/sim/blocks/blocks/image_generator.ts index e2efad69d5..517e25bf7a 100644 --- a/apps/sim/blocks/blocks/image_generator.ts +++ b/apps/sim/blocks/blocks/image_generator.ts @@ -1,5 +1,5 @@ import { ImageIcon } from '@/components/icons' -import { AuthMode, type BlockConfig } from '@/blocks/types' +import { AuthMode, type BlockConfig, IntegrationType } from '@/blocks/types' import type { DalleResponse } from '@/tools/openai/types' export const ImageGeneratorBlock: BlockConfig = { @@ -11,6 +11,8 @@ export const ImageGeneratorBlock: BlockConfig = { 'Integrate Image Generator into the workflow. Can generate images using DALL-E 3 or GPT Image.', docsLink: 'https://docs.sim.ai/tools/image_generator', category: 'tools', + integrationType: IntegrationType.AI, + tags: ['image-generation', 'llm'], bgColor: '#4D5FFF', icon: ImageIcon, subBlocks: [ diff --git a/apps/sim/blocks/blocks/imap.ts b/apps/sim/blocks/blocks/imap.ts index e23727b20c..8217e372de 100644 --- a/apps/sim/blocks/blocks/imap.ts +++ b/apps/sim/blocks/blocks/imap.ts @@ -1,5 +1,6 @@ import { MailServerIcon } from '@/components/icons' import type { BlockConfig } from '@/blocks/types' +import { IntegrationType } from '@/blocks/types' import { getTrigger } from '@/triggers' export const ImapBlock: BlockConfig = { @@ -9,6 +10,8 @@ export const ImapBlock: BlockConfig = { longDescription: 'Connect to any email server via IMAP protocol to trigger workflows when new emails are received. Supports Gmail, Outlook, Yahoo, and any other IMAP-compatible email provider.', category: 'triggers', + integrationType: IntegrationType.Email, + tags: ['messaging', 'automation'], bgColor: '#6366F1', icon: MailServerIcon, triggerAllowed: true, diff --git a/apps/sim/blocks/blocks/incidentio.ts b/apps/sim/blocks/blocks/incidentio.ts index cd3de03573..ad8c19949d 100644 --- a/apps/sim/blocks/blocks/incidentio.ts +++ b/apps/sim/blocks/blocks/incidentio.ts @@ -1,6 +1,6 @@ import { IncidentioIcon } from '@/components/icons' import type { BlockConfig } from '@/blocks/types' -import { AuthMode } from '@/blocks/types' +import { AuthMode, IntegrationType } from '@/blocks/types' import type { IncidentioResponse } from '@/tools/incidentio/types' export const IncidentioBlock: BlockConfig = { @@ -12,6 +12,8 @@ export const IncidentioBlock: BlockConfig = { 'Integrate incident.io into the workflow. Manage incidents, actions, follow-ups, workflows, schedules, escalations, custom fields, and more.', docsLink: 'https://docs.sim.ai/tools/incidentio', category: 'tools', + integrationType: IntegrationType.DeveloperTools, + tags: ['incident-management', 'monitoring'], bgColor: '#E0E0E0', icon: IncidentioIcon, subBlocks: [ diff --git a/apps/sim/blocks/blocks/infisical.ts b/apps/sim/blocks/blocks/infisical.ts index adfb69c02d..94909db1b6 100644 --- a/apps/sim/blocks/blocks/infisical.ts +++ b/apps/sim/blocks/blocks/infisical.ts @@ -1,6 +1,6 @@ import { InfisicalIcon } from '@/components/icons' import type { BlockConfig } from '@/blocks/types' -import { AuthMode } from '@/blocks/types' +import { AuthMode, IntegrationType } from '@/blocks/types' import type { InfisicalResponse } from '@/tools/infisical/types' export const InfisicalBlock: BlockConfig = { @@ -11,6 +11,8 @@ export const InfisicalBlock: BlockConfig = { 'Integrate Infisical into your workflow. List, get, create, update, and delete secrets across project environments.', docsLink: 'https://docs.sim.ai/tools/infisical', category: 'tools', + integrationType: IntegrationType.Security, + tags: ['secrets-management'], bgColor: '#F7FE62', icon: InfisicalIcon, authMode: AuthMode.ApiKey, diff --git a/apps/sim/blocks/blocks/intercom.ts b/apps/sim/blocks/blocks/intercom.ts index 6919679b64..21b8124324 100644 --- a/apps/sim/blocks/blocks/intercom.ts +++ b/apps/sim/blocks/blocks/intercom.ts @@ -1,6 +1,6 @@ import { IntercomIcon } from '@/components/icons' import type { BlockConfig } from '@/blocks/types' -import { AuthMode } from '@/blocks/types' +import { AuthMode, IntegrationType } from '@/blocks/types' import { createVersionedToolSelector } from '@/blocks/utils' export const IntercomBlock: BlockConfig = { @@ -13,6 +13,8 @@ export const IntercomBlock: BlockConfig = { docsLink: 'https://docs.sim.ai/tools/intercom', authMode: AuthMode.ApiKey, category: 'tools', + integrationType: IntegrationType.CustomerSupport, + tags: ['customer-support', 'messaging'], bgColor: '#E0E0E0', icon: IntercomIcon, subBlocks: [ @@ -1404,6 +1406,8 @@ export const IntercomV2Block: BlockConfig = { ...IntercomBlock, type: 'intercom_v2', name: 'Intercom', + integrationType: IntegrationType.CustomerSupport, + tags: ['customer-support', 'messaging'], hideFromToolbar: false, tools: { ...IntercomBlock.tools, diff --git a/apps/sim/blocks/blocks/jina.ts b/apps/sim/blocks/blocks/jina.ts index 4f9be7884c..2a71e96eaa 100644 --- a/apps/sim/blocks/blocks/jina.ts +++ b/apps/sim/blocks/blocks/jina.ts @@ -1,5 +1,5 @@ import { JinaAIIcon } from '@/components/icons' -import { AuthMode, type BlockConfig } from '@/blocks/types' +import { AuthMode, type BlockConfig, IntegrationType } from '@/blocks/types' import type { ReadUrlResponse, SearchResponse } from '@/tools/jina/types' export const JinaBlock: BlockConfig = { @@ -11,6 +11,8 @@ export const JinaBlock: BlockConfig = { 'Integrate Jina AI into the workflow. Search the web and get LLM-friendly results, or extract clean content from specific URLs with advanced parsing options.', docsLink: 'https://docs.sim.ai/tools/jina', category: 'tools', + integrationType: IntegrationType.Search, + tags: ['web-scraping', 'knowledge-base'], bgColor: '#333333', icon: JinaAIIcon, subBlocks: [ diff --git a/apps/sim/blocks/blocks/jira.ts b/apps/sim/blocks/blocks/jira.ts index 82f118cf21..092677ab90 100644 --- a/apps/sim/blocks/blocks/jira.ts +++ b/apps/sim/blocks/blocks/jira.ts @@ -1,7 +1,7 @@ import { JiraIcon } from '@/components/icons' import { getScopesForService } from '@/lib/oauth/utils' import type { BlockConfig } from '@/blocks/types' -import { AuthMode } from '@/blocks/types' +import { AuthMode, IntegrationType } from '@/blocks/types' import { normalizeFileInput } from '@/blocks/utils' import type { JiraResponse } from '@/tools/jira/types' import { getTrigger } from '@/triggers' @@ -16,6 +16,8 @@ export const JiraBlock: BlockConfig = { 'Integrate Jira into the workflow. Can read, write, and update issues. Can also trigger workflows based on Jira webhook events.', docsLink: 'https://docs.sim.ai/tools/jira', category: 'tools', + integrationType: IntegrationType.Productivity, + tags: ['project-management', 'ticketing'], bgColor: '#E0E0E0', icon: JiraIcon, subBlocks: [ diff --git a/apps/sim/blocks/blocks/jira_service_management.ts b/apps/sim/blocks/blocks/jira_service_management.ts index b74fbe4a13..d78251cb3c 100644 --- a/apps/sim/blocks/blocks/jira_service_management.ts +++ b/apps/sim/blocks/blocks/jira_service_management.ts @@ -1,7 +1,7 @@ import { JiraServiceManagementIcon } from '@/components/icons' import { getScopesForService } from '@/lib/oauth/utils' import type { BlockConfig } from '@/blocks/types' -import { AuthMode } from '@/blocks/types' +import { AuthMode, IntegrationType } from '@/blocks/types' import type { JsmResponse } from '@/tools/jsm/types' export const JiraServiceManagementBlock: BlockConfig = { @@ -13,6 +13,8 @@ export const JiraServiceManagementBlock: BlockConfig = { 'Integrate with Jira Service Management for IT service management. Create and manage service requests, handle customers and organizations, track SLAs, and manage queues.', docsLink: 'https://docs.sim.ai/tools/jira-service-management', category: 'tools', + integrationType: IntegrationType.CustomerSupport, + tags: ['customer-support', 'ticketing', 'incident-management'], bgColor: '#E0E0E0', icon: JiraServiceManagementIcon, subBlocks: [ diff --git a/apps/sim/blocks/blocks/kalshi.ts b/apps/sim/blocks/blocks/kalshi.ts index d013c93c28..8293dbba41 100644 --- a/apps/sim/blocks/blocks/kalshi.ts +++ b/apps/sim/blocks/blocks/kalshi.ts @@ -1,6 +1,6 @@ import { KalshiIcon } from '@/components/icons' import type { BlockConfig } from '@/blocks/types' -import { AuthMode } from '@/blocks/types' +import { AuthMode, IntegrationType } from '@/blocks/types' import { createVersionedToolSelector } from '@/blocks/utils' export const KalshiBlock: BlockConfig = { @@ -12,6 +12,8 @@ export const KalshiBlock: BlockConfig = { docsLink: 'https://docs.sim.ai/tools/kalshi', authMode: AuthMode.ApiKey, category: 'tools', + integrationType: IntegrationType.Analytics, + tags: ['prediction-markets', 'data-analytics'], hideFromToolbar: true, bgColor: '#09C285', icon: KalshiIcon, @@ -707,6 +709,8 @@ export const KalshiV2Block: BlockConfig = { description: 'Access prediction markets and trade on Kalshi', longDescription: 'Integrate Kalshi prediction markets into the workflow. Can get markets, market, events, event, balance, positions, orders, orderbook, trades, candlesticks, fills, series, exchange status, and place/cancel/amend trades.', + integrationType: IntegrationType.Analytics, + tags: ['prediction-markets', 'data-analytics'], hideFromToolbar: false, tools: { ...KalshiBlock.tools, diff --git a/apps/sim/blocks/blocks/langsmith.ts b/apps/sim/blocks/blocks/langsmith.ts index 0a09606bf8..96773f8fc7 100644 --- a/apps/sim/blocks/blocks/langsmith.ts +++ b/apps/sim/blocks/blocks/langsmith.ts @@ -1,5 +1,5 @@ import { LangsmithIcon } from '@/components/icons' -import { AuthMode, type BlockConfig } from '@/blocks/types' +import { AuthMode, type BlockConfig, IntegrationType } from '@/blocks/types' import type { LangsmithResponse } from '@/tools/langsmith/types' export const LangsmithBlock: BlockConfig = { @@ -10,6 +10,8 @@ export const LangsmithBlock: BlockConfig = { 'Send run data to LangSmith to trace executions, attach metadata, and monitor workflow performance.', docsLink: 'https://docs.sim.ai/tools/langsmith', category: 'tools', + integrationType: IntegrationType.DeveloperTools, + tags: ['monitoring', 'llm', 'data-analytics'], bgColor: '#181C1E', icon: LangsmithIcon, authMode: AuthMode.ApiKey, diff --git a/apps/sim/blocks/blocks/lemlist.ts b/apps/sim/blocks/blocks/lemlist.ts index 9758b7e1ad..c917e95e51 100644 --- a/apps/sim/blocks/blocks/lemlist.ts +++ b/apps/sim/blocks/blocks/lemlist.ts @@ -1,5 +1,5 @@ import { LemlistIcon } from '@/components/icons' -import { AuthMode, type BlockConfig } from '@/blocks/types' +import { AuthMode, type BlockConfig, IntegrationType } from '@/blocks/types' import type { LemlistResponse } from '@/tools/lemlist/types' import { getTrigger } from '@/triggers' @@ -12,6 +12,8 @@ export const LemlistBlock: BlockConfig = { 'Integrate Lemlist into your workflow. Retrieve campaign activities and replies, get lead information, and send emails through the Lemlist inbox.', docsLink: 'https://docs.sim.ai/tools/lemlist', category: 'tools', + integrationType: IntegrationType.Email, + tags: ['sales-engagement', 'email-marketing', 'automation'], bgColor: '#316BFF', icon: LemlistIcon, subBlocks: [ diff --git a/apps/sim/blocks/blocks/linear.ts b/apps/sim/blocks/blocks/linear.ts index e1a922daac..504cb6b5ff 100644 --- a/apps/sim/blocks/blocks/linear.ts +++ b/apps/sim/blocks/blocks/linear.ts @@ -1,7 +1,7 @@ import { LinearIcon } from '@/components/icons' import { getScopesForService } from '@/lib/oauth/utils' import type { BlockConfig } from '@/blocks/types' -import { AuthMode } from '@/blocks/types' +import { AuthMode, IntegrationType } from '@/blocks/types' import { normalizeFileInput } from '@/blocks/utils' import type { LinearResponse } from '@/tools/linear/types' import { getTrigger } from '@/triggers' @@ -16,6 +16,8 @@ export const LinearBlock: BlockConfig = { 'Integrate Linear into the workflow. Can manage issues, comments, projects, labels, workflow states, cycles, attachments, and more. Can also trigger workflows based on Linear webhook events.', docsLink: 'https://docs.sim.ai/tools/linear', category: 'tools', + integrationType: IntegrationType.Productivity, + tags: ['project-management', 'ticketing'], icon: LinearIcon, bgColor: '#5E6AD2', subBlocks: [ diff --git a/apps/sim/blocks/blocks/linkedin.ts b/apps/sim/blocks/blocks/linkedin.ts index 87fd163b3c..3098124b7b 100644 --- a/apps/sim/blocks/blocks/linkedin.ts +++ b/apps/sim/blocks/blocks/linkedin.ts @@ -1,7 +1,7 @@ import { LinkedInIcon } from '@/components/icons' import { getScopesForService } from '@/lib/oauth/utils' import type { BlockConfig } from '@/blocks/types' -import { AuthMode } from '@/blocks/types' +import { AuthMode, IntegrationType } from '@/blocks/types' import type { LinkedInResponse } from '@/tools/linkedin/types' export const LinkedInBlock: BlockConfig = { @@ -13,6 +13,8 @@ export const LinkedInBlock: BlockConfig = { 'Integrate LinkedIn into workflows. Share posts to your personal feed and access your LinkedIn profile information.', docsLink: 'https://docs.sim.ai/tools/linkedin', category: 'tools', + integrationType: IntegrationType.Social, + tags: ['marketing', 'sales-engagement', 'enrichment'], bgColor: '#0072B1', icon: LinkedInIcon, subBlocks: [ diff --git a/apps/sim/blocks/blocks/linkup.ts b/apps/sim/blocks/blocks/linkup.ts index c9cfc4953e..b1aead7b07 100644 --- a/apps/sim/blocks/blocks/linkup.ts +++ b/apps/sim/blocks/blocks/linkup.ts @@ -1,5 +1,5 @@ import { LinkupIcon } from '@/components/icons' -import { AuthMode, type BlockConfig } from '@/blocks/types' +import { AuthMode, type BlockConfig, IntegrationType } from '@/blocks/types' import type { LinkupSearchToolResponse } from '@/tools/linkup/types' export const LinkupBlock: BlockConfig = { @@ -10,6 +10,8 @@ export const LinkupBlock: BlockConfig = { longDescription: 'Integrate Linkup into the workflow. Can search the web.', docsLink: 'https://docs.sim.ai/tools/linkup', category: 'tools', + integrationType: IntegrationType.Search, + tags: ['web-scraping', 'enrichment'], bgColor: '#D6D3C7', icon: LinkupIcon, diff --git a/apps/sim/blocks/blocks/loops.ts b/apps/sim/blocks/blocks/loops.ts index 02a49ea764..ec7b9d9b53 100644 --- a/apps/sim/blocks/blocks/loops.ts +++ b/apps/sim/blocks/blocks/loops.ts @@ -1,6 +1,6 @@ import { LoopsIcon } from '@/components/icons' import type { BlockConfig } from '@/blocks/types' -import { AuthMode } from '@/blocks/types' +import { AuthMode, IntegrationType } from '@/blocks/types' import type { LoopsResponse } from '@/tools/loops/types' export const LoopsBlock: BlockConfig = { @@ -12,6 +12,8 @@ export const LoopsBlock: BlockConfig = { 'Integrate Loops into the workflow. Create and manage contacts, send transactional emails, and trigger event-based automations.', docsLink: 'https://docs.sim.ai/tools/loops', category: 'tools', + integrationType: IntegrationType.Email, + tags: ['email-marketing', 'marketing', 'automation'], bgColor: '#FAFAF9', icon: LoopsIcon, subBlocks: [ diff --git a/apps/sim/blocks/blocks/luma.ts b/apps/sim/blocks/blocks/luma.ts index aa640b0081..f7fc2d615b 100644 --- a/apps/sim/blocks/blocks/luma.ts +++ b/apps/sim/blocks/blocks/luma.ts @@ -1,5 +1,5 @@ import { LumaIcon } from '@/components/icons' -import { AuthMode, type BlockConfig } from '@/blocks/types' +import { AuthMode, type BlockConfig, IntegrationType } from '@/blocks/types' export const LumaBlock: BlockConfig = { type: 'luma', @@ -9,6 +9,8 @@ export const LumaBlock: BlockConfig = { 'Integrate Luma into the workflow. Can create events, update events, get event details, list calendar events, get guest lists, and add guests to events.', docsLink: 'https://docs.sim.ai/tools/luma', category: 'tools', + integrationType: IntegrationType.Productivity, + tags: ['events', 'calendar', 'scheduling'], bgColor: '#FFFFFF', icon: LumaIcon, authMode: AuthMode.ApiKey, diff --git a/apps/sim/blocks/blocks/mailchimp.ts b/apps/sim/blocks/blocks/mailchimp.ts index 147e61e575..0834f9bb2f 100644 --- a/apps/sim/blocks/blocks/mailchimp.ts +++ b/apps/sim/blocks/blocks/mailchimp.ts @@ -1,6 +1,6 @@ import { MailchimpIcon } from '@/components/icons' import type { BlockConfig } from '@/blocks/types' -import { AuthMode } from '@/blocks/types' +import { AuthMode, IntegrationType } from '@/blocks/types' export const MailchimpBlock: BlockConfig = { type: 'mailchimp', @@ -11,6 +11,8 @@ export const MailchimpBlock: BlockConfig = { docsLink: 'https://docs.sim.ai/tools/mailchimp', authMode: AuthMode.ApiKey, category: 'tools', + integrationType: IntegrationType.Email, + tags: ['email-marketing', 'marketing', 'automation'], bgColor: '#FFE01B', icon: MailchimpIcon, subBlocks: [ diff --git a/apps/sim/blocks/blocks/mailgun.ts b/apps/sim/blocks/blocks/mailgun.ts index 4fdee43095..5d06a21c21 100644 --- a/apps/sim/blocks/blocks/mailgun.ts +++ b/apps/sim/blocks/blocks/mailgun.ts @@ -1,5 +1,6 @@ import { MailgunIcon } from '@/components/icons' import type { BlockConfig } from '@/blocks/types' +import { IntegrationType } from '@/blocks/types' import type { SendMessageResult } from '@/tools/mailgun/types' export const MailgunBlock: BlockConfig = { @@ -10,6 +11,8 @@ export const MailgunBlock: BlockConfig = { 'Integrate Mailgun into your workflow. Send transactional emails, manage mailing lists and members, view domain information, and track email events. Supports text and HTML emails, tags for tracking, and comprehensive list management.', docsLink: 'https://docs.sim.ai/tools/mailgun', category: 'tools', + integrationType: IntegrationType.Email, + tags: ['messaging', 'email-marketing'], bgColor: '#E0E0E0', icon: MailgunIcon, diff --git a/apps/sim/blocks/blocks/mcp.ts b/apps/sim/blocks/blocks/mcp.ts index 1d80d052da..0b5d4da8db 100644 --- a/apps/sim/blocks/blocks/mcp.ts +++ b/apps/sim/blocks/blocks/mcp.ts @@ -1,6 +1,7 @@ import { McpIcon } from '@/components/icons' import { createMcpToolId } from '@/lib/mcp/shared' import type { BlockConfig } from '@/blocks/types' +import { IntegrationType } from '@/blocks/types' import type { ToolResponse } from '@/tools/types' export interface McpResponse extends ToolResponse { @@ -15,6 +16,8 @@ export const McpBlock: BlockConfig = { 'Integrate MCP into the workflow. Can execute tools from MCP servers. Requires MCP servers in workspace settings.', docsLink: 'https://docs.sim.ai/mcp', category: 'tools', + integrationType: IntegrationType.DeveloperTools, + tags: ['agentic', 'automation', 'llm'], bgColor: '#181C1E', icon: McpIcon, subBlocks: [ diff --git a/apps/sim/blocks/blocks/mem0.ts b/apps/sim/blocks/blocks/mem0.ts index 3384b93b0c..8904e9593e 100644 --- a/apps/sim/blocks/blocks/mem0.ts +++ b/apps/sim/blocks/blocks/mem0.ts @@ -1,5 +1,5 @@ import { Mem0Icon } from '@/components/icons' -import { AuthMode, type BlockConfig } from '@/blocks/types' +import { AuthMode, type BlockConfig, IntegrationType } from '@/blocks/types' import type { Mem0Response } from '@/tools/mem0/types' export const Mem0Block: BlockConfig = { @@ -11,6 +11,8 @@ export const Mem0Block: BlockConfig = { bgColor: '#181C1E', icon: Mem0Icon, category: 'tools', + integrationType: IntegrationType.AI, + tags: ['llm', 'knowledge-base', 'agentic'], docsLink: 'https://docs.sim.ai/tools/mem0', subBlocks: [ { diff --git a/apps/sim/blocks/blocks/microsoft_ad.ts b/apps/sim/blocks/blocks/microsoft_ad.ts index be5265efaa..bc6d0cf34e 100644 --- a/apps/sim/blocks/blocks/microsoft_ad.ts +++ b/apps/sim/blocks/blocks/microsoft_ad.ts @@ -1,7 +1,7 @@ import { AzureIcon } from '@/components/icons' import { getScopesForService } from '@/lib/oauth/utils' import type { BlockConfig } from '@/blocks/types' -import { AuthMode } from '@/blocks/types' +import { AuthMode, IntegrationType } from '@/blocks/types' import type { MicrosoftAdResponse } from '@/tools/microsoft_ad/types' export const MicrosoftAdBlock: BlockConfig = { @@ -12,6 +12,8 @@ export const MicrosoftAdBlock: BlockConfig = { 'Integrate Azure Active Directory into your workflows. List, create, update, and delete users and groups. Manage group memberships programmatically.', docsLink: 'https://docs.sim.ai/tools/microsoft_ad', category: 'tools', + integrationType: IntegrationType.Security, + tags: ['identity', 'microsoft-365'], bgColor: '#0078D4', icon: AzureIcon, authMode: AuthMode.OAuth, diff --git a/apps/sim/blocks/blocks/microsoft_dataverse.ts b/apps/sim/blocks/blocks/microsoft_dataverse.ts index 531973197f..336b76e5df 100644 --- a/apps/sim/blocks/blocks/microsoft_dataverse.ts +++ b/apps/sim/blocks/blocks/microsoft_dataverse.ts @@ -1,7 +1,7 @@ import { MicrosoftDataverseIcon } from '@/components/icons' import { getScopesForService } from '@/lib/oauth/utils' import type { BlockConfig } from '@/blocks/types' -import { AuthMode } from '@/blocks/types' +import { AuthMode, IntegrationType } from '@/blocks/types' import { normalizeFileInput } from '@/blocks/utils' import type { DataverseResponse } from '@/tools/microsoft_dataverse/types' @@ -14,6 +14,8 @@ export const MicrosoftDataverseBlock: BlockConfig = { 'Integrate Microsoft Dataverse into your workflow. Create, read, update, delete, upsert, associate, query, search, and execute actions and functions against Dataverse tables using the Web API. Supports bulk operations, FetchXML, file uploads, and relevance search. Works with Dynamics 365, Power Platform, and custom Dataverse environments.', docsLink: 'https://docs.sim.ai/tools/microsoft_dataverse', category: 'tools', + integrationType: IntegrationType.Databases, + tags: ['microsoft-365', 'data-warehouse', 'cloud'], bgColor: '#E0E0E0', icon: MicrosoftDataverseIcon, subBlocks: [ diff --git a/apps/sim/blocks/blocks/microsoft_excel.ts b/apps/sim/blocks/blocks/microsoft_excel.ts index 1329b6edcd..4b04368742 100644 --- a/apps/sim/blocks/blocks/microsoft_excel.ts +++ b/apps/sim/blocks/blocks/microsoft_excel.ts @@ -1,7 +1,7 @@ import { MicrosoftExcelIcon } from '@/components/icons' import { getScopesForService } from '@/lib/oauth/utils' import type { BlockConfig } from '@/blocks/types' -import { AuthMode } from '@/blocks/types' +import { AuthMode, IntegrationType } from '@/blocks/types' import { createVersionedToolSelector } from '@/blocks/utils' import type { MicrosoftExcelResponse, @@ -18,6 +18,8 @@ export const MicrosoftExcelBlock: BlockConfig = { 'Integrate Microsoft Excel into the workflow. Can read, write, update, add to table, and create new worksheets.', docsLink: 'https://docs.sim.ai/tools/microsoft_excel', category: 'tools', + integrationType: IntegrationType.Documents, + tags: ['spreadsheet', 'microsoft-365'], bgColor: '#E0E0E0', icon: MicrosoftExcelIcon, subBlocks: [ @@ -338,6 +340,8 @@ export const MicrosoftExcelV2Block: BlockConfig = { 'Integrate Microsoft Excel into the workflow with explicit sheet selection. Can read and write data in specific sheets.', docsLink: 'https://docs.sim.ai/tools/microsoft_excel', category: 'tools', + integrationType: IntegrationType.Documents, + tags: ['spreadsheet', 'microsoft-365'], bgColor: '#E0E0E0', icon: MicrosoftExcelIcon, subBlocks: [ diff --git a/apps/sim/blocks/blocks/microsoft_planner.ts b/apps/sim/blocks/blocks/microsoft_planner.ts index 1a0d57d9be..cfa7c8bf08 100644 --- a/apps/sim/blocks/blocks/microsoft_planner.ts +++ b/apps/sim/blocks/blocks/microsoft_planner.ts @@ -1,7 +1,7 @@ import { MicrosoftPlannerIcon } from '@/components/icons' import { getScopesForService } from '@/lib/oauth/utils' import type { BlockConfig } from '@/blocks/types' -import { AuthMode } from '@/blocks/types' +import { AuthMode, IntegrationType } from '@/blocks/types' import type { MicrosoftPlannerResponse } from '@/tools/microsoft_planner/types' interface MicrosoftPlannerBlockParams { @@ -35,6 +35,8 @@ export const MicrosoftPlannerBlock: BlockConfig = { 'Integrate Microsoft Planner into the workflow. Manage tasks, plans, buckets, and task details including checklists and references.', docsLink: 'https://docs.sim.ai/tools/microsoft_planner', category: 'tools', + integrationType: IntegrationType.Productivity, + tags: ['project-management', 'microsoft-365', 'ticketing'], bgColor: '#E0E0E0', icon: MicrosoftPlannerIcon, subBlocks: [ diff --git a/apps/sim/blocks/blocks/microsoft_teams.ts b/apps/sim/blocks/blocks/microsoft_teams.ts index 7b382374c8..65869e81a9 100644 --- a/apps/sim/blocks/blocks/microsoft_teams.ts +++ b/apps/sim/blocks/blocks/microsoft_teams.ts @@ -1,7 +1,7 @@ import { MicrosoftTeamsIcon } from '@/components/icons' import { getScopesForService } from '@/lib/oauth/utils' import type { BlockConfig } from '@/blocks/types' -import { AuthMode } from '@/blocks/types' +import { AuthMode, IntegrationType } from '@/blocks/types' import { normalizeFileInput } from '@/blocks/utils' import type { MicrosoftTeamsResponse } from '@/tools/microsoft_teams/types' import { getTrigger } from '@/triggers' @@ -15,6 +15,8 @@ export const MicrosoftTeamsBlock: BlockConfig = { 'Integrate Microsoft Teams into the workflow. Read, write, update, and delete chat and channel messages. Reply to messages, add reactions, and list team/channel members. Can be used in trigger mode to trigger a workflow when a message is sent to a chat or channel. To mention users in messages, wrap their name in `` tags: `userName`', docsLink: 'https://docs.sim.ai/tools/microsoft_teams', category: 'tools', + integrationType: IntegrationType.Communication, + tags: ['messaging', 'microsoft-365'], triggerAllowed: true, bgColor: '#E0E0E0', icon: MicrosoftTeamsIcon, diff --git a/apps/sim/blocks/blocks/mistral_parse.ts b/apps/sim/blocks/blocks/mistral_parse.ts index d7bb020a1b..2ee52dbcf8 100644 --- a/apps/sim/blocks/blocks/mistral_parse.ts +++ b/apps/sim/blocks/blocks/mistral_parse.ts @@ -1,5 +1,5 @@ import { MistralIcon } from '@/components/icons' -import { AuthMode, type BlockConfig, type SubBlockType } from '@/blocks/types' +import { AuthMode, type BlockConfig, IntegrationType, type SubBlockType } from '@/blocks/types' import { createVersionedToolSelector, normalizeFileInput } from '@/blocks/utils' import type { MistralParserOutput } from '@/tools/mistral/types' @@ -12,6 +12,8 @@ export const MistralParseBlock: BlockConfig = { longDescription: `Integrate Mistral Parse into the workflow. Can extract text from uploaded PDF documents, or from a URL.`, docsLink: 'https://docs.sim.ai/tools/mistral_parse', category: 'tools', + integrationType: IntegrationType.AI, + tags: ['document-processing', 'ocr'], bgColor: '#000000', icon: MistralIcon, subBlocks: [ diff --git a/apps/sim/blocks/blocks/mongodb.ts b/apps/sim/blocks/blocks/mongodb.ts index aa567e30e3..cf1398f295 100644 --- a/apps/sim/blocks/blocks/mongodb.ts +++ b/apps/sim/blocks/blocks/mongodb.ts @@ -1,5 +1,6 @@ import { MongoDBIcon } from '@/components/icons' import type { BlockConfig } from '@/blocks/types' +import { IntegrationType } from '@/blocks/types' import type { MongoDBIntrospectResponse, MongoDBResponse } from '@/tools/mongodb/types' export const MongoDBBlock: BlockConfig = { @@ -10,6 +11,8 @@ export const MongoDBBlock: BlockConfig = { @@ -10,6 +11,8 @@ export const MySQLBlock: BlockConfig = { 'Integrate MySQL into the workflow. Can query, insert, update, delete, and execute raw SQL.', docsLink: 'https://docs.sim.ai/tools/mysql', category: 'tools', + integrationType: IntegrationType.Databases, + tags: ['data-warehouse', 'data-analytics'], bgColor: '#E0E0E0', icon: MySQLIcon, subBlocks: [ diff --git a/apps/sim/blocks/blocks/neo4j.ts b/apps/sim/blocks/blocks/neo4j.ts index 2624e5e0bb..df502c237c 100644 --- a/apps/sim/blocks/blocks/neo4j.ts +++ b/apps/sim/blocks/blocks/neo4j.ts @@ -1,5 +1,6 @@ import { Neo4jIcon } from '@/components/icons' import type { BlockConfig } from '@/blocks/types' +import { IntegrationType } from '@/blocks/types' import type { Neo4jIntrospectResponse, Neo4jResponse } from '@/tools/neo4j/types' export const Neo4jBlock: BlockConfig = { @@ -10,6 +11,8 @@ export const Neo4jBlock: BlockConfig = 'Integrate Neo4j graph database into the workflow. Can query, create, merge, update, and delete nodes and relationships.', docsLink: 'https://docs.sim.ai/tools/neo4j', category: 'tools', + integrationType: IntegrationType.Databases, + tags: ['data-warehouse', 'data-analytics'], bgColor: '#FFFFFF', icon: Neo4jIcon, subBlocks: [ diff --git a/apps/sim/blocks/blocks/notion.ts b/apps/sim/blocks/blocks/notion.ts index f222565fdf..82fae4c2c3 100644 --- a/apps/sim/blocks/blocks/notion.ts +++ b/apps/sim/blocks/blocks/notion.ts @@ -1,6 +1,6 @@ import { NotionIcon } from '@/components/icons' import type { BlockConfig } from '@/blocks/types' -import { AuthMode } from '@/blocks/types' +import { AuthMode, IntegrationType } from '@/blocks/types' import { createVersionedToolSelector } from '@/blocks/utils' import type { NotionResponse } from '@/tools/notion/types' @@ -15,6 +15,8 @@ export const NotionBlock: BlockConfig = { 'Integrate with Notion into the workflow. Can read page, read database, create page, create database, append content, query database, and search workspace.', docsLink: 'https://docs.sim.ai/tools/notion', category: 'tools', + integrationType: IntegrationType.Documents, + tags: ['note-taking', 'knowledge-base', 'content-management'], bgColor: '#181C1E', icon: NotionIcon, subBlocks: [ @@ -429,6 +431,8 @@ export const NotionV2Block: BlockConfig = { 'Integrate with Notion into the workflow. Can read page, read database, create page, create database, append content, query database, and search workspace.', docsLink: 'https://docs.sim.ai/tools/notion', category: 'tools', + integrationType: IntegrationType.Documents, + tags: ['note-taking', 'knowledge-base', 'content-management'], bgColor: '#181C1E', icon: NotionIcon, hideFromToolbar: false, diff --git a/apps/sim/blocks/blocks/obsidian.ts b/apps/sim/blocks/blocks/obsidian.ts index 533c80fc65..5771141261 100644 --- a/apps/sim/blocks/blocks/obsidian.ts +++ b/apps/sim/blocks/blocks/obsidian.ts @@ -1,6 +1,6 @@ import { ObsidianIcon } from '@/components/icons' import type { BlockConfig } from '@/blocks/types' -import { AuthMode } from '@/blocks/types' +import { AuthMode, IntegrationType } from '@/blocks/types' export const ObsidianBlock: BlockConfig = { type: 'obsidian', @@ -10,6 +10,8 @@ export const ObsidianBlock: BlockConfig = { 'Read, create, update, search, and delete notes in your Obsidian vault. Manage periodic notes, execute commands, and patch content at specific locations. Requires the Obsidian Local REST API plugin.', docsLink: 'https://docs.sim.ai/tools/obsidian', category: 'tools', + integrationType: IntegrationType.Documents, + tags: ['note-taking', 'knowledge-base'], bgColor: '#0F0F0F', icon: ObsidianIcon, authMode: AuthMode.ApiKey, diff --git a/apps/sim/blocks/blocks/okta.ts b/apps/sim/blocks/blocks/okta.ts index e0b284c1bb..8961846d60 100644 --- a/apps/sim/blocks/blocks/okta.ts +++ b/apps/sim/blocks/blocks/okta.ts @@ -1,5 +1,6 @@ import { OktaIcon } from '@/components/icons' import type { BlockConfig } from '@/blocks/types' +import { IntegrationType } from '@/blocks/types' import type { OktaResponse } from '@/tools/okta/types' export const OktaBlock: BlockConfig = { @@ -10,6 +11,8 @@ export const OktaBlock: BlockConfig = { 'Integrate Okta identity management into your workflow. List, create, update, activate, suspend, and delete users. Reset passwords. Manage groups and group membership.', docsLink: 'https://docs.sim.ai/tools/okta', category: 'tools', + integrationType: IntegrationType.Security, + tags: ['identity', 'automation'], bgColor: '#191919', icon: OktaIcon, diff --git a/apps/sim/blocks/blocks/onedrive.ts b/apps/sim/blocks/blocks/onedrive.ts index b8d54b5e30..4ecc27b97a 100644 --- a/apps/sim/blocks/blocks/onedrive.ts +++ b/apps/sim/blocks/blocks/onedrive.ts @@ -2,7 +2,7 @@ import { createLogger } from '@sim/logger' import { MicrosoftOneDriveIcon } from '@/components/icons' import { getScopesForService } from '@/lib/oauth/utils' import type { BlockConfig } from '@/blocks/types' -import { AuthMode } from '@/blocks/types' +import { AuthMode, IntegrationType } from '@/blocks/types' import { normalizeFileInput } from '@/blocks/utils' import type { OneDriveResponse } from '@/tools/onedrive/types' import { normalizeExcelValuesForToolParams } from '@/tools/onedrive/utils' @@ -18,6 +18,8 @@ export const OneDriveBlock: BlockConfig = { 'Integrate OneDrive into the workflow. Can create text and Excel files, upload files, download files, list files, and delete files or folders.', docsLink: 'https://docs.sim.ai/tools/onedrive', category: 'tools', + integrationType: IntegrationType.FileStorage, + tags: ['microsoft-365', 'cloud', 'document-processing'], bgColor: '#E0E0E0', icon: MicrosoftOneDriveIcon, subBlocks: [ diff --git a/apps/sim/blocks/blocks/onepassword.ts b/apps/sim/blocks/blocks/onepassword.ts index 7407c7f927..80e5b4adef 100644 --- a/apps/sim/blocks/blocks/onepassword.ts +++ b/apps/sim/blocks/blocks/onepassword.ts @@ -1,5 +1,5 @@ import { OnePasswordIcon } from '@/components/icons' -import { AuthMode, type BlockConfig } from '@/blocks/types' +import { AuthMode, type BlockConfig, IntegrationType } from '@/blocks/types' export const OnePasswordBlock: BlockConfig = { type: 'onepassword', @@ -9,6 +9,8 @@ export const OnePasswordBlock: BlockConfig = { 'Access and manage secrets stored in 1Password vaults using the Connect API or Service Account SDK. List vaults, retrieve items with their fields and secrets, create new items, update existing ones, delete items, and resolve secret references.', docsLink: 'https://docs.sim.ai/tools/onepassword', category: 'tools', + integrationType: IntegrationType.Security, + tags: ['secrets-management', 'identity'], bgColor: '#E0E0E0', icon: OnePasswordIcon, authMode: AuthMode.ApiKey, diff --git a/apps/sim/blocks/blocks/openai.ts b/apps/sim/blocks/blocks/openai.ts index 2585804b29..5069ab1386 100644 --- a/apps/sim/blocks/blocks/openai.ts +++ b/apps/sim/blocks/blocks/openai.ts @@ -1,6 +1,6 @@ import { OpenAIIcon } from '@/components/icons' import type { BlockConfig } from '@/blocks/types' -import { AuthMode } from '@/blocks/types' +import { AuthMode, IntegrationType } from '@/blocks/types' export const OpenAIBlock: BlockConfig = { type: 'openai', @@ -9,6 +9,8 @@ export const OpenAIBlock: BlockConfig = { authMode: AuthMode.ApiKey, longDescription: 'Integrate Embeddings into the workflow. Can generate embeddings from text.', category: 'tools', + integrationType: IntegrationType.AI, + tags: ['llm', 'vector-search'], docsLink: 'https://docs.sim.ai/tools/openai', bgColor: '#10a37f', icon: OpenAIIcon, diff --git a/apps/sim/blocks/blocks/outlook.ts b/apps/sim/blocks/blocks/outlook.ts index 2635a5be65..ead70e9e7c 100644 --- a/apps/sim/blocks/blocks/outlook.ts +++ b/apps/sim/blocks/blocks/outlook.ts @@ -1,7 +1,7 @@ import { OutlookIcon } from '@/components/icons' import { getScopesForService } from '@/lib/oauth/utils' import type { BlockConfig } from '@/blocks/types' -import { AuthMode } from '@/blocks/types' +import { AuthMode, IntegrationType } from '@/blocks/types' import { normalizeFileInput } from '@/blocks/utils' import type { OutlookResponse } from '@/tools/outlook/types' import { getTrigger } from '@/triggers' @@ -15,6 +15,8 @@ export const OutlookBlock: BlockConfig = { 'Integrate Outlook into the workflow. Can read, draft, send, forward, and move email messages. Can be used in trigger mode to trigger a workflow when a new email is received.', docsLink: 'https://docs.sim.ai/tools/outlook', category: 'tools', + integrationType: IntegrationType.Email, + tags: ['microsoft-365', 'messaging', 'automation'], triggerAllowed: true, bgColor: '#E0E0E0', icon: OutlookIcon, diff --git a/apps/sim/blocks/blocks/pagerduty.ts b/apps/sim/blocks/blocks/pagerduty.ts index 34e1336bb9..5cb6a4e88c 100644 --- a/apps/sim/blocks/blocks/pagerduty.ts +++ b/apps/sim/blocks/blocks/pagerduty.ts @@ -1,5 +1,5 @@ import { PagerDutyIcon } from '@/components/icons' -import { AuthMode, type BlockConfig } from '@/blocks/types' +import { AuthMode, type BlockConfig, IntegrationType } from '@/blocks/types' export const PagerDutyBlock: BlockConfig = { type: 'pagerduty', @@ -9,6 +9,8 @@ export const PagerDutyBlock: BlockConfig = { 'Integrate PagerDuty into your workflow to list, create, and update incidents, add notes, list services, and check on-call schedules.', docsLink: 'https://docs.sim.ai/tools/pagerduty', category: 'tools', + integrationType: IntegrationType.DeveloperTools, + tags: ['incident-management', 'monitoring'], bgColor: '#06AC38', icon: PagerDutyIcon, authMode: AuthMode.ApiKey, diff --git a/apps/sim/blocks/blocks/parallel.ts b/apps/sim/blocks/blocks/parallel.ts index 65fdc052c6..b57dac6563 100644 --- a/apps/sim/blocks/blocks/parallel.ts +++ b/apps/sim/blocks/blocks/parallel.ts @@ -1,5 +1,5 @@ import { ParallelIcon } from '@/components/icons' -import { AuthMode, type BlockConfig } from '@/blocks/types' +import { AuthMode, type BlockConfig, IntegrationType } from '@/blocks/types' import type { ToolResponse } from '@/tools/types' export const ParallelBlock: BlockConfig = { @@ -11,6 +11,8 @@ export const ParallelBlock: BlockConfig = { 'Integrate Parallel AI into the workflow. Can search the web, extract information from URLs, and conduct deep research.', docsLink: 'https://docs.sim.ai/tools/parallel-ai', category: 'tools', + integrationType: IntegrationType.Search, + tags: ['web-scraping', 'llm', 'agentic'], bgColor: '#E0E0E0', icon: ParallelIcon, subBlocks: [ diff --git a/apps/sim/blocks/blocks/perplexity.ts b/apps/sim/blocks/blocks/perplexity.ts index eb88fe81b4..7a1050e94b 100644 --- a/apps/sim/blocks/blocks/perplexity.ts +++ b/apps/sim/blocks/blocks/perplexity.ts @@ -1,5 +1,5 @@ import { PerplexityIcon } from '@/components/icons' -import { AuthMode, type BlockConfig } from '@/blocks/types' +import { AuthMode, type BlockConfig, IntegrationType } from '@/blocks/types' import type { PerplexityChatResponse, PerplexitySearchResponse } from '@/tools/perplexity/types' type PerplexityResponse = PerplexityChatResponse | PerplexitySearchResponse @@ -13,6 +13,8 @@ export const PerplexityBlock: BlockConfig = { authMode: AuthMode.ApiKey, docsLink: 'https://docs.sim.ai/tools/perplexity', category: 'tools', + integrationType: IntegrationType.AI, + tags: ['llm', 'web-scraping', 'agentic'], bgColor: '#20808D', // Perplexity turquoise color icon: PerplexityIcon, subBlocks: [ diff --git a/apps/sim/blocks/blocks/pinecone.ts b/apps/sim/blocks/blocks/pinecone.ts index c89b67c20a..59459a8041 100644 --- a/apps/sim/blocks/blocks/pinecone.ts +++ b/apps/sim/blocks/blocks/pinecone.ts @@ -1,6 +1,6 @@ import { PineconeIcon } from '@/components/icons' import type { BlockConfig } from '@/blocks/types' -import { AuthMode } from '@/blocks/types' +import { AuthMode, IntegrationType } from '@/blocks/types' import type { PineconeResponse } from '@/tools/pinecone/types' export const PineconeBlock: BlockConfig = { @@ -12,6 +12,8 @@ export const PineconeBlock: BlockConfig = { 'Integrate Pinecone into the workflow. Can generate embeddings, upsert text, search with text, fetch vectors, and search with vectors.', docsLink: 'https://docs.sim.ai/tools/pinecone', category: 'tools', + integrationType: IntegrationType.Databases, + tags: ['vector-search', 'knowledge-base'], bgColor: '#0D1117', icon: PineconeIcon, diff --git a/apps/sim/blocks/blocks/pipedrive.ts b/apps/sim/blocks/blocks/pipedrive.ts index 7b62906f93..4d7b860666 100644 --- a/apps/sim/blocks/blocks/pipedrive.ts +++ b/apps/sim/blocks/blocks/pipedrive.ts @@ -1,7 +1,7 @@ import { PipedriveIcon } from '@/components/icons' import { getScopesForService } from '@/lib/oauth/utils' import type { BlockConfig } from '@/blocks/types' -import { AuthMode } from '@/blocks/types' +import { AuthMode, IntegrationType } from '@/blocks/types' import type { PipedriveResponse } from '@/tools/pipedrive/types' export const PipedriveBlock: BlockConfig = { @@ -13,6 +13,8 @@ export const PipedriveBlock: BlockConfig = { 'Integrate Pipedrive into your workflow. Manage deals, contacts, sales pipeline, projects, activities, files, and communications with powerful CRM capabilities.', docsLink: 'https://docs.sim.ai/tools/pipedrive', category: 'tools', + integrationType: IntegrationType.CRM, + tags: ['sales-engagement', 'project-management'], bgColor: '#2E6936', icon: PipedriveIcon, subBlocks: [ diff --git a/apps/sim/blocks/blocks/polymarket.ts b/apps/sim/blocks/blocks/polymarket.ts index dd92a40571..62eb55ce2f 100644 --- a/apps/sim/blocks/blocks/polymarket.ts +++ b/apps/sim/blocks/blocks/polymarket.ts @@ -1,5 +1,6 @@ import { PolymarketIcon } from '@/components/icons' import type { BlockConfig } from '@/blocks/types' +import { IntegrationType } from '@/blocks/types' export const PolymarketBlock: BlockConfig = { type: 'polymarket', @@ -9,6 +10,8 @@ export const PolymarketBlock: BlockConfig = { 'Integrate Polymarket prediction markets into the workflow. Can get markets, market, events, event, tags, series, orderbook, price, midpoint, price history, last trade price, spread, tick size, positions, trades, activity, leaderboard, holders, and search.', docsLink: 'https://docs.sim.ai/tools/polymarket', category: 'tools', + integrationType: IntegrationType.Analytics, + tags: ['prediction-markets', 'data-analytics'], bgColor: '#4C82FB', icon: PolymarketIcon, subBlocks: [ diff --git a/apps/sim/blocks/blocks/postgresql.ts b/apps/sim/blocks/blocks/postgresql.ts index 2f37573334..53bf028ed6 100644 --- a/apps/sim/blocks/blocks/postgresql.ts +++ b/apps/sim/blocks/blocks/postgresql.ts @@ -1,5 +1,6 @@ import { PostgresIcon } from '@/components/icons' import type { BlockConfig } from '@/blocks/types' +import { IntegrationType } from '@/blocks/types' import type { PostgresResponse } from '@/tools/postgresql/types' export const PostgreSQLBlock: BlockConfig = { @@ -10,6 +11,8 @@ export const PostgreSQLBlock: BlockConfig = { 'Integrate PostgreSQL into the workflow. Can query, insert, update, delete, and execute raw SQL.', docsLink: 'https://docs.sim.ai/tools/postgresql', category: 'tools', + integrationType: IntegrationType.Databases, + tags: ['data-warehouse', 'data-analytics'], bgColor: '#336791', icon: PostgresIcon, subBlocks: [ diff --git a/apps/sim/blocks/blocks/posthog.ts b/apps/sim/blocks/blocks/posthog.ts index fef1f8aa5d..9e4f147a9c 100644 --- a/apps/sim/blocks/blocks/posthog.ts +++ b/apps/sim/blocks/blocks/posthog.ts @@ -1,6 +1,6 @@ import { PosthogIcon } from '@/components/icons' import type { BlockConfig } from '@/blocks/types' -import { AuthMode } from '@/blocks/types' +import { AuthMode, IntegrationType } from '@/blocks/types' import type { PostHogResponse } from '@/tools/posthog/types' export const PostHogBlock: BlockConfig = { @@ -12,6 +12,8 @@ export const PostHogBlock: BlockConfig = { 'Integrate PostHog into your workflow. Track events, manage feature flags, analyze user behavior, run experiments, create surveys, and access session recordings.', docsLink: 'https://docs.sim.ai/tools/posthog', category: 'tools', + integrationType: IntegrationType.Analytics, + tags: ['data-analytics', 'monitoring'], bgColor: '#E0E0E0', icon: PosthogIcon, subBlocks: [ diff --git a/apps/sim/blocks/blocks/pulse.ts b/apps/sim/blocks/blocks/pulse.ts index fda29aa162..41b6a74571 100644 --- a/apps/sim/blocks/blocks/pulse.ts +++ b/apps/sim/blocks/blocks/pulse.ts @@ -1,5 +1,5 @@ import { PulseIcon } from '@/components/icons' -import { AuthMode, type BlockConfig, type SubBlockType } from '@/blocks/types' +import { AuthMode, type BlockConfig, IntegrationType, type SubBlockType } from '@/blocks/types' import { createVersionedToolSelector, normalizeFileInput } from '@/blocks/utils' import type { PulseParserOutput } from '@/tools/pulse/types' @@ -13,6 +13,8 @@ export const PulseBlock: BlockConfig = { 'Integrate Pulse into the workflow. Extract text from PDF documents, images, and Office files via URL or upload.', docsLink: 'https://docs.sim.ai/tools/pulse', category: 'tools', + integrationType: IntegrationType.AI, + tags: ['document-processing', 'ocr'], bgColor: '#E0E0E0', icon: PulseIcon, subBlocks: [ diff --git a/apps/sim/blocks/blocks/qdrant.ts b/apps/sim/blocks/blocks/qdrant.ts index 9d0de09c32..71ec14c216 100644 --- a/apps/sim/blocks/blocks/qdrant.ts +++ b/apps/sim/blocks/blocks/qdrant.ts @@ -1,6 +1,6 @@ import { QdrantIcon } from '@/components/icons' import type { BlockConfig } from '@/blocks/types' -import { AuthMode } from '@/blocks/types' +import { AuthMode, IntegrationType } from '@/blocks/types' import type { QdrantResponse } from '@/tools/qdrant/types' export const QdrantBlock: BlockConfig = { @@ -11,6 +11,8 @@ export const QdrantBlock: BlockConfig = { longDescription: 'Integrate Qdrant into the workflow. Can upsert, search, and fetch points.', docsLink: 'https://qdrant.tech/documentation/', category: 'tools', + integrationType: IntegrationType.Databases, + tags: ['vector-search', 'knowledge-base'], bgColor: '#1A223F', icon: QdrantIcon, diff --git a/apps/sim/blocks/blocks/rds.ts b/apps/sim/blocks/blocks/rds.ts index 1bf54787c2..71ac6822e8 100644 --- a/apps/sim/blocks/blocks/rds.ts +++ b/apps/sim/blocks/blocks/rds.ts @@ -1,5 +1,6 @@ import { RDSIcon } from '@/components/icons' import type { BlockConfig } from '@/blocks/types' +import { IntegrationType } from '@/blocks/types' import type { RdsIntrospectResponse, RdsResponse } from '@/tools/rds/types' export const RDSBlock: BlockConfig = { @@ -10,6 +11,8 @@ export const RDSBlock: BlockConfig = { 'Integrate Amazon RDS Aurora Serverless into the workflow using the Data API. Can query, insert, update, delete, and execute raw SQL without managing database connections.', docsLink: 'https://docs.sim.ai/tools/rds', category: 'tools', + integrationType: IntegrationType.Databases, + tags: ['cloud', 'data-warehouse'], bgColor: 'linear-gradient(45deg, #2E27AD 0%, #527FFF 100%)', icon: RDSIcon, subBlocks: [ diff --git a/apps/sim/blocks/blocks/reddit.ts b/apps/sim/blocks/blocks/reddit.ts index d2ddb1d908..a9e4400806 100644 --- a/apps/sim/blocks/blocks/reddit.ts +++ b/apps/sim/blocks/blocks/reddit.ts @@ -1,7 +1,7 @@ import { RedditIcon } from '@/components/icons' import { getScopesForService } from '@/lib/oauth/utils' import type { BlockConfig } from '@/blocks/types' -import { AuthMode } from '@/blocks/types' +import { AuthMode, IntegrationType } from '@/blocks/types' import type { RedditResponse } from '@/tools/reddit/types' export const RedditBlock: BlockConfig = { @@ -13,6 +13,8 @@ export const RedditBlock: BlockConfig = { 'Integrate Reddit into workflows. Read posts, comments, and search content. Submit posts, vote, reply, edit, manage messages, and access user and subreddit info.', docsLink: 'https://docs.sim.ai/tools/reddit', category: 'tools', + integrationType: IntegrationType.Social, + tags: ['content-management', 'web-scraping'], bgColor: '#FF5700', icon: RedditIcon, subBlocks: [ diff --git a/apps/sim/blocks/blocks/redis.ts b/apps/sim/blocks/blocks/redis.ts index 1b105dac5f..8149fb4c6d 100644 --- a/apps/sim/blocks/blocks/redis.ts +++ b/apps/sim/blocks/blocks/redis.ts @@ -1,6 +1,6 @@ import { RedisIcon } from '@/components/icons' import type { BlockConfig } from '@/blocks/types' -import { AuthMode } from '@/blocks/types' +import { AuthMode, IntegrationType } from '@/blocks/types' import type { RedisCommandResponse, RedisDeleteResponse, @@ -81,6 +81,8 @@ export const RedisBlock: BlockConfig = { 'Connect to any Redis instance to perform key-value, hash, list, and utility operations via a direct connection.', docsLink: 'https://docs.sim.ai/tools/redis', category: 'tools', + integrationType: IntegrationType.Databases, + tags: ['cloud', 'data-warehouse'], bgColor: '#FF4438', authMode: AuthMode.ApiKey, icon: RedisIcon, diff --git a/apps/sim/blocks/blocks/reducto.ts b/apps/sim/blocks/blocks/reducto.ts index d0c6ed7ce3..cd666fa739 100644 --- a/apps/sim/blocks/blocks/reducto.ts +++ b/apps/sim/blocks/blocks/reducto.ts @@ -1,5 +1,5 @@ import { ReductoIcon } from '@/components/icons' -import { AuthMode, type BlockConfig, type SubBlockType } from '@/blocks/types' +import { AuthMode, type BlockConfig, IntegrationType, type SubBlockType } from '@/blocks/types' import { createVersionedToolSelector, normalizeFileInput } from '@/blocks/utils' import type { ReductoParserOutput } from '@/tools/reducto/types' @@ -12,6 +12,8 @@ export const ReductoBlock: BlockConfig = { longDescription: `Integrate Reducto Parse into the workflow. Can extract text from uploaded PDF documents, or from a URL.`, docsLink: 'https://docs.sim.ai/tools/reducto', category: 'tools', + integrationType: IntegrationType.AI, + tags: ['document-processing', 'ocr'], bgColor: '#5c0c5c', icon: ReductoIcon, subBlocks: [ diff --git a/apps/sim/blocks/blocks/resend.ts b/apps/sim/blocks/blocks/resend.ts index 75a06bcfaa..db3b77506a 100644 --- a/apps/sim/blocks/blocks/resend.ts +++ b/apps/sim/blocks/blocks/resend.ts @@ -1,6 +1,6 @@ import { ResendIcon } from '@/components/icons' import type { BlockConfig } from '@/blocks/types' -import { AuthMode } from '@/blocks/types' +import { AuthMode, IntegrationType } from '@/blocks/types' export const ResendBlock: BlockConfig = { type: 'resend', @@ -10,6 +10,8 @@ export const ResendBlock: BlockConfig = { 'Integrate Resend into your workflow. Send emails, retrieve email status, manage contacts, and view domains. Requires API Key.', docsLink: 'https://docs.sim.ai/tools/resend', category: 'tools', + integrationType: IntegrationType.Email, + tags: ['email-marketing', 'messaging'], bgColor: '#181C1E', icon: ResendIcon, authMode: AuthMode.ApiKey, diff --git a/apps/sim/blocks/blocks/revenuecat.ts b/apps/sim/blocks/blocks/revenuecat.ts index b6e645c42b..c99b5cf691 100644 --- a/apps/sim/blocks/blocks/revenuecat.ts +++ b/apps/sim/blocks/blocks/revenuecat.ts @@ -1,6 +1,6 @@ import { RevenueCatIcon } from '@/components/icons' import type { BlockConfig } from '@/blocks/types' -import { AuthMode } from '@/blocks/types' +import { AuthMode, IntegrationType } from '@/blocks/types' import type { RevenueCatResponse } from '@/tools/revenuecat/types' export const RevenueCatBlock: BlockConfig = { @@ -12,6 +12,8 @@ export const RevenueCatBlock: BlockConfig = { 'Integrate RevenueCat into the workflow. Manage subscribers, entitlements, offerings, and Google Play subscriptions. Retrieve customer subscription status, grant or revoke promotional entitlements, record purchases, update subscriber attributes, and manage Google Play subscription billing.', docsLink: 'https://docs.sim.ai/tools/revenuecat', category: 'tools', + integrationType: IntegrationType.Ecommerce, + tags: ['payments', 'subscriptions'], bgColor: '#F25A5A', icon: RevenueCatIcon, subBlocks: [ diff --git a/apps/sim/blocks/blocks/rss.ts b/apps/sim/blocks/blocks/rss.ts index d91f8a6b82..8f1214e483 100644 --- a/apps/sim/blocks/blocks/rss.ts +++ b/apps/sim/blocks/blocks/rss.ts @@ -1,5 +1,6 @@ import { RssIcon } from '@/components/icons' import type { BlockConfig } from '@/blocks/types' +import { IntegrationType } from '@/blocks/types' import { getTrigger } from '@/triggers' export const RssBlock: BlockConfig = { @@ -9,6 +10,8 @@ export const RssBlock: BlockConfig = { longDescription: 'Subscribe to any RSS or Atom feed and automatically trigger your workflow when new content is published. Perfect for monitoring blogs, news sites, podcasts, and any content that publishes an RSS feed.', category: 'triggers', + integrationType: IntegrationType.Search, + tags: ['content-management', 'automation'], bgColor: '#F97316', icon: RssIcon, triggerAllowed: true, diff --git a/apps/sim/blocks/blocks/s3.ts b/apps/sim/blocks/blocks/s3.ts index 30fabd9d3e..5e93cdef6e 100644 --- a/apps/sim/blocks/blocks/s3.ts +++ b/apps/sim/blocks/blocks/s3.ts @@ -1,6 +1,6 @@ import { S3Icon } from '@/components/icons' import type { BlockConfig } from '@/blocks/types' -import { AuthMode } from '@/blocks/types' +import { AuthMode, IntegrationType } from '@/blocks/types' import { normalizeFileInput } from '@/blocks/utils' import type { S3Response } from '@/tools/s3/types' @@ -13,6 +13,8 @@ export const S3Block: BlockConfig = { 'Integrate S3 into the workflow. Upload files, download objects, list bucket contents, delete objects, and copy objects between buckets. Requires AWS access key and secret access key.', docsLink: 'https://docs.sim.ai/tools/s3', category: 'tools', + integrationType: IntegrationType.FileStorage, + tags: ['cloud', 'data-warehouse'], bgColor: 'linear-gradient(45deg, #1B660F 0%, #6CAE3E 100%)', icon: S3Icon, subBlocks: [ diff --git a/apps/sim/blocks/blocks/salesforce.ts b/apps/sim/blocks/blocks/salesforce.ts index f6bbd422e6..53a9d67ada 100644 --- a/apps/sim/blocks/blocks/salesforce.ts +++ b/apps/sim/blocks/blocks/salesforce.ts @@ -1,7 +1,7 @@ import { SalesforceIcon } from '@/components/icons' import { getScopesForService } from '@/lib/oauth/utils' import type { BlockConfig } from '@/blocks/types' -import { AuthMode } from '@/blocks/types' +import { AuthMode, IntegrationType } from '@/blocks/types' import type { SalesforceResponse } from '@/tools/salesforce/types' export const SalesforceBlock: BlockConfig = { @@ -13,6 +13,8 @@ export const SalesforceBlock: BlockConfig = { 'Integrate Salesforce into your workflow. Manage accounts, contacts, leads, opportunities, cases, and tasks with powerful automation capabilities.', docsLink: 'https://docs.sim.ai/tools/salesforce', category: 'tools', + integrationType: IntegrationType.CRM, + tags: ['sales-engagement', 'customer-support'], bgColor: '#E0E0E0', icon: SalesforceIcon, subBlocks: [ diff --git a/apps/sim/blocks/blocks/search.ts b/apps/sim/blocks/blocks/search.ts index 9ec8dbe482..70f82ab211 100644 --- a/apps/sim/blocks/blocks/search.ts +++ b/apps/sim/blocks/blocks/search.ts @@ -1,5 +1,6 @@ import { SearchIcon } from '@/components/icons' import type { BlockConfig } from '@/blocks/types' +import { IntegrationType } from '@/blocks/types' export const SearchBlock: BlockConfig = { type: 'search', @@ -9,6 +10,8 @@ export const SearchBlock: BlockConfig = { bgColor: '#3B82F6', icon: SearchIcon, category: 'tools', + integrationType: IntegrationType.Search, + tags: ['web-scraping', 'seo'], docsLink: 'https://docs.sim.ai/tools/search', subBlocks: [ { diff --git a/apps/sim/blocks/blocks/sendgrid.ts b/apps/sim/blocks/blocks/sendgrid.ts index 29a58c2564..37c151702b 100644 --- a/apps/sim/blocks/blocks/sendgrid.ts +++ b/apps/sim/blocks/blocks/sendgrid.ts @@ -1,5 +1,6 @@ import { SendgridIcon } from '@/components/icons' import type { BlockConfig } from '@/blocks/types' +import { IntegrationType } from '@/blocks/types' import { normalizeFileInput } from '@/blocks/utils' import type { SendMailResult } from '@/tools/sendgrid/types' @@ -11,6 +12,8 @@ export const SendGridBlock: BlockConfig = { 'Integrate SendGrid into your workflow. Send transactional emails, manage marketing contacts and lists, and work with email templates. Supports dynamic templates, attachments, and comprehensive contact management.', docsLink: 'https://docs.sim.ai/tools/sendgrid', category: 'tools', + integrationType: IntegrationType.Email, + tags: ['email-marketing', 'messaging'], bgColor: '#1A82E2', icon: SendgridIcon, diff --git a/apps/sim/blocks/blocks/sentry.ts b/apps/sim/blocks/blocks/sentry.ts index 8afe64d960..19d3b5be4c 100644 --- a/apps/sim/blocks/blocks/sentry.ts +++ b/apps/sim/blocks/blocks/sentry.ts @@ -1,6 +1,6 @@ import { SentryIcon } from '@/components/icons' import type { BlockConfig } from '@/blocks/types' -import { AuthMode } from '@/blocks/types' +import { AuthMode, IntegrationType } from '@/blocks/types' import type { SentryResponse } from '@/tools/sentry/types' export const SentryBlock: BlockConfig = { @@ -12,6 +12,8 @@ export const SentryBlock: BlockConfig = { 'Integrate Sentry into the workflow. Monitor issues, manage projects, track events, and coordinate releases across your applications.', docsLink: 'https://docs.sim.ai/tools/sentry', category: 'tools', + integrationType: IntegrationType.DeveloperTools, + tags: ['error-tracking', 'monitoring'], bgColor: '#E0E0E0', icon: SentryIcon, subBlocks: [ diff --git a/apps/sim/blocks/blocks/serper.ts b/apps/sim/blocks/blocks/serper.ts index 202de8ef70..b857dbe58a 100644 --- a/apps/sim/blocks/blocks/serper.ts +++ b/apps/sim/blocks/blocks/serper.ts @@ -1,6 +1,6 @@ import { SerperIcon } from '@/components/icons' import type { BlockConfig } from '@/blocks/types' -import { AuthMode } from '@/blocks/types' +import { AuthMode, IntegrationType } from '@/blocks/types' import type { SearchResponse } from '@/tools/serper/types' export const SerperBlock: BlockConfig = { @@ -11,6 +11,8 @@ export const SerperBlock: BlockConfig = { longDescription: 'Integrate Serper into the workflow. Can search the web.', docsLink: 'https://docs.sim.ai/tools/serper', category: 'tools', + integrationType: IntegrationType.Search, + tags: ['web-scraping', 'seo'], bgColor: '#2B3543', icon: SerperIcon, subBlocks: [ diff --git a/apps/sim/blocks/blocks/servicenow.ts b/apps/sim/blocks/blocks/servicenow.ts index 2a260d88c0..1437658472 100644 --- a/apps/sim/blocks/blocks/servicenow.ts +++ b/apps/sim/blocks/blocks/servicenow.ts @@ -1,5 +1,6 @@ import { ServiceNowIcon } from '@/components/icons' import type { BlockConfig } from '@/blocks/types' +import { IntegrationType } from '@/blocks/types' import type { ServiceNowResponse } from '@/tools/servicenow/types' export const ServiceNowBlock: BlockConfig = { @@ -10,6 +11,8 @@ export const ServiceNowBlock: BlockConfig = { 'Integrate ServiceNow into your workflow. Create, read, update, and delete records in any ServiceNow table including incidents, tasks, change requests, users, and more.', docsLink: 'https://docs.sim.ai/tools/servicenow', category: 'tools', + integrationType: IntegrationType.CustomerSupport, + tags: ['customer-support', 'ticketing', 'incident-management'], bgColor: '#032D42', icon: ServiceNowIcon, subBlocks: [ diff --git a/apps/sim/blocks/blocks/sftp.ts b/apps/sim/blocks/blocks/sftp.ts index 0a868644d3..18b3bd43f1 100644 --- a/apps/sim/blocks/blocks/sftp.ts +++ b/apps/sim/blocks/blocks/sftp.ts @@ -1,6 +1,6 @@ import { SftpIcon } from '@/components/icons' import type { BlockConfig } from '@/blocks/types' -import { AuthMode } from '@/blocks/types' +import { AuthMode, IntegrationType } from '@/blocks/types' import { normalizeFileInput } from '@/blocks/utils' import type { SftpUploadResult } from '@/tools/sftp/types' @@ -12,6 +12,8 @@ export const SftpBlock: BlockConfig = { 'Upload, download, list, and manage files on remote servers via SFTP. Supports both password and private key authentication for secure file transfers.', docsLink: 'https://docs.sim.ai/tools/sftp', category: 'tools', + integrationType: IntegrationType.FileStorage, + tags: ['cloud', 'automation'], bgColor: '#2D3748', icon: SftpIcon, authMode: AuthMode.ApiKey, diff --git a/apps/sim/blocks/blocks/sharepoint.ts b/apps/sim/blocks/blocks/sharepoint.ts index 85ac2c34ba..8813654588 100644 --- a/apps/sim/blocks/blocks/sharepoint.ts +++ b/apps/sim/blocks/blocks/sharepoint.ts @@ -2,7 +2,7 @@ import { createLogger } from '@sim/logger' import { MicrosoftSharepointIcon } from '@/components/icons' import { getScopesForService } from '@/lib/oauth/utils' import type { BlockConfig } from '@/blocks/types' -import { AuthMode } from '@/blocks/types' +import { AuthMode, IntegrationType } from '@/blocks/types' import { normalizeFileInput } from '@/blocks/utils' import type { SharepointResponse } from '@/tools/sharepoint/types' @@ -17,6 +17,8 @@ export const SharepointBlock: BlockConfig = { 'Integrate SharePoint into the workflow. Read/create pages, list sites, and work with lists (read, create, update items). Requires OAuth.', docsLink: 'https://docs.sim.ai/tools/sharepoint', category: 'tools', + integrationType: IntegrationType.Documents, + tags: ['microsoft-365', 'content-management', 'document-processing'], bgColor: '#E0E0E0', icon: MicrosoftSharepointIcon, subBlocks: [ diff --git a/apps/sim/blocks/blocks/shopify.ts b/apps/sim/blocks/blocks/shopify.ts index 7c4d12e737..d21d414c8c 100644 --- a/apps/sim/blocks/blocks/shopify.ts +++ b/apps/sim/blocks/blocks/shopify.ts @@ -1,7 +1,7 @@ import { ShopifyIcon } from '@/components/icons' import { getScopesForService } from '@/lib/oauth/utils' import type { BlockConfig } from '@/blocks/types' -import { AuthMode } from '@/blocks/types' +import { AuthMode, IntegrationType } from '@/blocks/types' interface ShopifyResponse { success: boolean @@ -18,6 +18,8 @@ export const ShopifyBlock: BlockConfig = { 'Integrate Shopify into your workflow. Manage products, orders, customers, and inventory. Create, read, update, and delete products. List and manage orders. Handle customer data and adjust inventory levels.', docsLink: 'https://docs.sim.ai/tools/shopify', category: 'tools', + integrationType: IntegrationType.Ecommerce, + tags: ['payments', 'subscriptions'], icon: ShopifyIcon, bgColor: '#FFFFFF', subBlocks: [ diff --git a/apps/sim/blocks/blocks/similarweb.ts b/apps/sim/blocks/blocks/similarweb.ts index 432b3a4712..a2af1b178f 100644 --- a/apps/sim/blocks/blocks/similarweb.ts +++ b/apps/sim/blocks/blocks/similarweb.ts @@ -1,6 +1,6 @@ import { SimilarwebIcon } from '@/components/icons' import type { BlockConfig } from '@/blocks/types' -import { AuthMode } from '@/blocks/types' +import { AuthMode, IntegrationType } from '@/blocks/types' export const SimilarwebBlock: BlockConfig = { type: 'similarweb', @@ -10,6 +10,8 @@ export const SimilarwebBlock: BlockConfig = { 'Access comprehensive website analytics including traffic estimates, engagement metrics, rankings, and traffic sources using the Similarweb API.', docsLink: 'https://developers.similarweb.com/docs/similarweb-web-traffic-api', category: 'tools', + integrationType: IntegrationType.Analytics, + tags: ['marketing', 'data-analytics', 'seo'], bgColor: '#000922', icon: SimilarwebIcon, authMode: AuthMode.ApiKey, diff --git a/apps/sim/blocks/blocks/slack.ts b/apps/sim/blocks/blocks/slack.ts index a455c8f039..23edef24d9 100644 --- a/apps/sim/blocks/blocks/slack.ts +++ b/apps/sim/blocks/blocks/slack.ts @@ -1,7 +1,7 @@ import { SlackIcon } from '@/components/icons' import { getScopesForService } from '@/lib/oauth/utils' import type { BlockConfig } from '@/blocks/types' -import { AuthMode } from '@/blocks/types' +import { AuthMode, IntegrationType } from '@/blocks/types' import { normalizeFileInput } from '@/blocks/utils' import type { SlackResponse } from '@/tools/slack/types' import { getTrigger } from '@/triggers' @@ -16,6 +16,8 @@ export const SlackBlock: BlockConfig = { 'Integrate Slack into the workflow. Can send, update, and delete messages, send ephemeral messages visible only to a specific user, open/update/push modal views, publish Home tab views, create canvases, read messages, and add or remove reactions. Requires Bot Token instead of OAuth in advanced mode. Can be used in trigger mode to trigger a workflow when a message is sent to a channel.', docsLink: 'https://docs.sim.ai/tools/slack', category: 'tools', + integrationType: IntegrationType.Communication, + tags: ['messaging', 'webhooks', 'automation'], bgColor: '#611f69', icon: SlackIcon, triggerAllowed: true, diff --git a/apps/sim/blocks/blocks/smtp.ts b/apps/sim/blocks/blocks/smtp.ts index 6537beb5c9..43aeb75713 100644 --- a/apps/sim/blocks/blocks/smtp.ts +++ b/apps/sim/blocks/blocks/smtp.ts @@ -1,6 +1,6 @@ import { SmtpIcon } from '@/components/icons' import type { BlockConfig } from '@/blocks/types' -import { AuthMode } from '@/blocks/types' +import { AuthMode, IntegrationType } from '@/blocks/types' import { normalizeFileInput } from '@/blocks/utils' import type { SmtpSendMailResult } from '@/tools/smtp/types' @@ -12,6 +12,8 @@ export const SmtpBlock: BlockConfig = { 'Send emails using any SMTP server (Gmail, Outlook, custom servers, etc.). Configure SMTP connection settings and send emails with full control over content, recipients, and attachments.', docsLink: 'https://docs.sim.ai/tools/smtp', category: 'tools', + integrationType: IntegrationType.Email, + tags: ['email-marketing', 'messaging'], bgColor: '#2D3748', icon: SmtpIcon, authMode: AuthMode.ApiKey, diff --git a/apps/sim/blocks/blocks/spotify.ts b/apps/sim/blocks/blocks/spotify.ts index 61d0670f49..2c4de8e7f2 100644 --- a/apps/sim/blocks/blocks/spotify.ts +++ b/apps/sim/blocks/blocks/spotify.ts @@ -1,6 +1,6 @@ import { SpotifyIcon } from '@/components/icons' import type { BlockConfig } from '@/blocks/types' -import { AuthMode } from '@/blocks/types' +import { AuthMode, IntegrationType } from '@/blocks/types' import { normalizeFileInput } from '@/blocks/utils' import type { ToolResponse } from '@/tools/types' @@ -13,6 +13,8 @@ export const SpotifyBlock: BlockConfig = { 'Integrate Spotify into your workflow. Search for tracks, albums, artists, and playlists. Manage playlists, access your library, control playback, browse podcasts and audiobooks.', docsLink: 'https://docs.sim.ai/tools/spotify', category: 'tools', + integrationType: IntegrationType.Media, + tags: ['content-management', 'automation'], hideFromToolbar: true, bgColor: '#000000', icon: SpotifyIcon, diff --git a/apps/sim/blocks/blocks/sqs.ts b/apps/sim/blocks/blocks/sqs.ts index 72f6ccacdc..cc65c3f038 100644 --- a/apps/sim/blocks/blocks/sqs.ts +++ b/apps/sim/blocks/blocks/sqs.ts @@ -1,5 +1,6 @@ import { SQSIcon } from '@/components/icons' import type { BlockConfig } from '@/blocks/types' +import { IntegrationType } from '@/blocks/types' import type { SqsResponse } from '@/tools/sqs/types' export const SQSBlock: BlockConfig = { @@ -9,6 +10,8 @@ export const SQSBlock: BlockConfig = { longDescription: 'Integrate Amazon SQS into the workflow. Can send messages to SQS queues.', docsLink: 'https://docs.sim.ai/tools/sqs', category: 'tools', + integrationType: IntegrationType.DeveloperTools, + tags: ['cloud', 'messaging', 'automation'], bgColor: 'linear-gradient(45deg, #2E27AD 0%, #527FFF 100%)', icon: SQSIcon, subBlocks: [ diff --git a/apps/sim/blocks/blocks/ssh.ts b/apps/sim/blocks/blocks/ssh.ts index eb7e975d21..6e80f4a88c 100644 --- a/apps/sim/blocks/blocks/ssh.ts +++ b/apps/sim/blocks/blocks/ssh.ts @@ -1,6 +1,6 @@ import { SshIcon } from '@/components/icons' import type { BlockConfig } from '@/blocks/types' -import { AuthMode } from '@/blocks/types' +import { AuthMode, IntegrationType } from '@/blocks/types' import type { SSHResponse } from '@/tools/ssh/types' export const SSHBlock: BlockConfig = { @@ -12,6 +12,8 @@ export const SSHBlock: BlockConfig = { 'Execute commands, transfer files, and manage remote servers via SSH. Supports password and private key authentication for secure server access.', docsLink: 'https://docs.sim.ai/tools/ssh', category: 'tools', + integrationType: IntegrationType.DeveloperTools, + tags: ['cloud', 'automation'], bgColor: '#000000', icon: SshIcon, subBlocks: [ diff --git a/apps/sim/blocks/blocks/stagehand.ts b/apps/sim/blocks/blocks/stagehand.ts index c576453360..118a210485 100644 --- a/apps/sim/blocks/blocks/stagehand.ts +++ b/apps/sim/blocks/blocks/stagehand.ts @@ -1,5 +1,5 @@ import { StagehandIcon } from '@/components/icons' -import { AuthMode, type BlockConfig } from '@/blocks/types' +import { AuthMode, type BlockConfig, IntegrationType } from '@/blocks/types' import type { ToolResponse } from '@/tools/types' export interface StagehandExtractResponse extends ToolResponse { @@ -35,6 +35,8 @@ export const StagehandBlock: BlockConfig = { 'Integrate Stagehand into the workflow. Can extract structured data from webpages or run an autonomous agent to perform tasks.', docsLink: 'https://docs.sim.ai/tools/stagehand', category: 'tools', + integrationType: IntegrationType.Automation, + tags: ['web-scraping', 'automation', 'agentic'], bgColor: '#FFC83C', icon: StagehandIcon, subBlocks: [ diff --git a/apps/sim/blocks/blocks/stripe.ts b/apps/sim/blocks/blocks/stripe.ts index 9377e56ef7..1ffd43ab49 100644 --- a/apps/sim/blocks/blocks/stripe.ts +++ b/apps/sim/blocks/blocks/stripe.ts @@ -1,6 +1,6 @@ import { StripeIcon } from '@/components/icons' import type { BlockConfig } from '@/blocks/types' -import { AuthMode } from '@/blocks/types' +import { AuthMode, IntegrationType } from '@/blocks/types' import type { StripeResponse } from '@/tools/stripe/types' import { getTrigger } from '@/triggers' @@ -13,6 +13,8 @@ export const StripeBlock: BlockConfig = { 'Integrates Stripe into the workflow. Manage payment intents, customers, subscriptions, invoices, charges, products, prices, and events. Can be used in trigger mode to trigger a workflow when a Stripe event occurs.', docsLink: 'https://docs.sim.ai/tools/stripe', category: 'tools', + integrationType: IntegrationType.Ecommerce, + tags: ['payments', 'subscriptions', 'webhooks'], bgColor: '#635BFF', icon: StripeIcon, subBlocks: [ diff --git a/apps/sim/blocks/blocks/stt.ts b/apps/sim/blocks/blocks/stt.ts index dd22afb291..1f6a3820fc 100644 --- a/apps/sim/blocks/blocks/stt.ts +++ b/apps/sim/blocks/blocks/stt.ts @@ -1,5 +1,5 @@ import { STTIcon } from '@/components/icons' -import { AuthMode, type BlockConfig } from '@/blocks/types' +import { AuthMode, type BlockConfig, IntegrationType } from '@/blocks/types' import { createVersionedToolSelector, normalizeFileInput } from '@/blocks/utils' import type { SttBlockResponse } from '@/tools/stt/types' @@ -13,6 +13,8 @@ export const SttBlock: BlockConfig = { 'Transcribe audio and video files to text using leading AI providers. Supports multiple languages, timestamps, and speaker diarization.', docsLink: 'https://docs.sim.ai/tools/stt', category: 'tools', + integrationType: IntegrationType.AI, + tags: ['speech-to-text', 'document-processing'], bgColor: '#181C1E', icon: STTIcon, diff --git a/apps/sim/blocks/blocks/supabase.ts b/apps/sim/blocks/blocks/supabase.ts index 84ec3c0e3b..2ef6b973ad 100644 --- a/apps/sim/blocks/blocks/supabase.ts +++ b/apps/sim/blocks/blocks/supabase.ts @@ -1,6 +1,6 @@ import { createLogger } from '@sim/logger' import { SupabaseIcon } from '@/components/icons' -import { AuthMode, type BlockConfig } from '@/blocks/types' +import { AuthMode, type BlockConfig, IntegrationType } from '@/blocks/types' import { normalizeFileInput } from '@/blocks/utils' import type { SupabaseResponse } from '@/tools/supabase/types' @@ -15,6 +15,8 @@ export const SupabaseBlock: BlockConfig = { 'Integrate Supabase into the workflow. Supports database operations (query, insert, update, delete, upsert), full-text search, RPC functions, row counting, vector search, and complete storage management (upload, download, list, move, copy, delete files and buckets).', docsLink: 'https://docs.sim.ai/tools/supabase', category: 'tools', + integrationType: IntegrationType.Databases, + tags: ['cloud', 'data-warehouse', 'vector-search'], bgColor: '#1C1C1C', icon: SupabaseIcon, subBlocks: [ diff --git a/apps/sim/blocks/blocks/tavily.ts b/apps/sim/blocks/blocks/tavily.ts index 11731b6ab1..549a67c3db 100644 --- a/apps/sim/blocks/blocks/tavily.ts +++ b/apps/sim/blocks/blocks/tavily.ts @@ -1,6 +1,6 @@ import { TavilyIcon } from '@/components/icons' import type { BlockConfig } from '@/blocks/types' -import { AuthMode } from '@/blocks/types' +import { AuthMode, IntegrationType } from '@/blocks/types' import type { TavilyResponse } from '@/tools/tavily/types' export const TavilyBlock: BlockConfig = { @@ -11,6 +11,8 @@ export const TavilyBlock: BlockConfig = { longDescription: 'Integrate Tavily into the workflow. Can search the web and extract content from specific URLs. Requires API Key.', category: 'tools', + integrationType: IntegrationType.Search, + tags: ['web-scraping', 'enrichment'], docsLink: 'https://docs.sim.ai/tools/tavily', bgColor: '#0066FF', icon: TavilyIcon, diff --git a/apps/sim/blocks/blocks/telegram.ts b/apps/sim/blocks/blocks/telegram.ts index ce4076d384..8e720f2c68 100644 --- a/apps/sim/blocks/blocks/telegram.ts +++ b/apps/sim/blocks/blocks/telegram.ts @@ -1,6 +1,6 @@ import { TelegramIcon } from '@/components/icons' import type { BlockConfig } from '@/blocks/types' -import { AuthMode } from '@/blocks/types' +import { AuthMode, IntegrationType } from '@/blocks/types' import { normalizeFileInput } from '@/blocks/utils' import type { TelegramResponse } from '@/tools/telegram/types' import { getTrigger } from '@/triggers' @@ -14,6 +14,8 @@ export const TelegramBlock: BlockConfig = { 'Integrate Telegram into the workflow. Can send and delete messages. Can be used in trigger mode to trigger a workflow when a message is sent to a chat.', docsLink: 'https://docs.sim.ai/tools/telegram', category: 'tools', + integrationType: IntegrationType.Communication, + tags: ['messaging', 'webhooks', 'automation'], bgColor: '#E0E0E0', icon: TelegramIcon, triggerAllowed: true, diff --git a/apps/sim/blocks/blocks/textract.ts b/apps/sim/blocks/blocks/textract.ts index a2eea30504..e21d646ee9 100644 --- a/apps/sim/blocks/blocks/textract.ts +++ b/apps/sim/blocks/blocks/textract.ts @@ -1,5 +1,5 @@ import { TextractIcon } from '@/components/icons' -import { AuthMode, type BlockConfig, type SubBlockType } from '@/blocks/types' +import { AuthMode, type BlockConfig, IntegrationType, type SubBlockType } from '@/blocks/types' import { createVersionedToolSelector, normalizeFileInput } from '@/blocks/utils' import type { TextractParserOutput } from '@/tools/textract/types' @@ -12,6 +12,8 @@ export const TextractBlock: BlockConfig = { longDescription: `Integrate AWS Textract into your workflow to extract text, tables, forms, and key-value pairs from documents. Single-page mode supports JPEG, PNG, and single-page PDF. Multi-page mode supports multi-page PDF and TIFF.`, docsLink: 'https://docs.sim.ai/tools/textract', category: 'tools', + integrationType: IntegrationType.AI, + tags: ['document-processing', 'ocr', 'cloud'], bgColor: 'linear-gradient(135deg, #055F4E 0%, #56C0A7 100%)', icon: TextractIcon, subBlocks: [ diff --git a/apps/sim/blocks/blocks/tinybird.ts b/apps/sim/blocks/blocks/tinybird.ts index 436543de76..e1b1e08d4d 100644 --- a/apps/sim/blocks/blocks/tinybird.ts +++ b/apps/sim/blocks/blocks/tinybird.ts @@ -1,6 +1,6 @@ import { TinybirdIcon } from '@/components/icons' import type { BlockConfig } from '@/blocks/types' -import { AuthMode } from '@/blocks/types' +import { AuthMode, IntegrationType } from '@/blocks/types' import type { TinybirdResponse } from '@/tools/tinybird/types' export const TinybirdBlock: BlockConfig = { @@ -12,6 +12,8 @@ export const TinybirdBlock: BlockConfig = { 'Interact with Tinybird using the Events API to stream JSON or NDJSON events, or use the Query API to execute SQL queries against Pipes and Data Sources.', docsLink: 'https://www.tinybird.co/docs/api-reference', category: 'tools', + integrationType: IntegrationType.Analytics, + tags: ['data-warehouse', 'data-analytics'], bgColor: '#2EF598', icon: TinybirdIcon, subBlocks: [ diff --git a/apps/sim/blocks/blocks/translate.ts b/apps/sim/blocks/blocks/translate.ts index a47a2e06ef..b29079be19 100644 --- a/apps/sim/blocks/blocks/translate.ts +++ b/apps/sim/blocks/blocks/translate.ts @@ -1,5 +1,5 @@ import { TranslateIcon } from '@/components/icons' -import { AuthMode, type BlockConfig } from '@/blocks/types' +import { AuthMode, type BlockConfig, IntegrationType } from '@/blocks/types' import { getModelOptions, getProviderCredentialSubBlocks, @@ -17,6 +17,8 @@ export const TranslateBlock: BlockConfig = { longDescription: 'Integrate Translate into the workflow. Can translate text to any language.', docsLink: 'https://docs.sim.ai/tools/translate', category: 'tools', + integrationType: IntegrationType.AI, + tags: ['document-processing', 'llm'], bgColor: '#FF4B4B', icon: TranslateIcon, subBlocks: [ diff --git a/apps/sim/blocks/blocks/trello.ts b/apps/sim/blocks/blocks/trello.ts index 0e4180d557..c0d9511bfc 100644 --- a/apps/sim/blocks/blocks/trello.ts +++ b/apps/sim/blocks/blocks/trello.ts @@ -1,7 +1,7 @@ import { TrelloIcon } from '@/components/icons' import { getScopesForService } from '@/lib/oauth/utils' import type { BlockConfig } from '@/blocks/types' -import { AuthMode } from '@/blocks/types' +import { AuthMode, IntegrationType } from '@/blocks/types' import type { ToolResponse } from '@/tools/types' /** @@ -21,6 +21,8 @@ export const TrelloBlock: BlockConfig = { 'Integrate with Trello to manage boards and cards. List boards, list cards, create cards, update cards, get actions, and add comments.', docsLink: 'https://docs.sim.ai/tools/trello', category: 'tools', + integrationType: IntegrationType.Productivity, + tags: ['project-management', 'ticketing'], bgColor: '#0052CC', icon: TrelloIcon, subBlocks: [ diff --git a/apps/sim/blocks/blocks/tts.ts b/apps/sim/blocks/blocks/tts.ts index eebc8acd3e..c6fea970e7 100644 --- a/apps/sim/blocks/blocks/tts.ts +++ b/apps/sim/blocks/blocks/tts.ts @@ -1,5 +1,5 @@ import { TTSIcon } from '@/components/icons' -import { AuthMode, type BlockConfig } from '@/blocks/types' +import { AuthMode, type BlockConfig, IntegrationType } from '@/blocks/types' import type { TtsBlockResponse } from '@/tools/tts/types' export const TtsBlock: BlockConfig = { @@ -11,6 +11,8 @@ export const TtsBlock: BlockConfig = { 'Generate natural-sounding speech from text using state-of-the-art AI voices from OpenAI, Deepgram, ElevenLabs, Cartesia, Google Cloud, Azure, and PlayHT. Supports multiple voices, languages, and audio formats.', docsLink: 'https://docs.sim.ai/tools/tts', category: 'tools', + integrationType: IntegrationType.AI, + tags: ['text-to-speech', 'llm'], bgColor: '#181C1E', icon: TTSIcon, diff --git a/apps/sim/blocks/blocks/twilio.ts b/apps/sim/blocks/blocks/twilio.ts index 8f5db2d9b0..2b62055997 100644 --- a/apps/sim/blocks/blocks/twilio.ts +++ b/apps/sim/blocks/blocks/twilio.ts @@ -1,6 +1,6 @@ import { TwilioIcon } from '@/components/icons' import type { BlockConfig } from '@/blocks/types' -import { AuthMode } from '@/blocks/types' +import { AuthMode, IntegrationType } from '@/blocks/types' import type { TwilioSMSBlockOutput } from '@/tools/twilio/types' export const TwilioSMSBlock: BlockConfig = { @@ -10,6 +10,8 @@ export const TwilioSMSBlock: BlockConfig = { authMode: AuthMode.ApiKey, longDescription: 'Integrate Twilio into the workflow. Can send SMS messages.', category: 'tools', + integrationType: IntegrationType.Communication, + tags: ['messaging', 'automation'], docsLink: 'https://docs.sim.ai/tools/twilio', bgColor: '#F22F46', // Twilio brand color icon: TwilioIcon, diff --git a/apps/sim/blocks/blocks/twilio_voice.ts b/apps/sim/blocks/blocks/twilio_voice.ts index b9692c1089..3a4c4b85bf 100644 --- a/apps/sim/blocks/blocks/twilio_voice.ts +++ b/apps/sim/blocks/blocks/twilio_voice.ts @@ -1,6 +1,6 @@ import { TwilioIcon } from '@/components/icons' import type { BlockConfig } from '@/blocks/types' -import { AuthMode } from '@/blocks/types' +import { AuthMode, IntegrationType } from '@/blocks/types' import type { ToolResponse } from '@/tools/types' import { getTrigger } from '@/triggers' @@ -12,6 +12,8 @@ export const TwilioVoiceBlock: BlockConfig = { longDescription: 'Integrate Twilio Voice into the workflow. Make outbound calls and retrieve call recordings.', category: 'tools', + integrationType: IntegrationType.Communication, + tags: ['messaging', 'text-to-speech'], docsLink: 'https://docs.sim.ai/tools/twilio_voice', bgColor: '#F22F46', // Twilio brand color icon: TwilioIcon, diff --git a/apps/sim/blocks/blocks/typeform.ts b/apps/sim/blocks/blocks/typeform.ts index f0c0a58de6..cb707c349b 100644 --- a/apps/sim/blocks/blocks/typeform.ts +++ b/apps/sim/blocks/blocks/typeform.ts @@ -1,6 +1,6 @@ import { TypeformIcon } from '@/components/icons' import type { BlockConfig } from '@/blocks/types' -import { AuthMode } from '@/blocks/types' +import { AuthMode, IntegrationType } from '@/blocks/types' import type { TypeformResponse } from '@/tools/typeform/types' import { getTrigger } from '@/triggers' @@ -13,6 +13,8 @@ export const TypeformBlock: BlockConfig = { 'Integrate Typeform into the workflow. Can retrieve responses, download files, and get form insights. Can be used in trigger mode to trigger a workflow when a form is submitted. Requires API Key.', docsLink: 'https://docs.sim.ai/tools/typeform', category: 'tools', + integrationType: IntegrationType.Documents, + tags: ['forms', 'data-analytics'], bgColor: '#262627', // Typeform brand color icon: TypeformIcon, subBlocks: [ diff --git a/apps/sim/blocks/blocks/upstash.ts b/apps/sim/blocks/blocks/upstash.ts index e5afc6e7ba..040377d962 100644 --- a/apps/sim/blocks/blocks/upstash.ts +++ b/apps/sim/blocks/blocks/upstash.ts @@ -1,6 +1,6 @@ import { UpstashIcon } from '@/components/icons' import type { BlockConfig } from '@/blocks/types' -import { AuthMode } from '@/blocks/types' +import { AuthMode, IntegrationType } from '@/blocks/types' import type { UpstashRedisCommandResponse, UpstashRedisDeleteResponse, @@ -46,6 +46,8 @@ export const UpstashBlock: BlockConfig = { 'Connect to Upstash Redis to perform key-value, hash, list, and utility operations via the REST API.', docsLink: 'https://docs.sim.ai/tools/upstash', category: 'tools', + integrationType: IntegrationType.Databases, + tags: ['cloud', 'data-warehouse'], bgColor: '#181C1E', authMode: AuthMode.ApiKey, icon: UpstashIcon, diff --git a/apps/sim/blocks/blocks/vercel.ts b/apps/sim/blocks/blocks/vercel.ts index c49e37d017..0a89cc24c3 100644 --- a/apps/sim/blocks/blocks/vercel.ts +++ b/apps/sim/blocks/blocks/vercel.ts @@ -1,6 +1,6 @@ import { VercelIcon } from '@/components/icons' import type { BlockConfig } from '@/blocks/types' -import { AuthMode } from '@/blocks/types' +import { AuthMode, IntegrationType } from '@/blocks/types' export const VercelBlock: BlockConfig = { type: 'vercel', @@ -10,6 +10,8 @@ export const VercelBlock: BlockConfig = { 'Integrate with Vercel to manage deployments, projects, domains, DNS records, environment variables, aliases, edge configs, teams, and more.', docsLink: 'https://docs.sim.ai/tools/vercel', category: 'tools', + integrationType: IntegrationType.DeveloperTools, + tags: ['cloud', 'ci-cd'], bgColor: '#171717', icon: VercelIcon, authMode: AuthMode.ApiKey, diff --git a/apps/sim/blocks/blocks/video_generator.ts b/apps/sim/blocks/blocks/video_generator.ts index 55c5a24720..cc7141f337 100644 --- a/apps/sim/blocks/blocks/video_generator.ts +++ b/apps/sim/blocks/blocks/video_generator.ts @@ -1,5 +1,5 @@ import { VideoIcon } from '@/components/icons' -import { AuthMode, type BlockConfig } from '@/blocks/types' +import { AuthMode, type BlockConfig, IntegrationType } from '@/blocks/types' import { normalizeFileInput } from '@/blocks/utils' import type { VideoBlockResponse } from '@/tools/video/types' @@ -13,6 +13,8 @@ export const VideoGeneratorBlock: BlockConfig = { 'Generate high-quality videos from text prompts using leading AI providers. Supports multiple models, aspect ratios, resolutions, and provider-specific features like world consistency, camera controls, and audio generation.', docsLink: 'https://docs.sim.ai/tools/video-generator', category: 'tools', + integrationType: IntegrationType.AI, + tags: ['video-generation', 'llm'], bgColor: '#181C1E', icon: VideoIcon, diff --git a/apps/sim/blocks/blocks/vision.ts b/apps/sim/blocks/blocks/vision.ts index 6c35fd613a..46c910ad8f 100644 --- a/apps/sim/blocks/blocks/vision.ts +++ b/apps/sim/blocks/blocks/vision.ts @@ -1,6 +1,6 @@ import { EyeIcon } from '@/components/icons' import type { BlockConfig } from '@/blocks/types' -import { AuthMode } from '@/blocks/types' +import { AuthMode, IntegrationType } from '@/blocks/types' import { createVersionedToolSelector, normalizeFileInput } from '@/blocks/utils' import type { VisionResponse } from '@/tools/vision/types' @@ -30,6 +30,8 @@ export const VisionBlock: BlockConfig = { longDescription: 'Integrate Vision into the workflow. Can analyze images with vision models.', docsLink: 'https://docs.sim.ai/tools/vision', category: 'tools', + integrationType: IntegrationType.AI, + tags: ['llm', 'document-processing', 'ocr'], bgColor: '#4D5FFF', icon: EyeIcon, subBlocks: [ diff --git a/apps/sim/blocks/blocks/wealthbox.ts b/apps/sim/blocks/blocks/wealthbox.ts index 0a70229ead..abdb86bca2 100644 --- a/apps/sim/blocks/blocks/wealthbox.ts +++ b/apps/sim/blocks/blocks/wealthbox.ts @@ -1,7 +1,7 @@ import { WealthboxIcon } from '@/components/icons' import { getScopesForService } from '@/lib/oauth/utils' import type { BlockConfig } from '@/blocks/types' -import { AuthMode } from '@/blocks/types' +import { AuthMode, IntegrationType } from '@/blocks/types' import type { WealthboxResponse } from '@/tools/wealthbox/types' export const WealthboxBlock: BlockConfig = { @@ -13,6 +13,8 @@ export const WealthboxBlock: BlockConfig = { 'Integrate Wealthbox into the workflow. Can read and write notes, read and write contacts, and read and write tasks.', docsLink: 'https://docs.sim.ai/tools/wealthbox', category: 'tools', + integrationType: IntegrationType.CRM, + tags: ['sales-engagement', 'customer-support'], bgColor: '#E0E0E0', icon: WealthboxIcon, subBlocks: [ diff --git a/apps/sim/blocks/blocks/webflow.ts b/apps/sim/blocks/blocks/webflow.ts index 6c2afb6577..db6e7978cb 100644 --- a/apps/sim/blocks/blocks/webflow.ts +++ b/apps/sim/blocks/blocks/webflow.ts @@ -1,7 +1,7 @@ import { WebflowIcon } from '@/components/icons' import { getScopesForService } from '@/lib/oauth/utils' import type { BlockConfig } from '@/blocks/types' -import { AuthMode } from '@/blocks/types' +import { AuthMode, IntegrationType } from '@/blocks/types' import type { WebflowResponse } from '@/tools/webflow/types' import { getTrigger } from '@/triggers' @@ -14,6 +14,8 @@ export const WebflowBlock: BlockConfig = { 'Integrates Webflow CMS into the workflow. Can create, get, list, update, or delete items in Webflow CMS collections. Manage your Webflow content programmatically. Can be used in trigger mode to trigger workflows when collection items change or forms are submitted.', docsLink: 'https://docs.sim.ai/tools/webflow', category: 'tools', + integrationType: IntegrationType.Design, + tags: ['content-management', 'seo'], triggerAllowed: true, bgColor: '#E0E0E0', icon: WebflowIcon, diff --git a/apps/sim/blocks/blocks/whatsapp.ts b/apps/sim/blocks/blocks/whatsapp.ts index 2a709f3594..c42ea29d3d 100644 --- a/apps/sim/blocks/blocks/whatsapp.ts +++ b/apps/sim/blocks/blocks/whatsapp.ts @@ -1,6 +1,6 @@ import { WhatsAppIcon } from '@/components/icons' import type { BlockConfig } from '@/blocks/types' -import { AuthMode } from '@/blocks/types' +import { AuthMode, IntegrationType } from '@/blocks/types' import type { WhatsAppResponse } from '@/tools/whatsapp/types' import { getTrigger } from '@/triggers' @@ -12,6 +12,8 @@ export const WhatsAppBlock: BlockConfig = { longDescription: 'Integrate WhatsApp into the workflow. Can send messages.', docsLink: 'https://docs.sim.ai/tools/whatsapp', category: 'tools', + integrationType: IntegrationType.Communication, + tags: ['messaging', 'automation'], bgColor: '#25D366', icon: WhatsAppIcon, triggerAllowed: true, diff --git a/apps/sim/blocks/blocks/wikipedia.ts b/apps/sim/blocks/blocks/wikipedia.ts index 9fbcea8143..2965d4083a 100644 --- a/apps/sim/blocks/blocks/wikipedia.ts +++ b/apps/sim/blocks/blocks/wikipedia.ts @@ -1,5 +1,6 @@ import { WikipediaIcon } from '@/components/icons' import type { BlockConfig } from '@/blocks/types' +import { IntegrationType } from '@/blocks/types' import type { WikipediaResponse } from '@/tools/wikipedia/types' export const WikipediaBlock: BlockConfig = { @@ -10,6 +11,8 @@ export const WikipediaBlock: BlockConfig = { 'Integrate Wikipedia into the workflow. Can get page summary, search pages, get page content, and get random page.', docsLink: 'https://docs.sim.ai/tools/wikipedia', category: 'tools', + integrationType: IntegrationType.Search, + tags: ['knowledge-base', 'web-scraping'], bgColor: '#000000', icon: WikipediaIcon, subBlocks: [ diff --git a/apps/sim/blocks/blocks/wordpress.ts b/apps/sim/blocks/blocks/wordpress.ts index 305f0be30c..58ea0629dc 100644 --- a/apps/sim/blocks/blocks/wordpress.ts +++ b/apps/sim/blocks/blocks/wordpress.ts @@ -1,7 +1,7 @@ import { WordpressIcon } from '@/components/icons' import { getScopesForService } from '@/lib/oauth/utils' import type { BlockConfig } from '@/blocks/types' -import { AuthMode } from '@/blocks/types' +import { AuthMode, IntegrationType } from '@/blocks/types' import { normalizeFileInput } from '@/blocks/utils' import type { WordPressResponse } from '@/tools/wordpress/types' @@ -14,6 +14,8 @@ export const WordPressBlock: BlockConfig = { 'Integrate with WordPress to create, update, and manage posts, pages, media, comments, categories, tags, and users. Supports WordPress.com sites via OAuth and self-hosted WordPress sites using Application Passwords authentication.', docsLink: 'https://docs.sim.ai/tools/wordpress', category: 'tools', + integrationType: IntegrationType.Design, + tags: ['content-management', 'seo'], bgColor: '#21759B', icon: WordpressIcon, subBlocks: [ diff --git a/apps/sim/blocks/blocks/workday.ts b/apps/sim/blocks/blocks/workday.ts index b55e4e7fc0..76d54900af 100644 --- a/apps/sim/blocks/blocks/workday.ts +++ b/apps/sim/blocks/blocks/workday.ts @@ -1,5 +1,6 @@ import { WorkdayIcon } from '@/components/icons' import type { BlockConfig } from '@/blocks/types' +import { IntegrationType } from '@/blocks/types' export const WorkdayBlock: BlockConfig = { type: 'workday', @@ -9,6 +10,8 @@ export const WorkdayBlock: BlockConfig = { 'Integrate Workday HRIS into your workflow. Create pre-hires, hire employees, manage worker profiles, assign onboarding plans, handle job changes, retrieve compensation data, and process terminations.', docsLink: 'https://docs.sim.ai/tools/workday', category: 'tools', + integrationType: IntegrationType.HR, + tags: ['hiring', 'project-management'], bgColor: '#F5F0EB', icon: WorkdayIcon, subBlocks: [ diff --git a/apps/sim/blocks/blocks/x.ts b/apps/sim/blocks/blocks/x.ts index e1d93077ec..d68e16249e 100644 --- a/apps/sim/blocks/blocks/x.ts +++ b/apps/sim/blocks/blocks/x.ts @@ -1,7 +1,7 @@ import { xIcon } from '@/components/icons' import { getScopesForService } from '@/lib/oauth/utils' import type { BlockConfig } from '@/blocks/types' -import { AuthMode } from '@/blocks/types' +import { AuthMode, IntegrationType } from '@/blocks/types' export const XBlock: BlockConfig = { type: 'x', @@ -12,6 +12,8 @@ export const XBlock: BlockConfig = { 'Integrate X into the workflow. Search tweets, manage bookmarks, follow/block/mute users, like and retweet, view trends, and more.', docsLink: 'https://docs.sim.ai/tools/x', category: 'tools', + integrationType: IntegrationType.Social, + tags: ['marketing', 'messaging'], bgColor: '#000000', icon: xIcon, subBlocks: [ diff --git a/apps/sim/blocks/blocks/youtube.ts b/apps/sim/blocks/blocks/youtube.ts index 243c80ef40..856f4f5c22 100644 --- a/apps/sim/blocks/blocks/youtube.ts +++ b/apps/sim/blocks/blocks/youtube.ts @@ -1,6 +1,6 @@ import { YouTubeIcon } from '@/components/icons' import type { BlockConfig } from '@/blocks/types' -import { AuthMode } from '@/blocks/types' +import { AuthMode, IntegrationType } from '@/blocks/types' import type { YouTubeResponse } from '@/tools/youtube/types' export const YouTubeBlock: BlockConfig = { @@ -12,6 +12,8 @@ export const YouTubeBlock: BlockConfig = { 'Integrate YouTube into the workflow. Can search for videos, get trending videos, get video details, get video categories, get channel information, get all videos from a channel, get channel playlists, get playlist items, and get video comments.', docsLink: 'https://docs.sim.ai/tools/youtube', category: 'tools', + integrationType: IntegrationType.Media, + tags: ['google-workspace', 'marketing', 'content-management'], bgColor: '#FF0000', icon: YouTubeIcon, subBlocks: [ diff --git a/apps/sim/blocks/blocks/zendesk.ts b/apps/sim/blocks/blocks/zendesk.ts index bdd504e806..1a994a6d4f 100644 --- a/apps/sim/blocks/blocks/zendesk.ts +++ b/apps/sim/blocks/blocks/zendesk.ts @@ -1,6 +1,6 @@ import { ZendeskIcon } from '@/components/icons' import type { BlockConfig } from '@/blocks/types' -import { AuthMode } from '@/blocks/types' +import { AuthMode, IntegrationType } from '@/blocks/types' export const ZendeskBlock: BlockConfig = { type: 'zendesk', @@ -11,6 +11,8 @@ export const ZendeskBlock: BlockConfig = { docsLink: 'https://docs.sim.ai/tools/zendesk', authMode: AuthMode.ApiKey, category: 'tools', + integrationType: IntegrationType.CustomerSupport, + tags: ['customer-support', 'ticketing'], bgColor: '#E0E0E0', icon: ZendeskIcon, subBlocks: [ diff --git a/apps/sim/blocks/blocks/zep.ts b/apps/sim/blocks/blocks/zep.ts index bd3f43f66a..a944fe5956 100644 --- a/apps/sim/blocks/blocks/zep.ts +++ b/apps/sim/blocks/blocks/zep.ts @@ -1,5 +1,5 @@ import { ZepIcon } from '@/components/icons' -import { AuthMode, type BlockConfig } from '@/blocks/types' +import { AuthMode, type BlockConfig, IntegrationType } from '@/blocks/types' import type { ZepResponse } from '@/tools/zep/types' export const ZepBlock: BlockConfig = { @@ -12,6 +12,8 @@ export const ZepBlock: BlockConfig = { bgColor: '#E8E8E8', icon: ZepIcon, category: 'tools', + integrationType: IntegrationType.AI, + tags: ['llm', 'knowledge-base', 'agentic'], docsLink: 'https://docs.sim.ai/tools/zep', subBlocks: [ { diff --git a/apps/sim/blocks/blocks/zoom.ts b/apps/sim/blocks/blocks/zoom.ts index 4d9ecbd21d..5c77ac856e 100644 --- a/apps/sim/blocks/blocks/zoom.ts +++ b/apps/sim/blocks/blocks/zoom.ts @@ -1,7 +1,7 @@ import { ZoomIcon } from '@/components/icons' import { getScopesForService } from '@/lib/oauth/utils' import type { BlockConfig } from '@/blocks/types' -import { AuthMode } from '@/blocks/types' +import { AuthMode, IntegrationType } from '@/blocks/types' import type { ZoomResponse } from '@/tools/zoom/types' export const ZoomBlock: BlockConfig = { @@ -13,6 +13,8 @@ export const ZoomBlock: BlockConfig = { 'Integrate Zoom into workflows. Create, list, update, and delete Zoom meetings. Get meeting details, invitations, recordings, and participants. Manage cloud recordings programmatically.', docsLink: 'https://docs.sim.ai/tools/zoom', category: 'tools', + integrationType: IntegrationType.Communication, + tags: ['meeting', 'calendar', 'scheduling'], bgColor: '#2D8CFF', icon: ZoomIcon, subBlocks: [ diff --git a/apps/sim/blocks/types.ts b/apps/sim/blocks/types.ts index 1ff68892ee..0e02b26a17 100644 --- a/apps/sim/blocks/types.ts +++ b/apps/sim/blocks/types.ts @@ -16,6 +16,80 @@ export type PrimitiveValueType = export type BlockCategory = 'blocks' | 'tools' | 'triggers' +export enum IntegrationType { + AI = 'ai', + Analytics = 'analytics', + Automation = 'automation', + Communication = 'communication', + CRM = 'crm', + CustomerSupport = 'customer-support', + Databases = 'databases', + Design = 'design', + DeveloperTools = 'developer-tools', + Documents = 'documents', + Ecommerce = 'ecommerce', + Email = 'email', + FileStorage = 'file-storage', + HR = 'hr', + Media = 'media', + Other = 'other', + Productivity = 'productivity', + SalesIntelligence = 'sales-intelligence', + Search = 'search', + Security = 'security', + Social = 'social', +} + +export type IntegrationTag = + | 'marketing' + | 'automation' + | 'webhooks' + | 'vector-search' + | 'meeting' + | 'calendar' + | 'scheduling' + | 'incident-management' + | 'monitoring' + | 'error-tracking' + | 'prediction-markets' + | 'document-processing' + | 'ocr' + | 'text-to-speech' + | 'speech-to-text' + | 'image-generation' + | 'video-generation' + | 'cloud' + | 'google-workspace' + | 'microsoft-365' + | 'data-warehouse' + | 'data-analytics' + | 'customer-support' + | 'project-management' + | 'ticketing' + | 'payments' + | 'subscriptions' + | 'enrichment' + | 'web-scraping' + | 'llm' + | 'messaging' + | 'version-control' + | 'ci-cd' + | 'note-taking' + | 'spreadsheet' + | 'seo' + | 'email-marketing' + | 'e-signatures' + | 'identity' + | 'secrets-management' + | 'hiring' + | 'sales-engagement' + | 'agentic' + | 'knowledge-base' + | 'content-management' + | 'forms' + | 'link-management' + | 'events' + // Authentication modes for sub-blocks and summaries export enum AuthMode { OAuth = 'oauth', @@ -351,6 +425,8 @@ export interface BlockConfig { name: string description: string category: BlockCategory + integrationType?: IntegrationType + tags?: IntegrationTag[] longDescription?: string bestPractices?: string docsLink?: string diff --git a/bun.lock b/bun.lock index cd5dc2f1e0..c55505f0ec 100644 --- a/bun.lock +++ b/bun.lock @@ -10,7 +10,7 @@ "glob": "13.0.0", "husky": "9.1.7", "lint-staged": "16.0.0", - "turbo": "2.8.17", + "turbo": "2.8.20", }, }, "apps/docs": { @@ -1461,6 +1461,18 @@ "@trigger.dev/sdk": ["@trigger.dev/sdk@4.1.2", "", { "dependencies": { "@opentelemetry/api": "1.9.0", "@opentelemetry/semantic-conventions": "1.36.0", "@trigger.dev/core": "4.1.2", "chalk": "^5.2.0", "cronstrue": "^2.21.0", "debug": "^4.3.4", "evt": "^2.4.13", "slug": "^6.0.0", "ulid": "^2.3.0", "uncrypto": "^0.1.3", "uuid": "^9.0.0", "ws": "^8.11.0" }, "peerDependencies": { "ai": "^4.2.0 || ^5.0.0", "zod": "^3.0.0 || ^4.0.0" }, "optionalPeers": ["ai"] }, "sha512-BQLcskVAlUvOM4jN91PNpXtcmgjsHOL8IFes3aEt/fnBfnDRzRNIUlO+H4KkBy5/66pAOgODLmevMSCKd0keYw=="], + "@turbo/darwin-64": ["@turbo/darwin-64@2.8.20", "", { "os": "darwin", "cpu": "x64" }, "sha512-FQ9EX1xMU5nbwjxXxM3yU88AQQ6Sqc6S44exPRroMcx9XZHqqppl5ymJF0Ig/z3nvQNwDmz1Gsnvxubo+nXWjQ=="], + + "@turbo/darwin-arm64": ["@turbo/darwin-arm64@2.8.20", "", { "os": "darwin", "cpu": "arm64" }, "sha512-Gpyh9ATFGThD6/s9L95YWY54cizg/VRWl2B67h0yofG8BpHf67DFAh9nuJVKG7bY0+SBJDAo5cMur+wOl9YOYw=="], + + "@turbo/linux-64": ["@turbo/linux-64@2.8.20", "", { "os": "linux", "cpu": "x64" }, "sha512-p2QxWUYyYUgUFG0b0kR+pPi8t7c9uaVlRtjTTI1AbCvVqkpjUfCcReBn6DgG/Hu8xrWdKLuyQFaLYFzQskZbcA=="], + + "@turbo/linux-arm64": ["@turbo/linux-arm64@2.8.20", "", { "os": "linux", "cpu": "arm64" }, "sha512-Gn5yjlZGLRZWarLWqdQzv0wMqyBNIdq1QLi48F1oY5Lo9kiohuf7BPQWtWxeNVS2NgJ1+nb/DzK1JduYC4AWOA=="], + + "@turbo/windows-64": ["@turbo/windows-64@2.8.20", "", { "os": "win32", "cpu": "x64" }, "sha512-vyaDpYk/8T6Qz5V/X+ihKvKFEZFUoC0oxYpC1sZanK6gaESJlmV3cMRT3Qhcg4D2VxvtC2Jjs9IRkrZGL+exLw=="], + + "@turbo/windows-arm64": ["@turbo/windows-arm64@2.8.20", "", { "os": "win32", "cpu": "arm64" }, "sha512-voicVULvUV5yaGXo0Iue13BcHGYW3u0VgqSbfQwBaHbpj1zLjYV4KIe+7fYIo6DO8FVUJzxFps3ODCQG/Wy2Qw=="], + "@tweenjs/tween.js": ["@tweenjs/tween.js@23.1.3", "", {}, "sha512-vJmvvwFxYuGnF2axRtPYocag6Clbb5YS7kLL+SO/TeVFzHqDIWrNKYtcsPMibjDx9O+bu+psAy9NKfWklassUA=="], "@types/babel__core": ["@types/babel__core@7.20.5", "", { "dependencies": { "@babel/parser": "^7.20.7", "@babel/types": "^7.20.7", "@types/babel__generator": "*", "@types/babel__template": "*", "@types/babel__traverse": "*" } }, "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA=="], @@ -3539,19 +3551,7 @@ "tunnel-agent": ["tunnel-agent@0.6.0", "", { "dependencies": { "safe-buffer": "^5.0.1" } }, "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w=="], - "turbo": ["turbo@2.8.17", "", { "optionalDependencies": { "turbo-darwin-64": "2.8.17", "turbo-darwin-arm64": "2.8.17", "turbo-linux-64": "2.8.17", "turbo-linux-arm64": "2.8.17", "turbo-windows-64": "2.8.17", "turbo-windows-arm64": "2.8.17" }, "bin": { "turbo": "bin/turbo" } }, "sha512-YwPsNSqU2f/RXU/+Kcb7cPkPZARxom4+me7LKEdN5jsvy2tpfze3zDZ4EiGrJnvOm9Avu9rK0aaYsP7qZ3iz7A=="], - - "turbo-darwin-64": ["turbo-darwin-64@2.8.17", "", { "os": "darwin", "cpu": "x64" }, "sha512-ZFkv2hv7zHpAPEXBF6ouRRXshllOavYc+jjcrYyVHvxVTTwJWsBZwJ/gpPzmOKGvkSjsEyDO5V6aqqtZzwVF+Q=="], - - "turbo-darwin-arm64": ["turbo-darwin-arm64@2.8.17", "", { "os": "darwin", "cpu": "arm64" }, "sha512-5DXqhQUt24ycEryXDfMNKEkW5TBHs+QmU23a2qxXwwFDaJsWcPo2obEhBxxdEPOv7qmotjad+09RGeWCcJ9JDw=="], - - "turbo-linux-64": ["turbo-linux-64@2.8.17", "", { "os": "linux", "cpu": "x64" }, "sha512-KLUbz6w7F73D/Ihh51hVagrKR0/CTsPEbRkvXLXvoND014XJ4BCrQUqSxlQ4/hu+nqp1v5WlM85/h3ldeyujuA=="], - - "turbo-linux-arm64": ["turbo-linux-arm64@2.8.17", "", { "os": "linux", "cpu": "arm64" }, "sha512-pJK67XcNJH40lTAjFu7s/rUlobgVXyB3A3lDoq+/JccB3hf+SysmkpR4Itlc93s8LEaFAI4mamhFuTV17Z6wOg=="], - - "turbo-windows-64": ["turbo-windows-64@2.8.17", "", { "os": "win32", "cpu": "x64" }, "sha512-EijeQ6zszDMmGZLP2vT2RXTs/GVi9rM0zv2/G4rNu2SSRSGFapgZdxgW4b5zUYLVaSkzmkpWlGfPfj76SW9yUg=="], - - "turbo-windows-arm64": ["turbo-windows-arm64@2.8.17", "", { "os": "win32", "cpu": "arm64" }, "sha512-crpfeMPkfECd4V1PQ/hMoiyVcOy04+bWedu/if89S15WhOalHZ2BYUi6DOJhZrszY+mTT99OwpOsj4wNfb/GHQ=="], + "turbo": ["turbo@2.8.20", "", { "optionalDependencies": { "@turbo/darwin-64": "2.8.20", "@turbo/darwin-arm64": "2.8.20", "@turbo/linux-64": "2.8.20", "@turbo/linux-arm64": "2.8.20", "@turbo/windows-64": "2.8.20", "@turbo/windows-arm64": "2.8.20" }, "bin": { "turbo": "bin/turbo" } }, "sha512-Rb4qk5YT8RUwwdXtkLpkVhNEe/lor6+WV7S5tTlLpxSz6MjV5Qi8jGNn4gS6NAvrYGA/rNrE6YUQM85sCZUDbQ=="], "tweetnacl": ["tweetnacl@0.14.5", "", {}, "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA=="], diff --git a/package.json b/package.json index a3644a06b8..ac3b5cc61b 100644 --- a/package.json +++ b/package.json @@ -39,7 +39,7 @@ "glob": "13.0.0", "husky": "9.1.7", "lint-staged": "16.0.0", - "turbo": "2.8.17" + "turbo": "2.8.20" }, "lint-staged": { "*.{js,jsx,ts,tsx,json,css,scss}": [ diff --git a/scripts/generate-docs.ts b/scripts/generate-docs.ts index 2619b2c9a6..ddbad423d3 100755 --- a/scripts/generate-docs.ts +++ b/scripts/generate-docs.ts @@ -79,6 +79,8 @@ interface IntegrationEntry { triggerCount: number authType: 'oauth' | 'api-key' | 'none' category: string + integrationType?: string + tags?: string[] } /** @@ -592,6 +594,8 @@ async function writeIntegrationsJson(iconMapping: Record): Promi triggerCount: triggers.length, authType, category: config.category, + ...(config.integrationType ? { integrationType: config.integrationType } : {}), + ...(config.tags ? { tags: config.tags } : {}), }) } } @@ -759,9 +763,18 @@ function extractBlockConfigFromContent( const triggerIds = extractTriggersAvailable(blockContent) const docsLink = extractStringPropertyFromContent(blockContent, 'docsLink', true) || - (baseConfig as any)?.docsLink || + baseConfig?.docsLink || `https://docs.sim.ai/tools/${stripVersionSuffix(blockType)}` + const integrationType = + extractEnumPropertyFromContent(blockContent, 'integrationType') || + baseConfig?.integrationType || + null + const tags = + extractArrayPropertyFromContent(blockContent, 'tags') || + baseConfig?.tags || + null + return { type: blockType, name, @@ -777,6 +790,8 @@ function extractBlockConfigFromContent( operations: operations.length > 0 ? operations : (baseConfig as any)?.operations || [], triggerIds: triggerIds.length > 0 ? triggerIds : (baseConfig as any)?.triggerIds || [], docsLink, + ...(integrationType ? { integrationType } : {}), + ...(tags ? { tags } : {}), } } catch (error) { console.error(`Error extracting block configuration for ${blockName}:`, error) @@ -841,6 +856,54 @@ function extractStringPropertyFromContent( return null } +/** + * Extract an enum property value from block content. + * Matches patterns like `integrationType: IntegrationType.DeveloperTools` + * and returns the string value (e.g., 'developer-tools'). + */ +function extractEnumPropertyFromContent(content: string, propName: string): string | null { + const match = content.match(new RegExp(`${propName}\\s*:\\s*IntegrationType\\.(\\w+)`)) + if (!match) return null + const enumKey = match[1] + // Convert enum key to kebab-case value (e.g., DeveloperTools -> developer-tools) + const ENUM_MAP: Record = { + AI: 'ai', + Analytics: 'analytics', + Automation: 'automation', + Communication: 'communication', + CRM: 'crm', + CustomerSupport: 'customer-support', + Databases: 'databases', + Design: 'design', + DeveloperTools: 'developer-tools', + Documents: 'documents', + Ecommerce: 'ecommerce', + Email: 'email', + FileStorage: 'file-storage', + HR: 'hr', + Media: 'media', + Other: 'other', + Productivity: 'productivity', + SalesIntelligence: 'sales-intelligence', + Search: 'search', + Security: 'security', + Social: 'social', + } + return ENUM_MAP[enumKey] || enumKey.toLowerCase() +} + +/** + * Extract a string array property from block content. + * Matches patterns like `tags: ['api', 'oauth', 'webhooks']` + */ +function extractArrayPropertyFromContent(content: string, propName: string): string[] | null { + const match = content.match(new RegExp(`${propName}\\s*:\\s*\\[([^\\]]+)\\]`)) + if (!match) return null + const items = match[1].match(/'([^']+)'|"([^"]+)"/g) + if (!items) return null + return items.map((item) => item.replace(/['"]/g, '')) +} + function extractIconNameFromContent(content: string): string | null { const iconMatch = content.match(/icon\s*:\s*(\w+Icon)/) return iconMatch ? iconMatch[1] : null