diff --git a/.claude/rules/constitution.md b/.claude/rules/constitution.md index 6881c060ee8..64f9e1eea8c 100644 --- a/.claude/rules/constitution.md +++ b/.claude/rules/constitution.md @@ -23,7 +23,7 @@ Sim is the **AI workspace** where teams build and run AI agents. Not a workflow | The product | "AI workspace" | "workflow tool", "automation platform", "agent framework" | | Building | "build agents", "create agents" | "create workflows" (unless describing the workflow module specifically) | | Visual builder | "workflow builder" or "visual builder" | "canvas", "graph editor" | -| Mothership | "Mothership" (capitalized) | "chat", "AI assistant", "copilot" | +| The built-in agent | "Sim" — Sim is the agent. The surface is "Chat" (capitalized) | "Mothership", "AI assistant", "copilot" | | Deployment | "deploy", "ship" | "publish", "activate" | | Audience | "teams", "builders" | "users", "customers" (in marketing copy) | | What agents do | "automate real work" | "automate tasks", "automate workflows" | @@ -50,7 +50,7 @@ When describing Sim, always lead with the most differentiated claim: | Module | One-liner | |--------|-----------| -| **Mothership** | Your AI command center. Build and manage everything in natural language. | +| **Chat** | Open Chat and ask. Sim builds and manages everything in natural language. | | **Workflows** | The visual builder. Connect blocks, models, and integrations into agent logic. | | **Knowledge Base** | Your agents' memory. Upload docs, sync sources, build vector databases. | | **Tables** | A database, built in. Store, query, and wire structured data into agent runs. | @@ -68,4 +68,4 @@ When describing Sim, always lead with the most differentiated claim: ## Vision -Sim becomes the default environment where teams build AI agents — not a tool you visit for one task, but a workspace you live in. Workflows are one module; Mothership is another. The workspace is the constant; the interface adapts. +Sim becomes the default environment where teams build AI agents — not a tool you visit for one task, but a workspace you live in. Workflows are one module; Chat is another. The workspace is the constant; the interface adapts. diff --git a/apps/docs/components/ui/try-in-chat.tsx b/apps/docs/components/ui/try-in-chat.tsx new file mode 100644 index 00000000000..a549ab19247 --- /dev/null +++ b/apps/docs/components/ui/try-in-chat.tsx @@ -0,0 +1,73 @@ +'use client' + +import { useState } from 'react' +import { Check, Copy, MessageCircle } from 'lucide-react' +import { cn } from '@/lib/utils' + +interface TryInChatProps { + prompts: string[] + /** Heading above the prompt list. Defaults to "Try in Chat". */ + title?: string +} + +function PromptRow({ prompt, isLast }: { prompt: string; isLast: boolean }) { + const [copied, setCopied] = useState(false) + + const copy = async () => { + try { + await navigator.clipboard.writeText(prompt) + setCopied(true) + setTimeout(() => setCopied(false), 1500) + } catch { + // Clipboard unavailable (e.g. insecure context) — the text is still selectable. + } + } + + return ( + + ) +} + +/** + * A list of copyable prompts the reader can paste into Chat, teaching the + * prompting patterns for the surrounding page's topic. Click a row to copy. + * + * @example + * + */ +export function TryInChat({ prompts, title = 'Try in Chat' }: TryInChatProps) { + return ( +
+
+ + + {title} + +
+
+ {prompts.map((prompt, index) => ( + + ))} +
+
+ ) +} diff --git a/apps/docs/content/docs/en/.source/browser.ts b/apps/docs/content/docs/en/.source/browser.ts new file mode 100644 index 00000000000..858d535642e --- /dev/null +++ b/apps/docs/content/docs/en/.source/browser.ts @@ -0,0 +1,24 @@ +// @ts-nocheck +/// +import { browser } from 'fumadocs-mdx/runtime/browser' +import type * as Config from '../source.config' + +const create = browser< + typeof Config, + import('fumadocs-mdx/runtime/types').InternalTypeConfig & { + DocData: {} + } +>() +const browserCollections = { + docs: create.doc( + 'docs', + import.meta.glob(['./**/*.{mdx,md}'], { + base: './../content/docs', + query: { + collection: 'docs', + }, + eager: false, + }) + ), +} +export default browserCollections diff --git a/apps/docs/content/docs/en/.source/dynamic.ts b/apps/docs/content/docs/en/.source/dynamic.ts new file mode 100644 index 00000000000..0bec4e5d379 --- /dev/null +++ b/apps/docs/content/docs/en/.source/dynamic.ts @@ -0,0 +1,15 @@ +// @ts-nocheck +/// +import { dynamic } from 'fumadocs-mdx/runtime/dynamic' +import * as Config from '../source.config' + +const create = await dynamic< + typeof Config, + import('fumadocs-mdx/runtime/types').InternalTypeConfig & { + DocData: {} + } +>( + Config, + { configPath: 'source.config.ts', environment: 'vite', outDir: '.source' }, + { doc: { passthroughs: ['extractedReferences'] } } +) diff --git a/apps/docs/content/docs/en/.source/server.ts b/apps/docs/content/docs/en/.source/server.ts new file mode 100644 index 00000000000..94fc2698d8a --- /dev/null +++ b/apps/docs/content/docs/en/.source/server.ts @@ -0,0 +1,31 @@ +// @ts-nocheck +/// +import { server } from 'fumadocs-mdx/runtime/server' +import type * as Config from '../source.config' + +const create = server< + typeof Config, + import('fumadocs-mdx/runtime/types').InternalTypeConfig & { + DocData: {} + } +>({ doc: { passthroughs: ['extractedReferences'] } }) + +export const docs = await create.docs( + 'docs', + 'content/docs', + import.meta.glob(['./**/*.{json,yaml}'], { + base: './../content/docs', + query: { + collection: 'docs', + }, + import: 'default', + eager: true, + }), + import.meta.glob(['./**/*.{mdx,md}'], { + base: './../content/docs', + query: { + collection: 'docs', + }, + eager: true, + }) +) diff --git a/apps/docs/content/docs/en/.source/source.config.mjs b/apps/docs/content/docs/en/.source/source.config.mjs new file mode 100644 index 00000000000..2e49033207e --- /dev/null +++ b/apps/docs/content/docs/en/.source/source.config.mjs @@ -0,0 +1,19 @@ +// ../../../source.config.ts +import { defineConfig, defineDocs, frontmatterSchema } from "fumadocs-mdx/config"; +import { z } from "zod"; +var docs = defineDocs({ + dir: "content/docs", + docs: { + schema: frontmatterSchema.extend({ + pageType: z.enum(["tutorial", "guide", "reference", "concept"]).optional() + }), + postprocess: { + includeProcessedMarkdown: true + } + } +}); +var source_config_default = defineConfig(); +export { + source_config_default as default, + docs +}; diff --git a/apps/docs/content/docs/en/agents/index.mdx b/apps/docs/content/docs/en/agents/index.mdx index 73069186092..38509305925 100644 --- a/apps/docs/content/docs/en/agents/index.mdx +++ b/apps/docs/content/docs/en/agents/index.mdx @@ -51,7 +51,7 @@ To let an agent answer from your own content, connect a [knowledge base](/knowle ### Remember across runs: memory -To let an agent reuse information from one run to the next, give it [memory](/integrations/memory), which stores and recalls values keyed to a conversation. Without it, each run starts fresh; with it, an agent in a chat carries what was said earlier into later messages. +To let an agent reuse information from one run to the next, give it [memory](/integrations/memory), which stores and recalls values keyed to a conversation. Without it, each run starts fresh; with it, an agent [deployed as a chat](/workflows/deployment/chat) carries what was said earlier into later messages. ### Return a usable result: structured output @@ -59,7 +59,7 @@ To make an agent's result something later blocks can act on, give it a **structu ## Choosing what to use -Start with one Agent block and a prompt, then add only what the task needs: a tool when the agent should act, a skill when it needs written guidance, a knowledge base when it should answer from your documents, memory when it should remember, and a structured output when a later block has to read its result. +Start with one Agent block and a prompt, then add only what the task needs: a tool when the agent should act, a skill when it needs written guidance, a knowledge base when it should answer from your documents, memory when it should remember, and a structured output when a later block has to read its result. An agent ships like any workflow — [deploy it](/workflows/deployment) as an API, a chat, or an MCP server. diff --git a/apps/docs/content/docs/en/chat/index.mdx b/apps/docs/content/docs/en/chat/index.mdx new file mode 100644 index 00000000000..08623a0782b --- /dev/null +++ b/apps/docs/content/docs/en/chat/index.mdx @@ -0,0 +1,100 @@ +--- +title: Chat +description: Open Chat and ask. Sim builds workflows, manages data, runs research, and takes action across your workspace. +pageType: concept +--- + +import { Image } from '@/components/ui/image' +import { Video } from '@/components/ui/video' +import { FAQ } from '@/components/ui/faq' +import { TryInChat } from '@/components/ui/try-in-chat' + +