mirror of
https://github.com/simstudioai/sim.git
synced 2026-01-10 23:48:09 -05:00
Compare commits
15 Commits
feat/zapie
...
v0.5.20
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
ebef5f3a27 | ||
|
|
12c4c2d44f | ||
|
|
929a352edb | ||
|
|
6cd078b0fe | ||
|
|
31874939ee | ||
|
|
e157ce5fbc | ||
|
|
774e5d585c | ||
|
|
54cc93743f | ||
|
|
8c32ad4c0d | ||
|
|
1d08796853 | ||
|
|
ebcd243942 | ||
|
|
b7e814b721 | ||
|
|
842ef27ed9 | ||
|
|
31c34b2ea3 | ||
|
|
8f0ef58056 |
70
README.md
70
README.md
@@ -89,36 +89,6 @@ Wait for the model to download, then visit [http://localhost:3000](http://localh
|
||||
docker compose -f docker-compose.ollama.yml exec ollama ollama pull llama3.1:8b
|
||||
```
|
||||
|
||||
#### Using an External Ollama Instance
|
||||
|
||||
If you already have Ollama running on your host machine (outside Docker), you need to configure the `OLLAMA_URL` to use `host.docker.internal` instead of `localhost`:
|
||||
|
||||
```bash
|
||||
# Docker Desktop (macOS/Windows)
|
||||
OLLAMA_URL=http://host.docker.internal:11434 docker compose -f docker-compose.prod.yml up -d
|
||||
|
||||
# Linux (add extra_hosts or use host IP)
|
||||
docker compose -f docker-compose.prod.yml up -d # Then set OLLAMA_URL to your host's IP
|
||||
```
|
||||
|
||||
**Why?** When running inside Docker, `localhost` refers to the container itself, not your host machine. `host.docker.internal` is a special DNS name that resolves to the host.
|
||||
|
||||
For Linux users, you can either:
|
||||
- Use your host machine's actual IP address (e.g., `http://192.168.1.100:11434`)
|
||||
- Add `extra_hosts: ["host.docker.internal:host-gateway"]` to the simstudio service in your compose file
|
||||
|
||||
#### Using vLLM
|
||||
|
||||
Sim also supports [vLLM](https://docs.vllm.ai/) for self-hosted models with OpenAI-compatible API:
|
||||
|
||||
```bash
|
||||
# Set these environment variables
|
||||
VLLM_BASE_URL=http://your-vllm-server:8000
|
||||
VLLM_API_KEY=your_optional_api_key # Only if your vLLM instance requires auth
|
||||
```
|
||||
|
||||
When running with Docker, use `host.docker.internal` if vLLM is on your host machine (same as Ollama above).
|
||||
|
||||
### Self-hosted: Dev Containers
|
||||
|
||||
1. Open VS Code with the [Remote - Containers extension](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-containers)
|
||||
@@ -220,46 +190,6 @@ Copilot is a Sim-managed service. To use Copilot on a self-hosted instance:
|
||||
- Go to https://sim.ai → Settings → Copilot and generate a Copilot API key
|
||||
- Set `COPILOT_API_KEY` environment variable in your self-hosted apps/sim/.env file to that value
|
||||
|
||||
## Environment Variables
|
||||
|
||||
Key environment variables for self-hosted deployments (see `apps/sim/.env.example` for full list):
|
||||
|
||||
| Variable | Required | Description |
|
||||
|----------|----------|-------------|
|
||||
| `DATABASE_URL` | Yes | PostgreSQL connection string with pgvector |
|
||||
| `BETTER_AUTH_SECRET` | Yes | Auth secret (`openssl rand -hex 32`) |
|
||||
| `BETTER_AUTH_URL` | Yes | Your app URL (e.g., `http://localhost:3000`) |
|
||||
| `NEXT_PUBLIC_APP_URL` | Yes | Public app URL (same as above) |
|
||||
| `ENCRYPTION_KEY` | Yes | Encryption key (`openssl rand -hex 32`) |
|
||||
| `OLLAMA_URL` | No | Ollama server URL (default: `http://localhost:11434`) |
|
||||
| `VLLM_BASE_URL` | No | vLLM server URL for self-hosted models |
|
||||
| `COPILOT_API_KEY` | No | API key from sim.ai for Copilot features |
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### Ollama models not showing in dropdown (Docker)
|
||||
|
||||
If you're running Ollama on your host machine and Sim in Docker, change `OLLAMA_URL` from `localhost` to `host.docker.internal`:
|
||||
|
||||
```bash
|
||||
OLLAMA_URL=http://host.docker.internal:11434 docker compose -f docker-compose.prod.yml up -d
|
||||
```
|
||||
|
||||
See [Using an External Ollama Instance](#using-an-external-ollama-instance) for details.
|
||||
|
||||
### Database connection issues
|
||||
|
||||
Ensure PostgreSQL has the pgvector extension installed. When using Docker, wait for the database to be healthy before running migrations.
|
||||
|
||||
### Port conflicts
|
||||
|
||||
If ports 3000, 3002, or 5432 are in use, configure alternatives:
|
||||
|
||||
```bash
|
||||
# Custom ports
|
||||
NEXT_PUBLIC_APP_URL=http://localhost:3100 POSTGRES_PORT=5433 docker compose up -d
|
||||
```
|
||||
|
||||
## Tech Stack
|
||||
|
||||
- **Framework**: [Next.js](https://nextjs.org/) (App Router)
|
||||
|
||||
@@ -182,11 +182,7 @@ export default async function Page(props: { params: Promise<{ slug?: string[]; l
|
||||
tableOfContent={{
|
||||
style: 'clerk',
|
||||
enabled: true,
|
||||
header: (
|
||||
<div key='toc-header' className='mb-2 font-medium text-sm'>
|
||||
On this page
|
||||
</div>
|
||||
),
|
||||
header: <div className='mb-2 font-medium text-sm'>On this page</div>,
|
||||
footer: <TOCFooter />,
|
||||
single: false,
|
||||
}}
|
||||
|
||||
@@ -101,6 +101,9 @@ export default async function Layout({ children, params }: LayoutProps) {
|
||||
<Navbar />
|
||||
<DocsLayout
|
||||
tree={source.pageTree[lang]}
|
||||
themeSwitch={{
|
||||
enabled: false,
|
||||
}}
|
||||
nav={{
|
||||
title: (
|
||||
<Image
|
||||
@@ -125,7 +128,7 @@ export default async function Layout({ children, params }: LayoutProps) {
|
||||
},
|
||||
}}
|
||||
containerProps={{
|
||||
className: '!pt-0',
|
||||
className: '!pt-10',
|
||||
}}
|
||||
>
|
||||
{children}
|
||||
|
||||
@@ -96,48 +96,45 @@ aside#nd-sidebar {
|
||||
border-right: none !important;
|
||||
}
|
||||
|
||||
/* Fumadocs v16: Add sidebar placeholder styling for grid area */
|
||||
[data-sidebar-placeholder] {
|
||||
background: transparent !important;
|
||||
}
|
||||
|
||||
/* Fumadocs v16: Hide sidebar panel (floating collapse button) */
|
||||
[data-sidebar-panel] {
|
||||
display: none !important;
|
||||
}
|
||||
|
||||
/* Mobile only: Reduce gap between navbar and content */
|
||||
@media (max-width: 1023px) {
|
||||
#nd-docs-layout {
|
||||
margin-top: -25px;
|
||||
/* Responsive sidebar positioning */
|
||||
/* Mobile: Fumadocs handles drawer */
|
||||
@media (min-width: 768px) and (max-width: 1024px) {
|
||||
aside[data-sidebar],
|
||||
aside#nd-sidebar {
|
||||
left: var(--sidebar-offset) !important;
|
||||
}
|
||||
}
|
||||
|
||||
/* Desktop only: Apply custom navbar offset, sidebar width and margin offsets */
|
||||
/* On mobile, let fumadocs handle the layout natively */
|
||||
@media (min-width: 1024px) {
|
||||
:root {
|
||||
--fd-banner-height: 64px !important;
|
||||
}
|
||||
|
||||
#nd-docs-layout {
|
||||
--fd-docs-height: calc(100dvh - 64px) !important;
|
||||
--fd-sidebar-width: 300px !important;
|
||||
/* Desktop layout alignment */
|
||||
@media (min-width: 1025px) {
|
||||
[data-sidebar-container] {
|
||||
margin-left: var(--sidebar-offset) !important;
|
||||
margin-right: var(--toc-offset) !important;
|
||||
}
|
||||
aside[data-sidebar],
|
||||
aside#nd-sidebar {
|
||||
left: var(--sidebar-offset) !important;
|
||||
}
|
||||
/* TOC positioning - target all possible selectors */
|
||||
[data-toc],
|
||||
aside[data-toc],
|
||||
div[data-toc],
|
||||
.fd-toc,
|
||||
#nd-toc,
|
||||
nav[data-toc],
|
||||
aside:has([role="complementary"]) {
|
||||
right: var(--toc-offset) !important;
|
||||
}
|
||||
|
||||
/* Hide fumadocs nav on desktop - we use custom navbar there */
|
||||
#nd-docs-layout > header {
|
||||
display: none !important;
|
||||
/* Alternative TOC container targeting */
|
||||
[data-docs-page] > aside:last-child,
|
||||
main ~ aside {
|
||||
right: var(--toc-offset) !important;
|
||||
}
|
||||
}
|
||||
|
||||
/* Sidebar spacing - compact like turborepo */
|
||||
/* Fumadocs v16: [data-sidebar-viewport] doesn't exist, target #nd-sidebar > div instead */
|
||||
[data-sidebar-viewport],
|
||||
#nd-sidebar > div {
|
||||
padding: 0.5rem 12px 12px;
|
||||
[data-sidebar-viewport] {
|
||||
padding: 0.5rem 20px 12px;
|
||||
background: transparent !important;
|
||||
background-color: transparent !important;
|
||||
}
|
||||
@@ -145,9 +142,8 @@ aside#nd-sidebar {
|
||||
/* Override sidebar item styling to match Raindrop */
|
||||
/* Target Link and button elements in sidebar - override Fumadocs itemVariants */
|
||||
/* Exclude the small chevron-only toggle buttons */
|
||||
/* Using html prefix for higher specificity over Tailwind v4 utilities */
|
||||
html #nd-sidebar a,
|
||||
html #nd-sidebar button:not([aria-label*="ollapse"]):not([aria-label*="xpand"]) {
|
||||
#nd-sidebar a,
|
||||
#nd-sidebar button:not([aria-label*="ollapse"]):not([aria-label*="xpand"]) {
|
||||
font-size: 0.9375rem !important; /* 15px to match Raindrop */
|
||||
line-height: 1.4 !important;
|
||||
padding: 0.5rem 0.75rem !important; /* More compact like Raindrop */
|
||||
@@ -158,14 +154,14 @@ html #nd-sidebar button:not([aria-label*="ollapse"]):not([aria-label*="xpand"])
|
||||
}
|
||||
|
||||
/* Dark mode sidebar text */
|
||||
html.dark #nd-sidebar a,
|
||||
html.dark #nd-sidebar button:not([aria-label*="ollapse"]):not([aria-label*="xpand"]) {
|
||||
.dark #nd-sidebar a,
|
||||
.dark #nd-sidebar button:not([aria-label*="ollapse"]):not([aria-label*="xpand"]) {
|
||||
color: rgba(255, 255, 255, 0.6) !important;
|
||||
}
|
||||
|
||||
/* Light mode sidebar text */
|
||||
html:not(.dark) #nd-sidebar a,
|
||||
html:not(.dark) #nd-sidebar button:not([aria-label*="ollapse"]):not([aria-label*="xpand"]) {
|
||||
:root:not(.dark) #nd-sidebar a,
|
||||
:root:not(.dark) #nd-sidebar button:not([aria-label*="ollapse"]):not([aria-label*="xpand"]) {
|
||||
color: rgba(0, 0, 0, 0.6) !important;
|
||||
}
|
||||
|
||||
@@ -198,10 +194,7 @@ html:not(.dark) #nd-sidebar button:not([aria-label*="ollapse"]):not([aria-label*
|
||||
}
|
||||
|
||||
/* Section headers should be slightly larger */
|
||||
/* Fumadocs v16: Also target #nd-sidebar for compatibility */
|
||||
[data-sidebar-viewport] [data-separator],
|
||||
#nd-sidebar [data-separator],
|
||||
#nd-sidebar p {
|
||||
[data-sidebar-viewport] [data-separator] {
|
||||
font-size: 0.75rem !important;
|
||||
font-weight: 600 !important;
|
||||
text-transform: uppercase !important;
|
||||
@@ -225,61 +218,61 @@ html:not(.dark) #nd-sidebar button:not([aria-label*="ollapse"]):not([aria-label*
|
||||
}
|
||||
|
||||
/* Dark mode active state */
|
||||
html.dark #nd-sidebar a[data-active="true"],
|
||||
html.dark #nd-sidebar button[data-active="true"],
|
||||
html.dark #nd-sidebar a.bg-fd-primary\/10,
|
||||
html.dark #nd-sidebar a.text-fd-primary,
|
||||
html.dark #nd-sidebar a[class*="bg-fd-primary"],
|
||||
html.dark #nd-sidebar a[class*="text-fd-primary"],
|
||||
html.dark #nd-sidebar a.bg-purple-50\/80,
|
||||
html.dark #nd-sidebar a.text-purple-600,
|
||||
html.dark #nd-sidebar a[class*="bg-purple"],
|
||||
html.dark #nd-sidebar a[class*="text-purple"] {
|
||||
.dark #nd-sidebar a[data-active="true"],
|
||||
.dark #nd-sidebar button[data-active="true"],
|
||||
.dark #nd-sidebar a.bg-fd-primary\/10,
|
||||
.dark #nd-sidebar a.text-fd-primary,
|
||||
.dark #nd-sidebar a[class*="bg-fd-primary"],
|
||||
.dark #nd-sidebar a[class*="text-fd-primary"],
|
||||
.dark #nd-sidebar a.bg-purple-50\/80,
|
||||
.dark #nd-sidebar a.text-purple-600,
|
||||
.dark #nd-sidebar a[class*="bg-purple"],
|
||||
.dark #nd-sidebar a[class*="text-purple"] {
|
||||
background-color: rgba(255, 255, 255, 0.15) !important;
|
||||
color: rgba(255, 255, 255, 1) !important;
|
||||
}
|
||||
|
||||
/* Light mode active state */
|
||||
html:not(.dark) #nd-sidebar a[data-active="true"],
|
||||
html:not(.dark) #nd-sidebar button[data-active="true"],
|
||||
html:not(.dark) #nd-sidebar a.bg-fd-primary\/10,
|
||||
html:not(.dark) #nd-sidebar a.text-fd-primary,
|
||||
html:not(.dark) #nd-sidebar a[class*="bg-fd-primary"],
|
||||
html:not(.dark) #nd-sidebar a[class*="text-fd-primary"],
|
||||
html:not(.dark) #nd-sidebar a.bg-purple-50\/80,
|
||||
html:not(.dark) #nd-sidebar a.text-purple-600,
|
||||
html:not(.dark) #nd-sidebar a[class*="bg-purple"],
|
||||
html:not(.dark) #nd-sidebar a[class*="text-purple"] {
|
||||
:root:not(.dark) #nd-sidebar a[data-active="true"],
|
||||
:root:not(.dark) #nd-sidebar button[data-active="true"],
|
||||
:root:not(.dark) #nd-sidebar a.bg-fd-primary\/10,
|
||||
:root:not(.dark) #nd-sidebar a.text-fd-primary,
|
||||
:root:not(.dark) #nd-sidebar a[class*="bg-fd-primary"],
|
||||
:root:not(.dark) #nd-sidebar a[class*="text-fd-primary"],
|
||||
:root:not(.dark) #nd-sidebar a.bg-purple-50\/80,
|
||||
:root:not(.dark) #nd-sidebar a.text-purple-600,
|
||||
:root:not(.dark) #nd-sidebar a[class*="bg-purple"],
|
||||
:root:not(.dark) #nd-sidebar a[class*="text-purple"] {
|
||||
background-color: rgba(0, 0, 0, 0.07) !important;
|
||||
color: rgba(0, 0, 0, 0.9) !important;
|
||||
}
|
||||
|
||||
/* Dark mode hover state */
|
||||
html.dark #nd-sidebar a:hover:not([data-active="true"]),
|
||||
html.dark #nd-sidebar button:hover:not([data-active="true"]) {
|
||||
.dark #nd-sidebar a:hover:not([data-active="true"]),
|
||||
.dark #nd-sidebar button:hover:not([data-active="true"]) {
|
||||
background-color: rgba(255, 255, 255, 0.08) !important;
|
||||
}
|
||||
|
||||
/* Light mode hover state */
|
||||
html:not(.dark) #nd-sidebar a:hover:not([data-active="true"]),
|
||||
html:not(.dark) #nd-sidebar button:hover:not([data-active="true"]) {
|
||||
:root:not(.dark) #nd-sidebar a:hover:not([data-active="true"]),
|
||||
:root:not(.dark) #nd-sidebar button:hover:not([data-active="true"]) {
|
||||
background-color: rgba(0, 0, 0, 0.03) !important;
|
||||
}
|
||||
|
||||
/* Dark mode - ensure active/selected items don't change on hover */
|
||||
html.dark #nd-sidebar a.bg-purple-50\/80:hover,
|
||||
html.dark #nd-sidebar a[class*="bg-purple"]:hover,
|
||||
html.dark #nd-sidebar a[data-active="true"]:hover,
|
||||
html.dark #nd-sidebar button[data-active="true"]:hover {
|
||||
.dark #nd-sidebar a.bg-purple-50\/80:hover,
|
||||
.dark #nd-sidebar a[class*="bg-purple"]:hover,
|
||||
.dark #nd-sidebar a[data-active="true"]:hover,
|
||||
.dark #nd-sidebar button[data-active="true"]:hover {
|
||||
background-color: rgba(255, 255, 255, 0.15) !important;
|
||||
color: rgba(255, 255, 255, 1) !important;
|
||||
}
|
||||
|
||||
/* Light mode - ensure active/selected items don't change on hover */
|
||||
html:not(.dark) #nd-sidebar a.bg-purple-50\/80:hover,
|
||||
html:not(.dark) #nd-sidebar a[class*="bg-purple"]:hover,
|
||||
html:not(.dark) #nd-sidebar a[data-active="true"]:hover,
|
||||
html:not(.dark) #nd-sidebar button[data-active="true"]:hover {
|
||||
:root:not(.dark) #nd-sidebar a.bg-purple-50\/80:hover,
|
||||
:root:not(.dark) #nd-sidebar a[class*="bg-purple"]:hover,
|
||||
:root:not(.dark) #nd-sidebar a[data-active="true"]:hover,
|
||||
:root:not(.dark) #nd-sidebar button[data-active="true"]:hover {
|
||||
background-color: rgba(0, 0, 0, 0.07) !important;
|
||||
color: rgba(0, 0, 0, 0.9) !important;
|
||||
}
|
||||
@@ -358,16 +351,7 @@ aside[data-sidebar] > *:not([data-sidebar-viewport]) {
|
||||
[data-sidebar] [data-title],
|
||||
#nd-sidebar > a:first-child,
|
||||
#nd-sidebar > div:first-child > a:first-child,
|
||||
#nd-sidebar img[alt="Sim"],
|
||||
/* Hide theme toggle at bottom of sidebar on desktop */
|
||||
#nd-sidebar
|
||||
> footer,
|
||||
#nd-sidebar footer,
|
||||
aside#nd-sidebar > *:last-child:not(div),
|
||||
#nd-sidebar > button:last-child,
|
||||
#nd-sidebar button[aria-label*="theme" i],
|
||||
#nd-sidebar button[aria-label*="Theme"],
|
||||
#nd-sidebar > div:last-child > button {
|
||||
#nd-sidebar img[alt="Sim"] {
|
||||
display: none !important;
|
||||
visibility: hidden !important;
|
||||
height: 0 !important;
|
||||
@@ -514,14 +498,13 @@ main article,
|
||||
============================================ */
|
||||
|
||||
/* Main content area - center and constrain like turborepo/raindrop */
|
||||
/* Note: --sidebar-offset and --toc-offset are now applied at #nd-docs-layout level */
|
||||
main[data-main] {
|
||||
max-width: var(--spacing-fd-container, 1400px);
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
padding-top: 1rem;
|
||||
padding-left: var(--content-gap);
|
||||
padding-right: var(--content-gap);
|
||||
padding-left: calc(var(--sidebar-offset) + var(--content-gap));
|
||||
padding-right: calc(var(--toc-offset) + var(--content-gap));
|
||||
order: 1 !important;
|
||||
}
|
||||
|
||||
|
||||
@@ -7,23 +7,8 @@ import Link from 'next/link'
|
||||
import { usePathname } from 'next/navigation'
|
||||
import { cn } from '@/lib/utils'
|
||||
|
||||
const LANG_PREFIXES = ['/en', '/es', '/fr', '/de', '/ja', '/zh']
|
||||
|
||||
function stripLangPrefix(path: string): string {
|
||||
for (const prefix of LANG_PREFIXES) {
|
||||
if (path === prefix) return '/'
|
||||
if (path.startsWith(`${prefix}/`)) return path.slice(prefix.length)
|
||||
}
|
||||
return path
|
||||
}
|
||||
|
||||
function isActive(url: string, pathname: string, nested = true): boolean {
|
||||
const normalizedPathname = stripLangPrefix(pathname)
|
||||
const normalizedUrl = stripLangPrefix(url)
|
||||
return (
|
||||
normalizedUrl === normalizedPathname ||
|
||||
(nested && normalizedPathname.startsWith(`${normalizedUrl}/`))
|
||||
)
|
||||
return url === pathname || (nested && pathname.startsWith(`${url}/`))
|
||||
}
|
||||
|
||||
export function SidebarItem({ item }: { item: Item }) {
|
||||
@@ -31,158 +16,97 @@ export function SidebarItem({ item }: { item: Item }) {
|
||||
const active = isActive(item.url, pathname, false)
|
||||
|
||||
return (
|
||||
<Link
|
||||
href={item.url}
|
||||
data-active={active}
|
||||
className={cn(
|
||||
// Mobile styles (default)
|
||||
'flex w-full items-center gap-2 rounded-md px-2 py-1.5 text-sm transition-colors',
|
||||
'text-fd-muted-foreground hover:bg-fd-accent/50 hover:text-fd-accent-foreground',
|
||||
active && 'bg-fd-primary/10 font-medium text-fd-primary',
|
||||
// Desktop styles (lg+)
|
||||
'lg:mb-[0.0625rem] lg:block lg:rounded-md lg:px-2.5 lg:py-1.5 lg:font-normal lg:text-[13px] lg:leading-tight',
|
||||
'lg:text-gray-600 lg:dark:text-gray-400',
|
||||
!active && 'lg:hover:bg-gray-100/60 lg:dark:hover:bg-gray-800/40',
|
||||
active &&
|
||||
'lg:bg-purple-50/80 lg:font-normal lg:text-purple-600 lg:dark:bg-purple-900/15 lg:dark:text-purple-400'
|
||||
)}
|
||||
>
|
||||
{item.name}
|
||||
</Link>
|
||||
<li className='mb-[0.0625rem] list-none'>
|
||||
<Link
|
||||
href={item.url}
|
||||
className={cn(
|
||||
'block rounded-md px-2.5 py-1.5 font-normal text-[13px] leading-tight transition-colors',
|
||||
'text-gray-600 dark:text-gray-400',
|
||||
!active && 'hover:bg-gray-100/60 dark:hover:bg-gray-800/40',
|
||||
active &&
|
||||
'bg-purple-50/80 font-medium text-purple-600 dark:bg-purple-900/15 dark:text-purple-400'
|
||||
)}
|
||||
>
|
||||
{item.name}
|
||||
</Link>
|
||||
</li>
|
||||
)
|
||||
}
|
||||
|
||||
export function SidebarFolder({ item, children }: { item: Folder; children: ReactNode }) {
|
||||
const pathname = usePathname()
|
||||
const hasActiveChild = checkHasActiveChild(item, pathname)
|
||||
const hasChildren = item.children.length > 0
|
||||
const [open, setOpen] = useState(hasActiveChild)
|
||||
|
||||
useEffect(() => {
|
||||
setOpen(hasActiveChild)
|
||||
}, [hasActiveChild])
|
||||
|
||||
const active = item.index ? isActive(item.index.url, pathname, false) : false
|
||||
|
||||
if (item.index && !hasChildren) {
|
||||
return (
|
||||
<Link
|
||||
href={item.index.url}
|
||||
data-active={active}
|
||||
className={cn(
|
||||
// Mobile styles (default)
|
||||
'flex w-full items-center gap-2 rounded-md px-2 py-1.5 text-sm transition-colors',
|
||||
'text-fd-muted-foreground hover:bg-fd-accent/50 hover:text-fd-accent-foreground',
|
||||
active && 'bg-fd-primary/10 font-medium text-fd-primary',
|
||||
// Desktop styles (lg+)
|
||||
'lg:mb-[0.0625rem] lg:block lg:rounded-md lg:px-2.5 lg:py-1.5 lg:font-normal lg:text-[13px] lg:leading-tight',
|
||||
'lg:text-gray-600 lg:dark:text-gray-400',
|
||||
!active && 'lg:hover:bg-gray-100/60 lg:dark:hover:bg-gray-800/40',
|
||||
active &&
|
||||
'lg:bg-purple-50/80 lg:font-normal lg:text-purple-600 lg:dark:bg-purple-900/15 lg:dark:text-purple-400'
|
||||
)}
|
||||
>
|
||||
{item.name}
|
||||
</Link>
|
||||
)
|
||||
}
|
||||
|
||||
return (
|
||||
<div className='flex flex-col lg:mb-[0.0625rem]'>
|
||||
<div className='flex w-full items-center lg:gap-0.5'>
|
||||
{item.index ? (
|
||||
<li className='mb-[0.0625rem] list-none'>
|
||||
{item.index ? (
|
||||
<div className='flex items-center gap-0.5'>
|
||||
<Link
|
||||
href={item.index.url}
|
||||
data-active={active}
|
||||
className={cn(
|
||||
// Mobile styles (default)
|
||||
'flex flex-1 items-center gap-2 rounded-md px-2 py-1.5 text-sm transition-colors',
|
||||
'text-fd-muted-foreground hover:bg-fd-accent/50 hover:text-fd-accent-foreground',
|
||||
active && 'bg-fd-primary/10 font-medium text-fd-primary',
|
||||
// Desktop styles (lg+)
|
||||
'lg:block lg:flex-1 lg:rounded-md lg:px-2.5 lg:py-1.5 lg:font-medium lg:text-[13px] lg:leading-tight',
|
||||
'lg:text-gray-800 lg:dark:text-gray-200',
|
||||
!active && 'lg:hover:bg-gray-100/60 lg:dark:hover:bg-gray-800/40',
|
||||
active &&
|
||||
'lg:bg-purple-50/80 lg:text-purple-600 lg:dark:bg-purple-900/15 lg:dark:text-purple-400'
|
||||
'block flex-1 rounded-md px-2.5 py-1.5 font-medium text-[13px] leading-tight transition-colors',
|
||||
'text-gray-800 dark:text-gray-200',
|
||||
!isActive(item.index.url, pathname, false) &&
|
||||
'hover:bg-gray-100/60 dark:hover:bg-gray-800/40',
|
||||
isActive(item.index.url, pathname, false) &&
|
||||
'bg-purple-50/80 text-purple-600 dark:bg-purple-900/15 dark:text-purple-400'
|
||||
)}
|
||||
>
|
||||
{item.name}
|
||||
</Link>
|
||||
) : (
|
||||
<button
|
||||
onClick={() => setOpen(!open)}
|
||||
className={cn(
|
||||
// Mobile styles (default)
|
||||
'flex flex-1 items-center gap-2 rounded-md px-2 py-1.5 text-sm transition-colors',
|
||||
'text-fd-muted-foreground hover:bg-fd-accent/50',
|
||||
// Desktop styles (lg+)
|
||||
'lg:flex lg:w-full lg:cursor-pointer lg:items-center lg:justify-between lg:rounded-md lg:px-2.5 lg:py-1.5 lg:text-left lg:font-medium lg:text-[13px] lg:leading-tight',
|
||||
'lg:text-gray-800 lg:hover:bg-gray-100/60 lg:dark:text-gray-200 lg:dark:hover:bg-gray-800/40'
|
||||
)}
|
||||
>
|
||||
<span>{item.name}</span>
|
||||
{/* Desktop-only chevron for non-index folders */}
|
||||
<ChevronRight
|
||||
className={cn(
|
||||
'ml-auto hidden h-3 w-3 flex-shrink-0 text-gray-400 transition-transform duration-200 ease-in-out lg:block dark:text-gray-500',
|
||||
open && 'rotate-90'
|
||||
)}
|
||||
/>
|
||||
</button>
|
||||
)}
|
||||
{hasChildren && (
|
||||
<button
|
||||
onClick={() => setOpen(!open)}
|
||||
className={cn(
|
||||
// Mobile styles
|
||||
'rounded p-1 hover:bg-fd-accent/50',
|
||||
// Desktop styles
|
||||
'lg:cursor-pointer lg:rounded lg:p-1 lg:transition-colors lg:hover:bg-gray-100/60 lg:dark:hover:bg-gray-800/40'
|
||||
)}
|
||||
className='cursor-pointer rounded p-1 transition-colors hover:bg-gray-100/60 dark:hover:bg-gray-800/40'
|
||||
aria-label={open ? 'Collapse' : 'Expand'}
|
||||
>
|
||||
<ChevronRight
|
||||
className={cn(
|
||||
// Mobile styles
|
||||
'h-4 w-4 transition-transform',
|
||||
// Desktop styles
|
||||
'lg:h-3 lg:w-3 lg:text-gray-400 lg:duration-200 lg:ease-in-out lg:dark:text-gray-500',
|
||||
'h-3 w-3 text-gray-400 transition-transform duration-200 ease-in-out dark:text-gray-500',
|
||||
open && 'rotate-90'
|
||||
)}
|
||||
/>
|
||||
</button>
|
||||
)}
|
||||
</div>
|
||||
{hasChildren && (
|
||||
<div
|
||||
</div>
|
||||
) : (
|
||||
<button
|
||||
onClick={() => setOpen(!open)}
|
||||
className={cn(
|
||||
'overflow-hidden transition-all duration-200 ease-in-out',
|
||||
open ? 'max-h-[10000px] opacity-100' : 'max-h-0 opacity-0'
|
||||
'flex w-full cursor-pointer items-center justify-between rounded-md px-2.5 py-1.5 text-left font-medium text-[13px] leading-tight transition-colors',
|
||||
'hover:bg-gray-100/60 dark:hover:bg-gray-800/40',
|
||||
'text-gray-800 dark:text-gray-200'
|
||||
)}
|
||||
>
|
||||
{/* Mobile: simple indent */}
|
||||
<div className='ml-4 flex flex-col gap-0.5 lg:hidden'>{children}</div>
|
||||
{/* Desktop: styled with border */}
|
||||
<ul className='mt-0.5 ml-2 hidden space-y-[0.0625rem] border-gray-200/60 border-l pl-2.5 lg:block dark:border-gray-700/60'>
|
||||
{children}
|
||||
</ul>
|
||||
</div>
|
||||
<span>{item.name}</span>
|
||||
<ChevronRight
|
||||
className={cn(
|
||||
'ml-auto h-3 w-3 flex-shrink-0 text-gray-400 transition-transform duration-200 ease-in-out dark:text-gray-500',
|
||||
open && 'rotate-90'
|
||||
)}
|
||||
/>
|
||||
</button>
|
||||
)}
|
||||
</div>
|
||||
<div
|
||||
className={cn(
|
||||
'overflow-hidden transition-all duration-200 ease-in-out',
|
||||
open ? 'max-h-[10000px] opacity-100' : 'max-h-0 opacity-0'
|
||||
)}
|
||||
>
|
||||
<ul className='mt-0.5 ml-2 space-y-[0.0625rem] border-gray-200/60 border-l pl-2.5 dark:border-gray-700/60'>
|
||||
{children}
|
||||
</ul>
|
||||
</div>
|
||||
</li>
|
||||
)
|
||||
}
|
||||
|
||||
export function SidebarSeparator({ item }: { item: Separator }) {
|
||||
return (
|
||||
<p
|
||||
className={cn(
|
||||
// Mobile styles
|
||||
'mt-4 mb-2 px-2 font-medium text-fd-muted-foreground text-xs',
|
||||
// Desktop styles
|
||||
'lg:mt-4 lg:mb-1.5 lg:px-2.5 lg:font-semibold lg:text-[10px] lg:text-gray-500/80 lg:uppercase lg:tracking-wide lg:dark:text-gray-500'
|
||||
)}
|
||||
>
|
||||
<p className='mt-4 mb-1.5 px-2.5 font-semibold text-[10px] text-gray-500/80 uppercase tracking-wide dark:text-gray-500'>
|
||||
{item.name}
|
||||
</p>
|
||||
)
|
||||
|
||||
@@ -3798,23 +3798,6 @@ export function SshIcon(props: SVGProps<SVGSVGElement>) {
|
||||
)
|
||||
}
|
||||
|
||||
export function SftpIcon(props: SVGProps<SVGSVGElement>) {
|
||||
return (
|
||||
<svg
|
||||
{...props}
|
||||
xmlns='http://www.w3.org/2000/svg'
|
||||
viewBox='0 0 32 32'
|
||||
width='32px'
|
||||
height='32px'
|
||||
>
|
||||
<path
|
||||
d='M 6 3 L 6 29 L 26 29 L 26 9.59375 L 25.71875 9.28125 L 19.71875 3.28125 L 19.40625 3 Z M 8 5 L 18 5 L 18 11 L 24 11 L 24 27 L 8 27 Z M 20 6.4375 L 22.5625 9 L 20 9 Z'
|
||||
fill='currentColor'
|
||||
/>
|
||||
</svg>
|
||||
)
|
||||
}
|
||||
|
||||
export function ApifyIcon(props: SVGProps<SVGSVGElement>) {
|
||||
return (
|
||||
<svg
|
||||
@@ -4106,118 +4089,3 @@ export function PolymarketIcon(props: SVGProps<SVGSVGElement>) {
|
||||
</svg>
|
||||
)
|
||||
}
|
||||
|
||||
export function GoogleGroupsIcon(props: SVGProps<SVGSVGElement>) {
|
||||
return (
|
||||
<svg {...props} xmlns='http://www.w3.org/2000/svg' viewBox='0 0 950 950'>
|
||||
<path
|
||||
d='M0 0 C0.94278809 0.16097168 1.88557617 0.32194336 2.85693359 0.48779297 C41.39640021 7.38000818 77.6089919 23.60492603 108.359375 47.75439453 C110.82847014 49.62899623 113.39874033 51.31473268 116 53 C116.46293457 52.57372314 116.92586914 52.14744629 117.40283203 51.70825195 C122.59800275 47.03131713 128.0429109 43.0311917 133.875 39.1875 C134.79337646 38.58075439 135.71175293 37.97400879 136.65795898 37.34887695 C193.06543269 0.50131391 260.71306352 -11.46626137 326.5625 2.1875 C345.0682729 6.30166442 362.9846016 12.66357256 380 21 C380.84159668 21.41121094 381.68319336 21.82242187 382.55029297 22.24609375 C394.71831585 28.25763667 406.12081333 34.88025718 417 43 C417.91386475 43.680625 417.91386475 43.680625 418.84619141 44.375 C427.3442083 50.7615534 435.33491318 57.63400459 443 65 C443.89187012 65.85102295 443.89187012 65.85102295 444.80175781 66.71923828 C453.69930679 75.25198316 461.69744094 84.07076231 469 94 C469.42619629 94.57073242 469.85239258 95.14146484 470.29150391 95.72949219 C480.43354301 109.33663206 488.67420729 123.71010258 496 139 C496.44988281 139.91910156 496.89976562 140.83820313 497.36328125 141.78515625 C507.8727502 163.93377648 513.86707037 187.75512603 517 212 C517.17128418 213.27705811 517.34256836 214.55411621 517.51904297 215.86987305 C518.22536878 222.32344617 518.20134476 228.78767265 518.23828125 235.2734375 C518.24439454 236.28303968 518.24439454 236.28303968 518.25063133 237.31303787 C518.27135228 240.8724256 518.28571641 244.43177631 518.29516602 247.99121094 C518.30623374 251.63452388 518.34067753 255.27722681 518.38033772 258.92032433 C518.40666551 261.75333675 518.41487174 264.58620664 518.41844749 267.4193306 C518.42558411 269.40605687 518.45193759 271.39268495 518.47883606 273.37924194 C518.44942207 285.76015309 515.12264488 295.57193005 507 305 C499.87428202 312.02979486 489.28626689 317.89258596 479.05601447 318.02519969 C476.62337781 317.96406397 474.19532718 317.86193279 471.76460171 317.74760151 C470.82658438 317.70850022 469.88856705 317.66939893 468.92212495 317.62911275 C466.85886798 317.54255897 464.79572187 317.45333201 462.73267936 317.36180875 C458.15557952 317.15958497 453.5778828 316.97272504 449.00018999 316.78448407 C445.21423965 316.62851756 441.42837797 316.470502 437.64251518 316.31242561 C398.91465695 314.70443054 360.18475613 313.32679155 321.43299866 312.45133972 C320.24242123 312.42435066 320.24242123 312.42435066 319.02779173 312.39681636 C302.59808087 312.02523843 286.16791507 311.67886855 269.73699983 311.36500082 C260.42194939 311.18705349 251.10704348 311.00250961 241.79223633 310.81225586 C240.94943279 310.79516155 240.10662926 310.77806724 239.23828622 310.76045491 C214.73870723 310.26060136 190.27214589 309.42986365 165.79391344 308.29660819 C125.90250763 306.44979005 86.03732773 305.17982958 46.09943641 305.14658036 C44.50897189 305.14521365 42.91850784 305.14311607 41.32804524 305.14028964 C-37.5133746 305.00531502 -103.97082682 308.91076335 -163.52726094 367.12336398 C-188.38087655 391.97851495 -210.60272126 420.04013588 -229.42095524 449.719724 C-234.44627637 457.53470195 -238.00370356 461.2158497 -247.01953125 463.8984375 C-257.45600695 465.67920678 -265.74521563 464.625344 -274.70703125 458.76953125 C-282.12356812 453.04603687 -286.55153627 446.30121318 -288 437 C-288.0944182 434.21858347 -288.13925894 431.46261367 -288.13371277 428.68151855 C-288.13597833 427.84676797 -288.13824388 427.01201739 -288.14057809 426.15197134 C-288.14690588 423.35585743 -288.14608946 420.55979215 -288.14526367 417.76367188 C-288.14825623 415.75762367 -288.15165898 413.75157604 -288.15544128 411.74552917 C-288.16428321 406.29210673 -288.16661969 400.83869999 -288.16725707 395.38527107 C-288.16796834 391.97072817 -288.17010429 388.55618925 -288.17275429 385.14164734 C-288.18201368 373.20657092 -288.1860891 361.27150567 -288.18530273 349.33642578 C-288.18470423 338.25260833 -288.19520972 327.16883991 -288.2110464 316.08503485 C-288.22418718 306.54413041 -288.22948379 297.00324184 -288.22884732 287.46232843 C-288.22859392 281.77588842 -288.23135606 276.08949183 -288.24202538 270.40306091 C-288.25181491 265.03831145 -288.25171239 259.67364588 -288.24450874 254.3088932 C-288.2434757 252.35683887 -288.24574798 250.40477901 -288.2518692 248.45273399 C-288.30129251 231.57587659 -287.43735147 214.67304784 -284.25 198.0625 C-284.07936035 197.16249268 -283.9087207 196.26248535 -283.73291016 195.33520508 C-277.33281977 162.80659035 -264.83654002 129.80613517 -245 103 C-244.30777344 102.03835938 -243.61554688 101.07671875 -242.90234375 100.0859375 C-231.62223929 84.68769966 -218.86054597 69.06796015 -204 57 C-202.82757852 56.01627594 -201.65576659 55.0318252 -200.484375 54.046875 C-165.05335732 24.48458427 -123.47627349 6.4544733 -78 -1 C-77.21238281 -1.13132324 -76.42476562 -1.26264648 -75.61328125 -1.39794922 C-51.08216194 -5.26757047 -24.38186362 -4.16780456 0 0 Z '
|
||||
fill='#4185F3'
|
||||
transform='translate(394,440)'
|
||||
/>
|
||||
<path
|
||||
d='M0 0 C0.84159668 0.41121094 1.68319336 0.82242187 2.55029297 1.24609375 C14.71831585 7.25763667 26.12081333 13.88025718 37 22 C37.91386475 22.680625 37.91386475 22.680625 38.84619141 23.375 C47.3442083 29.7615534 55.33491318 36.63400459 63 44 C63.59458008 44.56734863 64.18916016 45.13469727 64.80175781 45.71923828 C73.69930679 54.25198316 81.69744094 63.07076231 89 73 C89.63929443 73.85609863 89.63929443 73.85609863 90.29150391 74.72949219 C100.43354301 88.33663206 108.67420729 102.71010258 116 118 C116.67482422 119.37865234 116.67482422 119.37865234 117.36328125 120.78515625 C127.8727502 142.93377648 133.86707037 166.75512603 137 191 C137.17128418 192.27705811 137.34256836 193.55411621 137.51904297 194.86987305 C138.22536878 201.32344617 138.20134476 207.78767265 138.23828125 214.2734375 C138.24439454 215.28303968 138.24439454 215.28303968 138.25063133 216.31303787 C138.27135228 219.8724256 138.28571641 223.43177631 138.29516602 226.99121094 C138.30623374 230.63452388 138.34067753 234.27722681 138.38033772 237.92032433 C138.40666551 240.75333675 138.41487174 243.58620664 138.41844749 246.4193306 C138.42558411 248.40605687 138.45193759 250.39268495 138.47883606 252.37924194 C138.44942207 264.76015309 135.12264488 274.57193005 127 284 C118.57776719 292.3088566 107.25707403 297.12771911 95.43405437 297.12304783 C94.31986273 297.12503888 93.20567109 297.12702993 92.05771607 297.12908131 C90.83884967 297.12616847 89.61998327 297.12325563 88.36418152 297.12025452 C86.41604418 297.12153615 86.41604418 297.12153615 84.42855054 297.12284368 C80.82553724 297.1250799 77.22255366 297.12107927 73.61954415 297.11606562 C69.7334335 297.1117488 65.84732453 297.11320842 61.96121216 297.1139679 C55.22888479 297.11449235 48.49656711 297.11135375 41.76424217 297.10573006 C32.03042012 297.09760442 22.29660275 297.09499874 12.56277768 297.09374207 C-3.22955387 297.09155322 -19.02188025 297.08489767 -34.81420898 297.07543945 C-50.15535455 297.06626101 -65.49649872 297.05918229 -80.83764648 297.05493164 C-81.78321047 297.05466892 -82.72877445 297.05440619 -83.70299188 297.05413551 C-88.44658929 297.05283048 -93.1901867 297.05156677 -97.93378413 297.05032361 C-137.28919303 297.03995621 -176.64459618 297.02234244 -216 297 C-216 296.67 -216 296.34 -216 296 C-215.10539063 295.78085937 -214.21078125 295.56171875 -213.2890625 295.3359375 C-199.60744526 291.74779481 -190.30226454 286.44506049 -182.33886719 274.51049805 C-175.8694217 262.19130537 -177.24804735 248.40718553 -177.47143555 234.86889648 C-177.50929034 232.14367461 -177.51761785 229.41872657 -177.52514935 226.69327831 C-177.58592774 206.53538226 -178.58970103 187.22051454 -183.1875 167.5625 C-183.34061646 166.90023407 -183.49373291 166.23796814 -183.65148926 165.55563354 C-193.05991068 125.06154086 -212.75392634 88.11244854 -240.77734375 57.4453125 C-242.91048395 55.09848338 -244.98632073 52.70965414 -247.0625 50.3125 C-250.74767655 46.15843419 -254.73024771 42.54055591 -259 39 C-259.90878906 38.23623047 -259.90878906 38.23623047 -260.8359375 37.45703125 C-262.2186283 36.29829741 -263.60842508 35.14804931 -265 34 C-261.24101804 29.06359373 -257.22764272 25.6831341 -252.125 22.1875 C-251.37541016 21.66760498 -250.62582031 21.14770996 -249.85351562 20.61206055 C-242.75668826 15.74085214 -235.4948349 11.22981506 -228 7 C-227.34596191 6.6277832 -226.69192383 6.25556641 -226.01806641 5.87207031 C-214.74568717 -0.48948891 -203.12149343 -5.48811078 -191 -10 C-189.783125 -10.46148437 -188.56625 -10.92296875 -187.3125 -11.3984375 C-127.13030363 -32.87253938 -57.14586678 -27.9977207 0 0 Z '
|
||||
fill='#4185F3'
|
||||
transform='translate(774,461)'
|
||||
/>
|
||||
<path
|
||||
d='M0 0 C2.5086616 2.21585252 4.93546061 4.49626878 7.3515625 6.8125 C8.23457031 7.62074219 9.11757813 8.42898437 10.02734375 9.26171875 C26.83279315 25.16390495 37.10842709 45.7665863 43.3515625 67.8125 C43.69316406 68.99070312 44.03476562 70.16890625 44.38671875 71.3828125 C50.59092755 97.64248697 47.11935597 127.30989764 36.3515625 151.8125 C35.92665527 152.79379883 35.92665527 152.79379883 35.49316406 153.79492188 C25.5268296 176.37059662 8.35413683 195.88783887 -12.6484375 208.8125 C-13.55078125 209.410625 -14.453125 210.00875 -15.3828125 210.625 C-42.35348642 227.69118915 -77.57347657 232.41053788 -108.6484375 226.1875 C-132.14362975 220.89155145 -153.29033371 209.45309871 -170.6484375 192.8125 C-171.53144531 192.00425781 -172.41445313 191.19601562 -173.32421875 190.36328125 C-190.12966815 174.46109505 -200.40530209 153.8584137 -206.6484375 131.8125 C-206.99003906 130.63429688 -207.33164062 129.45609375 -207.68359375 128.2421875 C-213.88780255 101.98251303 -210.41623097 72.31510236 -199.6484375 47.8125 C-199.36516602 47.15830078 -199.08189453 46.50410156 -198.79003906 45.83007812 C-188.8237046 23.25440338 -171.65101183 3.73716113 -150.6484375 -9.1875 C-149.29492188 -10.0846875 -149.29492188 -10.0846875 -147.9140625 -11 C-102.93060045 -39.46411158 -40.49856726 -33.45014405 0 0 Z '
|
||||
fill='#4285F4'
|
||||
transform='translate(753.6484375,172.1875)'
|
||||
/>
|
||||
<path
|
||||
d='M0 0 C2.5086616 2.21585252 4.93546061 4.49626878 7.3515625 6.8125 C8.23457031 7.62074219 9.11757813 8.42898437 10.02734375 9.26171875 C26.83279315 25.16390495 37.10842709 45.7665863 43.3515625 67.8125 C43.69316406 68.99070312 44.03476562 70.16890625 44.38671875 71.3828125 C50.59092755 97.64248697 47.11935597 127.30989764 36.3515625 151.8125 C35.92665527 152.79379883 35.92665527 152.79379883 35.49316406 153.79492188 C25.5268296 176.37059662 8.35413683 195.88783887 -12.6484375 208.8125 C-13.55078125 209.410625 -14.453125 210.00875 -15.3828125 210.625 C-42.35348642 227.69118915 -77.57347657 232.41053788 -108.6484375 226.1875 C-132.14362975 220.89155145 -153.29033371 209.45309871 -170.6484375 192.8125 C-171.53144531 192.00425781 -172.41445313 191.19601562 -173.32421875 190.36328125 C-190.12966815 174.46109505 -200.40530209 153.8584137 -206.6484375 131.8125 C-206.99003906 130.63429688 -207.33164063 129.45609375 -207.68359375 128.2421875 C-213.88780255 101.98251303 -210.41623097 72.31510236 -199.6484375 47.8125 C-199.36516602 47.15830078 -199.08189453 46.50410156 -198.79003906 45.83007812 C-188.8237046 23.25440338 -171.65101183 3.73716113 -150.6484375 -9.1875 C-149.29492188 -10.0846875 -149.29492188 -10.0846875 -147.9140625 -11 C-102.93060045 -39.46411158 -40.49856726 -33.45014405 0 0 Z '
|
||||
fill='#4285F4'
|
||||
transform='translate(433.6484375,172.1875)'
|
||||
/>
|
||||
<path
|
||||
d='M0 0 C3.81562395 1.29823475 6.07090879 2.74966858 8.8125 5.6875 C11.4212352 8.40859646 14.04942755 10.95293127 16.9375 13.375 C51.99603414 43.73637132 74.26678331 91.46037764 84.375 135.8125 C84.61371826 136.84769775 84.85243652 137.88289551 85.09838867 138.94946289 C89.0693436 157.37670439 89.42863544 175.94083356 89.48046875 194.72631836 C89.48930372 197.45992471 89.51740015 200.19229146 89.5625 202.92553711 C90.0727242 234.5058769 90.0727242 234.5058769 78.75 248.5 C67.10259629 260.32182406 52.90572797 263.38672329 36.8588047 263.52641392 C33.85098681 263.53023974 30.8436979 263.51414279 27.8359375 263.49609375 C25.70992992 263.49624909 23.58392206 263.49774385 21.45791626 263.50050354 C17.02520058 263.50188017 12.59281136 263.48945128 8.16015625 263.46655273 C2.50723581 263.43813586 -3.14514462 263.44092501 -8.79810524 263.45364285 C-13.18043552 263.46062972 -17.56264313 263.45277705 -21.94495773 263.44038582 C-24.02834985 263.43590298 -26.11175527 263.43550647 -28.19514847 263.43945122 C-45.28053358 263.45666805 -61.10730832 262.67785762 -74.25 250.4375 C-84.29292795 239.84189519 -87.30277119 227.81294372 -87.3359375 213.64453125 C-87.34418045 212.55703079 -87.3524234 211.46953033 -87.36091614 210.34907532 C-87.38009551 206.83674954 -87.38011101 203.32487017 -87.375 199.8125 C-87.37545319 198.61937195 -87.37590637 197.4262439 -87.37637329 196.19696045 C-87.35610617 178.09521781 -86.46012832 160.79921916 -83 143 C-82.75469856 141.54891669 -82.51332288 140.0971597 -82.27734375 138.64453125 C-78.04339545 114.58454961 -68.4884574 91.45015164 -57 70 C-56.38769531 68.84628906 -55.77539062 67.69257812 -55.14453125 66.50390625 C-47.06102443 51.82025778 -37.08959704 38.53023956 -26 26 C-25.22914063 25.11828125 -24.45828125 24.2365625 -23.6640625 23.328125 C-16.29692403 15.00455101 -8.575012 7.08370557 0 0 Z '
|
||||
fill='#1967D2'
|
||||
transform='translate(508,495)'
|
||||
/>
|
||||
</svg>
|
||||
)
|
||||
}
|
||||
|
||||
export function CursorIcon(props: SVGProps<SVGSVGElement>) {
|
||||
return (
|
||||
<svg {...props} xmlns='http://www.w3.org/2000/svg' viewBox='0 0 546 546' fill='currentColor'>
|
||||
<path d='m466.383 137.073-206.469-119.2034c-6.63-3.8287-14.811-3.8287-21.441 0l-206.4586 119.2034c-5.5734 3.218-9.0144 9.169-9.0144 15.615v240.375c0 6.436 3.441 12.397 9.0144 15.615l206.4686 119.203c6.63 3.829 14.811 3.829 21.441 0l206.468-119.203c5.574-3.218 9.015-9.17 9.015-15.615v-240.375c0-6.436-3.441-12.397-9.015-15.615zm-12.969 25.25-199.316 345.223c-1.347 2.326-4.904 1.376-4.904-1.319v-226.048c0-4.517-2.414-8.695-6.33-10.963l-195.7577-113.019c-2.3263-1.347-1.3764-4.905 1.3182-4.905h398.6305c5.661 0 9.199 6.136 6.368 11.041h-.009z' />
|
||||
</svg>
|
||||
)
|
||||
}
|
||||
|
||||
export function DuckDuckGoIcon(props: SVGProps<SVGSVGElement>) {
|
||||
return (
|
||||
<svg {...props} xmlns='http://www.w3.org/2000/svg' viewBox='-108 -108 216 216'>
|
||||
<circle r='108' fill='#d53' />
|
||||
<circle r='96' fill='none' stroke='#ffffff' strokeWidth='7' />
|
||||
<path
|
||||
d='M-32-55C-62-48-51-6-51-6l19 93 7 3M-39-73h-8l11 4s-11 0-11 7c24-1 35 5 35 5'
|
||||
fill='#ddd'
|
||||
/>
|
||||
<path d='M25 95S1 57 1 32c0-47 31-7 31-44S1-58 1-58c-15-19-44-15-44-15l7 4s-7 2-9 4 19-3 28 5c-37 3-31 33-31 33l21 120' />
|
||||
<path d='M25-1l38-10c34 5-29 24-33 23C0 7 9 32 45 24s9 20-24 9C-26 20-1-3 25-1' fill='#fc0' />
|
||||
<path
|
||||
d='M15 78l2-3c22 8 23 11 22-9s0-20-23-3c0-5-13-3-15 0-21-9-23-12-22 2 2 29 1 24 21 14'
|
||||
fill='#6b5'
|
||||
/>
|
||||
<path d='M-1 67v12c1 2 17 2 17-2s-8 3-13 1-2-13-2-13' fill='#4a4' />
|
||||
<path
|
||||
d='M-23-32c-5-6-18-1-15 7 1-4 8-10 15-7m32 0c1-6 11-7 14-1-4-2-10-2-14 1m-33 16a2 2 0 1 1 0 1m-8 3a7 7 0 1 0 0-1m52-6a2 2 0 1 1 0 1m-6 3a6 6 0 1 0 0-1'
|
||||
fill='#148'
|
||||
/>
|
||||
</svg>
|
||||
)
|
||||
}
|
||||
|
||||
export function RssIcon(props: SVGProps<SVGSVGElement>) {
|
||||
return (
|
||||
<svg
|
||||
{...props}
|
||||
width='24'
|
||||
height='24'
|
||||
viewBox='0 0 24 24'
|
||||
fill='none'
|
||||
xmlns='http://www.w3.org/2000/svg'
|
||||
>
|
||||
<path
|
||||
d='M4 11C6.38695 11 8.67613 11.9482 10.364 13.636C12.0518 15.3239 13 17.6131 13 20'
|
||||
stroke='currentColor'
|
||||
strokeWidth='2'
|
||||
strokeLinecap='round'
|
||||
strokeLinejoin='round'
|
||||
/>
|
||||
<path
|
||||
d='M4 4C8.24346 4 12.3131 5.68571 15.3137 8.68629C18.3143 11.6869 20 15.7565 20 20'
|
||||
stroke='currentColor'
|
||||
strokeWidth='2'
|
||||
strokeLinecap='round'
|
||||
strokeLinejoin='round'
|
||||
/>
|
||||
<circle cx='5' cy='19' r='1' fill='currentColor' />
|
||||
</svg>
|
||||
)
|
||||
}
|
||||
|
||||
export function ZapierIcon(props: SVGProps<SVGSVGElement>) {
|
||||
return (
|
||||
<svg
|
||||
{...props}
|
||||
width='800px'
|
||||
height='800px'
|
||||
viewBox='0 0 256 256'
|
||||
version='1.1'
|
||||
xmlns='http://www.w3.org/2000/svg'
|
||||
xmlnsXlink='http://www.w3.org/1999/xlink'
|
||||
>
|
||||
<g>
|
||||
<path
|
||||
d='M128.080089,-0.000183105 C135.311053,0.0131003068 142.422517,0.624138494 149.335663,1.77979593 L149.335663,1.77979593 L149.335663,76.2997796 L202.166953,23.6044907 C208.002065,27.7488446 213.460883,32.3582023 218.507811,37.3926715 C223.557281,42.4271407 228.192318,47.8867213 232.346817,53.7047992 L232.346817,53.7047992 L179.512985,106.400063 L254.227854,106.400063 C255.387249,113.29414 256,120.36111 256,127.587243 L256,127.587243 L256,127.759881 C256,134.986013 255.387249,142.066204 254.227854,148.960282 L254.227854,148.960282 L179.500273,148.960282 L232.346817,201.642324 C228.192318,207.460402 223.557281,212.919983 218.523066,217.954452 L218.523066,217.954452 L218.507811,217.954452 C213.460883,222.988921 208.002065,227.6115 202.182208,231.742607 L202.182208,231.742607 L149.335663,179.04709 L149.335663,253.5672 C142.435229,254.723036 135.323765,255.333244 128.092802,255.348499 L128.092802,255.348499 L127.907197,255.348499 C120.673691,255.333244 113.590195,254.723036 106.677048,253.5672 L106.677048,253.5672 L106.677048,179.04709 L53.8457596,231.742607 C42.1780766,223.466917 31.977435,213.278734 23.6658953,201.642324 L23.6658953,201.642324 L76.4997269,148.960282 L1.78485803,148.960282 C0.612750404,142.052729 0,134.946095 0,127.719963 L0,127.719963 L0,127.349037 C0.0121454869,125.473817 0.134939797,123.182933 0.311311815,120.812834 L0.36577283,120.099764 C0.887996182,113.428547 1.78485803,106.400063 1.78485803,106.400063 L1.78485803,106.400063 L76.4997269,106.400063 L23.6658953,53.7047992 C27.8076812,47.8867213 32.4300059,42.4403618 37.4769335,37.4193681 L37.4769335,37.4193681 L37.5023588,37.3926715 C42.5391163,32.3582023 48.0106469,27.7488446 53.8457596,23.6044907 L53.8457596,23.6044907 L106.677048,76.2997796 L106.677048,1.77979593 C113.590195,0.624138494 120.688946,0.0131003068 127.932622,-0.000183105 L127.932622,-0.000183105 L128.080089,-0.000183105 Z M128.067377,95.7600714 L127.945335,95.7600714 C118.436262,95.7600714 109.32891,97.5001809 100.910584,100.661566 C97.7553011,109.043534 96.0085811,118.129275 95.9958684,127.613685 L95.9958684,127.733184 C96.0085811,137.217594 97.7553011,146.303589 100.923296,154.685303 C109.32891,157.846943 118.436262,159.587052 127.945335,159.587052 L128.067377,159.587052 C137.576449,159.587052 146.683802,157.846943 155.089415,154.685303 C158.257411,146.290368 160.004131,137.217594 160.004131,127.733184 L160.004131,127.613685 C160.004131,118.129275 158.257411,109.043534 155.089415,100.661566 C146.683802,97.5001809 137.576449,95.7600714 128.067377,95.7600714 Z'
|
||||
fill='#FF4A00'
|
||||
fillRule='nonzero'
|
||||
/>
|
||||
</g>
|
||||
</svg>
|
||||
)
|
||||
}
|
||||
|
||||
@@ -20,7 +20,7 @@ export function Navbar() {
|
||||
<div
|
||||
className='relative flex w-full items-center justify-between'
|
||||
style={{
|
||||
paddingLeft: 'calc(var(--sidebar-offset) + 32px)',
|
||||
paddingLeft: 'calc(var(--sidebar-offset) + 20px)',
|
||||
paddingRight: 'calc(var(--toc-offset) + 60px)',
|
||||
}}
|
||||
>
|
||||
|
||||
@@ -15,12 +15,10 @@ import {
|
||||
CalendlyIcon,
|
||||
ClayIcon,
|
||||
ConfluenceIcon,
|
||||
CursorIcon,
|
||||
DatadogIcon,
|
||||
DiscordIcon,
|
||||
DocumentIcon,
|
||||
DropboxIcon,
|
||||
DuckDuckGoIcon,
|
||||
DynamoDBIcon,
|
||||
ElasticsearchIcon,
|
||||
ElevenLabsIcon,
|
||||
@@ -34,7 +32,6 @@ import {
|
||||
GoogleDocsIcon,
|
||||
GoogleDriveIcon,
|
||||
GoogleFormsIcon,
|
||||
GoogleGroupsIcon,
|
||||
GoogleIcon,
|
||||
GoogleSheetsIcon,
|
||||
GoogleSlidesIcon,
|
||||
@@ -86,7 +83,6 @@ import {
|
||||
SendgridIcon,
|
||||
SentryIcon,
|
||||
SerperIcon,
|
||||
SftpIcon,
|
||||
ShopifyIcon,
|
||||
SlackIcon,
|
||||
SmtpIcon,
|
||||
@@ -110,7 +106,6 @@ import {
|
||||
WordpressIcon,
|
||||
xIcon,
|
||||
YouTubeIcon,
|
||||
ZapierIcon,
|
||||
ZendeskIcon,
|
||||
ZepIcon,
|
||||
ZoomIcon,
|
||||
@@ -122,7 +117,6 @@ export const blockTypeToIconMap: Record<string, IconComponent> = {
|
||||
zoom: ZoomIcon,
|
||||
zep: ZepIcon,
|
||||
zendesk: ZendeskIcon,
|
||||
zapier: ZapierIcon,
|
||||
youtube: YouTubeIcon,
|
||||
x: xIcon,
|
||||
wordpress: WordpressIcon,
|
||||
@@ -151,7 +145,6 @@ export const blockTypeToIconMap: Record<string, IconComponent> = {
|
||||
slack: SlackIcon,
|
||||
shopify: ShopifyIcon,
|
||||
sharepoint: MicrosoftSharepointIcon,
|
||||
sftp: SftpIcon,
|
||||
serper: SerperIcon,
|
||||
sentry: SentryIcon,
|
||||
sendgrid: SendgridIcon,
|
||||
@@ -202,7 +195,6 @@ export const blockTypeToIconMap: Record<string, IconComponent> = {
|
||||
google_vault: GoogleVaultIcon,
|
||||
google_slides: GoogleSlidesIcon,
|
||||
google_sheets: GoogleSheetsIcon,
|
||||
google_groups: GoogleGroupsIcon,
|
||||
google_forms: GoogleFormsIcon,
|
||||
google_drive: GoogleDriveIcon,
|
||||
google_docs: GoogleDocsIcon,
|
||||
@@ -217,11 +209,9 @@ export const blockTypeToIconMap: Record<string, IconComponent> = {
|
||||
elevenlabs: ElevenLabsIcon,
|
||||
elasticsearch: ElasticsearchIcon,
|
||||
dynamodb: DynamoDBIcon,
|
||||
duckduckgo: DuckDuckGoIcon,
|
||||
dropbox: DropboxIcon,
|
||||
discord: DiscordIcon,
|
||||
datadog: DatadogIcon,
|
||||
cursor: CursorIcon,
|
||||
confluence: ConfluenceIcon,
|
||||
clay: ClayIcon,
|
||||
calendly: CalendlyIcon,
|
||||
|
||||
@@ -143,7 +143,7 @@ Function (Process) → Condition (account_type === 'enterprise') → Advanced or
|
||||
## Bewährte Praktiken
|
||||
|
||||
- **Bedingungen korrekt anordnen**: Platzieren Sie spezifischere Bedingungen vor allgemeinen, um sicherzustellen, dass spezifische Logik Vorrang vor Fallbacks hat
|
||||
- **Verwenden Sie den Else-Zweig bei Bedarf**: Wenn keine Bedingungen übereinstimmen und der Else-Zweig nicht verbunden ist, endet der Workflow-Zweig ordnungsgemäß. Verbinden Sie den Else-Zweig, wenn Sie einen Fallback-Pfad für nicht übereinstimmende Fälle benötigen
|
||||
- **Halten Sie Ausdrücke einfach**: Verwenden Sie klare, unkomplizierte boolesche Ausdrücke für bessere Lesbarkeit und einfachere Fehlersuche
|
||||
- **Eine Standardbedingung einfügen**: Fügen Sie eine Auffangbedingung (`true`) als letzte Bedingung hinzu, um nicht übereinstimmende Fälle zu behandeln und zu verhindern, dass die Workflow-Ausführung stecken bleibt
|
||||
- **Ausdrücke einfach halten**: Verwenden Sie klare, unkomplizierte boolesche Ausdrücke für bessere Lesbarkeit und einfachere Fehlersuche
|
||||
- **Dokumentieren Sie Ihre Bedingungen**: Fügen Sie Beschreibungen hinzu, um den Zweck jeder Bedingung für bessere Teamzusammenarbeit und Wartung zu erklären
|
||||
- **Testen Sie Grenzfälle**: Überprüfen Sie, ob Bedingungen Grenzwerte korrekt behandeln, indem Sie mit Werten an den Grenzen Ihrer Bedingungsbereiche testen
|
||||
- **Grenzfälle testen**: Überprüfen Sie, ob Bedingungen Grenzwerte korrekt behandeln, indem Sie mit Werten an den Grenzen Ihrer Bedingungsbereiche testen
|
||||
|
||||
@@ -72,7 +72,7 @@ Für benutzerdefinierte Integrationen nutzen Sie unsere [MCP (Model Context Prot
|
||||
<Video src="introduction/integrations-sidebar.mp4" width={700} height={450} />
|
||||
</div>
|
||||
|
||||
## Copilot
|
||||
## KI-gesteuerter Copilot
|
||||
|
||||
**Fragen stellen & Anleitung erhalten**
|
||||
Der Copilot beantwortet Fragen zu Sim, erklärt Ihre Workflows und gibt Verbesserungsvorschläge. Verwenden Sie das `@` Symbol, um auf Workflows, Blöcke, Dokumentation, Wissen und Protokolle für kontextbezogene Unterstützung zu verweisen.
|
||||
|
||||
@@ -1,7 +1,5 @@
|
||||
---
|
||||
title: Übersicht
|
||||
description: Laden Sie Ihre Dokumente hoch, verarbeiten und durchsuchen Sie sie
|
||||
mit intelligenter Vektorsuche und Chunking
|
||||
title: Wissensdatenbank
|
||||
---
|
||||
|
||||
import { Video } from '@/components/ui/video'
|
||||
|
||||
@@ -1,155 +0,0 @@
|
||||
---
|
||||
title: Docker
|
||||
description: Sim Studio mit Docker Compose bereitstellen
|
||||
---
|
||||
|
||||
import { Tab, Tabs } from 'fumadocs-ui/components/tabs'
|
||||
import { Callout } from 'fumadocs-ui/components/callout'
|
||||
|
||||
## Schnellstart
|
||||
|
||||
```bash
|
||||
# Clone and start
|
||||
git clone https://github.com/simstudioai/sim.git && cd sim
|
||||
docker compose -f docker-compose.prod.yml up -d
|
||||
```
|
||||
|
||||
Öffnen Sie [http://localhost:3000](http://localhost:3000)
|
||||
|
||||
## Produktionseinrichtung
|
||||
|
||||
### 1. Umgebung konfigurieren
|
||||
|
||||
```bash
|
||||
# Generate secrets
|
||||
cat > .env << EOF
|
||||
DATABASE_URL=postgresql://postgres:postgres@db:5432/simstudio
|
||||
BETTER_AUTH_SECRET=$(openssl rand -hex 32)
|
||||
ENCRYPTION_KEY=$(openssl rand -hex 32)
|
||||
INTERNAL_API_SECRET=$(openssl rand -hex 32)
|
||||
NEXT_PUBLIC_APP_URL=https://sim.yourdomain.com
|
||||
BETTER_AUTH_URL=https://sim.yourdomain.com
|
||||
NEXT_PUBLIC_SOCKET_URL=https://sim.yourdomain.com
|
||||
EOF
|
||||
```
|
||||
|
||||
### 2. Dienste starten
|
||||
|
||||
```bash
|
||||
docker compose -f docker-compose.prod.yml up -d
|
||||
```
|
||||
|
||||
### 3. SSL einrichten
|
||||
|
||||
<Tabs items={['Caddy (Empfohlen)', 'Nginx + Certbot']}>
|
||||
<Tab value="Caddy (Empfohlen)">
|
||||
Caddy verwaltet SSL-Zertifikate automatisch.
|
||||
|
||||
```bash
|
||||
# Install Caddy
|
||||
sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https curl
|
||||
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
|
||||
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list
|
||||
sudo apt update && sudo apt install caddy
|
||||
```
|
||||
|
||||
Erstellen Sie `/etc/caddy/Caddyfile`:
|
||||
|
||||
```
|
||||
sim.yourdomain.com {
|
||||
reverse_proxy localhost:3000
|
||||
|
||||
handle /socket.io/* {
|
||||
reverse_proxy localhost:3002
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
```bash
|
||||
sudo systemctl restart caddy
|
||||
```
|
||||
|
||||
</Tab>
|
||||
<Tab value="Nginx + Certbot">
|
||||
|
||||
```bash
|
||||
# Install
|
||||
sudo apt install nginx certbot python3-certbot-nginx -y
|
||||
|
||||
# Create /etc/nginx/sites-available/sim
|
||||
server {
|
||||
listen 80;
|
||||
server_name sim.yourdomain.com;
|
||||
|
||||
location / {
|
||||
proxy_pass http://127.0.0.1:3000;
|
||||
proxy_http_version 1.1;
|
||||
proxy_set_header Upgrade $http_upgrade;
|
||||
proxy_set_header Connection 'upgrade';
|
||||
proxy_set_header Host $host;
|
||||
proxy_set_header X-Forwarded-Proto $scheme;
|
||||
}
|
||||
|
||||
location /socket.io/ {
|
||||
proxy_pass http://127.0.0.1:3002;
|
||||
proxy_http_version 1.1;
|
||||
proxy_set_header Upgrade $http_upgrade;
|
||||
proxy_set_header Connection "upgrade";
|
||||
}
|
||||
}
|
||||
|
||||
# Enable and get certificate
|
||||
sudo ln -s /etc/nginx/sites-available/sim /etc/nginx/sites-enabled/
|
||||
sudo certbot --nginx -d sim.yourdomain.com
|
||||
```
|
||||
|
||||
</Tab>
|
||||
</Tabs>
|
||||
|
||||
## Ollama
|
||||
|
||||
```bash
|
||||
# With GPU
|
||||
docker compose -f docker-compose.ollama.yml --profile gpu --profile setup up -d
|
||||
|
||||
# CPU only
|
||||
docker compose -f docker-compose.ollama.yml --profile cpu --profile setup up -d
|
||||
```
|
||||
|
||||
Zusätzliche Modelle herunterladen:
|
||||
|
||||
```bash
|
||||
docker compose -f docker-compose.ollama.yml exec ollama ollama pull llama3.2
|
||||
```
|
||||
|
||||
### Externes Ollama
|
||||
|
||||
Wenn Ollama auf Ihrem Host-Rechner läuft (nicht in Docker):
|
||||
|
||||
```bash
|
||||
# macOS/Windows
|
||||
OLLAMA_URL=http://host.docker.internal:11434 docker compose -f docker-compose.prod.yml up -d
|
||||
|
||||
# Linux - use your host IP
|
||||
OLLAMA_URL=http://192.168.1.100:11434 docker compose -f docker-compose.prod.yml up -d
|
||||
```
|
||||
|
||||
<Callout type="warning">
|
||||
Innerhalb von Docker bezieht sich `localhost` auf den Container, nicht auf Ihren Host. Verwenden Sie `host.docker.internal` oder die IP-Adresse Ihres Hosts.
|
||||
</Callout>
|
||||
|
||||
## Befehle
|
||||
|
||||
```bash
|
||||
# View logs
|
||||
docker compose -f docker-compose.prod.yml logs -f simstudio
|
||||
|
||||
# Stop
|
||||
docker compose -f docker-compose.prod.yml down
|
||||
|
||||
# Update
|
||||
docker compose -f docker-compose.prod.yml pull && docker compose -f docker-compose.prod.yml up -d
|
||||
|
||||
# Backup database
|
||||
docker compose -f docker-compose.prod.yml exec db pg_dump -U postgres simstudio > backup.sql
|
||||
```
|
||||
@@ -1,87 +0,0 @@
|
||||
---
|
||||
title: Umgebungsvariablen
|
||||
description: Konfigurationsreferenz für Sim Studio
|
||||
---
|
||||
|
||||
import { Callout } from 'fumadocs-ui/components/callout'
|
||||
|
||||
## Erforderlich
|
||||
|
||||
| Variable | Beschreibung |
|
||||
|----------|-------------|
|
||||
| `DATABASE_URL` | PostgreSQL-Verbindungszeichenfolge |
|
||||
| `BETTER_AUTH_SECRET` | Auth-Secret (32 Hex-Zeichen): `openssl rand -hex 32` |
|
||||
| `BETTER_AUTH_URL` | Ihre App-URL |
|
||||
| `ENCRYPTION_KEY` | Verschlüsselungsschlüssel (32 Hex-Zeichen): `openssl rand -hex 32` |
|
||||
| `INTERNAL_API_SECRET` | Internes API-Secret (32 Hex-Zeichen): `openssl rand -hex 32` |
|
||||
| `NEXT_PUBLIC_APP_URL` | Öffentliche App-URL |
|
||||
| `NEXT_PUBLIC_SOCKET_URL` | WebSocket-URL (Standard: `http://localhost:3002`) |
|
||||
|
||||
## KI-Anbieter
|
||||
|
||||
| Variable | Anbieter |
|
||||
|----------|----------|
|
||||
| `OPENAI_API_KEY` | OpenAI |
|
||||
| `ANTHROPIC_API_KEY_1` | Anthropic Claude |
|
||||
| `GEMINI_API_KEY_1` | Google Gemini |
|
||||
| `MISTRAL_API_KEY` | Mistral |
|
||||
| `OLLAMA_URL` | Ollama (Standard: `http://localhost:11434`) |
|
||||
|
||||
<Callout type="info">
|
||||
Für Lastausgleich fügen Sie mehrere Schlüssel mit den Suffixen `_1`, `_2`, `_3` hinzu (z.B. `OPENAI_API_KEY_1`, `OPENAI_API_KEY_2`). Funktioniert mit OpenAI, Anthropic und Gemini.
|
||||
</Callout>
|
||||
|
||||
<Callout type="info">
|
||||
In Docker verwenden Sie `OLLAMA_URL=http://host.docker.internal:11434` für Ollama auf dem Host-System.
|
||||
</Callout>
|
||||
|
||||
### Azure OpenAI
|
||||
|
||||
| Variable | Beschreibung |
|
||||
|----------|-------------|
|
||||
| `AZURE_OPENAI_API_KEY` | Azure OpenAI API-Schlüssel |
|
||||
| `AZURE_OPENAI_ENDPOINT` | Azure OpenAI Endpoint-URL |
|
||||
| `AZURE_OPENAI_API_VERSION` | API-Version (z.B. `2024-02-15-preview`) |
|
||||
|
||||
### vLLM (Selbst-gehostet)
|
||||
|
||||
| Variable | Beschreibung |
|
||||
|----------|-------------|
|
||||
| `VLLM_BASE_URL` | vLLM-Server-URL (z.B. `http://localhost:8000/v1`) |
|
||||
| `VLLM_API_KEY` | Optionaler Bearer-Token für vLLM |
|
||||
|
||||
## OAuth-Anbieter
|
||||
|
||||
| Variable | Beschreibung |
|
||||
|----------|-------------|
|
||||
| `GOOGLE_CLIENT_ID` | Google OAuth Client-ID |
|
||||
| `GOOGLE_CLIENT_SECRET` | Google OAuth Client-Secret |
|
||||
| `GITHUB_CLIENT_ID` | GitHub OAuth Client-ID |
|
||||
| `GITHUB_CLIENT_SECRET` | GitHub OAuth Client-Secret |
|
||||
|
||||
## Optional
|
||||
|
||||
| Variable | Beschreibung |
|
||||
|----------|-------------|
|
||||
| `API_ENCRYPTION_KEY` | Verschlüsselt gespeicherte API-Schlüssel (32 Hex-Zeichen): `openssl rand -hex 32` |
|
||||
| `COPILOT_API_KEY` | API-Schlüssel für Copilot-Funktionen |
|
||||
| `ADMIN_API_KEY` | Admin-API-Schlüssel für GitOps-Operationen |
|
||||
| `RESEND_API_KEY` | E-Mail-Dienst für Benachrichtigungen |
|
||||
| `ALLOWED_LOGIN_DOMAINS` | Registrierungen auf Domains beschränken (durch Kommas getrennt) |
|
||||
| `ALLOWED_LOGIN_EMAILS` | Registrierungen auf bestimmte E-Mails beschränken (durch Kommas getrennt) |
|
||||
| `DISABLE_REGISTRATION` | Auf `true` setzen, um neue Benutzerregistrierungen zu deaktivieren |
|
||||
|
||||
## Beispiel .env
|
||||
|
||||
```bash
|
||||
DATABASE_URL=postgresql://postgres:postgres@db:5432/simstudio
|
||||
BETTER_AUTH_SECRET=<openssl rand -hex 32>
|
||||
BETTER_AUTH_URL=https://sim.yourdomain.com
|
||||
ENCRYPTION_KEY=<openssl rand -hex 32>
|
||||
INTERNAL_API_SECRET=<openssl rand -hex 32>
|
||||
NEXT_PUBLIC_APP_URL=https://sim.yourdomain.com
|
||||
NEXT_PUBLIC_SOCKET_URL=https://sim.yourdomain.com
|
||||
OPENAI_API_KEY=sk-...
|
||||
```
|
||||
|
||||
Siehe `apps/sim/.env.example` für alle Optionen.
|
||||
@@ -1,50 +0,0 @@
|
||||
---
|
||||
title: Self-Hosting
|
||||
description: Stellen Sie Sim Studio auf Ihrer eigenen Infrastruktur bereit
|
||||
---
|
||||
|
||||
import { Card, Cards } from 'fumadocs-ui/components/card'
|
||||
import { Callout } from 'fumadocs-ui/components/callout'
|
||||
|
||||
Stellen Sie Sim Studio auf Ihrer eigenen Infrastruktur mit Docker oder Kubernetes bereit.
|
||||
|
||||
## Anforderungen
|
||||
|
||||
| Ressource | Minimum | Empfohlen |
|
||||
|----------|---------|-------------|
|
||||
| CPU | 2 Kerne | 4+ Kerne |
|
||||
| RAM | 12 GB | 16+ GB |
|
||||
| Speicher | 20 GB SSD | 50+ GB SSD |
|
||||
| Docker | 20.10+ | Neueste Version |
|
||||
|
||||
## Schnellstart
|
||||
|
||||
```bash
|
||||
git clone https://github.com/simstudioai/sim.git && cd sim
|
||||
docker compose -f docker-compose.prod.yml up -d
|
||||
```
|
||||
|
||||
Öffnen Sie [http://localhost:3000](http://localhost:3000)
|
||||
|
||||
## Bereitstellungsoptionen
|
||||
|
||||
<Cards>
|
||||
<Card title="Docker" href="/self-hosting/docker">
|
||||
Bereitstellung mit Docker Compose auf jedem Server
|
||||
</Card>
|
||||
<Card title="Kubernetes" href="/self-hosting/kubernetes">
|
||||
Bereitstellung mit Helm auf Kubernetes-Clustern
|
||||
</Card>
|
||||
<Card title="Cloud-Plattformen" href="/self-hosting/platforms">
|
||||
Anleitungen für Railway, DigitalOcean, AWS, Azure, GCP
|
||||
</Card>
|
||||
</Cards>
|
||||
|
||||
## Architektur
|
||||
|
||||
| Komponente | Port | Beschreibung |
|
||||
|-----------|------|-------------|
|
||||
| simstudio | 3000 | Hauptanwendung |
|
||||
| realtime | 3002 | WebSocket-Server |
|
||||
| db | 5432 | PostgreSQL mit pgvector |
|
||||
| migrations | - | Datenbank-Migrationen (werden einmal ausgeführt) |
|
||||
@@ -1,133 +0,0 @@
|
||||
---
|
||||
title: Kubernetes
|
||||
description: Sim Studio mit Helm bereitstellen
|
||||
---
|
||||
|
||||
import { Tab, Tabs } from 'fumadocs-ui/components/tabs'
|
||||
import { Callout } from 'fumadocs-ui/components/callout'
|
||||
|
||||
## Voraussetzungen
|
||||
|
||||
- Kubernetes 1.19+
|
||||
- Helm 3.0+
|
||||
- PV-Provisioner-Unterstützung
|
||||
|
||||
## Installation
|
||||
|
||||
```bash
|
||||
# Clone repo
|
||||
git clone https://github.com/simstudioai/sim.git && cd sim
|
||||
|
||||
# Generate secrets
|
||||
BETTER_AUTH_SECRET=$(openssl rand -hex 32)
|
||||
ENCRYPTION_KEY=$(openssl rand -hex 32)
|
||||
INTERNAL_API_SECRET=$(openssl rand -hex 32)
|
||||
|
||||
# Install
|
||||
helm install sim ./helm/sim \
|
||||
--set app.env.BETTER_AUTH_SECRET="$BETTER_AUTH_SECRET" \
|
||||
--set app.env.ENCRYPTION_KEY="$ENCRYPTION_KEY" \
|
||||
--set app.env.INTERNAL_API_SECRET="$INTERNAL_API_SECRET" \
|
||||
--namespace simstudio --create-namespace
|
||||
```
|
||||
|
||||
## Cloud-spezifische Werte
|
||||
|
||||
<Tabs items={['AWS EKS', 'Azure AKS', 'GCP GKE']}>
|
||||
<Tab value="AWS EKS">
|
||||
|
||||
```bash
|
||||
helm install sim ./helm/sim \
|
||||
--values ./helm/sim/examples/values-aws.yaml \
|
||||
--set app.env.BETTER_AUTH_SECRET="$BETTER_AUTH_SECRET" \
|
||||
--set app.env.ENCRYPTION_KEY="$ENCRYPTION_KEY" \
|
||||
--set app.env.INTERNAL_API_SECRET="$INTERNAL_API_SECRET" \
|
||||
--set app.env.NEXT_PUBLIC_APP_URL="https://sim.yourdomain.com" \
|
||||
--namespace simstudio --create-namespace
|
||||
```
|
||||
|
||||
</Tab>
|
||||
<Tab value="Azure AKS">
|
||||
|
||||
```bash
|
||||
helm install sim ./helm/sim \
|
||||
--values ./helm/sim/examples/values-azure.yaml \
|
||||
--set app.env.BETTER_AUTH_SECRET="$BETTER_AUTH_SECRET" \
|
||||
--set app.env.ENCRYPTION_KEY="$ENCRYPTION_KEY" \
|
||||
--set app.env.INTERNAL_API_SECRET="$INTERNAL_API_SECRET" \
|
||||
--set app.env.NEXT_PUBLIC_APP_URL="https://sim.yourdomain.com" \
|
||||
--namespace simstudio --create-namespace
|
||||
```
|
||||
|
||||
</Tab>
|
||||
<Tab value="GCP GKE">
|
||||
|
||||
```bash
|
||||
helm install sim ./helm/sim \
|
||||
--values ./helm/sim/examples/values-gcp.yaml \
|
||||
--set app.env.BETTER_AUTH_SECRET="$BETTER_AUTH_SECRET" \
|
||||
--set app.env.ENCRYPTION_KEY="$ENCRYPTION_KEY" \
|
||||
--set app.env.INTERNAL_API_SECRET="$INTERNAL_API_SECRET" \
|
||||
--set app.env.NEXT_PUBLIC_APP_URL="https://sim.yourdomain.com" \
|
||||
--namespace simstudio --create-namespace
|
||||
```
|
||||
|
||||
</Tab>
|
||||
</Tabs>
|
||||
|
||||
## Schlüsselkonfiguration
|
||||
|
||||
```yaml
|
||||
# Custom values.yaml
|
||||
app:
|
||||
replicaCount: 2
|
||||
env:
|
||||
NEXT_PUBLIC_APP_URL: "https://sim.yourdomain.com"
|
||||
OPENAI_API_KEY: "sk-..."
|
||||
|
||||
postgresql:
|
||||
persistence:
|
||||
size: 50Gi
|
||||
|
||||
ingress:
|
||||
enabled: true
|
||||
className: nginx
|
||||
tls:
|
||||
enabled: true
|
||||
app:
|
||||
host: sim.yourdomain.com
|
||||
```
|
||||
|
||||
Siehe `helm/sim/values.yaml` für alle Optionen.
|
||||
|
||||
## Externe Datenbank
|
||||
|
||||
```yaml
|
||||
postgresql:
|
||||
enabled: false
|
||||
|
||||
externalDatabase:
|
||||
enabled: true
|
||||
host: "your-db-host"
|
||||
port: 5432
|
||||
username: "postgres"
|
||||
password: "your-password"
|
||||
database: "simstudio"
|
||||
sslMode: "require"
|
||||
```
|
||||
|
||||
## Befehle
|
||||
|
||||
```bash
|
||||
# Port forward for local access
|
||||
kubectl port-forward deployment/sim-sim-app 3000:3000 -n simstudio
|
||||
|
||||
# View logs
|
||||
kubectl logs -l app.kubernetes.io/component=app -n simstudio --tail=100
|
||||
|
||||
# Upgrade
|
||||
helm upgrade sim ./helm/sim --namespace simstudio
|
||||
|
||||
# Uninstall
|
||||
helm uninstall sim --namespace simstudio
|
||||
```
|
||||
@@ -1,124 +0,0 @@
|
||||
---
|
||||
title: Cloud-Plattformen
|
||||
description: Sim Studio auf Cloud-Plattformen bereitstellen
|
||||
---
|
||||
|
||||
import { Tab, Tabs } from 'fumadocs-ui/components/tabs'
|
||||
import { Callout } from 'fumadocs-ui/components/callout'
|
||||
|
||||
## Railway
|
||||
|
||||
Bereitstellung mit einem Klick und automatischer PostgreSQL-Bereitstellung.
|
||||
|
||||
[
|
||||
|
||||

|
||||
|
||||
](https://railway.com/new/template/sim-studio)
|
||||
|
||||
Nach der Bereitstellung fügen Sie Umgebungsvariablen im Railway-Dashboard hinzu:
|
||||
- `BETTER_AUTH_SECRET`, `ENCRYPTION_KEY`, `INTERNAL_API_SECRET` (automatisch generiert)
|
||||
- `OPENAI_API_KEY` oder andere KI-Anbieter-Schlüssel
|
||||
- Benutzerdefinierte Domain in Einstellungen → Netzwerk
|
||||
|
||||
## VPS-Bereitstellung
|
||||
|
||||
Für DigitalOcean, AWS EC2, Azure VMs oder jeden Linux-Server:
|
||||
|
||||
<Tabs items={['DigitalOcean', 'AWS EC2', 'Azure VM']}>
|
||||
<Tab value="DigitalOcean">
|
||||
**Empfohlen:** 16 GB RAM Droplet, Ubuntu 24.04
|
||||
|
||||
```bash
|
||||
# Create Droplet via console, then SSH in
|
||||
ssh root@your-droplet-ip
|
||||
```
|
||||
|
||||
</Tab>
|
||||
<Tab value="AWS EC2">
|
||||
**Empfohlen:** t3.xlarge (16 GB RAM), Ubuntu 24.04
|
||||
|
||||
```bash
|
||||
ssh -i your-key.pem ubuntu@your-ec2-ip
|
||||
```
|
||||
|
||||
</Tab>
|
||||
<Tab value="Azure VM">
|
||||
**Empfohlen:** Standard_D4s_v3 (16 GB RAM), Ubuntu 24.04
|
||||
|
||||
```bash
|
||||
ssh azureuser@your-vm-ip
|
||||
```
|
||||
|
||||
</Tab>
|
||||
</Tabs>
|
||||
|
||||
### Docker installieren
|
||||
|
||||
```bash
|
||||
# Install Docker (official method)
|
||||
curl -fsSL https://get.docker.com | sudo sh
|
||||
sudo usermod -aG docker $USER
|
||||
|
||||
# Logout and reconnect, then verify
|
||||
docker --version
|
||||
```
|
||||
|
||||
### Sim Studio bereitstellen
|
||||
|
||||
```bash
|
||||
git clone https://github.com/simstudioai/sim.git && cd sim
|
||||
|
||||
# Create .env with secrets
|
||||
cat > .env << EOF
|
||||
DATABASE_URL=postgresql://postgres:postgres@db:5432/simstudio
|
||||
BETTER_AUTH_SECRET=$(openssl rand -hex 32)
|
||||
ENCRYPTION_KEY=$(openssl rand -hex 32)
|
||||
INTERNAL_API_SECRET=$(openssl rand -hex 32)
|
||||
NEXT_PUBLIC_APP_URL=https://sim.yourdomain.com
|
||||
BETTER_AUTH_URL=https://sim.yourdomain.com
|
||||
NEXT_PUBLIC_SOCKET_URL=https://sim.yourdomain.com
|
||||
EOF
|
||||
|
||||
# Start
|
||||
docker compose -f docker-compose.prod.yml up -d
|
||||
```
|
||||
|
||||
### SSL mit Caddy
|
||||
|
||||
```bash
|
||||
# Install Caddy
|
||||
sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https curl
|
||||
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
|
||||
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list
|
||||
sudo apt update && sudo apt install caddy
|
||||
|
||||
# Configure (replace domain)
|
||||
echo 'sim.yourdomain.com {
|
||||
reverse_proxy localhost:3000
|
||||
handle /socket.io/* {
|
||||
reverse_proxy localhost:3002
|
||||
}
|
||||
}' | sudo tee /etc/caddy/Caddyfile
|
||||
|
||||
sudo systemctl restart caddy
|
||||
```
|
||||
|
||||
Richten Sie den DNS A-Eintrag Ihrer Domain auf die IP-Adresse Ihres Servers.
|
||||
|
||||
## Kubernetes (EKS, AKS, GKE)
|
||||
|
||||
Siehe den [Kubernetes-Leitfaden](/self-hosting/kubernetes) für Helm-Deployment auf verwaltetem Kubernetes.
|
||||
|
||||
## Verwaltete Datenbank (Optional)
|
||||
|
||||
Für den Produktivbetrieb sollten Sie einen verwalteten PostgreSQL-Dienst verwenden:
|
||||
|
||||
- **AWS RDS** / **Azure Database** / **Cloud SQL** - Aktivieren Sie die pgvector-Erweiterung
|
||||
- **Supabase** / **Neon** - pgvector enthalten
|
||||
|
||||
Setzen Sie `DATABASE_URL` in Ihrer Umgebung:
|
||||
|
||||
```bash
|
||||
DATABASE_URL="postgresql://user:pass@host:5432/db?sslmode=require"
|
||||
```
|
||||
@@ -1,113 +0,0 @@
|
||||
---
|
||||
title: Fehlerbehebung
|
||||
description: Häufige Probleme und Lösungen
|
||||
---
|
||||
|
||||
## Datenbankverbindung fehlgeschlagen
|
||||
|
||||
```bash
|
||||
# Check database is running
|
||||
docker compose ps db
|
||||
|
||||
# Test connection
|
||||
docker compose exec db psql -U postgres -c "SELECT 1"
|
||||
```
|
||||
|
||||
Überprüfen Sie das `DATABASE_URL` Format: `postgresql://user:pass@host:5432/database`
|
||||
|
||||
## Ollama-Modelle werden nicht angezeigt
|
||||
|
||||
In Docker ist `localhost` = der Container, nicht Ihr Host-Rechner.
|
||||
|
||||
```bash
|
||||
# For host-machine Ollama, use:
|
||||
OLLAMA_URL=http://host.docker.internal:11434 # macOS/Windows
|
||||
OLLAMA_URL=http://192.168.1.x:11434 # Linux (use actual IP)
|
||||
```
|
||||
|
||||
## WebSocket/Echtzeit funktioniert nicht
|
||||
|
||||
1. Prüfen Sie, ob `NEXT_PUBLIC_SOCKET_URL` mit Ihrer Domain übereinstimmt
|
||||
2. Überprüfen Sie, ob der Echtzeit-Dienst läuft: `docker compose ps realtime`
|
||||
3. Stellen Sie sicher, dass der Reverse-Proxy WebSocket-Upgrades weiterleitet (siehe [Docker-Anleitung](/self-hosting/docker))
|
||||
|
||||
## 502 Bad Gateway
|
||||
|
||||
```bash
|
||||
# Check app is running
|
||||
docker compose ps simstudio
|
||||
docker compose logs simstudio
|
||||
|
||||
# Common causes: out of memory, database not ready
|
||||
```
|
||||
|
||||
## Migrationsfehler
|
||||
|
||||
```bash
|
||||
# View migration logs
|
||||
docker compose logs migrations
|
||||
|
||||
# Run manually
|
||||
docker compose exec simstudio bun run db:migrate
|
||||
```
|
||||
|
||||
## pgvector nicht gefunden
|
||||
|
||||
Verwenden Sie das richtige PostgreSQL-Image:
|
||||
|
||||
```yaml
|
||||
image: pgvector/pgvector:pg17 # NOT postgres:17
|
||||
```
|
||||
|
||||
## Zertifikatsfehler (CERT_HAS_EXPIRED)
|
||||
|
||||
Wenn Sie SSL-Zertifikatsfehler beim Aufrufen externer APIs sehen:
|
||||
|
||||
```bash
|
||||
# Update CA certificates in container
|
||||
docker compose exec simstudio apt-get update && apt-get install -y ca-certificates
|
||||
|
||||
# Or set in environment (not recommended for production)
|
||||
NODE_TLS_REJECT_UNAUTHORIZED=0
|
||||
```
|
||||
|
||||
## Leere Seite nach dem Login
|
||||
|
||||
1. Überprüfen Sie die Browser-Konsole auf Fehler
|
||||
2. Stellen Sie sicher, dass `NEXT_PUBLIC_APP_URL` mit Ihrer tatsächlichen Domain übereinstimmt
|
||||
3. Löschen Sie Browser-Cookies und lokalen Speicher
|
||||
4. Prüfen Sie, ob alle Dienste laufen: `docker compose ps`
|
||||
|
||||
## Windows-spezifische Probleme
|
||||
|
||||
**Turbopack-Fehler unter Windows:**
|
||||
|
||||
```bash
|
||||
# Use WSL2 for better compatibility
|
||||
wsl --install
|
||||
|
||||
# Or disable Turbopack in package.json
|
||||
# Change "next dev --turbopack" to "next dev"
|
||||
```
|
||||
|
||||
**Zeilenende-Probleme:**
|
||||
|
||||
```bash
|
||||
# Configure git to use LF
|
||||
git config --global core.autocrlf input
|
||||
```
|
||||
|
||||
## Logs anzeigen
|
||||
|
||||
```bash
|
||||
# All services
|
||||
docker compose logs -f
|
||||
|
||||
# Specific service
|
||||
docker compose logs -f simstudio
|
||||
```
|
||||
|
||||
## Hilfe erhalten
|
||||
|
||||
- [GitHub Issues](https://github.com/simstudioai/sim/issues)
|
||||
- [Discord](https://discord.gg/Hr4UWYEcTT)
|
||||
@@ -1,182 +0,0 @@
|
||||
---
|
||||
title: Cursor
|
||||
description: Starten und verwalten Sie Cursor Cloud-Agenten zur Arbeit an
|
||||
GitHub-Repositories
|
||||
---
|
||||
|
||||
import { BlockInfoCard } from "@/components/ui/block-info-card"
|
||||
|
||||
<BlockInfoCard
|
||||
type="cursor"
|
||||
color="#1E1E1E"
|
||||
/>
|
||||
|
||||
{/* MANUAL-CONTENT-START:intro */}
|
||||
[Cursor](https://www.cursor.so/) ist eine KI-IDE und cloudbasierte Plattform, mit der Sie leistungsstarke KI-Agenten starten und verwalten können, die direkt mit Ihren GitHub-Repositories arbeiten können. Cursor-Agenten können Entwicklungsaufgaben automatisieren, die Produktivität Ihres Teams steigern und mit Ihnen zusammenarbeiten, indem sie Codeänderungen vornehmen, auf natürlichsprachliche Anweisungen reagieren und einen Gesprächsverlauf über ihre Aktivitäten führen.
|
||||
|
||||
Mit Cursor können Sie:
|
||||
|
||||
- **Cloud-Agenten für Codebasen starten**: Erstellen Sie sofort neue KI-Agenten, die in der Cloud an Ihren Repositories arbeiten
|
||||
- **Codierungsaufgaben mit natürlicher Sprache delegieren**: Leiten Sie Agenten mit schriftlichen Anweisungen, Änderungen und Klarstellungen an
|
||||
- **Fortschritt und Ergebnisse überwachen**: Rufen Sie den Agentenstatus ab, sehen Sie detaillierte Ergebnisse und prüfen Sie aktuelle oder abgeschlossene Aufgaben
|
||||
- **Zugriff auf den vollständigen Gesprächsverlauf**: Überprüfen Sie alle Eingabeaufforderungen und KI-Antworten für Transparenz und Nachvollziehbarkeit
|
||||
- **Steuerung und Verwaltung des Agenten-Lebenszyklus**: Listen Sie aktive Agenten auf, beenden Sie Agenten und verwalten Sie API-basierte Agentenstarts und Nachverfolgungen
|
||||
|
||||
In Sim ermöglicht die Cursor-Integration Ihren Agenten und Workflows, programmatisch mit Cursor-Cloud-Agenten zu interagieren. Das bedeutet, Sie können Sim verwenden, um:
|
||||
|
||||
- Alle Cloud-Agenten auflisten und ihren aktuellen Status durchsuchen (`cursor_list_agents`)
|
||||
- Aktuellen Status und Ausgaben für jeden Agenten abrufen (`cursor_get_agent`)
|
||||
- Den vollständigen Gesprächsverlauf für jeden Codierungsagenten anzeigen (`cursor_get_conversation`)
|
||||
- Nachfolgende Anweisungen oder neue Eingabeaufforderungen zu einem laufenden Agenten hinzufügen
|
||||
- Agenten nach Bedarf verwalten und beenden
|
||||
|
||||
Diese Integration hilft Ihnen, die flexible Intelligenz von Sim-Agenten mit den leistungsstarken Automatisierungsfunktionen von Cursor zu kombinieren, wodurch es möglich wird, KI-gesteuerte Entwicklung über Ihre Projekte hinweg zu skalieren.
|
||||
{/* MANUAL-CONTENT-END */}
|
||||
|
||||
## Gebrauchsanweisung
|
||||
|
||||
Interagieren Sie mit der Cursor Cloud Agents API, um KI-Agenten zu starten, die an Ihren GitHub-Repositories arbeiten können. Unterstützt das Starten von Agenten, das Hinzufügen von Folgeanweisungen, die Statusprüfung, die Anzeige von Konversationen und die Verwaltung des Agenten-Lebenszyklus.
|
||||
|
||||
## Tools
|
||||
|
||||
### `cursor_list_agents`
|
||||
|
||||
Listet alle Cloud-Agenten für den authentifizierten Benutzer mit optionaler Paginierung auf.
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `apiKey` | string | Ja | Cursor API-Schlüssel |
|
||||
| `limit` | number | Nein | Anzahl der zurückzugebenden Agenten \(Standard: 20, max: 100\) |
|
||||
| `cursor` | string | Nein | Paginierungscursor aus der vorherigen Antwort |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `content` | string | Menschenlesbare Liste der Agenten |
|
||||
| `metadata` | object | Metadaten der Agentenliste |
|
||||
|
||||
### `cursor_get_agent`
|
||||
|
||||
Ruft den aktuellen Status und die Ergebnisse eines Cloud-Agenten ab.
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `apiKey` | string | Ja | Cursor API-Schlüssel |
|
||||
| `agentId` | string | Ja | Eindeutige Kennung für den Cloud-Agenten \(z.B. bc_abc123\) |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `content` | string | Menschenlesbare Agentendetails |
|
||||
| `metadata` | object | Agenten-Metadaten |
|
||||
|
||||
### `cursor_get_conversation`
|
||||
|
||||
Ruft den Konversationsverlauf eines Cloud-Agenten ab, einschließlich aller Benutzeraufforderungen und Assistentenantworten.
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `apiKey` | string | Ja | Cursor API-Schlüssel |
|
||||
| `agentId` | string | Ja | Eindeutige Kennung für den Cloud-Agenten \(z.B. bc_abc123\) |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `content` | string | Menschenlesbarer Konversationsverlauf |
|
||||
| `metadata` | object | Konversations-Metadaten |
|
||||
|
||||
### `cursor_launch_agent`
|
||||
|
||||
Starten Sie einen neuen Cloud-Agenten, um an einem GitHub-Repository mit den angegebenen Anweisungen zu arbeiten.
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `apiKey` | string | Ja | Cursor API-Schlüssel |
|
||||
| `repository` | string | Ja | GitHub-Repository-URL \(z.B. https://github.com/your-org/your-repo\) |
|
||||
| `ref` | string | Nein | Branch, Tag oder Commit, von dem aus gearbeitet werden soll \(standardmäßig der Hauptbranch\) |
|
||||
| `promptText` | string | Ja | Der Anweisungstext für den Agenten |
|
||||
| `promptImages` | string | Nein | JSON-Array von Bildobjekten mit Base64-Daten und Abmessungen |
|
||||
| `model` | string | Nein | Zu verwendendes Modell \(leer lassen für automatische Auswahl\) |
|
||||
| `branchName` | string | Nein | Benutzerdefinierter Branch-Name für den Agenten |
|
||||
| `autoCreatePr` | boolean | Nein | Automatisches Erstellen eines PR, wenn der Agent fertig ist |
|
||||
| `openAsCursorGithubApp` | boolean | Nein | Öffnen des PR als Cursor GitHub App |
|
||||
| `skipReviewerRequest` | boolean | Nein | Überspringen der Anfrage nach Prüfern für den PR |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `content` | string | Erfolgsmeldung mit Agenten-Details |
|
||||
| `metadata` | object | Metadaten zum Startergebnis |
|
||||
|
||||
### `cursor_add_followup`
|
||||
|
||||
Fügen Sie einem bestehenden Cloud-Agenten eine Folgeanweisung hinzu.
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `apiKey` | string | Ja | Cursor API-Schlüssel |
|
||||
| `agentId` | string | Ja | Eindeutige Kennung für den Cloud-Agenten \(z.B. bc_abc123\) |
|
||||
| `followupPromptText` | string | Ja | Der Folgeanweisungstext für den Agenten |
|
||||
| `promptImages` | string | Nein | JSON-Array von Bildobjekten mit Base64-Daten und Abmessungen \(max. 5\) |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `content` | string | Erfolgsmeldung |
|
||||
| `metadata` | object | Ergebnis-Metadaten |
|
||||
|
||||
### `cursor_stop_agent`
|
||||
|
||||
Stoppt einen laufenden Cloud-Agenten. Dies pausiert den Agenten, ohne ihn zu löschen.
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `apiKey` | string | Ja | Cursor API-Schlüssel |
|
||||
| `agentId` | string | Ja | Eindeutige Kennung für den Cloud-Agenten \(z.B. bc_abc123\) |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `content` | string | Erfolgsmeldung |
|
||||
| `metadata` | object | Ergebnis-Metadaten |
|
||||
|
||||
### `cursor_delete_agent`
|
||||
|
||||
Löscht einen Cloud-Agenten dauerhaft. Diese Aktion kann nicht rückgängig gemacht werden.
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `apiKey` | string | Ja | Cursor API-Schlüssel |
|
||||
| `agentId` | string | Ja | Eindeutige Kennung für den Cloud-Agenten \(z.B. bc_abc123\) |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `content` | string | Erfolgsmeldung |
|
||||
| `metadata` | object | Ergebnis-Metadaten |
|
||||
|
||||
## Hinweise
|
||||
|
||||
- Kategorie: `tools`
|
||||
- Typ: `cursor`
|
||||
@@ -1,63 +0,0 @@
|
||||
---
|
||||
title: DuckDuckGo
|
||||
description: Suche mit DuckDuckGo
|
||||
---
|
||||
|
||||
import { BlockInfoCard } from "@/components/ui/block-info-card"
|
||||
|
||||
<BlockInfoCard
|
||||
type="duckduckgo"
|
||||
color="#FFFFFF"
|
||||
/>
|
||||
|
||||
{/* MANUAL-CONTENT-START:intro */}
|
||||
[DuckDuckGo](https://duckduckgo.com/) ist eine datenschutzorientierte Websuchmaschine, die sofortige Antworten, Zusammenfassungen, verwandte Themen und mehr liefert – ohne dich oder deine Suchen zu verfolgen. DuckDuckGo macht es einfach, Informationen ohne Benutzerprofilierung oder zielgerichtete Werbung zu finden.
|
||||
|
||||
Mit DuckDuckGo in Sim kannst du:
|
||||
|
||||
- **Im Web suchen**: Finde sofort Antworten, Fakten und Übersichten für eine bestimmte Suchanfrage
|
||||
- **Direkte Antworten erhalten**: Erhalte spezifische Antworten für Berechnungen, Umrechnungen oder Faktenfragen
|
||||
- **Auf Zusammenfassungen zugreifen**: Erhalte kurze Zusammenfassungen oder Beschreibungen für deine Suchthemen
|
||||
- **Verwandte Themen abrufen**: Entdecke Links und Referenzen, die für deine Suche relevant sind
|
||||
- **Ausgabe filtern**: Optional HTML entfernen oder Begriffsklärungen überspringen für sauberere Ergebnisse
|
||||
|
||||
Diese Funktionen ermöglichen es deinen Sim-Agenten, den Zugriff auf aktuelles Webwissen zu automatisieren – vom Auffinden von Fakten in einem Workflow bis hin zur Anreicherung von Dokumenten und Analysen mit aktuellen Informationen. Da DuckDuckGos Instant Answers API offen ist und keinen API-Schlüssel erfordert, lässt sie sich einfach und datenschutzsicher in deine automatisierten Geschäftsprozesse integrieren.
|
||||
{/* MANUAL-CONTENT-END */}
|
||||
|
||||
## Nutzungsanleitung
|
||||
|
||||
Durchsuche das Web mit der DuckDuckGo Instant Answers API. Liefert sofortige Antworten, Zusammenfassungen, verwandte Themen und mehr. Kostenlos nutzbar ohne API-Schlüssel.
|
||||
|
||||
## Tools
|
||||
|
||||
### `duckduckgo_search`
|
||||
|
||||
Durchsuche das Web mit der DuckDuckGo Instant Answers API. Liefert sofortige Antworten, Zusammenfassungen und verwandte Themen für deine Anfrage. Kostenlos nutzbar ohne API-Schlüssel.
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `query` | string | Ja | Die auszuführende Suchanfrage |
|
||||
| `noHtml` | boolean | Nein | HTML aus Text in Ergebnissen entfernen \(Standard: true\) |
|
||||
| `skipDisambig` | boolean | Nein | Begriffsklärungsergebnisse überspringen \(Standard: false\) |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `heading` | string | Die Überschrift/der Titel der Sofortantwort |
|
||||
| `abstract` | string | Eine kurze Zusammenfassung des Themas |
|
||||
| `abstractText` | string | Einfache Textversion der Zusammenfassung |
|
||||
| `abstractSource` | string | Die Quelle der Zusammenfassung \(z.B. Wikipedia\) |
|
||||
| `abstractURL` | string | URL zur Quelle der Zusammenfassung |
|
||||
| `image` | string | URL zu einem Bild zum Thema |
|
||||
| `answer` | string | Direkte Antwort, falls verfügbar \(z.B. für Berechnungen\) |
|
||||
| `answerType` | string | Typ der Antwort \(z.B. calc, ip, usw.\) |
|
||||
| `type` | string | Antworttyp: A \(Artikel\), D \(Begriffsklärung\), C \(Kategorie\), N \(Name\), E \(Exklusiv\) |
|
||||
| `relatedTopics` | array | Array verwandter Themen mit URLs und Beschreibungen |
|
||||
|
||||
## Hinweise
|
||||
|
||||
- Kategorie: `tools`
|
||||
- Typ: `duckduckgo`
|
||||
@@ -1,217 +0,0 @@
|
||||
---
|
||||
title: Google Groups
|
||||
description: Google Workspace-Gruppen und deren Mitglieder verwalten
|
||||
---
|
||||
|
||||
import { BlockInfoCard } from "@/components/ui/block-info-card"
|
||||
|
||||
<BlockInfoCard
|
||||
type="google_groups"
|
||||
color="#E8F0FE"
|
||||
/>
|
||||
|
||||
## Gebrauchsanweisung
|
||||
|
||||
Verbinden Sie sich mit Google Workspace, um Gruppen und deren Mitglieder mit der Admin SDK Directory API zu erstellen, zu aktualisieren und zu verwalten.
|
||||
|
||||
## Tools
|
||||
|
||||
### `google_groups_list_groups`
|
||||
|
||||
Alle Gruppen in einer Google Workspace-Domain auflisten
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `customer` | string | Nein | Kunden-ID oder "my_customer" für die Domain des authentifizierten Benutzers |
|
||||
| `domain` | string | Nein | Domainname zum Filtern von Gruppen |
|
||||
| `maxResults` | number | Nein | Maximale Anzahl der zurückzugebenden Ergebnisse \(1-200\) |
|
||||
| `pageToken` | string | Nein | Token für Paginierung |
|
||||
| `query` | string | Nein | Suchabfrage zum Filtern von Gruppen \(z.B. "email:admin*"\) |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `output` | json | Google Groups API-Antwortdaten |
|
||||
|
||||
### `google_groups_get_group`
|
||||
|
||||
Details einer bestimmten Google-Gruppe nach E-Mail oder Gruppen-ID abrufen
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `groupKey` | string | Ja | E-Mail-Adresse der Gruppe oder eindeutige Gruppen-ID |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `output` | json | Google Groups API-Antwortdaten |
|
||||
|
||||
### `google_groups_create_group`
|
||||
|
||||
Eine neue Google-Gruppe in der Domain erstellen
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `email` | string | Ja | E-Mail-Adresse für die neue Gruppe (z.B. team@yourdomain.com) |
|
||||
| `name` | string | Ja | Anzeigename für die Gruppe |
|
||||
| `description` | string | Nein | Beschreibung der Gruppe |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `output` | json | Google Groups API-Antwortdaten |
|
||||
|
||||
### `google_groups_update_group`
|
||||
|
||||
Eine bestehende Google-Gruppe aktualisieren
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `groupKey` | string | Ja | E-Mail-Adresse der Gruppe oder eindeutige Gruppen-ID |
|
||||
| `name` | string | Nein | Neuer Anzeigename für die Gruppe |
|
||||
| `description` | string | Nein | Neue Beschreibung für die Gruppe |
|
||||
| `email` | string | Nein | Neue E-Mail-Adresse für die Gruppe |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `output` | json | Google Groups API-Antwortdaten |
|
||||
|
||||
### `google_groups_delete_group`
|
||||
|
||||
Eine Google-Gruppe löschen
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `groupKey` | string | Ja | E-Mail-Adresse der Gruppe oder eindeutige Gruppen-ID zum Löschen |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `output` | json | Google Groups API-Antwortdaten |
|
||||
|
||||
### `google_groups_list_members`
|
||||
|
||||
Alle Mitglieder einer Google-Gruppe auflisten
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `groupKey` | string | Ja | E-Mail-Adresse der Gruppe oder eindeutige Gruppen-ID |
|
||||
| `maxResults` | number | Nein | Maximale Anzahl der zurückzugebenden Ergebnisse \(1-200\) |
|
||||
| `pageToken` | string | Nein | Token für Seitenumbruch |
|
||||
| `roles` | string | Nein | Nach Rollen filtern \(durch Komma getrennt: OWNER, MANAGER, MEMBER\) |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `output` | json | Google Groups API-Antwortdaten |
|
||||
|
||||
### `google_groups_get_member`
|
||||
|
||||
Details eines bestimmten Mitglieds in einer Google-Gruppe abrufen
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `groupKey` | string | Ja | E-Mail-Adresse der Gruppe oder eindeutige Gruppen-ID |
|
||||
| `memberKey` | string | Ja | E-Mail-Adresse des Mitglieds oder eindeutige Mitglieds-ID |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `output` | json | Google Groups API-Antwortdaten |
|
||||
|
||||
### `google_groups_add_member`
|
||||
|
||||
Ein neues Mitglied zu einer Google-Gruppe hinzufügen
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `groupKey` | string | Ja | E-Mail-Adresse der Gruppe oder eindeutige Gruppen-ID |
|
||||
| `email` | string | Ja | E-Mail-Adresse des hinzuzufügenden Mitglieds |
|
||||
| `role` | string | Nein | Rolle für das Mitglied \(MEMBER, MANAGER oder OWNER\). Standardmäßig MEMBER. |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `output` | json | Google Groups API-Antwortdaten |
|
||||
|
||||
### `google_groups_remove_member`
|
||||
|
||||
Ein Mitglied aus einer Google-Gruppe entfernen
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `groupKey` | string | Ja | E-Mail-Adresse der Gruppe oder eindeutige Gruppen-ID |
|
||||
| `memberKey` | string | Ja | E-Mail-Adresse oder eindeutige ID des zu entfernenden Mitglieds |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `output` | json | Google Groups API-Antwortdaten |
|
||||
|
||||
### `google_groups_update_member`
|
||||
|
||||
Ein Mitglied aktualisieren
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `groupKey` | string | Ja | E-Mail-Adresse der Gruppe oder eindeutige Gruppen-ID |
|
||||
| `memberKey` | string | Ja | E-Mail-Adresse des Mitglieds oder eindeutige Mitglieds-ID |
|
||||
| `role` | string | Ja | Neue Rolle für das Mitglied \(MEMBER, MANAGER oder OWNER\) |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `output` | json | Google Groups API-Antwortdaten |
|
||||
|
||||
### `google_groups_has_member`
|
||||
|
||||
Prüfen, ob ein Benutzer Mitglied einer Google-Gruppe ist
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `groupKey` | string | Ja | E-Mail-Adresse der Gruppe oder eindeutige Gruppen-ID |
|
||||
| `memberKey` | string | Ja | Zu prüfende E-Mail-Adresse des Mitglieds oder eindeutige Mitglieds-ID |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `output` | json | Google Groups API-Antwortdaten |
|
||||
|
||||
## Hinweise
|
||||
|
||||
- Kategorie: `tools`
|
||||
- Typ: `google_groups`
|
||||
@@ -135,684 +135,283 @@ Löschen eines Kontos aus Salesforce CRM
|
||||
|
||||
### `salesforce_get_contacts`
|
||||
|
||||
Kontakt(e) aus Salesforce abrufen - einzelner Kontakt, wenn ID angegeben, oder Liste, wenn nicht
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `idToken` | string | Nein | Keine Beschreibung |
|
||||
| `instanceUrl` | string | Nein | Keine Beschreibung |
|
||||
| `contactId` | string | Nein | Kontakt-ID \(wenn angegeben, wird ein einzelner Kontakt zurückgegeben\) |
|
||||
| `limit` | string | Nein | Anzahl der Ergebnisse \(Standard: 100, max: 2000\). Nur für Listenabfrage. |
|
||||
| `fields` | string | Nein | Kommagetrennte Felder \(z.B. "Id,FirstName,LastName,Email,Phone"\) |
|
||||
| `orderBy` | string | Nein | Sortierfeld \(z.B. "LastName ASC"\). Nur für Listenabfrage. |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Status des Operationserfolgs |
|
||||
| `output` | object | Kontaktdaten |
|
||||
| `output` | json | Ergebnisdaten der Operation |
|
||||
|
||||
### `salesforce_create_contact`
|
||||
|
||||
Einen neuen Kontakt im Salesforce CRM erstellen
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `idToken` | string | Nein | Keine Beschreibung |
|
||||
| `instanceUrl` | string | Nein | Keine Beschreibung |
|
||||
| `lastName` | string | Ja | Nachname \(erforderlich\) |
|
||||
| `firstName` | string | Nein | Vorname |
|
||||
| `email` | string | Nein | E-Mail-Adresse |
|
||||
| `phone` | string | Nein | Telefonnummer |
|
||||
| `accountId` | string | Nein | Konto-ID, mit der der Kontakt verknüpft werden soll |
|
||||
| `title` | string | Nein | Keine Beschreibung |
|
||||
| `department` | string | Nein | Abteilung |
|
||||
| `mailingStreet` | string | Nein | Postanschrift \(Straße\) |
|
||||
| `mailingCity` | string | Nein | Postanschrift \(Stadt\) |
|
||||
| `mailingState` | string | Nein | Postanschrift \(Bundesland\) |
|
||||
| `mailingPostalCode` | string | Nein | Postanschrift \(Postleitzahl\) |
|
||||
| `mailingCountry` | string | Nein | Postanschrift \(Land\) |
|
||||
| `description` | string | Nein | Kontaktbeschreibung |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Status des Operationserfolgs |
|
||||
| `output` | object | Daten des erstellten Kontakts |
|
||||
| `output` | json | Ergebnisdaten der Operation |
|
||||
|
||||
### `salesforce_update_contact`
|
||||
|
||||
Aktualisieren eines bestehenden Kontakts in Salesforce CRM
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `idToken` | string | Nein | Keine Beschreibung |
|
||||
| `instanceUrl` | string | Nein | Keine Beschreibung |
|
||||
| `contactId` | string | Ja | Zu aktualisierende Kontakt-ID \(erforderlich\) |
|
||||
| `lastName` | string | Nein | Nachname |
|
||||
| `firstName` | string | Nein | Vorname |
|
||||
| `email` | string | Nein | E-Mail-Adresse |
|
||||
| `phone` | string | Nein | Telefonnummer |
|
||||
| `accountId` | string | Nein | Zu verknüpfende Konto-ID |
|
||||
| `title` | string | Nein | Keine Beschreibung |
|
||||
| `department` | string | Nein | Abteilung |
|
||||
| `mailingStreet` | string | Nein | Postanschrift (Straße) |
|
||||
| `mailingCity` | string | Nein | Postanschrift (Stadt) |
|
||||
| `mailingState` | string | Nein | Postanschrift (Bundesland) |
|
||||
| `mailingPostalCode` | string | Nein | Postanschrift (Postleitzahl) |
|
||||
| `mailingCountry` | string | Nein | Postanschrift (Land) |
|
||||
| `description` | string | Nein | Beschreibung |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Status des Operationserfolgs |
|
||||
| `output` | object | Daten des aktualisierten Kontakts |
|
||||
| `output` | json | Ergebnisdaten der Operation |
|
||||
|
||||
### `salesforce_delete_contact`
|
||||
|
||||
Löschen eines Kontakts aus Salesforce CRM
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `idToken` | string | Nein | Keine Beschreibung |
|
||||
| `instanceUrl` | string | Nein | Keine Beschreibung |
|
||||
| `contactId` | string | Ja | Zu löschende Kontakt-ID \(erforderlich\) |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Status des Operationserfolgs |
|
||||
| `output` | object | Daten des gelöschten Kontakts |
|
||||
| `output` | json | Ergebnisdaten der Operation |
|
||||
|
||||
### `salesforce_get_leads`
|
||||
|
||||
Lead(s) aus Salesforce abrufen
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `idToken` | string | Nein | Keine Beschreibung |
|
||||
| `instanceUrl` | string | Nein | Keine Beschreibung |
|
||||
| `leadId` | string | Nein | Lead-ID \(optional\) |
|
||||
| `limit` | string | Nein | Maximale Ergebnisse \(Standard: 100\) |
|
||||
| `fields` | string | Nein | Kommagetrennte Felder |
|
||||
| `orderBy` | string | Nein | Sortierfeld |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Erfolgsstatus |
|
||||
| `output` | object | Lead-Daten |
|
||||
| `success` | boolean | Status des Operationserfolgs |
|
||||
| `output` | json | Ergebnisdaten der Operation |
|
||||
|
||||
### `salesforce_create_lead`
|
||||
|
||||
Einen neuen Lead erstellen
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `idToken` | string | Nein | Keine Beschreibung |
|
||||
| `instanceUrl` | string | Nein | Keine Beschreibung |
|
||||
| `lastName` | string | Ja | Nachname \(erforderlich\) |
|
||||
| `company` | string | Ja | Unternehmen \(erforderlich\) |
|
||||
| `firstName` | string | Nein | Vorname |
|
||||
| `email` | string | Nein | Keine Beschreibung |
|
||||
| `phone` | string | Nein | Keine Beschreibung |
|
||||
| `status` | string | Nein | Lead-Status |
|
||||
| `leadSource` | string | Nein | Lead-Quelle |
|
||||
| `title` | string | Nein | Keine Beschreibung |
|
||||
| `description` | string | Nein | Beschreibung |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Erfolg |
|
||||
| `output` | object | Erstellter Lead |
|
||||
| `success` | boolean | Status des Operationserfolgs |
|
||||
| `output` | json | Ergebnisdaten der Operation |
|
||||
|
||||
### `salesforce_update_lead`
|
||||
|
||||
Aktualisieren eines vorhandenen Leads
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `idToken` | string | Nein | Keine Beschreibung |
|
||||
| `instanceUrl` | string | Nein | Keine Beschreibung |
|
||||
| `leadId` | string | Ja | Lead-ID (erforderlich) |
|
||||
| `lastName` | string | Nein | Nachname |
|
||||
| `company` | string | Nein | Keine Beschreibung |
|
||||
| `firstName` | string | Nein | Vorname |
|
||||
| `email` | string | Nein | Keine Beschreibung |
|
||||
| `phone` | string | Nein | Keine Beschreibung |
|
||||
| `status` | string | Nein | Lead-Status |
|
||||
| `leadSource` | string | Nein | Lead-Quelle |
|
||||
| `title` | string | Nein | Keine Beschreibung |
|
||||
| `description` | string | Nein | Beschreibung |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Erfolg |
|
||||
| `output` | object | Aktualisierter Lead |
|
||||
| `success` | boolean | Status des Operationserfolgs |
|
||||
| `output` | json | Ergebnisdaten der Operation |
|
||||
|
||||
### `salesforce_delete_lead`
|
||||
|
||||
Löschen eines Leads
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `idToken` | string | Nein | Keine Beschreibung |
|
||||
| `instanceUrl` | string | Nein | Keine Beschreibung |
|
||||
| `leadId` | string | Ja | Lead-ID (erforderlich) |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Erfolg |
|
||||
| `output` | object | Gelöschter Lead |
|
||||
| `success` | boolean | Status des Operationserfolgs |
|
||||
| `output` | json | Ergebnisdaten der Operation |
|
||||
|
||||
### `salesforce_get_opportunities`
|
||||
|
||||
Verkaufschance(n) aus Salesforce abrufen
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `idToken` | string | Nein | Keine Beschreibung |
|
||||
| `instanceUrl` | string | Nein | Keine Beschreibung |
|
||||
| `opportunityId` | string | Nein | Verkaufschancen-ID \(optional\) |
|
||||
| `limit` | string | Nein | Maximale Ergebnisse \(Standard: 100\) |
|
||||
| `fields` | string | Nein | Kommagetrennte Felder |
|
||||
| `orderBy` | string | Nein | Sortierfeld |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Erfolg |
|
||||
| `output` | object | Verkaufschancendaten |
|
||||
| `success` | boolean | Status des Operationserfolgs |
|
||||
| `output` | json | Ergebnisdaten der Operation |
|
||||
|
||||
### `salesforce_create_opportunity`
|
||||
|
||||
Eine neue Verkaufschance erstellen
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `idToken` | string | Nein | Keine Beschreibung |
|
||||
| `instanceUrl` | string | Nein | Keine Beschreibung |
|
||||
| `name` | string | Ja | Name der Verkaufschance \(erforderlich\) |
|
||||
| `stageName` | string | Ja | Phasenname \(erforderlich\) |
|
||||
| `closeDate` | string | Ja | Abschlussdatum JJJJ-MM-TT \(erforderlich\) |
|
||||
| `accountId` | string | Nein | Konto-ID |
|
||||
| `amount` | string | Nein | Betrag \(Zahl\) |
|
||||
| `probability` | string | Nein | Wahrscheinlichkeit \(0-100\) |
|
||||
| `description` | string | Nein | Beschreibung |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Erfolg |
|
||||
| `output` | object | Erstellte Verkaufschance |
|
||||
| `success` | boolean | Status des Operationserfolgs |
|
||||
| `output` | json | Ergebnisdaten der Operation |
|
||||
|
||||
### `salesforce_update_opportunity`
|
||||
|
||||
Aktualisieren einer bestehenden Verkaufschance
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `idToken` | string | Nein | Keine Beschreibung |
|
||||
| `instanceUrl` | string | Nein | Keine Beschreibung |
|
||||
| `opportunityId` | string | Ja | Verkaufschancen-ID (erforderlich) |
|
||||
| `name` | string | Nein | Name der Verkaufschance |
|
||||
| `stageName` | string | Nein | Phasenname |
|
||||
| `closeDate` | string | Nein | Abschlussdatum JJJJ-MM-TT |
|
||||
| `accountId` | string | Nein | Konto-ID |
|
||||
| `amount` | string | Nein | Keine Beschreibung |
|
||||
| `probability` | string | Nein | Wahrscheinlichkeit (0-100) |
|
||||
| `description` | string | Nein | Beschreibung |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Erfolg |
|
||||
| `output` | object | Aktualisierte Verkaufschance |
|
||||
| `success` | boolean | Status des Operationserfolgs |
|
||||
| `output` | json | Ergebnisdaten der Operation |
|
||||
|
||||
### `salesforce_delete_opportunity`
|
||||
|
||||
Löschen einer Verkaufschance
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `idToken` | string | Nein | Keine Beschreibung |
|
||||
| `instanceUrl` | string | Nein | Keine Beschreibung |
|
||||
| `opportunityId` | string | Ja | Verkaufschancen-ID (erforderlich) |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Erfolg |
|
||||
| `output` | object | Gelöschte Verkaufschance |
|
||||
| `success` | boolean | Status des Operationserfolgs |
|
||||
| `output` | json | Ergebnisdaten der Operation |
|
||||
|
||||
### `salesforce_get_cases`
|
||||
|
||||
Fall/Fälle aus Salesforce abrufen
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `idToken` | string | Nein | Keine Beschreibung |
|
||||
| `instanceUrl` | string | Nein | Keine Beschreibung |
|
||||
| `caseId` | string | Nein | Fall-ID \(optional\) |
|
||||
| `limit` | string | Nein | Maximale Ergebnisse \(Standard: 100\) |
|
||||
| `fields` | string | Nein | Kommagetrennte Felder |
|
||||
| `orderBy` | string | Nein | Sortierfeld |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Erfolg |
|
||||
| `output` | object | Falldaten |
|
||||
| `success` | boolean | Status des Operationserfolgs |
|
||||
| `output` | json | Ergebnisdaten der Operation |
|
||||
|
||||
### `salesforce_create_case`
|
||||
|
||||
Einen neuen Fall erstellen
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `idToken` | string | Nein | Keine Beschreibung |
|
||||
| `instanceUrl` | string | Nein | Keine Beschreibung |
|
||||
| `subject` | string | Ja | Fallbetreff \(erforderlich\) |
|
||||
| `status` | string | Nein | Status \(z.B. Neu, In Bearbeitung, Eskaliert\) |
|
||||
| `priority` | string | Nein | Priorität \(z.B. Niedrig, Mittel, Hoch\) |
|
||||
| `origin` | string | Nein | Ursprung \(z.B. Telefon, E-Mail, Web\) |
|
||||
| `contactId` | string | Nein | Kontakt-ID |
|
||||
| `accountId` | string | Nein | Konto-ID |
|
||||
| `description` | string | Nein | Beschreibung |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Erfolg |
|
||||
| `output` | object | Erstellter Fall |
|
||||
| `success` | boolean | Status des Operationserfolgs |
|
||||
| `output` | json | Ergebnisdaten der Operation |
|
||||
|
||||
### `salesforce_update_case`
|
||||
|
||||
Aktualisieren eines vorhandenen Falls
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `idToken` | string | Nein | Keine Beschreibung |
|
||||
| `instanceUrl` | string | Nein | Keine Beschreibung |
|
||||
| `caseId` | string | Ja | Fall-ID \(erforderlich\) |
|
||||
| `subject` | string | Nein | Fallbetreff |
|
||||
| `status` | string | Nein | Status |
|
||||
| `priority` | string | Nein | Priorität |
|
||||
| `description` | string | Nein | Beschreibung |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Erfolg |
|
||||
| `output` | object | Aktualisierter Fall |
|
||||
| `success` | boolean | Status des Operationserfolgs |
|
||||
| `output` | json | Ergebnisdaten der Operation |
|
||||
|
||||
### `salesforce_delete_case`
|
||||
|
||||
Löschen eines Falls
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `idToken` | string | Nein | Keine Beschreibung |
|
||||
| `instanceUrl` | string | Nein | Keine Beschreibung |
|
||||
| `caseId` | string | Ja | Fall-ID \(erforderlich\) |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Erfolg |
|
||||
| `output` | object | Gelöschter Fall |
|
||||
| `success` | boolean | Status des Operationserfolgs |
|
||||
| `output` | json | Ergebnisdaten der Operation |
|
||||
|
||||
### `salesforce_get_tasks`
|
||||
|
||||
Aufgabe(n) von Salesforce abrufen
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `idToken` | string | Nein | Keine Beschreibung |
|
||||
| `instanceUrl` | string | Nein | Keine Beschreibung |
|
||||
| `taskId` | string | Nein | Aufgaben-ID \(optional\) |
|
||||
| `limit` | string | Nein | Maximale Ergebnisse \(Standard: 100\) |
|
||||
| `fields` | string | Nein | Kommagetrennte Felder |
|
||||
| `orderBy` | string | Nein | Sortierfeld |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Erfolgsstatus |
|
||||
| `output` | object | Aufgabendaten |
|
||||
| `success` | boolean | Status des Operationserfolgs |
|
||||
| `output` | json | Ergebnisdaten der Operation |
|
||||
|
||||
### `salesforce_create_task`
|
||||
|
||||
Neue Aufgabe erstellen
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `idToken` | string | Nein | Keine Beschreibung |
|
||||
| `instanceUrl` | string | Nein | Keine Beschreibung |
|
||||
| `subject` | string | Ja | Aufgabenbetreff \(erforderlich\) |
|
||||
| `status` | string | Nein | Status \(z.B. Nicht begonnen, In Bearbeitung, Abgeschlossen\) |
|
||||
| `priority` | string | Nein | Priorität \(z.B. Niedrig, Normal, Hoch\) |
|
||||
| `activityDate` | string | Nein | Fälligkeitsdatum JJJJ-MM-TT |
|
||||
| `whoId` | string | Nein | Zugehörige Kontakt-/Lead-ID |
|
||||
| `whatId` | string | Nein | Zugehörige Konto-/Opportunity-ID |
|
||||
| `description` | string | Nein | Beschreibung |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Erfolgsstatus |
|
||||
| `output` | object | Erstellte Aufgabe |
|
||||
| `success` | boolean | Status des Operationserfolgs |
|
||||
| `output` | json | Ergebnisdaten der Operation |
|
||||
|
||||
### `salesforce_update_task`
|
||||
|
||||
Bestehende Aufgabe aktualisieren
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `idToken` | string | Nein | Keine Beschreibung |
|
||||
| `instanceUrl` | string | Nein | Keine Beschreibung |
|
||||
| `taskId` | string | Ja | Aufgaben-ID \(erforderlich\) |
|
||||
| `subject` | string | Nein | Aufgabenbetreff |
|
||||
| `status` | string | Nein | Status |
|
||||
| `priority` | string | Nein | Priorität |
|
||||
| `activityDate` | string | Nein | Fälligkeitsdatum JJJJ-MM-TT |
|
||||
| `description` | string | Nein | Beschreibung |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Erfolg |
|
||||
| `output` | object | Aktualisierte Aufgabe |
|
||||
| `success` | boolean | Status des Operationserfolgs |
|
||||
| `output` | json | Ergebnisdaten der Operation |
|
||||
|
||||
### `salesforce_delete_task`
|
||||
|
||||
Aufgabe löschen
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `idToken` | string | Nein | Keine Beschreibung |
|
||||
| `instanceUrl` | string | Nein | Keine Beschreibung |
|
||||
| `taskId` | string | Ja | Aufgaben-ID \(erforderlich\) |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Erfolg |
|
||||
| `output` | object | Gelöschte Aufgabe |
|
||||
|
||||
### `salesforce_list_reports`
|
||||
|
||||
Liste der für den aktuellen Benutzer zugänglichen Berichte abrufen
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `idToken` | string | Nein | Keine Beschreibung |
|
||||
| `instanceUrl` | string | Nein | Keine Beschreibung |
|
||||
| `folderName` | string | Nein | Nach Ordnernamen filtern |
|
||||
| `searchTerm` | string | Nein | Suchbegriff zum Filtern von Berichten nach Namen |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Erfolgsstatus |
|
||||
| `output` | object | Berichtsdaten |
|
||||
|
||||
### `salesforce_get_report`
|
||||
|
||||
Metadaten und Beschreibungsinformationen für einen bestimmten Bericht abrufen
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `idToken` | string | Nein | Keine Beschreibung |
|
||||
| `instanceUrl` | string | Nein | Keine Beschreibung |
|
||||
| `reportId` | string | Ja | Berichts-ID \(erforderlich\) |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Erfolgsstatus |
|
||||
| `output` | object | Berichtsmetadaten |
|
||||
|
||||
### `salesforce_run_report`
|
||||
|
||||
Einen Bericht ausführen und die Ergebnisse abrufen
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `idToken` | string | Nein | Keine Beschreibung |
|
||||
| `instanceUrl` | string | Nein | Keine Beschreibung |
|
||||
| `reportId` | string | Ja | Berichts-ID \(erforderlich\) |
|
||||
| `includeDetails` | string | Nein | Detailzeilen einschließen \(true/false, Standard: true\) |
|
||||
| `filters` | string | Nein | JSON-String der anzuwendenden Berichtsfilter |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Erfolgsstatus |
|
||||
| `output` | object | Berichtsergebnisse |
|
||||
|
||||
### `salesforce_list_report_types`
|
||||
|
||||
Eine Liste der verfügbaren Berichtstypen abrufen
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `idToken` | string | Nein | Keine Beschreibung |
|
||||
| `instanceUrl` | string | Nein | Keine Beschreibung |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Erfolgsstatus |
|
||||
| `output` | object | Daten zu Berichtstypen |
|
||||
|
||||
### `salesforce_list_dashboards`
|
||||
|
||||
Eine Liste der für den aktuellen Benutzer zugänglichen Dashboards abrufen
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `idToken` | string | Nein | Keine Beschreibung |
|
||||
| `instanceUrl` | string | Nein | Keine Beschreibung |
|
||||
| `folderName` | string | Nein | Nach Ordnernamen filtern |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Erfolgsstatus |
|
||||
| `output` | object | Dashboard-Daten |
|
||||
|
||||
### `salesforce_get_dashboard`
|
||||
|
||||
Details und Ergebnisse für ein bestimmtes Dashboard abrufen
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `idToken` | string | Nein | Keine Beschreibung |
|
||||
| `instanceUrl` | string | Nein | Keine Beschreibung |
|
||||
| `dashboardId` | string | Ja | Dashboard-ID \(erforderlich\) |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Erfolgsstatus |
|
||||
| `output` | object | Dashboard-Daten |
|
||||
|
||||
### `salesforce_refresh_dashboard`
|
||||
|
||||
Ein Dashboard aktualisieren, um die neuesten Daten zu erhalten
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `idToken` | string | Nein | Keine Beschreibung |
|
||||
| `instanceUrl` | string | Nein | Keine Beschreibung |
|
||||
| `dashboardId` | string | Ja | Dashboard-ID \(erforderlich\) |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Erfolgsstatus |
|
||||
| `output` | object | Aktualisierte Dashboard-Daten |
|
||||
|
||||
### `salesforce_query`
|
||||
|
||||
Eine benutzerdefinierte SOQL-Abfrage ausführen, um Daten aus Salesforce abzurufen
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `idToken` | string | Nein | Keine Beschreibung |
|
||||
| `instanceUrl` | string | Nein | Keine Beschreibung |
|
||||
| `query` | string | Ja | SOQL-Abfrage zur Ausführung \(z.B. SELECT Id, Name FROM Account LIMIT 10\) |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Erfolgsstatus |
|
||||
| `output` | object | Abfrageergebnisse |
|
||||
|
||||
### `salesforce_query_more`
|
||||
|
||||
Abrufen zusätzlicher Abfrageergebnisse mit der nextRecordsUrl aus einer vorherigen Abfrage
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `idToken` | string | Nein | Keine Beschreibung |
|
||||
| `instanceUrl` | string | Nein | Keine Beschreibung |
|
||||
| `nextRecordsUrl` | string | Ja | Die nextRecordsUrl aus einer vorherigen Abfrageantwort |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Erfolgsstatus |
|
||||
| `output` | object | Abfrageergebnisse |
|
||||
|
||||
### `salesforce_describe_object`
|
||||
|
||||
Metadaten und Feldinformationen für ein Salesforce-Objekt abrufen
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `idToken` | string | Nein | Keine Beschreibung |
|
||||
| `instanceUrl` | string | Nein | Keine Beschreibung |
|
||||
| `objectName` | string | Ja | API-Name des Objekts \(z.B. Account, Contact, Lead, Custom_Object__c\) |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Erfolgsstatus |
|
||||
| `output` | object | Objekt-Metadaten |
|
||||
|
||||
### `salesforce_list_objects`
|
||||
|
||||
Liste aller verfügbaren Salesforce-Objekte abrufen
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `idToken` | string | Nein | Keine Beschreibung |
|
||||
| `instanceUrl` | string | Nein | Keine Beschreibung |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Erfolgsstatus |
|
||||
| `output` | object | Objektliste |
|
||||
| `success` | boolean | Status des Operationserfolgs |
|
||||
| `output` | json | Ergebnisdaten der Operation |
|
||||
|
||||
## Hinweise
|
||||
|
||||
|
||||
@@ -1,183 +0,0 @@
|
||||
---
|
||||
title: SFTP
|
||||
description: Übertragen Sie Dateien über SFTP (SSH File Transfer Protocol)
|
||||
---
|
||||
|
||||
import { BlockInfoCard } from "@/components/ui/block-info-card"
|
||||
|
||||
<BlockInfoCard
|
||||
type="sftp"
|
||||
color="#2D3748"
|
||||
/>
|
||||
|
||||
{/* MANUAL-CONTENT-START:intro */}
|
||||
[SFTP (SSH File Transfer Protocol)](https://en.wikipedia.org/wiki/SSH_File_Transfer_Protocol) ist ein sicheres Netzwerkprotokoll, das es Ihnen ermöglicht, Dateien auf entfernten Servern hochzuladen, herunterzuladen und zu verwalten. SFTP arbeitet über SSH und ist damit ideal für automatisierte, verschlüsselte Dateiübertragungen und die Fernverwaltung von Dateien in modernen Arbeitsabläufen.
|
||||
|
||||
Mit den in Sim integrierten SFTP-Tools können Sie die Übertragung von Dateien zwischen Ihren KI-Agenten und externen Systemen oder Servern einfach automatisieren. Dies ermöglicht Ihren Agenten, kritische Datenaustausche, Backups, Dokumentenerstellung und die Orchestrierung entfernter Systeme – alles mit robuster Sicherheit – zu verwalten.
|
||||
|
||||
**Wichtige Funktionen, die über SFTP-Tools verfügbar sind:**
|
||||
|
||||
- **Dateien hochladen:** Übertragen Sie nahtlos Dateien jeder Art von Ihrem Workflow auf einen entfernten Server, mit Unterstützung für Passwort- und SSH-Private-Key-Authentifizierung.
|
||||
- **Dateien herunterladen:** Rufen Sie Dateien von entfernten SFTP-Servern direkt zur Verarbeitung, Archivierung oder weiteren Automatisierung ab.
|
||||
- **Dateien auflisten & verwalten:** Verzeichnisse auflisten, Dateien und Ordner löschen oder erstellen und Dateisystemberechtigungen ferngesteuert verwalten.
|
||||
- **Flexible Authentifizierung:** Verbinden Sie sich entweder mit herkömmlichen Passwörtern oder SSH-Schlüsseln, mit Unterstützung für Passphrasen und Berechtigungskontrolle.
|
||||
- **Unterstützung großer Dateien:** Verwalten Sie programmatisch große Datei-Uploads und -Downloads, mit integrierten Größenbeschränkungen für die Sicherheit.
|
||||
|
||||
Durch die Integration von SFTP in Sim können Sie sichere Dateioperationen als Teil jedes Workflows automatisieren, sei es Datenerfassung, Berichterstattung, Wartung entfernter Systeme oder dynamischer Inhaltsaustausch zwischen Plattformen.
|
||||
|
||||
Die folgenden Abschnitte beschreiben die wichtigsten verfügbaren SFTP-Tools:
|
||||
|
||||
- **sftp_upload:** Laden Sie eine oder mehrere Dateien auf einen entfernten Server hoch.
|
||||
- **sftp_download:** Laden Sie Dateien von einem entfernten Server in Ihren Workflow herunter.
|
||||
- **sftp_list:** Listen Sie Verzeichnisinhalte auf einem entfernten SFTP-Server auf.
|
||||
- **sftp_delete:** Löschen Sie Dateien oder Verzeichnisse von einem entfernten Server.
|
||||
- **sftp_create:** Erstellen Sie neue Dateien auf einem entfernten SFTP-Server.
|
||||
- **sftp_mkdir:** Erstellen Sie neue Verzeichnisse aus der Ferne.
|
||||
|
||||
Siehe die Werkzeugdokumentation unten für detaillierte Ein- und Ausgabeparameter für jede Operation.
|
||||
{/* MANUAL-CONTENT-END */}
|
||||
|
||||
## Nutzungsanweisungen
|
||||
|
||||
Dateien auf Remote-Servern über SFTP hochladen, herunterladen, auflisten und verwalten. Unterstützt sowohl Passwort- als auch Private-Key-Authentifizierung für sichere Dateiübertragungen.
|
||||
|
||||
## Werkzeuge
|
||||
|
||||
### `sftp_upload`
|
||||
|
||||
Dateien auf einen Remote-SFTP-Server hochladen
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `host` | string | Ja | SFTP-Server-Hostname oder IP-Adresse |
|
||||
| `port` | number | Ja | SFTP-Server-Port \(Standard: 22\) |
|
||||
| `username` | string | Ja | SFTP-Benutzername |
|
||||
| `password` | string | Nein | Passwort für die Authentifizierung \(wenn kein Private Key verwendet wird\) |
|
||||
| `privateKey` | string | Nein | Private Key für die Authentifizierung \(OpenSSH-Format\) |
|
||||
| `passphrase` | string | Nein | Passphrase für verschlüsselten Private Key |
|
||||
| `remotePath` | string | Ja | Zielverzeichnis auf dem Remote-Server |
|
||||
| `files` | file[] | Nein | Hochzuladende Dateien |
|
||||
| `fileContent` | string | Nein | Direkter Dateiinhalt zum Hochladen \(für Textdateien\) |
|
||||
| `fileName` | string | Nein | Dateiname bei Verwendung von direktem Inhalt |
|
||||
| `overwrite` | boolean | Nein | Ob bestehende Dateien überschrieben werden sollen \(Standard: true\) |
|
||||
| `permissions` | string | Nein | Dateiberechtigungen \(z.B. 0644\) |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Ob der Upload erfolgreich war |
|
||||
| `uploadedFiles` | json | Array mit Details zu hochgeladenen Dateien \(Name, remotePath, Größe\) |
|
||||
| `message` | string | Statusmeldung des Vorgangs |
|
||||
|
||||
### `sftp_download`
|
||||
|
||||
Datei von einem entfernten SFTP-Server herunterladen
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `host` | string | Ja | SFTP-Server-Hostname oder IP-Adresse |
|
||||
| `port` | number | Ja | SFTP-Server-Port \(Standard: 22\) |
|
||||
| `username` | string | Ja | SFTP-Benutzername |
|
||||
| `password` | string | Nein | Passwort für die Authentifizierung \(wenn kein privater Schlüssel verwendet wird\) |
|
||||
| `privateKey` | string | Nein | Privater Schlüssel für die Authentifizierung \(OpenSSH-Format\) |
|
||||
| `passphrase` | string | Nein | Passphrase für verschlüsselten privaten Schlüssel |
|
||||
| `remotePath` | string | Ja | Pfad zur Datei auf dem entfernten Server |
|
||||
| `encoding` | string | Nein | Ausgabe-Kodierung: utf-8 für Text, base64 für Binärdaten \(Standard: utf-8\) |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Ob der Download erfolgreich war |
|
||||
| `fileName` | string | Name der heruntergeladenen Datei |
|
||||
| `content` | string | Dateiinhalt \(Text oder base64-kodiert\) |
|
||||
| `size` | number | Dateigröße in Bytes |
|
||||
| `encoding` | string | Inhaltskodierung \(utf-8 oder base64\) |
|
||||
| `message` | string | Statusmeldung des Vorgangs |
|
||||
|
||||
### `sftp_list`
|
||||
|
||||
Dateien und Verzeichnisse auf einem entfernten SFTP-Server auflisten
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `host` | string | Ja | SFTP-Server-Hostname oder IP-Adresse |
|
||||
| `port` | number | Ja | SFTP-Server-Port \(Standard: 22\) |
|
||||
| `username` | string | Ja | SFTP-Benutzername |
|
||||
| `password` | string | Nein | Passwort für die Authentifizierung \(wenn kein privater Schlüssel verwendet wird\) |
|
||||
| `privateKey` | string | Nein | Privater Schlüssel für die Authentifizierung \(OpenSSH-Format\) |
|
||||
| `passphrase` | string | Nein | Passphrase für verschlüsselten privaten Schlüssel |
|
||||
| `remotePath` | string | Ja | Verzeichnispfad auf dem entfernten Server |
|
||||
| `detailed` | boolean | Nein | Detaillierte Dateiinformationen einschließen \(Größe, Berechtigungen, Änderungsdatum\) |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Ob der Vorgang erfolgreich war |
|
||||
| `path` | string | Verzeichnispfad, der aufgelistet wurde |
|
||||
| `entries` | json | Array von Verzeichniseinträgen mit Name, Typ, Größe, Berechtigungen, modifiedAt |
|
||||
| `count` | number | Anzahl der Einträge im Verzeichnis |
|
||||
| `message` | string | Statusmeldung des Vorgangs |
|
||||
|
||||
### `sftp_delete`
|
||||
|
||||
Löschen einer Datei oder eines Verzeichnisses auf einem entfernten SFTP-Server
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `host` | string | Ja | SFTP-Server-Hostname oder IP-Adresse |
|
||||
| `port` | number | Ja | SFTP-Server-Port \(Standard: 22\) |
|
||||
| `username` | string | Ja | SFTP-Benutzername |
|
||||
| `password` | string | Nein | Passwort für die Authentifizierung \(wenn kein privater Schlüssel verwendet wird\) |
|
||||
| `privateKey` | string | Nein | Privater Schlüssel für die Authentifizierung \(OpenSSH-Format\) |
|
||||
| `passphrase` | string | Nein | Passphrase für verschlüsselten privaten Schlüssel |
|
||||
| `remotePath` | string | Ja | Pfad zur Datei oder zum Verzeichnis, das gelöscht werden soll |
|
||||
| `recursive` | boolean | Nein | Verzeichnisse rekursiv löschen |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Ob das Löschen erfolgreich war |
|
||||
| `deletedPath` | string | Pfad, der gelöscht wurde |
|
||||
| `message` | string | Statusmeldung des Vorgangs |
|
||||
|
||||
### `sftp_mkdir`
|
||||
|
||||
Ein Verzeichnis auf einem entfernten SFTP-Server erstellen
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `host` | string | Ja | SFTP-Server-Hostname oder IP-Adresse |
|
||||
| `port` | number | Ja | SFTP-Server-Port \(Standard: 22\) |
|
||||
| `username` | string | Ja | SFTP-Benutzername |
|
||||
| `password` | string | Nein | Passwort für die Authentifizierung \(wenn kein privater Schlüssel verwendet wird\) |
|
||||
| `privateKey` | string | Nein | Privater Schlüssel für die Authentifizierung \(OpenSSH-Format\) |
|
||||
| `passphrase` | string | Nein | Passphrase für verschlüsselten privaten Schlüssel |
|
||||
| `remotePath` | string | Ja | Pfad für das neue Verzeichnis |
|
||||
| `recursive` | boolean | Nein | Übergeordnete Verzeichnisse erstellen, falls sie nicht existieren |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Ob das Verzeichnis erfolgreich erstellt wurde |
|
||||
| `createdPath` | string | Pfad des erstellten Verzeichnisses |
|
||||
| `message` | string | Statusmeldung des Vorgangs |
|
||||
|
||||
## Hinweise
|
||||
|
||||
- Kategorie: `tools`
|
||||
- Typ: `sftp`
|
||||
@@ -7,7 +7,7 @@ import { BlockInfoCard } from "@/components/ui/block-info-card"
|
||||
|
||||
<BlockInfoCard
|
||||
type="smtp"
|
||||
color="#2D3748"
|
||||
color="#4A5568"
|
||||
/>
|
||||
|
||||
{/* MANUAL-CONTENT-START:intro */}
|
||||
|
||||
@@ -135,7 +135,7 @@ Function (Process) → Condition (account_type === 'enterprise') → Advanced or
|
||||
## Best Practices
|
||||
|
||||
- **Order conditions correctly**: Place more specific conditions before general ones to ensure specific logic takes precedence over fallbacks
|
||||
- **Use the else branch when needed**: If no conditions match and the else branch is not connected, the workflow branch will end gracefully. Connect the else branch if you need a fallback path for unmatched cases
|
||||
- **Include a default condition**: Add a catch-all condition (`true`) as the last condition to handle unmatched cases and prevent workflow execution from getting stuck
|
||||
- **Keep expressions simple**: Use clear, straightforward boolean expressions for better readability and easier debugging
|
||||
- **Document your conditions**: Add descriptions to explain the purpose of each condition for better team collaboration and maintenance
|
||||
- **Test edge cases**: Verify conditions handle boundary values correctly by testing with values at the edges of your condition ranges
|
||||
|
||||
@@ -72,7 +72,7 @@ For custom integrations, leverage our [MCP (Model Context Protocol) support](/mc
|
||||
<Video src="introduction/integrations-sidebar.mp4" width={700} height={450} />
|
||||
</div>
|
||||
|
||||
## Copilot
|
||||
## AI-Powered Copilot
|
||||
|
||||
**Ask Questions & Get Guidance**
|
||||
Copilot answers questions about Sim, explains your workflows, and provides suggestions for improvements. Use the `@` symbol to reference workflows, blocks, documentation, knowledge, and logs for contextual assistance.
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
---
|
||||
title: Overview
|
||||
description: Upload, process, and search through your documents with intelligent vector search and chunking
|
||||
title: Knowledgebase
|
||||
---
|
||||
|
||||
import { Video } from '@/components/ui/video'
|
||||
|
||||
@@ -1,4 +0,0 @@
|
||||
{
|
||||
"title": "Knowledgebase",
|
||||
"pages": ["index", "tags"]
|
||||
}
|
||||
@@ -13,8 +13,7 @@
|
||||
"variables",
|
||||
"execution",
|
||||
"permissions",
|
||||
"sdks",
|
||||
"self-hosting"
|
||||
"sdks"
|
||||
],
|
||||
"defaultOpen": false
|
||||
}
|
||||
|
||||
@@ -1,150 +0,0 @@
|
||||
---
|
||||
title: Docker
|
||||
description: Deploy Sim Studio with Docker Compose
|
||||
---
|
||||
|
||||
import { Tab, Tabs } from 'fumadocs-ui/components/tabs'
|
||||
import { Callout } from 'fumadocs-ui/components/callout'
|
||||
|
||||
## Quick Start
|
||||
|
||||
```bash
|
||||
# Clone and start
|
||||
git clone https://github.com/simstudioai/sim.git && cd sim
|
||||
docker compose -f docker-compose.prod.yml up -d
|
||||
```
|
||||
|
||||
Open [http://localhost:3000](http://localhost:3000)
|
||||
|
||||
## Production Setup
|
||||
|
||||
### 1. Configure Environment
|
||||
|
||||
```bash
|
||||
# Generate secrets
|
||||
cat > .env << EOF
|
||||
DATABASE_URL=postgresql://postgres:postgres@db:5432/simstudio
|
||||
BETTER_AUTH_SECRET=$(openssl rand -hex 32)
|
||||
ENCRYPTION_KEY=$(openssl rand -hex 32)
|
||||
INTERNAL_API_SECRET=$(openssl rand -hex 32)
|
||||
NEXT_PUBLIC_APP_URL=https://sim.yourdomain.com
|
||||
BETTER_AUTH_URL=https://sim.yourdomain.com
|
||||
NEXT_PUBLIC_SOCKET_URL=https://sim.yourdomain.com
|
||||
EOF
|
||||
```
|
||||
|
||||
### 2. Start Services
|
||||
|
||||
```bash
|
||||
docker compose -f docker-compose.prod.yml up -d
|
||||
```
|
||||
|
||||
### 3. Set Up SSL
|
||||
|
||||
<Tabs items={['Caddy (Recommended)', 'Nginx + Certbot']}>
|
||||
<Tab value="Caddy (Recommended)">
|
||||
Caddy automatically handles SSL certificates.
|
||||
|
||||
```bash
|
||||
# Install Caddy
|
||||
sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https curl
|
||||
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
|
||||
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list
|
||||
sudo apt update && sudo apt install caddy
|
||||
```
|
||||
|
||||
Create `/etc/caddy/Caddyfile`:
|
||||
```
|
||||
sim.yourdomain.com {
|
||||
reverse_proxy localhost:3000
|
||||
|
||||
handle /socket.io/* {
|
||||
reverse_proxy localhost:3002
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
```bash
|
||||
sudo systemctl restart caddy
|
||||
```
|
||||
</Tab>
|
||||
<Tab value="Nginx + Certbot">
|
||||
```bash
|
||||
# Install
|
||||
sudo apt install nginx certbot python3-certbot-nginx -y
|
||||
|
||||
# Create /etc/nginx/sites-available/sim
|
||||
server {
|
||||
listen 80;
|
||||
server_name sim.yourdomain.com;
|
||||
|
||||
location / {
|
||||
proxy_pass http://127.0.0.1:3000;
|
||||
proxy_http_version 1.1;
|
||||
proxy_set_header Upgrade $http_upgrade;
|
||||
proxy_set_header Connection 'upgrade';
|
||||
proxy_set_header Host $host;
|
||||
proxy_set_header X-Forwarded-Proto $scheme;
|
||||
}
|
||||
|
||||
location /socket.io/ {
|
||||
proxy_pass http://127.0.0.1:3002;
|
||||
proxy_http_version 1.1;
|
||||
proxy_set_header Upgrade $http_upgrade;
|
||||
proxy_set_header Connection "upgrade";
|
||||
}
|
||||
}
|
||||
|
||||
# Enable and get certificate
|
||||
sudo ln -s /etc/nginx/sites-available/sim /etc/nginx/sites-enabled/
|
||||
sudo certbot --nginx -d sim.yourdomain.com
|
||||
```
|
||||
</Tab>
|
||||
</Tabs>
|
||||
|
||||
## Ollama
|
||||
|
||||
```bash
|
||||
# With GPU
|
||||
docker compose -f docker-compose.ollama.yml --profile gpu --profile setup up -d
|
||||
|
||||
# CPU only
|
||||
docker compose -f docker-compose.ollama.yml --profile cpu --profile setup up -d
|
||||
```
|
||||
|
||||
Pull additional models:
|
||||
```bash
|
||||
docker compose -f docker-compose.ollama.yml exec ollama ollama pull llama3.2
|
||||
```
|
||||
|
||||
### External Ollama
|
||||
|
||||
If Ollama runs on your host machine (not in Docker):
|
||||
|
||||
```bash
|
||||
# macOS/Windows
|
||||
OLLAMA_URL=http://host.docker.internal:11434 docker compose -f docker-compose.prod.yml up -d
|
||||
|
||||
# Linux - use your host IP
|
||||
OLLAMA_URL=http://192.168.1.100:11434 docker compose -f docker-compose.prod.yml up -d
|
||||
```
|
||||
|
||||
<Callout type="warning">
|
||||
Inside Docker, `localhost` refers to the container, not your host. Use `host.docker.internal` or your host's IP.
|
||||
</Callout>
|
||||
|
||||
## Commands
|
||||
|
||||
```bash
|
||||
# View logs
|
||||
docker compose -f docker-compose.prod.yml logs -f simstudio
|
||||
|
||||
# Stop
|
||||
docker compose -f docker-compose.prod.yml down
|
||||
|
||||
# Update
|
||||
docker compose -f docker-compose.prod.yml pull && docker compose -f docker-compose.prod.yml up -d
|
||||
|
||||
# Backup database
|
||||
docker compose -f docker-compose.prod.yml exec db pg_dump -U postgres simstudio > backup.sql
|
||||
```
|
||||
@@ -1,87 +0,0 @@
|
||||
---
|
||||
title: Environment Variables
|
||||
description: Configuration reference for Sim Studio
|
||||
---
|
||||
|
||||
import { Callout } from 'fumadocs-ui/components/callout'
|
||||
|
||||
## Required
|
||||
|
||||
| Variable | Description |
|
||||
|----------|-------------|
|
||||
| `DATABASE_URL` | PostgreSQL connection string |
|
||||
| `BETTER_AUTH_SECRET` | Auth secret (32 hex chars): `openssl rand -hex 32` |
|
||||
| `BETTER_AUTH_URL` | Your app URL |
|
||||
| `ENCRYPTION_KEY` | Encryption key (32 hex chars): `openssl rand -hex 32` |
|
||||
| `INTERNAL_API_SECRET` | Internal API secret (32 hex chars): `openssl rand -hex 32` |
|
||||
| `NEXT_PUBLIC_APP_URL` | Public app URL |
|
||||
| `NEXT_PUBLIC_SOCKET_URL` | WebSocket URL (default: `http://localhost:3002`) |
|
||||
|
||||
## AI Providers
|
||||
|
||||
| Variable | Provider |
|
||||
|----------|----------|
|
||||
| `OPENAI_API_KEY` | OpenAI |
|
||||
| `ANTHROPIC_API_KEY_1` | Anthropic Claude |
|
||||
| `GEMINI_API_KEY_1` | Google Gemini |
|
||||
| `MISTRAL_API_KEY` | Mistral |
|
||||
| `OLLAMA_URL` | Ollama (default: `http://localhost:11434`) |
|
||||
|
||||
<Callout type="info">
|
||||
For load balancing, add multiple keys with `_1`, `_2`, `_3` suffixes (e.g., `OPENAI_API_KEY_1`, `OPENAI_API_KEY_2`). Works with OpenAI, Anthropic, and Gemini.
|
||||
</Callout>
|
||||
|
||||
<Callout type="info">
|
||||
In Docker, use `OLLAMA_URL=http://host.docker.internal:11434` for host-machine Ollama.
|
||||
</Callout>
|
||||
|
||||
### Azure OpenAI
|
||||
|
||||
| Variable | Description |
|
||||
|----------|-------------|
|
||||
| `AZURE_OPENAI_API_KEY` | Azure OpenAI API key |
|
||||
| `AZURE_OPENAI_ENDPOINT` | Azure OpenAI endpoint URL |
|
||||
| `AZURE_OPENAI_API_VERSION` | API version (e.g., `2024-02-15-preview`) |
|
||||
|
||||
### vLLM (Self-Hosted)
|
||||
|
||||
| Variable | Description |
|
||||
|----------|-------------|
|
||||
| `VLLM_BASE_URL` | vLLM server URL (e.g., `http://localhost:8000/v1`) |
|
||||
| `VLLM_API_KEY` | Optional bearer token for vLLM |
|
||||
|
||||
## OAuth Providers
|
||||
|
||||
| Variable | Description |
|
||||
|----------|-------------|
|
||||
| `GOOGLE_CLIENT_ID` | Google OAuth client ID |
|
||||
| `GOOGLE_CLIENT_SECRET` | Google OAuth client secret |
|
||||
| `GITHUB_CLIENT_ID` | GitHub OAuth client ID |
|
||||
| `GITHUB_CLIENT_SECRET` | GitHub OAuth client secret |
|
||||
|
||||
## Optional
|
||||
|
||||
| Variable | Description |
|
||||
|----------|-------------|
|
||||
| `API_ENCRYPTION_KEY` | Encrypts stored API keys (32 hex chars): `openssl rand -hex 32` |
|
||||
| `COPILOT_API_KEY` | API key for copilot features |
|
||||
| `ADMIN_API_KEY` | Admin API key for GitOps operations |
|
||||
| `RESEND_API_KEY` | Email service for notifications |
|
||||
| `ALLOWED_LOGIN_DOMAINS` | Restrict signups to domains (comma-separated) |
|
||||
| `ALLOWED_LOGIN_EMAILS` | Restrict signups to specific emails (comma-separated) |
|
||||
| `DISABLE_REGISTRATION` | Set to `true` to disable new user signups |
|
||||
|
||||
## Example .env
|
||||
|
||||
```bash
|
||||
DATABASE_URL=postgresql://postgres:postgres@db:5432/simstudio
|
||||
BETTER_AUTH_SECRET=<openssl rand -hex 32>
|
||||
BETTER_AUTH_URL=https://sim.yourdomain.com
|
||||
ENCRYPTION_KEY=<openssl rand -hex 32>
|
||||
INTERNAL_API_SECRET=<openssl rand -hex 32>
|
||||
NEXT_PUBLIC_APP_URL=https://sim.yourdomain.com
|
||||
NEXT_PUBLIC_SOCKET_URL=https://sim.yourdomain.com
|
||||
OPENAI_API_KEY=sk-...
|
||||
```
|
||||
|
||||
See `apps/sim/.env.example` for all options.
|
||||
@@ -1,50 +0,0 @@
|
||||
---
|
||||
title: Self-Hosting
|
||||
description: Deploy Sim Studio on your own infrastructure
|
||||
---
|
||||
|
||||
import { Card, Cards } from 'fumadocs-ui/components/card'
|
||||
import { Callout } from 'fumadocs-ui/components/callout'
|
||||
|
||||
Deploy Sim Studio on your own infrastructure with Docker or Kubernetes.
|
||||
|
||||
## Requirements
|
||||
|
||||
| Resource | Minimum | Recommended |
|
||||
|----------|---------|-------------|
|
||||
| CPU | 2 cores | 4+ cores |
|
||||
| RAM | 12 GB | 16+ GB |
|
||||
| Storage | 20 GB SSD | 50+ GB SSD |
|
||||
| Docker | 20.10+ | Latest |
|
||||
|
||||
## Quick Start
|
||||
|
||||
```bash
|
||||
git clone https://github.com/simstudioai/sim.git && cd sim
|
||||
docker compose -f docker-compose.prod.yml up -d
|
||||
```
|
||||
|
||||
Open [http://localhost:3000](http://localhost:3000)
|
||||
|
||||
## Deployment Options
|
||||
|
||||
<Cards>
|
||||
<Card title="Docker" href="/self-hosting/docker">
|
||||
Deploy with Docker Compose on any server
|
||||
</Card>
|
||||
<Card title="Kubernetes" href="/self-hosting/kubernetes">
|
||||
Deploy with Helm on Kubernetes clusters
|
||||
</Card>
|
||||
<Card title="Cloud Platforms" href="/self-hosting/platforms">
|
||||
Railway, DigitalOcean, AWS, Azure, GCP guides
|
||||
</Card>
|
||||
</Cards>
|
||||
|
||||
## Architecture
|
||||
|
||||
| Component | Port | Description |
|
||||
|-----------|------|-------------|
|
||||
| simstudio | 3000 | Main application |
|
||||
| realtime | 3002 | WebSocket server |
|
||||
| db | 5432 | PostgreSQL with pgvector |
|
||||
| migrations | - | Database migrations (runs once) |
|
||||
@@ -1,127 +0,0 @@
|
||||
---
|
||||
title: Kubernetes
|
||||
description: Deploy Sim Studio with Helm
|
||||
---
|
||||
|
||||
import { Tab, Tabs } from 'fumadocs-ui/components/tabs'
|
||||
import { Callout } from 'fumadocs-ui/components/callout'
|
||||
|
||||
## Prerequisites
|
||||
|
||||
- Kubernetes 1.19+
|
||||
- Helm 3.0+
|
||||
- PV provisioner support
|
||||
|
||||
## Installation
|
||||
|
||||
```bash
|
||||
# Clone repo
|
||||
git clone https://github.com/simstudioai/sim.git && cd sim
|
||||
|
||||
# Generate secrets
|
||||
BETTER_AUTH_SECRET=$(openssl rand -hex 32)
|
||||
ENCRYPTION_KEY=$(openssl rand -hex 32)
|
||||
INTERNAL_API_SECRET=$(openssl rand -hex 32)
|
||||
|
||||
# Install
|
||||
helm install sim ./helm/sim \
|
||||
--set app.env.BETTER_AUTH_SECRET="$BETTER_AUTH_SECRET" \
|
||||
--set app.env.ENCRYPTION_KEY="$ENCRYPTION_KEY" \
|
||||
--set app.env.INTERNAL_API_SECRET="$INTERNAL_API_SECRET" \
|
||||
--namespace simstudio --create-namespace
|
||||
```
|
||||
|
||||
## Cloud-Specific Values
|
||||
|
||||
<Tabs items={['AWS EKS', 'Azure AKS', 'GCP GKE']}>
|
||||
<Tab value="AWS EKS">
|
||||
```bash
|
||||
helm install sim ./helm/sim \
|
||||
--values ./helm/sim/examples/values-aws.yaml \
|
||||
--set app.env.BETTER_AUTH_SECRET="$BETTER_AUTH_SECRET" \
|
||||
--set app.env.ENCRYPTION_KEY="$ENCRYPTION_KEY" \
|
||||
--set app.env.INTERNAL_API_SECRET="$INTERNAL_API_SECRET" \
|
||||
--set app.env.NEXT_PUBLIC_APP_URL="https://sim.yourdomain.com" \
|
||||
--namespace simstudio --create-namespace
|
||||
```
|
||||
</Tab>
|
||||
<Tab value="Azure AKS">
|
||||
```bash
|
||||
helm install sim ./helm/sim \
|
||||
--values ./helm/sim/examples/values-azure.yaml \
|
||||
--set app.env.BETTER_AUTH_SECRET="$BETTER_AUTH_SECRET" \
|
||||
--set app.env.ENCRYPTION_KEY="$ENCRYPTION_KEY" \
|
||||
--set app.env.INTERNAL_API_SECRET="$INTERNAL_API_SECRET" \
|
||||
--set app.env.NEXT_PUBLIC_APP_URL="https://sim.yourdomain.com" \
|
||||
--namespace simstudio --create-namespace
|
||||
```
|
||||
</Tab>
|
||||
<Tab value="GCP GKE">
|
||||
```bash
|
||||
helm install sim ./helm/sim \
|
||||
--values ./helm/sim/examples/values-gcp.yaml \
|
||||
--set app.env.BETTER_AUTH_SECRET="$BETTER_AUTH_SECRET" \
|
||||
--set app.env.ENCRYPTION_KEY="$ENCRYPTION_KEY" \
|
||||
--set app.env.INTERNAL_API_SECRET="$INTERNAL_API_SECRET" \
|
||||
--set app.env.NEXT_PUBLIC_APP_URL="https://sim.yourdomain.com" \
|
||||
--namespace simstudio --create-namespace
|
||||
```
|
||||
</Tab>
|
||||
</Tabs>
|
||||
|
||||
## Key Configuration
|
||||
|
||||
```yaml
|
||||
# Custom values.yaml
|
||||
app:
|
||||
replicaCount: 2
|
||||
env:
|
||||
NEXT_PUBLIC_APP_URL: "https://sim.yourdomain.com"
|
||||
OPENAI_API_KEY: "sk-..."
|
||||
|
||||
postgresql:
|
||||
persistence:
|
||||
size: 50Gi
|
||||
|
||||
ingress:
|
||||
enabled: true
|
||||
className: nginx
|
||||
tls:
|
||||
enabled: true
|
||||
app:
|
||||
host: sim.yourdomain.com
|
||||
```
|
||||
|
||||
See `helm/sim/values.yaml` for all options.
|
||||
|
||||
## External Database
|
||||
|
||||
```yaml
|
||||
postgresql:
|
||||
enabled: false
|
||||
|
||||
externalDatabase:
|
||||
enabled: true
|
||||
host: "your-db-host"
|
||||
port: 5432
|
||||
username: "postgres"
|
||||
password: "your-password"
|
||||
database: "simstudio"
|
||||
sslMode: "require"
|
||||
```
|
||||
|
||||
## Commands
|
||||
|
||||
```bash
|
||||
# Port forward for local access
|
||||
kubectl port-forward deployment/sim-sim-app 3000:3000 -n simstudio
|
||||
|
||||
# View logs
|
||||
kubectl logs -l app.kubernetes.io/component=app -n simstudio --tail=100
|
||||
|
||||
# Upgrade
|
||||
helm upgrade sim ./helm/sim --namespace simstudio
|
||||
|
||||
# Uninstall
|
||||
helm uninstall sim --namespace simstudio
|
||||
```
|
||||
@@ -1,12 +0,0 @@
|
||||
{
|
||||
"title": "Self-Hosting",
|
||||
"pages": [
|
||||
"index",
|
||||
"docker",
|
||||
"kubernetes",
|
||||
"platforms",
|
||||
"environment-variables",
|
||||
"troubleshooting"
|
||||
],
|
||||
"defaultOpen": false
|
||||
}
|
||||
@@ -1,116 +0,0 @@
|
||||
---
|
||||
title: Cloud Platforms
|
||||
description: Deploy Sim Studio on cloud platforms
|
||||
---
|
||||
|
||||
import { Tab, Tabs } from 'fumadocs-ui/components/tabs'
|
||||
import { Callout } from 'fumadocs-ui/components/callout'
|
||||
|
||||
## Railway
|
||||
|
||||
One-click deployment with automatic PostgreSQL provisioning.
|
||||
|
||||
[](https://railway.com/new/template/sim-studio)
|
||||
|
||||
After deployment, add environment variables in Railway dashboard:
|
||||
- `BETTER_AUTH_SECRET`, `ENCRYPTION_KEY`, `INTERNAL_API_SECRET` (auto-generated)
|
||||
- `OPENAI_API_KEY` or other AI provider keys
|
||||
- Custom domain in Settings → Networking
|
||||
|
||||
## VPS Deployment
|
||||
|
||||
For DigitalOcean, AWS EC2, Azure VMs, or any Linux server:
|
||||
|
||||
<Tabs items={['DigitalOcean', 'AWS EC2', 'Azure VM']}>
|
||||
<Tab value="DigitalOcean">
|
||||
**Recommended:** 16 GB RAM Droplet, Ubuntu 24.04
|
||||
|
||||
```bash
|
||||
# Create Droplet via console, then SSH in
|
||||
ssh root@your-droplet-ip
|
||||
```
|
||||
</Tab>
|
||||
<Tab value="AWS EC2">
|
||||
**Recommended:** t3.xlarge (16 GB RAM), Ubuntu 24.04
|
||||
|
||||
```bash
|
||||
ssh -i your-key.pem ubuntu@your-ec2-ip
|
||||
```
|
||||
</Tab>
|
||||
<Tab value="Azure VM">
|
||||
**Recommended:** Standard_D4s_v3 (16 GB RAM), Ubuntu 24.04
|
||||
|
||||
```bash
|
||||
ssh azureuser@your-vm-ip
|
||||
```
|
||||
</Tab>
|
||||
</Tabs>
|
||||
|
||||
### Install Docker
|
||||
|
||||
```bash
|
||||
# Install Docker (official method)
|
||||
curl -fsSL https://get.docker.com | sudo sh
|
||||
sudo usermod -aG docker $USER
|
||||
|
||||
# Logout and reconnect, then verify
|
||||
docker --version
|
||||
```
|
||||
|
||||
### Deploy Sim Studio
|
||||
|
||||
```bash
|
||||
git clone https://github.com/simstudioai/sim.git && cd sim
|
||||
|
||||
# Create .env with secrets
|
||||
cat > .env << EOF
|
||||
DATABASE_URL=postgresql://postgres:postgres@db:5432/simstudio
|
||||
BETTER_AUTH_SECRET=$(openssl rand -hex 32)
|
||||
ENCRYPTION_KEY=$(openssl rand -hex 32)
|
||||
INTERNAL_API_SECRET=$(openssl rand -hex 32)
|
||||
NEXT_PUBLIC_APP_URL=https://sim.yourdomain.com
|
||||
BETTER_AUTH_URL=https://sim.yourdomain.com
|
||||
NEXT_PUBLIC_SOCKET_URL=https://sim.yourdomain.com
|
||||
EOF
|
||||
|
||||
# Start
|
||||
docker compose -f docker-compose.prod.yml up -d
|
||||
```
|
||||
|
||||
### SSL with Caddy
|
||||
|
||||
```bash
|
||||
# Install Caddy
|
||||
sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https curl
|
||||
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
|
||||
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list
|
||||
sudo apt update && sudo apt install caddy
|
||||
|
||||
# Configure (replace domain)
|
||||
echo 'sim.yourdomain.com {
|
||||
reverse_proxy localhost:3000
|
||||
handle /socket.io/* {
|
||||
reverse_proxy localhost:3002
|
||||
}
|
||||
}' | sudo tee /etc/caddy/Caddyfile
|
||||
|
||||
sudo systemctl restart caddy
|
||||
```
|
||||
|
||||
Point your domain's DNS A record to your server IP.
|
||||
|
||||
## Kubernetes (EKS, AKS, GKE)
|
||||
|
||||
See the [Kubernetes guide](/self-hosting/kubernetes) for Helm deployment on managed Kubernetes.
|
||||
|
||||
## Managed Database (Optional)
|
||||
|
||||
For production, use a managed PostgreSQL service:
|
||||
|
||||
- **AWS RDS** / **Azure Database** / **Cloud SQL** - Enable pgvector extension
|
||||
- **Supabase** / **Neon** - pgvector included
|
||||
|
||||
Set `DATABASE_URL` in your environment:
|
||||
```bash
|
||||
DATABASE_URL="postgresql://user:pass@host:5432/db?sslmode=require"
|
||||
```
|
||||
@@ -1,110 +0,0 @@
|
||||
---
|
||||
title: Troubleshooting
|
||||
description: Common issues and solutions
|
||||
---
|
||||
|
||||
## Database Connection Failed
|
||||
|
||||
```bash
|
||||
# Check database is running
|
||||
docker compose ps db
|
||||
|
||||
# Test connection
|
||||
docker compose exec db psql -U postgres -c "SELECT 1"
|
||||
```
|
||||
|
||||
Verify `DATABASE_URL` format: `postgresql://user:pass@host:5432/database`
|
||||
|
||||
## Ollama Models Not Showing
|
||||
|
||||
Inside Docker, `localhost` = the container, not your host machine.
|
||||
|
||||
```bash
|
||||
# For host-machine Ollama, use:
|
||||
OLLAMA_URL=http://host.docker.internal:11434 # macOS/Windows
|
||||
OLLAMA_URL=http://192.168.1.x:11434 # Linux (use actual IP)
|
||||
```
|
||||
|
||||
## WebSocket/Realtime Not Working
|
||||
|
||||
1. Check `NEXT_PUBLIC_SOCKET_URL` matches your domain
|
||||
2. Verify realtime service is running: `docker compose ps realtime`
|
||||
3. Ensure reverse proxy passes WebSocket upgrades (see [Docker guide](/self-hosting/docker))
|
||||
|
||||
## 502 Bad Gateway
|
||||
|
||||
```bash
|
||||
# Check app is running
|
||||
docker compose ps simstudio
|
||||
docker compose logs simstudio
|
||||
|
||||
# Common causes: out of memory, database not ready
|
||||
```
|
||||
|
||||
## Migration Errors
|
||||
|
||||
```bash
|
||||
# View migration logs
|
||||
docker compose logs migrations
|
||||
|
||||
# Run manually
|
||||
docker compose exec simstudio bun run db:migrate
|
||||
```
|
||||
|
||||
## pgvector Not Found
|
||||
|
||||
Use the correct PostgreSQL image:
|
||||
```yaml
|
||||
image: pgvector/pgvector:pg17 # NOT postgres:17
|
||||
```
|
||||
|
||||
## Certificate Errors (CERT_HAS_EXPIRED)
|
||||
|
||||
If you see SSL certificate errors when calling external APIs:
|
||||
|
||||
```bash
|
||||
# Update CA certificates in container
|
||||
docker compose exec simstudio apt-get update && apt-get install -y ca-certificates
|
||||
|
||||
# Or set in environment (not recommended for production)
|
||||
NODE_TLS_REJECT_UNAUTHORIZED=0
|
||||
```
|
||||
|
||||
## Blank Page After Login
|
||||
|
||||
1. Check browser console for errors
|
||||
2. Verify `NEXT_PUBLIC_APP_URL` matches your actual domain
|
||||
3. Clear browser cookies and local storage
|
||||
4. Check that all services are running: `docker compose ps`
|
||||
|
||||
## Windows-Specific Issues
|
||||
|
||||
**Turbopack errors on Windows:**
|
||||
```bash
|
||||
# Use WSL2 for better compatibility
|
||||
wsl --install
|
||||
|
||||
# Or disable Turbopack in package.json
|
||||
# Change "next dev --turbopack" to "next dev"
|
||||
```
|
||||
|
||||
**Line ending issues:**
|
||||
```bash
|
||||
# Configure git to use LF
|
||||
git config --global core.autocrlf input
|
||||
```
|
||||
|
||||
## View Logs
|
||||
|
||||
```bash
|
||||
# All services
|
||||
docker compose logs -f
|
||||
|
||||
# Specific service
|
||||
docker compose logs -f simstudio
|
||||
```
|
||||
|
||||
## Getting Help
|
||||
|
||||
- [GitHub Issues](https://github.com/simstudioai/sim/issues)
|
||||
- [Discord](https://discord.gg/Hr4UWYEcTT)
|
||||
@@ -1,186 +0,0 @@
|
||||
---
|
||||
title: Cursor
|
||||
description: Launch and manage Cursor cloud agents to work on GitHub repositories
|
||||
---
|
||||
|
||||
import { BlockInfoCard } from "@/components/ui/block-info-card"
|
||||
|
||||
<BlockInfoCard
|
||||
type="cursor"
|
||||
color="#1E1E1E"
|
||||
/>
|
||||
|
||||
{/* MANUAL-CONTENT-START:intro */}
|
||||
[Cursor](https://www.cursor.so/) is an AI IDE and cloud-based platform that lets you launch and manage powerful AI agents able to work directly on your GitHub repositories. Cursor agents can automate development tasks, enhance your team's productivity, and collaborate with you by making code changes, responding to natural language instructions, and maintaining conversation history about their activities.
|
||||
|
||||
With Cursor, you can:
|
||||
|
||||
- **Launch cloud agents for codebases**: Instantly create new AI agents that work on your repositories in the cloud
|
||||
- **Delegate coding tasks using natural language**: Guide agents with written instructions, amendments, and clarifications
|
||||
- **Monitor progress and outputs**: Retrieve agent status, view detailed results, and inspect current or completed tasks
|
||||
- **Access full conversation history**: Review all prompts and AI responses for transparency and auditability
|
||||
- **Control and manage agent lifecycle**: List active agents, terminate agents, and manage API-based agent launches and follow-ups
|
||||
|
||||
In Sim, the Cursor integration enables your agents and workflows to interact programmatically with Cursor cloud agents. This means you can use Sim to:
|
||||
|
||||
- List all cloud agents and browse their current state (`cursor_list_agents`)
|
||||
- Retrieve up-to-date status and outputs for any agent (`cursor_get_agent`)
|
||||
- View the full conversation history for any coding agent (`cursor_get_conversation`)
|
||||
- Add follow-up instructions or new prompts to a running agent
|
||||
- Manage and terminate agents as needed
|
||||
|
||||
This integration helps you combine the flexible intelligence of Sim agents with the powerful development automation capabilities of Cursor, making it possible to scale AI-driven development across your projects.
|
||||
{/* MANUAL-CONTENT-END */}
|
||||
|
||||
|
||||
## Usage Instructions
|
||||
|
||||
Interact with Cursor Cloud Agents API to launch AI agents that can work on your GitHub repositories. Supports launching agents, adding follow-up instructions, checking status, viewing conversations, and managing agent lifecycle.
|
||||
|
||||
|
||||
|
||||
## Tools
|
||||
|
||||
### `cursor_list_agents`
|
||||
|
||||
List all cloud agents for the authenticated user with optional pagination.
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `apiKey` | string | Yes | Cursor API key |
|
||||
| `limit` | number | No | Number of agents to return \(default: 20, max: 100\) |
|
||||
| `cursor` | string | No | Pagination cursor from previous response |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `content` | string | Human-readable list of agents |
|
||||
| `metadata` | object | Agent list metadata |
|
||||
|
||||
### `cursor_get_agent`
|
||||
|
||||
Retrieve the current status and results of a cloud agent.
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `apiKey` | string | Yes | Cursor API key |
|
||||
| `agentId` | string | Yes | Unique identifier for the cloud agent \(e.g., bc_abc123\) |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `content` | string | Human-readable agent details |
|
||||
| `metadata` | object | Agent metadata |
|
||||
|
||||
### `cursor_get_conversation`
|
||||
|
||||
Retrieve the conversation history of a cloud agent, including all user prompts and assistant responses.
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `apiKey` | string | Yes | Cursor API key |
|
||||
| `agentId` | string | Yes | Unique identifier for the cloud agent \(e.g., bc_abc123\) |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `content` | string | Human-readable conversation history |
|
||||
| `metadata` | object | Conversation metadata |
|
||||
|
||||
### `cursor_launch_agent`
|
||||
|
||||
Start a new cloud agent to work on a GitHub repository with the given instructions.
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `apiKey` | string | Yes | Cursor API key |
|
||||
| `repository` | string | Yes | GitHub repository URL \(e.g., https://github.com/your-org/your-repo\) |
|
||||
| `ref` | string | No | Branch, tag, or commit to work from \(defaults to default branch\) |
|
||||
| `promptText` | string | Yes | The instruction text for the agent |
|
||||
| `promptImages` | string | No | JSON array of image objects with base64 data and dimensions |
|
||||
| `model` | string | No | Model to use \(leave empty for auto-selection\) |
|
||||
| `branchName` | string | No | Custom branch name for the agent to use |
|
||||
| `autoCreatePr` | boolean | No | Automatically create a PR when the agent finishes |
|
||||
| `openAsCursorGithubApp` | boolean | No | Open the PR as the Cursor GitHub App |
|
||||
| `skipReviewerRequest` | boolean | No | Skip requesting reviewers on the PR |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `content` | string | Success message with agent details |
|
||||
| `metadata` | object | Launch result metadata |
|
||||
|
||||
### `cursor_add_followup`
|
||||
|
||||
Add a follow-up instruction to an existing cloud agent.
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `apiKey` | string | Yes | Cursor API key |
|
||||
| `agentId` | string | Yes | Unique identifier for the cloud agent \(e.g., bc_abc123\) |
|
||||
| `followupPromptText` | string | Yes | The follow-up instruction text for the agent |
|
||||
| `promptImages` | string | No | JSON array of image objects with base64 data and dimensions \(max 5\) |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `content` | string | Success message |
|
||||
| `metadata` | object | Result metadata |
|
||||
|
||||
### `cursor_stop_agent`
|
||||
|
||||
Stop a running cloud agent. This pauses the agent without deleting it.
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `apiKey` | string | Yes | Cursor API key |
|
||||
| `agentId` | string | Yes | Unique identifier for the cloud agent \(e.g., bc_abc123\) |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `content` | string | Success message |
|
||||
| `metadata` | object | Result metadata |
|
||||
|
||||
### `cursor_delete_agent`
|
||||
|
||||
Permanently delete a cloud agent. This action cannot be undone.
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `apiKey` | string | Yes | Cursor API key |
|
||||
| `agentId` | string | Yes | Unique identifier for the cloud agent \(e.g., bc_abc123\) |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `content` | string | Success message |
|
||||
| `metadata` | object | Result metadata |
|
||||
|
||||
|
||||
|
||||
## Notes
|
||||
|
||||
- Category: `tools`
|
||||
- Type: `cursor`
|
||||
@@ -1,68 +0,0 @@
|
||||
---
|
||||
title: DuckDuckGo
|
||||
description: Search with DuckDuckGo
|
||||
---
|
||||
|
||||
import { BlockInfoCard } from "@/components/ui/block-info-card"
|
||||
|
||||
<BlockInfoCard
|
||||
type="duckduckgo"
|
||||
color="#FFFFFF"
|
||||
/>
|
||||
|
||||
{/* MANUAL-CONTENT-START:intro */}
|
||||
[DuckDuckGo](https://duckduckgo.com/) is a privacy-focused web search engine that delivers instant answers, abstracts, related topics, and more — without tracking you or your searches. DuckDuckGo makes it easy to find information without any user profiling or targeted ads.
|
||||
|
||||
With DuckDuckGo in Sim, you can:
|
||||
|
||||
- **Search the web**: Instantly find answers, facts, and overviews for a given search query
|
||||
- **Get direct answers**: Retrieve specific responses for calculations, conversions, or factual queries
|
||||
- **Access abstracts**: Receive short summaries or descriptions for your search topics
|
||||
- **Fetch related topics**: Discover links and references relevant to your search
|
||||
- **Filter output**: Optionally remove HTML or skip disambiguation for cleaner results
|
||||
|
||||
These features enable your Sim agents to automate access to fresh web knowledge — from surfacing facts in a workflow, to enriching documents and analysis with up-to-date information. Because DuckDuckGo’s Instant Answers API is open and does not require an API key, it’s simple and privacy-safe to integrate into your automated business processes.
|
||||
{/* MANUAL-CONTENT-END */}
|
||||
|
||||
|
||||
## Usage Instructions
|
||||
|
||||
Search the web using DuckDuckGo Instant Answers API. Returns instant answers, abstracts, related topics, and more. Free to use without an API key.
|
||||
|
||||
|
||||
|
||||
## Tools
|
||||
|
||||
### `duckduckgo_search`
|
||||
|
||||
Search the web using DuckDuckGo Instant Answers API. Returns instant answers, abstracts, and related topics for your query. Free to use without an API key.
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `query` | string | Yes | The search query to execute |
|
||||
| `noHtml` | boolean | No | Remove HTML from text in results \(default: true\) |
|
||||
| `skipDisambig` | boolean | No | Skip disambiguation results \(default: false\) |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `heading` | string | The heading/title of the instant answer |
|
||||
| `abstract` | string | A short abstract summary of the topic |
|
||||
| `abstractText` | string | Plain text version of the abstract |
|
||||
| `abstractSource` | string | The source of the abstract \(e.g., Wikipedia\) |
|
||||
| `abstractURL` | string | URL to the source of the abstract |
|
||||
| `image` | string | URL to an image related to the topic |
|
||||
| `answer` | string | Direct answer if available \(e.g., for calculations\) |
|
||||
| `answerType` | string | Type of the answer \(e.g., calc, ip, etc.\) |
|
||||
| `type` | string | Response type: A \(article\), D \(disambiguation\), C \(category\), N \(name\), E \(exclusive\) |
|
||||
| `relatedTopics` | array | Array of related topics with URLs and descriptions |
|
||||
|
||||
|
||||
|
||||
## Notes
|
||||
|
||||
- Category: `tools`
|
||||
- Type: `duckduckgo`
|
||||
@@ -1,221 +0,0 @@
|
||||
---
|
||||
title: Google Groups
|
||||
description: Manage Google Workspace Groups and their members
|
||||
---
|
||||
|
||||
import { BlockInfoCard } from "@/components/ui/block-info-card"
|
||||
|
||||
<BlockInfoCard
|
||||
type="google_groups"
|
||||
color="#E8F0FE"
|
||||
/>
|
||||
|
||||
## Usage Instructions
|
||||
|
||||
Connect to Google Workspace to create, update, and manage groups and their members using the Admin SDK Directory API.
|
||||
|
||||
|
||||
|
||||
## Tools
|
||||
|
||||
### `google_groups_list_groups`
|
||||
|
||||
List all groups in a Google Workspace domain
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `customer` | string | No | Customer ID or "my_customer" for the authenticated user\'s domain |
|
||||
| `domain` | string | No | Domain name to filter groups by |
|
||||
| `maxResults` | number | No | Maximum number of results to return \(1-200\) |
|
||||
| `pageToken` | string | No | Token for pagination |
|
||||
| `query` | string | No | Search query to filter groups \(e.g., "email:admin*"\) |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `output` | json | Google Groups API response data |
|
||||
|
||||
### `google_groups_get_group`
|
||||
|
||||
Get details of a specific Google Group by email or group ID
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `groupKey` | string | Yes | Group email address or unique group ID |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `output` | json | Google Groups API response data |
|
||||
|
||||
### `google_groups_create_group`
|
||||
|
||||
Create a new Google Group in the domain
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `email` | string | Yes | Email address for the new group \(e.g., team@yourdomain.com\) |
|
||||
| `name` | string | Yes | Display name for the group |
|
||||
| `description` | string | No | Description of the group |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `output` | json | Google Groups API response data |
|
||||
|
||||
### `google_groups_update_group`
|
||||
|
||||
Update an existing Google Group
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `groupKey` | string | Yes | Group email address or unique group ID |
|
||||
| `name` | string | No | New display name for the group |
|
||||
| `description` | string | No | New description for the group |
|
||||
| `email` | string | No | New email address for the group |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `output` | json | Google Groups API response data |
|
||||
|
||||
### `google_groups_delete_group`
|
||||
|
||||
Delete a Google Group
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `groupKey` | string | Yes | Group email address or unique group ID to delete |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `output` | json | Google Groups API response data |
|
||||
|
||||
### `google_groups_list_members`
|
||||
|
||||
List all members of a Google Group
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `groupKey` | string | Yes | Group email address or unique group ID |
|
||||
| `maxResults` | number | No | Maximum number of results to return \(1-200\) |
|
||||
| `pageToken` | string | No | Token for pagination |
|
||||
| `roles` | string | No | Filter by roles \(comma-separated: OWNER, MANAGER, MEMBER\) |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `output` | json | Google Groups API response data |
|
||||
|
||||
### `google_groups_get_member`
|
||||
|
||||
Get details of a specific member in a Google Group
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `groupKey` | string | Yes | Group email address or unique group ID |
|
||||
| `memberKey` | string | Yes | Member email address or unique member ID |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `output` | json | Google Groups API response data |
|
||||
|
||||
### `google_groups_add_member`
|
||||
|
||||
Add a new member to a Google Group
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `groupKey` | string | Yes | Group email address or unique group ID |
|
||||
| `email` | string | Yes | Email address of the member to add |
|
||||
| `role` | string | No | Role for the member \(MEMBER, MANAGER, or OWNER\). Defaults to MEMBER. |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `output` | json | Google Groups API response data |
|
||||
|
||||
### `google_groups_remove_member`
|
||||
|
||||
Remove a member from a Google Group
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `groupKey` | string | Yes | Group email address or unique group ID |
|
||||
| `memberKey` | string | Yes | Email address or unique ID of the member to remove |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `output` | json | Google Groups API response data |
|
||||
|
||||
### `google_groups_update_member`
|
||||
|
||||
Update a member
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `groupKey` | string | Yes | Group email address or unique group ID |
|
||||
| `memberKey` | string | Yes | Member email address or unique member ID |
|
||||
| `role` | string | Yes | New role for the member \(MEMBER, MANAGER, or OWNER\) |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `output` | json | Google Groups API response data |
|
||||
|
||||
### `google_groups_has_member`
|
||||
|
||||
Check if a user is a member of a Google Group
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `groupKey` | string | Yes | Group email address or unique group ID |
|
||||
| `memberKey` | string | Yes | Member email address or unique member ID to check |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `output` | json | Google Groups API response data |
|
||||
|
||||
|
||||
|
||||
## Notes
|
||||
|
||||
- Category: `tools`
|
||||
- Type: `google_groups`
|
||||
@@ -11,11 +11,9 @@
|
||||
"calendly",
|
||||
"clay",
|
||||
"confluence",
|
||||
"cursor",
|
||||
"datadog",
|
||||
"discord",
|
||||
"dropbox",
|
||||
"duckduckgo",
|
||||
"dynamodb",
|
||||
"elasticsearch",
|
||||
"elevenlabs",
|
||||
@@ -29,7 +27,6 @@
|
||||
"google_docs",
|
||||
"google_drive",
|
||||
"google_forms",
|
||||
"google_groups",
|
||||
"google_search",
|
||||
"google_sheets",
|
||||
"google_slides",
|
||||
@@ -81,7 +78,6 @@
|
||||
"sendgrid",
|
||||
"sentry",
|
||||
"serper",
|
||||
"sftp",
|
||||
"sharepoint",
|
||||
"shopify",
|
||||
"slack",
|
||||
@@ -110,7 +106,6 @@
|
||||
"wordpress",
|
||||
"x",
|
||||
"youtube",
|
||||
"zapier",
|
||||
"zendesk",
|
||||
"zep",
|
||||
"zoom"
|
||||
|
||||
@@ -138,684 +138,283 @@ Delete an account from Salesforce CRM
|
||||
|
||||
### `salesforce_get_contacts`
|
||||
|
||||
Get contact(s) from Salesforce - single contact if ID provided, or list if not
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `idToken` | string | No | No description |
|
||||
| `instanceUrl` | string | No | No description |
|
||||
| `contactId` | string | No | Contact ID \(if provided, returns single contact\) |
|
||||
| `limit` | string | No | Number of results \(default: 100, max: 2000\). Only for list query. |
|
||||
| `fields` | string | No | Comma-separated fields \(e.g., "Id,FirstName,LastName,Email,Phone"\) |
|
||||
| `orderBy` | string | No | Order by field \(e.g., "LastName ASC"\). Only for list query. |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Operation success status |
|
||||
| `output` | object | Contact\(s\) data |
|
||||
| `output` | json | Operation result data |
|
||||
|
||||
### `salesforce_create_contact`
|
||||
|
||||
Create a new contact in Salesforce CRM
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `idToken` | string | No | No description |
|
||||
| `instanceUrl` | string | No | No description |
|
||||
| `lastName` | string | Yes | Last name \(required\) |
|
||||
| `firstName` | string | No | First name |
|
||||
| `email` | string | No | Email address |
|
||||
| `phone` | string | No | Phone number |
|
||||
| `accountId` | string | No | Account ID to associate contact with |
|
||||
| `title` | string | No | No description |
|
||||
| `department` | string | No | Department |
|
||||
| `mailingStreet` | string | No | Mailing street |
|
||||
| `mailingCity` | string | No | Mailing city |
|
||||
| `mailingState` | string | No | Mailing state |
|
||||
| `mailingPostalCode` | string | No | Mailing postal code |
|
||||
| `mailingCountry` | string | No | Mailing country |
|
||||
| `description` | string | No | Contact description |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Operation success status |
|
||||
| `output` | object | Created contact data |
|
||||
| `output` | json | Operation result data |
|
||||
|
||||
### `salesforce_update_contact`
|
||||
|
||||
Update an existing contact in Salesforce CRM
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `idToken` | string | No | No description |
|
||||
| `instanceUrl` | string | No | No description |
|
||||
| `contactId` | string | Yes | Contact ID to update \(required\) |
|
||||
| `lastName` | string | No | Last name |
|
||||
| `firstName` | string | No | First name |
|
||||
| `email` | string | No | Email address |
|
||||
| `phone` | string | No | Phone number |
|
||||
| `accountId` | string | No | Account ID to associate with |
|
||||
| `title` | string | No | No description |
|
||||
| `department` | string | No | Department |
|
||||
| `mailingStreet` | string | No | Mailing street |
|
||||
| `mailingCity` | string | No | Mailing city |
|
||||
| `mailingState` | string | No | Mailing state |
|
||||
| `mailingPostalCode` | string | No | Mailing postal code |
|
||||
| `mailingCountry` | string | No | Mailing country |
|
||||
| `description` | string | No | Description |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Operation success status |
|
||||
| `output` | object | Updated contact data |
|
||||
| `output` | json | Operation result data |
|
||||
|
||||
### `salesforce_delete_contact`
|
||||
|
||||
Delete a contact from Salesforce CRM
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `idToken` | string | No | No description |
|
||||
| `instanceUrl` | string | No | No description |
|
||||
| `contactId` | string | Yes | Contact ID to delete \(required\) |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Operation success status |
|
||||
| `output` | object | Deleted contact data |
|
||||
| `output` | json | Operation result data |
|
||||
|
||||
### `salesforce_get_leads`
|
||||
|
||||
Get lead(s) from Salesforce
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `idToken` | string | No | No description |
|
||||
| `instanceUrl` | string | No | No description |
|
||||
| `leadId` | string | No | Lead ID \(optional\) |
|
||||
| `limit` | string | No | Max results \(default: 100\) |
|
||||
| `fields` | string | No | Comma-separated fields |
|
||||
| `orderBy` | string | No | Order by field |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Success status |
|
||||
| `output` | object | Lead data |
|
||||
| `success` | boolean | Operation success status |
|
||||
| `output` | json | Operation result data |
|
||||
|
||||
### `salesforce_create_lead`
|
||||
|
||||
Create a new lead
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `idToken` | string | No | No description |
|
||||
| `instanceUrl` | string | No | No description |
|
||||
| `lastName` | string | Yes | Last name \(required\) |
|
||||
| `company` | string | Yes | Company \(required\) |
|
||||
| `firstName` | string | No | First name |
|
||||
| `email` | string | No | No description |
|
||||
| `phone` | string | No | No description |
|
||||
| `status` | string | No | Lead status |
|
||||
| `leadSource` | string | No | Lead source |
|
||||
| `title` | string | No | No description |
|
||||
| `description` | string | No | Description |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Success |
|
||||
| `output` | object | Created lead |
|
||||
| `success` | boolean | Operation success status |
|
||||
| `output` | json | Operation result data |
|
||||
|
||||
### `salesforce_update_lead`
|
||||
|
||||
Update an existing lead
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `idToken` | string | No | No description |
|
||||
| `instanceUrl` | string | No | No description |
|
||||
| `leadId` | string | Yes | Lead ID \(required\) |
|
||||
| `lastName` | string | No | Last name |
|
||||
| `company` | string | No | No description |
|
||||
| `firstName` | string | No | First name |
|
||||
| `email` | string | No | No description |
|
||||
| `phone` | string | No | No description |
|
||||
| `status` | string | No | Lead status |
|
||||
| `leadSource` | string | No | Lead source |
|
||||
| `title` | string | No | No description |
|
||||
| `description` | string | No | Description |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Success |
|
||||
| `output` | object | Updated lead |
|
||||
| `success` | boolean | Operation success status |
|
||||
| `output` | json | Operation result data |
|
||||
|
||||
### `salesforce_delete_lead`
|
||||
|
||||
Delete a lead
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `idToken` | string | No | No description |
|
||||
| `instanceUrl` | string | No | No description |
|
||||
| `leadId` | string | Yes | Lead ID \(required\) |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Success |
|
||||
| `output` | object | Deleted lead |
|
||||
| `success` | boolean | Operation success status |
|
||||
| `output` | json | Operation result data |
|
||||
|
||||
### `salesforce_get_opportunities`
|
||||
|
||||
Get opportunity(ies) from Salesforce
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `idToken` | string | No | No description |
|
||||
| `instanceUrl` | string | No | No description |
|
||||
| `opportunityId` | string | No | Opportunity ID \(optional\) |
|
||||
| `limit` | string | No | Max results \(default: 100\) |
|
||||
| `fields` | string | No | Comma-separated fields |
|
||||
| `orderBy` | string | No | Order by field |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Success |
|
||||
| `output` | object | Opportunity data |
|
||||
| `success` | boolean | Operation success status |
|
||||
| `output` | json | Operation result data |
|
||||
|
||||
### `salesforce_create_opportunity`
|
||||
|
||||
Create a new opportunity
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `idToken` | string | No | No description |
|
||||
| `instanceUrl` | string | No | No description |
|
||||
| `name` | string | Yes | Opportunity name \(required\) |
|
||||
| `stageName` | string | Yes | Stage name \(required\) |
|
||||
| `closeDate` | string | Yes | Close date YYYY-MM-DD \(required\) |
|
||||
| `accountId` | string | No | Account ID |
|
||||
| `amount` | string | No | Amount \(number\) |
|
||||
| `probability` | string | No | Probability \(0-100\) |
|
||||
| `description` | string | No | Description |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Success |
|
||||
| `output` | object | Created opportunity |
|
||||
| `success` | boolean | Operation success status |
|
||||
| `output` | json | Operation result data |
|
||||
|
||||
### `salesforce_update_opportunity`
|
||||
|
||||
Update an existing opportunity
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `idToken` | string | No | No description |
|
||||
| `instanceUrl` | string | No | No description |
|
||||
| `opportunityId` | string | Yes | Opportunity ID \(required\) |
|
||||
| `name` | string | No | Opportunity name |
|
||||
| `stageName` | string | No | Stage name |
|
||||
| `closeDate` | string | No | Close date YYYY-MM-DD |
|
||||
| `accountId` | string | No | Account ID |
|
||||
| `amount` | string | No | No description |
|
||||
| `probability` | string | No | Probability \(0-100\) |
|
||||
| `description` | string | No | Description |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Success |
|
||||
| `output` | object | Updated opportunity |
|
||||
| `success` | boolean | Operation success status |
|
||||
| `output` | json | Operation result data |
|
||||
|
||||
### `salesforce_delete_opportunity`
|
||||
|
||||
Delete an opportunity
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `idToken` | string | No | No description |
|
||||
| `instanceUrl` | string | No | No description |
|
||||
| `opportunityId` | string | Yes | Opportunity ID \(required\) |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Success |
|
||||
| `output` | object | Deleted opportunity |
|
||||
| `success` | boolean | Operation success status |
|
||||
| `output` | json | Operation result data |
|
||||
|
||||
### `salesforce_get_cases`
|
||||
|
||||
Get case(s) from Salesforce
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `idToken` | string | No | No description |
|
||||
| `instanceUrl` | string | No | No description |
|
||||
| `caseId` | string | No | Case ID \(optional\) |
|
||||
| `limit` | string | No | Max results \(default: 100\) |
|
||||
| `fields` | string | No | Comma-separated fields |
|
||||
| `orderBy` | string | No | Order by field |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Success |
|
||||
| `output` | object | Case data |
|
||||
| `success` | boolean | Operation success status |
|
||||
| `output` | json | Operation result data |
|
||||
|
||||
### `salesforce_create_case`
|
||||
|
||||
Create a new case
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `idToken` | string | No | No description |
|
||||
| `instanceUrl` | string | No | No description |
|
||||
| `subject` | string | Yes | Case subject \(required\) |
|
||||
| `status` | string | No | Status \(e.g., New, Working, Escalated\) |
|
||||
| `priority` | string | No | Priority \(e.g., Low, Medium, High\) |
|
||||
| `origin` | string | No | Origin \(e.g., Phone, Email, Web\) |
|
||||
| `contactId` | string | No | Contact ID |
|
||||
| `accountId` | string | No | Account ID |
|
||||
| `description` | string | No | Description |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Success |
|
||||
| `output` | object | Created case |
|
||||
| `success` | boolean | Operation success status |
|
||||
| `output` | json | Operation result data |
|
||||
|
||||
### `salesforce_update_case`
|
||||
|
||||
Update an existing case
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `idToken` | string | No | No description |
|
||||
| `instanceUrl` | string | No | No description |
|
||||
| `caseId` | string | Yes | Case ID \(required\) |
|
||||
| `subject` | string | No | Case subject |
|
||||
| `status` | string | No | Status |
|
||||
| `priority` | string | No | Priority |
|
||||
| `description` | string | No | Description |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Success |
|
||||
| `output` | object | Updated case |
|
||||
| `success` | boolean | Operation success status |
|
||||
| `output` | json | Operation result data |
|
||||
|
||||
### `salesforce_delete_case`
|
||||
|
||||
Delete a case
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `idToken` | string | No | No description |
|
||||
| `instanceUrl` | string | No | No description |
|
||||
| `caseId` | string | Yes | Case ID \(required\) |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Success |
|
||||
| `output` | object | Deleted case |
|
||||
| `success` | boolean | Operation success status |
|
||||
| `output` | json | Operation result data |
|
||||
|
||||
### `salesforce_get_tasks`
|
||||
|
||||
Get task(s) from Salesforce
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `idToken` | string | No | No description |
|
||||
| `instanceUrl` | string | No | No description |
|
||||
| `taskId` | string | No | Task ID \(optional\) |
|
||||
| `limit` | string | No | Max results \(default: 100\) |
|
||||
| `fields` | string | No | Comma-separated fields |
|
||||
| `orderBy` | string | No | Order by field |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Success |
|
||||
| `output` | object | Task data |
|
||||
| `success` | boolean | Operation success status |
|
||||
| `output` | json | Operation result data |
|
||||
|
||||
### `salesforce_create_task`
|
||||
|
||||
Create a new task
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `idToken` | string | No | No description |
|
||||
| `instanceUrl` | string | No | No description |
|
||||
| `subject` | string | Yes | Task subject \(required\) |
|
||||
| `status` | string | No | Status \(e.g., Not Started, In Progress, Completed\) |
|
||||
| `priority` | string | No | Priority \(e.g., Low, Normal, High\) |
|
||||
| `activityDate` | string | No | Due date YYYY-MM-DD |
|
||||
| `whoId` | string | No | Related Contact/Lead ID |
|
||||
| `whatId` | string | No | Related Account/Opportunity ID |
|
||||
| `description` | string | No | Description |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Success |
|
||||
| `output` | object | Created task |
|
||||
| `success` | boolean | Operation success status |
|
||||
| `output` | json | Operation result data |
|
||||
|
||||
### `salesforce_update_task`
|
||||
|
||||
Update an existing task
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `idToken` | string | No | No description |
|
||||
| `instanceUrl` | string | No | No description |
|
||||
| `taskId` | string | Yes | Task ID \(required\) |
|
||||
| `subject` | string | No | Task subject |
|
||||
| `status` | string | No | Status |
|
||||
| `priority` | string | No | Priority |
|
||||
| `activityDate` | string | No | Due date YYYY-MM-DD |
|
||||
| `description` | string | No | Description |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Success |
|
||||
| `output` | object | Updated task |
|
||||
| `success` | boolean | Operation success status |
|
||||
| `output` | json | Operation result data |
|
||||
|
||||
### `salesforce_delete_task`
|
||||
|
||||
Delete a task
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `idToken` | string | No | No description |
|
||||
| `instanceUrl` | string | No | No description |
|
||||
| `taskId` | string | Yes | Task ID \(required\) |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Success |
|
||||
| `output` | object | Deleted task |
|
||||
|
||||
### `salesforce_list_reports`
|
||||
|
||||
Get a list of reports accessible by the current user
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `idToken` | string | No | No description |
|
||||
| `instanceUrl` | string | No | No description |
|
||||
| `folderName` | string | No | Filter by folder name |
|
||||
| `searchTerm` | string | No | Search term to filter reports by name |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Success status |
|
||||
| `output` | object | Reports data |
|
||||
|
||||
### `salesforce_get_report`
|
||||
|
||||
Get metadata and describe information for a specific report
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `idToken` | string | No | No description |
|
||||
| `instanceUrl` | string | No | No description |
|
||||
| `reportId` | string | Yes | Report ID \(required\) |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Success status |
|
||||
| `output` | object | Report metadata |
|
||||
|
||||
### `salesforce_run_report`
|
||||
|
||||
Execute a report and retrieve the results
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `idToken` | string | No | No description |
|
||||
| `instanceUrl` | string | No | No description |
|
||||
| `reportId` | string | Yes | Report ID \(required\) |
|
||||
| `includeDetails` | string | No | Include detail rows \(true/false, default: true\) |
|
||||
| `filters` | string | No | JSON string of report filters to apply |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Success status |
|
||||
| `output` | object | Report results |
|
||||
|
||||
### `salesforce_list_report_types`
|
||||
|
||||
Get a list of available report types
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `idToken` | string | No | No description |
|
||||
| `instanceUrl` | string | No | No description |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Success status |
|
||||
| `output` | object | Report types data |
|
||||
|
||||
### `salesforce_list_dashboards`
|
||||
|
||||
Get a list of dashboards accessible by the current user
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `idToken` | string | No | No description |
|
||||
| `instanceUrl` | string | No | No description |
|
||||
| `folderName` | string | No | Filter by folder name |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Success status |
|
||||
| `output` | object | Dashboards data |
|
||||
|
||||
### `salesforce_get_dashboard`
|
||||
|
||||
Get details and results for a specific dashboard
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `idToken` | string | No | No description |
|
||||
| `instanceUrl` | string | No | No description |
|
||||
| `dashboardId` | string | Yes | Dashboard ID \(required\) |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Success status |
|
||||
| `output` | object | Dashboard data |
|
||||
|
||||
### `salesforce_refresh_dashboard`
|
||||
|
||||
Refresh a dashboard to get the latest data
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `idToken` | string | No | No description |
|
||||
| `instanceUrl` | string | No | No description |
|
||||
| `dashboardId` | string | Yes | Dashboard ID \(required\) |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Success status |
|
||||
| `output` | object | Refreshed dashboard data |
|
||||
|
||||
### `salesforce_query`
|
||||
|
||||
Execute a custom SOQL query to retrieve data from Salesforce
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `idToken` | string | No | No description |
|
||||
| `instanceUrl` | string | No | No description |
|
||||
| `query` | string | Yes | SOQL query to execute \(e.g., SELECT Id, Name FROM Account LIMIT 10\) |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Success status |
|
||||
| `output` | object | Query results |
|
||||
|
||||
### `salesforce_query_more`
|
||||
|
||||
Retrieve additional query results using the nextRecordsUrl from a previous query
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `idToken` | string | No | No description |
|
||||
| `instanceUrl` | string | No | No description |
|
||||
| `nextRecordsUrl` | string | Yes | The nextRecordsUrl from a previous query response |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Success status |
|
||||
| `output` | object | Query results |
|
||||
|
||||
### `salesforce_describe_object`
|
||||
|
||||
Get metadata and field information for a Salesforce object
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `idToken` | string | No | No description |
|
||||
| `instanceUrl` | string | No | No description |
|
||||
| `objectName` | string | Yes | API name of the object \(e.g., Account, Contact, Lead, Custom_Object__c\) |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Success status |
|
||||
| `output` | object | Object metadata |
|
||||
|
||||
### `salesforce_list_objects`
|
||||
|
||||
Get a list of all available Salesforce objects
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `idToken` | string | No | No description |
|
||||
| `instanceUrl` | string | No | No description |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Success status |
|
||||
| `output` | object | Objects list |
|
||||
| `success` | boolean | Operation success status |
|
||||
| `output` | json | Operation result data |
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -1,188 +0,0 @@
|
||||
---
|
||||
title: SFTP
|
||||
description: Transfer files via SFTP (SSH File Transfer Protocol)
|
||||
---
|
||||
|
||||
import { BlockInfoCard } from "@/components/ui/block-info-card"
|
||||
|
||||
<BlockInfoCard
|
||||
type="sftp"
|
||||
color="#2D3748"
|
||||
/>
|
||||
|
||||
{/* MANUAL-CONTENT-START:intro */}
|
||||
[SFTP (SSH File Transfer Protocol)](https://en.wikipedia.org/wiki/SSH_File_Transfer_Protocol) is a secure network protocol that enables you to upload, download, and manage files on remote servers. SFTP operates over SSH, making it ideal for automated, encrypted file transfers and remote file management within modern workflows.
|
||||
|
||||
With SFTP tools integrated into Sim, you can easily automate the movement of files between your AI agents and external systems or servers. This empowers your agents to manage critical data exchanges, backups, document generation, and remote system orchestration—all with robust security.
|
||||
|
||||
**Key functionality available via SFTP tools:**
|
||||
|
||||
- **Upload Files:** Seamlessly transfer files of any type from your workflow to a remote server, with support for both password and SSH private key authentication.
|
||||
- **Download Files:** Retrieve files from remote SFTP servers directly for processing, archiving, or further automation.
|
||||
- **List & Manage Files:** Enumerate directories, delete or create files and folders, and manage file system permissions remotely.
|
||||
- **Flexible Authentication:** Connect using either traditional passwords or SSH keys, with support for passphrases and permissions control.
|
||||
- **Large File Support:** Programmatically manage large file uploads and downloads, with built-in size limits for safety.
|
||||
|
||||
By integrating SFTP into Sim, you can automate secure file operations as part of any workflow, whether it’s data collection, reporting, remote system maintenance, or dynamic content exchange between platforms.
|
||||
|
||||
The sections below describe the key SFTP tools available:
|
||||
|
||||
- **sftp_upload:** Upload one or more files to a remote server.
|
||||
- **sftp_download:** Download files from a remote server to your workflow.
|
||||
- **sftp_list:** List directory contents on a remote SFTP server.
|
||||
- **sftp_delete:** Delete files or directories from a remote server.
|
||||
- **sftp_create:** Create new files on a remote SFTP server.
|
||||
- **sftp_mkdir:** Create new directories remotely.
|
||||
|
||||
See the tool documentation below for detailed input and output parameters for each operation.
|
||||
{/* MANUAL-CONTENT-END */}
|
||||
|
||||
|
||||
## Usage Instructions
|
||||
|
||||
Upload, download, list, and manage files on remote servers via SFTP. Supports both password and private key authentication for secure file transfers.
|
||||
|
||||
|
||||
|
||||
## Tools
|
||||
|
||||
### `sftp_upload`
|
||||
|
||||
Upload files to a remote SFTP server
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `host` | string | Yes | SFTP server hostname or IP address |
|
||||
| `port` | number | Yes | SFTP server port \(default: 22\) |
|
||||
| `username` | string | Yes | SFTP username |
|
||||
| `password` | string | No | Password for authentication \(if not using private key\) |
|
||||
| `privateKey` | string | No | Private key for authentication \(OpenSSH format\) |
|
||||
| `passphrase` | string | No | Passphrase for encrypted private key |
|
||||
| `remotePath` | string | Yes | Destination directory on the remote server |
|
||||
| `files` | file[] | No | Files to upload |
|
||||
| `fileContent` | string | No | Direct file content to upload \(for text files\) |
|
||||
| `fileName` | string | No | File name when using direct content |
|
||||
| `overwrite` | boolean | No | Whether to overwrite existing files \(default: true\) |
|
||||
| `permissions` | string | No | File permissions \(e.g., 0644\) |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Whether the upload was successful |
|
||||
| `uploadedFiles` | json | Array of uploaded file details \(name, remotePath, size\) |
|
||||
| `message` | string | Operation status message |
|
||||
|
||||
### `sftp_download`
|
||||
|
||||
Download a file from a remote SFTP server
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `host` | string | Yes | SFTP server hostname or IP address |
|
||||
| `port` | number | Yes | SFTP server port \(default: 22\) |
|
||||
| `username` | string | Yes | SFTP username |
|
||||
| `password` | string | No | Password for authentication \(if not using private key\) |
|
||||
| `privateKey` | string | No | Private key for authentication \(OpenSSH format\) |
|
||||
| `passphrase` | string | No | Passphrase for encrypted private key |
|
||||
| `remotePath` | string | Yes | Path to the file on the remote server |
|
||||
| `encoding` | string | No | Output encoding: utf-8 for text, base64 for binary \(default: utf-8\) |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Whether the download was successful |
|
||||
| `fileName` | string | Name of the downloaded file |
|
||||
| `content` | string | File content \(text or base64 encoded\) |
|
||||
| `size` | number | File size in bytes |
|
||||
| `encoding` | string | Content encoding \(utf-8 or base64\) |
|
||||
| `message` | string | Operation status message |
|
||||
|
||||
### `sftp_list`
|
||||
|
||||
List files and directories on a remote SFTP server
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `host` | string | Yes | SFTP server hostname or IP address |
|
||||
| `port` | number | Yes | SFTP server port \(default: 22\) |
|
||||
| `username` | string | Yes | SFTP username |
|
||||
| `password` | string | No | Password for authentication \(if not using private key\) |
|
||||
| `privateKey` | string | No | Private key for authentication \(OpenSSH format\) |
|
||||
| `passphrase` | string | No | Passphrase for encrypted private key |
|
||||
| `remotePath` | string | Yes | Directory path on the remote server |
|
||||
| `detailed` | boolean | No | Include detailed file information \(size, permissions, modified date\) |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Whether the operation was successful |
|
||||
| `path` | string | Directory path that was listed |
|
||||
| `entries` | json | Array of directory entries with name, type, size, permissions, modifiedAt |
|
||||
| `count` | number | Number of entries in the directory |
|
||||
| `message` | string | Operation status message |
|
||||
|
||||
### `sftp_delete`
|
||||
|
||||
Delete a file or directory on a remote SFTP server
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `host` | string | Yes | SFTP server hostname or IP address |
|
||||
| `port` | number | Yes | SFTP server port \(default: 22\) |
|
||||
| `username` | string | Yes | SFTP username |
|
||||
| `password` | string | No | Password for authentication \(if not using private key\) |
|
||||
| `privateKey` | string | No | Private key for authentication \(OpenSSH format\) |
|
||||
| `passphrase` | string | No | Passphrase for encrypted private key |
|
||||
| `remotePath` | string | Yes | Path to the file or directory to delete |
|
||||
| `recursive` | boolean | No | Delete directories recursively |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Whether the deletion was successful |
|
||||
| `deletedPath` | string | Path that was deleted |
|
||||
| `message` | string | Operation status message |
|
||||
|
||||
### `sftp_mkdir`
|
||||
|
||||
Create a directory on a remote SFTP server
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `host` | string | Yes | SFTP server hostname or IP address |
|
||||
| `port` | number | Yes | SFTP server port \(default: 22\) |
|
||||
| `username` | string | Yes | SFTP username |
|
||||
| `password` | string | No | Password for authentication \(if not using private key\) |
|
||||
| `privateKey` | string | No | Private key for authentication \(OpenSSH format\) |
|
||||
| `passphrase` | string | No | Passphrase for encrypted private key |
|
||||
| `remotePath` | string | Yes | Path for the new directory |
|
||||
| `recursive` | boolean | No | Create parent directories if they do not exist |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Whether the directory was created successfully |
|
||||
| `createdPath` | string | Path of the created directory |
|
||||
| `message` | string | Operation status message |
|
||||
|
||||
|
||||
|
||||
## Notes
|
||||
|
||||
- Category: `tools`
|
||||
- Type: `sftp`
|
||||
@@ -7,7 +7,7 @@ import { BlockInfoCard } from "@/components/ui/block-info-card"
|
||||
|
||||
<BlockInfoCard
|
||||
type="smtp"
|
||||
color="#2D3748"
|
||||
color="#4A5568"
|
||||
/>
|
||||
|
||||
{/* MANUAL-CONTENT-START:intro */}
|
||||
|
||||
@@ -1,275 +0,0 @@
|
||||
---
|
||||
title: Zapier
|
||||
description: Execute actions across 7,000+ apps using Zapier AI Actions
|
||||
---
|
||||
|
||||
import { BlockInfoCard } from "@/components/ui/block-info-card"
|
||||
|
||||
<BlockInfoCard
|
||||
type="zapier"
|
||||
color="#FFFFFF"
|
||||
/>
|
||||
|
||||
{/* MANUAL-CONTENT-START:intro */}
|
||||
[Zapier](https://zapier.com/) connects 7,000+ apps and automates workflows without manual coding. The Zapier integration in Sim empowers you to execute, search, build, and manage powerful AI-driven actions across thousands of applications—all with plain English instructions.
|
||||
|
||||
With Zapier AI Actions in Sim, you can:
|
||||
|
||||
- **Execute Actions:** Instantly trigger any stored AI Action in your Zapier account. Launch emails, messages, project updates, document workflows, CRM updates, and much more.
|
||||
- **List Actions:** Retrieve a list of your available AI Actions configured in Zapier. Discover what's possible and find the right tool for your workflow.
|
||||
- **Search Apps:** Find apps in Zapier’s ecosystem by name or keyword. Easily check if the app you need is supported before building automations.
|
||||
- **Find Actions (Guess):** Describe what you want to accomplish in plain English (e.g., "send a Slack message", "create a Google Sheet row"), and let Zapier’s AI suggest matching actions—even across unfamiliar apps or APIs.
|
||||
- **Create Actions:** Programmatically define new AI Actions by specifying the target app, action type (write, read, search), and required parameters, directly from your workflow.
|
||||
|
||||
By combining these capabilities, you can search for apps, define new AI Actions, discover possible automations, list available actions, and execute any workflow—fully automated, with the power of both Sim and Zapier.
|
||||
{/* MANUAL-CONTENT-END */}
|
||||
|
||||
|
||||
## Usage Instructions
|
||||
|
||||
Connect to Zapier AI Actions to execute any of 30,000+ actions across 7,000+ apps. Send emails, create documents, update CRMs, post messages, and more - all through natural language instructions. Requires a Zapier AI Actions API key.
|
||||
|
||||
|
||||
|
||||
## Tools
|
||||
|
||||
### `zapier_execute_action`
|
||||
|
||||
Execute a stored AI Action in Zapier. Runs any of the 30,000+ actions across 7,000+ apps that Zapier supports.
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `apiKey` | string | Yes | Zapier AI Actions API key from actions.zapier.com/credentials |
|
||||
| `actionId` | string | Yes | The ID of the AI Action to execute |
|
||||
| `instructions` | string | Yes | Plain English instructions for what the action should do \(e.g., "Send a message about the weekly report to #general"\) |
|
||||
| `previewOnly` | boolean | No | If true, preview the execution without actually running it |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `executionLogId` | string | Unique identifier for this execution \(can be used for feedback\) |
|
||||
| `actionUsed` | string | Name of the action that was executed |
|
||||
| `inputParams` | json | Parameters that were passed to the API |
|
||||
| `resolvedParams` | json | Parameters that the AI resolved for execution |
|
||||
| `results` | json | Results from the action execution |
|
||||
| `resultFieldLabels` | json | Human-readable labels for result fields |
|
||||
| `status` | string | Execution status: success, error, empty, preview, or halted |
|
||||
| `error` | string | Error message if execution failed |
|
||||
|
||||
### `zapier_list_actions`
|
||||
|
||||
List all AI Actions configured in your Zapier account. Returns stored actions that can be executed.
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `apiKey` | string | Yes | Zapier AI Actions API key from actions.zapier.com/credentials |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `actions` | json | Array of configured AI Actions with id, description, actionType, app, appLabel, action, actionLabel, params, accountId, authenticationId, needs |
|
||||
| `configurationLink` | string | Link to configure more actions in Zapier |
|
||||
|
||||
### `zapier_search_apps`
|
||||
|
||||
Search for apps available in Zapier. Returns apps with their available action counts.
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `apiKey` | string | Yes | Zapier AI Actions API key from actions.zapier.com/credentials |
|
||||
| `query` | string | No | Optional search query to filter apps by name |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `apps` | json | Array of apps with app, name, logoUrl, authType, actions \(raw counts by type\), actionCount, writeActionCount, searchActionCount, readActionCount |
|
||||
|
||||
### `zapier_guess_actions`
|
||||
|
||||
Find relevant Zapier actions using natural language. Searches across 30,000+ actions to find the best matches for your query.
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `apiKey` | string | Yes | Zapier AI Actions API key from actions.zapier.com/credentials |
|
||||
| `query` | string | Yes | Natural language description of what you want to do \(e.g., "send a Slack message", "create a Google Doc"\) |
|
||||
| `actionTypes` | array | No | Types of actions to search for: write, search, read. If not specified, returns all types. |
|
||||
| `count` | number | No | Maximum number of results to return \(default: 25\) |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `actions` | json | Array of matching actions with app, action, actionType, name \(combined app/action name\), description, image, and score |
|
||||
|
||||
### `zapier_create_action`
|
||||
|
||||
Create a new stored AI Action in Zapier. The action can then be executed with zapier_execute_action.
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `apiKey` | string | Yes | Zapier AI Actions API key from actions.zapier.com/credentials |
|
||||
| `app` | string | Yes | The app identifier \(e.g., "slack", "gmail", "google-docs"\) |
|
||||
| `action` | string | Yes | The action identifier \(e.g., "send_channel_message", "send_email"\) |
|
||||
| `actionType` | string | No | Type of action: write, search, or read. Defaults to write. |
|
||||
| `accountId` | number | No | Zapier account ID |
|
||||
| `authenticationId` | number | No | Authentication ID for the app connection |
|
||||
| `meta` | json | No | Metadata object with params labels, app_label, action_label, authentication_label, app_needs_auth |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `id` | string | The ID of the created AI Action \(use this with execute_action\) |
|
||||
| `description` | string | Description of the action |
|
||||
| `actionType` | string | Type of action \(write, search, read, read_bulk, search_or_write, search_and_write\) |
|
||||
| `app` | string | App identifier |
|
||||
| `appLabel` | string | Human-readable app label from meta |
|
||||
| `action` | string | Action identifier |
|
||||
| `actionLabel` | string | Human-readable action label from meta |
|
||||
|
||||
### `zapier_stateless_execute`
|
||||
|
||||
Execute any Zapier action directly without creating a stored AI Action first. Provide the app, action, and instructions.
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `apiKey` | string | Yes | Zapier AI Actions API key from actions.zapier.com/credentials |
|
||||
| `app` | string | Yes | The app to use \(e.g., "SlackAPI", "GoogleSheetsV2API", "GmailV2API"\) |
|
||||
| `action` | string | Yes | The action to run \(e.g., "direct_message", "add_row", "send_email"\) |
|
||||
| `instructions` | string | Yes | Plain English instructions about how to run the action \(e.g., "Send a message saying hello to #general"\) |
|
||||
| `actionType` | string | No | Type of action: write, search, read, read_bulk, search_or_write, search_and_write |
|
||||
| `previewOnly` | boolean | No | If true, preview the execution without actually running it |
|
||||
| `authenticationId` | number | No | Authentication ID for the app connection |
|
||||
| `accountId` | number | No | Zapier account ID |
|
||||
| `providerId` | string | No | Provider ID for AI Actions |
|
||||
| `tokenBudget` | number | No | Max tokens per field \(default: 1000\) |
|
||||
| `skipParamGuessing` | boolean | No | Skip AI parameter guessing |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `executionLogId` | string | Unique identifier for this execution |
|
||||
| `actionUsed` | string | Name of the action that was executed |
|
||||
| `inputParams` | json | Parameters that were passed to the API |
|
||||
| `resolvedParams` | json | Parameters that the AI resolved for execution |
|
||||
| `results` | json | Results from the action execution |
|
||||
| `resultFieldLabels` | json | Human-readable labels for result fields |
|
||||
| `status` | string | Execution status: success, error, empty, preview, or halted |
|
||||
| `error` | string | Error message if execution failed |
|
||||
|
||||
### `zapier_search_app_actions`
|
||||
|
||||
Search for available actions within a specific Zapier app. Returns all actions the app supports.
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `apiKey` | string | Yes | Zapier AI Actions API key from actions.zapier.com/credentials |
|
||||
| `app` | string | Yes | The app identifier to search actions for \(e.g., "SlackAPI", "GmailV2API"\) |
|
||||
| `query` | string | No | Optional search query to filter actions by name or description |
|
||||
| `actionTypes` | array | No | Filter by action types: write, search, read, read_bulk, search_or_write, search_and_write. Defaults to write and search. |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `actions` | json | Array of actions with app, action, actionType, displayName, description, relevancyScore, appNeedsAuth, appInfo |
|
||||
|
||||
### `zapier_get_action_details`
|
||||
|
||||
Get detailed information about a specific action including its required inputs (needs) and outputs (gives).
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `apiKey` | string | Yes | Zapier AI Actions API key from actions.zapier.com/credentials |
|
||||
| `app` | string | Yes | The app identifier \(e.g., "SlackAPI", "GmailV2API"\) |
|
||||
| `action` | string | Yes | The action identifier \(e.g., "send_channel_message", "send_email"\) |
|
||||
| `actionType` | string | No | Type of action: write, search, read. Defaults to write. |
|
||||
| `includeNeeds` | boolean | No | Include input requirements \(needs\). Defaults to true. |
|
||||
| `includeGives` | boolean | No | Include output specifications \(gives\). Defaults to false. |
|
||||
| `includeSample` | boolean | No | Include sample execution result. Defaults to false. |
|
||||
| `accountId` | number | No | Zapier account ID |
|
||||
| `authenticationId` | number | No | Authentication ID for the app connection |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `action` | json | Action metadata including type, key, name, noun, and description |
|
||||
| `needs` | json | Array of input requirements with key, type, label, required, helpText, defaultValue, choices, dependsOn |
|
||||
| `gives` | json | Array of output fields with key, label, type, important, sample |
|
||||
| `sample` | json | Sample execution result if requested |
|
||||
| `customNeedsProbability` | number | Probability \(0-1\) that this action has custom/dynamic input fields |
|
||||
|
||||
### `zapier_update_action`
|
||||
|
||||
Update an existing stored AI Action configuration in Zapier.
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `apiKey` | string | Yes | Zapier AI Actions API key from actions.zapier.com/credentials |
|
||||
| `actionId` | string | Yes | The ID of the AI Action to update |
|
||||
| `app` | string | Yes | The app identifier \(e.g., "SlackAPI", "GmailV2API"\) |
|
||||
| `action` | string | Yes | The action identifier \(e.g., "send_channel_message", "send_email"\) |
|
||||
| `actionType` | string | No | Type of action: write, search, read, read_bulk, search_or_write, search_and_write |
|
||||
| `accountId` | number | No | Zapier account ID |
|
||||
| `authenticationId` | number | No | Authentication ID for the app connection |
|
||||
| `meta` | json | No | Metadata object with params labels, app_label, action_label, authentication_label, app_needs_auth |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `id` | string | The ID of the updated AI Action |
|
||||
| `description` | string | Description of the action |
|
||||
| `actionType` | string | Type of action |
|
||||
| `app` | string | App identifier |
|
||||
| `appLabel` | string | Human-readable app label |
|
||||
| `action` | string | Action identifier |
|
||||
| `actionLabel` | string | Human-readable action label |
|
||||
|
||||
### `zapier_delete_action`
|
||||
|
||||
Delete a stored AI Action from Zapier.
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `apiKey` | string | Yes | Zapier AI Actions API key from actions.zapier.com/credentials |
|
||||
| `actionId` | string | Yes | The ID of the AI Action to delete |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `deleted` | boolean | Whether the action was successfully deleted |
|
||||
| `message` | string | Status message |
|
||||
|
||||
|
||||
|
||||
## Notes
|
||||
|
||||
- Category: `tools`
|
||||
- Type: `zapier`
|
||||
@@ -30,9 +30,6 @@ Use the Start block for everything originating from the editor, deploy-to-API, o
|
||||
<Card title="Schedule" href="/triggers/schedule">
|
||||
Cron or interval based execution
|
||||
</Card>
|
||||
<Card title="RSS Feed" href="/triggers/rss">
|
||||
Monitor RSS and Atom feeds for new content
|
||||
</Card>
|
||||
</Cards>
|
||||
|
||||
## Quick Comparison
|
||||
@@ -42,7 +39,6 @@ Use the Start block for everything originating from the editor, deploy-to-API, o
|
||||
| **Start** | Editor runs, deploy-to-API requests, or chat messages |
|
||||
| **Schedule** | Timer managed in schedule block |
|
||||
| **Webhook** | On inbound HTTP request |
|
||||
| **RSS Feed** | New item published to feed |
|
||||
|
||||
> The Start block always exposes `input`, `conversationId`, and `files` fields. Add custom fields to the input format for additional structured data.
|
||||
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
{
|
||||
"pages": ["index", "start", "schedule", "webhook", "rss"]
|
||||
"pages": ["index", "start", "schedule", "webhook"]
|
||||
}
|
||||
|
||||
@@ -1,49 +0,0 @@
|
||||
---
|
||||
title: RSS Feed
|
||||
---
|
||||
|
||||
import { Callout } from 'fumadocs-ui/components/callout'
|
||||
import { Image } from '@/components/ui/image'
|
||||
|
||||
The RSS Feed block monitors RSS and Atom feeds – when new items are published, your workflow triggers automatically.
|
||||
|
||||
<div className="flex justify-center">
|
||||
<Image
|
||||
src="/static/blocks/rss.png"
|
||||
alt="RSS Feed Block"
|
||||
width={500}
|
||||
height={400}
|
||||
className="my-6"
|
||||
/>
|
||||
</div>
|
||||
|
||||
## Configuration
|
||||
|
||||
1. **Add RSS Feed Block** - Drag the RSS Feed block to start your workflow
|
||||
2. **Enter Feed URL** - Paste the URL of any RSS or Atom feed
|
||||
3. **Deploy** - Deploy your workflow to activate polling
|
||||
|
||||
Once deployed, the feed is checked every minute for new items.
|
||||
|
||||
## Output Fields
|
||||
|
||||
| Field | Type | Description |
|
||||
|-------|------|-------------|
|
||||
| `title` | string | Item title |
|
||||
| `link` | string | Item link |
|
||||
| `pubDate` | string | Publication date |
|
||||
| `item` | object | Raw item with all fields |
|
||||
| `feed` | object | Raw feed metadata |
|
||||
|
||||
Access mapped fields directly (`<rss.title>`) or use the raw objects for any field (`<rss.item.author>`, `<rss.feed.language>`).
|
||||
|
||||
## Use Cases
|
||||
|
||||
- **Content monitoring** - Track blogs, news sites, or competitor updates
|
||||
- **Podcast automation** - Trigger workflows when new episodes drop
|
||||
- **Release tracking** - Monitor GitHub releases, changelogs, or product updates
|
||||
- **Social aggregation** - Collect content from platforms that expose RSS feeds
|
||||
|
||||
<Callout>
|
||||
RSS triggers only fire for items published after you save the trigger. Existing feed items are not processed.
|
||||
</Callout>
|
||||
@@ -142,8 +142,8 @@ Function (Process) → Condition (account_type === 'enterprise') → Advanced or
|
||||
|
||||
## Mejores prácticas
|
||||
|
||||
- **Ordena las condiciones correctamente**: Coloca las condiciones más específicas antes que las generales para asegurar que la lógica específica tenga prioridad sobre las alternativas
|
||||
- **Usa la rama else cuando sea necesario**: Si ninguna condición coincide y la rama else no está conectada, la rama del flujo de trabajo terminará correctamente. Conecta la rama else si necesitas una ruta alternativa para casos no coincidentes
|
||||
- **Mantén las expresiones simples**: Usa expresiones booleanas claras y directas para mejorar la legibilidad y facilitar la depuración
|
||||
- **Documenta tus condiciones**: Añade descripciones para explicar el propósito de cada condición para una mejor colaboración en equipo y mantenimiento
|
||||
- **Prueba casos límite**: Verifica que las condiciones manejen correctamente los valores límite probando con valores en los extremos de los rangos de tus condiciones
|
||||
- **Ordenar las condiciones correctamente**: Coloca las condiciones más específicas antes que las generales para asegurar que la lógica específica tenga prioridad sobre las alternativas
|
||||
- **Incluir una condición predeterminada**: Añade una condición general (`true`) como última condición para manejar casos no coincidentes y evitar que la ejecución del flujo de trabajo se detenga
|
||||
- **Mantener las expresiones simples**: Usa expresiones booleanas claras y directas para mejorar la legibilidad y facilitar la depuración
|
||||
- **Documentar tus condiciones**: Añade descripciones para explicar el propósito de cada condición para una mejor colaboración en equipo y mantenimiento
|
||||
- **Probar casos límite**: Verifica que las condiciones manejen correctamente los valores límite probando con valores en los extremos de tus rangos de condición
|
||||
|
||||
@@ -72,7 +72,7 @@ Para integraciones personalizadas, aprovecha nuestro [soporte MCP (Protocolo de
|
||||
<Video src="introduction/integrations-sidebar.mp4" width={700} height={450} />
|
||||
</div>
|
||||
|
||||
## Copilot
|
||||
## Copiloto potenciado por IA
|
||||
|
||||
**Haz preguntas y recibe orientación**
|
||||
Copiloto responde preguntas sobre Sim, explica tus flujos de trabajo y proporciona sugerencias para mejorarlos. Usa el símbolo `@` para hacer referencia a flujos de trabajo, bloques, documentación, conocimiento y registros para obtener asistencia contextual.
|
||||
|
||||
@@ -1,7 +1,5 @@
|
||||
---
|
||||
title: Descripción general
|
||||
description: Sube, procesa y busca a través de tus documentos con búsqueda
|
||||
vectorial inteligente y fragmentación
|
||||
title: Base de conocimientos
|
||||
---
|
||||
|
||||
import { Video } from '@/components/ui/video'
|
||||
|
||||
@@ -1,155 +0,0 @@
|
||||
---
|
||||
title: Docker
|
||||
description: Despliega Sim Studio con Docker Compose
|
||||
---
|
||||
|
||||
import { Tab, Tabs } from 'fumadocs-ui/components/tabs'
|
||||
import { Callout } from 'fumadocs-ui/components/callout'
|
||||
|
||||
## Inicio rápido
|
||||
|
||||
```bash
|
||||
# Clone and start
|
||||
git clone https://github.com/simstudioai/sim.git && cd sim
|
||||
docker compose -f docker-compose.prod.yml up -d
|
||||
```
|
||||
|
||||
Abre [http://localhost:3000](http://localhost:3000)
|
||||
|
||||
## Configuración de producción
|
||||
|
||||
### 1. Configurar entorno
|
||||
|
||||
```bash
|
||||
# Generate secrets
|
||||
cat > .env << EOF
|
||||
DATABASE_URL=postgresql://postgres:postgres@db:5432/simstudio
|
||||
BETTER_AUTH_SECRET=$(openssl rand -hex 32)
|
||||
ENCRYPTION_KEY=$(openssl rand -hex 32)
|
||||
INTERNAL_API_SECRET=$(openssl rand -hex 32)
|
||||
NEXT_PUBLIC_APP_URL=https://sim.yourdomain.com
|
||||
BETTER_AUTH_URL=https://sim.yourdomain.com
|
||||
NEXT_PUBLIC_SOCKET_URL=https://sim.yourdomain.com
|
||||
EOF
|
||||
```
|
||||
|
||||
### 2. Iniciar servicios
|
||||
|
||||
```bash
|
||||
docker compose -f docker-compose.prod.yml up -d
|
||||
```
|
||||
|
||||
### 3. Configurar SSL
|
||||
|
||||
<Tabs items={['Caddy (Recomendado)', 'Nginx + Certbot']}>
|
||||
<Tab value="Caddy (Recomendado)">
|
||||
Caddy gestiona automáticamente los certificados SSL.
|
||||
|
||||
```bash
|
||||
# Install Caddy
|
||||
sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https curl
|
||||
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
|
||||
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list
|
||||
sudo apt update && sudo apt install caddy
|
||||
```
|
||||
|
||||
Crea `/etc/caddy/Caddyfile`:
|
||||
|
||||
```
|
||||
sim.yourdomain.com {
|
||||
reverse_proxy localhost:3000
|
||||
|
||||
handle /socket.io/* {
|
||||
reverse_proxy localhost:3002
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
```bash
|
||||
sudo systemctl restart caddy
|
||||
```
|
||||
|
||||
</Tab>
|
||||
<Tab value="Nginx + Certbot">
|
||||
|
||||
```bash
|
||||
# Install
|
||||
sudo apt install nginx certbot python3-certbot-nginx -y
|
||||
|
||||
# Create /etc/nginx/sites-available/sim
|
||||
server {
|
||||
listen 80;
|
||||
server_name sim.yourdomain.com;
|
||||
|
||||
location / {
|
||||
proxy_pass http://127.0.0.1:3000;
|
||||
proxy_http_version 1.1;
|
||||
proxy_set_header Upgrade $http_upgrade;
|
||||
proxy_set_header Connection 'upgrade';
|
||||
proxy_set_header Host $host;
|
||||
proxy_set_header X-Forwarded-Proto $scheme;
|
||||
}
|
||||
|
||||
location /socket.io/ {
|
||||
proxy_pass http://127.0.0.1:3002;
|
||||
proxy_http_version 1.1;
|
||||
proxy_set_header Upgrade $http_upgrade;
|
||||
proxy_set_header Connection "upgrade";
|
||||
}
|
||||
}
|
||||
|
||||
# Enable and get certificate
|
||||
sudo ln -s /etc/nginx/sites-available/sim /etc/nginx/sites-enabled/
|
||||
sudo certbot --nginx -d sim.yourdomain.com
|
||||
```
|
||||
|
||||
</Tab>
|
||||
</Tabs>
|
||||
|
||||
## Ollama
|
||||
|
||||
```bash
|
||||
# With GPU
|
||||
docker compose -f docker-compose.ollama.yml --profile gpu --profile setup up -d
|
||||
|
||||
# CPU only
|
||||
docker compose -f docker-compose.ollama.yml --profile cpu --profile setup up -d
|
||||
```
|
||||
|
||||
Descarga modelos adicionales:
|
||||
|
||||
```bash
|
||||
docker compose -f docker-compose.ollama.yml exec ollama ollama pull llama3.2
|
||||
```
|
||||
|
||||
### Ollama externo
|
||||
|
||||
Si Ollama se ejecuta en tu máquina host (no en Docker):
|
||||
|
||||
```bash
|
||||
# macOS/Windows
|
||||
OLLAMA_URL=http://host.docker.internal:11434 docker compose -f docker-compose.prod.yml up -d
|
||||
|
||||
# Linux - use your host IP
|
||||
OLLAMA_URL=http://192.168.1.100:11434 docker compose -f docker-compose.prod.yml up -d
|
||||
```
|
||||
|
||||
<Callout type="warning">
|
||||
Dentro de Docker, `localhost` se refiere al contenedor, no a tu host. Usa `host.docker.internal` o la IP de tu host.
|
||||
</Callout>
|
||||
|
||||
## Comandos
|
||||
|
||||
```bash
|
||||
# View logs
|
||||
docker compose -f docker-compose.prod.yml logs -f simstudio
|
||||
|
||||
# Stop
|
||||
docker compose -f docker-compose.prod.yml down
|
||||
|
||||
# Update
|
||||
docker compose -f docker-compose.prod.yml pull && docker compose -f docker-compose.prod.yml up -d
|
||||
|
||||
# Backup database
|
||||
docker compose -f docker-compose.prod.yml exec db pg_dump -U postgres simstudio > backup.sql
|
||||
```
|
||||
@@ -1,87 +0,0 @@
|
||||
---
|
||||
title: Variables de entorno
|
||||
description: Referencia de configuración para Sim Studio
|
||||
---
|
||||
|
||||
import { Callout } from 'fumadocs-ui/components/callout'
|
||||
|
||||
## Requeridas
|
||||
|
||||
| Variable | Descripción |
|
||||
|----------|-------------|
|
||||
| `DATABASE_URL` | Cadena de conexión PostgreSQL |
|
||||
| `BETTER_AUTH_SECRET` | Secreto de autenticación (32 caracteres hex): `openssl rand -hex 32` |
|
||||
| `BETTER_AUTH_URL` | URL de tu aplicación |
|
||||
| `ENCRYPTION_KEY` | Clave de cifrado (32 caracteres hex): `openssl rand -hex 32` |
|
||||
| `INTERNAL_API_SECRET` | Secreto de API interna (32 caracteres hex): `openssl rand -hex 32` |
|
||||
| `NEXT_PUBLIC_APP_URL` | URL pública de la aplicación |
|
||||
| `NEXT_PUBLIC_SOCKET_URL` | URL de WebSocket (predeterminado: `http://localhost:3002`) |
|
||||
|
||||
## Proveedores de IA
|
||||
|
||||
| Variable | Proveedor |
|
||||
|----------|----------|
|
||||
| `OPENAI_API_KEY` | OpenAI |
|
||||
| `ANTHROPIC_API_KEY_1` | Anthropic Claude |
|
||||
| `GEMINI_API_KEY_1` | Google Gemini |
|
||||
| `MISTRAL_API_KEY` | Mistral |
|
||||
| `OLLAMA_URL` | Ollama (predeterminado: `http://localhost:11434`) |
|
||||
|
||||
<Callout type="info">
|
||||
Para balanceo de carga, añade múltiples claves con sufijos `_1`, `_2`, `_3` (p. ej., `OPENAI_API_KEY_1`, `OPENAI_API_KEY_2`). Funciona con OpenAI, Anthropic y Gemini.
|
||||
</Callout>
|
||||
|
||||
<Callout type="info">
|
||||
En Docker, usa `OLLAMA_URL=http://host.docker.internal:11434` para Ollama en la máquina host.
|
||||
</Callout>
|
||||
|
||||
### Azure OpenAI
|
||||
|
||||
| Variable | Descripción |
|
||||
|----------|-------------|
|
||||
| `AZURE_OPENAI_API_KEY` | Clave de API de Azure OpenAI |
|
||||
| `AZURE_OPENAI_ENDPOINT` | URL del endpoint de Azure OpenAI |
|
||||
| `AZURE_OPENAI_API_VERSION` | Versión de API (p. ej., `2024-02-15-preview`) |
|
||||
|
||||
### vLLM (autoalojado)
|
||||
|
||||
| Variable | Descripción |
|
||||
|----------|-------------|
|
||||
| `VLLM_BASE_URL` | URL del servidor vLLM (p. ej., `http://localhost:8000/v1`) |
|
||||
| `VLLM_API_KEY` | Token bearer opcional para vLLM |
|
||||
|
||||
## Proveedores OAuth
|
||||
|
||||
| Variable | Descripción |
|
||||
|----------|-------------|
|
||||
| `GOOGLE_CLIENT_ID` | ID de cliente OAuth de Google |
|
||||
| `GOOGLE_CLIENT_SECRET` | Secreto de cliente OAuth de Google |
|
||||
| `GITHUB_CLIENT_ID` | ID de cliente OAuth de GitHub |
|
||||
| `GITHUB_CLIENT_SECRET` | Secreto de cliente OAuth de GitHub |
|
||||
|
||||
## Opcional
|
||||
|
||||
| Variable | Descripción |
|
||||
|----------|-------------|
|
||||
| `API_ENCRYPTION_KEY` | Encripta las claves API almacenadas (32 caracteres hexadecimales): `openssl rand -hex 32` |
|
||||
| `COPILOT_API_KEY` | Clave API para funciones de copilot |
|
||||
| `ADMIN_API_KEY` | Clave API de administrador para operaciones GitOps |
|
||||
| `RESEND_API_KEY` | Servicio de correo electrónico para notificaciones |
|
||||
| `ALLOWED_LOGIN_DOMAINS` | Restringir registros a dominios (separados por comas) |
|
||||
| `ALLOWED_LOGIN_EMAILS` | Restringir registros a correos electrónicos específicos (separados por comas) |
|
||||
| `DISABLE_REGISTRATION` | Establecer como `true` para deshabilitar nuevos registros de usuarios |
|
||||
|
||||
## Ejemplo de archivo .env
|
||||
|
||||
```bash
|
||||
DATABASE_URL=postgresql://postgres:postgres@db:5432/simstudio
|
||||
BETTER_AUTH_SECRET=<openssl rand -hex 32>
|
||||
BETTER_AUTH_URL=https://sim.yourdomain.com
|
||||
ENCRYPTION_KEY=<openssl rand -hex 32>
|
||||
INTERNAL_API_SECRET=<openssl rand -hex 32>
|
||||
NEXT_PUBLIC_APP_URL=https://sim.yourdomain.com
|
||||
NEXT_PUBLIC_SOCKET_URL=https://sim.yourdomain.com
|
||||
OPENAI_API_KEY=sk-...
|
||||
```
|
||||
|
||||
Consulta `apps/sim/.env.example` para todas las opciones.
|
||||
@@ -1,50 +0,0 @@
|
||||
---
|
||||
title: Autoalojamiento
|
||||
description: Despliega Sim Studio en tu propia infraestructura
|
||||
---
|
||||
|
||||
import { Card, Cards } from 'fumadocs-ui/components/card'
|
||||
import { Callout } from 'fumadocs-ui/components/callout'
|
||||
|
||||
Despliega Sim Studio en tu propia infraestructura con Docker o Kubernetes.
|
||||
|
||||
## Requisitos
|
||||
|
||||
| Recurso | Mínimo | Recomendado |
|
||||
|----------|---------|-------------|
|
||||
| CPU | 2 núcleos | 4+ núcleos |
|
||||
| RAM | 12 GB | 16+ GB |
|
||||
| Almacenamiento | 20 GB SSD | 50+ GB SSD |
|
||||
| Docker | 20.10+ | Última versión |
|
||||
|
||||
## Inicio rápido
|
||||
|
||||
```bash
|
||||
git clone https://github.com/simstudioai/sim.git && cd sim
|
||||
docker compose -f docker-compose.prod.yml up -d
|
||||
```
|
||||
|
||||
Abre [http://localhost:3000](http://localhost:3000)
|
||||
|
||||
## Opciones de despliegue
|
||||
|
||||
<Cards>
|
||||
<Card title="Docker" href="/self-hosting/docker">
|
||||
Despliega con Docker Compose en cualquier servidor
|
||||
</Card>
|
||||
<Card title="Kubernetes" href="/self-hosting/kubernetes">
|
||||
Despliega con Helm en clústeres de Kubernetes
|
||||
</Card>
|
||||
<Card title="Plataformas en la nube" href="/self-hosting/platforms">
|
||||
Guías para Railway, DigitalOcean, AWS, Azure, GCP
|
||||
</Card>
|
||||
</Cards>
|
||||
|
||||
## Arquitectura
|
||||
|
||||
| Componente | Puerto | Descripción |
|
||||
|-----------|------|-------------|
|
||||
| simstudio | 3000 | Aplicación principal |
|
||||
| realtime | 3002 | Servidor WebSocket |
|
||||
| db | 5432 | PostgreSQL con pgvector |
|
||||
| migrations | - | Migraciones de base de datos (se ejecuta una vez) |
|
||||
@@ -1,133 +0,0 @@
|
||||
---
|
||||
title: Kubernetes
|
||||
description: Desplegar Sim Studio con Helm
|
||||
---
|
||||
|
||||
import { Tab, Tabs } from 'fumadocs-ui/components/tabs'
|
||||
import { Callout } from 'fumadocs-ui/components/callout'
|
||||
|
||||
## Requisitos previos
|
||||
|
||||
- Kubernetes 1.19+
|
||||
- Helm 3.0+
|
||||
- Soporte de aprovisionador PV
|
||||
|
||||
## Instalación
|
||||
|
||||
```bash
|
||||
# Clone repo
|
||||
git clone https://github.com/simstudioai/sim.git && cd sim
|
||||
|
||||
# Generate secrets
|
||||
BETTER_AUTH_SECRET=$(openssl rand -hex 32)
|
||||
ENCRYPTION_KEY=$(openssl rand -hex 32)
|
||||
INTERNAL_API_SECRET=$(openssl rand -hex 32)
|
||||
|
||||
# Install
|
||||
helm install sim ./helm/sim \
|
||||
--set app.env.BETTER_AUTH_SECRET="$BETTER_AUTH_SECRET" \
|
||||
--set app.env.ENCRYPTION_KEY="$ENCRYPTION_KEY" \
|
||||
--set app.env.INTERNAL_API_SECRET="$INTERNAL_API_SECRET" \
|
||||
--namespace simstudio --create-namespace
|
||||
```
|
||||
|
||||
## Valores específicos para la nube
|
||||
|
||||
<Tabs items={['AWS EKS', 'Azure AKS', 'GCP GKE']}>
|
||||
<Tab value="AWS EKS">
|
||||
|
||||
```bash
|
||||
helm install sim ./helm/sim \
|
||||
--values ./helm/sim/examples/values-aws.yaml \
|
||||
--set app.env.BETTER_AUTH_SECRET="$BETTER_AUTH_SECRET" \
|
||||
--set app.env.ENCRYPTION_KEY="$ENCRYPTION_KEY" \
|
||||
--set app.env.INTERNAL_API_SECRET="$INTERNAL_API_SECRET" \
|
||||
--set app.env.NEXT_PUBLIC_APP_URL="https://sim.yourdomain.com" \
|
||||
--namespace simstudio --create-namespace
|
||||
```
|
||||
|
||||
</Tab>
|
||||
<Tab value="Azure AKS">
|
||||
|
||||
```bash
|
||||
helm install sim ./helm/sim \
|
||||
--values ./helm/sim/examples/values-azure.yaml \
|
||||
--set app.env.BETTER_AUTH_SECRET="$BETTER_AUTH_SECRET" \
|
||||
--set app.env.ENCRYPTION_KEY="$ENCRYPTION_KEY" \
|
||||
--set app.env.INTERNAL_API_SECRET="$INTERNAL_API_SECRET" \
|
||||
--set app.env.NEXT_PUBLIC_APP_URL="https://sim.yourdomain.com" \
|
||||
--namespace simstudio --create-namespace
|
||||
```
|
||||
|
||||
</Tab>
|
||||
<Tab value="GCP GKE">
|
||||
|
||||
```bash
|
||||
helm install sim ./helm/sim \
|
||||
--values ./helm/sim/examples/values-gcp.yaml \
|
||||
--set app.env.BETTER_AUTH_SECRET="$BETTER_AUTH_SECRET" \
|
||||
--set app.env.ENCRYPTION_KEY="$ENCRYPTION_KEY" \
|
||||
--set app.env.INTERNAL_API_SECRET="$INTERNAL_API_SECRET" \
|
||||
--set app.env.NEXT_PUBLIC_APP_URL="https://sim.yourdomain.com" \
|
||||
--namespace simstudio --create-namespace
|
||||
```
|
||||
|
||||
</Tab>
|
||||
</Tabs>
|
||||
|
||||
## Configuración clave
|
||||
|
||||
```yaml
|
||||
# Custom values.yaml
|
||||
app:
|
||||
replicaCount: 2
|
||||
env:
|
||||
NEXT_PUBLIC_APP_URL: "https://sim.yourdomain.com"
|
||||
OPENAI_API_KEY: "sk-..."
|
||||
|
||||
postgresql:
|
||||
persistence:
|
||||
size: 50Gi
|
||||
|
||||
ingress:
|
||||
enabled: true
|
||||
className: nginx
|
||||
tls:
|
||||
enabled: true
|
||||
app:
|
||||
host: sim.yourdomain.com
|
||||
```
|
||||
|
||||
Consulta `helm/sim/values.yaml` para todas las opciones.
|
||||
|
||||
## Base de datos externa
|
||||
|
||||
```yaml
|
||||
postgresql:
|
||||
enabled: false
|
||||
|
||||
externalDatabase:
|
||||
enabled: true
|
||||
host: "your-db-host"
|
||||
port: 5432
|
||||
username: "postgres"
|
||||
password: "your-password"
|
||||
database: "simstudio"
|
||||
sslMode: "require"
|
||||
```
|
||||
|
||||
## Comandos
|
||||
|
||||
```bash
|
||||
# Port forward for local access
|
||||
kubectl port-forward deployment/sim-sim-app 3000:3000 -n simstudio
|
||||
|
||||
# View logs
|
||||
kubectl logs -l app.kubernetes.io/component=app -n simstudio --tail=100
|
||||
|
||||
# Upgrade
|
||||
helm upgrade sim ./helm/sim --namespace simstudio
|
||||
|
||||
# Uninstall
|
||||
helm uninstall sim --namespace simstudio
|
||||
```
|
||||
@@ -1,124 +0,0 @@
|
||||
---
|
||||
title: Plataformas en la nube
|
||||
description: Despliega Sim Studio en plataformas en la nube
|
||||
---
|
||||
|
||||
import { Tab, Tabs } from 'fumadocs-ui/components/tabs'
|
||||
import { Callout } from 'fumadocs-ui/components/callout'
|
||||
|
||||
## Railway
|
||||
|
||||
Despliegue con un solo clic con aprovisionamiento automático de PostgreSQL.
|
||||
|
||||
[
|
||||
|
||||

|
||||
|
||||
](https://railway.com/new/template/sim-studio)
|
||||
|
||||
Después del despliegue, añade variables de entorno en el panel de Railway:
|
||||
- `BETTER_AUTH_SECRET`, `ENCRYPTION_KEY`, `INTERNAL_API_SECRET` (generadas automáticamente)
|
||||
- `OPENAI_API_KEY` u otras claves de proveedores de IA
|
||||
- Dominio personalizado en Configuración → Redes
|
||||
|
||||
## Despliegue en VPS
|
||||
|
||||
Para DigitalOcean, AWS EC2, Azure VMs o cualquier servidor Linux:
|
||||
|
||||
<Tabs items={['DigitalOcean', 'AWS EC2', 'Azure VM']}>
|
||||
<Tab value="DigitalOcean">
|
||||
**Recomendado:** Droplet de 16 GB RAM, Ubuntu 24.04
|
||||
|
||||
```bash
|
||||
# Create Droplet via console, then SSH in
|
||||
ssh root@your-droplet-ip
|
||||
```
|
||||
|
||||
</Tab>
|
||||
<Tab value="AWS EC2">
|
||||
**Recomendado:** t3.xlarge (16 GB RAM), Ubuntu 24.04
|
||||
|
||||
```bash
|
||||
ssh -i your-key.pem ubuntu@your-ec2-ip
|
||||
```
|
||||
|
||||
</Tab>
|
||||
<Tab value="Azure VM">
|
||||
**Recomendado:** Standard_D4s_v3 (16 GB RAM), Ubuntu 24.04
|
||||
|
||||
```bash
|
||||
ssh azureuser@your-vm-ip
|
||||
```
|
||||
|
||||
</Tab>
|
||||
</Tabs>
|
||||
|
||||
### Instalar Docker
|
||||
|
||||
```bash
|
||||
# Install Docker (official method)
|
||||
curl -fsSL https://get.docker.com | sudo sh
|
||||
sudo usermod -aG docker $USER
|
||||
|
||||
# Logout and reconnect, then verify
|
||||
docker --version
|
||||
```
|
||||
|
||||
### Desplegar Sim Studio
|
||||
|
||||
```bash
|
||||
git clone https://github.com/simstudioai/sim.git && cd sim
|
||||
|
||||
# Create .env with secrets
|
||||
cat > .env << EOF
|
||||
DATABASE_URL=postgresql://postgres:postgres@db:5432/simstudio
|
||||
BETTER_AUTH_SECRET=$(openssl rand -hex 32)
|
||||
ENCRYPTION_KEY=$(openssl rand -hex 32)
|
||||
INTERNAL_API_SECRET=$(openssl rand -hex 32)
|
||||
NEXT_PUBLIC_APP_URL=https://sim.yourdomain.com
|
||||
BETTER_AUTH_URL=https://sim.yourdomain.com
|
||||
NEXT_PUBLIC_SOCKET_URL=https://sim.yourdomain.com
|
||||
EOF
|
||||
|
||||
# Start
|
||||
docker compose -f docker-compose.prod.yml up -d
|
||||
```
|
||||
|
||||
### SSL con Caddy
|
||||
|
||||
```bash
|
||||
# Install Caddy
|
||||
sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https curl
|
||||
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
|
||||
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list
|
||||
sudo apt update && sudo apt install caddy
|
||||
|
||||
# Configure (replace domain)
|
||||
echo 'sim.yourdomain.com {
|
||||
reverse_proxy localhost:3000
|
||||
handle /socket.io/* {
|
||||
reverse_proxy localhost:3002
|
||||
}
|
||||
}' | sudo tee /etc/caddy/Caddyfile
|
||||
|
||||
sudo systemctl restart caddy
|
||||
```
|
||||
|
||||
Apunta el registro DNS A de tu dominio a la IP de tu servidor.
|
||||
|
||||
## Kubernetes (EKS, AKS, GKE)
|
||||
|
||||
Consulta la [guía de Kubernetes](/self-hosting/kubernetes) para la implementación con Helm en Kubernetes gestionado.
|
||||
|
||||
## Base de datos gestionada (Opcional)
|
||||
|
||||
Para producción, utiliza un servicio de PostgreSQL gestionado:
|
||||
|
||||
- **AWS RDS** / **Azure Database** / **Cloud SQL** - Habilita la extensión pgvector
|
||||
- **Supabase** / **Neon** - pgvector incluido
|
||||
|
||||
Establece `DATABASE_URL` en tu entorno:
|
||||
|
||||
```bash
|
||||
DATABASE_URL="postgresql://user:pass@host:5432/db?sslmode=require"
|
||||
```
|
||||
@@ -1,113 +0,0 @@
|
||||
---
|
||||
title: Solución de problemas
|
||||
description: Problemas comunes y soluciones
|
||||
---
|
||||
|
||||
## Falló la conexión a la base de datos
|
||||
|
||||
```bash
|
||||
# Check database is running
|
||||
docker compose ps db
|
||||
|
||||
# Test connection
|
||||
docker compose exec db psql -U postgres -c "SELECT 1"
|
||||
```
|
||||
|
||||
Verifica el formato de `DATABASE_URL`: `postgresql://user:pass@host:5432/database`
|
||||
|
||||
## Los modelos de Ollama no se muestran
|
||||
|
||||
Dentro de Docker, `localhost` = el contenedor, no tu máquina host.
|
||||
|
||||
```bash
|
||||
# For host-machine Ollama, use:
|
||||
OLLAMA_URL=http://host.docker.internal:11434 # macOS/Windows
|
||||
OLLAMA_URL=http://192.168.1.x:11434 # Linux (use actual IP)
|
||||
```
|
||||
|
||||
## WebSocket/Tiempo real no funciona
|
||||
|
||||
1. Comprueba que `NEXT_PUBLIC_SOCKET_URL` coincida con tu dominio
|
||||
2. Verifica que el servicio en tiempo real esté funcionando: `docker compose ps realtime`
|
||||
3. Asegúrate de que el proxy inverso pase las actualizaciones de WebSocket (consulta la [guía de Docker](/self-hosting/docker))
|
||||
|
||||
## Error 502 Bad Gateway
|
||||
|
||||
```bash
|
||||
# Check app is running
|
||||
docker compose ps simstudio
|
||||
docker compose logs simstudio
|
||||
|
||||
# Common causes: out of memory, database not ready
|
||||
```
|
||||
|
||||
## Errores de migración
|
||||
|
||||
```bash
|
||||
# View migration logs
|
||||
docker compose logs migrations
|
||||
|
||||
# Run manually
|
||||
docker compose exec simstudio bun run db:migrate
|
||||
```
|
||||
|
||||
## pgvector no encontrado
|
||||
|
||||
Usa la imagen correcta de PostgreSQL:
|
||||
|
||||
```yaml
|
||||
image: pgvector/pgvector:pg17 # NOT postgres:17
|
||||
```
|
||||
|
||||
## Errores de certificado (CERT_HAS_EXPIRED)
|
||||
|
||||
Si ves errores de certificado SSL al llamar a APIs externas:
|
||||
|
||||
```bash
|
||||
# Update CA certificates in container
|
||||
docker compose exec simstudio apt-get update && apt-get install -y ca-certificates
|
||||
|
||||
# Or set in environment (not recommended for production)
|
||||
NODE_TLS_REJECT_UNAUTHORIZED=0
|
||||
```
|
||||
|
||||
## Página en blanco después del inicio de sesión
|
||||
|
||||
1. Revisa la consola del navegador para ver errores
|
||||
2. Verifica que `NEXT_PUBLIC_APP_URL` coincida con tu dominio actual
|
||||
3. Borra las cookies del navegador y el almacenamiento local
|
||||
4. Comprueba que todos los servicios estén funcionando: `docker compose ps`
|
||||
|
||||
## Problemas específicos de Windows
|
||||
|
||||
**Errores de Turbopack en Windows:**
|
||||
|
||||
```bash
|
||||
# Use WSL2 for better compatibility
|
||||
wsl --install
|
||||
|
||||
# Or disable Turbopack in package.json
|
||||
# Change "next dev --turbopack" to "next dev"
|
||||
```
|
||||
|
||||
**Problemas de fin de línea:**
|
||||
|
||||
```bash
|
||||
# Configure git to use LF
|
||||
git config --global core.autocrlf input
|
||||
```
|
||||
|
||||
## Ver registros
|
||||
|
||||
```bash
|
||||
# All services
|
||||
docker compose logs -f
|
||||
|
||||
# Specific service
|
||||
docker compose logs -f simstudio
|
||||
```
|
||||
|
||||
## Obtener ayuda
|
||||
|
||||
- [GitHub Issues](https://github.com/simstudioai/sim/issues)
|
||||
- [Discord](https://discord.gg/Hr4UWYEcTT)
|
||||
@@ -1,182 +0,0 @@
|
||||
---
|
||||
title: Cursor
|
||||
description: Lanza y gestiona agentes en la nube de Cursor para trabajar en
|
||||
repositorios de GitHub
|
||||
---
|
||||
|
||||
import { BlockInfoCard } from "@/components/ui/block-info-card"
|
||||
|
||||
<BlockInfoCard
|
||||
type="cursor"
|
||||
color="#1E1E1E"
|
||||
/>
|
||||
|
||||
{/* MANUAL-CONTENT-START:intro */}
|
||||
[Cursor](https://www.cursor.so/) es un IDE con IA y una plataforma basada en la nube que te permite lanzar y gestionar potentes agentes de IA capaces de trabajar directamente en tus repositorios de GitHub. Los agentes de Cursor pueden automatizar tareas de desarrollo, mejorar la productividad de tu equipo y colaborar contigo realizando cambios en el código, respondiendo a instrucciones en lenguaje natural y manteniendo un historial de conversaciones sobre sus actividades.
|
||||
|
||||
Con Cursor, puedes:
|
||||
|
||||
- **Lanzar agentes en la nube para bases de código**: Crear instantáneamente nuevos agentes de IA que trabajen en tus repositorios en la nube
|
||||
- **Delegar tareas de programación usando lenguaje natural**: Guiar a los agentes con instrucciones escritas, modificaciones y aclaraciones
|
||||
- **Monitorizar el progreso y los resultados**: Obtener el estado del agente, ver resultados detallados e inspeccionar tareas actuales o completadas
|
||||
- **Acceder al historial completo de conversaciones**: Revisar todos los prompts y respuestas de IA para mayor transparencia y capacidad de auditoría
|
||||
- **Controlar y gestionar el ciclo de vida del agente**: Listar agentes activos, terminar agentes y gestionar lanzamientos de agentes basados en API y seguimientos
|
||||
|
||||
En Sim, la integración con Cursor permite que tus agentes y flujos de trabajo interactúen programáticamente con los agentes en la nube de Cursor. Esto significa que puedes usar Sim para:
|
||||
|
||||
- Listar todos los agentes en la nube y explorar su estado actual (`cursor_list_agents`)
|
||||
- Recuperar el estado actualizado y los resultados de cualquier agente (`cursor_get_agent`)
|
||||
- Ver el historial completo de conversaciones de cualquier agente de programación (`cursor_get_conversation`)
|
||||
- Añadir instrucciones de seguimiento o nuevos prompts a un agente en ejecución
|
||||
- Gestionar y terminar agentes según sea necesario
|
||||
|
||||
Esta integración te ayuda a combinar la inteligencia flexible de los agentes de Sim con las potentes capacidades de automatización de desarrollo de Cursor, haciendo posible escalar el desarrollo impulsado por IA en todos tus proyectos.
|
||||
{/* MANUAL-CONTENT-END */}
|
||||
|
||||
## Instrucciones de uso
|
||||
|
||||
Interactúa con la API de Agentes en la Nube de Cursor para lanzar agentes de IA que pueden trabajar en tus repositorios de GitHub. Permite lanzar agentes, añadir instrucciones de seguimiento, verificar el estado, ver conversaciones y gestionar el ciclo de vida de los agentes.
|
||||
|
||||
## Herramientas
|
||||
|
||||
### `cursor_list_agents`
|
||||
|
||||
Lista todos los agentes en la nube para el usuario autenticado con paginación opcional.
|
||||
|
||||
#### Entrada
|
||||
|
||||
| Parámetro | Tipo | Obligatorio | Descripción |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `apiKey` | string | Sí | Clave API de Cursor |
|
||||
| `limit` | number | No | Número de agentes a devolver \(predeterminado: 20, máximo: 100\) |
|
||||
| `cursor` | string | No | Cursor de paginación de la respuesta anterior |
|
||||
|
||||
#### Salida
|
||||
|
||||
| Parámetro | Tipo | Descripción |
|
||||
| --------- | ---- | ----------- |
|
||||
| `content` | string | Lista legible de agentes |
|
||||
| `metadata` | object | Metadatos de la lista de agentes |
|
||||
|
||||
### `cursor_get_agent`
|
||||
|
||||
Recupera el estado actual y los resultados de un agente en la nube.
|
||||
|
||||
#### Entrada
|
||||
|
||||
| Parámetro | Tipo | Obligatorio | Descripción |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `apiKey` | string | Sí | Clave API de Cursor |
|
||||
| `agentId` | string | Sí | Identificador único para el agente en la nube \(p. ej., bc_abc123\) |
|
||||
|
||||
#### Salida
|
||||
|
||||
| Parámetro | Tipo | Descripción |
|
||||
| --------- | ---- | ----------- |
|
||||
| `content` | string | Detalles del agente en formato legible |
|
||||
| `metadata` | object | Metadatos del agente |
|
||||
|
||||
### `cursor_get_conversation`
|
||||
|
||||
Recupera el historial de conversación de un agente en la nube, incluyendo todas las instrucciones del usuario y las respuestas del asistente.
|
||||
|
||||
#### Entrada
|
||||
|
||||
| Parámetro | Tipo | Obligatorio | Descripción |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `apiKey` | string | Sí | Clave API de Cursor |
|
||||
| `agentId` | string | Sí | Identificador único para el agente en la nube \(p. ej., bc_abc123\) |
|
||||
|
||||
#### Salida
|
||||
|
||||
| Parámetro | Tipo | Descripción |
|
||||
| --------- | ---- | ----------- |
|
||||
| `content` | string | Historial de conversación en formato legible |
|
||||
| `metadata` | object | Metadatos de la conversación |
|
||||
|
||||
### `cursor_launch_agent`
|
||||
|
||||
Inicia un nuevo agente en la nube para trabajar en un repositorio de GitHub con las instrucciones proporcionadas.
|
||||
|
||||
#### Entrada
|
||||
|
||||
| Parámetro | Tipo | Obligatorio | Descripción |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `apiKey` | string | Sí | Clave API de Cursor |
|
||||
| `repository` | string | Sí | URL del repositorio de GitHub \(p. ej., https://github.com/your-org/your-repo\) |
|
||||
| `ref` | string | No | Rama, etiqueta o commit desde donde trabajar \(por defecto usa la rama principal\) |
|
||||
| `promptText` | string | Sí | El texto de instrucciones para el agente |
|
||||
| `promptImages` | string | No | Array JSON de objetos de imagen con datos en base64 y dimensiones |
|
||||
| `model` | string | No | Modelo a utilizar \(dejar vacío para selección automática\) |
|
||||
| `branchName` | string | No | Nombre de rama personalizado para que el agente utilice |
|
||||
| `autoCreatePr` | boolean | No | Crear automáticamente un PR cuando el agente termine |
|
||||
| `openAsCursorGithubApp` | boolean | No | Abrir el PR como la aplicación de GitHub de Cursor |
|
||||
| `skipReviewerRequest` | boolean | No | Omitir la solicitud de revisores en el PR |
|
||||
|
||||
#### Salida
|
||||
|
||||
| Parámetro | Tipo | Descripción |
|
||||
| --------- | ---- | ----------- |
|
||||
| `content` | string | Mensaje de éxito con detalles del agente |
|
||||
| `metadata` | object | Metadatos del resultado de lanzamiento |
|
||||
|
||||
### `cursor_add_followup`
|
||||
|
||||
Añade una instrucción de seguimiento a un agente en la nube existente.
|
||||
|
||||
#### Entrada
|
||||
|
||||
| Parámetro | Tipo | Obligatorio | Descripción |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `apiKey` | string | Sí | Clave API de Cursor |
|
||||
| `agentId` | string | Sí | Identificador único para el agente en la nube \(p. ej., bc_abc123\) |
|
||||
| `followupPromptText` | string | Sí | El texto de instrucción de seguimiento para el agente |
|
||||
| `promptImages` | string | No | Array JSON de objetos de imagen con datos en base64 y dimensiones \(máximo 5\) |
|
||||
|
||||
#### Salida
|
||||
|
||||
| Parámetro | Tipo | Descripción |
|
||||
| --------- | ---- | ----------- |
|
||||
| `content` | string | Mensaje de éxito |
|
||||
| `metadata` | object | Metadatos del resultado |
|
||||
|
||||
### `cursor_stop_agent`
|
||||
|
||||
Detener un agente en la nube en ejecución. Esto pausa el agente sin eliminarlo.
|
||||
|
||||
#### Entrada
|
||||
|
||||
| Parámetro | Tipo | Obligatorio | Descripción |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `apiKey` | string | Sí | Clave API de Cursor |
|
||||
| `agentId` | string | Sí | Identificador único para el agente en la nube \(p. ej., bc_abc123\) |
|
||||
|
||||
#### Salida
|
||||
|
||||
| Parámetro | Tipo | Descripción |
|
||||
| --------- | ---- | ----------- |
|
||||
| `content` | string | Mensaje de éxito |
|
||||
| `metadata` | object | Metadatos del resultado |
|
||||
|
||||
### `cursor_delete_agent`
|
||||
|
||||
Eliminar permanentemente un agente en la nube. Esta acción no se puede deshacer.
|
||||
|
||||
#### Entrada
|
||||
|
||||
| Parámetro | Tipo | Obligatorio | Descripción |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `apiKey` | string | Sí | Clave API de Cursor |
|
||||
| `agentId` | string | Sí | Identificador único para el agente en la nube \(p. ej., bc_abc123\) |
|
||||
|
||||
#### Salida
|
||||
|
||||
| Parámetro | Tipo | Descripción |
|
||||
| --------- | ---- | ----------- |
|
||||
| `content` | string | Mensaje de éxito |
|
||||
| `metadata` | object | Metadatos del resultado |
|
||||
|
||||
## Notas
|
||||
|
||||
- Categoría: `tools`
|
||||
- Tipo: `cursor`
|
||||
@@ -1,63 +0,0 @@
|
||||
---
|
||||
title: DuckDuckGo
|
||||
description: Busca con DuckDuckGo
|
||||
---
|
||||
|
||||
import { BlockInfoCard } from "@/components/ui/block-info-card"
|
||||
|
||||
<BlockInfoCard
|
||||
type="duckduckgo"
|
||||
color="#FFFFFF"
|
||||
/>
|
||||
|
||||
{/* MANUAL-CONTENT-START:intro */}
|
||||
[DuckDuckGo](https://duckduckgo.com/) es un motor de búsqueda web enfocado en la privacidad que ofrece respuestas instantáneas, resúmenes, temas relacionados y más, sin rastrear a ti o tus búsquedas. DuckDuckGo facilita encontrar información sin perfiles de usuario ni anuncios dirigidos.
|
||||
|
||||
Con DuckDuckGo en Sim, puedes:
|
||||
|
||||
- **Buscar en la web**: Encuentra instantáneamente respuestas, hechos y resúmenes para una consulta de búsqueda determinada
|
||||
- **Obtener respuestas directas**: Recibe respuestas específicas para cálculos, conversiones o consultas factuales
|
||||
- **Acceder a resúmenes**: Recibe breves sumarios o descripciones para tus temas de búsqueda
|
||||
- **Obtener temas relacionados**: Descubre enlaces y referencias relevantes para tu búsqueda
|
||||
- **Filtrar resultados**: Opcionalmente elimina HTML o evita la desambiguación para obtener resultados más limpios
|
||||
|
||||
Estas características permiten a tus agentes Sim automatizar el acceso a conocimientos web actualizados, desde mostrar hechos en un flujo de trabajo hasta enriquecer documentos y análisis con información actualizada. Como la API de Respuestas Instantáneas de DuckDuckGo es abierta y no requiere una clave API, es simple y segura para la privacidad al integrarla en tus procesos de negocio automatizados.
|
||||
{/* MANUAL-CONTENT-END */}
|
||||
|
||||
## Instrucciones de uso
|
||||
|
||||
Busca en la web usando la API de Respuestas Instantáneas de DuckDuckGo. Devuelve respuestas instantáneas, resúmenes, temas relacionados y más. Uso gratuito sin necesidad de clave API.
|
||||
|
||||
## Herramientas
|
||||
|
||||
### `duckduckgo_search`
|
||||
|
||||
Busca en la web usando la API de Respuestas Instantáneas de DuckDuckGo. Devuelve respuestas instantáneas, resúmenes y temas relacionados para tu consulta. Uso gratuito sin necesidad de clave API.
|
||||
|
||||
#### Entrada
|
||||
|
||||
| Parámetro | Tipo | Obligatorio | Descripción |
|
||||
| --------- | ---- | ----------- | ----------- |
|
||||
| `query` | string | Sí | La consulta de búsqueda a ejecutar |
|
||||
| `noHtml` | boolean | No | Eliminar HTML del texto en los resultados \(predeterminado: true\) |
|
||||
| `skipDisambig` | boolean | No | Omitir resultados de desambiguación \(predeterminado: false\) |
|
||||
|
||||
#### Salida
|
||||
|
||||
| Parámetro | Tipo | Descripción |
|
||||
| --------- | ---- | ----------- |
|
||||
| `heading` | string | El encabezado/título de la respuesta instantánea |
|
||||
| `abstract` | string | Un breve resumen abstracto del tema |
|
||||
| `abstractText` | string | Versión en texto plano del resumen |
|
||||
| `abstractSource` | string | La fuente del resumen \(p. ej., Wikipedia\) |
|
||||
| `abstractURL` | string | URL a la fuente del resumen |
|
||||
| `image` | string | URL a una imagen relacionada con el tema |
|
||||
| `answer` | string | Respuesta directa si está disponible \(p. ej., para cálculos\) |
|
||||
| `answerType` | string | Tipo de respuesta \(p. ej., calc, ip, etc.\) |
|
||||
| `type` | string | Tipo de respuesta: A \(artículo\), D \(desambiguación\), C \(categoría\), N \(nombre\), E \(exclusivo\) |
|
||||
| `relatedTopics` | array | Array de temas relacionados con URLs y descripciones |
|
||||
|
||||
## Notas
|
||||
|
||||
- Categoría: `tools`
|
||||
- Tipo: `duckduckgo`
|
||||
@@ -1,217 +0,0 @@
|
||||
---
|
||||
title: Google Groups
|
||||
description: Administra los Grupos de Google Workspace y sus miembros
|
||||
---
|
||||
|
||||
import { BlockInfoCard } from "@/components/ui/block-info-card"
|
||||
|
||||
<BlockInfoCard
|
||||
type="google_groups"
|
||||
color="#E8F0FE"
|
||||
/>
|
||||
|
||||
## Instrucciones de uso
|
||||
|
||||
Conéctate a Google Workspace para crear, actualizar y administrar grupos y sus miembros utilizando la API de directorio de Admin SDK.
|
||||
|
||||
## Herramientas
|
||||
|
||||
### `google_groups_list_groups`
|
||||
|
||||
Listar todos los grupos en un dominio de Google Workspace
|
||||
|
||||
#### Entrada
|
||||
|
||||
| Parámetro | Tipo | Obligatorio | Descripción |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `customer` | string | No | ID del cliente o "my_customer" para el dominio del usuario autenticado |
|
||||
| `domain` | string | No | Nombre de dominio para filtrar grupos |
|
||||
| `maxResults` | number | No | Número máximo de resultados a devolver (1-200) |
|
||||
| `pageToken` | string | No | Token para paginación |
|
||||
| `query` | string | No | Consulta de búsqueda para filtrar grupos (p. ej., "email:admin*") |
|
||||
|
||||
#### Salida
|
||||
|
||||
| Parámetro | Tipo | Descripción |
|
||||
| --------- | ---- | ----------- |
|
||||
| `output` | json | Datos de respuesta de la API de Google Groups |
|
||||
|
||||
### `google_groups_get_group`
|
||||
|
||||
Obtener detalles de un Grupo de Google específico por correo electrónico o ID de grupo
|
||||
|
||||
#### Entrada
|
||||
|
||||
| Parámetro | Tipo | Obligatorio | Descripción |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `groupKey` | string | Sí | Dirección de correo electrónico del grupo o ID único del grupo |
|
||||
|
||||
#### Salida
|
||||
|
||||
| Parámetro | Tipo | Descripción |
|
||||
| --------- | ---- | ----------- |
|
||||
| `output` | json | Datos de respuesta de la API de Google Groups |
|
||||
|
||||
### `google_groups_create_group`
|
||||
|
||||
Crear un nuevo Grupo de Google en el dominio
|
||||
|
||||
#### Entrada
|
||||
|
||||
| Parámetro | Tipo | Obligatorio | Descripción |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `email` | string | Sí | Dirección de correo electrónico para el nuevo grupo (p. ej., equipo@tudominio.com) |
|
||||
| `name` | string | Sí | Nombre visible para el grupo |
|
||||
| `description` | string | No | Descripción del grupo |
|
||||
|
||||
#### Salida
|
||||
|
||||
| Parámetro | Tipo | Descripción |
|
||||
| --------- | ---- | ----------- |
|
||||
| `output` | json | Datos de respuesta de la API de Google Groups |
|
||||
|
||||
### `google_groups_update_group`
|
||||
|
||||
Actualizar un grupo de Google existente
|
||||
|
||||
#### Entrada
|
||||
|
||||
| Parámetro | Tipo | Obligatorio | Descripción |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `groupKey` | string | Sí | Dirección de correo electrónico del grupo o ID único del grupo |
|
||||
| `name` | string | No | Nuevo nombre visible para el grupo |
|
||||
| `description` | string | No | Nueva descripción para el grupo |
|
||||
| `email` | string | No | Nueva dirección de correo electrónico para el grupo |
|
||||
|
||||
#### Salida
|
||||
|
||||
| Parámetro | Tipo | Descripción |
|
||||
| --------- | ---- | ----------- |
|
||||
| `output` | json | Datos de respuesta de la API de Google Groups |
|
||||
|
||||
### `google_groups_delete_group`
|
||||
|
||||
Eliminar un grupo de Google
|
||||
|
||||
#### Entrada
|
||||
|
||||
| Parámetro | Tipo | Obligatorio | Descripción |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `groupKey` | string | Sí | Dirección de correo electrónico del grupo o ID único del grupo a eliminar |
|
||||
|
||||
#### Salida
|
||||
|
||||
| Parámetro | Tipo | Descripción |
|
||||
| --------- | ---- | ----------- |
|
||||
| `output` | json | Datos de respuesta de la API de Google Groups |
|
||||
|
||||
### `google_groups_list_members`
|
||||
|
||||
Listar todos los miembros de un Grupo de Google
|
||||
|
||||
#### Entrada
|
||||
|
||||
| Parámetro | Tipo | Obligatorio | Descripción |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `groupKey` | string | Sí | Dirección de correo electrónico del grupo o ID único del grupo |
|
||||
| `maxResults` | number | No | Número máximo de resultados a devolver \(1-200\) |
|
||||
| `pageToken` | string | No | Token para paginación |
|
||||
| `roles` | string | No | Filtrar por roles \(separados por comas: OWNER, MANAGER, MEMBER\) |
|
||||
|
||||
#### Salida
|
||||
|
||||
| Parámetro | Tipo | Descripción |
|
||||
| --------- | ---- | ----------- |
|
||||
| `output` | json | Datos de respuesta de la API de Grupos de Google |
|
||||
|
||||
### `google_groups_get_member`
|
||||
|
||||
Obtener detalles de un miembro específico en un Grupo de Google
|
||||
|
||||
#### Entrada
|
||||
|
||||
| Parámetro | Tipo | Obligatorio | Descripción |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `groupKey` | string | Sí | Dirección de correo electrónico del grupo o ID único del grupo |
|
||||
| `memberKey` | string | Sí | Dirección de correo electrónico del miembro o ID único del miembro |
|
||||
|
||||
#### Salida
|
||||
|
||||
| Parámetro | Tipo | Descripción |
|
||||
| --------- | ---- | ----------- |
|
||||
| `output` | json | Datos de respuesta de la API de Grupos de Google |
|
||||
|
||||
### `google_groups_add_member`
|
||||
|
||||
Añadir un nuevo miembro a un Grupo de Google
|
||||
|
||||
#### Entrada
|
||||
|
||||
| Parámetro | Tipo | Obligatorio | Descripción |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `groupKey` | string | Sí | Dirección de correo electrónico del grupo o ID único del grupo |
|
||||
| `email` | string | Sí | Dirección de correo electrónico del miembro a añadir |
|
||||
| `role` | string | No | Rol para el miembro \(MEMBER, MANAGER, o OWNER\). Por defecto es MEMBER. |
|
||||
|
||||
#### Salida
|
||||
|
||||
| Parámetro | Tipo | Descripción |
|
||||
| --------- | ---- | ----------- |
|
||||
| `output` | json | Datos de respuesta de la API de Google Groups |
|
||||
|
||||
### `google_groups_remove_member`
|
||||
|
||||
Eliminar un miembro de un grupo de Google
|
||||
|
||||
#### Entrada
|
||||
|
||||
| Parámetro | Tipo | Obligatorio | Descripción |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `groupKey` | string | Sí | Dirección de correo electrónico del grupo o ID único del grupo |
|
||||
| `memberKey` | string | Sí | Dirección de correo electrónico o ID único del miembro a eliminar |
|
||||
|
||||
#### Salida
|
||||
|
||||
| Parámetro | Tipo | Descripción |
|
||||
| --------- | ---- | ----------- |
|
||||
| `output` | json | Datos de respuesta de la API de Google Groups |
|
||||
|
||||
### `google_groups_update_member`
|
||||
|
||||
Actualizar un miembro
|
||||
|
||||
#### Entrada
|
||||
|
||||
| Parámetro | Tipo | Obligatorio | Descripción |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `groupKey` | string | Sí | Dirección de correo electrónico del grupo o ID único del grupo |
|
||||
| `memberKey` | string | Sí | Dirección de correo electrónico del miembro o ID único del miembro |
|
||||
| `role` | string | Sí | Nuevo rol para el miembro \(MEMBER, MANAGER, o OWNER\) |
|
||||
|
||||
#### Salida
|
||||
|
||||
| Parámetro | Tipo | Descripción |
|
||||
| --------- | ---- | ----------- |
|
||||
| `output` | json | Datos de respuesta de la API de Google Groups |
|
||||
|
||||
### `google_groups_has_member`
|
||||
|
||||
Comprobar si un usuario es miembro de un grupo de Google
|
||||
|
||||
#### Entrada
|
||||
|
||||
| Parámetro | Tipo | Obligatorio | Descripción |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `groupKey` | string | Sí | Dirección de correo electrónico del grupo o ID único del grupo |
|
||||
| `memberKey` | string | Sí | Dirección de correo electrónico del miembro o ID único del miembro a comprobar |
|
||||
|
||||
#### Salida
|
||||
|
||||
| Parámetro | Tipo | Descripción |
|
||||
| --------- | ---- | ----------- |
|
||||
| `output` | json | Datos de respuesta de la API de Google Groups |
|
||||
|
||||
## Notas
|
||||
|
||||
- Categoría: `tools`
|
||||
- Tipo: `google_groups`
|
||||
@@ -135,684 +135,283 @@ Eliminar una cuenta de Salesforce CRM
|
||||
|
||||
### `salesforce_get_contacts`
|
||||
|
||||
Obtener contacto(s) de Salesforce - un solo contacto si se proporciona ID, o lista si no
|
||||
|
||||
#### Entrada
|
||||
|
||||
| Parámetro | Tipo | Obligatorio | Descripción |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `idToken` | string | No | Sin descripción |
|
||||
| `instanceUrl` | string | No | Sin descripción |
|
||||
| `contactId` | string | No | ID de contacto \(si se proporciona, devuelve un solo contacto\) |
|
||||
| `limit` | string | No | Número de resultados \(predeterminado: 100, máximo: 2000\). Solo para consulta de lista. |
|
||||
| `fields` | string | No | Campos separados por comas \(p. ej., "Id,FirstName,LastName,Email,Phone"\) |
|
||||
| `orderBy` | string | No | Campo para ordenar \(p. ej., "LastName ASC"\). Solo para consulta de lista. |
|
||||
|
||||
#### Salida
|
||||
|
||||
| Parámetro | Tipo | Descripción |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Estado de éxito de la operación |
|
||||
| `output` | object | Datos de contacto(s) |
|
||||
| `output` | json | Datos del resultado de la operación |
|
||||
|
||||
### `salesforce_create_contact`
|
||||
|
||||
Crear un nuevo contacto en Salesforce CRM
|
||||
|
||||
#### Entrada
|
||||
|
||||
| Parámetro | Tipo | Obligatorio | Descripción |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `idToken` | string | No | Sin descripción |
|
||||
| `instanceUrl` | string | No | Sin descripción |
|
||||
| `lastName` | string | Sí | Apellido \(obligatorio\) |
|
||||
| `firstName` | string | No | Nombre |
|
||||
| `email` | string | No | Dirección de correo electrónico |
|
||||
| `phone` | string | No | Número de teléfono |
|
||||
| `accountId` | string | No | ID de cuenta para asociar con el contacto |
|
||||
| `title` | string | No | Sin descripción |
|
||||
| `department` | string | No | Departamento |
|
||||
| `mailingStreet` | string | No | Calle de correo |
|
||||
| `mailingCity` | string | No | Ciudad de correo |
|
||||
| `mailingState` | string | No | Estado de correo |
|
||||
| `mailingPostalCode` | string | No | Código postal de correo |
|
||||
| `mailingCountry` | string | No | País de correo |
|
||||
| `description` | string | No | Descripción del contacto |
|
||||
|
||||
#### Salida
|
||||
|
||||
| Parámetro | Tipo | Descripción |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Estado de éxito de la operación |
|
||||
| `output` | object | Datos del contacto creado |
|
||||
| `output` | json | Datos del resultado de la operación |
|
||||
|
||||
### `salesforce_update_contact`
|
||||
|
||||
Actualizar un contacto existente en Salesforce CRM
|
||||
|
||||
#### Entrada
|
||||
|
||||
| Parámetro | Tipo | Obligatorio | Descripción |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `idToken` | string | No | Sin descripción |
|
||||
| `instanceUrl` | string | No | Sin descripción |
|
||||
| `contactId` | string | Sí | ID del contacto a actualizar (obligatorio) |
|
||||
| `lastName` | string | No | Apellido |
|
||||
| `firstName` | string | No | Nombre |
|
||||
| `email` | string | No | Dirección de correo electrónico |
|
||||
| `phone` | string | No | Número de teléfono |
|
||||
| `accountId` | string | No | ID de la cuenta para asociar |
|
||||
| `title` | string | No | Sin descripción |
|
||||
| `department` | string | No | Departamento |
|
||||
| `mailingStreet` | string | No | Calle de correo |
|
||||
| `mailingCity` | string | No | Ciudad de correo |
|
||||
| `mailingState` | string | No | Estado de correo |
|
||||
| `mailingPostalCode` | string | No | Código postal de correo |
|
||||
| `mailingCountry` | string | No | País de correo |
|
||||
| `description` | string | No | Descripción |
|
||||
|
||||
#### Salida
|
||||
|
||||
| Parámetro | Tipo | Descripción |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Estado de éxito de la operación |
|
||||
| `output` | object | Datos del contacto actualizado |
|
||||
| `output` | json | Datos del resultado de la operación |
|
||||
|
||||
### `salesforce_delete_contact`
|
||||
|
||||
Eliminar un contacto de Salesforce CRM
|
||||
|
||||
#### Entrada
|
||||
|
||||
| Parámetro | Tipo | Obligatorio | Descripción |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `idToken` | string | No | Sin descripción |
|
||||
| `instanceUrl` | string | No | Sin descripción |
|
||||
| `contactId` | string | Sí | ID del contacto a eliminar \(obligatorio\) |
|
||||
|
||||
#### Salida
|
||||
|
||||
| Parámetro | Tipo | Descripción |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Estado de éxito de la operación |
|
||||
| `output` | object | Datos del contacto eliminado |
|
||||
| `output` | json | Datos del resultado de la operación |
|
||||
|
||||
### `salesforce_get_leads`
|
||||
|
||||
Obtener candidato(s) de Salesforce
|
||||
|
||||
#### Entrada
|
||||
|
||||
| Parámetro | Tipo | Obligatorio | Descripción |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `idToken` | string | No | Sin descripción |
|
||||
| `instanceUrl` | string | No | Sin descripción |
|
||||
| `leadId` | string | No | ID del candidato \(opcional\) |
|
||||
| `limit` | string | No | Máximo de resultados \(predeterminado: 100\) |
|
||||
| `fields` | string | No | Campos separados por comas |
|
||||
| `orderBy` | string | No | Campo para ordenar |
|
||||
|
||||
#### Salida
|
||||
|
||||
| Parámetro | Tipo | Descripción |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Estado de éxito |
|
||||
| `output` | object | Datos del candidato |
|
||||
| `success` | boolean | Estado de éxito de la operación |
|
||||
| `output` | json | Datos del resultado de la operación |
|
||||
|
||||
### `salesforce_create_lead`
|
||||
|
||||
Crear un nuevo candidato
|
||||
|
||||
#### Entrada
|
||||
|
||||
| Parámetro | Tipo | Obligatorio | Descripción |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `idToken` | string | No | Sin descripción |
|
||||
| `instanceUrl` | string | No | Sin descripción |
|
||||
| `lastName` | string | Sí | Apellido \(obligatorio\) |
|
||||
| `company` | string | Sí | Empresa \(obligatorio\) |
|
||||
| `firstName` | string | No | Nombre |
|
||||
| `email` | string | No | Sin descripción |
|
||||
| `phone` | string | No | Sin descripción |
|
||||
| `status` | string | No | Estado del candidato |
|
||||
| `leadSource` | string | No | Origen del candidato |
|
||||
| `title` | string | No | Sin descripción |
|
||||
| `description` | string | No | Descripción |
|
||||
|
||||
#### Salida
|
||||
|
||||
| Parámetro | Tipo | Descripción |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Estado de éxito |
|
||||
| `output` | object | Cliente potencial creado |
|
||||
| `success` | boolean | Estado de éxito de la operación |
|
||||
| `output` | json | Datos del resultado de la operación |
|
||||
|
||||
### `salesforce_update_lead`
|
||||
|
||||
Actualizar un cliente potencial existente
|
||||
|
||||
#### Entrada
|
||||
|
||||
| Parámetro | Tipo | Obligatorio | Descripción |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `idToken` | string | No | Sin descripción |
|
||||
| `instanceUrl` | string | No | Sin descripción |
|
||||
| `leadId` | string | Sí | ID del cliente potencial (obligatorio) |
|
||||
| `lastName` | string | No | Apellido |
|
||||
| `company` | string | No | Sin descripción |
|
||||
| `firstName` | string | No | Nombre |
|
||||
| `email` | string | No | Sin descripción |
|
||||
| `phone` | string | No | Sin descripción |
|
||||
| `status` | string | No | Estado del cliente potencial |
|
||||
| `leadSource` | string | No | Origen del cliente potencial |
|
||||
| `title` | string | No | Sin descripción |
|
||||
| `description` | string | No | Descripción |
|
||||
|
||||
#### Salida
|
||||
|
||||
| Parámetro | Tipo | Descripción |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Estado de éxito |
|
||||
| `output` | object | Cliente potencial actualizado |
|
||||
| `success` | boolean | Estado de éxito de la operación |
|
||||
| `output` | json | Datos del resultado de la operación |
|
||||
|
||||
### `salesforce_delete_lead`
|
||||
|
||||
Eliminar un cliente potencial
|
||||
|
||||
#### Entrada
|
||||
|
||||
| Parámetro | Tipo | Obligatorio | Descripción |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `idToken` | string | No | Sin descripción |
|
||||
| `instanceUrl` | string | No | Sin descripción |
|
||||
| `leadId` | string | Sí | ID del cliente potencial (obligatorio) |
|
||||
|
||||
#### Salida
|
||||
|
||||
| Parámetro | Tipo | Descripción |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Estado de éxito |
|
||||
| `output` | object | Cliente potencial eliminado |
|
||||
| `success` | boolean | Estado de éxito de la operación |
|
||||
| `output` | json | Datos del resultado de la operación |
|
||||
|
||||
### `salesforce_get_opportunities`
|
||||
|
||||
Obtener oportunidad(es) de Salesforce
|
||||
|
||||
#### Entrada
|
||||
|
||||
| Parámetro | Tipo | Obligatorio | Descripción |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `idToken` | string | No | Sin descripción |
|
||||
| `instanceUrl` | string | No | Sin descripción |
|
||||
| `opportunityId` | string | No | ID de oportunidad (opcional) |
|
||||
| `limit` | string | No | Máximo de resultados (predeterminado: 100) |
|
||||
| `fields` | string | No | Campos separados por comas |
|
||||
| `orderBy` | string | No | Campo para ordenar |
|
||||
|
||||
#### Salida
|
||||
|
||||
| Parámetro | Tipo | Descripción |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Estado de éxito |
|
||||
| `output` | object | Datos de la oportunidad |
|
||||
| `success` | boolean | Estado de éxito de la operación |
|
||||
| `output` | json | Datos del resultado de la operación |
|
||||
|
||||
### `salesforce_create_opportunity`
|
||||
|
||||
Crear una nueva oportunidad
|
||||
|
||||
#### Entrada
|
||||
|
||||
| Parámetro | Tipo | Obligatorio | Descripción |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `idToken` | string | No | Sin descripción |
|
||||
| `instanceUrl` | string | No | Sin descripción |
|
||||
| `name` | string | Sí | Nombre de la oportunidad (obligatorio) |
|
||||
| `stageName` | string | Sí | Nombre de la etapa (obligatorio) |
|
||||
| `closeDate` | string | Sí | Fecha de cierre AAAA-MM-DD (obligatorio) |
|
||||
| `accountId` | string | No | ID de la cuenta |
|
||||
| `amount` | string | No | Importe (número) |
|
||||
| `probability` | string | No | Probabilidad (0-100) |
|
||||
| `description` | string | No | Descripción |
|
||||
|
||||
#### Salida
|
||||
|
||||
| Parámetro | Tipo | Descripción |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Estado de éxito |
|
||||
| `output` | object | Oportunidad creada |
|
||||
| `success` | boolean | Estado de éxito de la operación |
|
||||
| `output` | json | Datos del resultado de la operación |
|
||||
|
||||
### `salesforce_update_opportunity`
|
||||
|
||||
Actualizar una oportunidad existente
|
||||
|
||||
#### Entrada
|
||||
|
||||
| Parámetro | Tipo | Obligatorio | Descripción |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `idToken` | string | No | Sin descripción |
|
||||
| `instanceUrl` | string | No | Sin descripción |
|
||||
| `opportunityId` | string | Sí | ID de la oportunidad \(obligatorio\) |
|
||||
| `name` | string | No | Nombre de la oportunidad |
|
||||
| `stageName` | string | No | Nombre de la etapa |
|
||||
| `closeDate` | string | No | Fecha de cierre AAAA-MM-DD |
|
||||
| `accountId` | string | No | ID de la cuenta |
|
||||
| `amount` | string | No | Sin descripción |
|
||||
| `probability` | string | No | Probabilidad \(0-100\) |
|
||||
| `description` | string | No | Descripción |
|
||||
|
||||
#### Salida
|
||||
|
||||
| Parámetro | Tipo | Descripción |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Estado de éxito |
|
||||
| `output` | object | Oportunidad actualizada |
|
||||
| `success` | boolean | Estado de éxito de la operación |
|
||||
| `output` | json | Datos del resultado de la operación |
|
||||
|
||||
### `salesforce_delete_opportunity`
|
||||
|
||||
Eliminar una oportunidad
|
||||
|
||||
#### Entrada
|
||||
|
||||
| Parámetro | Tipo | Obligatorio | Descripción |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `idToken` | string | No | Sin descripción |
|
||||
| `instanceUrl` | string | No | Sin descripción |
|
||||
| `opportunityId` | string | Sí | ID de la oportunidad \(obligatorio\) |
|
||||
|
||||
#### Salida
|
||||
|
||||
| Parámetro | Tipo | Descripción |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Estado de éxito |
|
||||
| `output` | object | Oportunidad eliminada |
|
||||
| `success` | boolean | Estado de éxito de la operación |
|
||||
| `output` | json | Datos del resultado de la operación |
|
||||
|
||||
### `salesforce_get_cases`
|
||||
|
||||
Obtener caso(s) de Salesforce
|
||||
|
||||
#### Entrada
|
||||
|
||||
| Parámetro | Tipo | Obligatorio | Descripción |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `idToken` | string | No | Sin descripción |
|
||||
| `instanceUrl` | string | No | Sin descripción |
|
||||
| `caseId` | string | No | ID del caso \(opcional\) |
|
||||
| `limit` | string | No | Resultados máximos \(predeterminado: 100\) |
|
||||
| `fields` | string | No | Campos separados por comas |
|
||||
| `orderBy` | string | No | Campo para ordenar |
|
||||
|
||||
#### Salida
|
||||
|
||||
| Parámetro | Tipo | Descripción |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Éxito |
|
||||
| `output` | object | Datos del caso |
|
||||
| `success` | boolean | Estado de éxito de la operación |
|
||||
| `output` | json | Datos del resultado de la operación |
|
||||
|
||||
### `salesforce_create_case`
|
||||
|
||||
Crear un nuevo caso
|
||||
|
||||
#### Entrada
|
||||
|
||||
| Parámetro | Tipo | Obligatorio | Descripción |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `idToken` | string | No | Sin descripción |
|
||||
| `instanceUrl` | string | No | Sin descripción |
|
||||
| `subject` | string | Sí | Asunto del caso \(obligatorio\) |
|
||||
| `status` | string | No | Estado \(p. ej., Nuevo, En proceso, Escalado\) |
|
||||
| `priority` | string | No | Prioridad \(p. ej., Baja, Media, Alta\) |
|
||||
| `origin` | string | No | Origen \(p. ej., Teléfono, Email, Web\) |
|
||||
| `contactId` | string | No | ID del contacto |
|
||||
| `accountId` | string | No | ID de la cuenta |
|
||||
| `description` | string | No | Descripción |
|
||||
|
||||
#### Salida
|
||||
|
||||
| Parámetro | Tipo | Descripción |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Éxito |
|
||||
| `output` | object | Caso creado |
|
||||
| `success` | boolean | Estado de éxito de la operación |
|
||||
| `output` | json | Datos del resultado de la operación |
|
||||
|
||||
### `salesforce_update_case`
|
||||
|
||||
Actualizar un caso existente
|
||||
|
||||
#### Entrada
|
||||
|
||||
| Parámetro | Tipo | Obligatorio | Descripción |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `idToken` | string | No | Sin descripción |
|
||||
| `instanceUrl` | string | No | Sin descripción |
|
||||
| `caseId` | string | Sí | ID del caso \(obligatorio\) |
|
||||
| `subject` | string | No | Asunto del caso |
|
||||
| `status` | string | No | Estado |
|
||||
| `priority` | string | No | Prioridad |
|
||||
| `description` | string | No | Descripción |
|
||||
|
||||
#### Salida
|
||||
|
||||
| Parámetro | Tipo | Descripción |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Éxito |
|
||||
| `output` | object | Caso actualizado |
|
||||
| `success` | boolean | Estado de éxito de la operación |
|
||||
| `output` | json | Datos del resultado de la operación |
|
||||
|
||||
### `salesforce_delete_case`
|
||||
|
||||
Eliminar un caso
|
||||
|
||||
#### Entrada
|
||||
|
||||
| Parámetro | Tipo | Obligatorio | Descripción |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `idToken` | string | No | Sin descripción |
|
||||
| `instanceUrl` | string | No | Sin descripción |
|
||||
| `caseId` | string | Sí | ID del caso \(obligatorio\) |
|
||||
|
||||
#### Salida
|
||||
|
||||
| Parámetro | Tipo | Descripción |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Éxito |
|
||||
| `output` | object | Caso eliminado |
|
||||
| `success` | boolean | Estado de éxito de la operación |
|
||||
| `output` | json | Datos del resultado de la operación |
|
||||
|
||||
### `salesforce_get_tasks`
|
||||
|
||||
Obtener tarea(s) de Salesforce
|
||||
|
||||
#### Entrada
|
||||
|
||||
| Parámetro | Tipo | Obligatorio | Descripción |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `idToken` | string | No | Sin descripción |
|
||||
| `instanceUrl` | string | No | Sin descripción |
|
||||
| `taskId` | string | No | ID de la tarea \(opcional\) |
|
||||
| `limit` | string | No | Máximo de resultados \(predeterminado: 100\) |
|
||||
| `fields` | string | No | Campos separados por comas |
|
||||
| `orderBy` | string | No | Campo para ordenar |
|
||||
|
||||
#### Salida
|
||||
|
||||
| Parámetro | Tipo | Descripción |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Estado de éxito de la operación |
|
||||
| `output` | object | Datos de la tarea |
|
||||
| `output` | json | Datos del resultado de la operación |
|
||||
|
||||
### `salesforce_create_task`
|
||||
|
||||
Crear una nueva tarea
|
||||
|
||||
#### Entrada
|
||||
|
||||
| Parámetro | Tipo | Obligatorio | Descripción |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `idToken` | string | No | Sin descripción |
|
||||
| `instanceUrl` | string | No | Sin descripción |
|
||||
| `subject` | string | Sí | Asunto de la tarea \(obligatorio\) |
|
||||
| `status` | string | No | Estado \(p. ej., No iniciada, En progreso, Completada\) |
|
||||
| `priority` | string | No | Prioridad \(p. ej., Baja, Normal, Alta\) |
|
||||
| `activityDate` | string | No | Fecha de vencimiento AAAA-MM-DD |
|
||||
| `whoId` | string | No | ID de contacto/cliente potencial relacionado |
|
||||
| `whatId` | string | No | ID de cuenta/oportunidad relacionada |
|
||||
| `description` | string | No | Descripción |
|
||||
|
||||
#### Salida
|
||||
|
||||
| Parámetro | Tipo | Descripción |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Estado de éxito de la operación |
|
||||
| `output` | object | Tarea creada |
|
||||
| `output` | json | Datos del resultado de la operación |
|
||||
|
||||
### `salesforce_update_task`
|
||||
|
||||
Actualizar una tarea existente
|
||||
|
||||
#### Entrada
|
||||
|
||||
| Parámetro | Tipo | Obligatorio | Descripción |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `idToken` | string | No | Sin descripción |
|
||||
| `instanceUrl` | string | No | Sin descripción |
|
||||
| `taskId` | string | Sí | ID de la tarea \(obligatorio\) |
|
||||
| `subject` | string | No | Asunto de la tarea |
|
||||
| `status` | string | No | Estado |
|
||||
| `priority` | string | No | Prioridad |
|
||||
| `activityDate` | string | No | Fecha de vencimiento AAAA-MM-DD |
|
||||
| `description` | string | No | Descripción |
|
||||
|
||||
#### Salida
|
||||
|
||||
| Parámetro | Tipo | Descripción |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Estado de éxito |
|
||||
| `output` | object | Tarea actualizada |
|
||||
| `success` | boolean | Estado de éxito de la operación |
|
||||
| `output` | json | Datos del resultado de la operación |
|
||||
|
||||
### `salesforce_delete_task`
|
||||
|
||||
Eliminar una tarea
|
||||
|
||||
#### Entrada
|
||||
|
||||
| Parámetro | Tipo | Obligatorio | Descripción |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `idToken` | string | No | Sin descripción |
|
||||
| `instanceUrl` | string | No | Sin descripción |
|
||||
| `taskId` | string | Sí | ID de la tarea (obligatorio) |
|
||||
|
||||
#### Salida
|
||||
|
||||
| Parámetro | Tipo | Descripción |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Estado de éxito |
|
||||
| `output` | object | Tarea eliminada |
|
||||
|
||||
### `salesforce_list_reports`
|
||||
|
||||
Obtener una lista de informes accesibles por el usuario actual
|
||||
|
||||
#### Entrada
|
||||
|
||||
| Parámetro | Tipo | Obligatorio | Descripción |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `idToken` | string | No | Sin descripción |
|
||||
| `instanceUrl` | string | No | Sin descripción |
|
||||
| `folderName` | string | No | Filtrar por nombre de carpeta |
|
||||
| `searchTerm` | string | No | Término de búsqueda para filtrar informes por nombre |
|
||||
|
||||
#### Salida
|
||||
|
||||
| Parámetro | Tipo | Descripción |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Estado de éxito |
|
||||
| `output` | object | Datos de los informes |
|
||||
|
||||
### `salesforce_get_report`
|
||||
|
||||
Obtener metadatos e información descriptiva para un informe específico
|
||||
|
||||
#### Entrada
|
||||
|
||||
| Parámetro | Tipo | Obligatorio | Descripción |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `idToken` | string | No | Sin descripción |
|
||||
| `instanceUrl` | string | No | Sin descripción |
|
||||
| `reportId` | string | Sí | ID del informe (obligatorio) |
|
||||
|
||||
#### Salida
|
||||
|
||||
| Parámetro | Tipo | Descripción |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Estado de éxito |
|
||||
| `output` | object | Metadatos del informe |
|
||||
|
||||
### `salesforce_run_report`
|
||||
|
||||
Ejecutar un informe y obtener los resultados
|
||||
|
||||
#### Entrada
|
||||
|
||||
| Parámetro | Tipo | Obligatorio | Descripción |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `idToken` | string | No | Sin descripción |
|
||||
| `instanceUrl` | string | No | Sin descripción |
|
||||
| `reportId` | string | Sí | ID del informe \(obligatorio\) |
|
||||
| `includeDetails` | string | No | Incluir filas detalladas \(true/false, predeterminado: true\) |
|
||||
| `filters` | string | No | Cadena JSON de filtros de informe para aplicar |
|
||||
|
||||
#### Salida
|
||||
|
||||
| Parámetro | Tipo | Descripción |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Estado de éxito |
|
||||
| `output` | object | Resultados del informe |
|
||||
|
||||
### `salesforce_list_report_types`
|
||||
|
||||
Obtener una lista de tipos de informes disponibles
|
||||
|
||||
#### Entrada
|
||||
|
||||
| Parámetro | Tipo | Obligatorio | Descripción |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `idToken` | string | No | Sin descripción |
|
||||
| `instanceUrl` | string | No | Sin descripción |
|
||||
|
||||
#### Salida
|
||||
|
||||
| Parámetro | Tipo | Descripción |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Estado de éxito |
|
||||
| `output` | object | Datos de tipos de informes |
|
||||
|
||||
### `salesforce_list_dashboards`
|
||||
|
||||
Obtener una lista de paneles accesibles por el usuario actual
|
||||
|
||||
#### Entrada
|
||||
|
||||
| Parámetro | Tipo | Obligatorio | Descripción |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `idToken` | string | No | Sin descripción |
|
||||
| `instanceUrl` | string | No | Sin descripción |
|
||||
| `folderName` | string | No | Filtrar por nombre de carpeta |
|
||||
|
||||
#### Salida
|
||||
|
||||
| Parámetro | Tipo | Descripción |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Estado de éxito |
|
||||
| `output` | object | Datos de los paneles |
|
||||
|
||||
### `salesforce_get_dashboard`
|
||||
|
||||
Obtener detalles y resultados de un panel específico
|
||||
|
||||
#### Entrada
|
||||
|
||||
| Parámetro | Tipo | Obligatorio | Descripción |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `idToken` | string | No | Sin descripción |
|
||||
| `instanceUrl` | string | No | Sin descripción |
|
||||
| `dashboardId` | string | Sí | ID del panel \(obligatorio\) |
|
||||
|
||||
#### Salida
|
||||
|
||||
| Parámetro | Tipo | Descripción |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Estado de éxito |
|
||||
| `output` | object | Datos del panel |
|
||||
|
||||
### `salesforce_refresh_dashboard`
|
||||
|
||||
Actualizar un panel para obtener los datos más recientes
|
||||
|
||||
#### Entrada
|
||||
|
||||
| Parámetro | Tipo | Obligatorio | Descripción |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `idToken` | string | No | Sin descripción |
|
||||
| `instanceUrl` | string | No | Sin descripción |
|
||||
| `dashboardId` | string | Sí | ID del panel \(obligatorio\) |
|
||||
|
||||
#### Salida
|
||||
|
||||
| Parámetro | Tipo | Descripción |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Estado de éxito |
|
||||
| `output` | object | Datos del panel actualizado |
|
||||
|
||||
### `salesforce_query`
|
||||
|
||||
Ejecutar una consulta SOQL personalizada para recuperar datos de Salesforce
|
||||
|
||||
#### Entrada
|
||||
|
||||
| Parámetro | Tipo | Obligatorio | Descripción |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `idToken` | string | No | Sin descripción |
|
||||
| `instanceUrl` | string | No | Sin descripción |
|
||||
| `query` | string | Sí | Consulta SOQL a ejecutar \(p. ej., SELECT Id, Name FROM Account LIMIT 10\) |
|
||||
|
||||
#### Salida
|
||||
|
||||
| Parámetro | Tipo | Descripción |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Estado de éxito |
|
||||
| `output` | object | Resultados de la consulta |
|
||||
|
||||
### `salesforce_query_more`
|
||||
|
||||
Recuperar resultados adicionales de consulta utilizando el nextRecordsUrl de una consulta anterior
|
||||
|
||||
#### Entrada
|
||||
|
||||
| Parámetro | Tipo | Obligatorio | Descripción |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `idToken` | string | No | Sin descripción |
|
||||
| `instanceUrl` | string | No | Sin descripción |
|
||||
| `nextRecordsUrl` | string | Sí | El nextRecordsUrl de una respuesta de consulta anterior |
|
||||
|
||||
#### Salida
|
||||
|
||||
| Parámetro | Tipo | Descripción |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Estado de éxito |
|
||||
| `output` | object | Resultados de la consulta |
|
||||
|
||||
### `salesforce_describe_object`
|
||||
|
||||
Obtener metadatos e información de campos para un objeto de Salesforce
|
||||
|
||||
#### Entrada
|
||||
|
||||
| Parámetro | Tipo | Obligatorio | Descripción |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `idToken` | string | No | Sin descripción |
|
||||
| `instanceUrl` | string | No | Sin descripción |
|
||||
| `objectName` | string | Sí | Nombre API del objeto \(p. ej., Account, Contact, Lead, Custom_Object__c\) |
|
||||
|
||||
#### Salida
|
||||
|
||||
| Parámetro | Tipo | Descripción |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Estado de éxito |
|
||||
| `output` | object | Metadatos del objeto |
|
||||
|
||||
### `salesforce_list_objects`
|
||||
|
||||
Obtener una lista de todos los objetos disponibles de Salesforce
|
||||
|
||||
#### Entrada
|
||||
|
||||
| Parámetro | Tipo | Obligatorio | Descripción |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `idToken` | string | No | Sin descripción |
|
||||
| `instanceUrl` | string | No | Sin descripción |
|
||||
|
||||
#### Salida
|
||||
|
||||
| Parámetro | Tipo | Descripción |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Estado de éxito |
|
||||
| `output` | object | Lista de objetos |
|
||||
| `success` | boolean | Estado de éxito de la operación |
|
||||
| `output` | json | Datos del resultado de la operación |
|
||||
|
||||
## Notas
|
||||
|
||||
|
||||
@@ -7,7 +7,7 @@ import { BlockInfoCard } from "@/components/ui/block-info-card"
|
||||
|
||||
<BlockInfoCard
|
||||
type="smtp"
|
||||
color="#2D3748"
|
||||
color="#4A5568"
|
||||
/>
|
||||
|
||||
{/* MANUAL-CONTENT-START:intro */}
|
||||
|
||||
@@ -142,8 +142,8 @@ Function (Process) → Condition (account_type === 'enterprise') → Advanced or
|
||||
|
||||
## Bonnes pratiques
|
||||
|
||||
- **Ordonnez correctement les conditions** : placez les conditions plus spécifiques avant les générales pour garantir que la logique spécifique prévaut sur les solutions de repli
|
||||
- **Utilisez la branche else quand nécessaire** : si aucune condition ne correspond et que la branche else n'est pas connectée, la branche du workflow se terminera gracieusement. Connectez la branche else si vous avez besoin d'un chemin de repli pour les cas non correspondants
|
||||
- **Gardez les expressions simples** : utilisez des expressions booléennes claires et directes pour une meilleure lisibilité et un débogage plus facile
|
||||
- **Documentez vos conditions** : ajoutez des descriptions pour expliquer l'objectif de chaque condition pour une meilleure collaboration en équipe et une maintenance plus facile
|
||||
- **Testez les cas limites** : vérifiez que les conditions gèrent correctement les valeurs limites en testant avec des valeurs aux extrémités de vos plages de conditions
|
||||
- **Ordonner correctement les conditions** : placer les conditions spécifiques avant les générales pour garantir que la logique spécifique prévaut sur les solutions de repli
|
||||
- **Inclure une condition par défaut** : ajouter une condition fourre-tout (`true`) comme dernière condition pour gérer les cas non correspondants et éviter que l'exécution du flux de travail ne se bloque
|
||||
- **Garder les expressions simples** : utiliser des expressions booléennes claires et directes pour une meilleure lisibilité et un débogage plus facile
|
||||
- **Documenter vos conditions** : ajouter des descriptions pour expliquer l'objectif de chaque condition pour une meilleure collaboration en équipe et une maintenance plus facile
|
||||
- **Tester les cas limites** : vérifier que les conditions gèrent correctement les valeurs limites en testant avec des valeurs aux extrémités de vos plages de conditions
|
||||
|
||||
@@ -72,7 +72,7 @@ Pour les intégrations personnalisées, utilisez notre [support MCP (Model Conte
|
||||
<Video src="introduction/integrations-sidebar.mp4" width={700} height={450} />
|
||||
</div>
|
||||
|
||||
## Copilot
|
||||
## Copilote propulsé par l'IA
|
||||
|
||||
**Posez des questions et obtenez des conseils**
|
||||
Le copilote répond aux questions sur Sim, explique vos flux de travail et propose des suggestions d'amélioration. Utilisez le symbole `@` pour référencer les flux de travail, les blocs, la documentation, les connaissances et les journaux pour une assistance contextuelle.
|
||||
|
||||
@@ -1,7 +1,5 @@
|
||||
---
|
||||
title: Aperçu
|
||||
description: Téléchargez, traitez et recherchez dans vos documents grâce à la
|
||||
recherche vectorielle intelligente et au découpage
|
||||
title: Base de connaissances
|
||||
---
|
||||
|
||||
import { Video } from '@/components/ui/video'
|
||||
|
||||
@@ -1,155 +0,0 @@
|
||||
---
|
||||
title: Docker
|
||||
description: Déployer Sim Studio avec Docker Compose
|
||||
---
|
||||
|
||||
import { Tab, Tabs } from 'fumadocs-ui/components/tabs'
|
||||
import { Callout } from 'fumadocs-ui/components/callout'
|
||||
|
||||
## Démarrage rapide
|
||||
|
||||
```bash
|
||||
# Clone and start
|
||||
git clone https://github.com/simstudioai/sim.git && cd sim
|
||||
docker compose -f docker-compose.prod.yml up -d
|
||||
```
|
||||
|
||||
Ouvrez [http://localhost:3000](http://localhost:3000)
|
||||
|
||||
## Configuration de production
|
||||
|
||||
### 1. Configurer l'environnement
|
||||
|
||||
```bash
|
||||
# Generate secrets
|
||||
cat > .env << EOF
|
||||
DATABASE_URL=postgresql://postgres:postgres@db:5432/simstudio
|
||||
BETTER_AUTH_SECRET=$(openssl rand -hex 32)
|
||||
ENCRYPTION_KEY=$(openssl rand -hex 32)
|
||||
INTERNAL_API_SECRET=$(openssl rand -hex 32)
|
||||
NEXT_PUBLIC_APP_URL=https://sim.yourdomain.com
|
||||
BETTER_AUTH_URL=https://sim.yourdomain.com
|
||||
NEXT_PUBLIC_SOCKET_URL=https://sim.yourdomain.com
|
||||
EOF
|
||||
```
|
||||
|
||||
### 2. Démarrer les services
|
||||
|
||||
```bash
|
||||
docker compose -f docker-compose.prod.yml up -d
|
||||
```
|
||||
|
||||
### 3. Configurer SSL
|
||||
|
||||
<Tabs items={['Caddy (Recommandé)', 'Nginx + Certbot']}>
|
||||
<Tab value="Caddy (Recommandé)">
|
||||
Caddy gère automatiquement les certificats SSL.
|
||||
|
||||
```bash
|
||||
# Install Caddy
|
||||
sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https curl
|
||||
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
|
||||
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list
|
||||
sudo apt update && sudo apt install caddy
|
||||
```
|
||||
|
||||
Créez `/etc/caddy/Caddyfile` :
|
||||
|
||||
```
|
||||
sim.yourdomain.com {
|
||||
reverse_proxy localhost:3000
|
||||
|
||||
handle /socket.io/* {
|
||||
reverse_proxy localhost:3002
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
```bash
|
||||
sudo systemctl restart caddy
|
||||
```
|
||||
|
||||
</Tab>
|
||||
<Tab value="Nginx + Certbot">
|
||||
|
||||
```bash
|
||||
# Install
|
||||
sudo apt install nginx certbot python3-certbot-nginx -y
|
||||
|
||||
# Create /etc/nginx/sites-available/sim
|
||||
server {
|
||||
listen 80;
|
||||
server_name sim.yourdomain.com;
|
||||
|
||||
location / {
|
||||
proxy_pass http://127.0.0.1:3000;
|
||||
proxy_http_version 1.1;
|
||||
proxy_set_header Upgrade $http_upgrade;
|
||||
proxy_set_header Connection 'upgrade';
|
||||
proxy_set_header Host $host;
|
||||
proxy_set_header X-Forwarded-Proto $scheme;
|
||||
}
|
||||
|
||||
location /socket.io/ {
|
||||
proxy_pass http://127.0.0.1:3002;
|
||||
proxy_http_version 1.1;
|
||||
proxy_set_header Upgrade $http_upgrade;
|
||||
proxy_set_header Connection "upgrade";
|
||||
}
|
||||
}
|
||||
|
||||
# Enable and get certificate
|
||||
sudo ln -s /etc/nginx/sites-available/sim /etc/nginx/sites-enabled/
|
||||
sudo certbot --nginx -d sim.yourdomain.com
|
||||
```
|
||||
|
||||
</Tab>
|
||||
</Tabs>
|
||||
|
||||
## Ollama
|
||||
|
||||
```bash
|
||||
# With GPU
|
||||
docker compose -f docker-compose.ollama.yml --profile gpu --profile setup up -d
|
||||
|
||||
# CPU only
|
||||
docker compose -f docker-compose.ollama.yml --profile cpu --profile setup up -d
|
||||
```
|
||||
|
||||
Télécharger des modèles supplémentaires :
|
||||
|
||||
```bash
|
||||
docker compose -f docker-compose.ollama.yml exec ollama ollama pull llama3.2
|
||||
```
|
||||
|
||||
### Ollama externe
|
||||
|
||||
Si Ollama s'exécute sur votre machine hôte (pas dans Docker) :
|
||||
|
||||
```bash
|
||||
# macOS/Windows
|
||||
OLLAMA_URL=http://host.docker.internal:11434 docker compose -f docker-compose.prod.yml up -d
|
||||
|
||||
# Linux - use your host IP
|
||||
OLLAMA_URL=http://192.168.1.100:11434 docker compose -f docker-compose.prod.yml up -d
|
||||
```
|
||||
|
||||
<Callout type="warning">
|
||||
À l'intérieur de Docker, `localhost` fait référence au conteneur, pas à votre hôte. Utilisez `host.docker.internal` ou l'IP de votre hôte.
|
||||
</Callout>
|
||||
|
||||
## Commandes
|
||||
|
||||
```bash
|
||||
# View logs
|
||||
docker compose -f docker-compose.prod.yml logs -f simstudio
|
||||
|
||||
# Stop
|
||||
docker compose -f docker-compose.prod.yml down
|
||||
|
||||
# Update
|
||||
docker compose -f docker-compose.prod.yml pull && docker compose -f docker-compose.prod.yml up -d
|
||||
|
||||
# Backup database
|
||||
docker compose -f docker-compose.prod.yml exec db pg_dump -U postgres simstudio > backup.sql
|
||||
```
|
||||
@@ -1,87 +0,0 @@
|
||||
---
|
||||
title: Variables d'environnement
|
||||
description: Référence de configuration pour Sim Studio
|
||||
---
|
||||
|
||||
import { Callout } from 'fumadocs-ui/components/callout'
|
||||
|
||||
## Obligatoires
|
||||
|
||||
| Variable | Description |
|
||||
|----------|-------------|
|
||||
| `DATABASE_URL` | Chaîne de connexion PostgreSQL |
|
||||
| `BETTER_AUTH_SECRET` | Secret d'authentification (32 caractères hexadécimaux) : `openssl rand -hex 32` |
|
||||
| `BETTER_AUTH_URL` | URL de votre application |
|
||||
| `ENCRYPTION_KEY` | Clé de chiffrement (32 caractères hexadécimaux) : `openssl rand -hex 32` |
|
||||
| `INTERNAL_API_SECRET` | Secret API interne (32 caractères hexadécimaux) : `openssl rand -hex 32` |
|
||||
| `NEXT_PUBLIC_APP_URL` | URL publique de l'application |
|
||||
| `NEXT_PUBLIC_SOCKET_URL` | URL WebSocket (par défaut : `http://localhost:3002`) |
|
||||
|
||||
## Fournisseurs d'IA
|
||||
|
||||
| Variable | Fournisseur |
|
||||
|----------|----------|
|
||||
| `OPENAI_API_KEY` | OpenAI |
|
||||
| `ANTHROPIC_API_KEY_1` | Anthropic Claude |
|
||||
| `GEMINI_API_KEY_1` | Google Gemini |
|
||||
| `MISTRAL_API_KEY` | Mistral |
|
||||
| `OLLAMA_URL` | Ollama (par défaut : `http://localhost:11434`) |
|
||||
|
||||
<Callout type="info">
|
||||
Pour l'équilibrage de charge, ajoutez plusieurs clés avec les suffixes `_1`, `_2`, `_3` (par exemple, `OPENAI_API_KEY_1`, `OPENAI_API_KEY_2`). Fonctionne avec OpenAI, Anthropic et Gemini.
|
||||
</Callout>
|
||||
|
||||
<Callout type="info">
|
||||
Dans Docker, utilisez `OLLAMA_URL=http://host.docker.internal:11434` pour Ollama sur la machine hôte.
|
||||
</Callout>
|
||||
|
||||
### Azure OpenAI
|
||||
|
||||
| Variable | Description |
|
||||
|----------|-------------|
|
||||
| `AZURE_OPENAI_API_KEY` | Clé API Azure OpenAI |
|
||||
| `AZURE_OPENAI_ENDPOINT` | URL du point de terminaison Azure OpenAI |
|
||||
| `AZURE_OPENAI_API_VERSION` | Version de l'API (par exemple, `2024-02-15-preview`) |
|
||||
|
||||
### vLLM (auto-hébergé)
|
||||
|
||||
| Variable | Description |
|
||||
|----------|-------------|
|
||||
| `VLLM_BASE_URL` | URL du serveur vLLM (par exemple, `http://localhost:8000/v1`) |
|
||||
| `VLLM_API_KEY` | Jeton bearer optionnel pour vLLM |
|
||||
|
||||
## Fournisseurs OAuth
|
||||
|
||||
| Variable | Description |
|
||||
|----------|-------------|
|
||||
| `GOOGLE_CLIENT_ID` | ID client OAuth Google |
|
||||
| `GOOGLE_CLIENT_SECRET` | Secret client OAuth Google |
|
||||
| `GITHUB_CLIENT_ID` | ID client OAuth GitHub |
|
||||
| `GITHUB_CLIENT_SECRET` | Secret client OAuth GitHub |
|
||||
|
||||
## Optionnel
|
||||
|
||||
| Variable | Description |
|
||||
|----------|-------------|
|
||||
| `API_ENCRYPTION_KEY` | Chiffre les clés API stockées (32 caractères hexadécimaux) : `openssl rand -hex 32` |
|
||||
| `COPILOT_API_KEY` | Clé API pour les fonctionnalités copilot |
|
||||
| `ADMIN_API_KEY` | Clé API administrateur pour les opérations GitOps |
|
||||
| `RESEND_API_KEY` | Service de messagerie pour les notifications |
|
||||
| `ALLOWED_LOGIN_DOMAINS` | Restreindre les inscriptions à des domaines (séparés par des virgules) |
|
||||
| `ALLOWED_LOGIN_EMAILS` | Restreindre les inscriptions à des emails spécifiques (séparés par des virgules) |
|
||||
| `DISABLE_REGISTRATION` | Définir à `true` pour désactiver les inscriptions de nouveaux utilisateurs |
|
||||
|
||||
## Exemple de fichier .env
|
||||
|
||||
```bash
|
||||
DATABASE_URL=postgresql://postgres:postgres@db:5432/simstudio
|
||||
BETTER_AUTH_SECRET=<openssl rand -hex 32>
|
||||
BETTER_AUTH_URL=https://sim.yourdomain.com
|
||||
ENCRYPTION_KEY=<openssl rand -hex 32>
|
||||
INTERNAL_API_SECRET=<openssl rand -hex 32>
|
||||
NEXT_PUBLIC_APP_URL=https://sim.yourdomain.com
|
||||
NEXT_PUBLIC_SOCKET_URL=https://sim.yourdomain.com
|
||||
OPENAI_API_KEY=sk-...
|
||||
```
|
||||
|
||||
Voir `apps/sim/.env.example` pour toutes les options.
|
||||
@@ -1,50 +0,0 @@
|
||||
---
|
||||
title: Auto-hébergement
|
||||
description: Déployez Sim Studio sur votre propre infrastructure
|
||||
---
|
||||
|
||||
import { Card, Cards } from 'fumadocs-ui/components/card'
|
||||
import { Callout } from 'fumadocs-ui/components/callout'
|
||||
|
||||
Déployez Sim Studio sur votre propre infrastructure avec Docker ou Kubernetes.
|
||||
|
||||
## Prérequis
|
||||
|
||||
| Ressource | Minimum | Recommandé |
|
||||
|----------|---------|-------------|
|
||||
| CPU | 2 cœurs | 4+ cœurs |
|
||||
| RAM | 12 Go | 16+ Go |
|
||||
| Stockage | 20 Go SSD | 50+ Go SSD |
|
||||
| Docker | 20.10+ | Dernière version |
|
||||
|
||||
## Démarrage rapide
|
||||
|
||||
```bash
|
||||
git clone https://github.com/simstudioai/sim.git && cd sim
|
||||
docker compose -f docker-compose.prod.yml up -d
|
||||
```
|
||||
|
||||
Ouvrez [http://localhost:3000](http://localhost:3000)
|
||||
|
||||
## Options de déploiement
|
||||
|
||||
<Cards>
|
||||
<Card title="Docker" href="/self-hosting/docker">
|
||||
Déployez avec Docker Compose sur n'importe quel serveur
|
||||
</Card>
|
||||
<Card title="Kubernetes" href="/self-hosting/kubernetes">
|
||||
Déployez avec Helm sur des clusters Kubernetes
|
||||
</Card>
|
||||
<Card title="Plateformes cloud" href="/self-hosting/platforms">
|
||||
Guides pour Railway, DigitalOcean, AWS, Azure, GCP
|
||||
</Card>
|
||||
</Cards>
|
||||
|
||||
## Architecture
|
||||
|
||||
| Composant | Port | Description |
|
||||
|-----------|------|-------------|
|
||||
| simstudio | 3000 | Application principale |
|
||||
| realtime | 3002 | Serveur WebSocket |
|
||||
| db | 5432 | PostgreSQL avec pgvector |
|
||||
| migrations | - | Migrations de base de données (exécutées une seule fois) |
|
||||
@@ -1,133 +0,0 @@
|
||||
---
|
||||
title: Kubernetes
|
||||
description: Déployer Sim Studio avec Helm
|
||||
---
|
||||
|
||||
import { Tab, Tabs } from 'fumadocs-ui/components/tabs'
|
||||
import { Callout } from 'fumadocs-ui/components/callout'
|
||||
|
||||
## Prérequis
|
||||
|
||||
- Kubernetes 1.19+
|
||||
- Helm 3.0+
|
||||
- Support du provisionneur PV
|
||||
|
||||
## Installation
|
||||
|
||||
```bash
|
||||
# Clone repo
|
||||
git clone https://github.com/simstudioai/sim.git && cd sim
|
||||
|
||||
# Generate secrets
|
||||
BETTER_AUTH_SECRET=$(openssl rand -hex 32)
|
||||
ENCRYPTION_KEY=$(openssl rand -hex 32)
|
||||
INTERNAL_API_SECRET=$(openssl rand -hex 32)
|
||||
|
||||
# Install
|
||||
helm install sim ./helm/sim \
|
||||
--set app.env.BETTER_AUTH_SECRET="$BETTER_AUTH_SECRET" \
|
||||
--set app.env.ENCRYPTION_KEY="$ENCRYPTION_KEY" \
|
||||
--set app.env.INTERNAL_API_SECRET="$INTERNAL_API_SECRET" \
|
||||
--namespace simstudio --create-namespace
|
||||
```
|
||||
|
||||
## Valeurs spécifiques au cloud
|
||||
|
||||
<Tabs items={['AWS EKS', 'Azure AKS', 'GCP GKE']}>
|
||||
<Tab value="AWS EKS">
|
||||
|
||||
```bash
|
||||
helm install sim ./helm/sim \
|
||||
--values ./helm/sim/examples/values-aws.yaml \
|
||||
--set app.env.BETTER_AUTH_SECRET="$BETTER_AUTH_SECRET" \
|
||||
--set app.env.ENCRYPTION_KEY="$ENCRYPTION_KEY" \
|
||||
--set app.env.INTERNAL_API_SECRET="$INTERNAL_API_SECRET" \
|
||||
--set app.env.NEXT_PUBLIC_APP_URL="https://sim.yourdomain.com" \
|
||||
--namespace simstudio --create-namespace
|
||||
```
|
||||
|
||||
</Tab>
|
||||
<Tab value="Azure AKS">
|
||||
|
||||
```bash
|
||||
helm install sim ./helm/sim \
|
||||
--values ./helm/sim/examples/values-azure.yaml \
|
||||
--set app.env.BETTER_AUTH_SECRET="$BETTER_AUTH_SECRET" \
|
||||
--set app.env.ENCRYPTION_KEY="$ENCRYPTION_KEY" \
|
||||
--set app.env.INTERNAL_API_SECRET="$INTERNAL_API_SECRET" \
|
||||
--set app.env.NEXT_PUBLIC_APP_URL="https://sim.yourdomain.com" \
|
||||
--namespace simstudio --create-namespace
|
||||
```
|
||||
|
||||
</Tab>
|
||||
<Tab value="GCP GKE">
|
||||
|
||||
```bash
|
||||
helm install sim ./helm/sim \
|
||||
--values ./helm/sim/examples/values-gcp.yaml \
|
||||
--set app.env.BETTER_AUTH_SECRET="$BETTER_AUTH_SECRET" \
|
||||
--set app.env.ENCRYPTION_KEY="$ENCRYPTION_KEY" \
|
||||
--set app.env.INTERNAL_API_SECRET="$INTERNAL_API_SECRET" \
|
||||
--set app.env.NEXT_PUBLIC_APP_URL="https://sim.yourdomain.com" \
|
||||
--namespace simstudio --create-namespace
|
||||
```
|
||||
|
||||
</Tab>
|
||||
</Tabs>
|
||||
|
||||
## Configuration clé
|
||||
|
||||
```yaml
|
||||
# Custom values.yaml
|
||||
app:
|
||||
replicaCount: 2
|
||||
env:
|
||||
NEXT_PUBLIC_APP_URL: "https://sim.yourdomain.com"
|
||||
OPENAI_API_KEY: "sk-..."
|
||||
|
||||
postgresql:
|
||||
persistence:
|
||||
size: 50Gi
|
||||
|
||||
ingress:
|
||||
enabled: true
|
||||
className: nginx
|
||||
tls:
|
||||
enabled: true
|
||||
app:
|
||||
host: sim.yourdomain.com
|
||||
```
|
||||
|
||||
Voir `helm/sim/values.yaml` pour toutes les options.
|
||||
|
||||
## Base de données externe
|
||||
|
||||
```yaml
|
||||
postgresql:
|
||||
enabled: false
|
||||
|
||||
externalDatabase:
|
||||
enabled: true
|
||||
host: "your-db-host"
|
||||
port: 5432
|
||||
username: "postgres"
|
||||
password: "your-password"
|
||||
database: "simstudio"
|
||||
sslMode: "require"
|
||||
```
|
||||
|
||||
## Commandes
|
||||
|
||||
```bash
|
||||
# Port forward for local access
|
||||
kubectl port-forward deployment/sim-sim-app 3000:3000 -n simstudio
|
||||
|
||||
# View logs
|
||||
kubectl logs -l app.kubernetes.io/component=app -n simstudio --tail=100
|
||||
|
||||
# Upgrade
|
||||
helm upgrade sim ./helm/sim --namespace simstudio
|
||||
|
||||
# Uninstall
|
||||
helm uninstall sim --namespace simstudio
|
||||
```
|
||||
@@ -1,124 +0,0 @@
|
||||
---
|
||||
title: Plateformes cloud
|
||||
description: Déployer Sim Studio sur des plateformes cloud
|
||||
---
|
||||
|
||||
import { Tab, Tabs } from 'fumadocs-ui/components/tabs'
|
||||
import { Callout } from 'fumadocs-ui/components/callout'
|
||||
|
||||
## Railway
|
||||
|
||||
Déploiement en un clic avec provisionnement automatique de PostgreSQL.
|
||||
|
||||
[
|
||||
|
||||

|
||||
|
||||
](https://railway.com/new/template/sim-studio)
|
||||
|
||||
Après le déploiement, ajoutez des variables d'environnement dans le tableau de bord Railway :
|
||||
- `BETTER_AUTH_SECRET`, `ENCRYPTION_KEY`, `INTERNAL_API_SECRET` (générées automatiquement)
|
||||
- `OPENAI_API_KEY` ou d'autres clés de fournisseur d'IA
|
||||
- Domaine personnalisé dans Paramètres → Réseau
|
||||
|
||||
## Déploiement VPS
|
||||
|
||||
Pour DigitalOcean, AWS EC2, Azure VMs, ou tout serveur Linux :
|
||||
|
||||
<Tabs items={['DigitalOcean', 'AWS EC2', 'Azure VM']}>
|
||||
<Tab value="DigitalOcean">
|
||||
**Recommandé :** Droplet de 16 Go de RAM, Ubuntu 24.04
|
||||
|
||||
```bash
|
||||
# Create Droplet via console, then SSH in
|
||||
ssh root@your-droplet-ip
|
||||
```
|
||||
|
||||
</Tab>
|
||||
<Tab value="AWS EC2">
|
||||
**Recommandé :** t3.xlarge (16 Go de RAM), Ubuntu 24.04
|
||||
|
||||
```bash
|
||||
ssh -i your-key.pem ubuntu@your-ec2-ip
|
||||
```
|
||||
|
||||
</Tab>
|
||||
<Tab value="Azure VM">
|
||||
**Recommandé :** Standard_D4s_v3 (16 Go de RAM), Ubuntu 24.04
|
||||
|
||||
```bash
|
||||
ssh azureuser@your-vm-ip
|
||||
```
|
||||
|
||||
</Tab>
|
||||
</Tabs>
|
||||
|
||||
### Installer Docker
|
||||
|
||||
```bash
|
||||
# Install Docker (official method)
|
||||
curl -fsSL https://get.docker.com | sudo sh
|
||||
sudo usermod -aG docker $USER
|
||||
|
||||
# Logout and reconnect, then verify
|
||||
docker --version
|
||||
```
|
||||
|
||||
### Déployer Sim Studio
|
||||
|
||||
```bash
|
||||
git clone https://github.com/simstudioai/sim.git && cd sim
|
||||
|
||||
# Create .env with secrets
|
||||
cat > .env << EOF
|
||||
DATABASE_URL=postgresql://postgres:postgres@db:5432/simstudio
|
||||
BETTER_AUTH_SECRET=$(openssl rand -hex 32)
|
||||
ENCRYPTION_KEY=$(openssl rand -hex 32)
|
||||
INTERNAL_API_SECRET=$(openssl rand -hex 32)
|
||||
NEXT_PUBLIC_APP_URL=https://sim.yourdomain.com
|
||||
BETTER_AUTH_URL=https://sim.yourdomain.com
|
||||
NEXT_PUBLIC_SOCKET_URL=https://sim.yourdomain.com
|
||||
EOF
|
||||
|
||||
# Start
|
||||
docker compose -f docker-compose.prod.yml up -d
|
||||
```
|
||||
|
||||
### SSL avec Caddy
|
||||
|
||||
```bash
|
||||
# Install Caddy
|
||||
sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https curl
|
||||
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
|
||||
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list
|
||||
sudo apt update && sudo apt install caddy
|
||||
|
||||
# Configure (replace domain)
|
||||
echo 'sim.yourdomain.com {
|
||||
reverse_proxy localhost:3000
|
||||
handle /socket.io/* {
|
||||
reverse_proxy localhost:3002
|
||||
}
|
||||
}' | sudo tee /etc/caddy/Caddyfile
|
||||
|
||||
sudo systemctl restart caddy
|
||||
```
|
||||
|
||||
Pointez l'enregistrement DNS A de votre domaine vers l'IP de votre serveur.
|
||||
|
||||
## Kubernetes (EKS, AKS, GKE)
|
||||
|
||||
Consultez le [guide Kubernetes](/self-hosting/kubernetes) pour le déploiement Helm sur Kubernetes géré.
|
||||
|
||||
## Base de données gérée (optionnel)
|
||||
|
||||
Pour la production, utilisez un service PostgreSQL géré :
|
||||
|
||||
- **AWS RDS** / **Azure Database** / **Cloud SQL** - Activez l'extension pgvector
|
||||
- **Supabase** / **Neon** - pgvector inclus
|
||||
|
||||
Définissez `DATABASE_URL` dans votre environnement :
|
||||
|
||||
```bash
|
||||
DATABASE_URL="postgresql://user:pass@host:5432/db?sslmode=require"
|
||||
```
|
||||
@@ -1,113 +0,0 @@
|
||||
---
|
||||
title: Dépannage
|
||||
description: Problèmes courants et solutions
|
||||
---
|
||||
|
||||
## Échec de connexion à la base de données
|
||||
|
||||
```bash
|
||||
# Check database is running
|
||||
docker compose ps db
|
||||
|
||||
# Test connection
|
||||
docker compose exec db psql -U postgres -c "SELECT 1"
|
||||
```
|
||||
|
||||
Vérifiez le format de `DATABASE_URL` : `postgresql://user:pass@host:5432/database`
|
||||
|
||||
## Les modèles Ollama ne s'affichent pas
|
||||
|
||||
Dans Docker, `localhost` = le conteneur, pas votre machine hôte.
|
||||
|
||||
```bash
|
||||
# For host-machine Ollama, use:
|
||||
OLLAMA_URL=http://host.docker.internal:11434 # macOS/Windows
|
||||
OLLAMA_URL=http://192.168.1.x:11434 # Linux (use actual IP)
|
||||
```
|
||||
|
||||
## WebSocket/Temps réel ne fonctionne pas
|
||||
|
||||
1. Vérifiez que `NEXT_PUBLIC_SOCKET_URL` correspond à votre domaine
|
||||
2. Vérifiez que le service temps réel est en cours d'exécution : `docker compose ps realtime`
|
||||
3. Assurez-vous que le proxy inverse transmet les mises à niveau WebSocket (voir [Guide Docker](/self-hosting/docker))
|
||||
|
||||
## Erreur 502 Bad Gateway
|
||||
|
||||
```bash
|
||||
# Check app is running
|
||||
docker compose ps simstudio
|
||||
docker compose logs simstudio
|
||||
|
||||
# Common causes: out of memory, database not ready
|
||||
```
|
||||
|
||||
## Erreurs de migration
|
||||
|
||||
```bash
|
||||
# View migration logs
|
||||
docker compose logs migrations
|
||||
|
||||
# Run manually
|
||||
docker compose exec simstudio bun run db:migrate
|
||||
```
|
||||
|
||||
## pgvector introuvable
|
||||
|
||||
Utilisez l'image PostgreSQL correcte :
|
||||
|
||||
```yaml
|
||||
image: pgvector/pgvector:pg17 # NOT postgres:17
|
||||
```
|
||||
|
||||
## Erreurs de certificat (CERT_HAS_EXPIRED)
|
||||
|
||||
Si vous voyez des erreurs de certificat SSL lors de l'appel d'API externes :
|
||||
|
||||
```bash
|
||||
# Update CA certificates in container
|
||||
docker compose exec simstudio apt-get update && apt-get install -y ca-certificates
|
||||
|
||||
# Or set in environment (not recommended for production)
|
||||
NODE_TLS_REJECT_UNAUTHORIZED=0
|
||||
```
|
||||
|
||||
## Page blanche après connexion
|
||||
|
||||
1. Vérifiez la console du navigateur pour les erreurs
|
||||
2. Vérifiez que `NEXT_PUBLIC_APP_URL` correspond à votre domaine réel
|
||||
3. Effacez les cookies et le stockage local du navigateur
|
||||
4. Vérifiez que tous les services sont en cours d'exécution : `docker compose ps`
|
||||
|
||||
## Problèmes spécifiques à Windows
|
||||
|
||||
**Erreurs Turbopack sur Windows :**
|
||||
|
||||
```bash
|
||||
# Use WSL2 for better compatibility
|
||||
wsl --install
|
||||
|
||||
# Or disable Turbopack in package.json
|
||||
# Change "next dev --turbopack" to "next dev"
|
||||
```
|
||||
|
||||
**Problèmes de fin de ligne :**
|
||||
|
||||
```bash
|
||||
# Configure git to use LF
|
||||
git config --global core.autocrlf input
|
||||
```
|
||||
|
||||
## Consulter les journaux
|
||||
|
||||
```bash
|
||||
# All services
|
||||
docker compose logs -f
|
||||
|
||||
# Specific service
|
||||
docker compose logs -f simstudio
|
||||
```
|
||||
|
||||
## Obtenir de l'aide
|
||||
|
||||
- [Problèmes GitHub](https://github.com/simstudioai/sim/issues)
|
||||
- [Discord](https://discord.gg/Hr4UWYEcTT)
|
||||
@@ -1,181 +0,0 @@
|
||||
---
|
||||
title: Cursor
|
||||
description: Lancez et gérez des agents cloud Cursor pour travailler sur des dépôts GitHub
|
||||
---
|
||||
|
||||
import { BlockInfoCard } from "@/components/ui/block-info-card"
|
||||
|
||||
<BlockInfoCard
|
||||
type="cursor"
|
||||
color="#1E1E1E"
|
||||
/>
|
||||
|
||||
{/* MANUAL-CONTENT-START:intro */}
|
||||
[Cursor](https://www.cursor.so/) est un IDE IA et une plateforme cloud qui vous permet de lancer et de gérer de puissants agents IA capables de travailler directement sur vos dépôts GitHub. Les agents Cursor peuvent automatiser les tâches de développement, améliorer la productivité de votre équipe et collaborer avec vous en apportant des modifications au code, en répondant aux instructions en langage naturel et en conservant l'historique des conversations sur leurs activités.
|
||||
|
||||
Avec Cursor, vous pouvez :
|
||||
|
||||
- **Lancer des agents cloud pour les bases de code** : créer instantanément de nouveaux agents IA qui travaillent sur vos dépôts dans le cloud
|
||||
- **Déléguer des tâches de codage en langage naturel** : guider les agents avec des instructions écrites, des modifications et des clarifications
|
||||
- **Suivre les progrès et les résultats** : récupérer l'état des agents, consulter les résultats détaillés et inspecter les tâches en cours ou terminées
|
||||
- **Accéder à l'historique complet des conversations** : examiner toutes les requêtes et réponses de l'IA pour plus de transparence et de traçabilité
|
||||
- **Contrôler et gérer le cycle de vie des agents** : lister les agents actifs, terminer des agents et gérer les lancements d'agents et les suivis via API
|
||||
|
||||
Dans Sim, l'intégration de Cursor permet à vos agents et flux de travail d'interagir par programmation avec les agents cloud de Cursor. Cela signifie que vous pouvez utiliser Sim pour :
|
||||
|
||||
- Lister tous les agents cloud et parcourir leur état actuel (`cursor_list_agents`)
|
||||
- Récupérer l'état et les résultats à jour de n'importe quel agent (`cursor_get_agent`)
|
||||
- Consulter l'historique complet des conversations pour tout agent de codage (`cursor_get_conversation`)
|
||||
- Ajouter des instructions de suivi ou de nouvelles requêtes à un agent en cours d'exécution
|
||||
- Gérer et terminer des agents selon les besoins
|
||||
|
||||
Cette intégration vous aide à combiner l'intelligence flexible des agents Sim avec les puissantes capacités d'automatisation du développement de Cursor, rendant possible l'extension du développement piloté par l'IA à travers vos projets.
|
||||
{/* MANUAL-CONTENT-END */}
|
||||
|
||||
## Instructions d'utilisation
|
||||
|
||||
Interagissez avec l'API Cursor Cloud Agents pour lancer des agents IA qui peuvent travailler sur vos dépôts GitHub. Prend en charge le lancement d'agents, l'ajout d'instructions complémentaires, la vérification du statut, la visualisation des conversations et la gestion du cycle de vie des agents.
|
||||
|
||||
## Outils
|
||||
|
||||
### `cursor_list_agents`
|
||||
|
||||
Liste tous les agents cloud pour l'utilisateur authentifié avec pagination optionnelle.
|
||||
|
||||
#### Entrée
|
||||
|
||||
| Paramètre | Type | Obligatoire | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `apiKey` | string | Oui | Clé API Cursor |
|
||||
| `limit` | number | Non | Nombre d'agents à retourner \(par défaut : 20, max : 100\) |
|
||||
| `cursor` | string | Non | Curseur de pagination de la réponse précédente |
|
||||
|
||||
#### Sortie
|
||||
|
||||
| Paramètre | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `content` | string | Liste lisible des agents |
|
||||
| `metadata` | object | Métadonnées de la liste d'agents |
|
||||
|
||||
### `cursor_get_agent`
|
||||
|
||||
Récupère le statut actuel et les résultats d'un agent cloud.
|
||||
|
||||
#### Entrée
|
||||
|
||||
| Paramètre | Type | Obligatoire | Description |
|
||||
| --------- | ---- | ---------- | ----------- |
|
||||
| `apiKey` | chaîne | Oui | Clé API Cursor |
|
||||
| `agentId` | chaîne | Oui | Identifiant unique pour l'agent cloud \(ex. : bc_abc123\) |
|
||||
|
||||
#### Sortie
|
||||
|
||||
| Paramètre | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `content` | string | Détails de l'agent en format lisible |
|
||||
| `metadata` | object | Métadonnées de l'agent |
|
||||
|
||||
### `cursor_get_conversation`
|
||||
|
||||
Récupère l'historique de conversation d'un agent cloud, y compris toutes les instructions de l'utilisateur et les réponses de l'assistant.
|
||||
|
||||
#### Entrée
|
||||
|
||||
| Paramètre | Type | Obligatoire | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `apiKey` | string | Oui | Clé API Cursor |
|
||||
| `agentId` | string | Oui | Identifiant unique pour l'agent cloud \(ex. : bc_abc123\) |
|
||||
|
||||
#### Sortie
|
||||
|
||||
| Paramètre | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `content` | string | Historique de conversation en format lisible |
|
||||
| `metadata` | object | Métadonnées de la conversation |
|
||||
|
||||
### `cursor_launch_agent`
|
||||
|
||||
Démarrer un nouvel agent cloud pour travailler sur un dépôt GitHub avec les instructions données.
|
||||
|
||||
#### Entrée
|
||||
|
||||
| Paramètre | Type | Obligatoire | Description |
|
||||
| --------- | ---- | ---------- | ----------- |
|
||||
| `apiKey` | chaîne | Oui | Clé API Cursor |
|
||||
| `repository` | chaîne | Oui | URL du dépôt GitHub \(ex. : https://github.com/your-org/your-repo\) |
|
||||
| `ref` | chaîne | Non | Branche, tag ou commit à partir duquel travailler \(par défaut : branche principale\) |
|
||||
| `promptText` | chaîne | Oui | Le texte d'instruction pour l'agent |
|
||||
| `promptImages` | chaîne | Non | Tableau JSON d'objets d'image avec données base64 et dimensions |
|
||||
| `model` | chaîne | Non | Modèle à utiliser \(laisser vide pour sélection automatique\) |
|
||||
| `branchName` | chaîne | Non | Nom de branche personnalisé pour l'agent |
|
||||
| `autoCreatePr` | booléen | Non | Créer automatiquement une PR lorsque l'agent termine |
|
||||
| `openAsCursorGithubApp` | booléen | Non | Ouvrir la PR en tant qu'application GitHub Cursor |
|
||||
| `skipReviewerRequest` | booléen | Non | Ignorer la demande de relecteurs sur la PR |
|
||||
|
||||
#### Sortie
|
||||
|
||||
| Paramètre | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `content` | chaîne | Message de succès avec les détails de l'agent |
|
||||
| `metadata` | objet | Métadonnées du résultat de lancement |
|
||||
|
||||
### `cursor_add_followup`
|
||||
|
||||
Ajouter une instruction complémentaire à un agent cloud existant.
|
||||
|
||||
#### Entrée
|
||||
|
||||
| Paramètre | Type | Obligatoire | Description |
|
||||
| --------- | ---- | ---------- | ----------- |
|
||||
| `apiKey` | chaîne | Oui | Clé API Cursor |
|
||||
| `agentId` | chaîne | Oui | Identifiant unique pour l'agent cloud \(ex. : bc_abc123\) |
|
||||
| `followupPromptText` | chaîne | Oui | Le texte d'instruction complémentaire pour l'agent |
|
||||
| `promptImages` | chaîne | Non | Tableau JSON d'objets d'image avec données base64 et dimensions \(max 5\) |
|
||||
|
||||
#### Sortie
|
||||
|
||||
| Paramètre | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `content` | string | Message de succès |
|
||||
| `metadata` | object | Métadonnées du résultat |
|
||||
|
||||
### `cursor_stop_agent`
|
||||
|
||||
Arrêter un agent cloud en cours d'exécution. Cela met l'agent en pause sans le supprimer.
|
||||
|
||||
#### Entrée
|
||||
|
||||
| Paramètre | Type | Obligatoire | Description |
|
||||
| --------- | ---- | ---------- | ----------- |
|
||||
| `apiKey` | chaîne | Oui | Clé API Cursor |
|
||||
| `agentId` | chaîne | Oui | Identifiant unique pour l'agent cloud \(ex., bc_abc123\) |
|
||||
|
||||
#### Sortie
|
||||
|
||||
| Paramètre | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `content` | chaîne | Message de succès |
|
||||
| `metadata` | objet | Métadonnées du résultat |
|
||||
|
||||
### `cursor_delete_agent`
|
||||
|
||||
Supprimer définitivement un agent cloud. Cette action ne peut pas être annulée.
|
||||
|
||||
#### Entrée
|
||||
|
||||
| Paramètre | Type | Obligatoire | Description |
|
||||
| --------- | ---- | ---------- | ----------- |
|
||||
| `apiKey` | string | Oui | Clé API Cursor |
|
||||
| `agentId` | string | Oui | Identifiant unique pour l'agent cloud \(ex., bc_abc123\) |
|
||||
|
||||
#### Sortie
|
||||
|
||||
| Paramètre | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `content` | string | Message de succès |
|
||||
| `metadata` | object | Métadonnées du résultat |
|
||||
|
||||
## Notes
|
||||
|
||||
- Catégorie : `tools`
|
||||
- Type : `cursor`
|
||||
@@ -1,63 +0,0 @@
|
||||
---
|
||||
title: DuckDuckGo
|
||||
description: Recherchez avec DuckDuckGo
|
||||
---
|
||||
|
||||
import { BlockInfoCard } from "@/components/ui/block-info-card"
|
||||
|
||||
<BlockInfoCard
|
||||
type="duckduckgo"
|
||||
color="#FFFFFF"
|
||||
/>
|
||||
|
||||
{/* MANUAL-CONTENT-START:intro */}
|
||||
[DuckDuckGo](https://duckduckgo.com/) est un moteur de recherche web axé sur la confidentialité qui fournit des réponses instantanées, des résumés, des sujets connexes et plus encore — sans vous suivre ni suivre vos recherches. DuckDuckGo facilite la recherche d'informations sans profilage d'utilisateur ni publicités ciblées.
|
||||
|
||||
Avec DuckDuckGo dans Sim, vous pouvez :
|
||||
|
||||
- **Rechercher sur le web** : trouvez instantanément des réponses, des faits et des aperçus pour une requête de recherche donnée
|
||||
- **Obtenir des réponses directes** : recevez des réponses spécifiques pour des calculs, des conversions ou des requêtes factuelles
|
||||
- **Accéder à des résumés** : recevez de courts résumés ou descriptions pour vos sujets de recherche
|
||||
- **Récupérer des sujets connexes** : découvrez des liens et références pertinents pour votre recherche
|
||||
- **Filtrer les résultats** : supprimez éventuellement le HTML ou ignorez la désambiguïsation pour des résultats plus propres
|
||||
|
||||
Ces fonctionnalités permettent à vos agents Sim d'automatiser l'accès à des connaissances web récentes — de la présentation de faits dans un flux de travail à l'enrichissement de documents et d'analyses avec des informations à jour. Comme l'API Instant Answers de DuckDuckGo est ouverte et ne nécessite pas de clé API, elle s'intègre facilement et en toute sécurité dans vos processus d'entreprise automatisés.
|
||||
{/* MANUAL-CONTENT-END */}
|
||||
|
||||
## Instructions d'utilisation
|
||||
|
||||
Recherchez sur le web en utilisant l'API Instant Answers de DuckDuckGo. Renvoie des réponses instantanées, des résumés, des sujets connexes et plus encore. Gratuit à utiliser sans clé API.
|
||||
|
||||
## Outils
|
||||
|
||||
### `duckduckgo_search`
|
||||
|
||||
Recherchez sur le web en utilisant l'API Instant Answers de DuckDuckGo. Renvoie des réponses instantanées, des résumés et des sujets connexes pour votre requête. Gratuit à utiliser sans clé API.
|
||||
|
||||
#### Entrée
|
||||
|
||||
| Paramètre | Type | Obligatoire | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `query` | string | Oui | La requête de recherche à exécuter |
|
||||
| `noHtml` | boolean | Non | Supprimer le HTML du texte dans les résultats \(par défaut : true\) |
|
||||
| `skipDisambig` | boolean | Non | Ignorer les résultats de désambiguïsation \(par défaut : false\) |
|
||||
|
||||
#### Sortie
|
||||
|
||||
| Paramètre | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `heading` | string | Le titre/en-tête de la réponse instantanée |
|
||||
| `abstract` | string | Un court résumé du sujet |
|
||||
| `abstractText` | string | Version en texte brut du résumé |
|
||||
| `abstractSource` | string | La source du résumé \(par exemple, Wikipédia\) |
|
||||
| `abstractURL` | string | URL vers la source du résumé |
|
||||
| `image` | string | URL vers une image liée au sujet |
|
||||
| `answer` | string | Réponse directe si disponible \(par exemple, pour les calculs\) |
|
||||
| `answerType` | string | Type de réponse \(par exemple, calc, ip, etc.\) |
|
||||
| `type` | string | Type de réponse : A \(article\), D \(désambiguïsation\), C \(catégorie\), N \(nom\), E \(exclusif\) |
|
||||
| `relatedTopics` | array | Tableau des sujets connexes avec URLs et descriptions |
|
||||
|
||||
## Notes
|
||||
|
||||
- Catégorie : `tools`
|
||||
- Type : `duckduckgo`
|
||||
@@ -1,217 +0,0 @@
|
||||
---
|
||||
title: Google Groups
|
||||
description: Gérer les groupes Google Workspace et leurs membres
|
||||
---
|
||||
|
||||
import { BlockInfoCard } from "@/components/ui/block-info-card"
|
||||
|
||||
<BlockInfoCard
|
||||
type="google_groups"
|
||||
color="#E8F0FE"
|
||||
/>
|
||||
|
||||
## Instructions d'utilisation
|
||||
|
||||
Connectez-vous à Google Workspace pour créer, mettre à jour et gérer les groupes et leurs membres à l'aide de l'API Admin SDK Directory.
|
||||
|
||||
## Outils
|
||||
|
||||
### `google_groups_list_groups`
|
||||
|
||||
Lister tous les groupes dans un domaine Google Workspace
|
||||
|
||||
#### Entrée
|
||||
|
||||
| Paramètre | Type | Obligatoire | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `customer` | string | Non | ID client ou "my_customer" pour le domaine de l'utilisateur authentifié |
|
||||
| `domain` | string | Non | Nom de domaine pour filtrer les groupes |
|
||||
| `maxResults` | number | Non | Nombre maximum de résultats à retourner (1-200) |
|
||||
| `pageToken` | string | Non | Jeton pour la pagination |
|
||||
| `query` | string | Non | Requête de recherche pour filtrer les groupes (ex. : "email:admin*") |
|
||||
|
||||
#### Sortie
|
||||
|
||||
| Paramètre | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `output` | json | Données de réponse de l'API Google Groups |
|
||||
|
||||
### `google_groups_get_group`
|
||||
|
||||
Obtenir les détails d'un groupe Google spécifique par email ou ID de groupe
|
||||
|
||||
#### Entrée
|
||||
|
||||
| Paramètre | Type | Obligatoire | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `groupKey` | string | Oui | Adresse email du groupe ou ID unique du groupe |
|
||||
|
||||
#### Sortie
|
||||
|
||||
| Paramètre | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `output` | json | Données de réponse de l'API Google Groups |
|
||||
|
||||
### `google_groups_create_group`
|
||||
|
||||
Créer un nouveau groupe Google dans le domaine
|
||||
|
||||
#### Entrée
|
||||
|
||||
| Paramètre | Type | Obligatoire | Description |
|
||||
| --------- | ---- | ---------- | ----------- |
|
||||
| `email` | chaîne | Oui | Adresse e-mail pour le nouveau groupe \(ex., team@yourdomain.com\) |
|
||||
| `name` | chaîne | Oui | Nom d'affichage pour le groupe |
|
||||
| `description` | chaîne | Non | Description du groupe |
|
||||
|
||||
#### Sortie
|
||||
|
||||
| Paramètre | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `output` | json | Données de réponse de l'API Google Groups |
|
||||
|
||||
### `google_groups_update_group`
|
||||
|
||||
Mettre à jour un groupe Google existant
|
||||
|
||||
#### Entrée
|
||||
|
||||
| Paramètre | Type | Obligatoire | Description |
|
||||
| --------- | ---- | ---------- | ----------- |
|
||||
| `groupKey` | chaîne | Oui | Adresse e-mail du groupe ou identifiant unique du groupe |
|
||||
| `name` | chaîne | Non | Nouveau nom d'affichage pour le groupe |
|
||||
| `description` | chaîne | Non | Nouvelle description pour le groupe |
|
||||
| `email` | chaîne | Non | Nouvelle adresse e-mail pour le groupe |
|
||||
|
||||
#### Sortie
|
||||
|
||||
| Paramètre | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `output` | json | Données de réponse de l'API Google Groups |
|
||||
|
||||
### `google_groups_delete_group`
|
||||
|
||||
Supprimer un groupe Google
|
||||
|
||||
#### Entrée
|
||||
|
||||
| Paramètre | Type | Obligatoire | Description |
|
||||
| --------- | ---- | ---------- | ----------- |
|
||||
| `groupKey` | chaîne | Oui | Adresse e-mail du groupe ou identifiant unique du groupe à supprimer |
|
||||
|
||||
#### Sortie
|
||||
|
||||
| Paramètre | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `output` | json | Données de réponse de l'API Google Groups |
|
||||
|
||||
### `google_groups_list_members`
|
||||
|
||||
Lister tous les membres d'un groupe Google
|
||||
|
||||
#### Entrée
|
||||
|
||||
| Paramètre | Type | Obligatoire | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `groupKey` | chaîne | Oui | Adresse e-mail du groupe ou identifiant unique du groupe |
|
||||
| `maxResults` | nombre | Non | Nombre maximum de résultats à retourner \(1-200\) |
|
||||
| `pageToken` | chaîne | Non | Jeton pour la pagination |
|
||||
| `roles` | chaîne | Non | Filtrer par rôles \(séparés par des virgules : OWNER, MANAGER, MEMBER\) |
|
||||
|
||||
#### Sortie
|
||||
|
||||
| Paramètre | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `output` | json | Données de réponse de l'API Google Groups |
|
||||
|
||||
### `google_groups_get_member`
|
||||
|
||||
Obtenir les détails d'un membre spécifique dans un groupe Google
|
||||
|
||||
#### Entrée
|
||||
|
||||
| Paramètre | Type | Obligatoire | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `groupKey` | chaîne | Oui | Adresse e-mail du groupe ou identifiant unique du groupe |
|
||||
| `memberKey` | chaîne | Oui | Adresse e-mail du membre ou identifiant unique du membre |
|
||||
|
||||
#### Sortie
|
||||
|
||||
| Paramètre | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `output` | json | Données de réponse de l'API Google Groups |
|
||||
|
||||
### `google_groups_add_member`
|
||||
|
||||
Ajouter un nouveau membre à un groupe Google
|
||||
|
||||
#### Entrée
|
||||
|
||||
| Paramètre | Type | Obligatoire | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `groupKey` | chaîne | Oui | Adresse e-mail du groupe ou identifiant unique du groupe |
|
||||
| `email` | chaîne | Oui | Adresse e-mail du membre à ajouter |
|
||||
| `role` | chaîne | Non | Rôle pour le membre \(MEMBER, MANAGER, ou OWNER\). Par défaut MEMBER. |
|
||||
|
||||
#### Sortie
|
||||
|
||||
| Paramètre | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `output` | json | Données de réponse de l'API Google Groups |
|
||||
|
||||
### `google_groups_remove_member`
|
||||
|
||||
Supprimer un membre d'un groupe Google
|
||||
|
||||
#### Entrée
|
||||
|
||||
| Paramètre | Type | Obligatoire | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `groupKey` | string | Oui | Adresse e-mail du groupe ou identifiant unique du groupe |
|
||||
| `memberKey` | string | Oui | Adresse e-mail ou identifiant unique du membre à supprimer |
|
||||
|
||||
#### Sortie
|
||||
|
||||
| Paramètre | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `output` | json | Données de réponse de l'API Google Groups |
|
||||
|
||||
### `google_groups_update_member`
|
||||
|
||||
Mettre à jour un membre
|
||||
|
||||
#### Entrée
|
||||
|
||||
| Paramètre | Type | Obligatoire | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `groupKey` | string | Oui | Adresse e-mail du groupe ou identifiant unique du groupe |
|
||||
| `memberKey` | string | Oui | Adresse e-mail du membre ou identifiant unique du membre |
|
||||
| `role` | string | Oui | Nouveau rôle pour le membre \(MEMBER, MANAGER ou OWNER\) |
|
||||
|
||||
#### Sortie
|
||||
|
||||
| Paramètre | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `output` | json | Données de réponse de l'API Google Groups |
|
||||
|
||||
### `google_groups_has_member`
|
||||
|
||||
Vérifier si un utilisateur est membre d'un groupe Google
|
||||
|
||||
#### Entrée
|
||||
|
||||
| Paramètre | Type | Obligatoire | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `groupKey` | string | Oui | Adresse e-mail du groupe ou identifiant unique du groupe |
|
||||
| `memberKey` | string | Oui | Adresse e-mail du membre ou identifiant unique du membre à vérifier |
|
||||
|
||||
#### Sortie
|
||||
|
||||
| Paramètre | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `output` | json | Données de réponse de l'API Google Groups |
|
||||
|
||||
## Notes
|
||||
|
||||
- Catégorie : `tools`
|
||||
- Type : `google_groups`
|
||||
@@ -135,684 +135,283 @@ Supprimer un compte de Salesforce CRM
|
||||
|
||||
### `salesforce_get_contacts`
|
||||
|
||||
Obtenir un ou des contact(s) depuis Salesforce - contact unique si l'ID est fourni, ou liste si non
|
||||
|
||||
#### Entrée
|
||||
|
||||
| Paramètre | Type | Obligatoire | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `idToken` | string | Non | Pas de description |
|
||||
| `instanceUrl` | string | Non | Pas de description |
|
||||
| `contactId` | string | Non | ID du contact \(si fourni, renvoie un contact unique\) |
|
||||
| `limit` | string | Non | Nombre de résultats \(par défaut : 100, max : 2000\). Uniquement pour les requêtes de liste. |
|
||||
| `fields` | string | Non | Champs séparés par des virgules \(ex. : "Id,FirstName,LastName,Email,Phone"\) |
|
||||
| `orderBy` | string | Non | Champ pour l'ordre de tri \(ex. : "LastName ASC"\). Uniquement pour les requêtes de liste. |
|
||||
|
||||
#### Sortie
|
||||
|
||||
| Paramètre | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Statut de réussite de l'opération |
|
||||
| `output` | object | Données du/des contact(s) |
|
||||
| `output` | json | Données résultant de l'opération |
|
||||
|
||||
### `salesforce_create_contact`
|
||||
|
||||
Créer un nouveau contact dans Salesforce CRM
|
||||
|
||||
#### Entrée
|
||||
|
||||
| Paramètre | Type | Obligatoire | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `idToken` | string | Non | Pas de description |
|
||||
| `instanceUrl` | string | Non | Pas de description |
|
||||
| `lastName` | string | Oui | Nom de famille \(obligatoire\) |
|
||||
| `firstName` | string | Non | Prénom |
|
||||
| `email` | string | Non | Adresse e-mail |
|
||||
| `phone` | string | Non | Numéro de téléphone |
|
||||
| `accountId` | string | Non | ID du compte à associer au contact |
|
||||
| `title` | string | Non | Pas de description |
|
||||
| `department` | string | Non | Département |
|
||||
| `mailingStreet` | string | Non | Rue d'adresse postale |
|
||||
| `mailingCity` | string | Non | Ville d'adresse postale |
|
||||
| `mailingState` | string | Non | État/province d'adresse postale |
|
||||
| `mailingPostalCode` | string | Non | Code postal d'adresse postale |
|
||||
| `mailingCountry` | string | Non | Pays d'adresse postale |
|
||||
| `description` | string | Non | Description du contact |
|
||||
|
||||
#### Sortie
|
||||
|
||||
| Paramètre | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Statut de réussite de l'opération |
|
||||
| `output` | object | Données du contact créé |
|
||||
| `output` | json | Données résultant de l'opération |
|
||||
|
||||
### `salesforce_update_contact`
|
||||
|
||||
Mettre à jour un contact existant dans Salesforce CRM
|
||||
|
||||
#### Entrée
|
||||
|
||||
| Paramètre | Type | Obligatoire | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `idToken` | string | Non | Pas de description |
|
||||
| `instanceUrl` | string | Non | Pas de description |
|
||||
| `contactId` | string | Oui | ID du contact à mettre à jour \(obligatoire\) |
|
||||
| `lastName` | string | Non | Nom de famille |
|
||||
| `firstName` | string | Non | Prénom |
|
||||
| `email` | string | Non | Adresse e-mail |
|
||||
| `phone` | string | Non | Numéro de téléphone |
|
||||
| `accountId` | string | Non | ID du compte à associer |
|
||||
| `title` | string | Non | Pas de description |
|
||||
| `department` | string | Non | Département |
|
||||
| `mailingStreet` | string | Non | Rue de l'adresse postale |
|
||||
| `mailingCity` | string | Non | Ville de l'adresse postale |
|
||||
| `mailingState` | string | Non | État/province de l'adresse postale |
|
||||
| `mailingPostalCode` | string | Non | Code postal de l'adresse postale |
|
||||
| `mailingCountry` | string | Non | Pays de l'adresse postale |
|
||||
| `description` | string | Non | Description |
|
||||
|
||||
#### Sortie
|
||||
|
||||
| Paramètre | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Statut de réussite de l'opération |
|
||||
| `output` | object | Données du contact mis à jour |
|
||||
| `output` | json | Données résultant de l'opération |
|
||||
|
||||
### `salesforce_delete_contact`
|
||||
|
||||
Supprimer un contact de Salesforce CRM
|
||||
|
||||
#### Entrée
|
||||
|
||||
| Paramètre | Type | Obligatoire | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `idToken` | string | Non | Pas de description |
|
||||
| `instanceUrl` | string | Non | Pas de description |
|
||||
| `contactId` | string | Oui | ID du contact à supprimer \(obligatoire\) |
|
||||
|
||||
#### Sortie
|
||||
|
||||
| Paramètre | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Statut de réussite de l'opération |
|
||||
| `output` | object | Données du contact supprimé |
|
||||
| `output` | json | Données résultant de l'opération |
|
||||
|
||||
### `salesforce_get_leads`
|
||||
|
||||
Obtenir un ou plusieurs prospects de Salesforce
|
||||
|
||||
#### Entrée
|
||||
|
||||
| Paramètre | Type | Obligatoire | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `idToken` | string | Non | Pas de description |
|
||||
| `instanceUrl` | string | Non | Pas de description |
|
||||
| `leadId` | string | Non | ID du prospect \(facultatif\) |
|
||||
| `limit` | string | Non | Nombre maximum de résultats \(par défaut : 100\) |
|
||||
| `fields` | string | Non | Champs séparés par des virgules |
|
||||
| `orderBy` | string | Non | Champ pour l'ordre de tri |
|
||||
|
||||
#### Sortie
|
||||
|
||||
| Paramètre | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Statut de réussite |
|
||||
| `output` | object | Données du prospect |
|
||||
| `success` | boolean | Statut de réussite de l'opération |
|
||||
| `output` | json | Données résultant de l'opération |
|
||||
|
||||
### `salesforce_create_lead`
|
||||
|
||||
Créer un nouveau prospect
|
||||
|
||||
#### Entrée
|
||||
|
||||
| Paramètre | Type | Obligatoire | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `idToken` | string | Non | Pas de description |
|
||||
| `instanceUrl` | string | Non | Pas de description |
|
||||
| `lastName` | string | Oui | Nom de famille \(obligatoire\) |
|
||||
| `company` | string | Oui | Société \(obligatoire\) |
|
||||
| `firstName` | string | Non | Prénom |
|
||||
| `email` | string | Non | Pas de description |
|
||||
| `phone` | string | Non | Pas de description |
|
||||
| `status` | string | Non | Statut du prospect |
|
||||
| `leadSource` | string | Non | Source du prospect |
|
||||
| `title` | string | Non | Pas de description |
|
||||
| `description` | string | Non | Description |
|
||||
|
||||
#### Sortie
|
||||
|
||||
| Paramètre | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Succès |
|
||||
| `output` | object | Prospect créé |
|
||||
| `success` | boolean | Statut de réussite de l'opération |
|
||||
| `output` | json | Données résultant de l'opération |
|
||||
|
||||
### `salesforce_update_lead`
|
||||
|
||||
Mettre à jour un prospect existant
|
||||
|
||||
#### Entrée
|
||||
|
||||
| Paramètre | Type | Obligatoire | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `idToken` | string | Non | Pas de description |
|
||||
| `instanceUrl` | string | Non | Pas de description |
|
||||
| `leadId` | string | Oui | ID du prospect \(obligatoire\) |
|
||||
| `lastName` | string | Non | Nom de famille |
|
||||
| `company` | string | Non | Pas de description |
|
||||
| `firstName` | string | Non | Prénom |
|
||||
| `email` | string | Non | Pas de description |
|
||||
| `phone` | string | Non | Pas de description |
|
||||
| `status` | string | Non | Statut du prospect |
|
||||
| `leadSource` | string | Non | Source du prospect |
|
||||
| `title` | string | Non | Pas de description |
|
||||
| `description` | string | Non | Description |
|
||||
|
||||
#### Sortie
|
||||
|
||||
| Paramètre | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Succès |
|
||||
| `output` | object | Prospect mis à jour |
|
||||
| `success` | boolean | Statut de réussite de l'opération |
|
||||
| `output` | json | Données résultant de l'opération |
|
||||
|
||||
### `salesforce_delete_lead`
|
||||
|
||||
Supprimer un prospect
|
||||
|
||||
#### Entrée
|
||||
|
||||
| Paramètre | Type | Obligatoire | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `idToken` | string | Non | Pas de description |
|
||||
| `instanceUrl` | string | Non | Pas de description |
|
||||
| `leadId` | string | Oui | ID du prospect \(obligatoire\) |
|
||||
|
||||
#### Sortie
|
||||
|
||||
| Paramètre | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Statut de réussite de l'opération |
|
||||
| `output` | object | Prospect supprimé |
|
||||
| `output` | json | Données résultant de l'opération |
|
||||
|
||||
### `salesforce_get_opportunities`
|
||||
|
||||
Obtenir une ou plusieurs opportunités depuis Salesforce
|
||||
|
||||
#### Entrée
|
||||
|
||||
| Paramètre | Type | Obligatoire | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `idToken` | string | Non | Pas de description |
|
||||
| `instanceUrl` | string | Non | Pas de description |
|
||||
| `opportunityId` | string | Non | ID de l'opportunité \(facultatif\) |
|
||||
| `limit` | string | Non | Nombre maximum de résultats \(par défaut : 100\) |
|
||||
| `fields` | string | Non | Champs séparés par des virgules |
|
||||
| `orderBy` | string | Non | Champ pour l'ordre de tri |
|
||||
|
||||
#### Sortie
|
||||
|
||||
| Paramètre | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Statut de réussite de l'opération |
|
||||
| `output` | object | Données de l'opportunité |
|
||||
| `output` | json | Données résultant de l'opération |
|
||||
|
||||
### `salesforce_create_opportunity`
|
||||
|
||||
Créer une nouvelle opportunité
|
||||
|
||||
#### Entrée
|
||||
|
||||
| Paramètre | Type | Obligatoire | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `idToken` | string | Non | Pas de description |
|
||||
| `instanceUrl` | string | Non | Pas de description |
|
||||
| `name` | string | Oui | Nom de l'opportunité \(obligatoire\) |
|
||||
| `stageName` | string | Oui | Nom de l'étape \(obligatoire\) |
|
||||
| `closeDate` | string | Oui | Date de clôture AAAA-MM-JJ \(obligatoire\) |
|
||||
| `accountId` | string | Non | ID du compte |
|
||||
| `amount` | string | Non | Montant \(nombre\) |
|
||||
| `probability` | string | Non | Probabilité \(0-100\) |
|
||||
| `description` | string | Non | Description |
|
||||
|
||||
#### Sortie
|
||||
|
||||
| Paramètre | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Succès |
|
||||
| `output` | object | Opportunité créée |
|
||||
| `success` | boolean | Statut de réussite de l'opération |
|
||||
| `output` | json | Données résultant de l'opération |
|
||||
|
||||
### `salesforce_update_opportunity`
|
||||
|
||||
Mettre à jour une opportunité existante
|
||||
|
||||
#### Entrée
|
||||
|
||||
| Paramètre | Type | Obligatoire | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `idToken` | string | Non | Pas de description |
|
||||
| `instanceUrl` | string | Non | Pas de description |
|
||||
| `opportunityId` | string | Oui | ID de l'opportunité \(obligatoire\) |
|
||||
| `name` | string | Non | Nom de l'opportunité |
|
||||
| `stageName` | string | Non | Nom de l'étape |
|
||||
| `closeDate` | string | Non | Date de clôture AAAA-MM-JJ |
|
||||
| `accountId` | string | Non | ID du compte |
|
||||
| `amount` | string | Non | Pas de description |
|
||||
| `probability` | string | Non | Probabilité \(0-100\) |
|
||||
| `description` | string | Non | Description |
|
||||
|
||||
#### Sortie
|
||||
|
||||
| Paramètre | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Succès |
|
||||
| `output` | object | Opportunité mise à jour |
|
||||
| `success` | boolean | Statut de réussite de l'opération |
|
||||
| `output` | json | Données résultant de l'opération |
|
||||
|
||||
### `salesforce_delete_opportunity`
|
||||
|
||||
Supprimer une opportunité
|
||||
|
||||
#### Entrée
|
||||
|
||||
| Paramètre | Type | Obligatoire | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `idToken` | string | Non | Pas de description |
|
||||
| `instanceUrl` | string | Non | Pas de description |
|
||||
| `opportunityId` | string | Oui | ID de l'opportunité \(obligatoire\) |
|
||||
|
||||
#### Sortie
|
||||
|
||||
| Paramètre | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Succès |
|
||||
| `output` | object | Opportunité supprimée |
|
||||
| `success` | boolean | Statut de réussite de l'opération |
|
||||
| `output` | json | Données résultant de l'opération |
|
||||
|
||||
### `salesforce_get_cases`
|
||||
|
||||
Obtenir un ou des dossiers depuis Salesforce
|
||||
|
||||
#### Entrée
|
||||
|
||||
| Paramètre | Type | Obligatoire | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `idToken` | string | Non | Pas de description |
|
||||
| `instanceUrl` | string | Non | Pas de description |
|
||||
| `caseId` | string | Non | ID du dossier \(facultatif\) |
|
||||
| `limit` | string | Non | Nombre maximum de résultats \(par défaut : 100\) |
|
||||
| `fields` | string | Non | Champs séparés par des virgules |
|
||||
| `orderBy` | string | Non | Champ pour le tri |
|
||||
|
||||
#### Sortie
|
||||
|
||||
| Paramètre | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Succès |
|
||||
| `output` | object | Données du dossier |
|
||||
| `success` | boolean | Statut de réussite de l'opération |
|
||||
| `output` | json | Données résultant de l'opération |
|
||||
|
||||
### `salesforce_create_case`
|
||||
|
||||
Créer un nouveau dossier
|
||||
|
||||
#### Entrée
|
||||
|
||||
| Paramètre | Type | Obligatoire | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `idToken` | string | Non | Pas de description |
|
||||
| `instanceUrl` | string | Non | Pas de description |
|
||||
| `subject` | string | Oui | Objet du dossier \(obligatoire\) |
|
||||
| `status` | string | Non | Statut \(ex., Nouveau, En cours, Escaladé\) |
|
||||
| `priority` | string | Non | Priorité \(ex., Basse, Moyenne, Haute\) |
|
||||
| `origin` | string | Non | Origine \(ex., Téléphone, Email, Web\) |
|
||||
| `contactId` | string | Non | ID du contact |
|
||||
| `accountId` | string | Non | ID du compte |
|
||||
| `description` | string | Non | Description |
|
||||
|
||||
#### Sortie
|
||||
|
||||
| Paramètre | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Succès |
|
||||
| `output` | object | Dossier créé |
|
||||
| `success` | boolean | Statut de réussite de l'opération |
|
||||
| `output` | json | Données résultant de l'opération |
|
||||
|
||||
### `salesforce_update_case`
|
||||
|
||||
Mettre à jour un dossier existant
|
||||
|
||||
#### Entrée
|
||||
|
||||
| Paramètre | Type | Obligatoire | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `idToken` | string | Non | Pas de description |
|
||||
| `instanceUrl` | string | Non | Pas de description |
|
||||
| `caseId` | string | Oui | ID du dossier \(obligatoire\) |
|
||||
| `subject` | string | Non | Objet du dossier |
|
||||
| `status` | string | Non | Statut |
|
||||
| `priority` | string | Non | Priorité |
|
||||
| `description` | string | Non | Description |
|
||||
|
||||
#### Sortie
|
||||
|
||||
| Paramètre | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Succès |
|
||||
| `output` | object | Dossier mis à jour |
|
||||
| `success` | boolean | Statut de réussite de l'opération |
|
||||
| `output` | json | Données résultant de l'opération |
|
||||
|
||||
### `salesforce_delete_case`
|
||||
|
||||
Supprimer un dossier
|
||||
|
||||
#### Entrée
|
||||
|
||||
| Paramètre | Type | Obligatoire | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `idToken` | string | Non | Pas de description |
|
||||
| `instanceUrl` | string | Non | Pas de description |
|
||||
| `caseId` | string | Oui | ID du dossier \(obligatoire\) |
|
||||
|
||||
#### Sortie
|
||||
|
||||
| Paramètre | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Succès |
|
||||
| `output` | object | Dossier supprimé |
|
||||
| `success` | boolean | Statut de réussite de l'opération |
|
||||
| `output` | json | Données résultant de l'opération |
|
||||
|
||||
### `salesforce_get_tasks`
|
||||
|
||||
Obtenir une ou plusieurs tâches de Salesforce
|
||||
|
||||
#### Entrée
|
||||
|
||||
| Paramètre | Type | Obligatoire | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `idToken` | string | Non | Pas de description |
|
||||
| `instanceUrl` | string | Non | Pas de description |
|
||||
| `taskId` | string | Non | ID de la tâche \(facultatif\) |
|
||||
| `limit` | string | Non | Nombre maximum de résultats \(par défaut : 100\) |
|
||||
| `fields` | string | Non | Champs séparés par des virgules |
|
||||
| `orderBy` | string | Non | Champ pour l'ordre de tri |
|
||||
|
||||
#### Sortie
|
||||
|
||||
| Paramètre | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Statut de réussite de l'opération |
|
||||
| `output` | object | Données de la tâche |
|
||||
| `output` | json | Données résultant de l'opération |
|
||||
|
||||
### `salesforce_create_task`
|
||||
|
||||
Créer une nouvelle tâche
|
||||
|
||||
#### Entrée
|
||||
|
||||
| Paramètre | Type | Obligatoire | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `idToken` | string | Non | Pas de description |
|
||||
| `instanceUrl` | string | Non | Pas de description |
|
||||
| `subject` | string | Oui | Objet de la tâche \(obligatoire\) |
|
||||
| `status` | string | Non | Statut \(ex., Non commencée, En cours, Terminée\) |
|
||||
| `priority` | string | Non | Priorité \(ex., Basse, Normale, Haute\) |
|
||||
| `activityDate` | string | Non | Date d'échéance AAAA-MM-JJ |
|
||||
| `whoId` | string | Non | ID du contact/prospect associé |
|
||||
| `whatId` | string | Non | ID du compte/opportunité associé |
|
||||
| `description` | string | Non | Description |
|
||||
|
||||
#### Sortie
|
||||
|
||||
| Paramètre | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Statut de réussite de l'opération |
|
||||
| `output` | object | Tâche créée |
|
||||
| `output` | json | Données résultant de l'opération |
|
||||
|
||||
### `salesforce_update_task`
|
||||
|
||||
Mettre à jour une tâche existante
|
||||
|
||||
#### Entrée
|
||||
|
||||
| Paramètre | Type | Obligatoire | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `idToken` | string | Non | Pas de description |
|
||||
| `instanceUrl` | string | Non | Pas de description |
|
||||
| `taskId` | string | Oui | ID de la tâche \(obligatoire\) |
|
||||
| `subject` | string | Non | Objet de la tâche |
|
||||
| `status` | string | Non | Statut |
|
||||
| `priority` | string | Non | Priorité |
|
||||
| `activityDate` | string | Non | Date d'échéance AAAA-MM-JJ |
|
||||
| `description` | string | Non | Description |
|
||||
|
||||
#### Sortie
|
||||
|
||||
| Paramètre | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Statut de réussite |
|
||||
| `output` | object | Tâche mise à jour |
|
||||
| `success` | boolean | Statut de réussite de l'opération |
|
||||
| `output` | json | Données résultant de l'opération |
|
||||
|
||||
### `salesforce_delete_task`
|
||||
|
||||
Supprimer une tâche
|
||||
|
||||
#### Entrée
|
||||
|
||||
| Paramètre | Type | Obligatoire | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `idToken` | string | Non | Pas de description |
|
||||
| `instanceUrl` | string | Non | Pas de description |
|
||||
| `taskId` | string | Oui | ID de la tâche \(obligatoire\) |
|
||||
|
||||
#### Sortie
|
||||
|
||||
| Paramètre | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Statut de réussite |
|
||||
| `output` | object | Tâche supprimée |
|
||||
|
||||
### `salesforce_list_reports`
|
||||
|
||||
Obtenir une liste des rapports accessibles par l'utilisateur actuel
|
||||
|
||||
#### Entrée
|
||||
|
||||
| Paramètre | Type | Obligatoire | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `idToken` | string | Non | Pas de description |
|
||||
| `instanceUrl` | string | Non | Pas de description |
|
||||
| `folderName` | string | Non | Filtrer par nom de dossier |
|
||||
| `searchTerm` | string | Non | Terme de recherche pour filtrer les rapports par nom |
|
||||
|
||||
#### Sortie
|
||||
|
||||
| Paramètre | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Statut de réussite |
|
||||
| `output` | object | Données des rapports |
|
||||
|
||||
### `salesforce_get_report`
|
||||
|
||||
Obtenir les métadonnées et les informations descriptives d'un rapport spécifique
|
||||
|
||||
#### Entrée
|
||||
|
||||
| Paramètre | Type | Obligatoire | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `idToken` | string | Non | Pas de description |
|
||||
| `instanceUrl` | string | Non | Pas de description |
|
||||
| `reportId` | string | Oui | ID du rapport \(obligatoire\) |
|
||||
|
||||
#### Sortie
|
||||
|
||||
| Paramètre | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Statut de réussite |
|
||||
| `output` | object | Métadonnées du rapport |
|
||||
|
||||
### `salesforce_run_report`
|
||||
|
||||
Exécuter un rapport et récupérer les résultats
|
||||
|
||||
#### Entrée
|
||||
|
||||
| Paramètre | Type | Obligatoire | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `idToken` | string | Non | Pas de description |
|
||||
| `instanceUrl` | string | Non | Pas de description |
|
||||
| `reportId` | string | Oui | ID du rapport \(obligatoire\) |
|
||||
| `includeDetails` | string | Non | Inclure les lignes détaillées \(true/false, par défaut : true\) |
|
||||
| `filters` | string | Non | Chaîne JSON des filtres de rapport à appliquer |
|
||||
|
||||
#### Sortie
|
||||
|
||||
| Paramètre | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Statut de réussite |
|
||||
| `output` | object | Résultats du rapport |
|
||||
|
||||
### `salesforce_list_report_types`
|
||||
|
||||
Obtenir une liste des types de rapports disponibles
|
||||
|
||||
#### Entrée
|
||||
|
||||
| Paramètre | Type | Obligatoire | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `idToken` | string | Non | Pas de description |
|
||||
| `instanceUrl` | string | Non | Pas de description |
|
||||
|
||||
#### Sortie
|
||||
|
||||
| Paramètre | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Statut de réussite |
|
||||
| `output` | object | Données des types de rapports |
|
||||
|
||||
### `salesforce_list_dashboards`
|
||||
|
||||
Obtenir une liste des tableaux de bord accessibles par l'utilisateur actuel
|
||||
|
||||
#### Entrée
|
||||
|
||||
| Paramètre | Type | Obligatoire | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `idToken` | string | Non | Pas de description |
|
||||
| `instanceUrl` | string | Non | Pas de description |
|
||||
| `folderName` | string | Non | Filtrer par nom de dossier |
|
||||
|
||||
#### Sortie
|
||||
|
||||
| Paramètre | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Statut de réussite |
|
||||
| `output` | object | Données des tableaux de bord |
|
||||
|
||||
### `salesforce_get_dashboard`
|
||||
|
||||
Obtenir les détails et les résultats d'un tableau de bord spécifique
|
||||
|
||||
#### Entrée
|
||||
|
||||
| Paramètre | Type | Obligatoire | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `idToken` | string | Non | Pas de description |
|
||||
| `instanceUrl` | string | Non | Pas de description |
|
||||
| `dashboardId` | string | Oui | ID du tableau de bord (obligatoire) |
|
||||
|
||||
#### Sortie
|
||||
|
||||
| Paramètre | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Statut de réussite |
|
||||
| `output` | object | Données du tableau de bord |
|
||||
|
||||
### `salesforce_refresh_dashboard`
|
||||
|
||||
Actualiser un tableau de bord pour obtenir les données les plus récentes
|
||||
|
||||
#### Entrée
|
||||
|
||||
| Paramètre | Type | Obligatoire | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `idToken` | string | Non | Pas de description |
|
||||
| `instanceUrl` | string | Non | Pas de description |
|
||||
| `dashboardId` | string | Oui | ID du tableau de bord (obligatoire) |
|
||||
|
||||
#### Sortie
|
||||
|
||||
| Paramètre | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Statut de réussite |
|
||||
| `output` | object | Données du tableau de bord actualisé |
|
||||
|
||||
### `salesforce_query`
|
||||
|
||||
Exécuter une requête SOQL personnalisée pour récupérer des données de Salesforce
|
||||
|
||||
#### Entrée
|
||||
|
||||
| Paramètre | Type | Obligatoire | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `idToken` | string | Non | Pas de description |
|
||||
| `instanceUrl` | string | Non | Pas de description |
|
||||
| `query` | string | Oui | Requête SOQL à exécuter (ex. : SELECT Id, Name FROM Account LIMIT 10) |
|
||||
|
||||
#### Sortie
|
||||
|
||||
| Paramètre | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Statut de réussite |
|
||||
| `output` | object | Résultats de la requête |
|
||||
|
||||
### `salesforce_query_more`
|
||||
|
||||
Récupérer des résultats de requête supplémentaires en utilisant le nextRecordsUrl d'une requête précédente
|
||||
|
||||
#### Entrée
|
||||
|
||||
| Paramètre | Type | Obligatoire | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `idToken` | string | Non | Pas de description |
|
||||
| `instanceUrl` | string | Non | Pas de description |
|
||||
| `nextRecordsUrl` | string | Oui | Le nextRecordsUrl d'une réponse de requête précédente |
|
||||
|
||||
#### Sortie
|
||||
|
||||
| Paramètre | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Statut de réussite |
|
||||
| `output` | object | Résultats de la requête |
|
||||
|
||||
### `salesforce_describe_object`
|
||||
|
||||
Obtenir les métadonnées et les informations sur les champs d'un objet Salesforce
|
||||
|
||||
#### Entrée
|
||||
|
||||
| Paramètre | Type | Obligatoire | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `idToken` | string | Non | Pas de description |
|
||||
| `instanceUrl` | string | Non | Pas de description |
|
||||
| `objectName` | string | Oui | Nom API de l'objet \(ex., Account, Contact, Lead, Custom_Object__c\) |
|
||||
|
||||
#### Sortie
|
||||
|
||||
| Paramètre | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Statut de réussite |
|
||||
| `output` | object | Métadonnées de l'objet |
|
||||
|
||||
### `salesforce_list_objects`
|
||||
|
||||
Obtenir une liste de tous les objets Salesforce disponibles
|
||||
|
||||
#### Entrée
|
||||
|
||||
| Paramètre | Type | Obligatoire | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `idToken` | string | Non | Pas de description |
|
||||
| `instanceUrl` | string | Non | Pas de description |
|
||||
|
||||
#### Sortie
|
||||
|
||||
| Paramètre | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Statut de réussite |
|
||||
| `output` | object | Liste des objets |
|
||||
| `success` | boolean | Statut de réussite de l'opération |
|
||||
| `output` | json | Données résultant de l'opération |
|
||||
|
||||
## Notes
|
||||
|
||||
|
||||
@@ -1,183 +0,0 @@
|
||||
---
|
||||
title: SFTP
|
||||
description: Transférer des fichiers via SFTP (Protocole de transfert de fichiers SSH)
|
||||
---
|
||||
|
||||
import { BlockInfoCard } from "@/components/ui/block-info-card"
|
||||
|
||||
<BlockInfoCard
|
||||
type="sftp"
|
||||
color="#2D3748"
|
||||
/>
|
||||
|
||||
{/* MANUAL-CONTENT-START:intro */}
|
||||
[SFTP (Protocole de transfert de fichiers SSH)](https://en.wikipedia.org/wiki/SSH_File_Transfer_Protocol) est un protocole réseau sécurisé qui vous permet de téléverser, télécharger et gérer des fichiers sur des serveurs distants. SFTP fonctionne via SSH, ce qui en fait une solution idéale pour les transferts de fichiers automatisés et chiffrés, ainsi que pour la gestion de fichiers à distance dans les flux de travail modernes.
|
||||
|
||||
Grâce aux outils SFTP intégrés à Sim, vous pouvez facilement automatiser le déplacement de fichiers entre vos agents IA et des systèmes ou serveurs externes. Cela permet à vos agents de gérer les échanges de données critiques, les sauvegardes, la génération de documents et l'orchestration de systèmes distants, le tout avec une sécurité robuste.
|
||||
|
||||
**Fonctionnalités clés disponibles via les outils SFTP :**
|
||||
|
||||
- **Téléversement de fichiers :** Transférez facilement des fichiers de tout type depuis votre flux de travail vers un serveur distant, avec prise en charge de l'authentification par mot de passe et par clé privée SSH.
|
||||
- **Téléchargement de fichiers :** Récupérez des fichiers depuis des serveurs SFTP distants directement pour traitement, archivage ou automatisation supplémentaire.
|
||||
- **Liste et gestion des fichiers :** Énumérez les répertoires, supprimez ou créez des fichiers et dossiers, et gérez les permissions du système de fichiers à distance.
|
||||
- **Authentification flexible :** Connectez-vous en utilisant soit des mots de passe traditionnels, soit des clés SSH, avec prise en charge des phrases secrètes et du contrôle des permissions.
|
||||
- **Prise en charge des fichiers volumineux :** Gérez de manière programmatique les téléversements et téléchargements de fichiers volumineux, avec des limites de taille intégrées pour la sécurité.
|
||||
|
||||
En intégrant SFTP à Sim, vous pouvez automatiser les opérations de fichiers sécurisées dans le cadre de n'importe quel flux de travail, qu'il s'agisse de collecte de données, de rapports, de maintenance de systèmes distants ou d'échange dynamique de contenu entre plateformes.
|
||||
|
||||
Les sections ci-dessous décrivent les principaux outils SFTP disponibles :
|
||||
|
||||
- **sftp_upload :** Téléverser un ou plusieurs fichiers vers un serveur distant.
|
||||
- **sftp_download :** Télécharger des fichiers depuis un serveur distant vers votre flux de travail.
|
||||
- **sftp_list :** Lister le contenu des répertoires sur un serveur SFTP distant.
|
||||
- **sftp_delete :** Supprimer des fichiers ou des répertoires d'un serveur distant.
|
||||
- **sftp_create :** Créer de nouveaux fichiers sur un serveur SFTP distant.
|
||||
- **sftp_mkdir :** Créer de nouveaux répertoires à distance.
|
||||
|
||||
Consultez la documentation de l'outil ci-dessous pour les paramètres d'entrée et de sortie détaillés pour chaque opération.
|
||||
{/* MANUAL-CONTENT-END */}
|
||||
|
||||
## Instructions d'utilisation
|
||||
|
||||
Téléchargez, téléchargez, listez et gérez des fichiers sur des serveurs distants via SFTP. Prend en charge l'authentification par mot de passe et par clé privée pour des transferts de fichiers sécurisés.
|
||||
|
||||
## Outils
|
||||
|
||||
### `sftp_upload`
|
||||
|
||||
Téléverser des fichiers vers un serveur SFTP distant
|
||||
|
||||
#### Entrée
|
||||
|
||||
| Paramètre | Type | Obligatoire | Description |
|
||||
| --------- | ---- | ----------- | ----------- |
|
||||
| `host` | string | Oui | Nom d'hôte ou adresse IP du serveur SFTP |
|
||||
| `port` | number | Oui | Port du serveur SFTP \(par défaut : 22\) |
|
||||
| `username` | string | Oui | Nom d'utilisateur SFTP |
|
||||
| `password` | string | Non | Mot de passe pour l'authentification \(si vous n'utilisez pas de clé privée\) |
|
||||
| `privateKey` | string | Non | Clé privée pour l'authentification \(format OpenSSH\) |
|
||||
| `passphrase` | string | Non | Phrase secrète pour la clé privée chiffrée |
|
||||
| `remotePath` | string | Oui | Répertoire de destination sur le serveur distant |
|
||||
| `files` | file[] | Non | Fichiers à téléverser |
|
||||
| `fileContent` | string | Non | Contenu direct du fichier à téléverser \(pour les fichiers texte\) |
|
||||
| `fileName` | string | Non | Nom du fichier lors de l'utilisation du contenu direct |
|
||||
| `overwrite` | boolean | Non | Écraser les fichiers existants \(par défaut : true\) |
|
||||
| `permissions` | string | Non | Permissions du fichier \(ex. 0644\) |
|
||||
|
||||
#### Sortie
|
||||
|
||||
| Paramètre | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Si le téléversement a réussi |
|
||||
| `uploadedFiles` | json | Tableau des détails des fichiers téléversés \(nom, chemin distant, taille\) |
|
||||
| `message` | string | Message d'état de l'opération |
|
||||
|
||||
### `sftp_download`
|
||||
|
||||
Télécharger un fichier depuis un serveur SFTP distant
|
||||
|
||||
#### Entrée
|
||||
|
||||
| Paramètre | Type | Obligatoire | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `host` | chaîne | Oui | Nom d'hôte ou adresse IP du serveur SFTP |
|
||||
| `port` | nombre | Oui | Port du serveur SFTP \(par défaut : 22\) |
|
||||
| `username` | chaîne | Oui | Nom d'utilisateur SFTP |
|
||||
| `password` | chaîne | Non | Mot de passe pour l'authentification \(si vous n'utilisez pas de clé privée\) |
|
||||
| `privateKey` | chaîne | Non | Clé privée pour l'authentification \(format OpenSSH\) |
|
||||
| `passphrase` | chaîne | Non | Phrase secrète pour la clé privée chiffrée |
|
||||
| `remotePath` | chaîne | Oui | Chemin vers le fichier sur le serveur distant |
|
||||
| `encoding` | chaîne | Non | Encodage de sortie : utf-8 pour le texte, base64 pour le binaire \(par défaut : utf-8\) |
|
||||
|
||||
#### Sortie
|
||||
|
||||
| Paramètre | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | booléen | Indique si le téléchargement a réussi |
|
||||
| `fileName` | chaîne | Nom du fichier téléchargé |
|
||||
| `content` | chaîne | Contenu du fichier \(texte ou encodé en base64\) |
|
||||
| `size` | nombre | Taille du fichier en octets |
|
||||
| `encoding` | chaîne | Encodage du contenu \(utf-8 ou base64\) |
|
||||
| `message` | chaîne | Message d'état de l'opération |
|
||||
|
||||
### `sftp_list`
|
||||
|
||||
Lister les fichiers et répertoires sur un serveur SFTP distant
|
||||
|
||||
#### Entrée
|
||||
|
||||
| Paramètre | Type | Obligatoire | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `host` | chaîne | Oui | Nom d'hôte ou adresse IP du serveur SFTP |
|
||||
| `port` | nombre | Oui | Port du serveur SFTP \(par défaut : 22\) |
|
||||
| `username` | chaîne | Oui | Nom d'utilisateur SFTP |
|
||||
| `password` | chaîne | Non | Mot de passe pour l'authentification \(si vous n'utilisez pas de clé privée\) |
|
||||
| `privateKey` | chaîne | Non | Clé privée pour l'authentification \(format OpenSSH\) |
|
||||
| `passphrase` | chaîne | Non | Phrase secrète pour la clé privée chiffrée |
|
||||
| `remotePath` | chaîne | Oui | Chemin du répertoire sur le serveur distant |
|
||||
| `detailed` | booléen | Non | Inclure des informations détaillées sur les fichiers \(taille, permissions, date de modification\) |
|
||||
|
||||
#### Sortie
|
||||
|
||||
| Paramètre | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Indique si l'opération a réussi |
|
||||
| `path` | string | Chemin du répertoire qui a été listé |
|
||||
| `entries` | json | Tableau des entrées du répertoire avec nom, type, taille, permissions, modifiedAt |
|
||||
| `count` | number | Nombre d'entrées dans le répertoire |
|
||||
| `message` | string | Message d'état de l'opération |
|
||||
|
||||
### `sftp_delete`
|
||||
|
||||
Supprimer un fichier ou un répertoire sur un serveur SFTP distant
|
||||
|
||||
#### Entrée
|
||||
|
||||
| Paramètre | Type | Obligatoire | Description |
|
||||
| --------- | ---- | ---------- | ----------- |
|
||||
| `host` | string | Oui | Nom d'hôte ou adresse IP du serveur SFTP |
|
||||
| `port` | number | Oui | Port du serveur SFTP \(par défaut : 22\) |
|
||||
| `username` | string | Oui | Nom d'utilisateur SFTP |
|
||||
| `password` | string | Non | Mot de passe pour l'authentification \(si vous n'utilisez pas de clé privée\) |
|
||||
| `privateKey` | string | Non | Clé privée pour l'authentification \(format OpenSSH\) |
|
||||
| `passphrase` | string | Non | Phrase secrète pour la clé privée chiffrée |
|
||||
| `remotePath` | string | Oui | Chemin vers le fichier ou le répertoire à supprimer |
|
||||
| `recursive` | boolean | Non | Supprimer les répertoires de façon récursive |
|
||||
|
||||
#### Sortie
|
||||
|
||||
| Paramètre | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Indique si la suppression a réussi |
|
||||
| `deletedPath` | string | Chemin qui a été supprimé |
|
||||
| `message` | string | Message d'état de l'opération |
|
||||
|
||||
### `sftp_mkdir`
|
||||
|
||||
Créer un répertoire sur un serveur SFTP distant
|
||||
|
||||
#### Entrée
|
||||
|
||||
| Paramètre | Type | Obligatoire | Description |
|
||||
| --------- | ---- | ----------- | ----------- |
|
||||
| `host` | chaîne | Oui | Nom d'hôte ou adresse IP du serveur SFTP |
|
||||
| `port` | nombre | Oui | Port du serveur SFTP \(par défaut : 22\) |
|
||||
| `username` | chaîne | Oui | Nom d'utilisateur SFTP |
|
||||
| `password` | chaîne | Non | Mot de passe pour l'authentification \(si vous n'utilisez pas de clé privée\) |
|
||||
| `privateKey` | chaîne | Non | Clé privée pour l'authentification \(format OpenSSH\) |
|
||||
| `passphrase` | chaîne | Non | Phrase secrète pour la clé privée chiffrée |
|
||||
| `remotePath` | chaîne | Oui | Chemin pour le nouveau répertoire |
|
||||
| `recursive` | booléen | Non | Créer les répertoires parents s'ils n'existent pas |
|
||||
|
||||
#### Sortie
|
||||
|
||||
| Paramètre | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | booléen | Indique si le répertoire a été créé avec succès |
|
||||
| `createdPath` | chaîne | Chemin du répertoire créé |
|
||||
| `message` | chaîne | Message d'état de l'opération |
|
||||
|
||||
## Remarques
|
||||
|
||||
- Catégorie : `tools`
|
||||
- Type : `sftp`
|
||||
@@ -7,7 +7,7 @@ import { BlockInfoCard } from "@/components/ui/block-info-card"
|
||||
|
||||
<BlockInfoCard
|
||||
type="smtp"
|
||||
color="#2D3748"
|
||||
color="#4A5568"
|
||||
/>
|
||||
|
||||
{/* MANUAL-CONTENT-START:intro */}
|
||||
|
||||
@@ -142,8 +142,8 @@ Function (Process) → Condition (account_type === 'enterprise') → Advanced or
|
||||
|
||||
## ベストプラクティス
|
||||
|
||||
- **条件を正しく順序付ける**: より具体的な条件を一般的な条件の前に配置して、特定のロジックがフォールバックよりも優先されるようにします
|
||||
- **必要に応じてelse分岐を使用する**: 条件が一致せず、else分岐が接続されていない場合、ワークフロー分岐は正常に終了します。一致しないケースのフォールバックパスが必要な場合は、else分岐を接続してください
|
||||
- **式をシンプルに保つ**: 読みやすさとデバッグのしやすさのために、明確で簡潔なブール式を使用します
|
||||
- **条件を正しく順序付ける**: より具体的な条件を一般的な条件の前に配置し、特定のロジックがフォールバックよりも優先されるようにします
|
||||
- **デフォルト条件を含める**: 最後の条件として包括的な条件(`true`)を追加し、マッチしないケースを処理してワークフローの実行が停止しないようにします
|
||||
- **式をシンプルに保つ**: 読みやすさとデバッグのしやすさのために、明確で簡潔な真偽式を使用します
|
||||
- **条件を文書化する**: チームのコラボレーションとメンテナンスを向上させるために、各条件の目的を説明する説明を追加します
|
||||
- **エッジケースをテストする**: 条件範囲の境界値でテストすることで、条件が境界値を正しく処理することを確認します
|
||||
|
||||
@@ -72,7 +72,7 @@ Simは複数のカテゴリにわたる80以上のサービスとネイティブ
|
||||
<Video src="introduction/integrations-sidebar.mp4" width={700} height={450} />
|
||||
</div>
|
||||
|
||||
## Copilot
|
||||
## AI搭載コパイロット
|
||||
|
||||
**質問と指導を受ける**
|
||||
コパイロットはSimに関する質問に答え、ワークフローを説明し、改善のための提案を提供します。`@`記号を使用してワークフロー、ブロック、ドキュメント、ナレッジ、ログを参照し、文脈に応じたサポートを受けられます。
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
---
|
||||
title: 概要
|
||||
description: インテリジェントなベクトル検索とチャンキングを使用して、ドキュメントをアップロード、処理、検索
|
||||
title: ナレッジベース
|
||||
---
|
||||
|
||||
import { Video } from '@/components/ui/video'
|
||||
|
||||
@@ -1,155 +0,0 @@
|
||||
---
|
||||
title: Docker
|
||||
description: Docker Composeを使用してSim Studioをデプロイする
|
||||
---
|
||||
|
||||
import { Tab, Tabs } from 'fumadocs-ui/components/tabs'
|
||||
import { Callout } from 'fumadocs-ui/components/callout'
|
||||
|
||||
## クイックスタート
|
||||
|
||||
```bash
|
||||
# Clone and start
|
||||
git clone https://github.com/simstudioai/sim.git && cd sim
|
||||
docker compose -f docker-compose.prod.yml up -d
|
||||
```
|
||||
|
||||
[http://localhost:3000](http://localhost:3000)を開く
|
||||
|
||||
## 本番環境のセットアップ
|
||||
|
||||
### 1. 環境の設定
|
||||
|
||||
```bash
|
||||
# Generate secrets
|
||||
cat > .env << EOF
|
||||
DATABASE_URL=postgresql://postgres:postgres@db:5432/simstudio
|
||||
BETTER_AUTH_SECRET=$(openssl rand -hex 32)
|
||||
ENCRYPTION_KEY=$(openssl rand -hex 32)
|
||||
INTERNAL_API_SECRET=$(openssl rand -hex 32)
|
||||
NEXT_PUBLIC_APP_URL=https://sim.yourdomain.com
|
||||
BETTER_AUTH_URL=https://sim.yourdomain.com
|
||||
NEXT_PUBLIC_SOCKET_URL=https://sim.yourdomain.com
|
||||
EOF
|
||||
```
|
||||
|
||||
### 2. サービスの起動
|
||||
|
||||
```bash
|
||||
docker compose -f docker-compose.prod.yml up -d
|
||||
```
|
||||
|
||||
### 3. SSLの設定
|
||||
|
||||
<Tabs items={['Caddy (推奨)', 'Nginx + Certbot']}>
|
||||
<Tab value="Caddy (推奨)">
|
||||
Caddyは自動的にSSL証明書を処理します。
|
||||
|
||||
```bash
|
||||
# Install Caddy
|
||||
sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https curl
|
||||
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
|
||||
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list
|
||||
sudo apt update && sudo apt install caddy
|
||||
```
|
||||
|
||||
`/etc/caddy/Caddyfile`を作成します:
|
||||
|
||||
```
|
||||
sim.yourdomain.com {
|
||||
reverse_proxy localhost:3000
|
||||
|
||||
handle /socket.io/* {
|
||||
reverse_proxy localhost:3002
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
```bash
|
||||
sudo systemctl restart caddy
|
||||
```
|
||||
|
||||
</Tab>
|
||||
<Tab value="Nginx + Certbot">
|
||||
|
||||
```bash
|
||||
# Install
|
||||
sudo apt install nginx certbot python3-certbot-nginx -y
|
||||
|
||||
# Create /etc/nginx/sites-available/sim
|
||||
server {
|
||||
listen 80;
|
||||
server_name sim.yourdomain.com;
|
||||
|
||||
location / {
|
||||
proxy_pass http://127.0.0.1:3000;
|
||||
proxy_http_version 1.1;
|
||||
proxy_set_header Upgrade $http_upgrade;
|
||||
proxy_set_header Connection 'upgrade';
|
||||
proxy_set_header Host $host;
|
||||
proxy_set_header X-Forwarded-Proto $scheme;
|
||||
}
|
||||
|
||||
location /socket.io/ {
|
||||
proxy_pass http://127.0.0.1:3002;
|
||||
proxy_http_version 1.1;
|
||||
proxy_set_header Upgrade $http_upgrade;
|
||||
proxy_set_header Connection "upgrade";
|
||||
}
|
||||
}
|
||||
|
||||
# Enable and get certificate
|
||||
sudo ln -s /etc/nginx/sites-available/sim /etc/nginx/sites-enabled/
|
||||
sudo certbot --nginx -d sim.yourdomain.com
|
||||
```
|
||||
|
||||
</Tab>
|
||||
</Tabs>
|
||||
|
||||
## Ollama
|
||||
|
||||
```bash
|
||||
# With GPU
|
||||
docker compose -f docker-compose.ollama.yml --profile gpu --profile setup up -d
|
||||
|
||||
# CPU only
|
||||
docker compose -f docker-compose.ollama.yml --profile cpu --profile setup up -d
|
||||
```
|
||||
|
||||
追加モデルを取得:
|
||||
|
||||
```bash
|
||||
docker compose -f docker-compose.ollama.yml exec ollama ollama pull llama3.2
|
||||
```
|
||||
|
||||
### 外部Ollama
|
||||
|
||||
Ollamaがホストマシン上で実行されている場合(Dockerではない):
|
||||
|
||||
```bash
|
||||
# macOS/Windows
|
||||
OLLAMA_URL=http://host.docker.internal:11434 docker compose -f docker-compose.prod.yml up -d
|
||||
|
||||
# Linux - use your host IP
|
||||
OLLAMA_URL=http://192.168.1.100:11434 docker compose -f docker-compose.prod.yml up -d
|
||||
```
|
||||
|
||||
<Callout type="warning">
|
||||
Docker内では、`localhost`はホストではなくコンテナを指します。`host.docker.internal`またはホストのIPを使用してください。
|
||||
</Callout>
|
||||
|
||||
## コマンド
|
||||
|
||||
```bash
|
||||
# View logs
|
||||
docker compose -f docker-compose.prod.yml logs -f simstudio
|
||||
|
||||
# Stop
|
||||
docker compose -f docker-compose.prod.yml down
|
||||
|
||||
# Update
|
||||
docker compose -f docker-compose.prod.yml pull && docker compose -f docker-compose.prod.yml up -d
|
||||
|
||||
# Backup database
|
||||
docker compose -f docker-compose.prod.yml exec db pg_dump -U postgres simstudio > backup.sql
|
||||
```
|
||||
@@ -1,87 +0,0 @@
|
||||
---
|
||||
title: 環境変数
|
||||
description: Sim Studioの設定リファレンス
|
||||
---
|
||||
|
||||
import { Callout } from 'fumadocs-ui/components/callout'
|
||||
|
||||
## 必須項目
|
||||
|
||||
| 変数 | 説明 |
|
||||
|----------|-------------|
|
||||
| `DATABASE_URL` | PostgreSQL接続文字列 |
|
||||
| `BETTER_AUTH_SECRET` | 認証シークレット(32桁の16進数): `openssl rand -hex 32` |
|
||||
| `BETTER_AUTH_URL` | アプリのURL |
|
||||
| `ENCRYPTION_KEY` | 暗号化キー(32桁の16進数): `openssl rand -hex 32` |
|
||||
| `INTERNAL_API_SECRET` | 内部APIシークレット(32桁の16進数): `openssl rand -hex 32` |
|
||||
| `NEXT_PUBLIC_APP_URL` | 公開アプリURL |
|
||||
| `NEXT_PUBLIC_SOCKET_URL` | WebSocket URL(デフォルト: `http://localhost:3002`) |
|
||||
|
||||
## AIプロバイダー
|
||||
|
||||
| 変数 | プロバイダー |
|
||||
|----------|----------|
|
||||
| `OPENAI_API_KEY` | OpenAI |
|
||||
| `ANTHROPIC_API_KEY_1` | Anthropic Claude |
|
||||
| `GEMINI_API_KEY_1` | Google Gemini |
|
||||
| `MISTRAL_API_KEY` | Mistral |
|
||||
| `OLLAMA_URL` | Ollama(デフォルト: `http://localhost:11434`) |
|
||||
|
||||
<Callout type="info">
|
||||
負荷分散のために、`_1`、`_2`、`_3`のサフィックスを持つ複数のキーを追加できます(例:`OPENAI_API_KEY_1`、`OPENAI_API_KEY_2`)。OpenAI、Anthropic、Geminiで動作します。
|
||||
</Callout>
|
||||
|
||||
<Callout type="info">
|
||||
Dockerでは、ホストマシンのOllamaに接続するために`OLLAMA_URL=http://host.docker.internal:11434`を使用してください。
|
||||
</Callout>
|
||||
|
||||
### Azure OpenAI
|
||||
|
||||
| 変数 | 説明 |
|
||||
|----------|-------------|
|
||||
| `AZURE_OPENAI_API_KEY` | Azure OpenAI APIキー |
|
||||
| `AZURE_OPENAI_ENDPOINT` | Azure OpenAIエンドポイントURL |
|
||||
| `AZURE_OPENAI_API_VERSION` | APIバージョン(例:`2024-02-15-preview`) |
|
||||
|
||||
### vLLM(セルフホスト)
|
||||
|
||||
| 変数 | 説明 |
|
||||
|----------|-------------|
|
||||
| `VLLM_BASE_URL` | vLLMサーバーURL(例:`http://localhost:8000/v1`) |
|
||||
| `VLLM_API_KEY` | vLLM用のオプションベアラートークン |
|
||||
|
||||
## OAuth プロバイダー
|
||||
|
||||
| 変数 | 説明 |
|
||||
|----------|-------------|
|
||||
| `GOOGLE_CLIENT_ID` | Google OAuthクライアントID |
|
||||
| `GOOGLE_CLIENT_SECRET` | Google OAuthクライアントシークレット |
|
||||
| `GITHUB_CLIENT_ID` | GitHub OAuthクライアントID |
|
||||
| `GITHUB_CLIENT_SECRET` | GitHub OAuthクライアントシークレット |
|
||||
|
||||
## オプション
|
||||
|
||||
| 変数 | 説明 |
|
||||
|----------|-------------|
|
||||
| `API_ENCRYPTION_KEY` | 保存されたAPIキーを暗号化します(32桁の16進数): `openssl rand -hex 32` |
|
||||
| `COPILOT_API_KEY` | コパイロット機能用のAPIキー |
|
||||
| `ADMIN_API_KEY` | GitOps操作用の管理者APIキー |
|
||||
| `RESEND_API_KEY` | 通知用のメールサービス |
|
||||
| `ALLOWED_LOGIN_DOMAINS` | サインアップをドメインに制限(カンマ区切り) |
|
||||
| `ALLOWED_LOGIN_EMAILS` | サインアップを特定のメールに制限(カンマ区切り) |
|
||||
| `DISABLE_REGISTRATION` | 新規ユーザーのサインアップを無効にするには `true` に設定 |
|
||||
|
||||
## .envの例
|
||||
|
||||
```bash
|
||||
DATABASE_URL=postgresql://postgres:postgres@db:5432/simstudio
|
||||
BETTER_AUTH_SECRET=<openssl rand -hex 32>
|
||||
BETTER_AUTH_URL=https://sim.yourdomain.com
|
||||
ENCRYPTION_KEY=<openssl rand -hex 32>
|
||||
INTERNAL_API_SECRET=<openssl rand -hex 32>
|
||||
NEXT_PUBLIC_APP_URL=https://sim.yourdomain.com
|
||||
NEXT_PUBLIC_SOCKET_URL=https://sim.yourdomain.com
|
||||
OPENAI_API_KEY=sk-...
|
||||
```
|
||||
|
||||
すべてのオプションについては `apps/sim/.env.example` を参照してください。
|
||||
@@ -1,50 +0,0 @@
|
||||
---
|
||||
title: セルフホスティング
|
||||
description: 自社のインフラストラクチャにSim Studioをデプロイ
|
||||
---
|
||||
|
||||
import { Card, Cards } from 'fumadocs-ui/components/card'
|
||||
import { Callout } from 'fumadocs-ui/components/callout'
|
||||
|
||||
DockerまたはKubernetesを使用して、自社のインフラストラクチャにSim Studioをデプロイします。
|
||||
|
||||
## 要件
|
||||
|
||||
| リソース | 最小 | 推奨 |
|
||||
|----------|---------|-------------|
|
||||
| CPU | 2コア | 4+コア |
|
||||
| RAM | 12 GB | 16+ GB |
|
||||
| ストレージ | 20 GB SSD | 50+ GB SSD |
|
||||
| Docker | 20.10+ | 最新版 |
|
||||
|
||||
## クイックスタート
|
||||
|
||||
```bash
|
||||
git clone https://github.com/simstudioai/sim.git && cd sim
|
||||
docker compose -f docker-compose.prod.yml up -d
|
||||
```
|
||||
|
||||
[http://localhost:3000](http://localhost:3000)を開く
|
||||
|
||||
## デプロイオプション
|
||||
|
||||
<Cards>
|
||||
<Card title="Docker" href="/self-hosting/docker">
|
||||
任意のサーバーでDocker Composeを使用してデプロイ
|
||||
</Card>
|
||||
<Card title="Kubernetes" href="/self-hosting/kubernetes">
|
||||
KubernetesクラスターでHelmを使用してデプロイ
|
||||
</Card>
|
||||
<Card title="クラウドプラットフォーム" href="/self-hosting/platforms">
|
||||
Railway、DigitalOcean、AWS、Azure、GCPのガイド
|
||||
</Card>
|
||||
</Cards>
|
||||
|
||||
## アーキテクチャ
|
||||
|
||||
| コンポーネント | ポート | 説明 |
|
||||
|-----------|------|-------------|
|
||||
| simstudio | 3000 | メインアプリケーション |
|
||||
| realtime | 3002 | WebSocketサーバー |
|
||||
| db | 5432 | pgvector搭載のPostgreSQL |
|
||||
| migrations | - | データベースマイグレーション(一度だけ実行) |
|
||||
@@ -1,133 +0,0 @@
|
||||
---
|
||||
title: Kubernetes
|
||||
description: Helmを使用してSim Studioをデプロイする
|
||||
---
|
||||
|
||||
import { Tab, Tabs } from 'fumadocs-ui/components/tabs'
|
||||
import { Callout } from 'fumadocs-ui/components/callout'
|
||||
|
||||
## 前提条件
|
||||
|
||||
- Kubernetes 1.19+
|
||||
- Helm 3.0+
|
||||
- PVプロビジョナーのサポート
|
||||
|
||||
## インストール
|
||||
|
||||
```bash
|
||||
# Clone repo
|
||||
git clone https://github.com/simstudioai/sim.git && cd sim
|
||||
|
||||
# Generate secrets
|
||||
BETTER_AUTH_SECRET=$(openssl rand -hex 32)
|
||||
ENCRYPTION_KEY=$(openssl rand -hex 32)
|
||||
INTERNAL_API_SECRET=$(openssl rand -hex 32)
|
||||
|
||||
# Install
|
||||
helm install sim ./helm/sim \
|
||||
--set app.env.BETTER_AUTH_SECRET="$BETTER_AUTH_SECRET" \
|
||||
--set app.env.ENCRYPTION_KEY="$ENCRYPTION_KEY" \
|
||||
--set app.env.INTERNAL_API_SECRET="$INTERNAL_API_SECRET" \
|
||||
--namespace simstudio --create-namespace
|
||||
```
|
||||
|
||||
## クラウド固有の値
|
||||
|
||||
<Tabs items={['AWS EKS', 'Azure AKS', 'GCP GKE']}>
|
||||
<Tab value="AWS EKS">
|
||||
|
||||
```bash
|
||||
helm install sim ./helm/sim \
|
||||
--values ./helm/sim/examples/values-aws.yaml \
|
||||
--set app.env.BETTER_AUTH_SECRET="$BETTER_AUTH_SECRET" \
|
||||
--set app.env.ENCRYPTION_KEY="$ENCRYPTION_KEY" \
|
||||
--set app.env.INTERNAL_API_SECRET="$INTERNAL_API_SECRET" \
|
||||
--set app.env.NEXT_PUBLIC_APP_URL="https://sim.yourdomain.com" \
|
||||
--namespace simstudio --create-namespace
|
||||
```
|
||||
|
||||
</Tab>
|
||||
<Tab value="Azure AKS">
|
||||
|
||||
```bash
|
||||
helm install sim ./helm/sim \
|
||||
--values ./helm/sim/examples/values-azure.yaml \
|
||||
--set app.env.BETTER_AUTH_SECRET="$BETTER_AUTH_SECRET" \
|
||||
--set app.env.ENCRYPTION_KEY="$ENCRYPTION_KEY" \
|
||||
--set app.env.INTERNAL_API_SECRET="$INTERNAL_API_SECRET" \
|
||||
--set app.env.NEXT_PUBLIC_APP_URL="https://sim.yourdomain.com" \
|
||||
--namespace simstudio --create-namespace
|
||||
```
|
||||
|
||||
</Tab>
|
||||
<Tab value="GCP GKE">
|
||||
|
||||
```bash
|
||||
helm install sim ./helm/sim \
|
||||
--values ./helm/sim/examples/values-gcp.yaml \
|
||||
--set app.env.BETTER_AUTH_SECRET="$BETTER_AUTH_SECRET" \
|
||||
--set app.env.ENCRYPTION_KEY="$ENCRYPTION_KEY" \
|
||||
--set app.env.INTERNAL_API_SECRET="$INTERNAL_API_SECRET" \
|
||||
--set app.env.NEXT_PUBLIC_APP_URL="https://sim.yourdomain.com" \
|
||||
--namespace simstudio --create-namespace
|
||||
```
|
||||
|
||||
</Tab>
|
||||
</Tabs>
|
||||
|
||||
## 主要な設定
|
||||
|
||||
```yaml
|
||||
# Custom values.yaml
|
||||
app:
|
||||
replicaCount: 2
|
||||
env:
|
||||
NEXT_PUBLIC_APP_URL: "https://sim.yourdomain.com"
|
||||
OPENAI_API_KEY: "sk-..."
|
||||
|
||||
postgresql:
|
||||
persistence:
|
||||
size: 50Gi
|
||||
|
||||
ingress:
|
||||
enabled: true
|
||||
className: nginx
|
||||
tls:
|
||||
enabled: true
|
||||
app:
|
||||
host: sim.yourdomain.com
|
||||
```
|
||||
|
||||
すべてのオプションについては `helm/sim/values.yaml` を参照してください。
|
||||
|
||||
## 外部データベース
|
||||
|
||||
```yaml
|
||||
postgresql:
|
||||
enabled: false
|
||||
|
||||
externalDatabase:
|
||||
enabled: true
|
||||
host: "your-db-host"
|
||||
port: 5432
|
||||
username: "postgres"
|
||||
password: "your-password"
|
||||
database: "simstudio"
|
||||
sslMode: "require"
|
||||
```
|
||||
|
||||
## コマンド
|
||||
|
||||
```bash
|
||||
# Port forward for local access
|
||||
kubectl port-forward deployment/sim-sim-app 3000:3000 -n simstudio
|
||||
|
||||
# View logs
|
||||
kubectl logs -l app.kubernetes.io/component=app -n simstudio --tail=100
|
||||
|
||||
# Upgrade
|
||||
helm upgrade sim ./helm/sim --namespace simstudio
|
||||
|
||||
# Uninstall
|
||||
helm uninstall sim --namespace simstudio
|
||||
```
|
||||
@@ -1,124 +0,0 @@
|
||||
---
|
||||
title: クラウドプラットフォーム
|
||||
description: クラウドプラットフォームにSim Studioをデプロイする
|
||||
---
|
||||
|
||||
import { Tab, Tabs } from 'fumadocs-ui/components/tabs'
|
||||
import { Callout } from 'fumadocs-ui/components/callout'
|
||||
|
||||
## Railway
|
||||
|
||||
ワンクリックデプロイメントで自動的にPostgreSQLをプロビジョニングします。
|
||||
|
||||
[
|
||||
|
||||

|
||||
|
||||
](https://railway.com/new/template/sim-studio)
|
||||
|
||||
デプロイ後、Railwayダッシュボードで環境変数を追加してください:
|
||||
- `BETTER_AUTH_SECRET`, `ENCRYPTION_KEY`, `INTERNAL_API_SECRET` (自動生成)
|
||||
- `OPENAI_API_KEY` または他のAIプロバイダーキー
|
||||
- 設定 → ネットワーキングでカスタムドメイン
|
||||
|
||||
## VPSデプロイメント
|
||||
|
||||
DigitalOcean、AWS EC2、Azure VMsまたは任意のLinuxサーバー向け:
|
||||
|
||||
<Tabs items={['DigitalOcean', 'AWS EC2', 'Azure VM']}>
|
||||
<Tab value="DigitalOcean">
|
||||
**推奨:** 16 GB RAMドロップレット、Ubuntu 24.04
|
||||
|
||||
```bash
|
||||
# Create Droplet via console, then SSH in
|
||||
ssh root@your-droplet-ip
|
||||
```
|
||||
|
||||
</Tab>
|
||||
<Tab value="AWS EC2">
|
||||
**推奨:** t3.xlarge (16 GB RAM)、Ubuntu 24.04
|
||||
|
||||
```bash
|
||||
ssh -i your-key.pem ubuntu@your-ec2-ip
|
||||
```
|
||||
|
||||
</Tab>
|
||||
<Tab value="Azure VM">
|
||||
**推奨:** Standard_D4s_v3 (16 GB RAM)、Ubuntu 24.04
|
||||
|
||||
```bash
|
||||
ssh azureuser@your-vm-ip
|
||||
```
|
||||
|
||||
</Tab>
|
||||
</Tabs>
|
||||
|
||||
### Dockerのインストール
|
||||
|
||||
```bash
|
||||
# Install Docker (official method)
|
||||
curl -fsSL https://get.docker.com | sudo sh
|
||||
sudo usermod -aG docker $USER
|
||||
|
||||
# Logout and reconnect, then verify
|
||||
docker --version
|
||||
```
|
||||
|
||||
### Sim Studioのデプロイ
|
||||
|
||||
```bash
|
||||
git clone https://github.com/simstudioai/sim.git && cd sim
|
||||
|
||||
# Create .env with secrets
|
||||
cat > .env << EOF
|
||||
DATABASE_URL=postgresql://postgres:postgres@db:5432/simstudio
|
||||
BETTER_AUTH_SECRET=$(openssl rand -hex 32)
|
||||
ENCRYPTION_KEY=$(openssl rand -hex 32)
|
||||
INTERNAL_API_SECRET=$(openssl rand -hex 32)
|
||||
NEXT_PUBLIC_APP_URL=https://sim.yourdomain.com
|
||||
BETTER_AUTH_URL=https://sim.yourdomain.com
|
||||
NEXT_PUBLIC_SOCKET_URL=https://sim.yourdomain.com
|
||||
EOF
|
||||
|
||||
# Start
|
||||
docker compose -f docker-compose.prod.yml up -d
|
||||
```
|
||||
|
||||
### CaddyによるSSL
|
||||
|
||||
```bash
|
||||
# Install Caddy
|
||||
sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https curl
|
||||
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
|
||||
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list
|
||||
sudo apt update && sudo apt install caddy
|
||||
|
||||
# Configure (replace domain)
|
||||
echo 'sim.yourdomain.com {
|
||||
reverse_proxy localhost:3000
|
||||
handle /socket.io/* {
|
||||
reverse_proxy localhost:3002
|
||||
}
|
||||
}' | sudo tee /etc/caddy/Caddyfile
|
||||
|
||||
sudo systemctl restart caddy
|
||||
```
|
||||
|
||||
ドメインのDNS AレコードをサーバーのIPアドレスに向けてください。
|
||||
|
||||
## Kubernetes (EKS, AKS, GKE)
|
||||
|
||||
[Kubernetesガイド](/self-hosting/kubernetes)でマネージドKubernetesへのHelmデプロイメントについて確認してください。
|
||||
|
||||
## マネージドデータベース(オプション)
|
||||
|
||||
本番環境では、マネージドPostgreSQLサービスを使用してください:
|
||||
|
||||
- **AWS RDS** / **Azure Database** / **Cloud SQL** - pgvector拡張機能を有効化
|
||||
- **Supabase** / **Neon** - pgvector搭載済み
|
||||
|
||||
環境に`DATABASE_URL`を設定してください:
|
||||
|
||||
```bash
|
||||
DATABASE_URL="postgresql://user:pass@host:5432/db?sslmode=require"
|
||||
```
|
||||
@@ -1,113 +0,0 @@
|
||||
---
|
||||
title: トラブルシューティング
|
||||
description: 一般的な問題と解決策
|
||||
---
|
||||
|
||||
## データベース接続に失敗
|
||||
|
||||
```bash
|
||||
# Check database is running
|
||||
docker compose ps db
|
||||
|
||||
# Test connection
|
||||
docker compose exec db psql -U postgres -c "SELECT 1"
|
||||
```
|
||||
|
||||
`DATABASE_URL` 形式を確認してください: `postgresql://user:pass@host:5432/database`
|
||||
|
||||
## Ollamaモデルが表示されない
|
||||
|
||||
Docker内では、`localhost` = ホストマシンではなく、コンテナを指します。
|
||||
|
||||
```bash
|
||||
# For host-machine Ollama, use:
|
||||
OLLAMA_URL=http://host.docker.internal:11434 # macOS/Windows
|
||||
OLLAMA_URL=http://192.168.1.x:11434 # Linux (use actual IP)
|
||||
```
|
||||
|
||||
## WebSocket/リアルタイム機能が動作しない
|
||||
|
||||
1. `NEXT_PUBLIC_SOCKET_URL` がドメインと一致しているか確認する
|
||||
2. リアルタイムサービスが実行されているか確認する: `docker compose ps realtime`
|
||||
3. リバースプロキシがWebSocketアップグレードを通過させていることを確認する([Dockerガイド](/self-hosting/docker)を参照)
|
||||
|
||||
## 502 Bad Gateway
|
||||
|
||||
```bash
|
||||
# Check app is running
|
||||
docker compose ps simstudio
|
||||
docker compose logs simstudio
|
||||
|
||||
# Common causes: out of memory, database not ready
|
||||
```
|
||||
|
||||
## マイグレーションエラー
|
||||
|
||||
```bash
|
||||
# View migration logs
|
||||
docker compose logs migrations
|
||||
|
||||
# Run manually
|
||||
docker compose exec simstudio bun run db:migrate
|
||||
```
|
||||
|
||||
## pgvectorが見つからない
|
||||
|
||||
正しいPostgreSQLイメージを使用してください:
|
||||
|
||||
```yaml
|
||||
image: pgvector/pgvector:pg17 # NOT postgres:17
|
||||
```
|
||||
|
||||
## 証明書エラー(CERT_HAS_EXPIRED)
|
||||
|
||||
外部APIを呼び出す際にSSL証明書エラーが表示される場合:
|
||||
|
||||
```bash
|
||||
# Update CA certificates in container
|
||||
docker compose exec simstudio apt-get update && apt-get install -y ca-certificates
|
||||
|
||||
# Or set in environment (not recommended for production)
|
||||
NODE_TLS_REJECT_UNAUTHORIZED=0
|
||||
```
|
||||
|
||||
## ログイン後の空白ページ
|
||||
|
||||
1. ブラウザコンソールでエラーを確認する
|
||||
2. `NEXT_PUBLIC_APP_URL` が実際のドメインと一致しているか確認する
|
||||
3. ブラウザのCookieとローカルストレージをクリアする
|
||||
4. すべてのサービスが実行されているか確認する: `docker compose ps`
|
||||
|
||||
## Windows特有の問題
|
||||
|
||||
**WindowsでのTurbopackエラー:**
|
||||
|
||||
```bash
|
||||
# Use WSL2 for better compatibility
|
||||
wsl --install
|
||||
|
||||
# Or disable Turbopack in package.json
|
||||
# Change "next dev --turbopack" to "next dev"
|
||||
```
|
||||
|
||||
**改行の問題:**
|
||||
|
||||
```bash
|
||||
# Configure git to use LF
|
||||
git config --global core.autocrlf input
|
||||
```
|
||||
|
||||
## ログを表示
|
||||
|
||||
```bash
|
||||
# All services
|
||||
docker compose logs -f
|
||||
|
||||
# Specific service
|
||||
docker compose logs -f simstudio
|
||||
```
|
||||
|
||||
## ヘルプを得る
|
||||
|
||||
- [GitHub Issues](https://github.com/simstudioai/sim/issues)
|
||||
- [Discord](https://discord.gg/Hr4UWYEcTT)
|
||||
@@ -1,181 +0,0 @@
|
||||
---
|
||||
title: Cursor
|
||||
description: GitHubリポジトリで作業するためのCursorクラウドエージェントを起動および管理する
|
||||
---
|
||||
|
||||
import { BlockInfoCard } from "@/components/ui/block-info-card"
|
||||
|
||||
<BlockInfoCard
|
||||
type="cursor"
|
||||
color="#1E1E1E"
|
||||
/>
|
||||
|
||||
{/* MANUAL-CONTENT-START:intro */}
|
||||
[Cursor](https://www.cursor.so/)はAI IDEおよびクラウドベースのプラットフォームで、GitHubリポジトリで直接作業できる強力なAIエージェントを起動・管理することができます。Cursorエージェントは開発タスクを自動化し、チームの生産性を向上させ、コード変更の実施、自然言語指示への応答、活動に関する会話履歴の維持によってあなたと協力します。
|
||||
|
||||
Cursorでは以下のことができます:
|
||||
|
||||
- **コードベース用のクラウドエージェントを起動**: クラウド上であなたのリポジトリで作業する新しいAIエージェントを即座に作成
|
||||
- **自然言語を使用してコーディングタスクを委任**: 書面による指示、修正、説明でエージェントを導く
|
||||
- **進捗と出力を監視**: エージェントのステータスを取得し、詳細な結果を表示し、現在または完了したタスクを検査
|
||||
- **完全な会話履歴にアクセス**: 透明性と監査可能性のためにすべてのプロンプトとAI応答をレビュー
|
||||
- **エージェントのライフサイクルを制御・管理**: アクティブなエージェントをリスト表示し、エージェントを終了し、APIベースのエージェント起動とフォローアップを管理
|
||||
|
||||
Simでは、Cursor統合によりエージェントとワークフローがCursorクラウドエージェントとプログラム的に対話できるようになります。つまり、Simを使用して以下のことができます:
|
||||
|
||||
- すべてのクラウドエージェントをリスト表示し、現在の状態を閲覧 (`cursor_list_agents`)
|
||||
- 任意のエージェントの最新ステータスと出力を取得 (`cursor_get_agent`)
|
||||
- 任意のコーディングエージェントの完全な会話履歴を表示 (`cursor_get_conversation`)
|
||||
- 実行中のエージェントにフォローアップ指示や新しいプロンプトを追加
|
||||
- 必要に応じてエージェントを管理・終了
|
||||
|
||||
この統合により、Simエージェントの柔軟なインテリジェンスとCursorの強力な開発自動化機能を組み合わせることができ、プロジェクト全体でAI駆動の開発をスケールすることが可能になります。
|
||||
{/* MANUAL-CONTENT-END */}
|
||||
|
||||
## 使用方法
|
||||
|
||||
Cursor Cloud Agents APIを使用して、GitHubリポジトリで作業できるAIエージェントを起動します。エージェントの起動、フォローアップ指示の追加、ステータスの確認、会話の表示、およびエージェントのライフサイクル管理をサポートしています。
|
||||
|
||||
## ツール
|
||||
|
||||
### `cursor_list_agents`
|
||||
|
||||
認証されたユーザーのすべてのクラウドエージェントをオプションのページネーションで一覧表示します。
|
||||
|
||||
#### 入力
|
||||
|
||||
| パラメータ | 型 | 必須 | 説明 |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `apiKey` | string | はい | Cursor APIキー |
|
||||
| `limit` | number | いいえ | 返すエージェントの数(デフォルト:20、最大:100) |
|
||||
| `cursor` | string | いいえ | 前の応答からのページネーションカーソル |
|
||||
|
||||
#### 出力
|
||||
|
||||
| パラメータ | 型 | 説明 |
|
||||
| --------- | ---- | ----------- |
|
||||
| `content` | string | 人間が読めるエージェントのリスト |
|
||||
| `metadata` | object | エージェントリストのメタデータ |
|
||||
|
||||
### `cursor_get_agent`
|
||||
|
||||
クラウドエージェントの現在のステータスと結果を取得します。
|
||||
|
||||
#### 入力
|
||||
|
||||
| パラメータ | 型 | 必須 | 説明 |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `apiKey` | string | はい | Cursor APIキー |
|
||||
| `agentId` | string | はい | クラウドエージェントの一意の識別子(例:bc_abc123) |
|
||||
|
||||
#### 出力
|
||||
|
||||
| パラメータ | 型 | 説明 |
|
||||
| --------- | ---- | ----------- |
|
||||
| `content` | string | 人間が読めるエージェントの詳細 |
|
||||
| `metadata` | object | エージェントのメタデータ |
|
||||
|
||||
### `cursor_get_conversation`
|
||||
|
||||
クラウドエージェントの会話履歴(すべてのユーザープロンプトとアシスタントの応答を含む)を取得します。
|
||||
|
||||
#### 入力
|
||||
|
||||
| パラメータ | 型 | 必須 | 説明 |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `apiKey` | string | はい | Cursor APIキー |
|
||||
| `agentId` | string | はい | クラウドエージェントの一意の識別子(例:bc_abc123) |
|
||||
|
||||
#### 出力
|
||||
|
||||
| パラメータ | 型 | 説明 |
|
||||
| --------- | ---- | ----------- |
|
||||
| `content` | string | 人間が読める会話履歴 |
|
||||
| `metadata` | object | 会話のメタデータ |
|
||||
|
||||
### `cursor_launch_agent`
|
||||
|
||||
指定された指示でGitHubリポジトリに取り組む新しいクラウドエージェントを開始します。
|
||||
|
||||
#### 入力
|
||||
|
||||
| パラメータ | 型 | 必須 | 説明 |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `apiKey` | string | はい | Cursor APIキー |
|
||||
| `repository` | string | はい | GitHubリポジトリURL(例:https://github.com/your-org/your-repo) |
|
||||
| `ref` | string | いいえ | 作業するブランチ、タグ、またはコミット(デフォルトはデフォルトブランチ) |
|
||||
| `promptText` | string | はい | エージェントへの指示テキスト |
|
||||
| `promptImages` | string | いいえ | base64データと寸法を持つ画像オブジェクトのJSON配列 |
|
||||
| `model` | string | いいえ | 使用するモデル(自動選択の場合は空のままにする) |
|
||||
| `branchName` | string | いいえ | エージェントが使用するカスタムブランチ名 |
|
||||
| `autoCreatePr` | boolean | いいえ | エージェントが終了したときに自動的にPRを作成する |
|
||||
| `openAsCursorGithubApp` | boolean | いいえ | Cursor GitHub AppとしてPRを開く |
|
||||
| `skipReviewerRequest` | boolean | いいえ | PRでのレビュアーのリクエストをスキップする |
|
||||
|
||||
#### 出力
|
||||
|
||||
| パラメータ | 型 | 説明 |
|
||||
| --------- | ---- | ----------- |
|
||||
| `content` | string | エージェントの詳細を含む成功メッセージ |
|
||||
| `metadata` | object | 起動結果のメタデータ |
|
||||
|
||||
### `cursor_add_followup`
|
||||
|
||||
既存のクラウドエージェントにフォローアップ指示を追加します。
|
||||
|
||||
#### 入力
|
||||
|
||||
| パラメータ | 型 | 必須 | 説明 |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `apiKey` | string | はい | Cursor APIキー |
|
||||
| `agentId` | string | はい | クラウドエージェントの一意の識別子(例:bc_abc123) |
|
||||
| `followupPromptText` | string | はい | エージェントへのフォローアップ指示テキスト |
|
||||
| `promptImages` | string | いいえ | base64データと寸法を持つ画像オブジェクトのJSON配列(最大5つ) |
|
||||
|
||||
#### 出力
|
||||
|
||||
| パラメータ | 型 | 説明 |
|
||||
| --------- | ---- | ----------- |
|
||||
| `content` | string | 成功メッセージ |
|
||||
| `metadata` | object | 結果メタデータ |
|
||||
|
||||
### `cursor_stop_agent`
|
||||
|
||||
実行中のクラウドエージェントを停止します。これはエージェントを削除せずに一時停止します。
|
||||
|
||||
#### 入力
|
||||
|
||||
| パラメータ | 型 | 必須 | 説明 |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `apiKey` | string | はい | Cursor APIキー |
|
||||
| `agentId` | string | はい | クラウドエージェントの一意の識別子(例:bc_abc123) |
|
||||
|
||||
#### 出力
|
||||
|
||||
| パラメータ | 型 | 説明 |
|
||||
| --------- | ---- | ----------- |
|
||||
| `content` | string | 成功メッセージ |
|
||||
| `metadata` | object | 結果メタデータ |
|
||||
|
||||
### `cursor_delete_agent`
|
||||
|
||||
クラウドエージェントを完全に削除します。この操作は元に戻せません。
|
||||
|
||||
#### 入力
|
||||
|
||||
| パラメータ | 型 | 必須 | 説明 |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `apiKey` | string | はい | Cursor APIキー |
|
||||
| `agentId` | string | はい | クラウドエージェントの一意の識別子(例:bc_abc123) |
|
||||
|
||||
#### 出力
|
||||
|
||||
| パラメータ | 型 | 説明 |
|
||||
| --------- | ---- | ----------- |
|
||||
| `content` | string | 成功メッセージ |
|
||||
| `metadata` | object | 結果メタデータ |
|
||||
|
||||
## 注意事項
|
||||
|
||||
- カテゴリー: `tools`
|
||||
- タイプ: `cursor`
|
||||
@@ -1,63 +0,0 @@
|
||||
---
|
||||
title: DuckDuckGo
|
||||
description: DuckDuckGoで検索
|
||||
---
|
||||
|
||||
import { BlockInfoCard } from "@/components/ui/block-info-card"
|
||||
|
||||
<BlockInfoCard
|
||||
type="duckduckgo"
|
||||
color="#FFFFFF"
|
||||
/>
|
||||
|
||||
{/* MANUAL-CONTENT-START:intro */}
|
||||
[DuckDuckGo](https://duckduckgo.com/)は、プライバシーを重視したウェブ検索エンジンで、あなたやあなたの検索を追跡することなく、即時の回答、要約、関連トピックなどを提供します。DuckDuckGoを使えば、ユーザープロファイリングやターゲット広告なしで簡単に情報を見つけることができます。
|
||||
|
||||
SimでDuckDuckGoを使用すると、以下のことができます:
|
||||
|
||||
- **ウェブ検索**: 特定の検索クエリに対して、回答、事実、概要を即座に見つける
|
||||
- **直接的な回答を取得**: 計算、変換、事実に関するクエリに対して特定の回答を取得
|
||||
- **要約にアクセス**: 検索トピックに関する短い要約や説明を受け取る
|
||||
- **関連トピックを取得**: 検索に関連するリンクや参考情報を発見
|
||||
- **出力をフィルタリング**: オプションでHTMLを削除したり、より明確な結果を得るために曖昧さ回避をスキップしたりする
|
||||
|
||||
これらの機能により、Simエージェントは最新のウェブ知識への自動アクセスを可能にします — ワークフローでの事実の表示から、最新情報によるドキュメントや分析の強化まで。DuckDuckGoのインスタントアンサーAPIはオープンでAPIキーを必要としないため、自動化されたビジネスプロセスにプライバシーを保ちながら簡単に統合できます。
|
||||
{/* MANUAL-CONTENT-END */}
|
||||
|
||||
## 使用方法
|
||||
|
||||
DuckDuckGoインスタントアンサーAPIを使用してウェブを検索します。インスタントアンサー、要約、関連トピックなどを返します。APIキーなしで無料で使用できます。
|
||||
|
||||
## ツール
|
||||
|
||||
### `duckduckgo_search`
|
||||
|
||||
DuckDuckGoインスタントアンサーAPIを使用してウェブを検索します。クエリに対するインスタントアンサー、要約、関連トピックを返します。APIキーなしで無料で使用できます。
|
||||
|
||||
#### 入力
|
||||
|
||||
| パラメータ | 型 | 必須 | 説明 |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `query` | string | はい | 実行する検索クエリ |
|
||||
| `noHtml` | boolean | いいえ | 結果のテキストからHTMLを削除する(デフォルト: true) |
|
||||
| `skipDisambig` | boolean | いいえ | 曖昧さ回避の結果をスキップする(デフォルト: false) |
|
||||
|
||||
#### 出力
|
||||
|
||||
| パラメータ | 型 | 説明 |
|
||||
| --------- | ---- | ----------- |
|
||||
| `heading` | string | インスタントアンサーの見出し/タイトル |
|
||||
| `abstract` | string | トピックの短い要約 |
|
||||
| `abstractText` | string | 要約のプレーンテキストバージョン |
|
||||
| `abstractSource` | string | 要約の情報源(例:Wikipedia) |
|
||||
| `abstractURL` | string | 要約の情報源へのURL |
|
||||
| `image` | string | トピックに関連する画像へのURL |
|
||||
| `answer` | string | 利用可能な場合は直接的な回答(例:計算の場合) |
|
||||
| `answerType` | string | 回答のタイプ(例:calc、ipなど) |
|
||||
| `type` | string | レスポンスタイプ:A(記事)、D(曖昧さ回避)、C(カテゴリ)、N(名前)、E(排他的) |
|
||||
| `relatedTopics` | array | URLと説明を含む関連トピックの配列 |
|
||||
|
||||
## 注意事項
|
||||
|
||||
- カテゴリ: `tools`
|
||||
- タイプ: `duckduckgo`
|
||||
@@ -1,217 +0,0 @@
|
||||
---
|
||||
title: Google グループ
|
||||
description: Google Workspace グループとそのメンバーを管理する
|
||||
---
|
||||
|
||||
import { BlockInfoCard } from "@/components/ui/block-info-card"
|
||||
|
||||
<BlockInfoCard
|
||||
type="google_groups"
|
||||
color="#E8F0FE"
|
||||
/>
|
||||
|
||||
## 使用方法
|
||||
|
||||
Google Workspaceに接続して、Admin SDK Directory APIを使用してグループとそのメンバーを作成、更新、管理します。
|
||||
|
||||
## ツール
|
||||
|
||||
### `google_groups_list_groups`
|
||||
|
||||
Google Workspaceドメイン内のすべてのグループを一覧表示する
|
||||
|
||||
#### 入力
|
||||
|
||||
| パラメータ | 型 | 必須 | 説明 |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `customer` | string | いいえ | 顧客IDまたは認証済みユーザーのドメインの場合は「my_customer」 |
|
||||
| `domain` | string | いいえ | グループをフィルタリングするドメイン名 |
|
||||
| `maxResults` | number | いいえ | 返す結果の最大数(1-200) |
|
||||
| `pageToken` | string | いいえ | ページネーション用のトークン |
|
||||
| `query` | string | いいえ | グループをフィルタリングする検索クエリ(例:「email:admin*」) |
|
||||
|
||||
#### 出力
|
||||
|
||||
| パラメータ | 型 | 説明 |
|
||||
| --------- | ---- | ----------- |
|
||||
| `output` | json | Google グループ API レスポンスデータ |
|
||||
|
||||
### `google_groups_get_group`
|
||||
|
||||
メールアドレスまたはグループIDで特定のGoogle グループの詳細を取得する
|
||||
|
||||
#### 入力
|
||||
|
||||
| パラメータ | 型 | 必須 | 説明 |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `groupKey` | string | はい | グループのメールアドレスまたは一意のグループID |
|
||||
|
||||
#### 出力
|
||||
|
||||
| パラメータ | 型 | 説明 |
|
||||
| --------- | ---- | ----------- |
|
||||
| `output` | json | Google グループ API レスポンスデータ |
|
||||
|
||||
### `google_groups_create_group`
|
||||
|
||||
ドメイン内に新しいGoogle グループを作成する
|
||||
|
||||
#### 入力
|
||||
|
||||
| パラメータ | 型 | 必須 | 説明 |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `email` | string | はい | 新しいグループのメールアドレス(例:team@yourdomain.com) |
|
||||
| `name` | string | はい | グループの表示名 |
|
||||
| `description` | string | いいえ | グループの説明 |
|
||||
|
||||
#### 出力
|
||||
|
||||
| パラメータ | 型 | 説明 |
|
||||
| --------- | ---- | ----------- |
|
||||
| `output` | json | Google Groups APIのレスポンスデータ |
|
||||
|
||||
### `google_groups_update_group`
|
||||
|
||||
既存のGoogleグループを更新する
|
||||
|
||||
#### 入力
|
||||
|
||||
| パラメータ | 型 | 必須 | 説明 |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `groupKey` | string | はい | グループのメールアドレスまたは一意のグループID |
|
||||
| `name` | string | いいえ | グループの新しい表示名 |
|
||||
| `description` | string | いいえ | グループの新しい説明 |
|
||||
| `email` | string | いいえ | グループの新しいメールアドレス |
|
||||
|
||||
#### 出力
|
||||
|
||||
| パラメータ | 型 | 説明 |
|
||||
| --------- | ---- | ----------- |
|
||||
| `output` | json | Google Groups APIのレスポンスデータ |
|
||||
|
||||
### `google_groups_delete_group`
|
||||
|
||||
Googleグループを削除する
|
||||
|
||||
#### 入力
|
||||
|
||||
| パラメータ | 型 | 必須 | 説明 |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `groupKey` | string | はい | 削除するグループのメールアドレスまたは一意のグループID |
|
||||
|
||||
#### 出力
|
||||
|
||||
| パラメータ | 型 | 説明 |
|
||||
| --------- | ---- | ----------- |
|
||||
| `output` | json | Google Groups APIのレスポンスデータ |
|
||||
|
||||
### `google_groups_list_members`
|
||||
|
||||
Google グループのすべてのメンバーを一覧表示する
|
||||
|
||||
#### 入力
|
||||
|
||||
| パラメータ | 型 | 必須 | 説明 |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `groupKey` | string | はい | グループのメールアドレスまたは一意のグループID |
|
||||
| `maxResults` | number | いいえ | 返す結果の最大数(1-200) |
|
||||
| `pageToken` | string | いいえ | ページネーション用のトークン |
|
||||
| `roles` | string | いいえ | ロールによるフィルタリング(カンマ区切り: OWNER, MANAGER, MEMBER) |
|
||||
|
||||
#### 出力
|
||||
|
||||
| パラメータ | 型 | 説明 |
|
||||
| --------- | ---- | ----------- |
|
||||
| `output` | json | Google Groups APIのレスポンスデータ |
|
||||
|
||||
### `google_groups_get_member`
|
||||
|
||||
Google グループ内の特定のメンバーの詳細を取得する
|
||||
|
||||
#### 入力
|
||||
|
||||
| パラメータ | 型 | 必須 | 説明 |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `groupKey` | string | はい | グループのメールアドレスまたは一意のグループID |
|
||||
| `memberKey` | string | はい | メンバーのメールアドレスまたは一意のメンバーID |
|
||||
|
||||
#### 出力
|
||||
|
||||
| パラメータ | 型 | 説明 |
|
||||
| --------- | ---- | ----------- |
|
||||
| `output` | json | Google Groups APIのレスポンスデータ |
|
||||
|
||||
### `google_groups_add_member`
|
||||
|
||||
Google グループに新しいメンバーを追加する
|
||||
|
||||
#### 入力
|
||||
|
||||
| パラメータ | 型 | 必須 | 説明 |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `groupKey` | string | はい | グループのメールアドレスまたは一意のグループID |
|
||||
| `email` | string | はい | 追加するメンバーのメールアドレス |
|
||||
| `role` | string | いいえ | メンバーのロール(MEMBER、MANAGER、またはOWNER)。デフォルトはMEMBER。 |
|
||||
|
||||
#### 出力
|
||||
|
||||
| パラメータ | 型 | 説明 |
|
||||
| --------- | ---- | ----------- |
|
||||
| `output` | json | Google Groups APIレスポンスデータ |
|
||||
|
||||
### `google_groups_remove_member`
|
||||
|
||||
Google Groupからメンバーを削除する
|
||||
|
||||
#### 入力
|
||||
|
||||
| パラメータ | 型 | 必須 | 説明 |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `groupKey` | string | はい | グループのメールアドレスまたは一意のグループID |
|
||||
| `memberKey` | string | はい | 削除するメンバーのメールアドレスまたは一意のID |
|
||||
|
||||
#### 出力
|
||||
|
||||
| パラメータ | 型 | 説明 |
|
||||
| --------- | ---- | ----------- |
|
||||
| `output` | json | Google Groups APIレスポンスデータ |
|
||||
|
||||
### `google_groups_update_member`
|
||||
|
||||
メンバーを更新する
|
||||
|
||||
#### 入力
|
||||
|
||||
| パラメータ | 型 | 必須 | 説明 |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `groupKey` | string | はい | グループのメールアドレスまたは一意のグループID |
|
||||
| `memberKey` | string | はい | メンバーのメールアドレスまたは一意のメンバーID |
|
||||
| `role` | string | はい | メンバーの新しい役割 \(MEMBER、MANAGER、またはOWNER\) |
|
||||
|
||||
#### 出力
|
||||
|
||||
| パラメータ | 型 | 説明 |
|
||||
| --------- | ---- | ----------- |
|
||||
| `output` | json | Google Groups APIレスポンスデータ |
|
||||
|
||||
### `google_groups_has_member`
|
||||
|
||||
ユーザーがGoogle Groupのメンバーかどうかを確認する
|
||||
|
||||
#### 入力
|
||||
|
||||
| パラメータ | 型 | 必須 | 説明 |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `groupKey` | string | はい | グループのメールアドレスまたは一意のグループID |
|
||||
| `memberKey` | string | はい | 確認するメンバーのメールアドレスまたは一意のメンバーID |
|
||||
|
||||
#### 出力
|
||||
|
||||
| パラメータ | 型 | 説明 |
|
||||
| --------- | ---- | ----------- |
|
||||
| `output` | json | Google グループ API レスポンスデータ |
|
||||
|
||||
## 注意事項
|
||||
|
||||
- カテゴリー: `tools`
|
||||
- タイプ: `google_groups`
|
||||
@@ -135,684 +135,283 @@ Salesforce CRMからアカウントを削除する
|
||||
|
||||
### `salesforce_get_contacts`
|
||||
|
||||
Salesforceから取引先責任者を取得 - IDが提供されている場合は単一の取引先責任者、そうでない場合はリスト
|
||||
|
||||
#### 入力
|
||||
|
||||
| パラメータ | 型 | 必須 | 説明 |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `idToken` | string | いいえ | 説明なし |
|
||||
| `instanceUrl` | string | いいえ | 説明なし |
|
||||
| `contactId` | string | いいえ | 取引先責任者ID(提供されている場合、単一の取引先責任者を返す) |
|
||||
| `limit` | string | いいえ | 結果の数(デフォルト:100、最大:2000)。リストクエリの場合のみ。 |
|
||||
| `fields` | string | いいえ | カンマ区切りのフィールド(例:"Id,FirstName,LastName,Email,Phone") |
|
||||
| `orderBy` | string | いいえ | 並べ替えるフィールド(例:"LastName ASC")。リストクエリの場合のみ。 |
|
||||
|
||||
#### 出力
|
||||
|
||||
| パラメータ | 型 | 説明 |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | 操作成功ステータス |
|
||||
| `output` | object | 取引先責任者データ |
|
||||
| `output` | json | 操作結果データ |
|
||||
|
||||
### `salesforce_create_contact`
|
||||
|
||||
Salesforce CRMに新しい取引先責任者を作成する
|
||||
|
||||
#### 入力
|
||||
|
||||
| パラメータ | 型 | 必須 | 説明 |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `idToken` | string | いいえ | 説明なし |
|
||||
| `instanceUrl` | string | いいえ | 説明なし |
|
||||
| `lastName` | string | はい | 姓(必須) |
|
||||
| `firstName` | string | いいえ | 名 |
|
||||
| `email` | string | いいえ | メールアドレス |
|
||||
| `phone` | string | いいえ | 電話番号 |
|
||||
| `accountId` | string | いいえ | 関連付ける取引先ID |
|
||||
| `title` | string | いいえ | 説明なし |
|
||||
| `department` | string | いいえ | 部署 |
|
||||
| `mailingStreet` | string | いいえ | 郵送先住所 |
|
||||
| `mailingCity` | string | いいえ | 郵送先市区町村 |
|
||||
| `mailingState` | string | いいえ | 郵送先都道府県 |
|
||||
| `mailingPostalCode` | string | いいえ | 郵送先郵便番号 |
|
||||
| `mailingCountry` | string | いいえ | 郵送先国 |
|
||||
| `description` | string | いいえ | 取引先責任者の説明 |
|
||||
|
||||
#### 出力
|
||||
|
||||
| パラメータ | 型 | 説明 |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | 操作成功ステータス |
|
||||
| `output` | object | 作成された取引先責任者データ |
|
||||
| `output` | json | 操作結果データ |
|
||||
|
||||
### `salesforce_update_contact`
|
||||
|
||||
Salesforce CRMの既存の取引先責任者を更新する
|
||||
|
||||
#### 入力
|
||||
|
||||
| パラメータ | 型 | 必須 | 説明 |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `idToken` | string | いいえ | 説明なし |
|
||||
| `instanceUrl` | string | いいえ | 説明なし |
|
||||
| `contactId` | string | はい | 更新する取引先責任者ID(必須) |
|
||||
| `lastName` | string | いいえ | 姓 |
|
||||
| `firstName` | string | いいえ | 名 |
|
||||
| `email` | string | いいえ | メールアドレス |
|
||||
| `phone` | string | いいえ | 電話番号 |
|
||||
| `accountId` | string | いいえ | 関連付けるアカウントID |
|
||||
| `title` | string | いいえ | 説明なし |
|
||||
| `department` | string | いいえ | 部署 |
|
||||
| `mailingStreet` | string | いいえ | 郵送先住所 |
|
||||
| `mailingCity` | string | いいえ | 郵送先市区町村 |
|
||||
| `mailingState` | string | いいえ | 郵送先都道府県 |
|
||||
| `mailingPostalCode` | string | いいえ | 郵送先郵便番号 |
|
||||
| `mailingCountry` | string | いいえ | 郵送先国 |
|
||||
| `description` | string | いいえ | 説明 |
|
||||
|
||||
#### 出力
|
||||
|
||||
| パラメータ | 型 | 説明 |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | 操作成功ステータス |
|
||||
| `output` | object | 更新された取引先責任者データ |
|
||||
| `output` | json | 操作結果データ |
|
||||
|
||||
### `salesforce_delete_contact`
|
||||
|
||||
Salesforce CRMから取引先責任者を削除する
|
||||
|
||||
#### 入力
|
||||
|
||||
| パラメータ | 型 | 必須 | 説明 |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `idToken` | string | いいえ | 説明なし |
|
||||
| `instanceUrl` | string | いいえ | 説明なし |
|
||||
| `contactId` | string | はい | 削除する取引先責任者ID(必須) |
|
||||
|
||||
#### 出力
|
||||
|
||||
| パラメータ | 型 | 説明 |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | 操作成功ステータス |
|
||||
| `output` | object | 削除された取引先責任者データ |
|
||||
| `output` | json | 操作結果データ |
|
||||
|
||||
### `salesforce_get_leads`
|
||||
|
||||
Salesforceからリードを取得する
|
||||
|
||||
#### 入力
|
||||
|
||||
| パラメータ | 型 | 必須 | 説明 |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `idToken` | string | いいえ | 説明なし |
|
||||
| `instanceUrl` | string | いいえ | 説明なし |
|
||||
| `leadId` | string | いいえ | リードID(オプション) |
|
||||
| `limit` | string | いいえ | 最大結果数(デフォルト:100) |
|
||||
| `fields` | string | いいえ | カンマ区切りフィールド |
|
||||
| `orderBy` | string | いいえ | 並べ替えフィールド |
|
||||
|
||||
#### 出力
|
||||
|
||||
| パラメータ | 型 | 説明 |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | 操作成功ステータス |
|
||||
| `output` | object | リードデータ |
|
||||
| `output` | json | 操作結果データ |
|
||||
|
||||
### `salesforce_create_lead`
|
||||
|
||||
新しいリードを作成する
|
||||
|
||||
#### 入力
|
||||
|
||||
| パラメータ | 型 | 必須 | 説明 |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `idToken` | string | いいえ | 説明なし |
|
||||
| `instanceUrl` | string | いいえ | 説明なし |
|
||||
| `lastName` | string | はい | 姓(必須) |
|
||||
| `company` | string | はい | 会社名(必須) |
|
||||
| `firstName` | string | いいえ | 名 |
|
||||
| `email` | string | いいえ | 説明なし |
|
||||
| `phone` | string | いいえ | 説明なし |
|
||||
| `status` | string | いいえ | リードステータス |
|
||||
| `leadSource` | string | いいえ | リードソース |
|
||||
| `title` | string | いいえ | 説明なし |
|
||||
| `description` | string | いいえ | 説明 |
|
||||
|
||||
#### 出力
|
||||
|
||||
| パラメータ | 型 | 説明 |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | 操作成功ステータス |
|
||||
| `output` | object | 作成されたリード |
|
||||
| `output` | json | 操作結果データ |
|
||||
|
||||
### `salesforce_update_lead`
|
||||
|
||||
既存のリードを更新する
|
||||
|
||||
#### 入力
|
||||
|
||||
| パラメータ | 型 | 必須 | 説明 |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `idToken` | string | いいえ | 説明なし |
|
||||
| `instanceUrl` | string | いいえ | 説明なし |
|
||||
| `leadId` | string | はい | リードID(必須) |
|
||||
| `lastName` | string | いいえ | 姓 |
|
||||
| `company` | string | いいえ | 説明なし |
|
||||
| `firstName` | string | いいえ | 名 |
|
||||
| `email` | string | いいえ | 説明なし |
|
||||
| `phone` | string | いいえ | 説明なし |
|
||||
| `status` | string | いいえ | リードステータス |
|
||||
| `leadSource` | string | いいえ | リードソース |
|
||||
| `title` | string | いいえ | 説明なし |
|
||||
| `description` | string | いいえ | 説明 |
|
||||
|
||||
#### 出力
|
||||
|
||||
| パラメータ | 型 | 説明 |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | 操作成功ステータス |
|
||||
| `output` | object | 更新されたリード |
|
||||
| `output` | json | 操作結果データ |
|
||||
|
||||
### `salesforce_delete_lead`
|
||||
|
||||
リードを削除する
|
||||
|
||||
#### 入力
|
||||
|
||||
| パラメータ | 型 | 必須 | 説明 |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `idToken` | string | いいえ | 説明なし |
|
||||
| `instanceUrl` | string | いいえ | 説明なし |
|
||||
| `leadId` | string | はい | リードID(必須) |
|
||||
|
||||
#### 出力
|
||||
|
||||
| パラメータ | 型 | 説明 |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | 操作成功ステータス |
|
||||
| `output` | object | 削除されたリード |
|
||||
| `output` | json | 操作結果データ |
|
||||
|
||||
### `salesforce_get_opportunities`
|
||||
|
||||
Salesforceから商談を取得する
|
||||
|
||||
#### 入力
|
||||
|
||||
| パラメータ | 型 | 必須 | 説明 |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `idToken` | string | いいえ | 説明なし |
|
||||
| `instanceUrl` | string | いいえ | 説明なし |
|
||||
| `opportunityId` | string | いいえ | 商談ID(オプション) |
|
||||
| `limit` | string | いいえ | 最大結果数(デフォルト:100) |
|
||||
| `fields` | string | いいえ | カンマ区切りのフィールド |
|
||||
| `orderBy` | string | いいえ | 並べ替えフィールド |
|
||||
|
||||
#### 出力
|
||||
|
||||
| パラメータ | 型 | 説明 |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | 操作成功ステータス |
|
||||
| `output` | object | 商談データ |
|
||||
| `output` | json | 操作結果データ |
|
||||
|
||||
### `salesforce_create_opportunity`
|
||||
|
||||
新しい商談を作成する
|
||||
|
||||
#### 入力
|
||||
|
||||
| パラメータ | 型 | 必須 | 説明 |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `idToken` | string | いいえ | 説明なし |
|
||||
| `instanceUrl` | string | いいえ | 説明なし |
|
||||
| `name` | string | はい | 商談名(必須) |
|
||||
| `stageName` | string | はい | ステージ名(必須) |
|
||||
| `closeDate` | string | はい | 完了予定日 YYYY-MM-DD(必須) |
|
||||
| `accountId` | string | いいえ | アカウントID |
|
||||
| `amount` | string | いいえ | 金額(数値) |
|
||||
| `probability` | string | いいえ | 確度(0-100) |
|
||||
| `description` | string | いいえ | 説明 |
|
||||
|
||||
#### 出力
|
||||
|
||||
| パラメータ | 型 | 説明 |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | 操作成功ステータス |
|
||||
| `output` | object | 作成された商談 |
|
||||
| `output` | json | 操作結果データ |
|
||||
|
||||
### `salesforce_update_opportunity`
|
||||
|
||||
既存の商談を更新する
|
||||
|
||||
#### 入力
|
||||
|
||||
| パラメータ | 型 | 必須 | 説明 |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `idToken` | string | いいえ | 説明なし |
|
||||
| `instanceUrl` | string | いいえ | 説明なし |
|
||||
| `opportunityId` | string | はい | 商談ID(必須) |
|
||||
| `name` | string | いいえ | 商談名 |
|
||||
| `stageName` | string | いいえ | ステージ名 |
|
||||
| `closeDate` | string | いいえ | 完了予定日 YYYY-MM-DD |
|
||||
| `accountId` | string | いいえ | アカウントID |
|
||||
| `amount` | string | いいえ | 説明なし |
|
||||
| `probability` | string | いいえ | 確度(0-100) |
|
||||
| `description` | string | いいえ | 説明 |
|
||||
|
||||
#### 出力
|
||||
|
||||
| パラメータ | 型 | 説明 |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | 操作成功ステータス |
|
||||
| `output` | object | 更新された商談 |
|
||||
| `output` | json | 操作結果データ |
|
||||
|
||||
### `salesforce_delete_opportunity`
|
||||
|
||||
商談を削除する
|
||||
|
||||
#### 入力
|
||||
|
||||
| パラメータ | 型 | 必須 | 説明 |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `idToken` | string | いいえ | 説明なし |
|
||||
| `instanceUrl` | string | いいえ | 説明なし |
|
||||
| `opportunityId` | string | はい | 商談ID(必須) |
|
||||
|
||||
#### 出力
|
||||
|
||||
| パラメータ | 型 | 説明 |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | 操作成功ステータス |
|
||||
| `output` | object | 削除された商談 |
|
||||
| `output` | json | 操作結果データ |
|
||||
|
||||
### `salesforce_get_cases`
|
||||
|
||||
Salesforceからケースを取得する
|
||||
|
||||
#### 入力
|
||||
|
||||
| パラメータ | 型 | 必須 | 説明 |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `idToken` | string | いいえ | 説明なし |
|
||||
| `instanceUrl` | string | いいえ | 説明なし |
|
||||
| `caseId` | string | いいえ | ケースID(任意) |
|
||||
| `limit` | string | いいえ | 最大結果数(デフォルト:100) |
|
||||
| `fields` | string | いいえ | カンマ区切りフィールド |
|
||||
| `orderBy` | string | いいえ | 並べ替えフィールド |
|
||||
|
||||
#### 出力
|
||||
|
||||
| パラメータ | 型 | 説明 |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | 成功 |
|
||||
| `output` | object | ケースデータ |
|
||||
| `success` | boolean | 操作成功ステータス |
|
||||
| `output` | json | 操作結果データ |
|
||||
|
||||
### `salesforce_create_case`
|
||||
|
||||
新しいケースを作成する
|
||||
|
||||
#### 入力
|
||||
|
||||
| パラメータ | 型 | 必須 | 説明 |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `idToken` | string | いいえ | 説明なし |
|
||||
| `instanceUrl` | string | いいえ | 説明なし |
|
||||
| `subject` | string | はい | ケース件名(必須) |
|
||||
| `status` | string | いいえ | ステータス(例:新規、対応中、エスカレーション) |
|
||||
| `priority` | string | いいえ | 優先度(例:低、中、高) |
|
||||
| `origin` | string | いいえ | 発生源(例:電話、メール、ウェブ) |
|
||||
| `contactId` | string | いいえ | 取引先責任者ID |
|
||||
| `accountId` | string | いいえ | 取引先ID |
|
||||
| `description` | string | いいえ | 説明 |
|
||||
|
||||
#### 出力
|
||||
|
||||
| パラメータ | 型 | 説明 |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | 成功 |
|
||||
| `output` | object | 作成されたケース |
|
||||
| `success` | boolean | 操作成功ステータス |
|
||||
| `output` | json | 操作結果データ |
|
||||
|
||||
### `salesforce_update_case`
|
||||
|
||||
既存のケースを更新する
|
||||
|
||||
#### 入力
|
||||
|
||||
| パラメータ | 型 | 必須 | 説明 |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `idToken` | string | いいえ | 説明なし |
|
||||
| `instanceUrl` | string | いいえ | 説明なし |
|
||||
| `caseId` | string | はい | ケースID(必須) |
|
||||
| `subject` | string | いいえ | ケース件名 |
|
||||
| `status` | string | いいえ | ステータス |
|
||||
| `priority` | string | いいえ | 優先度 |
|
||||
| `description` | string | いいえ | 説明 |
|
||||
|
||||
#### 出力
|
||||
|
||||
| パラメータ | 型 | 説明 |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | 操作成功ステータス |
|
||||
| `output` | object | 更新されたケース |
|
||||
| `output` | json | 操作結果データ |
|
||||
|
||||
### `salesforce_delete_case`
|
||||
|
||||
ケースを削除する
|
||||
|
||||
#### 入力
|
||||
|
||||
| パラメータ | 型 | 必須 | 説明 |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `idToken` | string | いいえ | 説明なし |
|
||||
| `instanceUrl` | string | いいえ | 説明なし |
|
||||
| `caseId` | string | はい | ケースID(必須) |
|
||||
|
||||
#### 出力
|
||||
|
||||
| パラメータ | 型 | 説明 |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | 操作成功ステータス |
|
||||
| `output` | object | 削除されたケース |
|
||||
| `output` | json | 操作結果データ |
|
||||
|
||||
### `salesforce_get_tasks`
|
||||
|
||||
Salesforceからタスクを取得する
|
||||
|
||||
#### 入力
|
||||
|
||||
| パラメータ | 型 | 必須 | 説明 |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `idToken` | string | いいえ | 説明なし |
|
||||
| `instanceUrl` | string | いいえ | 説明なし |
|
||||
| `taskId` | string | いいえ | タスクID(オプション) |
|
||||
| `limit` | string | いいえ | 最大結果数(デフォルト:100) |
|
||||
| `fields` | string | いいえ | カンマ区切りのフィールド |
|
||||
| `orderBy` | string | いいえ | 並べ替えフィールド |
|
||||
|
||||
#### 出力
|
||||
|
||||
| パラメータ | 型 | 説明 |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | 操作成功ステータス |
|
||||
| `output` | object | タスクデータ |
|
||||
| `output` | json | 操作結果データ |
|
||||
|
||||
### `salesforce_create_task`
|
||||
|
||||
新しいタスクを作成する
|
||||
|
||||
#### 入力
|
||||
|
||||
| パラメータ | 型 | 必須 | 説明 |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `idToken` | string | いいえ | 説明なし |
|
||||
| `instanceUrl` | string | いいえ | 説明なし |
|
||||
| `subject` | string | はい | タスク件名(必須) |
|
||||
| `status` | string | いいえ | ステータス(例:未開始、進行中、完了) |
|
||||
| `priority` | string | いいえ | 優先度(例:低、普通、高) |
|
||||
| `activityDate` | string | いいえ | 期日 YYYY-MM-DD |
|
||||
| `whoId` | string | いいえ | 関連する取引先責任者/リードID |
|
||||
| `whatId` | string | いいえ | 関連する取引先/商談ID |
|
||||
| `description` | string | いいえ | 説明 |
|
||||
|
||||
#### 出力
|
||||
|
||||
| パラメータ | 型 | 説明 |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | 操作成功ステータス |
|
||||
| `output` | object | 作成されたタスク |
|
||||
| `output` | json | 操作結果データ |
|
||||
|
||||
### `salesforce_update_task`
|
||||
|
||||
既存のタスクを更新する
|
||||
|
||||
#### 入力
|
||||
|
||||
| パラメータ | 型 | 必須 | 説明 |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `idToken` | string | いいえ | 説明なし |
|
||||
| `instanceUrl` | string | いいえ | 説明なし |
|
||||
| `taskId` | string | はい | タスクID(必須) |
|
||||
| `subject` | string | いいえ | タスク件名 |
|
||||
| `status` | string | いいえ | ステータス |
|
||||
| `priority` | string | いいえ | 優先度 |
|
||||
| `activityDate` | string | いいえ | 期日 YYYY-MM-DD |
|
||||
| `description` | string | いいえ | 説明 |
|
||||
|
||||
#### 出力
|
||||
|
||||
| パラメータ | 型 | 説明 |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | 成功 |
|
||||
| `output` | object | 更新されたタスク |
|
||||
| `success` | boolean | 操作成功ステータス |
|
||||
| `output` | json | 操作結果データ |
|
||||
|
||||
### `salesforce_delete_task`
|
||||
|
||||
タスクを削除する
|
||||
|
||||
#### 入力
|
||||
|
||||
| パラメータ | 型 | 必須 | 説明 |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `idToken` | string | いいえ | 説明なし |
|
||||
| `instanceUrl` | string | いいえ | 説明なし |
|
||||
| `taskId` | string | はい | タスクID(必須) |
|
||||
|
||||
#### 出力
|
||||
|
||||
| パラメータ | 型 | 説明 |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | 成功 |
|
||||
| `output` | object | 削除されたタスク |
|
||||
|
||||
### `salesforce_list_reports`
|
||||
|
||||
現在のユーザーがアクセスできるレポートのリストを取得する
|
||||
|
||||
#### 入力
|
||||
|
||||
| パラメータ | 型 | 必須 | 説明 |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `idToken` | string | いいえ | 説明なし |
|
||||
| `instanceUrl` | string | いいえ | 説明なし |
|
||||
| `folderName` | string | いいえ | フォルダ名でフィルタリング |
|
||||
| `searchTerm` | string | いいえ | 名前でレポートをフィルタリングする検索語 |
|
||||
|
||||
#### 出力
|
||||
|
||||
| パラメータ | 型 | 説明 |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | 成功ステータス |
|
||||
| `output` | object | レポートデータ |
|
||||
|
||||
### `salesforce_get_report`
|
||||
|
||||
特定のレポートのメタデータと説明情報を取得する
|
||||
|
||||
#### 入力
|
||||
|
||||
| パラメータ | 型 | 必須 | 説明 |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `idToken` | string | いいえ | 説明なし |
|
||||
| `instanceUrl` | string | いいえ | 説明なし |
|
||||
| `reportId` | string | はい | レポートID(必須) |
|
||||
|
||||
#### 出力
|
||||
|
||||
| パラメータ | 型 | 説明 |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | 操作成功ステータス |
|
||||
| `output` | object | レポートメタデータ |
|
||||
|
||||
### `salesforce_run_report`
|
||||
|
||||
レポートを実行して結果を取得する
|
||||
|
||||
#### 入力
|
||||
|
||||
| パラメータ | 型 | 必須 | 説明 |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `idToken` | string | いいえ | 説明なし |
|
||||
| `instanceUrl` | string | いいえ | 説明なし |
|
||||
| `reportId` | string | はい | レポートID(必須) |
|
||||
| `includeDetails` | string | いいえ | 詳細行を含める(true/false、デフォルト:true) |
|
||||
| `filters` | string | いいえ | 適用するレポートフィルターのJSON文字列 |
|
||||
|
||||
#### 出力
|
||||
|
||||
| パラメータ | 型 | 説明 |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | 操作成功ステータス |
|
||||
| `output` | object | レポート結果 |
|
||||
|
||||
### `salesforce_list_report_types`
|
||||
|
||||
利用可能なレポートタイプの一覧を取得する
|
||||
|
||||
#### 入力
|
||||
|
||||
| パラメータ | 型 | 必須 | 説明 |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `idToken` | string | いいえ | 説明なし |
|
||||
| `instanceUrl` | string | いいえ | 説明なし |
|
||||
|
||||
#### 出力
|
||||
|
||||
| パラメータ | 型 | 説明 |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | 操作成功ステータス |
|
||||
| `output` | object | レポートタイプデータ |
|
||||
|
||||
### `salesforce_list_dashboards`
|
||||
|
||||
現在のユーザーがアクセスできるダッシュボードの一覧を取得する
|
||||
|
||||
#### 入力
|
||||
|
||||
| パラメータ | 型 | 必須 | 説明 |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `idToken` | string | いいえ | 説明なし |
|
||||
| `instanceUrl` | string | いいえ | 説明なし |
|
||||
| `folderName` | string | いいえ | フォルダ名でフィルタリング |
|
||||
|
||||
#### 出力
|
||||
|
||||
| パラメータ | 型 | 説明 |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | 操作成功ステータス |
|
||||
| `output` | object | ダッシュボードデータ |
|
||||
|
||||
### `salesforce_get_dashboard`
|
||||
|
||||
特定のダッシュボードの詳細と結果を取得する
|
||||
|
||||
#### 入力
|
||||
|
||||
| パラメータ | 型 | 必須 | 説明 |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `idToken` | string | いいえ | 説明なし |
|
||||
| `instanceUrl` | string | いいえ | 説明なし |
|
||||
| `dashboardId` | string | はい | ダッシュボードID(必須) |
|
||||
|
||||
#### 出力
|
||||
|
||||
| パラメータ | 型 | 説明 |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | 操作成功ステータス |
|
||||
| `output` | object | ダッシュボードデータ |
|
||||
|
||||
### `salesforce_refresh_dashboard`
|
||||
|
||||
最新データを取得するためにダッシュボードを更新する
|
||||
|
||||
#### 入力
|
||||
|
||||
| パラメータ | 型 | 必須 | 説明 |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `idToken` | string | いいえ | 説明なし |
|
||||
| `instanceUrl` | string | いいえ | 説明なし |
|
||||
| `dashboardId` | string | はい | ダッシュボードID(必須) |
|
||||
|
||||
#### 出力
|
||||
|
||||
| パラメータ | 型 | 説明 |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | 操作成功ステータス |
|
||||
| `output` | object | 更新されたダッシュボードデータ |
|
||||
|
||||
### `salesforce_query`
|
||||
|
||||
Salesforceからデータを取得するためのカスタムSOQLクエリを実行する
|
||||
|
||||
#### 入力
|
||||
|
||||
| パラメータ | 型 | 必須 | 説明 |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `idToken` | string | いいえ | 説明なし |
|
||||
| `instanceUrl` | string | いいえ | 説明なし |
|
||||
| `query` | string | はい | 実行するSOQLクエリ(例:SELECT Id, Name FROM Account LIMIT 10) |
|
||||
|
||||
#### 出力
|
||||
|
||||
| パラメータ | 型 | 説明 |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | 操作成功ステータス |
|
||||
| `output` | object | クエリ結果 |
|
||||
|
||||
### `salesforce_query_more`
|
||||
|
||||
前回のクエリからnextRecordsUrlを使用して追加のクエリ結果を取得する
|
||||
|
||||
#### 入力
|
||||
|
||||
| パラメータ | 型 | 必須 | 説明 |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `idToken` | string | いいえ | 説明なし |
|
||||
| `instanceUrl` | string | いいえ | 説明なし |
|
||||
| `nextRecordsUrl` | string | はい | 前回のクエリレスポンスからのnextRecordsUrl |
|
||||
|
||||
#### 出力
|
||||
|
||||
| パラメータ | 型 | 説明 |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | 操作成功ステータス |
|
||||
| `output` | object | クエリ結果 |
|
||||
|
||||
### `salesforce_describe_object`
|
||||
|
||||
Salesforceオブジェクトのメタデータとフィールド情報を取得する
|
||||
|
||||
#### 入力
|
||||
|
||||
| パラメータ | 型 | 必須 | 説明 |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `idToken` | string | いいえ | 説明なし |
|
||||
| `instanceUrl` | string | いいえ | 説明なし |
|
||||
| `objectName` | string | はい | オブジェクトのAPI名(例:Account、Contact、Lead、Custom_Object__c) |
|
||||
|
||||
#### 出力
|
||||
|
||||
| パラメータ | 型 | 説明 |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | 操作成功ステータス |
|
||||
| `output` | object | オブジェクトメタデータ |
|
||||
|
||||
### `salesforce_list_objects`
|
||||
|
||||
利用可能なすべてのSalesforceオブジェクトのリストを取得する
|
||||
|
||||
#### 入力
|
||||
|
||||
| パラメータ | 型 | 必須 | 説明 |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `idToken` | string | いいえ | 説明なし |
|
||||
| `instanceUrl` | string | いいえ | 説明なし |
|
||||
|
||||
#### 出力
|
||||
|
||||
| パラメータ | 型 | 説明 |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | 操作成功ステータス |
|
||||
| `output` | object | オブジェクトリスト |
|
||||
| `output` | json | 操作結果データ |
|
||||
|
||||
## 注意事項
|
||||
|
||||
|
||||
@@ -1,183 +0,0 @@
|
||||
---
|
||||
title: SFTP
|
||||
description: SFTP(SSH File Transfer Protocol)を介してファイルを転送
|
||||
---
|
||||
|
||||
import { BlockInfoCard } from "@/components/ui/block-info-card"
|
||||
|
||||
<BlockInfoCard
|
||||
type="sftp"
|
||||
color="#2D3748"
|
||||
/>
|
||||
|
||||
{/* MANUAL-CONTENT-START:intro */}
|
||||
[SFTP(SSH File Transfer Protocol)](https://en.wikipedia.org/wiki/SSH_File_Transfer_Protocol)は、リモートサーバー上でファイルのアップロード、ダウンロード、管理を可能にする安全なネットワークプロトコルです。SFTPはSSH上で動作し、現代のワークフロー内での自動化された暗号化ファイル転送とリモートファイル管理に最適です。
|
||||
|
||||
SimにSFTPツールを統合することで、AIエージェントと外部システムやサーバー間のファイル移動を簡単に自動化できます。これにより、エージェントは重要なデータ交換、バックアップ、ドキュメント生成、リモートシステムのオーケストレーションを堅牢なセキュリティで管理できるようになります。
|
||||
|
||||
**SFTPツールで利用可能な主要機能:**
|
||||
|
||||
- **ファイルのアップロード:** パスワードとSSH秘密鍵認証の両方をサポートし、ワークフローからリモートサーバーへあらゆるタイプのファイルをシームレスに転送。
|
||||
- **ファイルのダウンロード:** リモートSFTPサーバーから直接ファイルを取得し、処理、アーカイブ、または更なる自動化を行う。
|
||||
- **ファイルの一覧表示と管理:** ディレクトリの列挙、ファイルやフォルダの削除または作成、リモートでのファイルシステム権限の管理。
|
||||
- **柔軟な認証:** 従来のパスワードまたはSSH鍵を使用して接続し、パスフレーズと権限制御をサポート。
|
||||
- **大容量ファイルのサポート:** 安全性のための組み込みサイズ制限付きで、大容量ファイルのアップロードとダウンロードをプログラムで管理。
|
||||
|
||||
SimにSFTPを統合することで、データ収集、レポート作成、リモートシステムのメンテナンス、プラットフォーム間の動的コンテンツ交換など、あらゆるワークフローの一部として安全なファイル操作を自動化できます。
|
||||
|
||||
以下のセクションでは、利用可能な主要なSFTPツールについて説明します:
|
||||
|
||||
- **sftp_upload:** 1つまたは複数のファイルをリモートサーバーにアップロード。
|
||||
- **sftp_download:** リモートサーバーからワークフローにファイルをダウンロード。
|
||||
- **sftp_list:** リモートSFTPサーバー上のディレクトリ内容を一覧表示。
|
||||
- **sftp_delete:** リモートサーバーからファイルまたはディレクトリを削除。
|
||||
- **sftp_create:** リモートSFTPサーバー上に新しいファイルを作成。
|
||||
- **sftp_mkdir:** リモートで新しいディレクトリを作成。
|
||||
|
||||
各操作の詳細な入力パラメータと出力パラメータについては、以下のツールドキュメントをご覧ください。
|
||||
{/* MANUAL-CONTENT-END */}
|
||||
|
||||
## 使用方法
|
||||
|
||||
SFTPを介してリモートサーバーにファイルをアップロード、ダウンロード、一覧表示、管理できます。安全なファイル転送のためにパスワード認証と秘密鍵認証の両方をサポートしています。
|
||||
|
||||
## ツール
|
||||
|
||||
### `sftp_upload`
|
||||
|
||||
リモートSFTPサーバーにファイルをアップロードする
|
||||
|
||||
#### 入力
|
||||
|
||||
| パラメータ | 型 | 必須 | 説明 |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `host` | string | はい | SFTPサーバーのホスト名またはIPアドレス |
|
||||
| `port` | number | はい | SFTPサーバーのポート(デフォルト:22) |
|
||||
| `username` | string | はい | SFTPユーザー名 |
|
||||
| `password` | string | いいえ | 認証用パスワード(秘密鍵を使用しない場合) |
|
||||
| `privateKey` | string | いいえ | 認証用秘密鍵(OpenSSH形式) |
|
||||
| `passphrase` | string | いいえ | 暗号化された秘密鍵のパスフレーズ |
|
||||
| `remotePath` | string | はい | リモートサーバー上の宛先ディレクトリ |
|
||||
| `files` | file[] | いいえ | アップロードするファイル |
|
||||
| `fileContent` | string | いいえ | アップロードする直接ファイルコンテンツ(テキストファイル用) |
|
||||
| `fileName` | string | いいえ | 直接コンテンツを使用する場合のファイル名 |
|
||||
| `overwrite` | boolean | いいえ | 既存のファイルを上書きするかどうか(デフォルト:true) |
|
||||
| `permissions` | string | いいえ | ファイルのパーミッション(例:0644) |
|
||||
|
||||
#### 出力
|
||||
|
||||
| パラメータ | 型 | 説明 |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | アップロードが成功したかどうか |
|
||||
| `uploadedFiles` | json | アップロードされたファイルの詳細の配列(名前、リモートパス、サイズ) |
|
||||
| `message` | string | 操作ステータスメッセージ |
|
||||
|
||||
### `sftp_download`
|
||||
|
||||
リモートSFTPサーバーからファイルをダウンロードする
|
||||
|
||||
#### 入力
|
||||
|
||||
| パラメータ | 型 | 必須 | 説明 |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `host` | string | はい | SFTPサーバーのホスト名またはIPアドレス |
|
||||
| `port` | number | はい | SFTPサーバーのポート(デフォルト:22) |
|
||||
| `username` | string | はい | SFTPユーザー名 |
|
||||
| `password` | string | いいえ | 認証用パスワード(秘密鍵を使用しない場合) |
|
||||
| `privateKey` | string | いいえ | 認証用秘密鍵(OpenSSH形式) |
|
||||
| `passphrase` | string | いいえ | 暗号化された秘密鍵のパスフレーズ |
|
||||
| `remotePath` | string | はい | リモートサーバー上のファイルパス |
|
||||
| `encoding` | string | いいえ | 出力エンコーディング:テキストの場合はutf-8、バイナリの場合はbase64(デフォルト:utf-8) |
|
||||
|
||||
#### 出力
|
||||
|
||||
| パラメータ | 型 | 説明 |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | ダウンロードが成功したかどうか |
|
||||
| `fileName` | string | ダウンロードしたファイルの名前 |
|
||||
| `content` | string | ファイルの内容(テキストまたはbase64エンコード) |
|
||||
| `size` | number | ファイルサイズ(バイト) |
|
||||
| `encoding` | string | コンテンツエンコーディング(utf-8またはbase64) |
|
||||
| `message` | string | 操作ステータスメッセージ |
|
||||
|
||||
### `sftp_list`
|
||||
|
||||
リモートSFTPサーバー上のファイルとディレクトリを一覧表示する
|
||||
|
||||
#### 入力
|
||||
|
||||
| パラメータ | 型 | 必須 | 説明 |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `host` | string | はい | SFTPサーバーのホスト名またはIPアドレス |
|
||||
| `port` | number | はい | SFTPサーバーのポート(デフォルト:22) |
|
||||
| `username` | string | はい | SFTPユーザー名 |
|
||||
| `password` | string | いいえ | 認証用パスワード(秘密鍵を使用しない場合) |
|
||||
| `privateKey` | string | いいえ | 認証用秘密鍵(OpenSSH形式) |
|
||||
| `passphrase` | string | いいえ | 暗号化された秘密鍵のパスフレーズ |
|
||||
| `remotePath` | string | はい | リモートサーバー上のディレクトリパス |
|
||||
| `detailed` | boolean | いいえ | 詳細なファイル情報(サイズ、権限、更新日)を含める |
|
||||
|
||||
#### 出力
|
||||
|
||||
| パラメータ | 型 | 説明 |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | 操作が成功したかどうか |
|
||||
| `path` | string | 一覧表示されたディレクトリパス |
|
||||
| `entries` | json | 名前、タイプ、サイズ、権限、更新日時を含むディレクトリエントリの配列 |
|
||||
| `count` | number | ディレクトリ内のエントリ数 |
|
||||
| `message` | string | 操作のステータスメッセージ |
|
||||
|
||||
### `sftp_delete`
|
||||
|
||||
リモートSFTPサーバー上のファイルまたはディレクトリを削除する
|
||||
|
||||
#### 入力
|
||||
|
||||
| パラメータ | 型 | 必須 | 説明 |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `host` | string | はい | SFTPサーバーのホスト名またはIPアドレス |
|
||||
| `port` | number | はい | SFTPサーバーのポート(デフォルト:22) |
|
||||
| `username` | string | はい | SFTPユーザー名 |
|
||||
| `password` | string | いいえ | 認証用パスワード(秘密鍵を使用しない場合) |
|
||||
| `privateKey` | string | いいえ | 認証用の秘密鍵(OpenSSH形式) |
|
||||
| `passphrase` | string | いいえ | 暗号化された秘密鍵のパスフレーズ |
|
||||
| `remotePath` | string | はい | 削除するファイルまたはディレクトリのパス |
|
||||
| `recursive` | boolean | いいえ | ディレクトリを再帰的に削除する |
|
||||
|
||||
#### 出力
|
||||
|
||||
| パラメータ | 型 | 説明 |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | 削除が成功したかどうか |
|
||||
| `deletedPath` | string | 削除されたパス |
|
||||
| `message` | string | 操作のステータスメッセージ |
|
||||
|
||||
### `sftp_mkdir`
|
||||
|
||||
リモートSFTPサーバーにディレクトリを作成する
|
||||
|
||||
#### 入力
|
||||
|
||||
| パラメータ | 型 | 必須 | 説明 |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `host` | string | はい | SFTPサーバーのホスト名またはIPアドレス |
|
||||
| `port` | number | はい | SFTPサーバーのポート(デフォルト:22) |
|
||||
| `username` | string | はい | SFTPユーザー名 |
|
||||
| `password` | string | いいえ | 認証用パスワード(秘密鍵を使用しない場合) |
|
||||
| `privateKey` | string | いいえ | 認証用秘密鍵(OpenSSH形式) |
|
||||
| `passphrase` | string | いいえ | 暗号化された秘密鍵のパスフレーズ |
|
||||
| `remotePath` | string | はい | 新しいディレクトリのパス |
|
||||
| `recursive` | boolean | いいえ | 親ディレクトリが存在しない場合に作成する |
|
||||
|
||||
#### 出力
|
||||
|
||||
| パラメータ | 型 | 説明 |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | ディレクトリが正常に作成されたかどうか |
|
||||
| `createdPath` | string | 作成されたディレクトリのパス |
|
||||
| `message` | string | 操作のステータスメッセージ |
|
||||
|
||||
## 注意事項
|
||||
|
||||
- カテゴリ: `tools`
|
||||
- タイプ: `sftp`
|
||||
@@ -7,7 +7,7 @@ import { BlockInfoCard } from "@/components/ui/block-info-card"
|
||||
|
||||
<BlockInfoCard
|
||||
type="smtp"
|
||||
color="#2D3748"
|
||||
color="#4A5568"
|
||||
/>
|
||||
|
||||
{/* MANUAL-CONTENT-START:intro */}
|
||||
|
||||
@@ -142,8 +142,8 @@ Function (Process) → Condition (account_type === 'enterprise') → Advanced or
|
||||
|
||||
## 最佳实践
|
||||
|
||||
- **正确排列条件顺序**:将更具体的条件放在一般条件之前,以确保特定逻辑优先于回退逻辑
|
||||
- **在需要时使用 else 分支**:如果没有条件匹配且 else 分支未连接,工作流分支将优雅地结束。如果需要为未匹配的情况提供回退路径,请连接 else 分支
|
||||
- **保持表达式简单**:使用清晰、直观的布尔表达式以提高可读性和调试的便利性
|
||||
- **为条件添加文档说明**:添加描述以解释每个条件的目的,从而提高团队协作和维护效率
|
||||
- **正确排序条件**:将更具体的条件放在一般条件之前,以确保特定逻辑优先于回退逻辑
|
||||
- **包含默认条件**:添加一个兜底条件(`true`)作为最后一个条件,以处理未匹配的情况并防止工作流执行卡住
|
||||
- **保持表达式简单**:使用清晰、直观的布尔表达式以提高可读性并简化调试
|
||||
- **记录条件**:添加描述以解释每个条件的目的,从而提高团队协作和维护效率
|
||||
- **测试边界情况**:通过测试条件范围边界值,验证条件是否正确处理边界值
|
||||
|
||||
@@ -72,7 +72,7 @@ Sim 提供了跨多个类别的 80 多种服务的原生集成:
|
||||
<Video src="introduction/integrations-sidebar.mp4" width={700} height={450} />
|
||||
</div>
|
||||
|
||||
## Copilot
|
||||
## AI 驱动的 Copilot
|
||||
|
||||
**提问并获取指导**
|
||||
Copilot 回答关于 Sim 的问题,解释您的工作流程,并提供改进建议。使用 `@` 符号引用工作流程、模块、文档、知识和日志,以获得上下文帮助。
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
---
|
||||
title: 概览
|
||||
description: 通过智能向量搜索和分块功能上传、处理并搜索您的文档
|
||||
title: 知识库
|
||||
---
|
||||
|
||||
import { Video } from '@/components/ui/video'
|
||||
|
||||
@@ -1,155 +0,0 @@
|
||||
---
|
||||
title: Docker
|
||||
description: 使用 Docker Compose 部署 Sim Studio
|
||||
---
|
||||
|
||||
import { Tab, Tabs } from 'fumadocs-ui/components/tabs'
|
||||
import { Callout } from 'fumadocs-ui/components/callout'
|
||||
|
||||
## 快速开始
|
||||
|
||||
```bash
|
||||
# Clone and start
|
||||
git clone https://github.com/simstudioai/sim.git && cd sim
|
||||
docker compose -f docker-compose.prod.yml up -d
|
||||
```
|
||||
|
||||
打开 [http://localhost:3000](http://localhost:3000)
|
||||
|
||||
## 生产环境设置
|
||||
|
||||
### 1. 配置环境
|
||||
|
||||
```bash
|
||||
# Generate secrets
|
||||
cat > .env << EOF
|
||||
DATABASE_URL=postgresql://postgres:postgres@db:5432/simstudio
|
||||
BETTER_AUTH_SECRET=$(openssl rand -hex 32)
|
||||
ENCRYPTION_KEY=$(openssl rand -hex 32)
|
||||
INTERNAL_API_SECRET=$(openssl rand -hex 32)
|
||||
NEXT_PUBLIC_APP_URL=https://sim.yourdomain.com
|
||||
BETTER_AUTH_URL=https://sim.yourdomain.com
|
||||
NEXT_PUBLIC_SOCKET_URL=https://sim.yourdomain.com
|
||||
EOF
|
||||
```
|
||||
|
||||
### 2. 启动服务
|
||||
|
||||
```bash
|
||||
docker compose -f docker-compose.prod.yml up -d
|
||||
```
|
||||
|
||||
### 3. 设置 SSL
|
||||
|
||||
<Tabs items={['Caddy (推荐)', 'Nginx + Certbot']}>
|
||||
<Tab value="Caddy (推荐)">
|
||||
Caddy 会自动处理 SSL 证书。
|
||||
|
||||
```bash
|
||||
# Install Caddy
|
||||
sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https curl
|
||||
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
|
||||
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list
|
||||
sudo apt update && sudo apt install caddy
|
||||
```
|
||||
|
||||
创建 `/etc/caddy/Caddyfile`:
|
||||
|
||||
```
|
||||
sim.yourdomain.com {
|
||||
reverse_proxy localhost:3000
|
||||
|
||||
handle /socket.io/* {
|
||||
reverse_proxy localhost:3002
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
```bash
|
||||
sudo systemctl restart caddy
|
||||
```
|
||||
|
||||
</Tab>
|
||||
<Tab value="Nginx + Certbot">
|
||||
|
||||
```bash
|
||||
# Install
|
||||
sudo apt install nginx certbot python3-certbot-nginx -y
|
||||
|
||||
# Create /etc/nginx/sites-available/sim
|
||||
server {
|
||||
listen 80;
|
||||
server_name sim.yourdomain.com;
|
||||
|
||||
location / {
|
||||
proxy_pass http://127.0.0.1:3000;
|
||||
proxy_http_version 1.1;
|
||||
proxy_set_header Upgrade $http_upgrade;
|
||||
proxy_set_header Connection 'upgrade';
|
||||
proxy_set_header Host $host;
|
||||
proxy_set_header X-Forwarded-Proto $scheme;
|
||||
}
|
||||
|
||||
location /socket.io/ {
|
||||
proxy_pass http://127.0.0.1:3002;
|
||||
proxy_http_version 1.1;
|
||||
proxy_set_header Upgrade $http_upgrade;
|
||||
proxy_set_header Connection "upgrade";
|
||||
}
|
||||
}
|
||||
|
||||
# Enable and get certificate
|
||||
sudo ln -s /etc/nginx/sites-available/sim /etc/nginx/sites-enabled/
|
||||
sudo certbot --nginx -d sim.yourdomain.com
|
||||
```
|
||||
|
||||
</Tab>
|
||||
</Tabs>
|
||||
|
||||
## Ollama
|
||||
|
||||
```bash
|
||||
# With GPU
|
||||
docker compose -f docker-compose.ollama.yml --profile gpu --profile setup up -d
|
||||
|
||||
# CPU only
|
||||
docker compose -f docker-compose.ollama.yml --profile cpu --profile setup up -d
|
||||
```
|
||||
|
||||
拉取其他模型:
|
||||
|
||||
```bash
|
||||
docker compose -f docker-compose.ollama.yml exec ollama ollama pull llama3.2
|
||||
```
|
||||
|
||||
### 外部 Ollama
|
||||
|
||||
如果 Ollama 在您的主机上运行(而不是在 Docker 中):
|
||||
|
||||
```bash
|
||||
# macOS/Windows
|
||||
OLLAMA_URL=http://host.docker.internal:11434 docker compose -f docker-compose.prod.yml up -d
|
||||
|
||||
# Linux - use your host IP
|
||||
OLLAMA_URL=http://192.168.1.100:11434 docker compose -f docker-compose.prod.yml up -d
|
||||
```
|
||||
|
||||
<Callout type="warning">
|
||||
在 Docker 内,`localhost` 指的是容器,而不是您的主机。请使用 `host.docker.internal` 或您的主机 IP。
|
||||
</Callout>
|
||||
|
||||
## 命令
|
||||
|
||||
```bash
|
||||
# View logs
|
||||
docker compose -f docker-compose.prod.yml logs -f simstudio
|
||||
|
||||
# Stop
|
||||
docker compose -f docker-compose.prod.yml down
|
||||
|
||||
# Update
|
||||
docker compose -f docker-compose.prod.yml pull && docker compose -f docker-compose.prod.yml up -d
|
||||
|
||||
# Backup database
|
||||
docker compose -f docker-compose.prod.yml exec db pg_dump -U postgres simstudio > backup.sql
|
||||
```
|
||||
@@ -1,87 +0,0 @@
|
||||
---
|
||||
title: 环境变量
|
||||
description: Sim Studio 的配置参考
|
||||
---
|
||||
|
||||
import { Callout } from 'fumadocs-ui/components/callout'
|
||||
|
||||
## 必需
|
||||
|
||||
| 变量 | 描述 |
|
||||
|----------|-------------|
|
||||
| `DATABASE_URL` | PostgreSQL 连接字符串 |
|
||||
| `BETTER_AUTH_SECRET` | 认证密钥(32 个十六进制字符):`openssl rand -hex 32` |
|
||||
| `BETTER_AUTH_URL` | 您的应用程序 URL |
|
||||
| `ENCRYPTION_KEY` | 加密密钥(32 个十六进制字符):`openssl rand -hex 32` |
|
||||
| `INTERNAL_API_SECRET` | 内部 API 密钥(32 个十六进制字符):`openssl rand -hex 32` |
|
||||
| `NEXT_PUBLIC_APP_URL` | 公共应用程序 URL |
|
||||
| `NEXT_PUBLIC_SOCKET_URL` | WebSocket URL(默认值:`http://localhost:3002`) |
|
||||
|
||||
## AI 提供商
|
||||
|
||||
| 变量 | 提供商 |
|
||||
|----------|----------|
|
||||
| `OPENAI_API_KEY` | OpenAI |
|
||||
| `ANTHROPIC_API_KEY_1` | Anthropic Claude |
|
||||
| `GEMINI_API_KEY_1` | Google Gemini |
|
||||
| `MISTRAL_API_KEY` | Mistral |
|
||||
| `OLLAMA_URL` | Ollama(默认值:`http://localhost:11434`) |
|
||||
|
||||
<Callout type="info">
|
||||
为了负载均衡,请添加带有 `_1`、`_2`、`_3` 后缀的多个密钥(例如,`OPENAI_API_KEY_1`、`OPENAI_API_KEY_2`)。适用于 OpenAI、Anthropic 和 Gemini。
|
||||
</Callout>
|
||||
|
||||
<Callout type="info">
|
||||
在 Docker 中,使用 `OLLAMA_URL=http://host.docker.internal:11434` 作为主机机器的 Ollama。
|
||||
</Callout>
|
||||
|
||||
### Azure OpenAI
|
||||
|
||||
| 变量 | 描述 |
|
||||
|----------|-------------|
|
||||
| `AZURE_OPENAI_API_KEY` | Azure OpenAI API 密钥 |
|
||||
| `AZURE_OPENAI_ENDPOINT` | Azure OpenAI 端点 URL |
|
||||
| `AZURE_OPENAI_API_VERSION` | API 版本(例如,`2024-02-15-preview`) |
|
||||
|
||||
### vLLM(自托管)
|
||||
|
||||
| 变量 | 描述 |
|
||||
|----------|-------------|
|
||||
| `VLLM_BASE_URL` | vLLM 服务器 URL(例如,`http://localhost:8000/v1`) |
|
||||
| `VLLM_API_KEY` | vLLM 的可选 Bearer Token |
|
||||
|
||||
## OAuth 提供商
|
||||
|
||||
| 变量 | 描述 |
|
||||
|----------|-------------|
|
||||
| `GOOGLE_CLIENT_ID` | Google OAuth 客户端 ID |
|
||||
| `GOOGLE_CLIENT_SECRET` | Google OAuth 客户端密钥 |
|
||||
| `GITHUB_CLIENT_ID` | GitHub OAuth 客户端 ID |
|
||||
| `GITHUB_CLIENT_SECRET` | GitHub OAuth 客户端密钥 |
|
||||
|
||||
## 可选
|
||||
|
||||
| 变量 | 描述 |
|
||||
|----------|-------------|
|
||||
| `API_ENCRYPTION_KEY` | 加密存储的 API 密钥(32 个十六进制字符):`openssl rand -hex 32` |
|
||||
| `COPILOT_API_KEY` | 用于 copilot 功能的 API 密钥 |
|
||||
| `ADMIN_API_KEY` | 用于 GitOps 操作的管理员 API 密钥 |
|
||||
| `RESEND_API_KEY` | 用于通知的电子邮件服务 |
|
||||
| `ALLOWED_LOGIN_DOMAINS` | 限制注册到特定域(逗号分隔) |
|
||||
| `ALLOWED_LOGIN_EMAILS` | 限制注册到特定电子邮件(逗号分隔) |
|
||||
| `DISABLE_REGISTRATION` | 设置为 `true` 以禁用新用户注册 |
|
||||
|
||||
## 示例 .env
|
||||
|
||||
```bash
|
||||
DATABASE_URL=postgresql://postgres:postgres@db:5432/simstudio
|
||||
BETTER_AUTH_SECRET=<openssl rand -hex 32>
|
||||
BETTER_AUTH_URL=https://sim.yourdomain.com
|
||||
ENCRYPTION_KEY=<openssl rand -hex 32>
|
||||
INTERNAL_API_SECRET=<openssl rand -hex 32>
|
||||
NEXT_PUBLIC_APP_URL=https://sim.yourdomain.com
|
||||
NEXT_PUBLIC_SOCKET_URL=https://sim.yourdomain.com
|
||||
OPENAI_API_KEY=sk-...
|
||||
```
|
||||
|
||||
查看 `apps/sim/.env.example` 以获取所有选项。
|
||||
@@ -1,50 +0,0 @@
|
||||
---
|
||||
title: 自托管
|
||||
description: 在您自己的基础设施上部署 Sim Studio
|
||||
---
|
||||
|
||||
import { Card, Cards } from 'fumadocs-ui/components/card'
|
||||
import { Callout } from 'fumadocs-ui/components/callout'
|
||||
|
||||
使用 Docker 或 Kubernetes 在您自己的基础设施上部署 Sim Studio。
|
||||
|
||||
## 要求
|
||||
|
||||
| 资源 | 最低要求 | 推荐配置 |
|
||||
|----------|---------|-------------|
|
||||
| CPU | 2 核 | 4 核及以上 |
|
||||
| 内存 | 12 GB | 16 GB 及以上 |
|
||||
| 存储 | 20 GB SSD | 50 GB 及以上 SSD |
|
||||
| Docker | 20.10+ | 最新版本 |
|
||||
|
||||
## 快速开始
|
||||
|
||||
```bash
|
||||
git clone https://github.com/simstudioai/sim.git && cd sim
|
||||
docker compose -f docker-compose.prod.yml up -d
|
||||
```
|
||||
|
||||
打开 [http://localhost:3000](http://localhost:3000)
|
||||
|
||||
## 部署选项
|
||||
|
||||
<Cards>
|
||||
<Card title="Docker" href="/self-hosting/docker">
|
||||
使用 Docker Compose 在任何服务器上部署
|
||||
</Card>
|
||||
<Card title="Kubernetes" href="/self-hosting/kubernetes">
|
||||
使用 Helm 在 Kubernetes 集群上部署
|
||||
</Card>
|
||||
<Card title="Cloud Platforms" href="/self-hosting/platforms">
|
||||
Railway、DigitalOcean、AWS、Azure、GCP 指南
|
||||
</Card>
|
||||
</Cards>
|
||||
|
||||
## 架构
|
||||
|
||||
| 组件 | 端口 | 描述 |
|
||||
|-----------|------|-------------|
|
||||
| simstudio | 3000 | 主应用程序 |
|
||||
| realtime | 3002 | WebSocket 服务器 |
|
||||
| db | 5432 | 带有 pgvector 的 PostgreSQL |
|
||||
| migrations | - | 数据库迁移(运行一次) |
|
||||
@@ -1,133 +0,0 @@
|
||||
---
|
||||
title: Kubernetes
|
||||
description: 使用 Helm 部署 Sim Studio
|
||||
---
|
||||
|
||||
import { Tab, Tabs } from 'fumadocs-ui/components/tabs'
|
||||
import { Callout } from 'fumadocs-ui/components/callout'
|
||||
|
||||
## 前置条件
|
||||
|
||||
- Kubernetes 1.19+
|
||||
- Helm 3.0+
|
||||
- 支持 PV 提供程序
|
||||
|
||||
## 安装
|
||||
|
||||
```bash
|
||||
# Clone repo
|
||||
git clone https://github.com/simstudioai/sim.git && cd sim
|
||||
|
||||
# Generate secrets
|
||||
BETTER_AUTH_SECRET=$(openssl rand -hex 32)
|
||||
ENCRYPTION_KEY=$(openssl rand -hex 32)
|
||||
INTERNAL_API_SECRET=$(openssl rand -hex 32)
|
||||
|
||||
# Install
|
||||
helm install sim ./helm/sim \
|
||||
--set app.env.BETTER_AUTH_SECRET="$BETTER_AUTH_SECRET" \
|
||||
--set app.env.ENCRYPTION_KEY="$ENCRYPTION_KEY" \
|
||||
--set app.env.INTERNAL_API_SECRET="$INTERNAL_API_SECRET" \
|
||||
--namespace simstudio --create-namespace
|
||||
```
|
||||
|
||||
## 云特定值
|
||||
|
||||
<Tabs items={['AWS EKS', 'Azure AKS', 'GCP GKE']}>
|
||||
<Tab value="AWS EKS">
|
||||
|
||||
```bash
|
||||
helm install sim ./helm/sim \
|
||||
--values ./helm/sim/examples/values-aws.yaml \
|
||||
--set app.env.BETTER_AUTH_SECRET="$BETTER_AUTH_SECRET" \
|
||||
--set app.env.ENCRYPTION_KEY="$ENCRYPTION_KEY" \
|
||||
--set app.env.INTERNAL_API_SECRET="$INTERNAL_API_SECRET" \
|
||||
--set app.env.NEXT_PUBLIC_APP_URL="https://sim.yourdomain.com" \
|
||||
--namespace simstudio --create-namespace
|
||||
```
|
||||
|
||||
</Tab>
|
||||
<Tab value="Azure AKS">
|
||||
|
||||
```bash
|
||||
helm install sim ./helm/sim \
|
||||
--values ./helm/sim/examples/values-azure.yaml \
|
||||
--set app.env.BETTER_AUTH_SECRET="$BETTER_AUTH_SECRET" \
|
||||
--set app.env.ENCRYPTION_KEY="$ENCRYPTION_KEY" \
|
||||
--set app.env.INTERNAL_API_SECRET="$INTERNAL_API_SECRET" \
|
||||
--set app.env.NEXT_PUBLIC_APP_URL="https://sim.yourdomain.com" \
|
||||
--namespace simstudio --create-namespace
|
||||
```
|
||||
|
||||
</Tab>
|
||||
<Tab value="GCP GKE">
|
||||
|
||||
```bash
|
||||
helm install sim ./helm/sim \
|
||||
--values ./helm/sim/examples/values-gcp.yaml \
|
||||
--set app.env.BETTER_AUTH_SECRET="$BETTER_AUTH_SECRET" \
|
||||
--set app.env.ENCRYPTION_KEY="$ENCRYPTION_KEY" \
|
||||
--set app.env.INTERNAL_API_SECRET="$INTERNAL_API_SECRET" \
|
||||
--set app.env.NEXT_PUBLIC_APP_URL="https://sim.yourdomain.com" \
|
||||
--namespace simstudio --create-namespace
|
||||
```
|
||||
|
||||
</Tab>
|
||||
</Tabs>
|
||||
|
||||
## 关键配置
|
||||
|
||||
```yaml
|
||||
# Custom values.yaml
|
||||
app:
|
||||
replicaCount: 2
|
||||
env:
|
||||
NEXT_PUBLIC_APP_URL: "https://sim.yourdomain.com"
|
||||
OPENAI_API_KEY: "sk-..."
|
||||
|
||||
postgresql:
|
||||
persistence:
|
||||
size: 50Gi
|
||||
|
||||
ingress:
|
||||
enabled: true
|
||||
className: nginx
|
||||
tls:
|
||||
enabled: true
|
||||
app:
|
||||
host: sim.yourdomain.com
|
||||
```
|
||||
|
||||
查看 `helm/sim/values.yaml` 了解所有选项。
|
||||
|
||||
## 外部数据库
|
||||
|
||||
```yaml
|
||||
postgresql:
|
||||
enabled: false
|
||||
|
||||
externalDatabase:
|
||||
enabled: true
|
||||
host: "your-db-host"
|
||||
port: 5432
|
||||
username: "postgres"
|
||||
password: "your-password"
|
||||
database: "simstudio"
|
||||
sslMode: "require"
|
||||
```
|
||||
|
||||
## 命令
|
||||
|
||||
```bash
|
||||
# Port forward for local access
|
||||
kubectl port-forward deployment/sim-sim-app 3000:3000 -n simstudio
|
||||
|
||||
# View logs
|
||||
kubectl logs -l app.kubernetes.io/component=app -n simstudio --tail=100
|
||||
|
||||
# Upgrade
|
||||
helm upgrade sim ./helm/sim --namespace simstudio
|
||||
|
||||
# Uninstall
|
||||
helm uninstall sim --namespace simstudio
|
||||
```
|
||||
@@ -1,124 +0,0 @@
|
||||
---
|
||||
title: 云平台
|
||||
description: 在云平台上部署 Sim Studio
|
||||
---
|
||||
|
||||
import { Tab, Tabs } from 'fumadocs-ui/components/tabs'
|
||||
import { Callout } from 'fumadocs-ui/components/callout'
|
||||
|
||||
## Railway
|
||||
|
||||
一键部署并自动配置 PostgreSQL。
|
||||
|
||||
[
|
||||
|
||||

|
||||
|
||||
](https://railway.com/new/template/sim-studio)
|
||||
|
||||
部署后,在 Railway 仪表板中添加环境变量:
|
||||
- `BETTER_AUTH_SECRET`, `ENCRYPTION_KEY`, `INTERNAL_API_SECRET`(自动生成)
|
||||
- `OPENAI_API_KEY` 或其他 AI 提供商密钥
|
||||
- 自定义域名:设置 → 网络
|
||||
|
||||
## VPS 部署
|
||||
|
||||
适用于 DigitalOcean、AWS EC2、Azure VMs 或任何 Linux 服务器:
|
||||
|
||||
<Tabs items={['DigitalOcean', 'AWS EC2', 'Azure VM']}>
|
||||
<Tab value="DigitalOcean">
|
||||
**推荐配置:** 16 GB RAM Droplet,Ubuntu 24.04
|
||||
|
||||
```bash
|
||||
# Create Droplet via console, then SSH in
|
||||
ssh root@your-droplet-ip
|
||||
```
|
||||
|
||||
</Tab>
|
||||
<Tab value="AWS EC2">
|
||||
**推荐配置:** t3.xlarge(16 GB RAM),Ubuntu 24.04
|
||||
|
||||
```bash
|
||||
ssh -i your-key.pem ubuntu@your-ec2-ip
|
||||
```
|
||||
|
||||
</Tab>
|
||||
<Tab value="Azure VM">
|
||||
**推荐配置:** Standard_D4s_v3(16 GB RAM),Ubuntu 24.04
|
||||
|
||||
```bash
|
||||
ssh azureuser@your-vm-ip
|
||||
```
|
||||
|
||||
</Tab>
|
||||
</Tabs>
|
||||
|
||||
### 安装 Docker
|
||||
|
||||
```bash
|
||||
# Install Docker (official method)
|
||||
curl -fsSL https://get.docker.com | sudo sh
|
||||
sudo usermod -aG docker $USER
|
||||
|
||||
# Logout and reconnect, then verify
|
||||
docker --version
|
||||
```
|
||||
|
||||
### 部署 Sim Studio
|
||||
|
||||
```bash
|
||||
git clone https://github.com/simstudioai/sim.git && cd sim
|
||||
|
||||
# Create .env with secrets
|
||||
cat > .env << EOF
|
||||
DATABASE_URL=postgresql://postgres:postgres@db:5432/simstudio
|
||||
BETTER_AUTH_SECRET=$(openssl rand -hex 32)
|
||||
ENCRYPTION_KEY=$(openssl rand -hex 32)
|
||||
INTERNAL_API_SECRET=$(openssl rand -hex 32)
|
||||
NEXT_PUBLIC_APP_URL=https://sim.yourdomain.com
|
||||
BETTER_AUTH_URL=https://sim.yourdomain.com
|
||||
NEXT_PUBLIC_SOCKET_URL=https://sim.yourdomain.com
|
||||
EOF
|
||||
|
||||
# Start
|
||||
docker compose -f docker-compose.prod.yml up -d
|
||||
```
|
||||
|
||||
### 使用 Caddy 配置 SSL
|
||||
|
||||
```bash
|
||||
# Install Caddy
|
||||
sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https curl
|
||||
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
|
||||
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list
|
||||
sudo apt update && sudo apt install caddy
|
||||
|
||||
# Configure (replace domain)
|
||||
echo 'sim.yourdomain.com {
|
||||
reverse_proxy localhost:3000
|
||||
handle /socket.io/* {
|
||||
reverse_proxy localhost:3002
|
||||
}
|
||||
}' | sudo tee /etc/caddy/Caddyfile
|
||||
|
||||
sudo systemctl restart caddy
|
||||
```
|
||||
|
||||
将您的域名的 DNS A 记录指向您的服务器 IP。
|
||||
|
||||
## Kubernetes(EKS、AKS、GKE)
|
||||
|
||||
有关在托管 Kubernetes 上使用 Helm 部署的详细信息,请参阅 [Kubernetes 指南](/self-hosting/kubernetes)。
|
||||
|
||||
## 托管数据库(可选)
|
||||
|
||||
在生产环境中,请使用托管的 PostgreSQL 服务:
|
||||
|
||||
- **AWS RDS** / **Azure Database** / **Cloud SQL** - 启用 pgvector 扩展
|
||||
- **Supabase** / **Neon** - 已包含 pgvector
|
||||
|
||||
在您的环境中设置 `DATABASE_URL`:
|
||||
|
||||
```bash
|
||||
DATABASE_URL="postgresql://user:pass@host:5432/db?sslmode=require"
|
||||
```
|
||||
@@ -1,113 +0,0 @@
|
||||
---
|
||||
title: 故障排除
|
||||
description: 常见问题及解决方案
|
||||
---
|
||||
|
||||
## 数据库连接失败
|
||||
|
||||
```bash
|
||||
# Check database is running
|
||||
docker compose ps db
|
||||
|
||||
# Test connection
|
||||
docker compose exec db psql -U postgres -c "SELECT 1"
|
||||
```
|
||||
|
||||
验证 `DATABASE_URL` 格式:`postgresql://user:pass@host:5432/database`
|
||||
|
||||
## Ollama 模型未显示
|
||||
|
||||
在 Docker 中,`localhost` = 容器,而不是您的主机。
|
||||
|
||||
```bash
|
||||
# For host-machine Ollama, use:
|
||||
OLLAMA_URL=http://host.docker.internal:11434 # macOS/Windows
|
||||
OLLAMA_URL=http://192.168.1.x:11434 # Linux (use actual IP)
|
||||
```
|
||||
|
||||
## WebSocket/实时功能无法正常工作
|
||||
|
||||
1. 检查 `NEXT_PUBLIC_SOCKET_URL` 是否与您的域名匹配
|
||||
2. 验证实时服务是否正在运行:`docker compose ps realtime`
|
||||
3. 确保反向代理支持 WebSocket 升级(参见 [Docker 指南](/self-hosting/docker))
|
||||
|
||||
## 502 错误网关
|
||||
|
||||
```bash
|
||||
# Check app is running
|
||||
docker compose ps simstudio
|
||||
docker compose logs simstudio
|
||||
|
||||
# Common causes: out of memory, database not ready
|
||||
```
|
||||
|
||||
## 迁移错误
|
||||
|
||||
```bash
|
||||
# View migration logs
|
||||
docker compose logs migrations
|
||||
|
||||
# Run manually
|
||||
docker compose exec simstudio bun run db:migrate
|
||||
```
|
||||
|
||||
## 找不到 pgvector
|
||||
|
||||
使用正确的 PostgreSQL 镜像:
|
||||
|
||||
```yaml
|
||||
image: pgvector/pgvector:pg17 # NOT postgres:17
|
||||
```
|
||||
|
||||
## 证书错误 (CERT_HAS_EXPIRED)
|
||||
|
||||
如果调用外部 API 时出现 SSL 证书错误:
|
||||
|
||||
```bash
|
||||
# Update CA certificates in container
|
||||
docker compose exec simstudio apt-get update && apt-get install -y ca-certificates
|
||||
|
||||
# Or set in environment (not recommended for production)
|
||||
NODE_TLS_REJECT_UNAUTHORIZED=0
|
||||
```
|
||||
|
||||
## 登录后出现空白页面
|
||||
|
||||
1. 检查浏览器控制台是否有错误
|
||||
2. 验证 `NEXT_PUBLIC_APP_URL` 是否与您的实际域名匹配
|
||||
3. 清除浏览器的 Cookie 和本地存储
|
||||
4. 检查所有服务是否正在运行:`docker compose ps`
|
||||
|
||||
## Windows 特定问题
|
||||
|
||||
**Windows 上的 Turbopack 错误:**
|
||||
|
||||
```bash
|
||||
# Use WSL2 for better compatibility
|
||||
wsl --install
|
||||
|
||||
# Or disable Turbopack in package.json
|
||||
# Change "next dev --turbopack" to "next dev"
|
||||
```
|
||||
|
||||
**行尾问题:**
|
||||
|
||||
```bash
|
||||
# Configure git to use LF
|
||||
git config --global core.autocrlf input
|
||||
```
|
||||
|
||||
## 查看日志
|
||||
|
||||
```bash
|
||||
# All services
|
||||
docker compose logs -f
|
||||
|
||||
# Specific service
|
||||
docker compose logs -f simstudio
|
||||
```
|
||||
|
||||
## 获取帮助
|
||||
|
||||
- [GitHub Issues](https://github.com/simstudioai/sim/issues)
|
||||
- [Discord](https://discord.gg/Hr4UWYEcTT)
|
||||
@@ -1,181 +0,0 @@
|
||||
---
|
||||
title: Cursor
|
||||
description: 启动并管理 Cursor 云代理以处理 GitHub 仓库
|
||||
---
|
||||
|
||||
import { BlockInfoCard } from "@/components/ui/block-info-card"
|
||||
|
||||
<BlockInfoCard
|
||||
type="cursor"
|
||||
color="#1E1E1E"
|
||||
/>
|
||||
|
||||
{/* MANUAL-CONTENT-START:intro */}
|
||||
[Cursor](https://www.cursor.so/) 是一个 AI 集成开发环境(IDE)和基于云的平台,允许您启动和管理能够直接在您的 GitHub 仓库上工作的强大 AI 代理。Cursor 代理可以自动化开发任务,提高团队的生产力,并通过进行代码更改、响应自然语言指令以及维护其活动的对话历史与您协作。
|
||||
|
||||
使用 Cursor,您可以:
|
||||
|
||||
- **为代码库启动云代理**:即时创建在云端处理您仓库的 AI 代理
|
||||
- **使用自然语言委派编码任务**:通过书面指令、修改和澄清来指导代理
|
||||
- **监控进度和输出**:获取代理状态,查看详细结果,并检查当前或已完成的任务
|
||||
- **访问完整的对话历史**:审查所有提示和 AI 响应,以确保透明性和可审计性
|
||||
- **控制和管理代理生命周期**:列出活动代理,终止代理,并管理基于 API 的代理启动和后续操作
|
||||
|
||||
在 Sim 中,Cursor 集成使您的代理和工作流能够以编程方式与 Cursor 云代理交互。这意味着您可以使用 Sim 来:
|
||||
|
||||
- 列出所有云代理并浏览其当前状态(`cursor_list_agents`)
|
||||
- 获取任何代理的最新状态和输出(`cursor_get_agent`)
|
||||
- 查看任何编码代理的完整对话历史(`cursor_get_conversation`)
|
||||
- 为正在运行的代理添加后续指令或新提示
|
||||
- 根据需要管理和终止代理
|
||||
|
||||
此集成帮助您将 Sim 代理的灵活智能与 Cursor 的强大开发自动化功能相结合,使您能够在项目中扩展 AI 驱动的开发。
|
||||
{/* MANUAL-CONTENT-END */}
|
||||
|
||||
## 使用说明
|
||||
|
||||
与 Cursor 云代理 API 交互,启动可以在您的 GitHub 仓库上工作的 AI 代理。支持启动代理、添加后续指令、检查状态、查看对话以及管理代理生命周期。
|
||||
|
||||
## 工具
|
||||
|
||||
### `cursor_list_agents`
|
||||
|
||||
列出经过身份验证的用户的所有云代理,并支持可选的分页功能。
|
||||
|
||||
#### 输入
|
||||
|
||||
| 参数 | 类型 | 必需 | 描述 |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `apiKey` | string | 是 | Cursor API 密钥 |
|
||||
| `limit` | number | 否 | 要返回的代理数量 \(默认值:20,最大值:100\) |
|
||||
| `cursor` | string | 否 | 上一个响应的分页游标 |
|
||||
|
||||
#### 输出
|
||||
|
||||
| 参数 | 类型 | 描述 |
|
||||
| --------- | ---- | ----------- |
|
||||
| `content` | string | 可读的代理列表 |
|
||||
| `metadata` | object | 代理列表元数据 |
|
||||
|
||||
### `cursor_get_agent`
|
||||
|
||||
检索云代理的当前状态和结果。
|
||||
|
||||
#### 输入
|
||||
|
||||
| 参数 | 类型 | 必需 | 描述 |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `apiKey` | string | 是 | Cursor API 密钥 |
|
||||
| `agentId` | string | 是 | 云代理的唯一标识符 \(例如,bc_abc123\) |
|
||||
|
||||
#### 输出
|
||||
|
||||
| 参数 | 类型 | 描述 |
|
||||
| --------- | ---- | ----------- |
|
||||
| `content` | string | 可读的代理详细信息 |
|
||||
| `metadata` | object | 代理元数据 |
|
||||
|
||||
### `cursor_get_conversation`
|
||||
|
||||
检索云代理的对话历史,包括所有用户提示和助手响应。
|
||||
|
||||
#### 输入
|
||||
|
||||
| 参数 | 类型 | 必需 | 描述 |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `apiKey` | string | 是 | Cursor API 密钥 |
|
||||
| `agentId` | string | 是 | 云代理的唯一标识符 \(例如,bc_abc123\) |
|
||||
|
||||
#### 输出
|
||||
|
||||
| 参数 | 类型 | 描述 |
|
||||
| --------- | ---- | ----------- |
|
||||
| `content` | string | 可读的对话历史 |
|
||||
| `metadata` | object | 对话元数据 |
|
||||
|
||||
### `cursor_launch_agent`
|
||||
|
||||
启动一个新的云代理,根据给定的指令处理 GitHub 仓库。
|
||||
|
||||
#### 输入
|
||||
|
||||
| 参数 | 类型 | 必需 | 描述 |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `apiKey` | string | 是 | Cursor API 密钥 |
|
||||
| `repository` | string | 是 | GitHub 仓库 URL \(例如,https://github.com/your-org/your-repo\) |
|
||||
| `ref` | string | 否 | 要处理的分支、标签或提交 \(默认为默认分支\) |
|
||||
| `promptText` | string | 是 | 代理的指令文本 |
|
||||
| `promptImages` | string | 否 | 包含 base64 数据和尺寸的图像对象的 JSON 数组 |
|
||||
| `model` | string | 否 | 要使用的模型 \(留空以自动选择\) |
|
||||
| `branchName` | string | 否 | 代理使用的自定义分支名称 |
|
||||
| `autoCreatePr` | boolean | 否 | 当代理完成时自动创建 PR |
|
||||
| `openAsCursorGithubApp` | boolean | 否 | 以 Cursor GitHub App 的身份打开 PR |
|
||||
| `skipReviewerRequest` | boolean | 否 | 跳过在 PR 上请求审阅者 |
|
||||
|
||||
#### 输出
|
||||
|
||||
| 参数 | 类型 | 描述 |
|
||||
| --------- | ---- | ----------- |
|
||||
| `content` | string | 包含代理详细信息的成功消息 |
|
||||
| `metadata` | object | 启动结果的元数据 |
|
||||
|
||||
### `cursor_add_followup`
|
||||
|
||||
为现有的云代理添加后续指令。
|
||||
|
||||
#### 输入
|
||||
|
||||
| 参数 | 类型 | 必需 | 描述 |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `apiKey` | string | 是 | Cursor API 密钥 |
|
||||
| `agentId` | string | 是 | 云代理的唯一标识符 \(例如,bc_abc123\) |
|
||||
| `followupPromptText` | string | 是 | 代理的后续指令文本 |
|
||||
| `promptImages` | string | 否 | 包含 base64 数据和尺寸的图像对象的 JSON 数组 \(最多 5 个\) |
|
||||
|
||||
#### 输出
|
||||
|
||||
| 参数 | 类型 | 描述 |
|
||||
| --------- | ---- | ----------- |
|
||||
| `content` | string | 成功消息 |
|
||||
| `metadata` | object | 结果元数据 |
|
||||
|
||||
### `cursor_stop_agent`
|
||||
|
||||
停止运行中的云代理。这将暂停代理,但不会删除它。
|
||||
|
||||
#### 输入
|
||||
|
||||
| 参数 | 类型 | 必需 | 描述 |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `apiKey` | string | 是 | Cursor API 密钥 |
|
||||
| `agentId` | string | 是 | 云代理的唯一标识符 \(例如:bc_abc123\) |
|
||||
|
||||
#### 输出
|
||||
|
||||
| 参数 | 类型 | 描述 |
|
||||
| --------- | ---- | ----------- |
|
||||
| `content` | string | 成功消息 |
|
||||
| `metadata` | object | 结果元数据 |
|
||||
|
||||
### `cursor_delete_agent`
|
||||
|
||||
永久删除云代理。此操作无法撤销。
|
||||
|
||||
#### 输入
|
||||
|
||||
| 参数 | 类型 | 必需 | 描述 |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `apiKey` | string | 是 | Cursor API 密钥 |
|
||||
| `agentId` | string | 是 | 云代理的唯一标识符 \(例如,bc_abc123\) |
|
||||
|
||||
#### 输出
|
||||
|
||||
| 参数 | 类型 | 描述 |
|
||||
| --------- | ---- | ----------- |
|
||||
| `content` | string | 成功消息 |
|
||||
| `metadata` | object | 结果元数据 |
|
||||
|
||||
## 注意事项
|
||||
|
||||
- 类别:`tools`
|
||||
- 类型:`cursor`
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user