| 426 | } |
| 427 | |
| 428 | export interface BlockConfig<T extends ToolResponse = ToolResponse> { |
| 429 | type: string |
| 430 | name: string |
| 431 | description: string |
| 432 | category: BlockCategory |
| 433 | integrationType?: IntegrationType |
| 434 | longDescription?: string |
| 435 | bestPractices?: string |
| 436 | docsLink?: string |
| 437 | bgColor: string |
| 438 | /** |
| 439 | * Theme-safe brand foreground color for rendering this block's icon WITHOUT |
| 440 | * its colored tile background (a "bare" icon). Unlike {@link bgColor}, which |
| 441 | * is the tile fill, this is applied as the icon's `color`/`currentColor` and |
| 442 | * must read clearly on both light and dark surfaces — so only set it to vivid |
| 443 | * brand colors (e.g. HubSpot `#FF7A59`), never near-black tile colors. When |
| 444 | * omitted, bare renders fall back to the theme-aware `var(--text-icon)`. |
| 445 | */ |
| 446 | iconColor?: string |
| 447 | icon: BlockIcon |
| 448 | subBlocks: SubBlockConfig[] |
| 449 | triggerAllowed?: boolean |
| 450 | authMode?: AuthMode |
| 451 | singleInstance?: boolean |
| 452 | tools: { |
| 453 | access: string[] |
| 454 | config?: { |
| 455 | tool: (params: Record<string, any>) => string |
| 456 | params?: (params: Record<string, any>) => Record<string, any> |
| 457 | } |
| 458 | } |
| 459 | inputs: Record<string, ParamConfig> |
| 460 | outputs: Record<string, OutputFieldDefinition> & { |
| 461 | visualization?: { |
| 462 | type: 'image' |
| 463 | url: string |
| 464 | } |
| 465 | } |
| 466 | hideFromToolbar?: boolean |
| 467 | triggers?: { |
| 468 | enabled: boolean |
| 469 | available: string[] // List of trigger IDs this block supports |
| 470 | } |
| 471 | } |
| 472 | |
| 473 | interface OutputConfig { |
| 474 | type: BlockOutput |
nothing calls this directly
no outgoing calls
no test coverage detected