diff --git a/apps/docs/components/icons.tsx b/apps/docs/components/icons.tsx index 765920716b2..2417e6acb58 100644 --- a/apps/docs/components/icons.tsx +++ b/apps/docs/components/icons.tsx @@ -1,6 +1,22 @@ import type { SVGProps } from 'react' import { useId } from 'react' +export function EnrichmentIcon(props: SVGProps) { + return ( + + + + + + ) +} + export function AgentMailIcon(props: SVGProps) { return ( @@ -75,7 +91,12 @@ export function AgentPhoneIcon(props: SVGProps) { export function CrowdStrikeIcon(props: SVGProps) { return ( - + ) { export function FirecrawlIcon(props: SVGProps) { return ( - + ) { export function SerperIcon(props: SVGProps) { return ( - + ) { export function NotionIcon(props: SVGProps) { return ( - + @@ -1155,27 +1176,13 @@ export function GrafanaIcon(props: SVGProps) { const gradientId = `grafana_gradient_${id}` return ( - + - + @@ -1488,7 +1495,7 @@ export function ProspeoIcon(props: SVGProps) { {...props} width='1em' height='1em' - viewBox='0 0 32 32' + viewBox='1.17 1.178 29.66 29.643' fill='none' xmlns='http://www.w3.org/2000/svg' > @@ -2168,27 +2175,8 @@ export function MistralIcon(props: SVGProps) { export function BrainIcon(props: SVGProps) { return ( - - - - - - - - - - + + ) } @@ -2240,14 +2228,19 @@ export function BrandfetchIcon(props: SVGProps) { export function BrightDataIcon(props: SVGProps) { return ( - + ) @@ -2330,8 +2323,8 @@ export function ExtendIcon(props: SVGProps) { export function EvernoteIcon(props: SVGProps) { return ( - - + + ) } @@ -2526,7 +2519,7 @@ export function TelegramIcon(props: SVGProps) { ) { export function QuiverIcon(props: SVGProps) { return ( - + ) { } export function MicrosoftOneDriveIcon(props: SVGProps) { + const id = useId() return ( - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ) } @@ -4397,37 +4569,47 @@ export function Neo4jIcon(props: SVGProps) { export function CalendlyIcon(props: SVGProps) { return ( - - - - - - - - + + + + + ) } @@ -4719,8 +4901,8 @@ export function ZendeskIcon(props: SVGProps) { export function ZoomIcon(props: SVGProps) { return ( ) } @@ -4731,7 +4913,7 @@ export function ZoomInfoIcon(props: SVGProps) { return ( <start. ## How it behaves per entry point - + When you click Run in the editor, the Start block renders the Input Format as a form. Default values make it easy to retest without retyping data. Submitting the form triggers the workflow immediately and the values become available on <start.fieldName> (for example <start.sampleField>). @@ -64,13 +64,6 @@ Reference structured values downstream with expressions such as <start. If you launch chat with additional structured context (for example from an embed), it merges into the corresponding <start.fieldName> outputs, keeping downstream blocks consistent with API and manual runs. - - Form deployments render the Input Format as a standalone, embeddable form page. Each field becomes a form input with appropriate UI controls—text inputs for strings, number inputs for numbers, toggle switches for booleans, and file upload zones for files. - - When a user submits the form, values become available on <start.fieldName> just like other entry points. The workflow executes with trigger type form, and submitters see a customizable thank-you message upon completion. - - Forms can be embedded via iframe or shared as direct links, making them ideal for surveys, contact forms, and data collection workflows. - ## Referencing Start data downstream diff --git a/apps/docs/content/docs/en/triggers/telegram.mdx b/apps/docs/content/docs/en/triggers/telegram.mdx index 5447bf20792..ab945b8a821 100644 --- a/apps/docs/content/docs/en/triggers/telegram.mdx +++ b/apps/docs/content/docs/en/triggers/telegram.mdx @@ -7,7 +7,7 @@ import { BlockInfoCard } from "@/components/ui/block-info-card" Telegram provides 1 trigger for automating workflows based on events. diff --git a/apps/docs/content/docs/en/triggers/webflow.mdx b/apps/docs/content/docs/en/triggers/webflow.mdx index c72b6f49577..2db6961641e 100644 --- a/apps/docs/content/docs/en/triggers/webflow.mdx +++ b/apps/docs/content/docs/en/triggers/webflow.mdx @@ -7,7 +7,7 @@ import { BlockInfoCard } from "@/components/ui/block-info-card" Webflow provides 4 triggers for automating workflows based on events. diff --git a/apps/docs/content/docs/es/copilot/index.mdx b/apps/docs/content/docs/es/copilot/index.mdx index 5d65b551e5a..4752570179b 100644 --- a/apps/docs/content/docs/es/copilot/index.mdx +++ b/apps/docs/content/docs/es/copilot/index.mdx @@ -246,98 +246,3 @@ El uso de Copilot se factura por token del LLM subyacente. Si alcanzas tu límit Consulta la [página de cálculo de costos](/execution/costs) para detalles de facturación. -## Copilot MCP - -Puedes usar Copilot como servidor MCP en tu editor o cliente de IA favorito. Esto te permite construir, probar, desplegar y gestionar flujos de trabajo de Sim directamente desde herramientas como Cursor, Claude Code, Claude Desktop y VS Code. - -### Generar una clave API de Copilot - -Para conectarte al servidor MCP de Copilot, necesitas una **clave API de Copilot**: - -1. Ve a [sim.ai](https://sim.ai) e inicia sesión -2. Navega a **Configuración** → **Copilot** -3. Haz clic en **Generar clave API** -4. Copia la clave — solo se muestra una vez - -La clave se verá como `sk-sim-copilot-...`. Usarás esto en la configuración a continuación. - -### Cursor - -Agrega lo siguiente a tu `.cursor/mcp.json` (nivel de proyecto) o configuración global de MCP de Cursor: - -```json -{ - "mcpServers": { - "sim-copilot": { - "url": "https://www.sim.ai/api/mcp/copilot", - "headers": { - "X-API-Key": "YOUR_COPILOT_API_KEY" - } - } - } -} -``` - -Reemplaza `YOUR_COPILOT_API_KEY` con la clave que generaste anteriormente. - -### Claude Code - -Ejecuta el siguiente comando para añadir el servidor MCP de Copilot: - -```bash -claude mcp add sim-copilot \ - --transport http \ - https://www.sim.ai/api/mcp/copilot \ - --header "X-API-Key: YOUR_COPILOT_API_KEY" -``` - -Reemplaza `YOUR_COPILOT_API_KEY` con tu clave. - -### Claude Desktop - -Claude Desktop requiere [`mcp-remote`](https://www.npmjs.com/package/mcp-remote) para conectarse a servidores MCP basados en HTTP. Añade lo siguiente a tu archivo de configuración de Claude Desktop (`~/Library/Application Support/Claude/claude_desktop_config.json` en macOS): - -```json -{ - "mcpServers": { - "sim-copilot": { - "command": "npx", - "args": [ - "-y", - "mcp-remote", - "https://www.sim.ai/api/mcp/copilot", - "--header", - "X-API-Key: YOUR_COPILOT_API_KEY" - ] - } - } -} -``` - -Reemplaza `YOUR_COPILOT_API_KEY` con tu clave. - -### VS Code - -Añade lo siguiente a tu `settings.json` de VS Code o al `.vscode/settings.json` del espacio de trabajo: - -```json -{ - "mcp": { - "servers": { - "sim-copilot": { - "type": "http", - "url": "https://www.sim.ai/api/mcp/copilot", - "headers": { - "X-API-Key": "YOUR_COPILOT_API_KEY" - } - } - } - } -} -``` - -Reemplaza `YOUR_COPILOT_API_KEY` con tu clave. - - - Para implementaciones auto-alojadas, reemplaza `https://www.sim.ai` con tu URL de Sim auto-alojada. - diff --git a/apps/docs/content/docs/es/execution/form.mdx b/apps/docs/content/docs/es/execution/form.mdx deleted file mode 100644 index 2baf26da3ad..00000000000 --- a/apps/docs/content/docs/es/execution/form.mdx +++ /dev/null @@ -1,142 +0,0 @@ ---- -title: Despliegue de formulario ---- - -import { Callout } from 'fumadocs-ui/components/callout' -import { Tab, Tabs } from 'fumadocs-ui/components/tabs' - -Despliega tu flujo de trabajo como un formulario embebible que los usuarios pueden completar en tu sitio web o compartir mediante enlace. Los envíos de formulario activan tu flujo de trabajo con el tipo de activador `form`. - -## Descripción general - -El despliegue de formulario convierte el formato de entrada de tu flujo de trabajo en un formulario responsivo que puede ser: -- Compartido mediante un enlace directo (ej., `https://sim.ai/form/my-survey`) -- Embebido en cualquier sitio web usando un iframe - -Cuando un usuario envía el formulario, activa tu flujo de trabajo con los datos del formulario. - - -Los formularios derivan sus campos del formato de entrada del bloque de inicio de tu flujo de trabajo. Cada campo se convierte en una entrada de formulario con el tipo apropiado. - - -## Crear un formulario - -1. Abre tu flujo de trabajo y haz clic en **Desplegar** -2. Selecciona la pestaña **Formulario** -3. Configura: - - **URL**: Identificador único (ej., `contact-form` → `sim.ai/form/contact-form`) - - **Título**: Encabezado del formulario - - **Descripción**: Subtítulo opcional - - **Campos del formulario**: Personaliza etiquetas y descripciones para cada campo - - **Autenticación**: Pública, protegida por contraseña o lista blanca de correos - - **Mensaje de agradecimiento**: Se muestra después del envío -4. Haz clic en **Lanzar** - -## Mapeo de tipos de campo - -| Tipo de formato de entrada | Campo de formulario | -|------------------|------------| -| `string` | Entrada de texto | -| `number` | Entrada numérica | -| `boolean` | Interruptor de alternancia | -| `object` | Editor JSON | -| `array` | Editor de array JSON | -| `files` | Carga de archivo | - -## Control de acceso - -| Modo | Descripción | -|------|-------------| -| **Público** | Cualquiera con el enlace puede enviar | -| **Contraseña** | Los usuarios deben ingresar una contraseña | -| **Lista blanca de correos** | Solo los correos/dominios especificados pueden enviar | - -Para lista blanca de correos: -- Exacto: `user@example.com` -- Dominio: `@example.com` (todos los correos del dominio) - -## Incrustación - -### Enlace directo - -``` -https://sim.ai/form/your-identifier -``` - -### Iframe - -```html - -``` - -## Envío por API - -Envía formularios de forma programática: - - - - -```bash -curl -X POST https://sim.ai/api/form/your-identifier \ - -H "Content-Type: application/json" \ - -d '{ - "formData": { - "name": "John Doe", - "email": "john@example.com" - } - }' -``` - - - - -```typescript -const response = await fetch('https://sim.ai/api/form/your-identifier', { - method: 'POST', - headers: { 'Content-Type': 'application/json' }, - body: JSON.stringify({ - formData: { - name: 'John Doe', - email: 'john@example.com' - } - }) -}); - -const result = await response.json(); -// { success: true, data: { executionId: '...' } } -``` - - - - -### Formularios protegidos - -Para formularios protegidos con contraseña: - -```bash -curl -X POST https://sim.ai/api/form/your-identifier \ - -H "Content-Type: application/json" \ - -d '{ "password": "secret", "formData": { "name": "John" } }' -``` - -Para formularios protegidos con correo: - -```bash -curl -X POST https://sim.ai/api/form/your-identifier \ - -H "Content-Type: application/json" \ - -d '{ "email": "allowed@example.com", "formData": { "name": "John" } }' -``` - -## Solución de problemas - -**"No hay campos de entrada configurados"** - Añade campos de formato de entrada a tu bloque de inicio. - -**El formulario no se carga en el iframe** - Verifica que el CSP de tu sitio permita iframes desde `sim.ai`. - -**Los envíos fallan** - Verifica que el identificador sea correcto y que los campos obligatorios estén completos. diff --git a/apps/docs/content/docs/fr/copilot/index.mdx b/apps/docs/content/docs/fr/copilot/index.mdx index b092b26f08b..53dc6c352c5 100644 --- a/apps/docs/content/docs/fr/copilot/index.mdx +++ b/apps/docs/content/docs/fr/copilot/index.mdx @@ -246,98 +246,3 @@ L'utilisation de Copilot est facturée par jeton du LLM sous-jacent. Si vous att Consultez la [page de calcul des coûts](/execution/costs) pour les détails de facturation. -## Copilot MCP - -Vous pouvez utiliser Copilot comme serveur MCP dans votre éditeur ou client IA préféré. Cela vous permet de créer, tester, déployer et gérer des workflows Sim directement depuis des outils comme Cursor, Claude Code, Claude Desktop et VS Code. - -### Générer une clé API Copilot - -Pour vous connecter au serveur MCP Copilot, vous avez besoin d'une **clé API Copilot** : - -1. Rendez-vous sur [sim.ai](https://sim.ai) et connectez-vous -2. Accédez à **Paramètres** → **Copilot** -3. Cliquez sur **Générer une clé API** -4. Copiez la clé — elle n'est affichée qu'une seule fois - -La clé ressemblera à `sk-sim-copilot-...`. Vous l'utiliserez dans la configuration ci-dessous. - -### Cursor - -Ajoutez ce qui suit à votre `.cursor/mcp.json` (niveau projet) ou aux paramètres MCP globaux de Cursor : - -```json -{ - "mcpServers": { - "sim-copilot": { - "url": "https://www.sim.ai/api/mcp/copilot", - "headers": { - "X-API-Key": "YOUR_COPILOT_API_KEY" - } - } - } -} -``` - -Remplacez `YOUR_COPILOT_API_KEY` par la clé que vous avez générée ci-dessus. - -### Claude Code - -Exécutez la commande suivante pour ajouter le serveur MCP Copilot : - -```bash -claude mcp add sim-copilot \ - --transport http \ - https://www.sim.ai/api/mcp/copilot \ - --header "X-API-Key: YOUR_COPILOT_API_KEY" -``` - -Remplacez `YOUR_COPILOT_API_KEY` par votre clé. - -### Claude Desktop - -Claude Desktop nécessite [`mcp-remote`](https://www.npmjs.com/package/mcp-remote) pour se connecter aux serveurs MCP basés sur HTTP. Ajoutez ce qui suit à votre fichier de configuration Claude Desktop (`~/Library/Application Support/Claude/claude_desktop_config.json` sur macOS) : - -```json -{ - "mcpServers": { - "sim-copilot": { - "command": "npx", - "args": [ - "-y", - "mcp-remote", - "https://www.sim.ai/api/mcp/copilot", - "--header", - "X-API-Key: YOUR_COPILOT_API_KEY" - ] - } - } -} -``` - -Remplacez `YOUR_COPILOT_API_KEY` par votre clé. - -### VS Code - -Ajoutez ce qui suit à votre `settings.json` VS Code ou à votre `.vscode/settings.json` d'espace de travail : - -```json -{ - "mcp": { - "servers": { - "sim-copilot": { - "type": "http", - "url": "https://www.sim.ai/api/mcp/copilot", - "headers": { - "X-API-Key": "YOUR_COPILOT_API_KEY" - } - } - } - } -} -``` - -Remplacez `YOUR_COPILOT_API_KEY` par votre clé. - - - Pour les déploiements auto-hébergés, remplacez `https://www.sim.ai` par votre URL Sim auto-hébergée. - diff --git a/apps/docs/content/docs/fr/execution/form.mdx b/apps/docs/content/docs/fr/execution/form.mdx deleted file mode 100644 index 505a0466100..00000000000 --- a/apps/docs/content/docs/fr/execution/form.mdx +++ /dev/null @@ -1,142 +0,0 @@ ---- -title: Déploiement de formulaire ---- - -import { Callout } from 'fumadocs-ui/components/callout' -import { Tab, Tabs } from 'fumadocs-ui/components/tabs' - -Déployez votre workflow sous forme de formulaire intégrable que les utilisateurs peuvent remplir sur votre site web ou partager via un lien. Les soumissions de formulaire déclenchent votre workflow avec le type de déclencheur `form`. - -## Vue d'ensemble - -Le déploiement de formulaire transforme le format d'entrée de votre workflow en un formulaire responsive qui peut être : -- Partagé via un lien direct (par exemple, `https://sim.ai/form/my-survey`) -- Intégré dans n'importe quel site web à l'aide d'une iframe - -Lorsqu'un utilisateur soumet le formulaire, cela déclenche votre workflow avec les données du formulaire. - - -Les formulaires dérivent leurs champs du format d'entrée du bloc de démarrage de votre workflow. Chaque champ devient une entrée de formulaire avec le type approprié. - - -## Créer un formulaire - -1. Ouvrez votre workflow et cliquez sur **Déployer** -2. Sélectionnez l'onglet **Formulaire** -3. Configurez : - - **URL** : identifiant unique (par exemple, `contact-form` → `sim.ai/form/contact-form`) - - **Titre** : en-tête du formulaire - - **Description** : sous-titre optionnel - - **Champs du formulaire** : personnalisez les libellés et descriptions de chaque champ - - **Authentification** : publique, protégée par mot de passe ou liste blanche d'emails - - **Message de remerciement** : affiché après la soumission -4. Cliquez sur **Lancer** - -## Correspondance des types de champs - -| Type de format d'entrée | Champ de formulaire | -|------------------|------------| -| `string` | Champ de texte | -| `number` | Champ numérique | -| `boolean` | Interrupteur | -| `object` | Éditeur JSON | -| `array` | Éditeur de tableau JSON | -| `files` | Téléchargement de fichier | - -## Contrôle d'accès - -| Mode | Description | -|------|-------------| -| **Public** | Toute personne disposant du lien peut soumettre | -| **Mot de passe** | Les utilisateurs doivent saisir un mot de passe | -| **Liste blanche d'emails** | Seuls les emails/domaines spécifiés peuvent soumettre | - -Pour la liste blanche d'e-mails : -- Exact : `user@example.com` -- Domaine : `@example.com` (tous les e-mails du domaine) - -## Intégration - -### Lien direct - -``` -https://sim.ai/form/your-identifier -``` - -### Iframe - -```html - -``` - -## Soumission par API - -Soumettre des formulaires par programmation : - - - - -```bash -curl -X POST https://sim.ai/api/form/your-identifier \ - -H "Content-Type: application/json" \ - -d '{ - "formData": { - "name": "John Doe", - "email": "john@example.com" - } - }' -``` - - - - -```typescript -const response = await fetch('https://sim.ai/api/form/your-identifier', { - method: 'POST', - headers: { 'Content-Type': 'application/json' }, - body: JSON.stringify({ - formData: { - name: 'John Doe', - email: 'john@example.com' - } - }) -}); - -const result = await response.json(); -// { success: true, data: { executionId: '...' } } -``` - - - - -### Formulaires protégés - -Pour les formulaires protégés par mot de passe : - -```bash -curl -X POST https://sim.ai/api/form/your-identifier \ - -H "Content-Type: application/json" \ - -d '{ "password": "secret", "formData": { "name": "John" } }' -``` - -Pour les formulaires protégés par e-mail : - -```bash -curl -X POST https://sim.ai/api/form/your-identifier \ - -H "Content-Type: application/json" \ - -d '{ "email": "allowed@example.com", "formData": { "name": "John" } }' -``` - -## Dépannage - -**« Aucun champ de saisie configuré »** - Ajoutez des champs de format de saisie à votre bloc de démarrage. - -**Le formulaire ne se charge pas dans l'iframe** - Vérifiez que la CSP de votre site autorise les iframes provenant de `sim.ai`. - -**Échec des soumissions** - Vérifiez que l'identifiant est correct et que les champs obligatoires sont remplis. diff --git a/apps/docs/content/docs/ja/copilot/index.mdx b/apps/docs/content/docs/ja/copilot/index.mdx index 4714411d6b4..d38f9a42cb2 100644 --- a/apps/docs/content/docs/ja/copilot/index.mdx +++ b/apps/docs/content/docs/ja/copilot/index.mdx @@ -246,98 +246,3 @@ Copilotの使用量は、基盤となるLLMからのトークン単位で課金 課金の詳細については、[コスト計算ページ](/execution/costs)を参照してください。 -## Copilot MCP - -お気に入りのエディタやAIクライアントで、CopilotをMCPサーバーとして使用できます。これにより、Cursor、Claude Code、Claude Desktop、VS Codeなどのツールから直接、Simワークフローの構築、テスト、デプロイ、管理が可能になります。 - -### Copilot APIキーの生成 - -Copilot MCPサーバーに接続するには、**Copilot APIキー**が必要です。 - -1. [sim.ai](https://sim.ai)にアクセスしてサインイン -2. **設定** → **Copilot**に移動 -3. **APIキーを生成**をクリック -4. キーをコピー(一度のみ表示されます) - -キーは`sk-sim-copilot-...`のような形式です。以下の設定で使用します。 - -### Cursor - -`.cursor/mcp.json`(プロジェクトレベル)またはグローバルなCursor MCP設定に以下を追加してください。 - -```json -{ - "mcpServers": { - "sim-copilot": { - "url": "https://www.sim.ai/api/mcp/copilot", - "headers": { - "X-API-Key": "YOUR_COPILOT_API_KEY" - } - } - } -} -``` - -`YOUR_COPILOT_API_KEY`を上記で生成したキーに置き換えてください。 - -### Claude Code - -次のコマンドを実行してCopilot MCPサーバーを追加します: - -```bash -claude mcp add sim-copilot \ - --transport http \ - https://www.sim.ai/api/mcp/copilot \ - --header "X-API-Key: YOUR_COPILOT_API_KEY" -``` - -`YOUR_COPILOT_API_KEY`をあなたのキーに置き換えてください。 - -### Claude Desktop - -Claude DesktopはHTTPベースのMCPサーバーに接続するために[`mcp-remote`](https://www.npmjs.com/package/mcp-remote)が必要です。Claude Desktopの設定ファイル(macOSでは`~/Library/Application Support/Claude/claude_desktop_config.json`)に以下を追加してください: - -```json -{ - "mcpServers": { - "sim-copilot": { - "command": "npx", - "args": [ - "-y", - "mcp-remote", - "https://www.sim.ai/api/mcp/copilot", - "--header", - "X-API-Key: YOUR_COPILOT_API_KEY" - ] - } - } -} -``` - -`YOUR_COPILOT_API_KEY`をあなたのキーに置き換えてください。 - -### VS Code - -VS Codeの`settings.json`またはワークスペースの`.vscode/settings.json`に以下を追加してください: - -```json -{ - "mcp": { - "servers": { - "sim-copilot": { - "type": "http", - "url": "https://www.sim.ai/api/mcp/copilot", - "headers": { - "X-API-Key": "YOUR_COPILOT_API_KEY" - } - } - } - } -} -``` - -`YOUR_COPILOT_API_KEY`をあなたのキーに置き換えてください。 - - - セルフホスト型デプロイメントの場合は、`https://www.sim.ai`をあなたのセルフホスト型SimのURLに置き換えてください。 - diff --git a/apps/docs/content/docs/ja/execution/form.mdx b/apps/docs/content/docs/ja/execution/form.mdx deleted file mode 100644 index 837ab15ff47..00000000000 --- a/apps/docs/content/docs/ja/execution/form.mdx +++ /dev/null @@ -1,142 +0,0 @@ ---- -title: フォームデプロイメント ---- - -import { Callout } from 'fumadocs-ui/components/callout' -import { Tab, Tabs } from 'fumadocs-ui/components/tabs' - -ワークフローを埋め込み可能なフォームとしてデプロイし、ユーザーがウェブサイト上で入力したり、リンク経由で共有したりできます。フォーム送信は、`form`トリガータイプでワークフローを起動します。 - -## 概要 - -フォームデプロイメントは、ワークフローの入力フォーマットをレスポンシブなフォームに変換します。このフォームは次のように利用できます: -- 直接リンクで共有(例: `https://sim.ai/form/my-survey`) -- iframeを使用して任意のウェブサイトに埋め込み - -ユーザーがフォームを送信すると、フォームデータを使用してワークフローが起動されます。 - - -フォームのフィールドは、ワークフローのStartブロックの入力フォーマットから派生します。各フィールドは、適切なタイプのフォーム入力になります。 - - -## フォームの作成 - -1. ワークフローを開き、**Deploy**をクリックします -2. **Form**タブを選択します -3. 設定: - - **URL**: 一意の識別子(例: `contact-form` → `sim.ai/form/contact-form`) - - **Title**: フォームの見出し - - **Description**: オプションのサブタイトル - - **Form Fields**: 各フィールドのラベルと説明をカスタマイズ - - **Authentication**: 公開、パスワード保護、またはメールホワイトリスト - - **Thank You Message**: 送信後に表示されるメッセージ -4. **Launch**をクリックします - -## フィールドタイプのマッピング - -| 入力フォーマットタイプ | フォームフィールド | -|------------------|------------| -| `string` | テキスト入力 | -| `number` | 数値入力 | -| `boolean` | トグルスイッチ | -| `object` | JSONエディタ | -| `array` | JSON配列エディタ | -| `files` | ファイルアップロード | - -## アクセス制御 - -| モード | 説明 | -|------|-------------| -| **Public** | リンクを持つ誰でも送信可能 | -| **Password** | ユーザーはパスワードを入力する必要があります | -| **Email Whitelist** | 指定されたメール/ドメインのみ送信可能 | - -メールホワイトリストの場合: -- 完全一致:`user@example.com` -- ドメイン:`@example.com`(ドメインからのすべてのメール) - -## 埋め込み - -### 直接リンク - -``` -https://sim.ai/form/your-identifier -``` - -### Iframe - -```html - -``` - -## API送信 - -プログラムでフォームを送信: - - - - -```bash -curl -X POST https://sim.ai/api/form/your-identifier \ - -H "Content-Type: application/json" \ - -d '{ - "formData": { - "name": "John Doe", - "email": "john@example.com" - } - }' -``` - - - - -```typescript -const response = await fetch('https://sim.ai/api/form/your-identifier', { - method: 'POST', - headers: { 'Content-Type': 'application/json' }, - body: JSON.stringify({ - formData: { - name: 'John Doe', - email: 'john@example.com' - } - }) -}); - -const result = await response.json(); -// { success: true, data: { executionId: '...' } } -``` - - - - -### 保護されたフォーム - -パスワード保護されたフォームの場合: - -```bash -curl -X POST https://sim.ai/api/form/your-identifier \ - -H "Content-Type: application/json" \ - -d '{ "password": "secret", "formData": { "name": "John" } }' -``` - -メール保護されたフォームの場合: - -```bash -curl -X POST https://sim.ai/api/form/your-identifier \ - -H "Content-Type: application/json" \ - -d '{ "email": "allowed@example.com", "formData": { "name": "John" } }' -``` - -## トラブルシューティング - -**「入力フィールドが設定されていません」** - スタートブロックに入力フォーマットフィールドを追加してください。 - -**iframeでフォームが読み込まれない** - サイトのCSPが`sim.ai`からのiframeを許可しているか確認してください。 - -**送信が失敗する** - 識別子が正しく、必須フィールドが入力されているか確認してください。 diff --git a/apps/docs/content/docs/zh/copilot/index.mdx b/apps/docs/content/docs/zh/copilot/index.mdx index b3b54d134c6..b37b1cdc6dc 100644 --- a/apps/docs/content/docs/zh/copilot/index.mdx +++ b/apps/docs/content/docs/zh/copilot/index.mdx @@ -246,98 +246,3 @@ Copilot 的使用按底层 LLM 的 token 计费。如果达到使用上限,Cop 计费详情请参见 [成本计算页面](/execution/costs)。 -## Copilot MCP - -你可以在常用编辑器或 AI 客户端中将 Copilot 作为 MCP 服务器使用。这样可以直接在 Cursor、Claude Code、Claude Desktop 和 VS Code 等工具中构建、测试、部署和管理 Sim 工作流。 - -### 生成 Copilot API 密钥 - -要连接 Copilot MCP 服务器,你需要一个 **Copilot API 密钥**: - -1. 访问 [sim.ai](https://sim.ai) 并登录 -2. 进入 **设置** → **Copilot** -3. 点击 **生成 API 密钥** -4. 复制密钥 — 该密钥只显示一次 - -密钥类似于 `sk-sim-copilot-...`。你将在下方配置中用到它。 - -### Cursor - -将以下内容添加到你的 `.cursor/mcp.json`(项目级)或全局 Cursor MCP 设置中: - -```json -{ - "mcpServers": { - "sim-copilot": { - "url": "https://www.sim.ai/api/mcp/copilot", - "headers": { - "X-API-Key": "YOUR_COPILOT_API_KEY" - } - } - } -} -``` - -将 `YOUR_COPILOT_API_KEY` 替换为你上面生成的密钥。 - -### Claude Code - -运行以下命令以添加 Copilot MCP 服务器: - -```bash -claude mcp add sim-copilot \ - --transport http \ - https://www.sim.ai/api/mcp/copilot \ - --header "X-API-Key: YOUR_COPILOT_API_KEY" -``` - -将 `YOUR_COPILOT_API_KEY` 替换为你的密钥。 - -### Claude Desktop - -Claude Desktop 需要 [`mcp-remote`](https://www.npmjs.com/package/mcp-remote) 以连接基于 HTTP 的 MCP 服务器。请将以下内容添加到你的 Claude Desktop 配置文件(macOS 上为 `~/Library/Application Support/Claude/claude_desktop_config.json`): - -```json -{ - "mcpServers": { - "sim-copilot": { - "command": "npx", - "args": [ - "-y", - "mcp-remote", - "https://www.sim.ai/api/mcp/copilot", - "--header", - "X-API-Key: YOUR_COPILOT_API_KEY" - ] - } - } -} -``` - -将 `YOUR_COPILOT_API_KEY` 替换为你的密钥。 - -### VS Code - -请将以下内容添加到你的 VS Code `settings.json` 或工作区 `.vscode/settings.json`: - -```json -{ - "mcp": { - "servers": { - "sim-copilot": { - "type": "http", - "url": "https://www.sim.ai/api/mcp/copilot", - "headers": { - "X-API-Key": "YOUR_COPILOT_API_KEY" - } - } - } - } -} -``` - -将 `YOUR_COPILOT_API_KEY` 替换为你的密钥。 - - - 对于自托管部署,请将 `https://www.sim.ai` 替换为你的自托管 Sim URL。 - diff --git a/apps/docs/content/docs/zh/execution/form.mdx b/apps/docs/content/docs/zh/execution/form.mdx deleted file mode 100644 index 3b5df28463c..00000000000 --- a/apps/docs/content/docs/zh/execution/form.mdx +++ /dev/null @@ -1,142 +0,0 @@ ---- -title: 表单部署 ---- - -import { Callout } from 'fumadocs-ui/components/callout' -import { Tab, Tabs } from 'fumadocs-ui/components/tabs' - -将你的工作流部署为可嵌入的表单,用户可以在你的网站上填写,或通过链接分享。表单提交后会以 `form` 触发类型启动你的工作流。 - -## 概述 - -表单部署会将你的工作流输入格式转化为响应式表单,可用于: -- 通过直接链接分享(如:`https://sim.ai/form/my-survey`) -- 通过 iframe 嵌入到任意网站 - -当用户提交表单时,会携带表单数据触发你的工作流。 - - -表单字段来源于你工作流的 Start 块输入格式。每个字段都会变成对应类型的表单输入项。 - - -## 创建表单 - -1. 打开你的工作流并点击 **Deploy** -2. 选择 **Form** 标签页 -3. 配置: - - **URL**:唯一标识符(如:`contact-form` → `sim.ai/form/contact-form`) - - **Title**:表单标题 - - **Description**:可选副标题 - - **Form Fields**:自定义每个字段的标签和描述 - - **Authentication**:公开、密码保护或邮箱白名单 - - **Thank You Message**:提交后显示的感谢信息 -4. 点击 **Launch** - -## 字段类型映射 - -| 输入格式类型 | 表单字段 | -|------------------|------------| -| `string` | 文本输入 | -| `number` | 数字输入 | -| `boolean` | 开关切换 | -| `object` | JSON 编辑器 | -| `array` | JSON 数组编辑器 | -| `files` | 文件上传 | - -## 访问控制 - -| 模式 | 说明 | -|------|-------------| -| **Public** | 任何拥有链接的人都可提交 | -| **Password** | 用户需输入密码 | -| **Email Whitelist** | 仅指定邮箱/域名可提交 | - -对于邮箱白名单: -- 精确匹配:`user@example.com` -- 域名匹配:`@example.com`(该域名下所有邮箱) - -## 嵌入 - -### 直接链接 - -``` -https://sim.ai/form/your-identifier -``` - -### Iframe - -```html - -``` - -## API 提交 - -以编程方式提交表单: - - - - -```bash -curl -X POST https://sim.ai/api/form/your-identifier \ - -H "Content-Type: application/json" \ - -d '{ - "formData": { - "name": "John Doe", - "email": "john@example.com" - } - }' -``` - - - - -```typescript -const response = await fetch('https://sim.ai/api/form/your-identifier', { - method: 'POST', - headers: { 'Content-Type': 'application/json' }, - body: JSON.stringify({ - formData: { - name: 'John Doe', - email: 'john@example.com' - } - }) -}); - -const result = await response.json(); -// { success: true, data: { executionId: '...' } } -``` - - - - -### 受保护的表单 - -对于密码保护的表单: - -```bash -curl -X POST https://sim.ai/api/form/your-identifier \ - -H "Content-Type: application/json" \ - -d '{ "password": "secret", "formData": { "name": "John" } }' -``` - -对于邮箱保护的表单: - -```bash -curl -X POST https://sim.ai/api/form/your-identifier \ - -H "Content-Type: application/json" \ - -d '{ "email": "allowed@example.com", "formData": { "name": "John" } }' -``` - -## 故障排查 - -**“未配置输入字段”** - 请在 Start 块中添加 Input Format 字段。 - -**表单无法在 iframe 中加载** - 请检查你的网站 CSP 是否允许来自 `sim.ai` 的 iframe。 - -**提交失败** - 请确认标识符正确且所有必填项已填写。 diff --git a/apps/sim/app/(landing)/blog/[slug]/share-button.tsx b/apps/sim/app/(landing)/blog/[slug]/share-button.tsx index facde4b6c58..679c6f44c6e 100644 --- a/apps/sim/app/(landing)/blog/[slug]/share-button.tsx +++ b/apps/sim/app/(landing)/blog/[slug]/share-button.tsx @@ -8,7 +8,7 @@ import { DropdownMenuItem, DropdownMenuTrigger, } from '@/components/emcn' -import { Copy } from '@/components/emcn/icons' +import { Duplicate } from '@/components/emcn/icons' import { LinkedInIcon, xIcon as XIcon } from '@/components/icons' interface ShareButtonProps { @@ -46,21 +46,21 @@ export function ShareButton({ url, title }: ShareButtonProps) { className='flex items-center gap-1.5 text-[var(--landing-text-muted)] text-sm hover:text-[var(--landing-text)]' aria-label='Share this post' > - + Share - + {copied ? 'Copied!' : 'Copy link'} - + Share on X - + Share on LinkedIn diff --git a/apps/sim/app/(landing)/components/features/components/features-preview.tsx b/apps/sim/app/(landing)/components/features/components/features-preview.tsx index 2eab3ef253a..c3fae6f7baf 100644 --- a/apps/sim/app/(landing)/components/features/components/features-preview.tsx +++ b/apps/sim/app/(landing)/components/features/components/features-preview.tsx @@ -762,7 +762,7 @@ function MockFullLogs({ revealedRows }: { revealedRows: number }) { {['Workflow', 'Date', 'Status', 'Cost', 'Trigger', 'Duration'].map((col) => ( - {col} + {col} ))} diff --git a/apps/sim/app/(landing)/components/landing-preview/components/landing-preview-home/landing-preview-home.tsx b/apps/sim/app/(landing)/components/landing-preview/components/landing-preview-home/landing-preview-home.tsx index b6b8f7e1719..924b4b37c64 100644 --- a/apps/sim/app/(landing)/components/landing-preview/components/landing-preview-home/landing-preview-home.tsx +++ b/apps/sim/app/(landing)/components/landing-preview/components/landing-preview-home/landing-preview-home.tsx @@ -1,11 +1,10 @@ 'use client' import { memo, useCallback, useEffect, useRef, useState } from 'react' -import { AnimatePresence, domAnimation, LazyMotion, m } from 'framer-motion' +import { AnimatePresence, motion } from 'framer-motion' import { ArrowUp, Table } from 'lucide-react' import { Blimp, Checkbox, ChevronDown } from '@/components/emcn' import { TypeBoolean, TypeNumber, TypeText } from '@/components/emcn/icons' -import { handleKeyboardActivation } from '@/lib/core/utils/keyboard' import { captureClientEvent } from '@/lib/posthog/client' import { useLandingSubmit } from '@/app/(landing)/components/landing-preview/components/landing-preview-panel/landing-preview-panel' import { EASE_OUT } from '@/app/(landing)/components/landing-preview/components/landing-preview-workflow/workflow-data' @@ -178,183 +177,176 @@ export const LandingPreviewHome = memo(function LandingPreviewHome({ const showToolCall = chatPhase === 'tool-call' || isResponding return ( - -
- {/* Chat area — matches mothership-view layout */} -
-
- {/* User message — rounded bubble, right-aligned */} - -
-

- {AUTO_PROMPT} -

-
-
- - {/* Assistant — no bubble, full-width prose */} - - {showToolCall && ( - + {/* Chat area — matches mothership-view layout */} +
+
+ {/* User message — rounded bubble, right-aligned */} + +
+

+ {AUTO_PROMPT} +

+
+
+ + {/* Assistant — no bubble, full-width prose */} + + {showToolCall && ( + + {/* Agent group header — icon + label + chevron */} + - - {/* Tool call items — collapsible */} -
+ +
+ + Mothership + + -
-
- - } - title='Read Customer Leads' - /> -
+ /> + + + {/* Tool call items — collapsible */} +
+
+
+ + } + title='Read Customer Leads' + />
- - {/* Response prose — full width, no card */} - {isResponding && ( - - - - )} - - )} - -
+
+ + {/* Response prose — full width, no card */} + {isResponding && ( + + + + )} +
+ )} +
- - {/* Resource panel — slides in from right */} - - {showResourcePanel && ( - - - - )} -
- + + {/* Resource panel — slides in from right */} + + {showResourcePanel && ( + + + + )} + +
) } return ( - -
- + + What should we get done? + + + +
textareaRef.current?.focus()} > - What should we get done? - - - -
textareaRef.current?.focus()} - onKeyDown={(event) => { - if (event.target !== event.currentTarget) return - handleKeyboardActivation(event, () => textareaRef.current?.focus()) +