diff --git a/apps/docs/content/docs/en/tools/image_generator.mdx b/apps/docs/content/docs/en/tools/image_generator.mdx index 36979e8dd3e..7e1f25bc642 100644 --- a/apps/docs/content/docs/en/tools/image_generator.mdx +++ b/apps/docs/content/docs/en/tools/image_generator.mdx @@ -29,7 +29,7 @@ In Sim, the DALL-E integration enables your agents to generate images programmat ## Usage Instructions -Integrate Image Generator into the workflow. Can generate images using DALL-E 3 or GPT Image. +Integrate Image Generator into the workflow. Can generate images using DALL-E 3, GPT Image 1, or GPT Image 2. @@ -43,12 +43,14 @@ Generate images using OpenAI | Parameter | Type | Required | Description | | --------- | ---- | -------- | ----------- | -| `model` | string | Yes | The model to use \(gpt-image-1 or dall-e-3\) | +| `model` | string | Yes | The model to use \(dall-e-3, gpt-image-1, or gpt-image-2\) | | `prompt` | string | Yes | A text description of the desired image | -| `size` | string | Yes | The size of the generated images \(1024x1024, 1024x1792, or 1792x1024\) | -| `quality` | string | No | The quality of the image \(standard or hd\) | -| `style` | string | No | The style of the image \(vivid or natural\) | -| `background` | string | No | The background color, only for gpt-image-1 | +| `size` | string | Yes | Image size. dall-e-3: 1024x1024, 1024x1792, or 1792x1024. gpt-image-1: auto, 1024x1024, 1536x1024, or 1024x1536. gpt-image-2: auto or any size with edges ≤3840px and multiples of 16 \(e.g. 1024x1024, 1536x1024, 1024x1536, 2560x1440, 3840x2160\). | +| `quality` | string | No | Quality. dall-e-3: standard\|hd. gpt-image-1/gpt-image-2: auto\|low\|medium\|high | +| `style` | string | No | The style of the image \(vivid or natural\), only for dall-e-3 | +| `background` | string | No | Background. gpt-image-1: auto\|transparent\|opaque. gpt-image-2: auto\|opaque \(transparent not supported\) | +| `outputFormat` | string | No | Output image format \(png, jpeg, webp\), only for gpt-image-1 and gpt-image-2 | +| `moderation` | string | No | Moderation level \(auto or low\), only for gpt-image-1 and gpt-image-2 | | `n` | number | No | The number of images to generate \(1-10\) | | `apiKey` | string | Yes | Your OpenAI API key | diff --git a/apps/docs/content/docs/en/tools/knowledge.mdx b/apps/docs/content/docs/en/tools/knowledge.mdx index 83cbe9b8fb3..b0e1338d9e0 100644 --- a/apps/docs/content/docs/en/tools/knowledge.mdx +++ b/apps/docs/content/docs/en/tools/knowledge.mdx @@ -49,6 +49,8 @@ Search for similar content in a knowledge base using vector similarity | `tagValue` | string | No | No description | | `rerankerEnabled` | boolean | No | Whether to apply Cohere reranking to vector search results | | `rerankerModel` | string | No | Cohere rerank model to use \(one of: rerank-v4.0-pro, rerank-v4.0-fast, rerank-v3.5\) | +| `rerankerInputCount` | number | No | Number of vector results sent to the Cohere reranker \(1–100\). Defaults to topK × 4 capped at 100. | +| `apiKey` | string | No | Cohere API key for reranker \(self-hosted deployments only\) | | `tagFilters` | string | No | No description | #### Output diff --git a/apps/docs/content/docs/en/tools/mem0.mdx b/apps/docs/content/docs/en/tools/mem0.mdx index 5360e00c5bf..2e2ef80dce8 100644 --- a/apps/docs/content/docs/en/tools/mem0.mdx +++ b/apps/docs/content/docs/en/tools/mem0.mdx @@ -50,12 +50,9 @@ Add memories to Mem0 for persistent storage and retrieval | Parameter | Type | Description | | --------- | ---- | ----------- | -| `ids` | array | Array of memory IDs that were created | -| `memories` | array | Array of memory objects that were created | -| ↳ `id` | string | Unique identifier for the memory | -| ↳ `memory` | string | The content of the memory | -| ↳ `event` | string | Event type indicating operation performed \(ADD, UPDATE, DELETE, NOOP\) | -| ↳ `metadata` | json | Custom metadata associated with the memory | +| `message` | string | Status message for the queued memory processing job | +| `status` | string | Processing status returned by Mem0 | +| `event_id` | string | Event ID for polling memory processing status | ### `mem0_search_memories` @@ -102,6 +99,7 @@ Retrieve memories from Mem0 by ID or filter criteria | `startDate` | string | No | Start date for filtering by created_at \(e.g., "2024-01-15"\) | | `endDate` | string | No | End date for filtering by created_at \(e.g., "2024-12-31"\) | | `limit` | number | No | Maximum number of results to return \(e.g., 10, 50, 100\) | +| `page` | number | No | Page number to retrieve for paginated list results | | `apiKey` | string | Yes | Your Mem0 API key | #### Output @@ -120,10 +118,9 @@ Retrieve memories from Mem0 by ID or filter criteria | ↳ `categories` | json | Auto-assigned categories for the memory | | ↳ `created_at` | string | ISO 8601 timestamp when the memory was created | | ↳ `updated_at` | string | ISO 8601 timestamp when the memory was last updated | -| ↳ `owner` | string | Owner of the memory | -| ↳ `organization` | string | Organization associated with the memory | -| ↳ `immutable` | boolean | Whether the memory can be modified | -| ↳ `expiration_date` | string | Expiration date after which memory is not retrieved | | `ids` | array | Array of memory IDs that were retrieved | +| `count` | number | Total number of memories matching the filters | +| `next` | string | URL for the next page of results | +| `previous` | string | URL for the previous page of results | diff --git a/apps/docs/content/docs/en/triggers/meta.json b/apps/docs/content/docs/en/triggers/meta.json index ae727f30f3e..7eff814aad7 100644 --- a/apps/docs/content/docs/en/triggers/meta.json +++ b/apps/docs/content/docs/en/triggers/meta.json @@ -39,6 +39,7 @@ "servicenow", "slack", "stripe", + "table", "telegram", "twilio_voice", "typeform", diff --git a/apps/docs/content/docs/en/triggers/table.mdx b/apps/docs/content/docs/en/triggers/table.mdx new file mode 100644 index 00000000000..1a4a7139987 --- /dev/null +++ b/apps/docs/content/docs/en/triggers/table.mdx @@ -0,0 +1,45 @@ +--- +title: Table +description: Available Table triggers for automating workflows +--- + +import { BlockInfoCard } from "@/components/ui/block-info-card" + + + +Table provides 1 trigger for automating workflows based on events. + +## Triggers + +### Table Trigger + +Triggers when rows are inserted or updated in a table + +#### Configuration + +| Parameter | Type | Required | Description | +| --------- | ---- | -------- | ----------- | +| `tableSelector` | table-selector | Yes | The table to monitor. | +| `manualTableId` | string | Yes | The table to monitor. | +| `eventType` | string | Yes | The type of event to trigger on. | +| `watchColumns` | string | No | Only fire when these columns change. Leave empty to fire on any update. | +| `includeHeaders` | boolean | No | When enabled, each row is returned as a key-value object mapped to column names. | + +#### Output + +| Parameter | Type | Description | +| --------- | ---- | ----------- | +| `row` | json | Row data mapped to column names \(when header mapping is enabled\) | +| `rawRow` | json | Raw row data object | +| `previousRow` | json | Previous row data before the update \(null for inserts\) | +| `changedColumns` | json | List of column names that changed \(empty for inserts\) | +| `rowId` | string | The unique row ID | +| `headers` | json | Column names from the table schema | +| `rowNumber` | number | The position of the row in the table | +| `tableId` | string | The table ID | +| `tableName` | string | The table name | +| `timestamp` | string | Event timestamp in ISO format | + diff --git a/apps/sim/app/(landing)/integrations/data/integrations.json b/apps/sim/app/(landing)/integrations/data/integrations.json index 6cdced211a2..346cb98feeb 100644 --- a/apps/sim/app/(landing)/integrations/data/integrations.json +++ b/apps/sim/app/(landing)/integrations/data/integrations.json @@ -6496,7 +6496,7 @@ "slug": "image-generator", "name": "Image Generator", "description": "Generate images", - "longDescription": "Integrate Image Generator into the workflow. Can generate images using DALL-E 3 or GPT Image.", + "longDescription": "Integrate Image Generator into the workflow. Can generate images using DALL-E 3, GPT Image 1, or GPT Image 2.", "bgColor": "#4D5FFF", "iconName": "ImageIcon", "docsUrl": "https://docs.sim.ai/tools/image_generator", @@ -7540,7 +7540,7 @@ "operationCount": 14, "triggers": [], "triggerCount": 0, - "authType": "none", + "authType": "api-key", "category": "blocks" }, { diff --git a/apps/sim/blocks/blocks/image_generator.ts b/apps/sim/blocks/blocks/image_generator.ts index 6963cd604fd..69f94cb49e2 100644 --- a/apps/sim/blocks/blocks/image_generator.ts +++ b/apps/sim/blocks/blocks/image_generator.ts @@ -8,7 +8,7 @@ export const ImageGeneratorBlock: BlockConfig = { description: 'Generate images', authMode: AuthMode.ApiKey, longDescription: - 'Integrate Image Generator into the workflow. Can generate images using DALL-E 3 or GPT Image.', + 'Integrate Image Generator into the workflow. Can generate images using DALL-E 3, GPT Image 1, or GPT Image 2.', docsLink: 'https://docs.sim.ai/tools/image_generator', category: 'tools', integrationType: IntegrationType.AI, @@ -22,7 +22,8 @@ export const ImageGeneratorBlock: BlockConfig = { type: 'dropdown', options: [ { label: 'DALL-E 3', id: 'dall-e-3' }, - { label: 'GPT Image', id: 'gpt-image-1' }, + { label: 'GPT Image 1', id: 'gpt-image-1' }, + { label: 'GPT Image 2', id: 'gpt-image-2' }, ], value: () => 'dall-e-3', }, @@ -60,6 +61,22 @@ export const ImageGeneratorBlock: BlockConfig = { condition: { field: 'model', value: 'gpt-image-1' }, dependsOn: ['model'], }, + { + id: 'size', + title: 'Size', + type: 'dropdown', + options: [ + { label: 'Auto', id: 'auto' }, + { label: 'Square (1024x1024)', id: '1024x1024' }, + { label: 'Portrait (1024x1536)', id: '1024x1536' }, + { label: 'Landscape (1536x1024)', id: '1536x1024' }, + { label: '2K (2560x1440)', id: '2560x1440' }, + { label: '4K (3840x2160)', id: '3840x2160' }, + ], + value: () => 'auto', + condition: { field: 'model', value: 'gpt-image-2' }, + dependsOn: ['model'], + }, { id: 'quality', title: 'Quality', @@ -72,6 +89,20 @@ export const ImageGeneratorBlock: BlockConfig = { condition: { field: 'model', value: 'dall-e-3' }, dependsOn: ['model'], }, + { + id: 'quality', + title: 'Quality', + type: 'dropdown', + options: [ + { label: 'Auto', id: 'auto' }, + { label: 'Low', id: 'low' }, + { label: 'Medium', id: 'medium' }, + { label: 'High', id: 'high' }, + ], + value: () => 'auto', + condition: { field: 'model', value: ['gpt-image-1', 'gpt-image-2'] }, + dependsOn: ['model'], + }, { id: 'style', title: 'Style', @@ -97,6 +128,43 @@ export const ImageGeneratorBlock: BlockConfig = { condition: { field: 'model', value: 'gpt-image-1' }, dependsOn: ['model'], }, + { + id: 'background', + title: 'Background', + type: 'dropdown', + options: [ + { label: 'Auto', id: 'auto' }, + { label: 'Opaque', id: 'opaque' }, + ], + value: () => 'auto', + condition: { field: 'model', value: 'gpt-image-2' }, + dependsOn: ['model'], + }, + { + id: 'outputFormat', + title: 'Output Format', + type: 'dropdown', + options: [ + { label: 'PNG', id: 'png' }, + { label: 'JPEG', id: 'jpeg' }, + { label: 'WebP', id: 'webp' }, + ], + value: () => 'png', + condition: { field: 'model', value: ['gpt-image-1', 'gpt-image-2'] }, + dependsOn: ['model'], + }, + { + id: 'moderation', + title: 'Moderation', + type: 'dropdown', + options: [ + { label: 'Auto', id: 'auto' }, + { label: 'Low', id: 'low' }, + ], + value: () => 'auto', + condition: { field: 'model', value: ['gpt-image-1', 'gpt-image-2'] }, + dependsOn: ['model'], + }, { id: 'apiKey', title: 'API Key', @@ -120,7 +188,25 @@ export const ImageGeneratorBlock: BlockConfig = { } const model = params.model || 'dall-e-3' - const size = params.size || (model === 'gpt-image-1' ? 'auto' : '1024x1024') + + const ALLOWED_SIZES: Record = { + 'dall-e-3': ['1024x1024', '1024x1792', '1792x1024'], + 'gpt-image-1': ['auto', '1024x1024', '1536x1024', '1024x1536'], + 'gpt-image-2': ['auto', '1024x1024', '1536x1024', '1024x1536', '2560x1440', '3840x2160'], + } + const ALLOWED_QUALITIES: Record = { + 'dall-e-3': ['standard', 'hd'], + 'gpt-image-1': ['auto', 'low', 'medium', 'high'], + 'gpt-image-2': ['auto', 'low', 'medium', 'high'], + } + const ALLOWED_BACKGROUNDS: Record = { + 'gpt-image-1': ['auto', 'transparent', 'opaque'], + 'gpt-image-2': ['auto', 'opaque'], + } + + const defaultSize = model === 'dall-e-3' ? '1024x1024' : 'auto' + const size = ALLOWED_SIZES[model]?.includes(params.size) ? params.size : defaultSize + const baseParams = { prompt: params.prompt, model, @@ -129,16 +215,25 @@ export const ImageGeneratorBlock: BlockConfig = { } if (model === 'dall-e-3') { - return { - ...baseParams, - quality: params.quality || 'standard', - style: params.style || 'vivid', - } + const quality = ALLOWED_QUALITIES['dall-e-3'].includes(params.quality) + ? params.quality + : 'standard' + const style = ['vivid', 'natural'].includes(params.style) ? params.style : 'vivid' + return { ...baseParams, quality, style } } - if (model === 'gpt-image-1') { + if (model === 'gpt-image-1' || model === 'gpt-image-2') { + const quality = ALLOWED_QUALITIES[model].includes(params.quality) + ? params.quality + : undefined + const background = ALLOWED_BACKGROUNDS[model].includes(params.background) + ? params.background + : undefined return { ...baseParams, - ...(params.background && { background: params.background }), + ...(quality && { quality }), + ...(background && { background }), + ...(params.outputFormat && { outputFormat: params.outputFormat }), + ...(params.moderation && { moderation: params.moderation }), } } @@ -153,6 +248,8 @@ export const ImageGeneratorBlock: BlockConfig = { quality: { type: 'string', description: 'Image quality level' }, style: { type: 'string', description: 'Image style' }, background: { type: 'string', description: 'Background type' }, + outputFormat: { type: 'string', description: 'Output image format (png, jpeg, webp)' }, + moderation: { type: 'string', description: 'Moderation level (auto or low)' }, apiKey: { type: 'string', description: 'OpenAI API key' }, }, outputs: { diff --git a/apps/sim/tools/openai/image.ts b/apps/sim/tools/openai/image.ts index 2e857d153f6..cd84472b044 100644 --- a/apps/sim/tools/openai/image.ts +++ b/apps/sim/tools/openai/image.ts @@ -16,7 +16,7 @@ export const imageTool: ToolConfig = { type: 'string', required: true, visibility: 'user-only', - description: 'The model to use (gpt-image-1 or dall-e-3)', + description: 'The model to use (dall-e-3, gpt-image-1, or gpt-image-2)', }, prompt: { type: 'string', @@ -28,25 +28,39 @@ export const imageTool: ToolConfig = { type: 'string', required: true, visibility: 'user-or-llm', - description: 'The size of the generated images (1024x1024, 1024x1792, or 1792x1024)', + description: + 'Image size. dall-e-3: 1024x1024, 1024x1792, or 1792x1024. gpt-image-1: auto, 1024x1024, 1536x1024, or 1024x1536. gpt-image-2: auto or any size with edges ≤3840px and multiples of 16 (e.g. 1024x1024, 1536x1024, 1024x1536, 2560x1440, 3840x2160).', }, quality: { type: 'string', required: false, visibility: 'user-or-llm', - description: 'The quality of the image (standard or hd)', + description: 'Quality. dall-e-3: standard|hd. gpt-image-1/gpt-image-2: auto|low|medium|high', }, style: { type: 'string', required: false, visibility: 'user-or-llm', - description: 'The style of the image (vivid or natural)', + description: 'The style of the image (vivid or natural), only for dall-e-3', }, background: { type: 'string', required: false, visibility: 'user-or-llm', - description: 'The background color, only for gpt-image-1', + description: + 'Background. gpt-image-1: auto|transparent|opaque. gpt-image-2: auto|opaque (transparent not supported)', + }, + outputFormat: { + type: 'string', + required: false, + visibility: 'user-or-llm', + description: 'Output image format (png, jpeg, webp), only for gpt-image-1 and gpt-image-2', + }, + moderation: { + type: 'string', + required: false, + visibility: 'user-or-llm', + description: 'Moderation level (auto or low), only for gpt-image-1 and gpt-image-2', }, n: { type: 'number', @@ -73,15 +87,18 @@ export const imageTool: ToolConfig = { const body: BaseImageRequestBody = { model: params.model, prompt: params.prompt, - size: params.size || '1024x1024', + size: params.size || (params.model === 'dall-e-3' ? '1024x1024' : 'auto'), n: params.n ? Number(params.n) : 1, } if (params.model === 'dall-e-3') { if (params.quality) body.quality = params.quality if (params.style) body.style = params.style - } else if (params.model === 'gpt-image-1') { + } else if (params.model === 'gpt-image-1' || params.model === 'gpt-image-2') { + if (params.quality) body.quality = params.quality if (params.background) body.background = params.background + if (params.outputFormat) body.output_format = params.outputFormat + if (params.moderation) body.moderation = params.moderation } return body @@ -111,7 +128,7 @@ export const imageTool: ToolConfig = { } else if (data.data?.[0]?.b64_json) { base64Image = data.data[0].b64_json logger.info( - 'Found base64 encoded image in response for GPT-Image-1', + `Found base64 encoded image in response for ${modelName}`, `length: ${base64Image.length}` ) } else {