mirror of
https://github.com/simstudioai/sim.git
synced 2026-02-11 23:14:58 -05:00
* progress * progress * deploy command update * add trigger mode modal * fix trigger icons' * fix corners for add trigger card * update serialization error visual in console * works * improvement(copilot-context): structured context for copilot * forgot long description * Update metadata params * progress * add better workflow ux * progress * highlighting works * trigger card * default agent workflow change * fix build error * remove any casts * address greptile comments * Diff input format * address greptile comments * improvement: ui/ux * improvement: changed to vertical scrolling * fix(workflow): ensure new blocks from sidebar click/drag use getUniqueBlockName (with semantic trigger base when applicable) * Validation + build/edit mark complete * fix trigger dropdown * Copilot stuff (lots of it) * Temp update prod dns * fix trigger check * fix * fix trigger mode check * Fix yaml imports * Fix autolayout error * fix deployed chat * Fix copilot input text overflow * fix trigger mode persistence in addBlock with enableTriggerMode flag passed in * Lint * Fix failing tests * Reset ishosted * Lint * input format for legacy starter * Fix executor --------- Co-authored-by: Siddharth Ganesan <siddharthganesan@gmail.com> Co-authored-by: Emir Karabeg <emirkarabeg@berkeley.edu>
185 lines
7.4 KiB
TypeScript
185 lines
7.4 KiB
TypeScript
/**
|
|
* Blocks Registry
|
|
*
|
|
*/
|
|
|
|
import { AgentBlock } from '@/blocks/blocks/agent'
|
|
import { AirtableBlock } from '@/blocks/blocks/airtable'
|
|
import { ApiBlock } from '@/blocks/blocks/api'
|
|
import { ApiTriggerBlock } from '@/blocks/blocks/api_trigger'
|
|
import { ArxivBlock } from '@/blocks/blocks/arxiv'
|
|
import { BrowserUseBlock } from '@/blocks/blocks/browser_use'
|
|
import { ChatTriggerBlock } from '@/blocks/blocks/chat_trigger'
|
|
import { ClayBlock } from '@/blocks/blocks/clay'
|
|
import { ConditionBlock } from '@/blocks/blocks/condition'
|
|
import { ConfluenceBlock } from '@/blocks/blocks/confluence'
|
|
import { DiscordBlock } from '@/blocks/blocks/discord'
|
|
import { ElevenLabsBlock } from '@/blocks/blocks/elevenlabs'
|
|
import { EvaluatorBlock } from '@/blocks/blocks/evaluator'
|
|
import { ExaBlock } from '@/blocks/blocks/exa'
|
|
import { FileBlock } from '@/blocks/blocks/file'
|
|
import { FirecrawlBlock } from '@/blocks/blocks/firecrawl'
|
|
import { FunctionBlock } from '@/blocks/blocks/function'
|
|
import { GenericWebhookBlock } from '@/blocks/blocks/generic_webhook'
|
|
import { GitHubBlock } from '@/blocks/blocks/github'
|
|
import { GmailBlock } from '@/blocks/blocks/gmail'
|
|
import { GoogleSearchBlock } from '@/blocks/blocks/google'
|
|
import { GoogleCalendarBlock } from '@/blocks/blocks/google_calendar'
|
|
import { GoogleDocsBlock } from '@/blocks/blocks/google_docs'
|
|
import { GoogleDriveBlock } from '@/blocks/blocks/google_drive'
|
|
import { GoogleFormsBlock } from '@/blocks/blocks/google_form'
|
|
import { GoogleSheetsBlock } from '@/blocks/blocks/google_sheets'
|
|
import { HuggingFaceBlock } from '@/blocks/blocks/huggingface'
|
|
import { HunterBlock } from '@/blocks/blocks/hunter'
|
|
import { ImageGeneratorBlock } from '@/blocks/blocks/image_generator'
|
|
import { InputTriggerBlock } from '@/blocks/blocks/input_trigger'
|
|
import { JinaBlock } from '@/blocks/blocks/jina'
|
|
import { JiraBlock } from '@/blocks/blocks/jira'
|
|
import { KnowledgeBlock } from '@/blocks/blocks/knowledge'
|
|
import { LinearBlock } from '@/blocks/blocks/linear'
|
|
import { LinkupBlock } from '@/blocks/blocks/linkup'
|
|
import { McpBlock } from '@/blocks/blocks/mcp'
|
|
import { Mem0Block } from '@/blocks/blocks/mem0'
|
|
import { MemoryBlock } from '@/blocks/blocks/memory'
|
|
import { MicrosoftExcelBlock } from '@/blocks/blocks/microsoft_excel'
|
|
import { MicrosoftPlannerBlock } from '@/blocks/blocks/microsoft_planner'
|
|
import { MicrosoftTeamsBlock } from '@/blocks/blocks/microsoft_teams'
|
|
import { MistralParseBlock } from '@/blocks/blocks/mistral_parse'
|
|
import { MongoDBBlock } from '@/blocks/blocks/mongodb'
|
|
import { MySQLBlock } from '@/blocks/blocks/mysql'
|
|
import { NotionBlock } from '@/blocks/blocks/notion'
|
|
import { OneDriveBlock } from '@/blocks/blocks/onedrive'
|
|
import { OpenAIBlock } from '@/blocks/blocks/openai'
|
|
import { OutlookBlock } from '@/blocks/blocks/outlook'
|
|
import { ParallelBlock } from '@/blocks/blocks/parallel'
|
|
import { PerplexityBlock } from '@/blocks/blocks/perplexity'
|
|
import { PineconeBlock } from '@/blocks/blocks/pinecone'
|
|
import { PostgreSQLBlock } from '@/blocks/blocks/postgresql'
|
|
import { QdrantBlock } from '@/blocks/blocks/qdrant'
|
|
import { RedditBlock } from '@/blocks/blocks/reddit'
|
|
import { ResendBlock } from '@/blocks/blocks/resend'
|
|
import { ResponseBlock } from '@/blocks/blocks/response'
|
|
import { RouterBlock } from '@/blocks/blocks/router'
|
|
import { S3Block } from '@/blocks/blocks/s3'
|
|
import { ScheduleBlock } from '@/blocks/blocks/schedule'
|
|
import { SerperBlock } from '@/blocks/blocks/serper'
|
|
import { SharepointBlock } from '@/blocks/blocks/sharepoint'
|
|
import { SlackBlock } from '@/blocks/blocks/slack'
|
|
import { StagehandBlock } from '@/blocks/blocks/stagehand'
|
|
import { StagehandAgentBlock } from '@/blocks/blocks/stagehand_agent'
|
|
import { StarterBlock } from '@/blocks/blocks/starter'
|
|
import { SupabaseBlock } from '@/blocks/blocks/supabase'
|
|
import { TavilyBlock } from '@/blocks/blocks/tavily'
|
|
import { TelegramBlock } from '@/blocks/blocks/telegram'
|
|
import { ThinkingBlock } from '@/blocks/blocks/thinking'
|
|
import { TranslateBlock } from '@/blocks/blocks/translate'
|
|
import { TwilioSMSBlock } from '@/blocks/blocks/twilio'
|
|
import { TypeformBlock } from '@/blocks/blocks/typeform'
|
|
import { VisionBlock } from '@/blocks/blocks/vision'
|
|
import { WealthboxBlock } from '@/blocks/blocks/wealthbox'
|
|
import { WebhookBlock } from '@/blocks/blocks/webhook'
|
|
import { WhatsAppBlock } from '@/blocks/blocks/whatsapp'
|
|
import { WikipediaBlock } from '@/blocks/blocks/wikipedia'
|
|
import { WorkflowBlock } from '@/blocks/blocks/workflow'
|
|
import { WorkflowInputBlock } from '@/blocks/blocks/workflow_input'
|
|
import { XBlock } from '@/blocks/blocks/x'
|
|
import { YouTubeBlock } from '@/blocks/blocks/youtube'
|
|
import type { BlockConfig } from '@/blocks/types'
|
|
|
|
// Registry of all available blocks, alphabetically sorted
|
|
export const registry: Record<string, BlockConfig> = {
|
|
agent: AgentBlock,
|
|
airtable: AirtableBlock,
|
|
api: ApiBlock,
|
|
arxiv: ArxivBlock,
|
|
browser_use: BrowserUseBlock,
|
|
clay: ClayBlock,
|
|
condition: ConditionBlock,
|
|
confluence: ConfluenceBlock,
|
|
discord: DiscordBlock,
|
|
elevenlabs: ElevenLabsBlock,
|
|
evaluator: EvaluatorBlock,
|
|
exa: ExaBlock,
|
|
firecrawl: FirecrawlBlock,
|
|
file: FileBlock,
|
|
function: FunctionBlock,
|
|
generic_webhook: GenericWebhookBlock,
|
|
github: GitHubBlock,
|
|
gmail: GmailBlock,
|
|
google_calendar: GoogleCalendarBlock,
|
|
google_docs: GoogleDocsBlock,
|
|
google_drive: GoogleDriveBlock,
|
|
google_forms: GoogleFormsBlock,
|
|
google_search: GoogleSearchBlock,
|
|
google_sheets: GoogleSheetsBlock,
|
|
huggingface: HuggingFaceBlock,
|
|
hunter: HunterBlock,
|
|
image_generator: ImageGeneratorBlock,
|
|
jina: JinaBlock,
|
|
jira: JiraBlock,
|
|
knowledge: KnowledgeBlock,
|
|
linear: LinearBlock,
|
|
linkup: LinkupBlock,
|
|
mcp: McpBlock,
|
|
mem0: Mem0Block,
|
|
microsoft_excel: MicrosoftExcelBlock,
|
|
microsoft_planner: MicrosoftPlannerBlock,
|
|
microsoft_teams: MicrosoftTeamsBlock,
|
|
mistral_parse: MistralParseBlock,
|
|
mongodb: MongoDBBlock,
|
|
mysql: MySQLBlock,
|
|
notion: NotionBlock,
|
|
openai: OpenAIBlock,
|
|
outlook: OutlookBlock,
|
|
onedrive: OneDriveBlock,
|
|
parallel_ai: ParallelBlock,
|
|
perplexity: PerplexityBlock,
|
|
pinecone: PineconeBlock,
|
|
postgresql: PostgreSQLBlock,
|
|
qdrant: QdrantBlock,
|
|
resend: ResendBlock,
|
|
memory: MemoryBlock,
|
|
reddit: RedditBlock,
|
|
response: ResponseBlock,
|
|
router: RouterBlock,
|
|
schedule: ScheduleBlock,
|
|
s3: S3Block,
|
|
serper: SerperBlock,
|
|
sharepoint: SharepointBlock,
|
|
// sms: SMSBlock,
|
|
stagehand: StagehandBlock,
|
|
stagehand_agent: StagehandAgentBlock,
|
|
slack: SlackBlock,
|
|
starter: StarterBlock,
|
|
input_trigger: InputTriggerBlock,
|
|
chat_trigger: ChatTriggerBlock,
|
|
api_trigger: ApiTriggerBlock,
|
|
supabase: SupabaseBlock,
|
|
tavily: TavilyBlock,
|
|
telegram: TelegramBlock,
|
|
thinking: ThinkingBlock,
|
|
translate: TranslateBlock,
|
|
twilio_sms: TwilioSMSBlock,
|
|
typeform: TypeformBlock,
|
|
vision: VisionBlock,
|
|
wealthbox: WealthboxBlock,
|
|
webhook: WebhookBlock,
|
|
whatsapp: WhatsAppBlock,
|
|
wikipedia: WikipediaBlock,
|
|
workflow: WorkflowBlock,
|
|
workflow_input: WorkflowInputBlock,
|
|
x: XBlock,
|
|
youtube: YouTubeBlock,
|
|
}
|
|
|
|
export const getBlock = (type: string): BlockConfig | undefined => registry[type]
|
|
|
|
export const getBlocksByCategory = (category: 'blocks' | 'tools' | 'triggers'): BlockConfig[] =>
|
|
Object.values(registry).filter((block) => block.category === category)
|
|
|
|
export const getAllBlockTypes = (): string[] => Object.keys(registry)
|
|
|
|
export const isValidBlockType = (type: string): type is string => type in registry
|
|
|
|
export const getAllBlocks = (): BlockConfig[] => Object.values(registry)
|