mirror of
https://github.com/simstudioai/sim.git
synced 2026-01-09 23:17:59 -05:00
Compare commits
1 Commits
v0.5.46
...
improvemen
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
e6c7bd3534 |
19
.github/workflows/test-build.yml
vendored
19
.github/workflows/test-build.yml
vendored
@@ -23,17 +23,16 @@ jobs:
|
||||
with:
|
||||
node-version: latest
|
||||
|
||||
- name: Mount Bun cache (Sticky Disk)
|
||||
uses: useblacksmith/stickydisk@v1
|
||||
- name: Cache Bun dependencies
|
||||
uses: actions/cache@v4
|
||||
with:
|
||||
key: ${{ github.repository }}-bun-cache
|
||||
path: ~/.bun/install/cache
|
||||
|
||||
- name: Mount node_modules (Sticky Disk)
|
||||
uses: useblacksmith/stickydisk@v1
|
||||
with:
|
||||
key: ${{ github.repository }}-node-modules
|
||||
path: ./node_modules
|
||||
path: |
|
||||
~/.bun/install/cache
|
||||
node_modules
|
||||
**/node_modules
|
||||
key: ${{ runner.os }}-bun-${{ hashFiles('**/bun.lock') }}
|
||||
restore-keys: |
|
||||
${{ runner.os }}-bun-
|
||||
|
||||
- name: Install dependencies
|
||||
run: bun install --frozen-lockfile
|
||||
|
||||
@@ -462,19 +462,6 @@ export function SlackIcon(props: SVGProps<SVGSVGElement>) {
|
||||
)
|
||||
}
|
||||
|
||||
export function SlackMonoIcon(props: SVGProps<SVGSVGElement>) {
|
||||
return (
|
||||
<svg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg' fill='currentColor' {...props}>
|
||||
<g>
|
||||
<path d='M53.8412698,161.320635 C53.8412698,176.152381 41.8539683,188.139683 27.0222222,188.139683 C12.1904762,188.139683 0.203174603,176.152381 0.203174603,161.320635 C0.203174603,146.488889 12.1904762,134.501587 27.0222222,134.501587 L53.8412698,134.501587 L53.8412698,161.320635 Z M67.2507937,161.320635 C67.2507937,146.488889 79.2380952,134.501587 94.0698413,134.501587 C108.901587,134.501587 120.888889,146.488889 120.888889,161.320635 L120.888889,228.368254 C120.888889,243.2 108.901587,255.187302 94.0698413,255.187302 C79.2380952,255.187302 67.2507937,243.2 67.2507937,228.368254 L67.2507937,161.320635 Z' />
|
||||
<path d='M94.0698413,53.6380952 C79.2380952,53.6380952 67.2507937,41.6507937 67.2507937,26.8190476 C67.2507937,11.9873016 79.2380952,-7.10542736e-15 94.0698413,-7.10542736e-15 C108.901587,-7.10542736e-15 120.888889,11.9873016 120.888889,26.8190476 L120.888889,53.6380952 L94.0698413,53.6380952 Z M94.0698413,67.2507937 C108.901587,67.2507937 120.888889,79.2380952 120.888889,94.0698413 C120.888889,108.901587 108.901587,120.888889 94.0698413,120.888889 L26.8190476,120.888889 C11.9873016,120.888889 0,108.901587 0,94.0698413 C0,79.2380952 11.9873016,67.2507937 26.8190476,67.2507937 L94.0698413,67.2507937 Z' />
|
||||
<path d='M201.549206,94.0698413 C201.549206,79.2380952 213.536508,67.2507937 228.368254,67.2507937 C243.2,67.2507937 255.187302,79.2380952 255.187302,94.0698413 C255.187302,108.901587 243.2,120.888889 228.368254,120.888889 L201.549206,120.888889 L201.549206,94.0698413 Z M188.139683,94.0698413 C188.139683,108.901587 176.152381,120.888889 161.320635,120.888889 C146.488889,120.888889 134.501587,108.901587 134.501587,94.0698413 L134.501587,26.8190476 C134.501587,11.9873016 146.488889,-1.42108547e-14 161.320635,-1.42108547e-14 C176.152381,-1.42108547e-14 188.139683,11.9873016 188.139683,26.8190476 L188.139683,94.0698413 Z' />
|
||||
<path d='M161.320635,201.549206 C176.152381,201.549206 188.139683,213.536508 188.139683,228.368254 C188.139683,243.2 176.152381,255.187302 161.320635,255.187302 C146.488889,255.187302 134.501587,243.2 134.501587,228.368254 L134.501587,201.549206 L161.320635,201.549206 Z M161.320635,188.139683 C146.488889,188.139683 134.501587,176.152381 134.501587,161.320635 C134.501587,146.488889 146.488889,134.501587 161.320635,134.501587 L228.571429,134.501587 C243.403175,134.501587 255.390476,146.488889 255.390476,161.320635 C255.390476,176.152381 243.403175,188.139683 228.571429,188.139683 L161.320635,188.139683 Z' />
|
||||
</g>
|
||||
</svg>
|
||||
)
|
||||
}
|
||||
|
||||
export function GithubIcon(props: SVGProps<SVGSVGElement>) {
|
||||
return (
|
||||
<svg {...props} width='26' height='26' viewBox='0 0 26 26' xmlns='http://www.w3.org/2000/svg'>
|
||||
@@ -4344,16 +4331,3 @@ export function CirclebackIcon(props: SVGProps<SVGSVGElement>) {
|
||||
</svg>
|
||||
)
|
||||
}
|
||||
|
||||
export function GreptileIcon(props: SVGProps<SVGSVGElement>) {
|
||||
return (
|
||||
<svg {...props} viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'>
|
||||
<path
|
||||
clipRule='evenodd'
|
||||
fillRule='evenodd'
|
||||
fill='#44A775'
|
||||
d='M3.353.004a6.074 6.074 0 01-.265.045C2.63.12 2.092.348 1.71.633 1.426.846.717 1.575.557 1.819a3.359 3.359 0 00-.23 3.296c.154.322.35.59.71.972.187.198.434.486.55.64a6.629 6.629 0 011.305 3.546c.01.138.035 1.607.057 3.264.043 3.273.038 3.18.203 3.485.266.494.94.79 1.474.648.29-.077.463-.204 1.353-.986.957-.84 1.092-.932 1.446-.98.124-.017.631 0 1.66.053 1.513.08 1.622.079 1.85-.016.393-.164.539-.4.661-1.074.247-1.36 1.296-2.56 2.64-3.022.116-.04.373-.104.572-.144.198-.04.426-.102.506-.138.296-.136.515-.424.566-.744.017-.11-.007-.549-.089-1.602-.091-1.179-.107-1.483-.083-1.621.057-.342.139-.46 1.01-1.448.447-.506.85-.976.895-1.043.262-.39.288-.91.068-1.345a1.44 1.44 0 00-.822-.67c-.1-.029-.834-.037-3.544-.038H9.897l-.335-.063c-.958-.179-1.765-.49-2.484-.958-.362-.236-.583-.41-1.018-.804-.408-.37-.59-.502-.921-.67A3.018 3.018 0 003.744.005a3.942 3.942 0 00-.391 0zm15.728 5.858c-.132.049-.217.127-.48.44-.592.707-.74 1.336-.531 2.256.106.466.163.572.361.673.105.054.169.055 2.637.046l2.53-.009.118-.063a.551.551 0 00.095-.895 184.88 184.88 0 00-2.223-1.254c-2.293-1.282-2.281-1.276-2.507-1.194zm-3.216 6.71a9.258 9.258 0 00-1.364.696c-.844.557-1.454 1.36-1.923 2.53-.211.525-.202.75.04.935.111.087 6.478 3.14 6.667 3.198.153.047.27.027.43-.074a.538.538 0 00.24-.434c0-.06-.03-.18-.065-.264-.156-.368-3.098-6.467-3.158-6.545-.168-.222-.394-.232-.867-.042zm-8.48 5.457c-.453.102-.83.32-1.285.745-.296.277-.336.468-.167.798.053.103.61 1.104 1.236 2.224 1.297 2.317 1.22 2.206 1.558 2.202.152-.002.198-.015.296-.084a.662.662 0 00.173-.193c.058-.11.06-.152.08-2.595.018-1.93.015-2.51-.011-2.606a.569.569 0 00-.138-.227c-.09-.091-.14-.112-.406-.176-.582-.138-.992-.165-1.336-.088z'
|
||||
/>
|
||||
</svg>
|
||||
)
|
||||
}
|
||||
|
||||
@@ -42,7 +42,6 @@ import {
|
||||
GoogleVaultIcon,
|
||||
GrafanaIcon,
|
||||
GrainIcon,
|
||||
GreptileIcon,
|
||||
HubspotIcon,
|
||||
HuggingFaceIcon,
|
||||
HunterIOIcon,
|
||||
@@ -159,7 +158,6 @@ export const blockTypeToIconMap: Record<string, IconComponent> = {
|
||||
google_vault: GoogleVaultIcon,
|
||||
grafana: GrafanaIcon,
|
||||
grain: GrainIcon,
|
||||
greptile: GreptileIcon,
|
||||
hubspot: HubspotIcon,
|
||||
huggingface: HuggingFaceIcon,
|
||||
hunter: HunterIOIcon,
|
||||
|
||||
@@ -146,32 +146,6 @@ Extrahieren Sie strukturierte Daten aus vollständigen Webseiten mithilfe von na
|
||||
| `success` | boolean | Ob der Extraktionsvorgang erfolgreich war |
|
||||
| `data` | object | Extrahierte strukturierte Daten gemäß dem Schema oder der Eingabeaufforderung |
|
||||
|
||||
### `firecrawl_agent`
|
||||
|
||||
Autonomer Web-Datenextraktions-Agent. Sucht und sammelt Informationen basierend auf natürlichsprachlichen Anweisungen, ohne dass spezifische URLs erforderlich sind.
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `prompt` | string | Ja | Natürlichsprachliche Beschreibung der zu extrahierenden Daten \(max. 10.000 Zeichen\) |
|
||||
| `urls` | json | Nein | Optionales Array von URLs, auf die sich der Agent konzentrieren soll |
|
||||
| `schema` | json | Nein | JSON-Schema, das die Struktur der zu extrahierenden Daten definiert |
|
||||
| `maxCredits` | number | Nein | Maximale Credits, die für diese Agent-Aufgabe verwendet werden sollen |
|
||||
| `strictConstrainToURLs` | boolean | Nein | Wenn true, besucht der Agent nur URLs, die im urls-Array angegeben sind |
|
||||
| `apiKey` | string | Ja | Firecrawl API-Schlüssel |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Ob die Agent-Operation erfolgreich war |
|
||||
| `status` | string | Aktueller Status des Agent-Jobs \(processing, completed, failed\) |
|
||||
| `data` | object | Vom Agent extrahierte Daten |
|
||||
| `creditsUsed` | number | Anzahl der von dieser Agent-Aufgabe verbrauchten Credits |
|
||||
| `expiresAt` | string | Zeitstempel, wann die Ergebnisse ablaufen \(24 Stunden\) |
|
||||
| `sources` | object | Array der vom Agent verwendeten Quell-URLs |
|
||||
|
||||
## Hinweise
|
||||
|
||||
- Kategorie: `tools`
|
||||
|
||||
@@ -1,136 +0,0 @@
|
||||
---
|
||||
title: Greptile
|
||||
description: KI-gestützte Codebase-Suche und Fragen & Antworten
|
||||
---
|
||||
|
||||
import { BlockInfoCard } from "@/components/ui/block-info-card"
|
||||
|
||||
<BlockInfoCard
|
||||
type="greptile"
|
||||
color="#e5e5e5"
|
||||
/>
|
||||
|
||||
{/* MANUAL-CONTENT-START:intro */}
|
||||
[Greptile](https://greptile.com/) ist ein KI-gestütztes Entwicklertool zum Durchsuchen und Abfragen von Quellcode über ein oder mehrere Repositories hinweg. Greptile ermöglicht es Entwicklern, komplexe Fragen zur Codebase schnell in natürlicher Sprache zu beantworten, relevante Dateien oder Symbole zu finden und Einblicke in unbekannten oder Legacy-Code zu gewinnen.
|
||||
|
||||
Mit Greptile können Sie:
|
||||
|
||||
- **Komplexe Fragen zu Ihrer Codebase in natürlicher Sprache stellen**: Erhalten Sie KI-generierte Antworten zu Architektur, Verwendungsmustern oder spezifischen Implementierungen.
|
||||
- **Relevanten Code, Dateien oder Funktionen sofort finden**: Suchen Sie mit Schlüsselwörtern oder natürlichsprachlichen Abfragen und springen Sie direkt zu passenden Zeilen, Dateien oder Codeblöcken.
|
||||
- **Abhängigkeiten und Beziehungen verstehen**: Entdecken Sie, wo Funktionen aufgerufen werden, wie Module miteinander verbunden sind oder wo APIs in großen Codebasen verwendet werden.
|
||||
- **Onboarding und Code-Exploration beschleunigen**: Arbeiten Sie sich schnell in neue Projekte ein oder debuggen Sie knifflige Probleme, ohne tiefgreifenden Vorkontext zu benötigen.
|
||||
|
||||
Die Sim Greptile-Integration ermöglicht es Ihren KI-Agenten:
|
||||
|
||||
- Private und öffentliche Repositories mithilfe der fortschrittlichen Sprachmodelle von Greptile abzufragen und zu durchsuchen.
|
||||
- Kontextuell relevante Code-Snippets, Dateiverweise und Erklärungen abzurufen, um Code-Reviews, Dokumentation und Entwicklungsworkflows zu unterstützen.
|
||||
- Automatisierungen in Sim-Workflows basierend auf Such-/Abfrageergebnissen auszulösen oder Code-Intelligenz direkt in Ihre Prozesse einzubetten.
|
||||
|
||||
Egal, ob Sie die Produktivität von Entwicklern beschleunigen, Dokumentation automatisieren oder das Verständnis Ihres Teams für eine komplexe Codebase verbessern möchten – Greptile und Sim bieten nahtlosen Zugriff auf Code-Intelligenz und Suche, genau dort, wo Sie sie benötigen.
|
||||
{/* MANUAL-CONTENT-END */}
|
||||
|
||||
## Nutzungsanleitung
|
||||
|
||||
Fragen Sie Codebasen mit natürlicher Sprache über Greptile ab und durchsuchen Sie sie. Erhalten Sie KI-generierte Antworten zu Ihrem Code, finden Sie relevante Dateien und verstehen Sie komplexe Codebasen.
|
||||
|
||||
## Tools
|
||||
|
||||
### `greptile_query`
|
||||
|
||||
Durchsuchen Sie Repositories in natürlicher Sprache und erhalten Sie Antworten mit relevanten Code-Referenzen. Greptile nutzt KI, um Ihre Codebasis zu verstehen und Fragen zu beantworten.
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `query` | string | Ja | Frage in natürlicher Sprache zur Codebasis |
|
||||
| `repositories` | string | Ja | Kommagetrennte Liste von Repositories. Format: "github:branch:owner/repo" oder nur "owner/repo" \(Standard ist github:main\) |
|
||||
| `sessionId` | string | Nein | Sitzungs-ID für Gesprächskontinuität |
|
||||
| `genius` | boolean | Nein | Genius-Modus für gründlichere Analyse aktivieren \(langsamer, aber genauer\) |
|
||||
| `apiKey` | string | Ja | Greptile-API-Schlüssel |
|
||||
| `githubToken` | string | Ja | GitHub Personal Access Token mit Lesezugriff auf Repositories |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `message` | string | KI-generierte Antwort auf die Anfrage |
|
||||
| `sources` | array | Relevante Code-Referenzen, die die Antwort unterstützen |
|
||||
|
||||
### `greptile_search`
|
||||
|
||||
Durchsuchen Sie Repositories in natürlicher Sprache und erhalten Sie relevante Code-Referenzen ohne Generierung einer Antwort. Nützlich zum Auffinden spezifischer Code-Stellen.
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `query` | string | Ja | Suchanfrage in natürlicher Sprache zum Auffinden relevanten Codes |
|
||||
| `repositories` | string | Ja | Kommagetrennte Liste von Repositories. Format: "github:branch:owner/repo" oder nur "owner/repo" \(Standard ist github:main\) |
|
||||
| `sessionId` | string | Nein | Sitzungs-ID für Gesprächskontinuität |
|
||||
| `genius` | boolean | Nein | Genius-Modus für gründlichere Suche aktivieren \(langsamer, aber genauer\) |
|
||||
| `apiKey` | string | Ja | Greptile-API-Schlüssel |
|
||||
| `githubToken` | string | Ja | GitHub Personal Access Token mit Lesezugriff auf Repositories |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `sources` | array | Relevante Code-Referenzen, die zur Suchanfrage passen |
|
||||
|
||||
### `greptile_index_repo`
|
||||
|
||||
Übermitteln Sie ein Repository zur Indexierung durch Greptile. Die Indexierung muss abgeschlossen sein, bevor das Repository abgefragt werden kann. Kleine Repositories benötigen 3-5 Minuten, größere können über eine Stunde dauern.
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `remote` | string | Ja | Git-Remote-Typ: github oder gitlab |
|
||||
| `repository` | string | Ja | Repository im Format owner/repo \(z. B. "facebook/react"\) |
|
||||
| `branch` | string | Ja | Zu indexierender Branch \(z. B. "main" oder "master"\) |
|
||||
| `reload` | boolean | Nein | Neuindexierung erzwingen, auch wenn bereits indexiert |
|
||||
| `notify` | boolean | Nein | E-Mail-Benachrichtigung senden, wenn Indexierung abgeschlossen ist |
|
||||
| `apiKey` | string | Ja | Greptile-API-Schlüssel |
|
||||
| `githubToken` | string | Ja | GitHub Personal Access Token mit Lesezugriff auf Repository |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `repositoryId` | string | Eindeutige Kennung für das indexierte Repository \(Format: remote:branch:owner/repo\) |
|
||||
| `statusEndpoint` | string | URL-Endpunkt zur Überprüfung des Indexierungsstatus |
|
||||
| `message` | string | Statusmeldung über den Indexierungsvorgang |
|
||||
|
||||
### `greptile_status`
|
||||
|
||||
Überprüfen Sie den Indexierungsstatus eines Repositories. Verwenden Sie dies, um zu verifizieren, ob ein Repository abfragebereit ist, oder um den Indexierungsfortschritt zu überwachen.
|
||||
|
||||
#### Eingabe
|
||||
|
||||
| Parameter | Typ | Erforderlich | Beschreibung |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `remote` | string | Ja | Git-Remote-Typ: github oder gitlab |
|
||||
| `repository` | string | Ja | Repository im Format owner/repo \(z. B. "facebook/react"\) |
|
||||
| `branch` | string | Ja | Branch-Name \(z. B. "main" oder "master"\) |
|
||||
| `apiKey` | string | Ja | Greptile-API-Schlüssel |
|
||||
| `githubToken` | string | Ja | GitHub Personal Access Token mit Lesezugriff auf das Repository |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `repository` | string | Repository-Name \(owner/repo\) |
|
||||
| `remote` | string | Git-Remote \(github/gitlab\) |
|
||||
| `branch` | string | Branch-Name |
|
||||
| `private` | boolean | Ob das Repository privat ist |
|
||||
| `status` | string | Indexierungsstatus: submitted, cloning, processing, completed oder failed |
|
||||
| `filesProcessed` | number | Anzahl der bisher verarbeiteten Dateien |
|
||||
| `numFiles` | number | Gesamtanzahl der Dateien im Repository |
|
||||
| `sampleQuestions` | array | Beispielfragen für das indexierte Repository |
|
||||
| `sha` | string | Git-Commit-SHA der indexierten Version |
|
||||
|
||||
## Hinweise
|
||||
|
||||
- Kategorie: `tools`
|
||||
- Typ: `greptile`
|
||||
@@ -55,7 +55,8 @@ Erstellen Sie einen neuen Kontakt in Intercom mit E-Mail, external_id oder Rolle
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `contact` | object | Erstelltes Kontaktobjekt |
|
||||
| `success` | boolean | Erfolgsstatus der Operation |
|
||||
| `output` | object | Erstellte Kontaktdaten |
|
||||
|
||||
### `intercom_get_contact`
|
||||
|
||||
@@ -71,7 +72,8 @@ Einen einzelnen Kontakt anhand der ID von Intercom abrufen
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `contact` | object | Kontaktobjekt |
|
||||
| `success` | boolean | Erfolgsstatus der Operation |
|
||||
| `output` | object | Kontaktdaten |
|
||||
|
||||
### `intercom_update_contact`
|
||||
|
||||
@@ -99,7 +101,8 @@ Einen bestehenden Kontakt in Intercom aktualisieren
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `contact` | object | Aktualisiertes Kontaktobjekt |
|
||||
| `success` | boolean | Erfolgsstatus der Operation |
|
||||
| `output` | object | Aktualisierte Kontaktdaten |
|
||||
|
||||
### `intercom_list_contacts`
|
||||
|
||||
@@ -116,7 +119,8 @@ Alle Kontakte von Intercom mit Paginierungsunterstützung auflisten
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `contacts` | array | Array von Kontaktobjekten |
|
||||
| `success` | boolean | Status des Operationserfolgs |
|
||||
| `output` | object | Liste der Kontakte |
|
||||
|
||||
### `intercom_search_contacts`
|
||||
|
||||
@@ -136,7 +140,8 @@ Suche nach Kontakten in Intercom mit einer Abfrage
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `contacts` | array | Array von übereinstimmenden Kontaktobjekten |
|
||||
| `success` | boolean | Status des Operationserfolgs |
|
||||
| `output` | object | Suchergebnisse |
|
||||
|
||||
### `intercom_delete_contact`
|
||||
|
||||
@@ -152,9 +157,8 @@ Einen Kontakt aus Intercom nach ID löschen
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `id` | string | ID des gelöschten Kontakts |
|
||||
| `deleted` | boolean | Ob der Kontakt gelöscht wurde |
|
||||
| `metadata` | object | Metadaten der Operation |
|
||||
| `success` | boolean | Status des Operationserfolgs |
|
||||
| `output` | object | Löschergebnis |
|
||||
|
||||
### `intercom_create_company`
|
||||
|
||||
@@ -178,7 +182,8 @@ Ein Unternehmen in Intercom erstellen oder aktualisieren
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `company` | object | Erstelltes oder aktualisiertes Unternehmensobjekt |
|
||||
| `success` | boolean | Status des Operationserfolgs |
|
||||
| `output` | object | Erstellte oder aktualisierte Unternehmensdaten |
|
||||
|
||||
### `intercom_get_company`
|
||||
|
||||
@@ -194,7 +199,8 @@ Ein einzelnes Unternehmen anhand der ID von Intercom abrufen
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `company` | object | Unternehmensobjekt |
|
||||
| `success` | boolean | Status des Operationserfolgs |
|
||||
| `output` | object | Unternehmensdaten |
|
||||
|
||||
### `intercom_list_companies`
|
||||
|
||||
@@ -212,7 +218,8 @@ Listet alle Unternehmen von Intercom mit Paginierungsunterstützung auf. Hinweis
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `companies` | array | Array von Unternehmensobjekten |
|
||||
| `success` | boolean | Status des Operationserfolgs |
|
||||
| `output` | object | Liste der Unternehmen |
|
||||
|
||||
### `intercom_get_conversation`
|
||||
|
||||
@@ -230,7 +237,8 @@ Eine einzelne Konversation anhand der ID von Intercom abrufen
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `conversation` | object | Konversationsobjekt |
|
||||
| `success` | boolean | Status des Operationserfolgs |
|
||||
| `output` | object | Konversationsdaten |
|
||||
|
||||
### `intercom_list_conversations`
|
||||
|
||||
@@ -249,7 +257,8 @@ Alle Konversationen von Intercom mit Paginierungsunterstützung auflisten
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `conversations` | array | Array von Konversationsobjekten |
|
||||
| `success` | boolean | Status des Operationserfolgs |
|
||||
| `output` | object | Liste der Konversationen |
|
||||
|
||||
### `intercom_reply_conversation`
|
||||
|
||||
@@ -270,7 +279,8 @@ Als Administrator auf eine Konversation in Intercom antworten
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `conversation` | object | Aktualisiertes Konversationsobjekt |
|
||||
| `success` | boolean | Status des Operationserfolgs |
|
||||
| `output` | object | Aktualisierte Konversation mit Antwort |
|
||||
|
||||
### `intercom_search_conversations`
|
||||
|
||||
@@ -290,7 +300,8 @@ Nach Konversationen in Intercom mit einer Abfrage suchen
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `conversations` | array | Array von übereinstimmenden Konversationsobjekten |
|
||||
| `success` | boolean | Status des Operationserfolgs |
|
||||
| `output` | object | Suchergebnisse |
|
||||
|
||||
### `intercom_create_ticket`
|
||||
|
||||
@@ -310,9 +321,10 @@ Ein neues Ticket in Intercom erstellen
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| Parameter | Type | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `ticket` | object | Erstelltes Ticket-Objekt |
|
||||
| `success` | boolean | Erfolgsstatus der Operation |
|
||||
| `output` | object | Erstellte Ticket-Daten |
|
||||
|
||||
### `intercom_get_ticket`
|
||||
|
||||
@@ -326,9 +338,10 @@ Ein einzelnes Ticket anhand der ID von Intercom abrufen
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| Parameter | Type | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `ticket` | object | Ticket-Objekt |
|
||||
| `success` | boolean | Erfolgsstatus der Operation |
|
||||
| `output` | object | Ticket-Daten |
|
||||
|
||||
### `intercom_create_message`
|
||||
|
||||
@@ -350,9 +363,10 @@ Eine neue vom Administrator initiierte Nachricht in Intercom erstellen und sende
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| Parameter | Type | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `message` | object | Erstelltes Nachrichtenobjekt |
|
||||
| `success` | boolean | Erfolgsstatus der Operation |
|
||||
| `output` | object | Erstellte Nachrichtendaten |
|
||||
|
||||
## Notizen
|
||||
|
||||
|
||||
@@ -70,7 +70,8 @@ Text-Datensätze in einen Pinecone-Index einfügen oder aktualisieren
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `statusText` | string | Status der Upsert-Operation |
|
||||
| `statusText` | string | Status des Einfügevorgangs |
|
||||
| `upsertedCount` | number | Anzahl der erfolgreich eingefügten Datensätze |
|
||||
|
||||
### `pinecone_search_text`
|
||||
|
||||
|
||||
@@ -266,11 +266,10 @@ Eine Datei in einen Supabase-Speicher-Bucket hochladen
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `projectId` | string | Ja | Ihre Supabase-Projekt-ID \(z.B. jdrkgepadsdopsntdlom\) |
|
||||
| `bucket` | string | Ja | Der Name des Speicher-Buckets |
|
||||
| `fileName` | string | Ja | Der Name der Datei \(z.B. "dokument.pdf", "bild.jpg"\) |
|
||||
| `path` | string | Nein | Optionaler Ordnerpfad \(z.B. "ordner/unterordner/"\) |
|
||||
| `path` | string | Ja | Der Pfad, unter dem die Datei gespeichert wird \(z.B. "ordner/datei.jpg"\) |
|
||||
| `fileContent` | string | Ja | Der Dateiinhalt \(base64-kodiert für Binärdateien oder Klartext\) |
|
||||
| `contentType` | string | Nein | MIME-Typ der Datei \(z.B. "image/jpeg", "text/plain"\) |
|
||||
| `upsert` | boolean | Nein | Wenn true, wird die vorhandene Datei überschrieben \(Standard: false\) |
|
||||
| `upsert` | boolean | Nein | Wenn true, überschreibt vorhandene Datei \(Standard: false\) |
|
||||
| `apiKey` | string | Ja | Ihr Supabase Service Role Secret Key |
|
||||
|
||||
#### Ausgabe
|
||||
|
||||
@@ -129,18 +129,15 @@ Vollständige Details und Struktur eines bestimmten Formulars abrufen
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `id` | string | Eindeutige Formularkennung |
|
||||
| `id` | string | Eindeutige Formular-ID |
|
||||
| `title` | string | Formulartitel |
|
||||
| `type` | string | Formulartyp \(form, quiz, etc.\) |
|
||||
| `settings` | object | Formulareinstellungen einschließlich Sprache, Fortschrittsbalken, etc. |
|
||||
| `theme` | object | Theme-Referenz |
|
||||
| `workspace` | object | Workspace-Referenz |
|
||||
| `fields` | array | Array von Formularfeldern/Fragen |
|
||||
| `welcome_screens` | array | Array von Willkommensbildschirmen \(leer, wenn keine konfiguriert\) |
|
||||
| `thankyou_screens` | array | Array von Danke-Bildschirmen |
|
||||
| `created_at` | string | Zeitstempel der Formularerstellung \(ISO-8601-Format\) |
|
||||
| `last_updated_at` | string | Zeitstempel der letzten Formularaktualisierung \(ISO-8601-Format\) |
|
||||
| `published_at` | string | Zeitstempel der Formularveröffentlichung \(ISO-8601-Format\) |
|
||||
| `welcome_screens` | array | Array von Begrüßungsbildschirmen |
|
||||
| `thankyou_screens` | array | Array von Dankesbildschirmen |
|
||||
| `_links` | object | Links zu verwandten Ressourcen einschließlich öffentlicher Formular-URL |
|
||||
|
||||
### `typeform_create_form`
|
||||
@@ -166,12 +163,7 @@ Ein neues Formular mit Feldern und Einstellungen erstellen
|
||||
| `id` | string | Eindeutige Kennung des erstellten Formulars |
|
||||
| `title` | string | Formulartitel |
|
||||
| `type` | string | Formulartyp |
|
||||
| `settings` | object | Formulareinstellungsobjekt |
|
||||
| `theme` | object | Theme-Referenz |
|
||||
| `workspace` | object | Workspace-Referenz |
|
||||
| `fields` | array | Array von erstellten Formularfeldern \(leer, wenn keine hinzugefügt\) |
|
||||
| `welcome_screens` | array | Array von Willkommensbildschirmen \(leer, wenn keine konfiguriert\) |
|
||||
| `thankyou_screens` | array | Array von Danke-Bildschirmen |
|
||||
| `fields` | array | Array der erstellten Formularfelder |
|
||||
| `_links` | object | Links zu verwandten Ressourcen einschließlich öffentlicher Formular-URL |
|
||||
|
||||
### `typeform_update_form`
|
||||
@@ -190,7 +182,16 @@ Ein bestehendes Formular mit JSON Patch-Operationen aktualisieren
|
||||
|
||||
| Parameter | Typ | Beschreibung |
|
||||
| --------- | ---- | ----------- |
|
||||
| `message` | string | Erfolgsbestätigungsnachricht |
|
||||
| `id` | string | Eindeutige Kennung des aktualisierten Formulars |
|
||||
| `title` | string | Formulartitel |
|
||||
| `type` | string | Formulartyp |
|
||||
| `settings` | object | Formulareinstellungen |
|
||||
| `theme` | object | Theme-Referenz |
|
||||
| `workspace` | object | Workspace-Referenz |
|
||||
| `fields` | array | Array von Formularfeldern |
|
||||
| `welcome_screens` | array | Array von Begrüßungsbildschirmen |
|
||||
| `thankyou_screens` | array | Array von Dankesbildschirmen |
|
||||
| `_links` | object | Links zu verwandten Ressourcen |
|
||||
|
||||
### `typeform_delete_form`
|
||||
|
||||
|
||||
@@ -149,32 +149,6 @@ Extract structured data from entire webpages using natural language prompts and
|
||||
| `success` | boolean | Whether the extraction operation was successful |
|
||||
| `data` | object | Extracted structured data according to the schema or prompt |
|
||||
|
||||
### `firecrawl_agent`
|
||||
|
||||
Autonomous web data extraction agent. Searches and gathers information based on natural language prompts without requiring specific URLs.
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `prompt` | string | Yes | Natural language description of the data to extract \(max 10,000 characters\) |
|
||||
| `urls` | json | No | Optional array of URLs to focus the agent on |
|
||||
| `schema` | json | No | JSON Schema defining the structure of data to extract |
|
||||
| `maxCredits` | number | No | Maximum credits to spend on this agent task |
|
||||
| `strictConstrainToURLs` | boolean | No | If true, agent will only visit URLs provided in the urls array |
|
||||
| `apiKey` | string | Yes | Firecrawl API key |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Whether the agent operation was successful |
|
||||
| `status` | string | Current status of the agent job \(processing, completed, failed\) |
|
||||
| `data` | object | Extracted data from the agent |
|
||||
| `creditsUsed` | number | Number of credits consumed by this agent task |
|
||||
| `expiresAt` | string | Timestamp when the results expire \(24 hours\) |
|
||||
| `sources` | object | Array of source URLs used by the agent |
|
||||
|
||||
|
||||
|
||||
## Notes
|
||||
|
||||
@@ -1,141 +0,0 @@
|
||||
---
|
||||
title: Greptile
|
||||
description: AI-powered codebase search and Q&A
|
||||
---
|
||||
|
||||
import { BlockInfoCard } from "@/components/ui/block-info-card"
|
||||
|
||||
<BlockInfoCard
|
||||
type="greptile"
|
||||
color="#e5e5e5"
|
||||
/>
|
||||
|
||||
{/* MANUAL-CONTENT-START:intro */}
|
||||
[Greptile](https://greptile.com/) is an AI-powered developer tool for searching and querying source code across one or more repositories. Greptile enables engineers to quickly answer complex codebase questions in natural language, locate relevant files or symbols, and gain insights into unfamiliar or legacy code.
|
||||
|
||||
With Greptile, you can:
|
||||
|
||||
- **Ask complex questions about your codebase in natural language**: Get AI-generated answers about architecture, usage patterns, or specific implementations.
|
||||
- **Find relevant code, files, or functions instantly**: Search using keywords or natural language queries and jump right to matching lines, files, or code blocks.
|
||||
- **Understand dependencies and relationships**: Uncover where functions are called, how modules are related, or where APIs are used across large codebases.
|
||||
- **Accelerate onboarding and code exploration**: Quickly ramp up on new projects or debug tricky issues without needing deep prior context.
|
||||
|
||||
The Sim Greptile integration allows your AI agents to:
|
||||
|
||||
- Query and search private and public repositories using Greptile’s advanced language models.
|
||||
- Retrieve contextually relevant code snippets, file references, and explanations to support code review, documentation, and development workflows.
|
||||
- Trigger automations in Sim workflows based on search/query results or embed code intelligence directly into your processes.
|
||||
|
||||
Whether you’re trying to accelerate developer productivity, automate documentation, or supercharge your team’s understanding of a complex codebase, Greptile and Sim provide seamless access to code intelligence and search—right where you need it.
|
||||
{/* MANUAL-CONTENT-END */}
|
||||
|
||||
|
||||
## Usage Instructions
|
||||
|
||||
Query and search codebases using natural language with Greptile. Get AI-generated answers about your code, find relevant files, and understand complex codebases.
|
||||
|
||||
|
||||
|
||||
## Tools
|
||||
|
||||
### `greptile_query`
|
||||
|
||||
Query repositories in natural language and get answers with relevant code references. Greptile uses AI to understand your codebase and answer questions.
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `query` | string | Yes | Natural language question about the codebase |
|
||||
| `repositories` | string | Yes | Comma-separated list of repositories. Format: "github:branch:owner/repo" or just "owner/repo" \(defaults to github:main\) |
|
||||
| `sessionId` | string | No | Session ID for conversation continuity |
|
||||
| `genius` | boolean | No | Enable genius mode for more thorough analysis \(slower but more accurate\) |
|
||||
| `apiKey` | string | Yes | Greptile API key |
|
||||
| `githubToken` | string | Yes | GitHub Personal Access Token with repo read access |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `message` | string | AI-generated answer to the query |
|
||||
| `sources` | array | Relevant code references that support the answer |
|
||||
|
||||
### `greptile_search`
|
||||
|
||||
Search repositories in natural language and get relevant code references without generating an answer. Useful for finding specific code locations.
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `query` | string | Yes | Natural language search query to find relevant code |
|
||||
| `repositories` | string | Yes | Comma-separated list of repositories. Format: "github:branch:owner/repo" or just "owner/repo" \(defaults to github:main\) |
|
||||
| `sessionId` | string | No | Session ID for conversation continuity |
|
||||
| `genius` | boolean | No | Enable genius mode for more thorough search \(slower but more accurate\) |
|
||||
| `apiKey` | string | Yes | Greptile API key |
|
||||
| `githubToken` | string | Yes | GitHub Personal Access Token with repo read access |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `sources` | array | Relevant code references matching the search query |
|
||||
|
||||
### `greptile_index_repo`
|
||||
|
||||
Submit a repository to be indexed by Greptile. Indexing must complete before the repository can be queried. Small repos take 3-5 minutes, larger ones can take over an hour.
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `remote` | string | Yes | Git remote type: github or gitlab |
|
||||
| `repository` | string | Yes | Repository in owner/repo format \(e.g., "facebook/react"\) |
|
||||
| `branch` | string | Yes | Branch to index \(e.g., "main" or "master"\) |
|
||||
| `reload` | boolean | No | Force re-indexing even if already indexed |
|
||||
| `notify` | boolean | No | Send email notification when indexing completes |
|
||||
| `apiKey` | string | Yes | Greptile API key |
|
||||
| `githubToken` | string | Yes | GitHub Personal Access Token with repo read access |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `repositoryId` | string | Unique identifier for the indexed repository \(format: remote:branch:owner/repo\) |
|
||||
| `statusEndpoint` | string | URL endpoint to check indexing status |
|
||||
| `message` | string | Status message about the indexing operation |
|
||||
|
||||
### `greptile_status`
|
||||
|
||||
Check the indexing status of a repository. Use this to verify if a repository is ready to be queried or to monitor indexing progress.
|
||||
|
||||
#### Input
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `remote` | string | Yes | Git remote type: github or gitlab |
|
||||
| `repository` | string | Yes | Repository in owner/repo format \(e.g., "facebook/react"\) |
|
||||
| `branch` | string | Yes | Branch name \(e.g., "main" or "master"\) |
|
||||
| `apiKey` | string | Yes | Greptile API key |
|
||||
| `githubToken` | string | Yes | GitHub Personal Access Token with repo read access |
|
||||
|
||||
#### Output
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `repository` | string | Repository name \(owner/repo\) |
|
||||
| `remote` | string | Git remote \(github/gitlab\) |
|
||||
| `branch` | string | Branch name |
|
||||
| `private` | boolean | Whether the repository is private |
|
||||
| `status` | string | Indexing status: submitted, cloning, processing, completed, or failed |
|
||||
| `filesProcessed` | number | Number of files processed so far |
|
||||
| `numFiles` | number | Total number of files in the repository |
|
||||
| `sampleQuestions` | array | Sample questions for the indexed repository |
|
||||
| `sha` | string | Git commit SHA of the indexed version |
|
||||
|
||||
|
||||
|
||||
## Notes
|
||||
|
||||
- Category: `tools`
|
||||
- Type: `greptile`
|
||||
@@ -58,7 +58,8 @@ Create a new contact in Intercom with email, external_id, or role
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `contact` | object | Created contact object |
|
||||
| `success` | boolean | Operation success status |
|
||||
| `output` | object | Created contact data |
|
||||
|
||||
### `intercom_get_contact`
|
||||
|
||||
@@ -74,7 +75,8 @@ Get a single contact by ID from Intercom
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `contact` | object | Contact object |
|
||||
| `success` | boolean | Operation success status |
|
||||
| `output` | object | Contact data |
|
||||
|
||||
### `intercom_update_contact`
|
||||
|
||||
@@ -102,7 +104,8 @@ Update an existing contact in Intercom
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `contact` | object | Updated contact object |
|
||||
| `success` | boolean | Operation success status |
|
||||
| `output` | object | Updated contact data |
|
||||
|
||||
### `intercom_list_contacts`
|
||||
|
||||
@@ -119,7 +122,8 @@ List all contacts from Intercom with pagination support
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `contacts` | array | Array of contact objects |
|
||||
| `success` | boolean | Operation success status |
|
||||
| `output` | object | List of contacts |
|
||||
|
||||
### `intercom_search_contacts`
|
||||
|
||||
@@ -139,7 +143,8 @@ Search for contacts in Intercom using a query
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `contacts` | array | Array of matching contact objects |
|
||||
| `success` | boolean | Operation success status |
|
||||
| `output` | object | Search results |
|
||||
|
||||
### `intercom_delete_contact`
|
||||
|
||||
@@ -155,9 +160,8 @@ Delete a contact from Intercom by ID
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `id` | string | ID of deleted contact |
|
||||
| `deleted` | boolean | Whether the contact was deleted |
|
||||
| `metadata` | object | Operation metadata |
|
||||
| `success` | boolean | Operation success status |
|
||||
| `output` | object | Deletion result |
|
||||
|
||||
### `intercom_create_company`
|
||||
|
||||
@@ -181,7 +185,8 @@ Create or update a company in Intercom
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `company` | object | Created or updated company object |
|
||||
| `success` | boolean | Operation success status |
|
||||
| `output` | object | Created or updated company data |
|
||||
|
||||
### `intercom_get_company`
|
||||
|
||||
@@ -197,7 +202,8 @@ Retrieve a single company by ID from Intercom
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `company` | object | Company object |
|
||||
| `success` | boolean | Operation success status |
|
||||
| `output` | object | Company data |
|
||||
|
||||
### `intercom_list_companies`
|
||||
|
||||
@@ -215,7 +221,8 @@ List all companies from Intercom with pagination support. Note: This endpoint ha
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `companies` | array | Array of company objects |
|
||||
| `success` | boolean | Operation success status |
|
||||
| `output` | object | List of companies |
|
||||
|
||||
### `intercom_get_conversation`
|
||||
|
||||
@@ -233,7 +240,8 @@ Retrieve a single conversation by ID from Intercom
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `conversation` | object | Conversation object |
|
||||
| `success` | boolean | Operation success status |
|
||||
| `output` | object | Conversation data |
|
||||
|
||||
### `intercom_list_conversations`
|
||||
|
||||
@@ -252,7 +260,8 @@ List all conversations from Intercom with pagination support
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `conversations` | array | Array of conversation objects |
|
||||
| `success` | boolean | Operation success status |
|
||||
| `output` | object | List of conversations |
|
||||
|
||||
### `intercom_reply_conversation`
|
||||
|
||||
@@ -273,7 +282,8 @@ Reply to a conversation as an admin in Intercom
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `conversation` | object | Updated conversation object |
|
||||
| `success` | boolean | Operation success status |
|
||||
| `output` | object | Updated conversation with reply |
|
||||
|
||||
### `intercom_search_conversations`
|
||||
|
||||
@@ -293,7 +303,8 @@ Search for conversations in Intercom using a query
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `conversations` | array | Array of matching conversation objects |
|
||||
| `success` | boolean | Operation success status |
|
||||
| `output` | object | Search results |
|
||||
|
||||
### `intercom_create_ticket`
|
||||
|
||||
@@ -315,7 +326,8 @@ Create a new ticket in Intercom
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `ticket` | object | Created ticket object |
|
||||
| `success` | boolean | Operation success status |
|
||||
| `output` | object | Created ticket data |
|
||||
|
||||
### `intercom_get_ticket`
|
||||
|
||||
@@ -331,7 +343,8 @@ Retrieve a single ticket by ID from Intercom
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `ticket` | object | Ticket object |
|
||||
| `success` | boolean | Operation success status |
|
||||
| `output` | object | Ticket data |
|
||||
|
||||
### `intercom_create_message`
|
||||
|
||||
@@ -355,7 +368,8 @@ Create and send a new admin-initiated message in Intercom
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `message` | object | Created message object |
|
||||
| `success` | boolean | Operation success status |
|
||||
| `output` | object | Created message data |
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -37,7 +37,6 @@
|
||||
"google_vault",
|
||||
"grafana",
|
||||
"grain",
|
||||
"greptile",
|
||||
"hubspot",
|
||||
"huggingface",
|
||||
"hunter",
|
||||
|
||||
@@ -74,6 +74,7 @@ Insert or update text records in a Pinecone index
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `statusText` | string | Status of the upsert operation |
|
||||
| `upsertedCount` | number | Number of records successfully upserted |
|
||||
|
||||
### `pinecone_search_text`
|
||||
|
||||
|
||||
@@ -269,8 +269,7 @@ Upload a file to a Supabase storage bucket
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `projectId` | string | Yes | Your Supabase project ID \(e.g., jdrkgepadsdopsntdlom\) |
|
||||
| `bucket` | string | Yes | The name of the storage bucket |
|
||||
| `fileName` | string | Yes | The name of the file \(e.g., "document.pdf", "image.jpg"\) |
|
||||
| `path` | string | No | Optional folder path \(e.g., "folder/subfolder/"\) |
|
||||
| `path` | string | Yes | The path where the file will be stored \(e.g., "folder/file.jpg"\) |
|
||||
| `fileContent` | string | Yes | The file content \(base64 encoded for binary files, or plain text\) |
|
||||
| `contentType` | string | No | MIME type of the file \(e.g., "image/jpeg", "text/plain"\) |
|
||||
| `upsert` | boolean | No | If true, overwrites existing file \(default: false\) |
|
||||
|
||||
@@ -139,11 +139,8 @@ Retrieve complete details and structure of a specific form
|
||||
| `theme` | object | Theme reference |
|
||||
| `workspace` | object | Workspace reference |
|
||||
| `fields` | array | Array of form fields/questions |
|
||||
| `welcome_screens` | array | Array of welcome screens \(empty if none configured\) |
|
||||
| `welcome_screens` | array | Array of welcome screens |
|
||||
| `thankyou_screens` | array | Array of thank you screens |
|
||||
| `created_at` | string | Form creation timestamp \(ISO 8601 format\) |
|
||||
| `last_updated_at` | string | Form last update timestamp \(ISO 8601 format\) |
|
||||
| `published_at` | string | Form publication timestamp \(ISO 8601 format\) |
|
||||
| `_links` | object | Related resource links including public form URL |
|
||||
|
||||
### `typeform_create_form`
|
||||
@@ -169,12 +166,7 @@ Create a new form with fields and settings
|
||||
| `id` | string | Created form unique identifier |
|
||||
| `title` | string | Form title |
|
||||
| `type` | string | Form type |
|
||||
| `settings` | object | Form settings object |
|
||||
| `theme` | object | Theme reference |
|
||||
| `workspace` | object | Workspace reference |
|
||||
| `fields` | array | Array of created form fields \(empty if none added\) |
|
||||
| `welcome_screens` | array | Array of welcome screens \(empty if none configured\) |
|
||||
| `thankyou_screens` | array | Array of thank you screens |
|
||||
| `fields` | array | Array of created form fields |
|
||||
| `_links` | object | Related resource links including public form URL |
|
||||
|
||||
### `typeform_update_form`
|
||||
@@ -193,7 +185,16 @@ Update an existing form using JSON Patch operations
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `message` | string | Success confirmation message |
|
||||
| `id` | string | Updated form unique identifier |
|
||||
| `title` | string | Form title |
|
||||
| `type` | string | Form type |
|
||||
| `settings` | object | Form settings |
|
||||
| `theme` | object | Theme reference |
|
||||
| `workspace` | object | Workspace reference |
|
||||
| `fields` | array | Array of form fields |
|
||||
| `welcome_screens` | array | Array of welcome screens |
|
||||
| `thankyou_screens` | array | Array of thank you screens |
|
||||
| `_links` | object | Related resource links |
|
||||
|
||||
### `typeform_delete_form`
|
||||
|
||||
|
||||
@@ -146,32 +146,6 @@ Extrae datos estructurados de páginas web completas utilizando instrucciones en
|
||||
| `success` | boolean | Si la operación de extracción fue exitosa |
|
||||
| `data` | object | Datos estructurados extraídos según el esquema o indicación |
|
||||
|
||||
### `firecrawl_agent`
|
||||
|
||||
Agente autónomo de extracción de datos web. Busca y recopila información basándose en instrucciones en lenguaje natural sin requerir URLs específicas.
|
||||
|
||||
#### Entrada
|
||||
|
||||
| Parámetro | Tipo | Obligatorio | Descripción |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `prompt` | string | Sí | Descripción en lenguaje natural de los datos a extraer (máx. 10.000 caracteres) |
|
||||
| `urls` | json | No | Array opcional de URLs en las que enfocar al agente |
|
||||
| `schema` | json | No | Esquema JSON que define la estructura de los datos a extraer |
|
||||
| `maxCredits` | number | No | Créditos máximos a gastar en esta tarea del agente |
|
||||
| `strictConstrainToURLs` | boolean | No | Si es true, el agente solo visitará las URLs proporcionadas en el array urls |
|
||||
| `apiKey` | string | Sí | Clave API de Firecrawl |
|
||||
|
||||
#### Salida
|
||||
|
||||
| Parámetro | Tipo | Descripción |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Si la operación del agente fue exitosa |
|
||||
| `status` | string | Estado actual del trabajo del agente (processing, completed, failed) |
|
||||
| `data` | object | Datos extraídos por el agente |
|
||||
| `creditsUsed` | number | Número de créditos consumidos por esta tarea del agente |
|
||||
| `expiresAt` | string | Marca de tiempo de cuándo expiran los resultados (24 horas) |
|
||||
| `sources` | object | Array de URLs fuente utilizadas por el agente |
|
||||
|
||||
## Notas
|
||||
|
||||
- Categoría: `tools`
|
||||
|
||||
@@ -1,136 +0,0 @@
|
||||
---
|
||||
title: Greptile
|
||||
description: Búsqueda de código base y preguntas y respuestas con IA
|
||||
---
|
||||
|
||||
import { BlockInfoCard } from "@/components/ui/block-info-card"
|
||||
|
||||
<BlockInfoCard
|
||||
type="greptile"
|
||||
color="#e5e5e5"
|
||||
/>
|
||||
|
||||
{/* MANUAL-CONTENT-START:intro */}
|
||||
[Greptile](https://greptile.com/) es una herramienta de desarrollo impulsada por IA para buscar y consultar código fuente en uno o más repositorios. Greptile permite a los ingenieros responder rápidamente preguntas complejas sobre el código base en lenguaje natural, localizar archivos o símbolos relevantes y obtener información sobre código desconocido o heredado.
|
||||
|
||||
Con Greptile, puedes:
|
||||
|
||||
- **Hacer preguntas complejas sobre tu código base en lenguaje natural**: Obtén respuestas generadas por IA sobre arquitectura, patrones de uso o implementaciones específicas.
|
||||
- **Encontrar código, archivos o funciones relevantes al instante**: Busca usando palabras clave o consultas en lenguaje natural y ve directamente a las líneas, archivos o bloques de código coincidentes.
|
||||
- **Comprender dependencias y relaciones**: Descubre dónde se llaman las funciones, cómo se relacionan los módulos o dónde se usan las API en grandes bases de código.
|
||||
- **Acelerar la incorporación y exploración de código**: Ponte al día rápidamente en nuevos proyectos o depura problemas complicados sin necesitar un contexto previo profundo.
|
||||
|
||||
La integración de Sim Greptile permite a tus agentes de IA:
|
||||
|
||||
- Consultar y buscar repositorios privados y públicos usando los modelos de lenguaje avanzados de Greptile.
|
||||
- Recuperar fragmentos de código contextualmente relevantes, referencias de archivos y explicaciones para apoyar la revisión de código, documentación y flujos de trabajo de desarrollo.
|
||||
- Activar automatizaciones en flujos de trabajo de Sim basadas en resultados de búsqueda/consulta o integrar inteligencia de código directamente en tus procesos.
|
||||
|
||||
Ya sea que estés tratando de acelerar la productividad del desarrollador, automatizar la documentación o potenciar la comprensión de tu equipo sobre un código base complejo, Greptile y Sim proporcionan acceso fluido a la inteligencia y búsqueda de código, justo donde lo necesitas.
|
||||
{/* MANUAL-CONTENT-END */}
|
||||
|
||||
## Instrucciones de uso
|
||||
|
||||
Consulta y busca en bases de código usando lenguaje natural con Greptile. Obtén respuestas generadas por IA sobre tu código, encuentra archivos relevantes y comprende bases de código complejas.
|
||||
|
||||
## Herramientas
|
||||
|
||||
### `greptile_query`
|
||||
|
||||
Consulta repositorios en lenguaje natural y obtén respuestas con referencias de código relevantes. Greptile utiliza IA para comprender tu código base y responder preguntas.
|
||||
|
||||
#### Entrada
|
||||
|
||||
| Parámetro | Tipo | Requerido | Descripción |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `query` | string | Sí | Pregunta en lenguaje natural sobre el código base |
|
||||
| `repositories` | string | Sí | Lista de repositorios separados por comas. Formato: "github:branch:owner/repo" o simplemente "owner/repo" \(por defecto github:main\) |
|
||||
| `sessionId` | string | No | ID de sesión para continuidad de la conversación |
|
||||
| `genius` | boolean | No | Activar modo genius para un análisis más exhaustivo \(más lento pero más preciso\) |
|
||||
| `apiKey` | string | Sí | Clave API de Greptile |
|
||||
| `githubToken` | string | Sí | Token de acceso personal de GitHub con acceso de lectura al repositorio |
|
||||
|
||||
#### Salida
|
||||
|
||||
| Parámetro | Tipo | Descripción |
|
||||
| --------- | ---- | ----------- |
|
||||
| `message` | string | Respuesta generada por IA a la consulta |
|
||||
| `sources` | array | Referencias de código relevantes que respaldan la respuesta |
|
||||
|
||||
### `greptile_search`
|
||||
|
||||
Busca en repositorios en lenguaje natural y obtén referencias de código relevantes sin generar una respuesta. Útil para encontrar ubicaciones específicas de código.
|
||||
|
||||
#### Entrada
|
||||
|
||||
| Parámetro | Tipo | Requerido | Descripción |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `query` | string | Sí | Consulta de búsqueda en lenguaje natural para encontrar código relevante |
|
||||
| `repositories` | string | Sí | Lista de repositorios separados por comas. Formato: "github:branch:owner/repo" o simplemente "owner/repo" \(por defecto github:main\) |
|
||||
| `sessionId` | string | No | ID de sesión para continuidad de la conversación |
|
||||
| `genius` | boolean | No | Activar modo genius para una búsqueda más exhaustiva \(más lento pero más preciso\) |
|
||||
| `apiKey` | string | Sí | Clave API de Greptile |
|
||||
| `githubToken` | string | Sí | Token de acceso personal de GitHub con acceso de lectura al repositorio |
|
||||
|
||||
#### Salida
|
||||
|
||||
| Parámetro | Tipo | Descripción |
|
||||
| --------- | ---- | ----------- |
|
||||
| `sources` | array | Referencias de código relevantes que coinciden con la consulta de búsqueda |
|
||||
|
||||
### `greptile_index_repo`
|
||||
|
||||
Envía un repositorio para ser indexado por Greptile. La indexación debe completarse antes de que el repositorio pueda ser consultado. Los repositorios pequeños tardan de 3 a 5 minutos, los más grandes pueden tardar más de una hora.
|
||||
|
||||
#### Entrada
|
||||
|
||||
| Parámetro | Tipo | Requerido | Descripción |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `remote` | string | Sí | Tipo de remoto Git: github o gitlab |
|
||||
| `repository` | string | Sí | Repositorio en formato propietario/repo \(ej., "facebook/react"\) |
|
||||
| `branch` | string | Sí | Rama a indexar \(ej., "main" o "master"\) |
|
||||
| `reload` | boolean | No | Forzar re-indexación incluso si ya está indexado |
|
||||
| `notify` | boolean | No | Enviar notificación por correo electrónico cuando se complete la indexación |
|
||||
| `apiKey` | string | Sí | Clave API de Greptile |
|
||||
| `githubToken` | string | Sí | Token de acceso personal de GitHub con acceso de lectura al repositorio |
|
||||
|
||||
#### Salida
|
||||
|
||||
| Parámetro | Tipo | Descripción |
|
||||
| --------- | ---- | ----------- |
|
||||
| `repositoryId` | string | Identificador único para el repositorio indexado \(formato: remoto:rama:propietario/repo\) |
|
||||
| `statusEndpoint` | string | URL del endpoint para verificar el estado de indexación |
|
||||
| `message` | string | Mensaje de estado sobre la operación de indexación |
|
||||
|
||||
### `greptile_status`
|
||||
|
||||
Verifica el estado de indexación de un repositorio. Usa esto para verificar si un repositorio está listo para ser consultado o para monitorear el progreso de indexación.
|
||||
|
||||
#### Entrada
|
||||
|
||||
| Parámetro | Tipo | Requerido | Descripción |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `remote` | string | Sí | Tipo de remoto Git: github o gitlab |
|
||||
| `repository` | string | Sí | Repositorio en formato propietario/repo \(ej., "facebook/react"\) |
|
||||
| `branch` | string | Sí | Nombre de la rama \(ej., "main" o "master"\) |
|
||||
| `apiKey` | string | Sí | Clave API de Greptile |
|
||||
| `githubToken` | string | Sí | Token de acceso personal de GitHub con acceso de lectura al repositorio |
|
||||
|
||||
#### Salida
|
||||
|
||||
| Parámetro | Tipo | Descripción |
|
||||
| --------- | ---- | ----------- |
|
||||
| `repository` | string | Nombre del repositorio \(propietario/repo\) |
|
||||
| `remote` | string | Remoto Git \(github/gitlab\) |
|
||||
| `branch` | string | Nombre de la rama |
|
||||
| `private` | boolean | Si el repositorio es privado |
|
||||
| `status` | string | Estado de indexación: submitted, cloning, processing, completed o failed |
|
||||
| `filesProcessed` | number | Número de archivos procesados hasta el momento |
|
||||
| `numFiles` | number | Número total de archivos en el repositorio |
|
||||
| `sampleQuestions` | array | Preguntas de ejemplo para el repositorio indexado |
|
||||
| `sha` | string | SHA del commit Git de la versión indexada |
|
||||
|
||||
## Notas
|
||||
|
||||
- Categoría: `tools`
|
||||
- Tipo: `greptile`
|
||||
@@ -55,7 +55,8 @@ Crear un nuevo contacto en Intercom con email, external_id o rol
|
||||
|
||||
| Parámetro | Tipo | Descripción |
|
||||
| --------- | ---- | ----------- |
|
||||
| `contact` | object | Objeto de contacto creado |
|
||||
| `success` | boolean | Estado de éxito de la operación |
|
||||
| `output` | object | Datos del contacto creado |
|
||||
|
||||
### `intercom_get_contact`
|
||||
|
||||
@@ -71,7 +72,8 @@ Obtener un solo contacto por ID desde Intercom
|
||||
|
||||
| Parámetro | Tipo | Descripción |
|
||||
| --------- | ---- | ----------- |
|
||||
| `contact` | object | Objeto de contacto |
|
||||
| `success` | boolean | Estado de éxito de la operación |
|
||||
| `output` | object | Datos del contacto |
|
||||
|
||||
### `intercom_update_contact`
|
||||
|
||||
@@ -99,7 +101,8 @@ Actualizar un contacto existente en Intercom
|
||||
|
||||
| Parámetro | Tipo | Descripción |
|
||||
| --------- | ---- | ----------- |
|
||||
| `contact` | object | Objeto de contacto actualizado |
|
||||
| `success` | boolean | Estado de éxito de la operación |
|
||||
| `output` | object | Datos del contacto actualizado |
|
||||
|
||||
### `intercom_list_contacts`
|
||||
|
||||
@@ -116,7 +119,8 @@ Listar todos los contactos de Intercom con soporte de paginación
|
||||
|
||||
| Parámetro | Tipo | Descripción |
|
||||
| --------- | ---- | ----------- |
|
||||
| `contacts` | array | Array de objetos de contacto |
|
||||
| `success` | boolean | Estado de éxito de la operación |
|
||||
| `output` | object | Lista de contactos |
|
||||
|
||||
### `intercom_search_contacts`
|
||||
|
||||
@@ -136,7 +140,8 @@ Buscar contactos en Intercom usando una consulta
|
||||
|
||||
| Parámetro | Tipo | Descripción |
|
||||
| --------- | ---- | ----------- |
|
||||
| `contacts` | array | Array de objetos de contacto coincidentes |
|
||||
| `success` | boolean | Estado de éxito de la operación |
|
||||
| `output` | object | Resultados de la búsqueda |
|
||||
|
||||
### `intercom_delete_contact`
|
||||
|
||||
@@ -152,9 +157,8 @@ Eliminar un contacto de Intercom por ID
|
||||
|
||||
| Parámetro | Tipo | Descripción |
|
||||
| --------- | ---- | ----------- |
|
||||
| `id` | string | ID del contacto eliminado |
|
||||
| `deleted` | boolean | Si el contacto fue eliminado |
|
||||
| `metadata` | object | Metadatos de la operación |
|
||||
| `success` | boolean | Estado de éxito de la operación |
|
||||
| `output` | object | Resultado de la eliminación |
|
||||
|
||||
### `intercom_create_company`
|
||||
|
||||
@@ -178,7 +182,8 @@ Crear o actualizar una empresa en Intercom
|
||||
|
||||
| Parámetro | Tipo | Descripción |
|
||||
| --------- | ---- | ----------- |
|
||||
| `company` | object | Objeto de empresa creado o actualizado |
|
||||
| `success` | boolean | Estado de éxito de la operación |
|
||||
| `output` | object | Datos de la empresa creada o actualizada |
|
||||
|
||||
### `intercom_get_company`
|
||||
|
||||
@@ -194,7 +199,8 @@ Recuperar una única empresa por ID desde Intercom
|
||||
|
||||
| Parámetro | Tipo | Descripción |
|
||||
| --------- | ---- | ----------- |
|
||||
| `company` | object | Objeto de empresa |
|
||||
| `success` | boolean | Estado de éxito de la operación |
|
||||
| `output` | object | Datos de la empresa |
|
||||
|
||||
### `intercom_list_companies`
|
||||
|
||||
@@ -212,7 +218,8 @@ Lista todas las empresas de Intercom con soporte de paginación. Nota: Este endp
|
||||
|
||||
| Parámetro | Tipo | Descripción |
|
||||
| --------- | ---- | ----------- |
|
||||
| `companies` | array | Array de objetos de empresa |
|
||||
| `success` | boolean | Estado de éxito de la operación |
|
||||
| `output` | object | Lista de empresas |
|
||||
|
||||
### `intercom_get_conversation`
|
||||
|
||||
@@ -230,7 +237,8 @@ Recuperar una sola conversación por ID desde Intercom
|
||||
|
||||
| Parámetro | Tipo | Descripción |
|
||||
| --------- | ---- | ----------- |
|
||||
| `conversation` | object | Objeto de conversación |
|
||||
| `success` | boolean | Estado de éxito de la operación |
|
||||
| `output` | object | Datos de la conversación |
|
||||
|
||||
### `intercom_list_conversations`
|
||||
|
||||
@@ -249,7 +257,8 @@ Listar todas las conversaciones de Intercom con soporte de paginación
|
||||
|
||||
| Parámetro | Tipo | Descripción |
|
||||
| --------- | ---- | ----------- |
|
||||
| `conversations` | array | Array de objetos de conversación |
|
||||
| `success` | boolean | Estado de éxito de la operación |
|
||||
| `output` | object | Lista de conversaciones |
|
||||
|
||||
### `intercom_reply_conversation`
|
||||
|
||||
@@ -270,7 +279,8 @@ Responder a una conversación como administrador en Intercom
|
||||
|
||||
| Parámetro | Tipo | Descripción |
|
||||
| --------- | ---- | ----------- |
|
||||
| `conversation` | object | Objeto de conversación actualizado |
|
||||
| `success` | boolean | Estado de éxito de la operación |
|
||||
| `output` | object | Conversación actualizada con respuesta |
|
||||
|
||||
### `intercom_search_conversations`
|
||||
|
||||
@@ -290,7 +300,8 @@ Buscar conversaciones en Intercom usando una consulta
|
||||
|
||||
| Parámetro | Tipo | Descripción |
|
||||
| --------- | ---- | ----------- |
|
||||
| `conversations` | array | Array de objetos de conversación coincidentes |
|
||||
| `success` | boolean | Estado de éxito de la operación |
|
||||
| `output` | object | Resultados de la búsqueda |
|
||||
|
||||
### `intercom_create_ticket`
|
||||
|
||||
@@ -312,7 +323,8 @@ Crear un nuevo ticket en Intercom
|
||||
|
||||
| Parámetro | Tipo | Descripción |
|
||||
| --------- | ---- | ----------- |
|
||||
| `ticket` | object | Objeto de ticket creado |
|
||||
| `success` | boolean | Estado de éxito de la operación |
|
||||
| `output` | object | Datos del ticket creado |
|
||||
|
||||
### `intercom_get_ticket`
|
||||
|
||||
@@ -328,7 +340,8 @@ Recuperar un solo ticket por ID desde Intercom
|
||||
|
||||
| Parámetro | Tipo | Descripción |
|
||||
| --------- | ---- | ----------- |
|
||||
| `ticket` | object | Objeto de ticket |
|
||||
| `success` | boolean | Estado de éxito de la operación |
|
||||
| `output` | object | Datos del ticket |
|
||||
|
||||
### `intercom_create_message`
|
||||
|
||||
@@ -352,7 +365,8 @@ Crear y enviar un nuevo mensaje iniciado por el administrador en Intercom
|
||||
|
||||
| Parámetro | Tipo | Descripción |
|
||||
| --------- | ---- | ----------- |
|
||||
| `message` | object | Objeto de mensaje creado |
|
||||
| `success` | boolean | Estado de éxito de la operación |
|
||||
| `output` | object | Datos del mensaje creado |
|
||||
|
||||
## Notas
|
||||
|
||||
|
||||
@@ -70,7 +70,8 @@ Insertar o actualizar registros de texto en un índice de Pinecone
|
||||
|
||||
| Parámetro | Tipo | Descripción |
|
||||
| --------- | ---- | ----------- |
|
||||
| `statusText` | string | Estado de la operación de upsert |
|
||||
| `statusText` | string | Estado de la operación de inserción |
|
||||
| `upsertedCount` | number | Número de registros insertados correctamente |
|
||||
|
||||
### `pinecone_search_text`
|
||||
|
||||
|
||||
@@ -266,8 +266,7 @@ Subir un archivo a un bucket de almacenamiento de Supabase
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `projectId` | string | Sí | ID de tu proyecto Supabase \(p. ej., jdrkgepadsdopsntdlom\) |
|
||||
| `bucket` | string | Sí | El nombre del bucket de almacenamiento |
|
||||
| `fileName` | string | Sí | El nombre del archivo \(p. ej., "documento.pdf", "imagen.jpg"\) |
|
||||
| `path` | string | No | Ruta de carpeta opcional \(p. ej., "carpeta/subcarpeta/"\) |
|
||||
| `path` | string | Sí | La ruta donde se almacenará el archivo \(p. ej., "carpeta/archivo.jpg"\) |
|
||||
| `fileContent` | string | Sí | El contenido del archivo \(codificado en base64 para archivos binarios, o texto plano\) |
|
||||
| `contentType` | string | No | Tipo MIME del archivo \(p. ej., "image/jpeg", "text/plain"\) |
|
||||
| `upsert` | boolean | No | Si es verdadero, sobrescribe el archivo existente \(predeterminado: false\) |
|
||||
|
||||
@@ -136,12 +136,9 @@ Recuperar detalles completos y estructura de un formulario específico
|
||||
| `theme` | object | Referencia del tema |
|
||||
| `workspace` | object | Referencia del espacio de trabajo |
|
||||
| `fields` | array | Array de campos/preguntas del formulario |
|
||||
| `welcome_screens` | array | Array de pantallas de bienvenida \(vacío si no hay ninguna configurada\) |
|
||||
| `welcome_screens` | array | Array de pantallas de bienvenida |
|
||||
| `thankyou_screens` | array | Array de pantallas de agradecimiento |
|
||||
| `created_at` | string | Marca de tiempo de creación del formulario \(formato ISO 8601\) |
|
||||
| `last_updated_at` | string | Marca de tiempo de última actualización del formulario \(formato ISO 8601\) |
|
||||
| `published_at` | string | Marca de tiempo de publicación del formulario \(formato ISO 8601\) |
|
||||
| `_links` | object | Enlaces de recursos relacionados incluyendo URL pública del formulario |
|
||||
| `_links` | object | Enlaces a recursos relacionados incluyendo URL pública del formulario |
|
||||
|
||||
### `typeform_create_form`
|
||||
|
||||
@@ -166,13 +163,8 @@ Crear un nuevo formulario con campos y configuraciones
|
||||
| `id` | string | Identificador único del formulario creado |
|
||||
| `title` | string | Título del formulario |
|
||||
| `type` | string | Tipo de formulario |
|
||||
| `settings` | object | Objeto de configuración del formulario |
|
||||
| `theme` | object | Referencia del tema |
|
||||
| `workspace` | object | Referencia del espacio de trabajo |
|
||||
| `fields` | array | Array de campos del formulario creados \(vacío si no se agregó ninguno\) |
|
||||
| `welcome_screens` | array | Array de pantallas de bienvenida \(vacío si no hay ninguna configurada\) |
|
||||
| `thankyou_screens` | array | Array de pantallas de agradecimiento |
|
||||
| `_links` | object | Enlaces de recursos relacionados incluyendo URL pública del formulario |
|
||||
| `fields` | array | Array de campos del formulario creado |
|
||||
| `_links` | object | Enlaces a recursos relacionados incluyendo URL pública del formulario |
|
||||
|
||||
### `typeform_update_form`
|
||||
|
||||
@@ -190,7 +182,16 @@ Actualizar un formulario existente usando operaciones JSON Patch
|
||||
|
||||
| Parámetro | Tipo | Descripción |
|
||||
| --------- | ---- | ----------- |
|
||||
| `message` | string | Mensaje de confirmación de éxito |
|
||||
| `id` | string | Identificador único del formulario actualizado |
|
||||
| `title` | string | Título del formulario |
|
||||
| `type` | string | Tipo de formulario |
|
||||
| `settings` | object | Configuración del formulario |
|
||||
| `theme` | object | Referencia del tema |
|
||||
| `workspace` | object | Referencia del espacio de trabajo |
|
||||
| `fields` | array | Array de campos del formulario |
|
||||
| `welcome_screens` | array | Array de pantallas de bienvenida |
|
||||
| `thankyou_screens` | array | Array de pantallas de agradecimiento |
|
||||
| `_links` | object | Enlaces a recursos relacionados |
|
||||
|
||||
### `typeform_delete_form`
|
||||
|
||||
|
||||
@@ -146,32 +146,6 @@ Extrayez des données structurées de pages web entières à l'aide d'instructio
|
||||
| `success` | boolean | Indique si l'opération d'extraction a réussi |
|
||||
| `data` | object | Données structurées extraites selon le schéma ou l'invite |
|
||||
|
||||
### `firecrawl_agent`
|
||||
|
||||
Agent autonome d'extraction de données web. Recherche et collecte des informations basées sur des instructions en langage naturel sans nécessiter d'URLs spécifiques.
|
||||
|
||||
#### Entrée
|
||||
|
||||
| Paramètre | Type | Obligatoire | Description |
|
||||
| --------- | ---- | ----------- | ----------- |
|
||||
| `prompt` | string | Oui | Description en langage naturel des données à extraire (max 10 000 caractères) |
|
||||
| `urls` | json | Non | Tableau optionnel d'URLs sur lesquelles concentrer l'agent |
|
||||
| `schema` | json | Non | Schéma JSON définissant la structure des données à extraire |
|
||||
| `maxCredits` | number | Non | Nombre maximum de crédits à dépenser pour cette tâche d'agent |
|
||||
| `strictConstrainToURLs` | boolean | Non | Si true, l'agent visitera uniquement les URLs fournies dans le tableau urls |
|
||||
| `apiKey` | string | Oui | Clé API Firecrawl |
|
||||
|
||||
#### Sortie
|
||||
|
||||
| Paramètre | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | Indique si l'opération de l'agent a réussi |
|
||||
| `status` | string | Statut actuel de la tâche de l'agent (processing, completed, failed) |
|
||||
| `data` | object | Données extraites par l'agent |
|
||||
| `creditsUsed` | number | Nombre de crédits consommés par cette tâche d'agent |
|
||||
| `expiresAt` | string | Horodatage d'expiration des résultats (24 heures) |
|
||||
| `sources` | object | Tableau des URLs sources utilisées par l'agent |
|
||||
|
||||
## Remarques
|
||||
|
||||
- Catégorie : `tools`
|
||||
|
||||
@@ -1,136 +0,0 @@
|
||||
---
|
||||
title: Greptile
|
||||
description: Recherche de base de code et questions-réponses alimentées par l'IA
|
||||
---
|
||||
|
||||
import { BlockInfoCard } from "@/components/ui/block-info-card"
|
||||
|
||||
<BlockInfoCard
|
||||
type="greptile"
|
||||
color="#e5e5e5"
|
||||
/>
|
||||
|
||||
{/* MANUAL-CONTENT-START:intro */}
|
||||
[Greptile](https://greptile.com/) est un outil de développement alimenté par l'IA pour rechercher et interroger le code source dans un ou plusieurs dépôts. Greptile permet aux ingénieurs de répondre rapidement à des questions complexes sur la base de code en langage naturel, de localiser des fichiers ou symboles pertinents et d'obtenir des informations sur du code inconnu ou hérité.
|
||||
|
||||
Avec Greptile, vous pouvez :
|
||||
|
||||
- **Poser des questions complexes sur votre base de code en langage naturel** : obtenez des réponses générées par l'IA sur l'architecture, les modèles d'utilisation ou des implémentations spécifiques.
|
||||
- **Trouver instantanément du code, des fichiers ou des fonctions pertinents** : recherchez à l'aide de mots-clés ou de requêtes en langage naturel et accédez directement aux lignes, fichiers ou blocs de code correspondants.
|
||||
- **Comprendre les dépendances et les relations** : découvrez où les fonctions sont appelées, comment les modules sont liés ou où les API sont utilisées dans de grandes bases de code.
|
||||
- **Accélérer l'intégration et l'exploration du code** : montez rapidement en compétence sur de nouveaux projets ou déboguez des problèmes complexes sans avoir besoin d'un contexte préalable approfondi.
|
||||
|
||||
L'intégration Sim Greptile permet à vos agents IA de :
|
||||
|
||||
- Interroger et rechercher des dépôts privés et publics en utilisant les modèles de langage avancés de Greptile.
|
||||
- Récupérer des extraits de code contextuellement pertinents, des références de fichiers et des explications pour soutenir la revue de code, la documentation et les flux de travail de développement.
|
||||
- Déclencher des automatisations dans les workflows Sim en fonction des résultats de recherche/requête ou intégrer l'intelligence du code directement dans vos processus.
|
||||
|
||||
Que vous cherchiez à accélérer la productivité des développeurs, à automatiser la documentation ou à renforcer la compréhension de votre équipe d'une base de code complexe, Greptile et Sim offrent un accès transparent à l'intelligence et à la recherche de code, exactement là où vous en avez besoin.
|
||||
{/* MANUAL-CONTENT-END */}
|
||||
|
||||
## Instructions d'utilisation
|
||||
|
||||
Interrogez et recherchez des bases de code en langage naturel avec Greptile. Obtenez des réponses générées par l'IA sur votre code, trouvez des fichiers pertinents et comprenez des bases de code complexes.
|
||||
|
||||
## Outils
|
||||
|
||||
### `greptile_query`
|
||||
|
||||
Interrogez les dépôts en langage naturel et obtenez des réponses avec des références de code pertinentes. Greptile utilise l'IA pour comprendre votre base de code et répondre aux questions.
|
||||
|
||||
#### Entrée
|
||||
|
||||
| Paramètre | Type | Requis | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `query` | string | Oui | Question en langage naturel sur la base de code |
|
||||
| `repositories` | string | Oui | Liste de dépôts séparés par des virgules. Format : "github:branch:owner/repo" ou simplement "owner/repo" \(par défaut github:main\) |
|
||||
| `sessionId` | string | Non | ID de session pour la continuité de la conversation |
|
||||
| `genius` | boolean | Non | Activer le mode genius pour une analyse plus approfondie \(plus lent mais plus précis\) |
|
||||
| `apiKey` | string | Oui | Clé API Greptile |
|
||||
| `githubToken` | string | Oui | Jeton d'accès personnel GitHub avec accès en lecture au dépôt |
|
||||
|
||||
#### Sortie
|
||||
|
||||
| Paramètre | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `message` | string | Réponse générée par l'IA à la requête |
|
||||
| `sources` | array | Références de code pertinentes qui appuient la réponse |
|
||||
|
||||
### `greptile_search`
|
||||
|
||||
Recherchez dans les dépôts en langage naturel et obtenez des références de code pertinentes sans générer de réponse. Utile pour trouver des emplacements de code spécifiques.
|
||||
|
||||
#### Entrée
|
||||
|
||||
| Paramètre | Type | Requis | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `query` | string | Oui | Requête de recherche en langage naturel pour trouver du code pertinent |
|
||||
| `repositories` | string | Oui | Liste de dépôts séparés par des virgules. Format : "github:branch:owner/repo" ou simplement "owner/repo" \(par défaut github:main\) |
|
||||
| `sessionId` | string | Non | ID de session pour la continuité de la conversation |
|
||||
| `genius` | boolean | Non | Activer le mode genius pour une recherche plus approfondie \(plus lent mais plus précis\) |
|
||||
| `apiKey` | string | Oui | Clé API Greptile |
|
||||
| `githubToken` | string | Oui | Jeton d'accès personnel GitHub avec accès en lecture au dépôt |
|
||||
|
||||
#### Sortie
|
||||
|
||||
| Paramètre | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `sources` | array | Références de code pertinentes correspondant à la requête de recherche |
|
||||
|
||||
### `greptile_index_repo`
|
||||
|
||||
Soumettre un dépôt pour qu'il soit indexé par Greptile. L'indexation doit être terminée avant que le dépôt puisse être interrogé. Les petits dépôts prennent 3 à 5 minutes, les plus grands peuvent prendre plus d'une heure.
|
||||
|
||||
#### Entrée
|
||||
|
||||
| Paramètre | Type | Requis | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `remote` | string | Oui | Type de dépôt distant : github ou gitlab |
|
||||
| `repository` | string | Oui | Dépôt au format propriétaire/dépôt \(par exemple, "facebook/react"\) |
|
||||
| `branch` | string | Oui | Branche à indexer \(par exemple, "main" ou "master"\) |
|
||||
| `reload` | boolean | Non | Forcer la réindexation même si déjà indexé |
|
||||
| `notify` | boolean | Non | Envoyer une notification par e-mail lorsque l'indexation est terminée |
|
||||
| `apiKey` | string | Oui | Clé API Greptile |
|
||||
| `githubToken` | string | Oui | Jeton d'accès personnel GitHub avec accès en lecture au dépôt |
|
||||
|
||||
#### Sortie
|
||||
|
||||
| Paramètre | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `repositoryId` | string | Identifiant unique du dépôt indexé \(format : distant:branche:propriétaire/dépôt\) |
|
||||
| `statusEndpoint` | string | Point de terminaison URL pour vérifier l'état de l'indexation |
|
||||
| `message` | string | Message d'état concernant l'opération d'indexation |
|
||||
|
||||
### `greptile_status`
|
||||
|
||||
Vérifier l'état d'indexation d'un dépôt. Utilisez ceci pour vérifier si un dépôt est prêt à être interrogé ou pour surveiller la progression de l'indexation.
|
||||
|
||||
#### Entrée
|
||||
|
||||
| Paramètre | Type | Requis | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `remote` | string | Oui | Type de dépôt distant Git : github ou gitlab |
|
||||
| `repository` | string | Oui | Dépôt au format propriétaire/dépôt \(par ex., "facebook/react"\) |
|
||||
| `branch` | string | Oui | Nom de la branche \(par ex., "main" ou "master"\) |
|
||||
| `apiKey` | string | Oui | Clé API Greptile |
|
||||
| `githubToken` | string | Oui | Jeton d'accès personnel GitHub avec accès en lecture au dépôt |
|
||||
|
||||
#### Sortie
|
||||
|
||||
| Paramètre | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `repository` | string | Nom du dépôt \(propriétaire/dépôt\) |
|
||||
| `remote` | string | Dépôt distant Git \(github/gitlab\) |
|
||||
| `branch` | string | Nom de la branche |
|
||||
| `private` | boolean | Indique si le dépôt est privé |
|
||||
| `status` | string | Statut d'indexation : submitted, cloning, processing, completed ou failed |
|
||||
| `filesProcessed` | number | Nombre de fichiers traités jusqu'à présent |
|
||||
| `numFiles` | number | Nombre total de fichiers dans le dépôt |
|
||||
| `sampleQuestions` | array | Exemples de questions pour le dépôt indexé |
|
||||
| `sha` | string | SHA du commit Git de la version indexée |
|
||||
|
||||
## Remarques
|
||||
|
||||
- Catégorie : `tools`
|
||||
- Type : `greptile`
|
||||
@@ -56,7 +56,8 @@ Créer un nouveau contact dans Intercom avec email, external_id ou role
|
||||
|
||||
| Paramètre | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `contact` | object | Objet contact créé |
|
||||
| `success` | boolean | Statut de réussite de l'opération |
|
||||
| `output` | object | Données du contact créé |
|
||||
|
||||
### `intercom_get_contact`
|
||||
|
||||
@@ -72,7 +73,8 @@ Obtenir un seul contact par ID depuis Intercom
|
||||
|
||||
| Paramètre | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `contact` | object | Objet contact |
|
||||
| `success` | boolean | Statut de réussite de l'opération |
|
||||
| `output` | object | Données du contact |
|
||||
|
||||
### `intercom_update_contact`
|
||||
|
||||
@@ -100,7 +102,8 @@ Mettre à jour un contact existant dans Intercom
|
||||
|
||||
| Paramètre | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `contact` | object | Objet contact mis à jour |
|
||||
| `success` | boolean | Statut de réussite de l'opération |
|
||||
| `output` | object | Données du contact mises à jour |
|
||||
|
||||
### `intercom_list_contacts`
|
||||
|
||||
@@ -117,7 +120,8 @@ Lister tous les contacts d'Intercom avec prise en charge de la pagination
|
||||
|
||||
| Paramètre | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `contacts` | array | Tableau d'objets contact |
|
||||
| `success` | booléen | Statut de réussite de l'opération |
|
||||
| `output` | objet | Liste des contacts |
|
||||
|
||||
### `intercom_search_contacts`
|
||||
|
||||
@@ -137,7 +141,8 @@ Rechercher des contacts dans Intercom à l'aide d'une requête
|
||||
|
||||
| Paramètre | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `contacts` | array | Tableau d'objets contact correspondants |
|
||||
| `success` | booléen | Statut de réussite de l'opération |
|
||||
| `output` | objet | Résultats de la recherche |
|
||||
|
||||
### `intercom_delete_contact`
|
||||
|
||||
@@ -153,9 +158,8 @@ Supprimer un contact d'Intercom par ID
|
||||
|
||||
| Paramètre | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `id` | string | ID du contact supprimé |
|
||||
| `deleted` | boolean | Indique si le contact a été supprimé |
|
||||
| `metadata` | object | Métadonnées de l'opération |
|
||||
| `success` | booléen | Statut de réussite de l'opération |
|
||||
| `output` | objet | Résultat de la suppression |
|
||||
|
||||
### `intercom_create_company`
|
||||
|
||||
@@ -179,7 +183,8 @@ Créer ou mettre à jour une entreprise dans Intercom
|
||||
|
||||
| Paramètre | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `company` | object | Objet entreprise créé ou mis à jour |
|
||||
| `success` | booléen | Statut de réussite de l'opération |
|
||||
| `output` | objet | Données de l'entreprise créée ou mise à jour |
|
||||
|
||||
### `intercom_get_company`
|
||||
|
||||
@@ -195,7 +200,8 @@ Récupérer une seule entreprise par ID depuis Intercom
|
||||
|
||||
| Paramètre | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `company` | object | Objet entreprise |
|
||||
| `success` | booléen | Statut de réussite de l'opération |
|
||||
| `output` | objet | Données de l'entreprise |
|
||||
|
||||
### `intercom_list_companies`
|
||||
|
||||
@@ -213,7 +219,8 @@ Liste toutes les entreprises d'Intercom avec prise en charge de la pagination. R
|
||||
|
||||
| Paramètre | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `companies` | array | Tableau d'objets entreprise |
|
||||
| `success` | boolean | Statut de réussite de l'opération |
|
||||
| `output` | object | Liste des entreprises |
|
||||
|
||||
### `intercom_get_conversation`
|
||||
|
||||
@@ -231,7 +238,8 @@ Récupérer une seule conversation par ID depuis Intercom
|
||||
|
||||
| Paramètre | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `conversation` | object | Objet conversation |
|
||||
| `success` | boolean | Statut de réussite de l'opération |
|
||||
| `output` | object | Données de la conversation |
|
||||
|
||||
### `intercom_list_conversations`
|
||||
|
||||
@@ -250,7 +258,8 @@ Lister toutes les conversations depuis Intercom avec prise en charge de la pagin
|
||||
|
||||
| Paramètre | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `conversations` | array | Tableau d'objets conversation |
|
||||
| `success` | boolean | Statut de réussite de l'opération |
|
||||
| `output` | object | Liste des conversations |
|
||||
|
||||
### `intercom_reply_conversation`
|
||||
|
||||
@@ -271,7 +280,8 @@ Répondre à une conversation en tant qu'administrateur dans Intercom
|
||||
|
||||
| Paramètre | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `conversation` | object | Objet conversation mis à jour |
|
||||
| `success` | boolean | Statut de réussite de l'opération |
|
||||
| `output` | object | Conversation mise à jour avec la réponse |
|
||||
|
||||
### `intercom_search_conversations`
|
||||
|
||||
@@ -291,7 +301,8 @@ Rechercher des conversations dans Intercom à l'aide d'une requête
|
||||
|
||||
| Paramètre | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `conversations` | array | Tableau d'objets conversation correspondants |
|
||||
| `success` | boolean | Statut de réussite de l'opération |
|
||||
| `output` | object | Résultats de la recherche |
|
||||
|
||||
### `intercom_create_ticket`
|
||||
|
||||
@@ -313,7 +324,8 @@ Créer un nouveau ticket dans Intercom
|
||||
|
||||
| Paramètre | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `ticket` | object | Objet ticket créé |
|
||||
| `success` | boolean | Statut de réussite de l'opération |
|
||||
| `output` | object | Données du ticket créé |
|
||||
|
||||
### `intercom_get_ticket`
|
||||
|
||||
@@ -329,7 +341,8 @@ Récupérer un ticket unique par ID depuis Intercom
|
||||
|
||||
| Paramètre | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `ticket` | object | Objet ticket |
|
||||
| `success` | boolean | Statut de réussite de l'opération |
|
||||
| `output` | object | Données du ticket |
|
||||
|
||||
### `intercom_create_message`
|
||||
|
||||
@@ -353,7 +366,8 @@ Créer et envoyer un nouveau message initié par l'administrateur dans Intercom
|
||||
|
||||
| Paramètre | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `message` | object | Objet message créé |
|
||||
| `success` | boolean | Statut de réussite de l'opération |
|
||||
| `output` | object | Données du message créé |
|
||||
|
||||
## Notes
|
||||
|
||||
|
||||
@@ -70,7 +70,8 @@ Insérer ou mettre à jour des enregistrements textuels dans un index Pinecone
|
||||
|
||||
| Paramètre | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `statusText` | string | Statut de l'opération d'insertion ou de mise à jour |
|
||||
| `statusText` | chaîne | Statut de l'opération d'insertion |
|
||||
| `upsertedCount` | nombre | Nombre d'enregistrements insérés avec succès |
|
||||
|
||||
### `pinecone_search_text`
|
||||
|
||||
|
||||
@@ -266,8 +266,7 @@ Téléverser un fichier vers un bucket de stockage Supabase
|
||||
| --------- | ---- | ----------- | ----------- |
|
||||
| `projectId` | string | Oui | L'ID de votre projet Supabase \(ex. : jdrkgepadsdopsntdlom\) |
|
||||
| `bucket` | string | Oui | Le nom du bucket de stockage |
|
||||
| `fileName` | string | Oui | Le nom du fichier \(ex. : "document.pdf", "image.jpg"\) |
|
||||
| `path` | string | Non | Chemin de dossier optionnel \(ex. : "dossier/sousdossier/"\) |
|
||||
| `path` | string | Oui | Le chemin où le fichier sera stocké \(ex. : "dossier/fichier.jpg"\) |
|
||||
| `fileContent` | string | Oui | Le contenu du fichier \(encodé en base64 pour les fichiers binaires, ou texte brut\) |
|
||||
| `contentType` | string | Non | Type MIME du fichier \(ex. : "image/jpeg", "text/plain"\) |
|
||||
| `upsert` | boolean | Non | Si vrai, écrase le fichier existant \(par défaut : false\) |
|
||||
|
||||
@@ -132,16 +132,13 @@ Récupérer les détails complets et la structure d'un formulaire spécifique
|
||||
| `id` | chaîne | Identifiant unique du formulaire |
|
||||
| `title` | chaîne | Titre du formulaire |
|
||||
| `type` | chaîne | Type de formulaire \(form, quiz, etc.\) |
|
||||
| `settings` | objet | Paramètres du formulaire incluant la langue, la barre de progression, etc. |
|
||||
| `settings` | objet | Paramètres du formulaire incluant langue, barre de progression, etc. |
|
||||
| `theme` | objet | Référence du thème |
|
||||
| `workspace` | objet | Référence de l'espace de travail |
|
||||
| `fields` | tableau | Tableau des champs/questions du formulaire |
|
||||
| `welcome_screens` | tableau | Tableau des écrans d'accueil \(vide si aucun n'est configuré\) |
|
||||
| `welcome_screens` | tableau | Tableau des écrans d'accueil |
|
||||
| `thankyou_screens` | tableau | Tableau des écrans de remerciement |
|
||||
| `created_at` | chaîne | Horodatage de création du formulaire \(format ISO 8601\) |
|
||||
| `last_updated_at` | chaîne | Horodatage de dernière mise à jour du formulaire \(format ISO 8601\) |
|
||||
| `published_at` | chaîne | Horodatage de publication du formulaire \(format ISO 8601\) |
|
||||
| `_links` | objet | Liens vers les ressources associées incluant l'URL publique du formulaire |
|
||||
| `_links` | objet | Liens vers les ressources associées, y compris l'URL publique du formulaire |
|
||||
|
||||
### `typeform_create_form`
|
||||
|
||||
@@ -166,13 +163,8 @@ Créer un nouveau formulaire avec champs et paramètres
|
||||
| `id` | chaîne | Identifiant unique du formulaire créé |
|
||||
| `title` | chaîne | Titre du formulaire |
|
||||
| `type` | chaîne | Type de formulaire |
|
||||
| `settings` | objet | Objet de paramètres du formulaire |
|
||||
| `theme` | objet | Référence du thème |
|
||||
| `workspace` | objet | Référence de l'espace de travail |
|
||||
| `fields` | tableau | Tableau des champs du formulaire créés \(vide si aucun n'a été ajouté\) |
|
||||
| `welcome_screens` | tableau | Tableau des écrans d'accueil \(vide si aucun n'est configuré\) |
|
||||
| `thankyou_screens` | tableau | Tableau des écrans de remerciement |
|
||||
| `_links` | objet | Liens vers les ressources associées incluant l'URL publique du formulaire |
|
||||
| `fields` | tableau | Tableau des champs du formulaire créé |
|
||||
| `_links` | objet | Liens vers les ressources associées, y compris l'URL publique du formulaire |
|
||||
|
||||
### `typeform_update_form`
|
||||
|
||||
@@ -190,7 +182,16 @@ Mettre à jour un formulaire existant à l'aide d'opérations JSON Patch
|
||||
|
||||
| Paramètre | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `message` | chaîne | Message de confirmation de succès |
|
||||
| `id` | chaîne | Identifiant unique du formulaire mis à jour |
|
||||
| `title` | chaîne | Titre du formulaire |
|
||||
| `type` | chaîne | Type de formulaire |
|
||||
| `settings` | objet | Paramètres du formulaire |
|
||||
| `theme` | objet | Référence du thème |
|
||||
| `workspace` | objet | Référence de l'espace de travail |
|
||||
| `fields` | tableau | Tableau des champs du formulaire |
|
||||
| `welcome_screens` | tableau | Tableau des écrans d'accueil |
|
||||
| `thankyou_screens` | tableau | Tableau des écrans de remerciement |
|
||||
| `_links` | objet | Liens vers les ressources associées |
|
||||
|
||||
### `typeform_delete_form`
|
||||
|
||||
|
||||
@@ -146,33 +146,7 @@ Firecrawlを使用してウェブ上の情報を検索します
|
||||
| `success` | boolean | 抽出操作が成功したかどうか |
|
||||
| `data` | object | スキーマまたはプロンプトに従って抽出された構造化データ |
|
||||
|
||||
### `firecrawl_agent`
|
||||
## 注意事項
|
||||
|
||||
自律型ウェブデータ抽出エージェント。特定のURLを必要とせず、自然言語プロンプトに基づいて情報を検索・収集します。
|
||||
|
||||
#### 入力
|
||||
|
||||
| パラメータ | 型 | 必須 | 説明 |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `prompt` | string | はい | 抽出するデータの自然言語による説明(最大10,000文字) |
|
||||
| `urls` | json | いいえ | エージェントが焦点を当てるURLの配列(オプション) |
|
||||
| `schema` | json | いいえ | 抽出するデータの構造を定義するJSONスキーマ |
|
||||
| `maxCredits` | number | いいえ | このエージェントタスクに使用する最大クレジット数 |
|
||||
| `strictConstrainToURLs` | boolean | いいえ | trueの場合、エージェントはurls配列で提供されたURLのみを訪問します |
|
||||
| `apiKey` | string | はい | Firecrawl APIキー |
|
||||
|
||||
#### 出力
|
||||
|
||||
| パラメータ | 型 | 説明 |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | エージェント操作が成功したかどうか |
|
||||
| `status` | string | エージェントジョブの現在のステータス(processing、completed、failed) |
|
||||
| `data` | object | エージェントから抽出されたデータ |
|
||||
| `creditsUsed` | number | このエージェントタスクで消費されたクレジット数 |
|
||||
| `expiresAt` | string | 結果の有効期限のタイムスタンプ(24時間) |
|
||||
| `sources` | object | エージェントが使用したソースURLの配列 |
|
||||
|
||||
## 注記
|
||||
|
||||
- カテゴリ:`tools`
|
||||
- タイプ:`firecrawl`
|
||||
- カテゴリー: `tools`
|
||||
- タイプ: `firecrawl`
|
||||
|
||||
@@ -1,136 +0,0 @@
|
||||
---
|
||||
title: Greptile
|
||||
description: AI搭載のコードベース検索とQ&A
|
||||
---
|
||||
|
||||
import { BlockInfoCard } from "@/components/ui/block-info-card"
|
||||
|
||||
<BlockInfoCard
|
||||
type="greptile"
|
||||
color="#e5e5e5"
|
||||
/>
|
||||
|
||||
{/* MANUAL-CONTENT-START:intro */}
|
||||
[Greptile](https://greptile.com/)は、1つまたは複数のリポジトリにわたってソースコードを検索およびクエリするためのAI搭載開発者ツールです。Greptileを使用すると、エンジニアは自然言語で複雑なコードベースの質問に素早く回答し、関連するファイルやシンボルを見つけ、馴染みのないコードやレガシーコードについての洞察を得ることができます。
|
||||
|
||||
Greptileでできること:
|
||||
|
||||
- **自然言語でコードベースについて複雑な質問をする**: アーキテクチャ、使用パターン、または特定の実装についてAIが生成した回答を取得します。
|
||||
- **関連するコード、ファイル、または関数を即座に見つける**: キーワードまたは自然言語クエリを使用して検索し、一致する行、ファイル、またはコードブロックに直接ジャンプします。
|
||||
- **依存関係と関連性を理解する**: 大規模なコードベース全体で、関数がどこで呼び出されているか、モジュールがどのように関連しているか、またはAPIがどこで使用されているかを明らかにします。
|
||||
- **オンボーディングとコード探索を加速する**: 深い事前知識がなくても、新しいプロジェクトを素早く立ち上げたり、厄介な問題をデバッグしたりできます。
|
||||
|
||||
Sim Greptile統合により、AIエージェントは次のことが可能になります:
|
||||
|
||||
- Greptileの高度な言語モデルを使用して、プライベートおよびパブリックリポジトリをクエリおよび検索します。
|
||||
- コンテキストに関連するコードスニペット、ファイル参照、および説明を取得して、コードレビュー、ドキュメント、および開発ワークフローをサポートします。
|
||||
- 検索/クエリ結果に基づいてSimワークフローで自動化をトリガーするか、コードインテリジェンスをプロセスに直接埋め込みます。
|
||||
|
||||
開発者の生産性を加速したり、ドキュメントを自動化したり、複雑なコードベースに対するチームの理解を強化したりする場合でも、GreptileとSimは、必要な場所でコードインテリジェンスと検索へのシームレスなアクセスを提供します。
|
||||
{/* MANUAL-CONTENT-END */}
|
||||
|
||||
## 使用方法
|
||||
|
||||
Greptileを使用して自然言語でコードベースをクエリおよび検索します。コードについてAIが生成した回答を取得し、関連するファイルを見つけ、複雑なコードベースを理解します。
|
||||
|
||||
## ツール
|
||||
|
||||
### `greptile_query`
|
||||
|
||||
自然言語でリポジトリを検索し、関連するコード参照とともに回答を取得します。Greptileは、AIを使用してコードベースを理解し、質問に答えます。
|
||||
|
||||
#### 入力
|
||||
|
||||
| パラメータ | 型 | 必須 | 説明 |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `query` | string | はい | コードベースに関する自然言語の質問 |
|
||||
| `repositories` | string | はい | カンマ区切りのリポジトリリスト。形式:「github:branch:owner/repo」または「owner/repo」のみ(デフォルトはgithub:main) |
|
||||
| `sessionId` | string | いいえ | 会話の継続性を保つためのセッションID |
|
||||
| `genius` | boolean | いいえ | より徹底的な分析のためのジーニアスモードを有効化(遅いがより正確) |
|
||||
| `apiKey` | string | はい | Greptile APIキー |
|
||||
| `githubToken` | string | はい | リポジトリ読み取りアクセス権を持つGitHub個人アクセストークン |
|
||||
|
||||
#### 出力
|
||||
|
||||
| パラメータ | 型 | 説明 |
|
||||
| --------- | ---- | ----------- |
|
||||
| `message` | string | クエリに対するAI生成の回答 |
|
||||
| `sources` | array | 回答を裏付ける関連コード参照 |
|
||||
|
||||
### `greptile_search`
|
||||
|
||||
自然言語でリポジトリを検索し、回答を生成せずに関連するコード参照を取得します。特定のコードの場所を見つけるのに便利です。
|
||||
|
||||
#### 入力
|
||||
|
||||
| パラメータ | 型 | 必須 | 説明 |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `query` | string | はい | 関連するコードを見つけるための自然言語検索クエリ |
|
||||
| `repositories` | string | はい | カンマ区切りのリポジトリリスト。形式:「github:branch:owner/repo」または「owner/repo」のみ(デフォルトはgithub:main) |
|
||||
| `sessionId` | string | いいえ | 会話の継続性を保つためのセッションID |
|
||||
| `genius` | boolean | いいえ | より徹底的な検索のためのジーニアスモードを有効化(遅いがより正確) |
|
||||
| `apiKey` | string | はい | Greptile APIキー |
|
||||
| `githubToken` | string | はい | リポジトリ読み取りアクセス権を持つGitHub個人アクセストークン |
|
||||
|
||||
#### 出力
|
||||
|
||||
| パラメータ | 型 | 説明 |
|
||||
| --------- | ---- | ----------- |
|
||||
| `sources` | array | 検索クエリに一致する関連コード参照 |
|
||||
|
||||
### `greptile_index_repo`
|
||||
|
||||
Greptileでインデックス化するリポジトリを送信します。リポジトリをクエリする前に、インデックス化を完了する必要があります。小規模なリポジトリは3〜5分、大規模なものは1時間以上かかる場合があります。
|
||||
|
||||
#### 入力
|
||||
|
||||
| パラメータ | 型 | 必須 | 説明 |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `remote` | string | はい | Gitリモートタイプ: githubまたはgitlab |
|
||||
| `repository` | string | はい | owner/repo形式のリポジトリ(例:「facebook/react」) |
|
||||
| `branch` | string | はい | インデックス化するブランチ(例:「main」または「master」) |
|
||||
| `reload` | boolean | いいえ | すでにインデックス化されている場合でも強制的に再インデックス化 |
|
||||
| `notify` | boolean | いいえ | インデックス化完了時にメール通知を送信 |
|
||||
| `apiKey` | string | はい | Greptile APIキー |
|
||||
| `githubToken` | string | はい | リポジトリ読み取りアクセス権を持つGitHub Personal Access Token |
|
||||
|
||||
#### 出力
|
||||
|
||||
| パラメータ | 型 | 説明 |
|
||||
| --------- | ---- | ----------- |
|
||||
| `repositoryId` | string | インデックス化されたリポジトリの一意の識別子(形式: remote:branch:owner/repo) |
|
||||
| `statusEndpoint` | string | インデックス化ステータスを確認するためのURLエンドポイント |
|
||||
| `message` | string | インデックス化操作に関するステータスメッセージ |
|
||||
|
||||
### `greptile_status`
|
||||
|
||||
リポジトリのインデックス化ステータスを確認します。リポジトリがクエリ可能な状態かどうかを確認したり、インデックス化の進行状況を監視したりするために使用します。
|
||||
|
||||
#### 入力
|
||||
|
||||
| パラメータ | 型 | 必須 | 説明 |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `remote` | string | はい | Gitリモートタイプ: githubまたはgitlab |
|
||||
| `repository` | string | はい | owner/repo形式のリポジトリ \(例: "facebook/react"\) |
|
||||
| `branch` | string | はい | ブランチ名 \(例: "main"または"master"\) |
|
||||
| `apiKey` | string | はい | Greptile APIキー |
|
||||
| `githubToken` | string | はい | リポジトリ読み取りアクセス権を持つGitHub Personal Access Token |
|
||||
|
||||
#### 出力
|
||||
|
||||
| パラメータ | 型 | 説明 |
|
||||
| --------- | ---- | ----------- |
|
||||
| `repository` | string | リポジトリ名 \(owner/repo\) |
|
||||
| `remote` | string | Gitリモート \(github/gitlab\) |
|
||||
| `branch` | string | ブランチ名 |
|
||||
| `private` | boolean | リポジトリがプライベートかどうか |
|
||||
| `status` | string | インデックス作成ステータス: submitted、cloning、processing、completed、またはfailed |
|
||||
| `filesProcessed` | number | これまでに処理されたファイル数 |
|
||||
| `numFiles` | number | リポジトリ内のファイルの総数 |
|
||||
| `sampleQuestions` | array | インデックス化されたリポジトリのサンプル質問 |
|
||||
| `sha` | string | インデックス化されたバージョンのGitコミットSHA |
|
||||
|
||||
## 注記
|
||||
|
||||
- カテゴリ: `tools`
|
||||
- タイプ: `greptile`
|
||||
@@ -55,7 +55,8 @@ Intercomをワークフローに統合します。連絡先の作成、取得、
|
||||
|
||||
| パラメータ | 型 | 説明 |
|
||||
| --------- | ---- | ----------- |
|
||||
| `contact` | object | 作成された連絡先オブジェクト |
|
||||
| `success` | boolean | 操作の成功ステータス |
|
||||
| `output` | object | 作成された連絡先データ |
|
||||
|
||||
### `intercom_get_contact`
|
||||
|
||||
@@ -71,7 +72,8 @@ IDからIntercomの単一の連絡先を取得する
|
||||
|
||||
| パラメータ | 型 | 説明 |
|
||||
| --------- | ---- | ----------- |
|
||||
| `contact` | object | 連絡先オブジェクト |
|
||||
| `success` | boolean | 操作成功ステータス |
|
||||
| `output` | object | 連絡先データ |
|
||||
|
||||
### `intercom_update_contact`
|
||||
|
||||
@@ -99,7 +101,8 @@ Intercomの既存の連絡先を更新する
|
||||
|
||||
| パラメータ | 型 | 説明 |
|
||||
| --------- | ---- | ----------- |
|
||||
| `contact` | object | 更新された連絡先オブジェクト |
|
||||
| `success` | boolean | 操作成功ステータス |
|
||||
| `output` | object | 更新された連絡先データ |
|
||||
|
||||
### `intercom_list_contacts`
|
||||
|
||||
@@ -116,7 +119,8 @@ Intercomの既存の連絡先を更新する
|
||||
|
||||
| パラメータ | 型 | 説明 |
|
||||
| --------- | ---- | ----------- |
|
||||
| `contacts` | array | 連絡先オブジェクトの配列 |
|
||||
| `success` | boolean | 操作成功ステータス |
|
||||
| `output` | object | 連絡先リスト |
|
||||
|
||||
### `intercom_search_contacts`
|
||||
|
||||
@@ -136,7 +140,8 @@ Intercomの既存の連絡先を更新する
|
||||
|
||||
| パラメータ | 型 | 説明 |
|
||||
| --------- | ---- | ----------- |
|
||||
| `contacts` | array | 一致する連絡先オブジェクトの配列 |
|
||||
| `success` | boolean | 操作成功ステータス |
|
||||
| `output` | object | 検索結果 |
|
||||
|
||||
### `intercom_delete_contact`
|
||||
|
||||
@@ -152,9 +157,8 @@ IDでIntercomから連絡先を削除する
|
||||
|
||||
| パラメータ | 型 | 説明 |
|
||||
| --------- | ---- | ----------- |
|
||||
| `id` | string | 削除された連絡先のID |
|
||||
| `deleted` | boolean | 連絡先が削除されたかどうか |
|
||||
| `metadata` | object | 操作メタデータ |
|
||||
| `success` | boolean | 操作成功ステータス |
|
||||
| `output` | object | 削除結果 |
|
||||
|
||||
### `intercom_create_company`
|
||||
|
||||
@@ -178,7 +182,8 @@ Intercomで企業を作成または更新する
|
||||
|
||||
| パラメータ | 型 | 説明 |
|
||||
| --------- | ---- | ----------- |
|
||||
| `company` | object | 作成または更新された企業オブジェクト |
|
||||
| `success` | boolean | 操作の成功ステータス |
|
||||
| `output` | object | 作成または更新された企業データ |
|
||||
|
||||
### `intercom_get_company`
|
||||
|
||||
@@ -194,7 +199,8 @@ IDによってIntercomから単一の企業を取得する
|
||||
|
||||
| パラメータ | 型 | 説明 |
|
||||
| --------- | ---- | ----------- |
|
||||
| `company` | object | 企業オブジェクト |
|
||||
| `success` | boolean | 操作の成功ステータス |
|
||||
| `output` | object | 企業データ |
|
||||
|
||||
### `intercom_list_companies`
|
||||
|
||||
@@ -212,7 +218,8 @@ IDによってIntercomから単一の企業を取得する
|
||||
|
||||
| パラメータ | 型 | 説明 |
|
||||
| --------- | ---- | ----------- |
|
||||
| `companies` | array | 企業オブジェクトの配列 |
|
||||
| `success` | boolean | 操作成功ステータス |
|
||||
| `output` | object | 企業のリスト |
|
||||
|
||||
### `intercom_get_conversation`
|
||||
|
||||
@@ -230,7 +237,8 @@ IDによりIntercomから単一の会話を取得
|
||||
|
||||
| パラメータ | 型 | 説明 |
|
||||
| --------- | ---- | ----------- |
|
||||
| `conversation` | object | 会話オブジェクト |
|
||||
| `success` | boolean | 操作成功ステータス |
|
||||
| `output` | object | 会話データ |
|
||||
|
||||
### `intercom_list_conversations`
|
||||
|
||||
@@ -249,7 +257,8 @@ IDによりIntercomから単一の会話を取得
|
||||
|
||||
| パラメータ | 型 | 説明 |
|
||||
| --------- | ---- | ----------- |
|
||||
| `conversations` | array | 会話オブジェクトの配列 |
|
||||
| `success` | boolean | 操作成功ステータス |
|
||||
| `output` | object | 会話のリスト |
|
||||
|
||||
### `intercom_reply_conversation`
|
||||
|
||||
@@ -270,7 +279,8 @@ IDによりIntercomから単一の会話を取得
|
||||
|
||||
| パラメータ | 型 | 説明 |
|
||||
| --------- | ---- | ----------- |
|
||||
| `conversation` | object | 更新された会話オブジェクト |
|
||||
| `success` | boolean | 操作成功ステータス |
|
||||
| `output` | object | 返信を含む更新された会話 |
|
||||
|
||||
### `intercom_search_conversations`
|
||||
|
||||
@@ -290,7 +300,8 @@ IDによりIntercomから単一の会話を取得
|
||||
|
||||
| パラメータ | 型 | 説明 |
|
||||
| --------- | ---- | ----------- |
|
||||
| `conversations` | array | 一致する会話オブジェクトの配列 |
|
||||
| `success` | boolean | 操作成功ステータス |
|
||||
| `output` | object | 検索結果 |
|
||||
|
||||
### `intercom_create_ticket`
|
||||
|
||||
@@ -312,7 +323,8 @@ Intercomで新しいチケットを作成する
|
||||
|
||||
| パラメータ | 型 | 説明 |
|
||||
| --------- | ---- | ----------- |
|
||||
| `ticket` | object | 作成されたチケットオブジェクト |
|
||||
| `success` | boolean | 操作成功ステータス |
|
||||
| `output` | object | 作成されたチケットデータ |
|
||||
|
||||
### `intercom_get_ticket`
|
||||
|
||||
@@ -328,7 +340,8 @@ IDによりIntercomから単一のチケットを取得する
|
||||
|
||||
| パラメータ | 型 | 説明 |
|
||||
| --------- | ---- | ----------- |
|
||||
| `ticket` | object | チケットオブジェクト |
|
||||
| `success` | boolean | 操作成功ステータス |
|
||||
| `output` | object | チケットデータ |
|
||||
|
||||
### `intercom_create_message`
|
||||
|
||||
@@ -352,7 +365,8 @@ Intercomで管理者が開始した新しいメッセージを作成して送信
|
||||
|
||||
| パラメータ | 型 | 説明 |
|
||||
| --------- | ---- | ----------- |
|
||||
| `message` | object | 作成されたメッセージオブジェクト |
|
||||
| `success` | boolean | 操作成功ステータス |
|
||||
| `output` | object | 作成されたメッセージデータ |
|
||||
|
||||
## メモ
|
||||
|
||||
|
||||
@@ -71,6 +71,7 @@ Pineconeインデックスにテキストレコードを挿入または更新す
|
||||
| パラメータ | 型 | 説明 |
|
||||
| --------- | ---- | ----------- |
|
||||
| `statusText` | string | アップサート操作のステータス |
|
||||
| `upsertedCount` | number | 正常にアップサートされたレコードの数 |
|
||||
|
||||
### `pinecone_search_text`
|
||||
|
||||
|
||||
@@ -266,11 +266,10 @@ Supabaseストレージバケットにファイルをアップロードする
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `projectId` | string | はい | あなたのSupabaseプロジェクトID(例:jdrkgepadsdopsntdlom) |
|
||||
| `bucket` | string | はい | ストレージバケットの名前 |
|
||||
| `fileName` | string | はい | ファイルの名前(例:"document.pdf"、"image.jpg") |
|
||||
| `path` | string | いいえ | オプションのフォルダパス(例:"folder/subfolder/") |
|
||||
| `path` | string | はい | ファイルが保存されるパス(例:"folder/file.jpg") |
|
||||
| `fileContent` | string | はい | ファイルの内容(バイナリファイルの場合はbase64エンコード、またはプレーンテキスト) |
|
||||
| `contentType` | string | いいえ | ファイルのMIMEタイプ(例:"image/jpeg"、"text/plain") |
|
||||
| `upsert` | boolean | いいえ | trueの場合、既存のファイルを上書き(デフォルト:false) |
|
||||
| `upsert` | boolean | いいえ | trueの場合、既存のファイルを上書きする(デフォルト:false) |
|
||||
| `apiKey` | string | はい | あなたのSupabaseサービスロールシークレットキー |
|
||||
|
||||
#### 出力
|
||||
|
||||
@@ -129,18 +129,15 @@ Typeformアカウント内のすべてのフォームのリストを取得する
|
||||
|
||||
| パラメータ | 型 | 説明 |
|
||||
| --------- | ---- | ----------- |
|
||||
| `id` | string | フォームの一意識別子 |
|
||||
| `id` | string | フォームの一意の識別子 |
|
||||
| `title` | string | フォームのタイトル |
|
||||
| `type` | string | フォームのタイプ(form、quizなど) |
|
||||
| `settings` | object | 言語、プログレスバーなどを含むフォーム設定 |
|
||||
| `theme` | object | テーマ参照 |
|
||||
| `workspace` | object | ワークスペース参照 |
|
||||
| `fields` | array | フォームフィールド/質問の配列 |
|
||||
| `welcome_screens` | array | ウェルカム画面の配列(設定されていない場合は空) |
|
||||
| `welcome_screens` | array | ウェルカム画面の配列 |
|
||||
| `thankyou_screens` | array | サンキュー画面の配列 |
|
||||
| `created_at` | string | フォーム作成タイムスタンプ(ISO 8601形式) |
|
||||
| `last_updated_at` | string | フォーム最終更新タイムスタンプ(ISO 8601形式) |
|
||||
| `published_at` | string | フォーム公開タイムスタンプ(ISO 8601形式) |
|
||||
| `_links` | object | 公開フォームURLを含む関連リソースリンク |
|
||||
|
||||
### `typeform_create_form`
|
||||
@@ -163,15 +160,10 @@ Typeformアカウント内のすべてのフォームのリストを取得する
|
||||
|
||||
| パラメータ | 型 | 説明 |
|
||||
| --------- | ---- | ----------- |
|
||||
| `id` | string | 作成されたフォームの一意識別子 |
|
||||
| `id` | string | 作成されたフォームの一意の識別子 |
|
||||
| `title` | string | フォームのタイトル |
|
||||
| `type` | string | フォームのタイプ |
|
||||
| `settings` | object | フォーム設定オブジェクト |
|
||||
| `theme` | object | テーマ参照 |
|
||||
| `workspace` | object | ワークスペース参照 |
|
||||
| `fields` | array | 作成されたフォームフィールドの配列(追加されていない場合は空) |
|
||||
| `welcome_screens` | array | ウェルカム画面の配列(設定されていない場合は空) |
|
||||
| `thankyou_screens` | array | サンキュー画面の配列 |
|
||||
| `fields` | array | 作成されたフォームフィールドの配列 |
|
||||
| `_links` | object | 公開フォームURLを含む関連リソースリンク |
|
||||
|
||||
### `typeform_update_form`
|
||||
@@ -190,7 +182,16 @@ JSON Patchオペレーションを使用して既存のフォームを更新す
|
||||
|
||||
| パラメータ | 型 | 説明 |
|
||||
| --------- | ---- | ----------- |
|
||||
| `message` | string | 成功確認メッセージ |
|
||||
| `id` | string | 更新されたフォームの一意の識別子 |
|
||||
| `title` | string | フォームのタイトル |
|
||||
| `type` | string | フォームのタイプ |
|
||||
| `settings` | object | フォーム設定 |
|
||||
| `theme` | object | テーマ参照 |
|
||||
| `workspace` | object | ワークスペース参照 |
|
||||
| `fields` | array | フォームフィールドの配列 |
|
||||
| `welcome_screens` | array | ウェルカム画面の配列 |
|
||||
| `thankyou_screens` | array | サンクスページの配列 |
|
||||
| `_links` | object | 関連リソースリンク |
|
||||
|
||||
### `typeform_delete_form`
|
||||
|
||||
|
||||
@@ -146,33 +146,7 @@ import { BlockInfoCard } from "@/components/ui/block-info-card"
|
||||
| `success` | boolean | 提取操作是否成功 |
|
||||
| `data` | object | 根据模式或提示提取的结构化数据 |
|
||||
|
||||
### `firecrawl_agent`
|
||||
## 注意
|
||||
|
||||
自主网页数据提取代理。根据自然语言提示进行搜索和信息收集,无需指定具体 URL。
|
||||
|
||||
#### 输入
|
||||
|
||||
| 参数 | 类型 | 必需 | 描述 |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `prompt` | string | 是 | 要提取数据的自然语言描述(最多 10,000 个字符) |
|
||||
| `urls` | json | 否 | 可选的 URL 数组,用于聚焦代理任务 |
|
||||
| `schema` | json | 否 | 定义要提取数据结构的 JSON 架构 |
|
||||
| `maxCredits` | number | 否 | 此代理任务可消耗的最大积分数 |
|
||||
| `strictConstrainToURLs` | boolean | 否 | 若为 true,代理仅访问 urls 数组中提供的 URL |
|
||||
| `apiKey` | string | 是 | Firecrawl API 密钥 |
|
||||
|
||||
#### 输出
|
||||
|
||||
| 参数 | 类型 | 描述 |
|
||||
| --------- | ---- | ----------- |
|
||||
| `success` | boolean | 代理操作是否成功 |
|
||||
| `status` | string | 代理任务的当前状态(processing、completed、failed) |
|
||||
| `data` | object | 代理提取的数据 |
|
||||
| `creditsUsed` | number | 此代理任务消耗的积分数 |
|
||||
| `expiresAt` | string | 结果过期的时间戳(24 小时) |
|
||||
| `sources` | object | 代理使用的来源 URL 数组 |
|
||||
|
||||
## 说明
|
||||
|
||||
- 分类:`tools`
|
||||
- 类别:`tools`
|
||||
- 类型:`firecrawl`
|
||||
|
||||
@@ -1,136 +0,0 @@
|
||||
---
|
||||
title: Greptile
|
||||
description: AI 驱动的代码库搜索与问答
|
||||
---
|
||||
|
||||
import { BlockInfoCard } from "@/components/ui/block-info-card"
|
||||
|
||||
<BlockInfoCard
|
||||
type="greptile"
|
||||
color="#e5e5e5"
|
||||
/>
|
||||
|
||||
{/* MANUAL-CONTENT-START:intro */}
|
||||
[Greptile](https://greptile.com/) 是一款 AI 驱动的开发者工具,可用于在一个或多个代码仓库中搜索和查询源代码。Greptile 让工程师能够用自然语言快速解答复杂的代码库问题,定位相关文件或符号,并深入了解陌生或遗留代码。
|
||||
|
||||
使用 Greptile,您可以:
|
||||
|
||||
- **用自然语言就代码库提出复杂问题**:获取关于架构、使用模式或具体实现的 AI 生成答案。
|
||||
- **即时查找相关代码、文件或函数**:通过关键词或自然语言查询搜索,直接跳转到匹配的行、文件或代码块。
|
||||
- **理解依赖关系和关联**:发现函数被调用的位置、模块之间的关系,或 API 在大型代码库中的使用情况。
|
||||
- **加速入职和代码探索**:快速上手新项目,或在无需深厚背景知识的情况下排查棘手问题。
|
||||
|
||||
Sim Greptile 集成让您的 AI 代理能够:
|
||||
|
||||
- 利用 Greptile 的先进语言模型查询和搜索私有及公共仓库。
|
||||
- 获取与上下文相关的代码片段、文件引用和解释,支持代码评审、文档编写和开发流程。
|
||||
- 根据搜索/查询结果在 Sim 工作流中触发自动化,或将代码智能直接嵌入您的流程。
|
||||
|
||||
无论您是想提升开发效率、自动化文档,还是增强团队对复杂代码库的理解,Greptile 与 Sim 都能为您无缝提供代码智能与搜索服务——就在您需要的地方。
|
||||
{/* MANUAL-CONTENT-END */}
|
||||
|
||||
## 使用说明
|
||||
|
||||
使用 Greptile 通过自然语言查询和搜索代码库。获取 AI 生成的代码解答,查找相关文件,理解复杂代码库。
|
||||
|
||||
## 工具
|
||||
|
||||
### `greptile_query`
|
||||
|
||||
使用自然语言查询代码仓库,并获得带有相关代码引用的答案。Greptile 利用 AI 理解您的代码库并回答问题。
|
||||
|
||||
#### 输入
|
||||
|
||||
| 参数 | 类型 | 必填 | 描述 |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `query` | string | 是 | 关于代码库的自然语言问题 |
|
||||
| `repositories` | string | 是 | 以逗号分隔的仓库列表。格式:"github:branch:owner/repo" 或 "owner/repo"(默认为 github:main) |
|
||||
| `sessionId` | string | 否 | 用于会话连续性的会话 ID |
|
||||
| `genius` | boolean | 否 | 启用 genius 模式以进行更深入的分析(速度较慢但更准确) |
|
||||
| `apiKey` | string | 是 | Greptile API 密钥 |
|
||||
| `githubToken` | string | 是 | 具有仓库读取权限的 GitHub 个人访问令牌 |
|
||||
|
||||
#### 输出
|
||||
|
||||
| 参数 | 类型 | 描述 |
|
||||
| --------- | ---- | ----------- |
|
||||
| `message` | string | AI 生成的查询答案 |
|
||||
| `sources` | array | 支持答案的相关代码引用 |
|
||||
|
||||
### `greptile_search`
|
||||
|
||||
使用自然语言搜索代码仓库,获取相关代码引用而不生成答案。适用于查找特定代码位置。
|
||||
|
||||
#### 输入
|
||||
|
||||
| 参数 | 类型 | 必填 | 描述 |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `query` | string | 是 | 用于查找相关代码的自然语言搜索查询 |
|
||||
| `repositories` | string | 是 | 以逗号分隔的仓库列表。格式:"github:branch:owner/repo" 或 "owner/repo"(默认为 github:main) |
|
||||
| `sessionId` | string | 否 | 用于会话连续性的会话 ID |
|
||||
| `genius` | boolean | 否 | 启用 genius 模式以进行更深入的搜索(速度较慢但更准确) |
|
||||
| `apiKey` | string | 是 | Greptile API 密钥 |
|
||||
| `githubToken` | string | 是 | 具有仓库读取权限的 GitHub 个人访问令牌 |
|
||||
|
||||
#### 输出
|
||||
|
||||
| 参数 | 类型 | 描述 |
|
||||
| --------- | ---- | ----------- |
|
||||
| `sources` | array | 与搜索查询匹配的相关代码引用 |
|
||||
|
||||
### `greptile_index_repo`
|
||||
|
||||
提交一个仓库以供 Greptile 索引。索引完成后才能对仓库进行查询。小型仓库大约需要 3-5 分钟,大型仓库可能需要一个小时以上。
|
||||
|
||||
#### 输入
|
||||
|
||||
| 参数 | 类型 | 必填 | 描述 |
|
||||
| --------- | ---- | ------ | ----------- |
|
||||
| `remote` | string | 是 | Git 远程类型:github 或 gitlab |
|
||||
| `repository` | string | 是 | 以 owner/repo 格式填写的仓库(例如,"facebook/react") |
|
||||
| `branch` | string | 是 | 要索引的分支(例如,"main" 或 "master") |
|
||||
| `reload` | boolean | 否 | 即使已被索引也强制重新索引 |
|
||||
| `notify` | boolean | 否 | 索引完成后发送邮件通知 |
|
||||
| `apiKey` | string | 是 | Greptile API 密钥 |
|
||||
| `githubToken` | string | 是 | 具有仓库读取权限的 GitHub 个人访问令牌 |
|
||||
|
||||
#### 输出
|
||||
|
||||
| 参数 | 类型 | 描述 |
|
||||
| --------- | ---- | ----------- |
|
||||
| `repositoryId` | string | 已索引仓库的唯一标识符(格式:remote:branch:owner/repo) |
|
||||
| `statusEndpoint` | string | 用于检查索引状态的 URL 端点 |
|
||||
| `message` | string | 关于索引操作的状态信息 |
|
||||
|
||||
### `greptile_status`
|
||||
|
||||
检查仓库的索引状态。可用于验证仓库是否已准备好被查询,或监控索引进度。
|
||||
|
||||
#### 输入
|
||||
|
||||
| 参数 | 类型 | 必填 | 描述 |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `remote` | string | 是 | Git 远程类型:github 或 gitlab |
|
||||
| `repository` | string | 是 | 仓库,格式为 owner/repo(例如,"facebook/react") |
|
||||
| `branch` | string | 是 | 分支名称(例如,"main" 或 "master") |
|
||||
| `apiKey` | string | 是 | Greptile API 密钥 |
|
||||
| `githubToken` | string | 是 | 具有仓库读取权限的 GitHub 个人访问令牌 |
|
||||
|
||||
#### 输出
|
||||
|
||||
| 参数 | 类型 | 描述 |
|
||||
| --------- | ---- | ----------- |
|
||||
| `repository` | string | 仓库名称(owner/repo) |
|
||||
| `remote` | string | Git 远程(github/gitlab) |
|
||||
| `branch` | string | 分支名称 |
|
||||
| `private` | boolean | 仓库是否为私有 |
|
||||
| `status` | string | 索引状态:submitted、cloning、processing、completed 或 failed |
|
||||
| `filesProcessed` | number | 已处理的文件数 |
|
||||
| `numFiles` | number | 仓库中的文件总数 |
|
||||
| `sampleQuestions` | array | 已索引仓库的示例问题 |
|
||||
| `sha` | string | 已索引版本的 Git 提交 SHA |
|
||||
|
||||
## 备注
|
||||
|
||||
- 分类:`tools`
|
||||
- 类型:`greptile`
|
||||
@@ -55,7 +55,8 @@ import { BlockInfoCard } from "@/components/ui/block-info-card"
|
||||
|
||||
| 参数 | 类型 | 描述 |
|
||||
| --------- | ---- | ----------- |
|
||||
| `contact` | object | 创建的联系人对象 |
|
||||
| `success` | boolean | 操作成功状态 |
|
||||
| `output` | object | 创建的联系人数据 |
|
||||
|
||||
### `intercom_get_contact`
|
||||
|
||||
@@ -71,7 +72,8 @@ import { BlockInfoCard } from "@/components/ui/block-info-card"
|
||||
|
||||
| 参数 | 类型 | 描述 |
|
||||
| --------- | ---- | ----------- |
|
||||
| `contact` | object | 联系人对象 |
|
||||
| `success` | boolean | 操作成功状态 |
|
||||
| `output` | object | 联系人数据 |
|
||||
|
||||
### `intercom_update_contact`
|
||||
|
||||
@@ -99,7 +101,8 @@ import { BlockInfoCard } from "@/components/ui/block-info-card"
|
||||
|
||||
| 参数 | 类型 | 描述 |
|
||||
| --------- | ---- | ----------- |
|
||||
| `contact` | object | 更新后的联系人对象 |
|
||||
| `success` | boolean | 操作成功状态 |
|
||||
| `output` | object | 更新后的联系人数据 |
|
||||
|
||||
### `intercom_list_contacts`
|
||||
|
||||
@@ -116,7 +119,8 @@ import { BlockInfoCard } from "@/components/ui/block-info-card"
|
||||
|
||||
| 参数 | 类型 | 描述 |
|
||||
| --------- | ---- | ----------- |
|
||||
| `contacts` | array | 联系人对象数组 |
|
||||
| `success` | boolean | 操作成功状态 |
|
||||
| `output` | object | 联系人列表 |
|
||||
|
||||
### `intercom_search_contacts`
|
||||
|
||||
@@ -136,7 +140,8 @@ import { BlockInfoCard } from "@/components/ui/block-info-card"
|
||||
|
||||
| 参数 | 类型 | 描述 |
|
||||
| --------- | ---- | ----------- |
|
||||
| `contacts` | array | 匹配的联系人对象数组 |
|
||||
| `success` | boolean | 操作成功状态 |
|
||||
| `output` | object | 搜索结果 |
|
||||
|
||||
### `intercom_delete_contact`
|
||||
|
||||
@@ -152,9 +157,8 @@ import { BlockInfoCard } from "@/components/ui/block-info-card"
|
||||
|
||||
| 参数 | 类型 | 描述 |
|
||||
| --------- | ---- | ----------- |
|
||||
| `id` | string | 已删除联系人的 ID |
|
||||
| `deleted` | boolean | 联系人是否已被删除 |
|
||||
| `metadata` | object | 操作元数据 |
|
||||
| `success` | boolean | 操作成功状态 |
|
||||
| `output` | object | 删除结果 |
|
||||
|
||||
### `intercom_create_company`
|
||||
|
||||
@@ -178,7 +182,8 @@ import { BlockInfoCard } from "@/components/ui/block-info-card"
|
||||
|
||||
| 参数 | 类型 | 描述 |
|
||||
| --------- | ---- | ----------- |
|
||||
| `company` | object | 新建或更新的公司对象 |
|
||||
| `success` | boolean | 操作成功状态 |
|
||||
| `output` | object | 创建或更新的公司数据 |
|
||||
|
||||
### `intercom_get_company`
|
||||
|
||||
@@ -194,7 +199,8 @@ import { BlockInfoCard } from "@/components/ui/block-info-card"
|
||||
|
||||
| 参数 | 类型 | 描述 |
|
||||
| --------- | ---- | ----------- |
|
||||
| `company` | object | 公司对象 |
|
||||
| `success` | boolean | 操作成功状态 |
|
||||
| `output` | object | 公司数据 |
|
||||
|
||||
### `intercom_list_companies`
|
||||
|
||||
@@ -212,7 +218,8 @@ import { BlockInfoCard } from "@/components/ui/block-info-card"
|
||||
|
||||
| 参数 | 类型 | 描述 |
|
||||
| --------- | ---- | ----------- |
|
||||
| `companies` | array | 公司对象数组 |
|
||||
| `success` | 布尔值 | 操作成功状态 |
|
||||
| `output` | 对象 | 公司列表 |
|
||||
|
||||
### `intercom_get_conversation`
|
||||
|
||||
@@ -230,7 +237,8 @@ import { BlockInfoCard } from "@/components/ui/block-info-card"
|
||||
|
||||
| 参数 | 类型 | 描述 |
|
||||
| --------- | ---- | ----------- |
|
||||
| `conversation` | object | 会话对象 |
|
||||
| `success` | 布尔值 | 操作成功状态 |
|
||||
| `output` | 对象 | 会话数据 |
|
||||
|
||||
### `intercom_list_conversations`
|
||||
|
||||
@@ -249,7 +257,8 @@ import { BlockInfoCard } from "@/components/ui/block-info-card"
|
||||
|
||||
| 参数 | 类型 | 描述 |
|
||||
| --------- | ---- | ----------- |
|
||||
| `conversations` | array | 会话对象数组 |
|
||||
| `success` | 布尔值 | 操作成功状态 |
|
||||
| `output` | 对象 | 会话列表 |
|
||||
|
||||
### `intercom_reply_conversation`
|
||||
|
||||
@@ -270,7 +279,8 @@ import { BlockInfoCard } from "@/components/ui/block-info-card"
|
||||
|
||||
| 参数 | 类型 | 描述 |
|
||||
| --------- | ---- | ----------- |
|
||||
| `conversation` | object | 更新后的会话对象 |
|
||||
| `success` | boolean | 操作成功状态 |
|
||||
| `output` | object | 包含回复的更新对话 |
|
||||
|
||||
### `intercom_search_conversations`
|
||||
|
||||
@@ -290,7 +300,8 @@ import { BlockInfoCard } from "@/components/ui/block-info-card"
|
||||
|
||||
| 参数 | 类型 | 描述 |
|
||||
| --------- | ---- | ----------- |
|
||||
| `conversations` | array | 匹配的会话对象数组 |
|
||||
| `success` | boolean | 操作成功状态 |
|
||||
| `output` | object | 搜索结果 |
|
||||
|
||||
### `intercom_create_ticket`
|
||||
|
||||
@@ -312,7 +323,8 @@ import { BlockInfoCard } from "@/components/ui/block-info-card"
|
||||
|
||||
| 参数 | 类型 | 描述 |
|
||||
| --------- | ---- | ----------- |
|
||||
| `ticket` | object | 创建的工单对象 |
|
||||
| `success` | boolean | 操作成功状态 |
|
||||
| `output` | object | 创建的工单数据 |
|
||||
|
||||
### `intercom_get_ticket`
|
||||
|
||||
@@ -328,7 +340,8 @@ import { BlockInfoCard } from "@/components/ui/block-info-card"
|
||||
|
||||
| 参数 | 类型 | 描述 |
|
||||
| --------- | ---- | ----------- |
|
||||
| `ticket` | object | 工单对象 |
|
||||
| `success` | boolean | 操作成功状态 |
|
||||
| `output` | object | 工单数据 |
|
||||
|
||||
### `intercom_create_message`
|
||||
|
||||
@@ -352,7 +365,8 @@ import { BlockInfoCard } from "@/components/ui/block-info-card"
|
||||
|
||||
| 参数 | 类型 | 描述 |
|
||||
| --------- | ---- | ----------- |
|
||||
| `message` | object | 创建的消息对象 |
|
||||
| `success` | boolean | 操作成功状态 |
|
||||
| `output` | object | 创建的消息数据 |
|
||||
|
||||
## 注意事项
|
||||
|
||||
|
||||
@@ -68,9 +68,10 @@ import { BlockInfoCard } from "@/components/ui/block-info-card"
|
||||
|
||||
#### 输出
|
||||
|
||||
| 参数 | 类型 | 说明 |
|
||||
| 参数 | 类型 | 描述 |
|
||||
| --------- | ---- | ----------- |
|
||||
| `statusText` | string | upsert 操作的状态 |
|
||||
| `statusText` | string | 插入操作的状态 |
|
||||
| `upsertedCount` | number | 成功插入的记录数量 |
|
||||
|
||||
### `pinecone_search_text`
|
||||
|
||||
|
||||
@@ -266,11 +266,10 @@ Sim 的 Supabase 集成使您能够轻松地将代理工作流连接到您的 Su
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `projectId` | string | 是 | 您的 Supabase 项目 ID \(例如:jdrkgepadsdopsntdlom\) |
|
||||
| `bucket` | string | 是 | 存储桶的名称 |
|
||||
| `fileName` | string | 是 | 文件名 \(例如:"document.pdf","image.jpg"\) |
|
||||
| `path` | string | 否 | 可选的文件夹路径 \(例如:"folder/subfolder/"\) |
|
||||
| `fileContent` | string | 是 | 文件内容(对于二进制文件为 base64 编码,或为纯文本)|
|
||||
| `contentType` | string | 否 | 文件的 MIME 类型 \(例如:"image/jpeg","text/plain"\) |
|
||||
| `upsert` | boolean | 否 | 如果为 true,则覆盖已存在的文件(默认值:false)|
|
||||
| `path` | string | 是 | 文件将存储的路径 \(例如:"folder/file.jpg"\) |
|
||||
| `fileContent` | string | 是 | 文件内容 \(二进制文件为 base64 编码,或纯文本\) |
|
||||
| `contentType` | string | 否 | 文件的 MIME 类型 \(例如:"image/jpeg", "text/plain"\) |
|
||||
| `upsert` | boolean | 否 | 如果为 true,则覆盖现有文件 \(默认值:false\) |
|
||||
| `apiKey` | string | 是 | 您的 Supabase 服务角色密钥 |
|
||||
|
||||
#### 输出
|
||||
|
||||
@@ -131,17 +131,14 @@ import { BlockInfoCard } from "@/components/ui/block-info-card"
|
||||
| --------- | ---- | ----------- |
|
||||
| `id` | string | 表单唯一标识符 |
|
||||
| `title` | string | 表单标题 |
|
||||
| `type` | string | 表单类型 \(form、quiz 等\) |
|
||||
| `type` | string | 表单类型 \(form, quiz 等\) |
|
||||
| `settings` | object | 表单设置,包括语言、进度条等 |
|
||||
| `theme` | object | 主题引用 |
|
||||
| `workspace` | object | 工作区引用 |
|
||||
| `fields` | array | 表单字段/问题数组 |
|
||||
| `welcome_screens` | array | 欢迎页数组(如未配置则为空) |
|
||||
| `thankyou_screens` | array | 感谢页数组 |
|
||||
| `created_at` | string | 表单创建时间戳(ISO 8601 格式) |
|
||||
| `last_updated_at` | string | 表单最后更新时间戳(ISO 8601 格式) |
|
||||
| `published_at` | string | 表单发布时间戳(ISO 8601 格式) |
|
||||
| `_links` | object | 相关资源链接,包括公开表单 URL |
|
||||
| `welcome_screens` | array | 欢迎页面数组 |
|
||||
| `thankyou_screens` | array | 感谢页面数组 |
|
||||
| `_links` | object | 包括公共表单 URL 在内的相关资源链接 |
|
||||
|
||||
### `typeform_create_form`
|
||||
|
||||
@@ -163,16 +160,11 @@ import { BlockInfoCard } from "@/components/ui/block-info-card"
|
||||
|
||||
| 参数 | 类型 | 描述 |
|
||||
| --------- | ---- | ----------- |
|
||||
| `id` | string | 已创建表单的唯一标识符 |
|
||||
| `id` | string | 创建的表单唯一标识符 |
|
||||
| `title` | string | 表单标题 |
|
||||
| `type` | string | 表单类型 |
|
||||
| `settings` | object | 表单设置对象 |
|
||||
| `theme` | object | 主题引用 |
|
||||
| `workspace` | object | 工作区引用 |
|
||||
| `fields` | array | 已创建表单字段数组(如未添加则为空) |
|
||||
| `welcome_screens` | array | 欢迎页数组(如未配置则为空) |
|
||||
| `thankyou_screens` | array | 感谢页数组 |
|
||||
| `_links` | object | 相关资源链接,包括公开表单 URL |
|
||||
| `fields` | array | 创建的表单字段数组 |
|
||||
| `_links` | object | 包括公共表单 URL 在内的相关资源链接 |
|
||||
|
||||
### `typeform_update_form`
|
||||
|
||||
@@ -190,7 +182,16 @@ import { BlockInfoCard } from "@/components/ui/block-info-card"
|
||||
|
||||
| 参数 | 类型 | 描述 |
|
||||
| --------- | ---- | ----------- |
|
||||
| `message` | string | 成功确认消息 |
|
||||
| `id` | string | 更新的表单唯一标识符 |
|
||||
| `title` | string | 表单标题 |
|
||||
| `type` | string | 表单类型 |
|
||||
| `settings` | object | 表单设置 |
|
||||
| `theme` | object | 主题引用 |
|
||||
| `workspace` | object | 工作区引用 |
|
||||
| `fields` | array | 表单字段数组 |
|
||||
| `welcome_screens` | array | 欢迎屏幕数组 |
|
||||
| `thankyou_screens` | array | 感谢屏幕数组 |
|
||||
| `_links` | object | 相关资源链接 |
|
||||
|
||||
### `typeform_delete_form`
|
||||
|
||||
|
||||
@@ -503,19 +503,19 @@ checksums:
|
||||
content/35: 371d0e46b4bd2c23f559b8bc112f6955
|
||||
content/36: 4c6a3b159dfff0106b67269130253eba
|
||||
content/37: bcadfc362b69078beee0088e5936c98b
|
||||
content/38: e30b26e62abc96c1ff0694762584501d
|
||||
content/38: 21cc925781120afc2c4568f74ed8191a
|
||||
content/39: 5de052cae5ada1f845f7257ba431ebd1
|
||||
content/40: 1a36fc873771b68a67d95a2130487aec
|
||||
content/41: 371d0e46b4bd2c23f559b8bc112f6955
|
||||
content/42: b000bca7bd6658d4b5d21e6c7787d05e
|
||||
content/43: bcadfc362b69078beee0088e5936c98b
|
||||
content/44: 186da1feb6a6565956c7ea7707b388ad
|
||||
content/44: 448922b8585b0b4599e7023c80faa449
|
||||
content/45: 776f62636d112cbd27d5064a40e29ec9
|
||||
content/46: f512a5096a1d5a4e4a0afd762152b714
|
||||
content/47: 371d0e46b4bd2c23f559b8bc112f6955
|
||||
content/48: 06de592289fb5f4dff42f451ebf9658a
|
||||
content/49: bcadfc362b69078beee0088e5936c98b
|
||||
content/50: b36b602337a0a9be8720b50ed3f949d5
|
||||
content/50: d242a9680311743714a60bf1941ef9ac
|
||||
content/51: a4cfd36d36633eee441423283d4d5fb3
|
||||
content/52: 85ea23183709f33902aec778c7cb62b0
|
||||
content/53: 371d0e46b4bd2c23f559b8bc112f6955
|
||||
@@ -760,7 +760,7 @@ checksums:
|
||||
content/71: 64c89ec9ca2719c58cfed42033a52217
|
||||
content/72: ec97af83ea30e033d7b1b4ada910c03e
|
||||
content/73: 371d0e46b4bd2c23f559b8bc112f6955
|
||||
content/74: a3dc735b07499600ffd588b1279eea42
|
||||
content/74: b6f54fba68782b589ee4dfa0aebf7adb
|
||||
content/75: bcadfc362b69078beee0088e5936c98b
|
||||
content/76: 64d66a993e96e5544d28bc75a2d0c6d6
|
||||
content/77: 0295e0cd05bbf86d6d79400d787759f5
|
||||
@@ -1279,7 +1279,7 @@ checksums:
|
||||
content/17: 371d0e46b4bd2c23f559b8bc112f6955
|
||||
content/18: 11e0f62da7bc51d4c9a94d2c60dd06ce
|
||||
content/19: bcadfc362b69078beee0088e5936c98b
|
||||
content/20: d78f8e8d74ba810e10dfbebd4423764f
|
||||
content/20: d1fa8dd2b26e182a3a02bc996ad7dd0b
|
||||
content/21: b72dd04e96d85431c18c28de8a6b00d7
|
||||
content/22: 147ca5082380639c3168a44122a67192
|
||||
content/23: 371d0e46b4bd2c23f559b8bc112f6955
|
||||
@@ -3483,14 +3483,8 @@ checksums:
|
||||
content/38: 3e7b1f581c8ef51fb3d9b6ecff47deb4
|
||||
content/39: bcadfc362b69078beee0088e5936c98b
|
||||
content/40: 07994574571bcaeb3b86ce92c46d0527
|
||||
content/41: 5aba0f448543bbd7559573fed02724b2
|
||||
content/42: f0cdbc370d80551a27c44588ae689f9d
|
||||
content/43: 371d0e46b4bd2c23f559b8bc112f6955
|
||||
content/44: 81b12b0196aa94b6f80686641125ea3a
|
||||
content/45: bcadfc362b69078beee0088e5936c98b
|
||||
content/46: 326cbcf1d379181f7f53c6a9ffb271f1
|
||||
content/47: b3f310d5ef115bea5a8b75bf25d7ea9a
|
||||
content/48: dc809f5be4a108f769310dd8290c0db4
|
||||
content/41: b3f310d5ef115bea5a8b75bf25d7ea9a
|
||||
content/42: dc809f5be4a108f769310dd8290c0db4
|
||||
bda76150deadd23f7803a15b39c4db66:
|
||||
meta/title: 1255b55897f2be1443d3bb8c30cd9795
|
||||
meta/description: 1e7574b6666c662c08e7e256a9fceb4d
|
||||
@@ -47172,97 +47166,97 @@ checksums:
|
||||
content/11: 371d0e46b4bd2c23f559b8bc112f6955
|
||||
content/12: a71a30e9f91c10daf481ea8f542e91f6
|
||||
content/13: bcadfc362b69078beee0088e5936c98b
|
||||
content/14: d3278442dbea313782edd4793be28197
|
||||
content/14: 59c08999f9c404330ebd8f8a7d21e1a1
|
||||
content/15: 49d191d312481589419c68a5506b0d71
|
||||
content/16: dddb93e063541bfb5d72b6c506d3cb7f
|
||||
content/17: 371d0e46b4bd2c23f559b8bc112f6955
|
||||
content/18: e93f2b44f05dd87c82fe9557cd677eeb
|
||||
content/19: bcadfc362b69078beee0088e5936c98b
|
||||
content/20: 5079238d0092205bb1ca4ec32b8f3d97
|
||||
content/20: b74416361f94e71f2a94139711a5dd21
|
||||
content/21: 2e70c0a22a98675a13b493b9761ff92f
|
||||
content/22: 107f6e51a1e896ee4d18f8ed4f82c50f
|
||||
content/23: 371d0e46b4bd2c23f559b8bc112f6955
|
||||
content/24: e506fbf4b80deecb3b44b29b8dc3438b
|
||||
content/25: bcadfc362b69078beee0088e5936c98b
|
||||
content/26: 4d1f3216d2694b7409792e34a6f181e0
|
||||
content/26: a9096a341b00ce4f4891daaca2586d1c
|
||||
content/27: 934a0124aa2118682b2b17fa258ff06a
|
||||
content/28: aa318cc874d5936ce1f3bf9710da2a44
|
||||
content/29: 371d0e46b4bd2c23f559b8bc112f6955
|
||||
content/30: 660ce6e5a45abe1940974f7d818a6ee7
|
||||
content/31: bcadfc362b69078beee0088e5936c98b
|
||||
content/32: 5e9da15383417721362c8d33b0a12fb8
|
||||
content/32: 551c2f007a7035ba0d48374081b02eb1
|
||||
content/33: 1a1e332b525e86f7fd92f9da1ac0096c
|
||||
content/34: 00098e1591c0f80ef6287d934d391409
|
||||
content/35: 371d0e46b4bd2c23f559b8bc112f6955
|
||||
content/36: e52688ff2fa61ce71026f33930e1ec86
|
||||
content/37: bcadfc362b69078beee0088e5936c98b
|
||||
content/38: ac15076b8e6cac4bf3a106ea32de661d
|
||||
content/38: d84fb23e5dfc9d41a177acd7dfb28e72
|
||||
content/39: 17be090a79154f557bc96f940c687aea
|
||||
content/40: bb2f63774f45f14201d5c0c110458a90
|
||||
content/41: 371d0e46b4bd2c23f559b8bc112f6955
|
||||
content/42: 36afb2b0539e33ff83427a91fc5ba57b
|
||||
content/43: bcadfc362b69078beee0088e5936c98b
|
||||
content/44: 1da7a9f86cda2b24d0e1ffd5ae167272
|
||||
content/44: 45d8bfeced635336cacc9d4a8d08dbca
|
||||
content/45: c76943404f9c8d34a85e6315359ed0c4
|
||||
content/46: b5e111e430aa1c929fb07d5844bf65eb
|
||||
content/47: 371d0e46b4bd2c23f559b8bc112f6955
|
||||
content/48: 6692edffddc28d3c64974ded23d1def2
|
||||
content/49: bcadfc362b69078beee0088e5936c98b
|
||||
content/50: e7e86e6f7734e9af89b5724ac674ff2c
|
||||
content/50: dbc08cce26f9565e719891bbbf4632a9
|
||||
content/51: d0ce65f5420745c45ab42b7edd135bf4
|
||||
content/52: 4a3de8fb6c97898fcfa3800d149cd4e0
|
||||
content/53: 371d0e46b4bd2c23f559b8bc112f6955
|
||||
content/54: d16a985c206a21f4ffb1bbcdc0300c85
|
||||
content/55: bcadfc362b69078beee0088e5936c98b
|
||||
content/56: a64e62cd3f79c43f9411af221e24aa9f
|
||||
content/56: a7e001e39652db8eeb4d32968bda102b
|
||||
content/57: 440f2732ad006bee8cccc975fdbf673a
|
||||
content/58: 7a7048c54763b0109643f37e583381ce
|
||||
content/59: 371d0e46b4bd2c23f559b8bc112f6955
|
||||
content/60: 11ad0a529a7fcc5892ae811cde6894f6
|
||||
content/61: bcadfc362b69078beee0088e5936c98b
|
||||
content/62: d3c54294a5180fda87c23e23d4ad17eb
|
||||
content/62: c7055d8ce044e49929d4f005a28d7c0a
|
||||
content/63: 2d7bad4340c1bc6a28e836e180e26c00
|
||||
content/64: 576dbecf29644e7abf59d25ffda5728c
|
||||
content/65: 371d0e46b4bd2c23f559b8bc112f6955
|
||||
content/66: 59015900ce6b64caff0784491ec59ff9
|
||||
content/67: bcadfc362b69078beee0088e5936c98b
|
||||
content/68: 5e12d96ca701a7a8182558a4d070aed2
|
||||
content/68: 2f225a893086726db6b6a994cc8a5e3c
|
||||
content/69: 63cbf703cf33e0fee06f12fb23184352
|
||||
content/70: dae1fda5ec57e1b598a7e2596007a775
|
||||
content/71: 371d0e46b4bd2c23f559b8bc112f6955
|
||||
content/72: 757f42df5247f2e6684ab32888d30e11
|
||||
content/73: bcadfc362b69078beee0088e5936c98b
|
||||
content/74: 46f9b95601bc643ba6175c2a0115df19
|
||||
content/74: 380f805a5118dd4957f4fcce41e01b86
|
||||
content/75: 935f1a713d05f32d3d826434a7e715ee
|
||||
content/76: e505d8f656fb6e3b65a98cb73d744598
|
||||
content/77: 371d0e46b4bd2c23f559b8bc112f6955
|
||||
content/78: 2e77859b0f2c89186fc6a2d51287ea47
|
||||
content/79: bcadfc362b69078beee0088e5936c98b
|
||||
content/80: b312d1e8bce1418da88cd9812096db20
|
||||
content/80: 22bd99d5b844817b808b9d0d3baddac4
|
||||
content/81: e959b48af94a559e9c46cbd7653d2dd2
|
||||
content/82: 5e3c04c5a9fabfceb7fcc00215f93bf9
|
||||
content/83: 371d0e46b4bd2c23f559b8bc112f6955
|
||||
content/84: a92b2a22061ee6fd453af32e0155f5aa
|
||||
content/85: bcadfc362b69078beee0088e5936c98b
|
||||
content/86: a735b1d909700cdf6d07c1a94330a1c6
|
||||
content/86: d84fb23e5dfc9d41a177acd7dfb28e72
|
||||
content/87: c886f11a0852010b90a1032b97118920
|
||||
content/88: c60c832c08f9e1ff5f91565bf4ba549e
|
||||
content/89: 371d0e46b4bd2c23f559b8bc112f6955
|
||||
content/90: 1545794f4e8e696db96c3b660de684ec
|
||||
content/91: bcadfc362b69078beee0088e5936c98b
|
||||
content/92: 098eb544fe99ee061a081a1f2ef0e7c6
|
||||
content/92: 573530e346d195727862b03b380f40fc
|
||||
content/93: 3d31dedf076ec23547189a3eb5fe04c4
|
||||
content/94: a261b9a2ef7724e4171487ef2435f259
|
||||
content/95: 371d0e46b4bd2c23f559b8bc112f6955
|
||||
content/96: bef786efecaaad82a34b861f37cde78f
|
||||
content/97: bcadfc362b69078beee0088e5936c98b
|
||||
content/98: 317256505991a755bbb6d3870b778f4a
|
||||
content/98: 1b166ea32dff5f8de92b256fe48200d7
|
||||
content/99: e1a03f917ad8b0a1ebec9a601aa3eede
|
||||
content/100: 3aa857b8f85da07ee2d87e65c95b76d0
|
||||
content/101: 371d0e46b4bd2c23f559b8bc112f6955
|
||||
content/102: cc49a24c087d08717866a162cc47776c
|
||||
content/103: bcadfc362b69078beee0088e5936c98b
|
||||
content/104: 283b701d5bd6125f277a7f0ab3b4a7fe
|
||||
content/104: c6d621ee3cdc66de2c20b70a39aafe12
|
||||
content/105: b3f310d5ef115bea5a8b75bf25d7ea9a
|
||||
content/106: 9d45ccf1c14d61412169be8f8510a960
|
||||
9ed109808041fe9022eed66e1feedfdd:
|
||||
@@ -49960,43 +49954,3 @@ checksums:
|
||||
content/11: 972721b310d5e3e6e08ec33dc9630f62
|
||||
content/12: b3f310d5ef115bea5a8b75bf25d7ea9a
|
||||
content/13: 06a9cbcec05366fe1c873c90c36b4f44
|
||||
cde6c2ec1df03f206847ed139f21f2d6:
|
||||
meta/title: d625514dc93a2c27c439aa3f05ef6825
|
||||
meta/description: ba29063c3aa33a2bd7afe5837c7fdb9e
|
||||
content/0: 1b031fb0c62c46b177aeed5c3d3f8f80
|
||||
content/1: 38ab553787a3ea3d2cda30851aedc0ad
|
||||
content/2: ad8cbe2b67d463500c7df82249a43130
|
||||
content/3: 68e7aba40d1cd92f4a42ae47e959647c
|
||||
content/4: 9a605b0b546c260c6274c6090d6f3581
|
||||
content/5: b0072e1727b0b3aa280be0f214373362
|
||||
content/6: f23d61d0b583ae7e014fad11cd88d650
|
||||
content/7: 711f36e27a659049cf42b8678e67156c
|
||||
content/8: 821e6394b0a953e2b0842b04ae8f3105
|
||||
content/9: 954eb151461a8567f7c8132661927740
|
||||
content/10: 9c8aa3f09c9b2bd50ea4cdff3598ea4e
|
||||
content/11: 7a7984f05e34660cc71f06c220198e31
|
||||
content/12: dae004748239e77e2532d74494a10d7e
|
||||
content/13: 371d0e46b4bd2c23f559b8bc112f6955
|
||||
content/14: 436dadcd195dd06d65d306d054d855a1
|
||||
content/15: bcadfc362b69078beee0088e5936c98b
|
||||
content/16: 8ed05ca8d0bb1d22992af58adba9e363
|
||||
content/17: 0c04ebd8a688a9658529c0dbeb9e91da
|
||||
content/18: eef5d898e4cd4c4fa684f6f30b5bff63
|
||||
content/19: 371d0e46b4bd2c23f559b8bc112f6955
|
||||
content/20: 447485a51605776e0801a7e6b3e57d69
|
||||
content/21: bcadfc362b69078beee0088e5936c98b
|
||||
content/22: 9eb1ac86dbadc526a2a97d4d49f5398a
|
||||
content/23: 5b7448ffa97b9b0f7c92ce378d90d814
|
||||
content/24: c9b99feb41660b7dfca04fe4cfb5c674
|
||||
content/25: 371d0e46b4bd2c23f559b8bc112f6955
|
||||
content/26: 0ce6d9d41e298509e192e4dd0fc654c6
|
||||
content/27: bcadfc362b69078beee0088e5936c98b
|
||||
content/28: 97fd7cc117408e1f7a076724a8bcbddf
|
||||
content/29: c2e4dd92b12a214c7021ab345acb28c6
|
||||
content/30: de9c09e2e23cfe69029a739ed7a51d83
|
||||
content/31: 371d0e46b4bd2c23f559b8bc112f6955
|
||||
content/32: a664478ba3bc1ebecaaebc39fe0d54ec
|
||||
content/33: bcadfc362b69078beee0088e5936c98b
|
||||
content/34: 492b7c5af2dd4be062ee7af19778566a
|
||||
content/35: b3f310d5ef115bea5a8b75bf25d7ea9a
|
||||
content/36: 1305f85599a560b30c009091311a8dd0
|
||||
|
||||
@@ -29,7 +29,6 @@
|
||||
"tailwind-merge": "^3.0.2"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@sim/tsconfig": "workspace:*",
|
||||
"@tailwindcss/postcss": "^4.0.12",
|
||||
"@types/mdx": "^2.0.13",
|
||||
"@types/node": "^22.14.1",
|
||||
|
||||
@@ -1,11 +1,29 @@
|
||||
{
|
||||
"extends": "@sim/tsconfig/nextjs.json",
|
||||
"compilerOptions": {
|
||||
"baseUrl": ".",
|
||||
"target": "ESNext",
|
||||
"lib": ["dom", "dom.iterable", "esnext"],
|
||||
"allowJs": true,
|
||||
"skipLibCheck": true,
|
||||
"strict": true,
|
||||
"forceConsistentCasingInFileNames": true,
|
||||
"noEmit": true,
|
||||
"esModuleInterop": true,
|
||||
"module": "esnext",
|
||||
"moduleResolution": "bundler",
|
||||
"resolveJsonModule": true,
|
||||
"isolatedModules": true,
|
||||
"jsx": "react-jsx",
|
||||
"incremental": true,
|
||||
"paths": {
|
||||
"@/.source/*": ["./.source/*"],
|
||||
"@/*": ["./*"]
|
||||
}
|
||||
},
|
||||
"plugins": [
|
||||
{
|
||||
"name": "next"
|
||||
}
|
||||
]
|
||||
},
|
||||
"include": [
|
||||
"next-env.d.ts",
|
||||
|
||||
@@ -9,7 +9,6 @@ type AuthBackgroundProps = {
|
||||
export default function AuthBackground({ className, children }: AuthBackgroundProps) {
|
||||
return (
|
||||
<div className={cn('relative min-h-screen w-full overflow-hidden', className)}>
|
||||
<div className='-z-50 pointer-events-none fixed inset-0 bg-white' />
|
||||
<AuthBackgroundSVG />
|
||||
<div className='relative z-20'>{children}</div>
|
||||
</div>
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
'use client'
|
||||
|
||||
import { useEffect, useState } from 'react'
|
||||
import { createLogger } from '@sim/logger'
|
||||
import { ArrowRight, ChevronRight, Eye, EyeOff } from 'lucide-react'
|
||||
import Link from 'next/link'
|
||||
import { useRouter, useSearchParams } from 'next/navigation'
|
||||
@@ -19,6 +18,7 @@ import { client } from '@/lib/auth/auth-client'
|
||||
import { getEnv, isFalsy, isTruthy } from '@/lib/core/config/env'
|
||||
import { cn } from '@/lib/core/utils/cn'
|
||||
import { getBaseUrl } from '@/lib/core/utils/urls'
|
||||
import { createLogger } from '@/lib/logs/console/logger'
|
||||
import { quickValidateEmail } from '@/lib/messaging/email/validation'
|
||||
import { inter } from '@/app/_styles/fonts/inter/inter'
|
||||
import { soehne } from '@/app/_styles/fonts/soehne/soehne'
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
'use client'
|
||||
|
||||
import { Suspense, useEffect, useState } from 'react'
|
||||
import { createLogger } from '@sim/logger'
|
||||
import Link from 'next/link'
|
||||
import { useRouter, useSearchParams } from 'next/navigation'
|
||||
import { createLogger } from '@/lib/logs/console/logger'
|
||||
import { inter } from '@/app/_styles/fonts/inter/inter'
|
||||
import { soehne } from '@/app/_styles/fonts/soehne/soehne'
|
||||
import { SetNewPasswordForm } from '@/app/(auth)/reset-password/reset-password-form'
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
'use client'
|
||||
|
||||
import { Suspense, useEffect, useState } from 'react'
|
||||
import { createLogger } from '@sim/logger'
|
||||
import { ArrowRight, ChevronRight, Eye, EyeOff } from 'lucide-react'
|
||||
import Link from 'next/link'
|
||||
import { useRouter, useSearchParams } from 'next/navigation'
|
||||
@@ -11,6 +10,7 @@ import { Label } from '@/components/ui/label'
|
||||
import { client, useSession } from '@/lib/auth/auth-client'
|
||||
import { getEnv, isFalsy, isTruthy } from '@/lib/core/config/env'
|
||||
import { cn } from '@/lib/core/utils/cn'
|
||||
import { createLogger } from '@/lib/logs/console/logger'
|
||||
import { quickValidateEmail } from '@/lib/messaging/email/validation'
|
||||
import { inter } from '@/app/_styles/fonts/inter/inter'
|
||||
import { soehne } from '@/app/_styles/fonts/soehne/soehne'
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
'use client'
|
||||
|
||||
import { useEffect, useState } from 'react'
|
||||
import { createLogger } from '@sim/logger'
|
||||
import Link from 'next/link'
|
||||
import { useRouter, useSearchParams } from 'next/navigation'
|
||||
import { Button } from '@/components/ui/button'
|
||||
@@ -10,6 +9,7 @@ import { Label } from '@/components/ui/label'
|
||||
import { client } from '@/lib/auth/auth-client'
|
||||
import { env, isFalsy } from '@/lib/core/config/env'
|
||||
import { cn } from '@/lib/core/utils/cn'
|
||||
import { createLogger } from '@/lib/logs/console/logger'
|
||||
import { quickValidateEmail } from '@/lib/messaging/email/validation'
|
||||
import { inter } from '@/app/_styles/fonts/inter/inter'
|
||||
import { soehne } from '@/app/_styles/fonts/soehne/soehne'
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
'use client'
|
||||
|
||||
import { useEffect, useState } from 'react'
|
||||
import { createLogger } from '@sim/logger'
|
||||
import { useRouter, useSearchParams } from 'next/navigation'
|
||||
import { client, useSession } from '@/lib/auth/auth-client'
|
||||
import { createLogger } from '@/lib/logs/console/logger'
|
||||
|
||||
const logger = createLogger('useVerification')
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { createLogger } from '@sim/logger'
|
||||
import { createLogger } from '@/lib/logs/console/logger'
|
||||
|
||||
const DEFAULT_STARS = '19.4k'
|
||||
|
||||
|
||||
@@ -1,8 +1,7 @@
|
||||
'use client'
|
||||
|
||||
import { useRef, useState } from 'react'
|
||||
import { createLogger } from '@sim/logger'
|
||||
import { X } from 'lucide-react'
|
||||
import { Loader2, X } from 'lucide-react'
|
||||
import { Button } from '@/components/ui/button'
|
||||
import { Input } from '@/components/ui/input'
|
||||
import { Label } from '@/components/ui/label'
|
||||
@@ -16,6 +15,7 @@ import {
|
||||
import { Textarea } from '@/components/ui/textarea'
|
||||
import { isHosted } from '@/lib/core/config/feature-flags'
|
||||
import { cn } from '@/lib/core/utils/cn'
|
||||
import { createLogger } from '@/lib/logs/console/logger'
|
||||
import { quickValidateEmail } from '@/lib/messaging/email/validation'
|
||||
import { soehne } from '@/app/_styles/fonts/soehne/soehne'
|
||||
import Footer from '@/app/(landing)/components/footer/footer'
|
||||
@@ -499,11 +499,16 @@ export default function CareersPage() {
|
||||
className='min-w-[200px] rounded-[10px] border border-[#6F3DFA] bg-gradient-to-b from-[#8357FF] to-[#6F3DFA] text-white shadow-[inset_0_2px_4px_0_#9B77FF] transition-all duration-300 hover:opacity-90 disabled:opacity-50'
|
||||
size='lg'
|
||||
>
|
||||
{isSubmitting
|
||||
? 'Submitting...'
|
||||
: submitStatus === 'success'
|
||||
? 'Submitted'
|
||||
: 'Submit Application'}
|
||||
{isSubmitting ? (
|
||||
<>
|
||||
<Loader2 className='mr-2 h-4 w-4 animate-spin' />
|
||||
Submitting...
|
||||
</>
|
||||
) : submitStatus === 'success' ? (
|
||||
'Submitted'
|
||||
) : (
|
||||
'Submit Application'
|
||||
)}
|
||||
</Button>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
@@ -5,39 +5,39 @@ export default function BackgroundSVG() {
|
||||
focusable='false'
|
||||
className='-translate-x-1/2 pointer-events-none absolute top-0 left-1/2 z-10 hidden h-full min-h-full w-[1308px] sm:block'
|
||||
width='1308'
|
||||
height='4970'
|
||||
viewBox='0 18 1308 4094'
|
||||
height='4942'
|
||||
viewBox='0 18 1308 4066'
|
||||
fill='none'
|
||||
xmlns='http://www.w3.org/2000/svg'
|
||||
preserveAspectRatio='xMidYMin slice'
|
||||
>
|
||||
{/* Pricing section (extended by ~28 units) */}
|
||||
{/* Pricing section (original height ~380 units) */}
|
||||
<path d='M6.71704 1236.22H1300.76' stroke='#E7E4EF' strokeWidth='2' />
|
||||
<circle cx='11.0557' cy='1236.48' r='8.07846' fill='white' stroke='#E7E4EF' strokeWidth='2' />
|
||||
<circle cx='1298.02' cy='1236.48' r='8.07846' fill='white' stroke='#E7E4EF' strokeWidth='2' />
|
||||
<path d='M10.7967 1245.42V1641.91' stroke='#E7E4EF' strokeWidth='2' />
|
||||
<path d='M1297.76 1245.96V1641.91' stroke='#E7E4EF' strokeWidth='2' />
|
||||
<path d='M10.7967 1245.42V1613.91' stroke='#E7E4EF' strokeWidth='2' />
|
||||
<path d='M1297.76 1245.96V1613.91' stroke='#E7E4EF' strokeWidth='2' />
|
||||
|
||||
{/* Integrations section (shifted down by 28 units) */}
|
||||
<path d='M6.71704 1642.89H1291.05' stroke='#E7E4EF' strokeWidth='2' />
|
||||
<circle cx='11.0557' cy='1643.15' r='8.07846' fill='white' stroke='#E7E4EF' strokeWidth='2' />
|
||||
<circle cx='1298.02' cy='1643.15' r='8.07846' fill='white' stroke='#E7E4EF' strokeWidth='2' />
|
||||
<path d='M10.7967 1652.61V2054.93' stroke='#E7E4EF' strokeWidth='2' />
|
||||
<path d='M1297.76 1652.61V2054.93' stroke='#E7E4EF' strokeWidth='2' />
|
||||
{/* Integrations section (original height ~412 units) */}
|
||||
<path d='M6.71704 1614.89H1291.05' stroke='#E7E4EF' strokeWidth='2' />
|
||||
<circle cx='11.0557' cy='1615.15' r='8.07846' fill='white' stroke='#E7E4EF' strokeWidth='2' />
|
||||
<circle cx='1298.02' cy='1615.15' r='8.07846' fill='white' stroke='#E7E4EF' strokeWidth='2' />
|
||||
<path d='M10.7967 1624.61V2026.93' stroke='#E7E4EF' strokeWidth='2' />
|
||||
<path d='M1297.76 1624.61V2026.93' stroke='#E7E4EF' strokeWidth='2' />
|
||||
|
||||
{/* Testimonials section (shifted down by 28 units) */}
|
||||
<path d='M6.71704 2054.71H1300.76' stroke='#E7E4EF' strokeWidth='2' />
|
||||
<circle cx='11.0557' cy='2054.97' r='8.07846' fill='white' stroke='#E7E4EF' strokeWidth='2' />
|
||||
<circle cx='1298.02' cy='2054.97' r='8.07846' fill='white' stroke='#E7E4EF' strokeWidth='2' />
|
||||
<path d='M10.7967 2064.43V2205.43' stroke='#E7E4EF' strokeWidth='2' />
|
||||
<path d='M1297.76 2064.43V2205.43' stroke='#E7E4EF' strokeWidth='2' />
|
||||
{/* Testimonials section (original short height ~149 units) */}
|
||||
<path d='M6.71704 2026.71H1300.76' stroke='#E7E4EF' strokeWidth='2' />
|
||||
<circle cx='11.0557' cy='2026.97' r='8.07846' fill='white' stroke='#E7E4EF' strokeWidth='2' />
|
||||
<circle cx='1298.02' cy='2026.97' r='8.07846' fill='white' stroke='#E7E4EF' strokeWidth='2' />
|
||||
<path d='M10.7967 2036.43V2177.43' stroke='#E7E4EF' strokeWidth='2' />
|
||||
<path d='M1297.76 2036.43V2177.43' stroke='#E7E4EF' strokeWidth='2' />
|
||||
|
||||
{/* Footer section line (shifted down by 28 units) */}
|
||||
<path d='M6.71704 2205.71H1300.76' stroke='#E7E4EF' strokeWidth='2' />
|
||||
<circle cx='11.0557' cy='2205.97' r='8.07846' fill='white' stroke='#E7E4EF' strokeWidth='2' />
|
||||
<circle cx='1298.02' cy='2205.97' r='8.07846' fill='white' stroke='#E7E4EF' strokeWidth='2' />
|
||||
<path d='M10.7967 2215.43V4118.25' stroke='#E7E4EF' strokeWidth='2' />
|
||||
<path d='M1297.76 2215.43V4118.25' stroke='#E7E4EF' strokeWidth='2' />
|
||||
{/* Footer section line */}
|
||||
<path d='M6.71704 2177.71H1300.76' stroke='#E7E4EF' strokeWidth='2' />
|
||||
<circle cx='11.0557' cy='2177.97' r='8.07846' fill='white' stroke='#E7E4EF' strokeWidth='2' />
|
||||
<circle cx='1298.02' cy='2177.97' r='8.07846' fill='white' stroke='#E7E4EF' strokeWidth='2' />
|
||||
<path d='M10.7967 2187.43V4090.25' stroke='#E7E4EF' strokeWidth='2' />
|
||||
<path d='M1297.76 2187.43V4090.25' stroke='#E7E4EF' strokeWidth='2' />
|
||||
<path
|
||||
d='M959.828 116.604C1064.72 187.189 1162.61 277.541 1293.45 536.597'
|
||||
stroke='#E7E4EF'
|
||||
|
||||
@@ -15,7 +15,6 @@ type BackgroundProps = {
|
||||
export default function Background({ className, children }: BackgroundProps) {
|
||||
return (
|
||||
<div className={cn('relative min-h-screen w-full', className)}>
|
||||
<div className='-z-50 pointer-events-none fixed inset-0 bg-white' />
|
||||
<BackgroundSVG />
|
||||
<div className='relative z-0 mx-auto w-full max-w-[1308px]'>{children}</div>
|
||||
</div>
|
||||
|
||||
@@ -1,8 +1,6 @@
|
||||
'use client'
|
||||
|
||||
import type { ComponentType, SVGProps } from 'react'
|
||||
import { useState } from 'react'
|
||||
import { createLogger } from '@sim/logger'
|
||||
import type { LucideIcon } from 'lucide-react'
|
||||
import {
|
||||
ArrowRight,
|
||||
@@ -15,6 +13,7 @@ import {
|
||||
} from 'lucide-react'
|
||||
import { useRouter } from 'next/navigation'
|
||||
import { cn } from '@/lib/core/utils/cn'
|
||||
import { createLogger } from '@/lib/logs/console/logger'
|
||||
import { inter } from '@/app/_styles/fonts/inter/inter'
|
||||
import {
|
||||
ENTERPRISE_PLAN_FEATURES,
|
||||
@@ -25,7 +24,7 @@ import {
|
||||
const logger = createLogger('LandingPricing')
|
||||
|
||||
interface PricingFeature {
|
||||
icon: LucideIcon | ComponentType<SVGProps<SVGSVGElement>>
|
||||
icon: LucideIcon
|
||||
text: string
|
||||
}
|
||||
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
'use client'
|
||||
|
||||
import { useCallback, useEffect, useState } from 'react'
|
||||
import { createLogger } from '@sim/logger'
|
||||
import { ArrowRight, ChevronRight } from 'lucide-react'
|
||||
import Image from 'next/image'
|
||||
import Link from 'next/link'
|
||||
@@ -9,6 +8,7 @@ import { useRouter } from 'next/navigation'
|
||||
import { GithubIcon } from '@/components/icons'
|
||||
import { useBrandConfig } from '@/lib/branding/branding'
|
||||
import { isHosted } from '@/lib/core/config/feature-flags'
|
||||
import { createLogger } from '@/lib/logs/console/logger'
|
||||
import { soehne } from '@/app/_styles/fonts/soehne/soehne'
|
||||
import { getFormattedGitHubStars } from '@/app/(landing)/actions/github'
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
'use client'
|
||||
|
||||
import { useEffect } from 'react'
|
||||
import { createLogger } from '@sim/logger'
|
||||
import { createLogger } from '@/lib/logs/console/logger'
|
||||
|
||||
const logger = createLogger('RootLayout')
|
||||
|
||||
|
||||
@@ -7,7 +7,7 @@ import { ThemeProvider as NextThemesProvider } from 'next-themes'
|
||||
export function ThemeProvider({ children, ...props }: ThemeProviderProps) {
|
||||
const pathname = usePathname()
|
||||
|
||||
// Force light mode on public/marketing pages, allow user preference elsewhere
|
||||
// Force light mode on public/marketing pages, dark mode everywhere else
|
||||
const isLightModePage =
|
||||
pathname === '/' ||
|
||||
pathname.startsWith('/login') ||
|
||||
@@ -27,10 +27,10 @@ export function ThemeProvider({ children, ...props }: ThemeProviderProps) {
|
||||
<NextThemesProvider
|
||||
attribute='class'
|
||||
defaultTheme='dark'
|
||||
enableSystem
|
||||
enableSystem={false}
|
||||
disableTransitionOnChange
|
||||
storageKey='sim-theme'
|
||||
forcedTheme={isLightModePage ? 'light' : undefined}
|
||||
forcedTheme={isLightModePage ? 'light' : 'dark'}
|
||||
{...props}
|
||||
>
|
||||
{children}
|
||||
|
||||
33
apps/sim/app/_shell/zoom-prevention.tsx
Normal file
33
apps/sim/app/_shell/zoom-prevention.tsx
Normal file
@@ -0,0 +1,33 @@
|
||||
'use client'
|
||||
|
||||
import { useEffect } from 'react'
|
||||
|
||||
export function ZoomPrevention() {
|
||||
useEffect(() => {
|
||||
const preventZoom = (e: KeyboardEvent | WheelEvent) => {
|
||||
// Prevent zoom on ctrl/cmd + wheel
|
||||
if (e instanceof WheelEvent && (e.ctrlKey || e.metaKey)) {
|
||||
e.preventDefault()
|
||||
}
|
||||
|
||||
// Prevent zoom on ctrl/cmd + plus/minus/zero
|
||||
if (e instanceof KeyboardEvent && (e.ctrlKey || e.metaKey)) {
|
||||
if (e.key === '=' || e.key === '-' || e.key === '0') {
|
||||
e.preventDefault()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Add event listeners
|
||||
document.addEventListener('wheel', preventZoom, { passive: false })
|
||||
document.addEventListener('keydown', preventZoom)
|
||||
|
||||
// Cleanup
|
||||
return () => {
|
||||
document.removeEventListener('wheel', preventZoom)
|
||||
document.removeEventListener('keydown', preventZoom)
|
||||
}
|
||||
}, [])
|
||||
|
||||
return null
|
||||
}
|
||||
@@ -8,7 +8,7 @@
|
||||
*/
|
||||
:root {
|
||||
--sidebar-width: 232px;
|
||||
--panel-width: 260px;
|
||||
--panel-width: 244px;
|
||||
--toolbar-triggers-height: 300px;
|
||||
--editor-connections-height: 200px;
|
||||
--terminal-height: 196px;
|
||||
@@ -26,6 +26,41 @@
|
||||
height: var(--terminal-height);
|
||||
}
|
||||
|
||||
/**
|
||||
* Workflow component z-index fixes and background colors
|
||||
*/
|
||||
.workflow-container .react-flow__edges {
|
||||
z-index: 0 !important;
|
||||
}
|
||||
|
||||
.workflow-container .react-flow__node {
|
||||
z-index: 21 !important;
|
||||
}
|
||||
|
||||
.workflow-container .react-flow__handle {
|
||||
z-index: 30 !important;
|
||||
}
|
||||
|
||||
.workflow-container .react-flow__edge [data-testid="workflow-edge"] {
|
||||
z-index: 0 !important;
|
||||
}
|
||||
|
||||
.workflow-container .react-flow__edge-labels {
|
||||
z-index: 60 !important;
|
||||
}
|
||||
|
||||
.workflow-container,
|
||||
.workflow-container .react-flow__pane,
|
||||
.workflow-container .react-flow__renderer {
|
||||
background-color: var(--bg) !important;
|
||||
}
|
||||
|
||||
.dark .workflow-container,
|
||||
.dark .workflow-container .react-flow__pane,
|
||||
.dark .workflow-container .react-flow__renderer {
|
||||
background-color: var(--bg) !important;
|
||||
}
|
||||
|
||||
/**
|
||||
* Landing loop animation styles (keyframes defined in tailwind.config.ts)
|
||||
*/
|
||||
@@ -40,87 +75,101 @@
|
||||
}
|
||||
|
||||
/**
|
||||
* Color tokens - single source of truth for all colors
|
||||
* Light mode: Warm theme
|
||||
* Dark mode: Dark neutral theme
|
||||
* Dark color tokens - single source of truth for all colors (dark-only)
|
||||
*/
|
||||
@layer base {
|
||||
:root,
|
||||
.light {
|
||||
--bg: #fdfdfd; /* main canvas - neutral near-white */
|
||||
--surface-1: #fcfcfc; /* sidebar, panels */
|
||||
--surface-2: #ffffff; /* blocks, cards, modals - pure white */
|
||||
--surface-3: #f7f7f7; /* popovers, headers */
|
||||
--surface-4: #f5f5f5; /* buttons base */
|
||||
--border: #e0e0e0; /* primary border */
|
||||
--surface-5: #f3f3f3; /* inputs, form elements */
|
||||
--border-1: #e0e0e0; /* stronger border */
|
||||
--surface-6: #f0f0f0; /* popovers, elevated surfaces */
|
||||
--surface-7: #ececec;
|
||||
/* Neutrals (surfaces) - shadcn stone palette */
|
||||
--bg: #ffffff; /* pure white for landing/auth pages */
|
||||
--surface-1: #fafaf9; /* stone-50 */
|
||||
--surface-2: #ffffff; /* white */
|
||||
--surface-3: #f5f5f4; /* stone-100 */
|
||||
--surface-4: #f5f5f4; /* stone-100 */
|
||||
--surface-5: #eeedec; /* stone-150 */
|
||||
--surface-6: #f5f5f4; /* stone-100 */
|
||||
--surface-9: #f5f5f4; /* stone-100 */
|
||||
--surface-11: #e7e5e4; /* stone-200 */
|
||||
--surface-12: #d6d3d1; /* stone-300 */
|
||||
--surface-13: #a8a29e; /* stone-400 */
|
||||
--surface-14: #78716c; /* stone-500 */
|
||||
--surface-15: #57534e; /* stone-600 */
|
||||
--surface-elevated: #ffffff; /* white */
|
||||
--bg-strong: #e7e5e4; /* stone-200 */
|
||||
|
||||
--workflow-edge: #e0e0e0; /* workflow handles/edges - matches border-1 */
|
||||
/* Text - shadcn stone palette for proper contrast */
|
||||
--text-primary: #1c1917; /* stone-900 */
|
||||
--text-secondary: #292524; /* stone-800 */
|
||||
--text-tertiary: #57534e; /* stone-600 */
|
||||
--text-muted: #78716c; /* stone-500 */
|
||||
--text-subtle: #a8a29e; /* stone-400 */
|
||||
--text-inverse: #fafaf9; /* stone-50 */
|
||||
--text-error: #dc2626;
|
||||
|
||||
/* Text - neutral */
|
||||
--text-primary: #2d2d2d;
|
||||
--text-secondary: #404040;
|
||||
--text-tertiary: #5c5c5c;
|
||||
--text-muted: #737373;
|
||||
--text-subtle: #8c8c8c;
|
||||
--text-inverse: #ffffff;
|
||||
--text-error: #ef4444;
|
||||
|
||||
/* Borders / dividers */
|
||||
--divider: #ededed;
|
||||
--border-muted: #e4e4e4;
|
||||
--border-success: #e0e0e0;
|
||||
/* Borders / dividers - shadcn stone palette */
|
||||
--border: #d6d3d1; /* stone-300 */
|
||||
--border-strong: #d6d3d1; /* stone-300 */
|
||||
--divider: #e7e5e4; /* stone-200 */
|
||||
--border-muted: #e7e5e4; /* stone-200 */
|
||||
--border-success: #d6d3d1; /* stone-300 */
|
||||
|
||||
/* Brand & state */
|
||||
--brand-400: #8e4cfb;
|
||||
--brand-500: #6f3dfa;
|
||||
--brand-secondary: #33b4ff;
|
||||
--brand-tertiary: #22c55e;
|
||||
--brand-tertiary-2: #32bd7e;
|
||||
--brand-tertiary-2: #33c481;
|
||||
--warning: #ea580c;
|
||||
|
||||
/* Utility */
|
||||
--white: #ffffff;
|
||||
|
||||
/* Font weights - lighter for light mode */
|
||||
/* Font weights - lighter for light mode (-20 from dark) */
|
||||
--font-weight-base: 430;
|
||||
--font-weight-medium: 450;
|
||||
--font-weight-semibold: 500;
|
||||
|
||||
/* Extended palette */
|
||||
--c-0D0D0D: #0d0d0d;
|
||||
--c-1A1A1A: #1a1a1a;
|
||||
--c-1F1F1F: #1f1f1f;
|
||||
--c-2A2A2A: #2a2a2a;
|
||||
--c-383838: #383838;
|
||||
--c-414141: #414141;
|
||||
/* RGB for opacity usage - stone palette */
|
||||
--surface-4-rgb: 245 245 244; /* stone-100 */
|
||||
--surface-5-rgb: 238 237 236; /* stone-150 */
|
||||
--surface-7-rgb: 245 245 244; /* stone-100 */
|
||||
--surface-9-rgb: 245 245 244; /* stone-100 */
|
||||
--divider-rgb: 231 229 228; /* stone-200 */
|
||||
--white-rgb: 255 255 255;
|
||||
--black-rgb: 0 0 0;
|
||||
|
||||
/* Extended palette - mapped to shadcn stone palette */
|
||||
--c-0D0D0D: #0c0a09; /* stone-950 */
|
||||
--c-1A1A1A: #1c1917; /* stone-900 */
|
||||
--c-1F1F1F: #1c1917; /* stone-900 */
|
||||
--c-2A2A2A: #292524; /* stone-800 */
|
||||
--c-383838: #44403c; /* stone-700 */
|
||||
--c-414141: #57534e; /* stone-600 */
|
||||
--c-442929: #442929;
|
||||
--c-491515: #491515;
|
||||
--c-575757: #575757;
|
||||
--c-686868: #686868;
|
||||
--c-707070: #707070;
|
||||
--c-727272: #727272;
|
||||
--c-737373: #737373;
|
||||
--c-808080: #808080;
|
||||
--c-858585: #858585;
|
||||
--c-868686: #868686;
|
||||
--c-8D8D8D: #8d8d8d;
|
||||
--c-939393: #939393;
|
||||
--c-A8A8A8: #a8a8a8;
|
||||
--c-B8B8B8: #b8b8b8;
|
||||
--c-C0C0C0: #c0c0c0;
|
||||
--c-CDCDCD: #cdcdcd;
|
||||
--c-D0D0D0: #d0d0d0;
|
||||
--c-D2D2D2: #d2d2d2;
|
||||
--c-E0E0E0: #e0e0e0;
|
||||
--c-E5E5E5: #e5e5e5;
|
||||
--c-E8E8E8: #e8e8e8;
|
||||
--c-EEEEEE: #eeeeee;
|
||||
--c-F0F0F0: #f0f0f0;
|
||||
--c-F4F4F4: #f4f4f4;
|
||||
--c-F5F5F5: #f5f5f5;
|
||||
--c-575757: #78716c; /* stone-500 */
|
||||
--c-686868: #78716c; /* stone-500 */
|
||||
--c-707070: #78716c; /* stone-500 */
|
||||
--c-727272: #78716c; /* stone-500 */
|
||||
--c-737373: #78716c; /* stone-500 */
|
||||
--c-808080: #a8a29e; /* stone-400 */
|
||||
--c-858585: #a8a29e; /* stone-400 */
|
||||
--c-868686: #a8a29e; /* stone-400 */
|
||||
--c-8D8D8D: #a8a29e; /* stone-400 */
|
||||
--c-939393: #a8a29e; /* stone-400 */
|
||||
--c-A8A8A8: #a8a29e; /* stone-400 */
|
||||
--c-B8B8B8: #d6d3d1; /* stone-300 */
|
||||
--c-C0C0C0: #d6d3d1; /* stone-300 */
|
||||
--c-CDCDCD: #d6d3d1; /* stone-300 */
|
||||
--c-D0D0D0: #d6d3d1; /* stone-300 */
|
||||
--c-D2D2D2: #d6d3d1; /* stone-300 */
|
||||
--c-E0E0E0: #e7e5e4; /* stone-200 */
|
||||
--c-E5E5E5: #e7e5e4; /* stone-200 */
|
||||
--c-E8E8E8: #e7e5e4; /* stone-200 */
|
||||
--c-EEEEEE: #f5f5f4; /* stone-100 */
|
||||
--c-F0F0F0: #f5f5f4; /* stone-100 */
|
||||
--c-F4F4F4: #fafaf9; /* stone-50 */
|
||||
--c-F5F5F5: #fafaf9; /* stone-50 */
|
||||
|
||||
/* Blues and cyans */
|
||||
--c-00B0B0: #00b0b0;
|
||||
@@ -152,29 +201,32 @@
|
||||
--c-883827: #7c2d12;
|
||||
|
||||
/* Terminal status badges */
|
||||
--terminal-status-error-bg: #fef2f2;
|
||||
--terminal-status-error-bg: #feeeee;
|
||||
--terminal-status-error-border: #f87171;
|
||||
--terminal-status-info-bg: #f7f7f7;
|
||||
--terminal-status-info-border: #a3a3a3;
|
||||
--terminal-status-info-color: #525252;
|
||||
--terminal-status-warning-bg: #fefce8;
|
||||
--terminal-status-warning-border: #facc15;
|
||||
--terminal-status-info-bg: #f5f5f4; /* stone-100 */
|
||||
--terminal-status-info-border: #a8a29e; /* stone-400 */
|
||||
--terminal-status-info-color: #57534e; /* stone-600 */
|
||||
--terminal-status-warning-bg: #fef9e7;
|
||||
--terminal-status-warning-border: #f5c842;
|
||||
--terminal-status-warning-color: #a16207;
|
||||
}
|
||||
.dark {
|
||||
/* Surface */
|
||||
/* Neutrals (surfaces) */
|
||||
--bg: #1b1b1b;
|
||||
--surface-1: #1e1e1e;
|
||||
--surface-2: #232323;
|
||||
--surface-3: #242424;
|
||||
--surface-4: #292929;
|
||||
--border: #2c2c2c;
|
||||
--surface-5: #363636;
|
||||
--border-1: #3d3d3d;
|
||||
--surface-6: #454545;
|
||||
--surface-7: #454545;
|
||||
|
||||
--workflow-edge: #454545; /* workflow handles/edges - same as surface-6 in dark */
|
||||
--surface-4: #252525;
|
||||
--surface-5: #272727;
|
||||
--surface-6: #282828;
|
||||
--surface-9: #363636;
|
||||
--surface-11: #3d3d3d;
|
||||
--surface-12: #434343;
|
||||
--surface-13: #454545;
|
||||
--surface-14: #4a4a4a;
|
||||
--surface-15: #5a5a5a;
|
||||
--surface-elevated: #202020;
|
||||
--bg-strong: #0c0c0c;
|
||||
|
||||
/* Text */
|
||||
--text-primary: #e6e6e6;
|
||||
@@ -185,7 +237,9 @@
|
||||
--text-inverse: #1b1b1b;
|
||||
--text-error: #ef4444;
|
||||
|
||||
/* --border-strong: #303030; */
|
||||
/* Borders / dividers */
|
||||
--border: #2c2c2c;
|
||||
--border-strong: #303030;
|
||||
--divider: #393939;
|
||||
--border-muted: #424242;
|
||||
--border-success: #575757;
|
||||
@@ -194,7 +248,7 @@
|
||||
--brand-400: #8e4cfb;
|
||||
--brand-secondary: #33b4ff;
|
||||
--brand-tertiary: #22c55e;
|
||||
--brand-tertiary-2: #32bd7e;
|
||||
--brand-tertiary-2: #33c481;
|
||||
--warning: #ff6600;
|
||||
|
||||
/* Utility */
|
||||
@@ -205,6 +259,15 @@
|
||||
--font-weight-medium: 480;
|
||||
--font-weight-semibold: 550;
|
||||
|
||||
/* RGB for opacity usage */
|
||||
--surface-4-rgb: 37 37 37;
|
||||
--surface-5-rgb: 39 39 39;
|
||||
--surface-7-rgb: 44 44 44;
|
||||
--surface-9-rgb: 54 54 54;
|
||||
--divider-rgb: 57 57 57;
|
||||
--white-rgb: 255 255 255;
|
||||
--black-rgb: 0 0 0;
|
||||
|
||||
/* Extended palette (exhaustive from code usage via -[#...]) */
|
||||
/* Neutral deep shades */
|
||||
--c-0D0D0D: #0d0d0d;
|
||||
@@ -332,34 +395,34 @@
|
||||
}
|
||||
|
||||
::-webkit-scrollbar-thumb {
|
||||
background-color: var(--surface-7);
|
||||
background-color: var(--surface-12);
|
||||
border-radius: var(--radius);
|
||||
}
|
||||
|
||||
::-webkit-scrollbar-thumb:hover {
|
||||
background-color: var(--surface-7);
|
||||
background-color: var(--surface-13);
|
||||
}
|
||||
|
||||
/* Dark Mode Global Scrollbar */
|
||||
.dark ::-webkit-scrollbar-track {
|
||||
background: var(--surface-4);
|
||||
background: var(--surface-5);
|
||||
}
|
||||
|
||||
.dark ::-webkit-scrollbar-thumb {
|
||||
background-color: var(--surface-7);
|
||||
background-color: var(--surface-12);
|
||||
}
|
||||
|
||||
.dark ::-webkit-scrollbar-thumb:hover {
|
||||
background-color: var(--surface-7);
|
||||
background-color: var(--surface-13);
|
||||
}
|
||||
|
||||
* {
|
||||
scrollbar-width: thin;
|
||||
scrollbar-color: var(--surface-7) var(--surface-1);
|
||||
scrollbar-color: var(--surface-12) var(--surface-1);
|
||||
}
|
||||
|
||||
.dark * {
|
||||
scrollbar-color: var(--surface-7) var(--surface-4);
|
||||
scrollbar-color: var(--surface-12) var(--surface-5);
|
||||
}
|
||||
|
||||
.copilot-scrollable {
|
||||
@@ -375,8 +438,8 @@
|
||||
}
|
||||
|
||||
.panel-tab-active {
|
||||
background-color: var(--surface-5);
|
||||
color: var(--text-primary);
|
||||
background-color: var(--white);
|
||||
color: var(--text-inverse);
|
||||
border-color: var(--border-muted);
|
||||
}
|
||||
|
||||
@@ -387,21 +450,10 @@
|
||||
}
|
||||
|
||||
.panel-tab-inactive:hover {
|
||||
background-color: var(--surface-5);
|
||||
background-color: var(--surface-9);
|
||||
color: var(--text-primary);
|
||||
}
|
||||
|
||||
/**
|
||||
* Subblock divider visibility
|
||||
* Hides dividers when adjacent subblocks render empty content (e.g., schedule-info without data).
|
||||
* Uses CSS :has() to detect empty .subblock-content elements and hide associated dividers.
|
||||
* Selectors ordered by ascending specificity: (0,4,0) then (0,5,0)
|
||||
*/
|
||||
.subblock-row:has(> .subblock-content:empty) > .subblock-divider,
|
||||
.subblock-row:has(+ .subblock-row > .subblock-content:empty) > .subblock-divider {
|
||||
display: none;
|
||||
}
|
||||
|
||||
/**
|
||||
* Dark mode specific overrides
|
||||
*/
|
||||
@@ -549,25 +601,25 @@ input[type="search"]::-ms-clear {
|
||||
}
|
||||
|
||||
.auth-button-gradient {
|
||||
background: linear-gradient(to bottom, var(--brand-primary-hex), var(--brand-400)) !important;
|
||||
background: linear-gradient(to bottom, var(--brand-500), var(--brand-400)) !important;
|
||||
border-color: var(--brand-400) !important;
|
||||
box-shadow: inset 0 2px 4px 0 var(--brand-400) !important;
|
||||
}
|
||||
|
||||
.auth-button-gradient:hover {
|
||||
background: linear-gradient(to bottom, var(--brand-primary-hex), var(--brand-400)) !important;
|
||||
background: linear-gradient(to bottom, var(--brand-500), var(--brand-400)) !important;
|
||||
opacity: 0.9;
|
||||
}
|
||||
|
||||
.auth-button-custom {
|
||||
background: var(--brand-primary-hex) !important;
|
||||
border-color: var(--brand-primary-hex) !important;
|
||||
background: var(--brand-500) !important;
|
||||
border-color: var(--brand-500) !important;
|
||||
box-shadow: inset 0 2px 4px 0 rgba(0, 0, 0, 0.1) !important;
|
||||
}
|
||||
|
||||
.auth-button-custom:hover {
|
||||
background: var(--brand-primary-hover-hex) !important;
|
||||
border-color: var(--brand-primary-hover-hex) !important;
|
||||
background: var(--brand-500) !important;
|
||||
border-color: var(--brand-500) !important;
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
@@ -590,7 +642,7 @@ input[type="search"]::-ms-clear {
|
||||
}
|
||||
|
||||
html[data-panel-active-tab="copilot"] .panel-container [data-tab-button="copilot"] {
|
||||
background-color: var(--border-1) !important;
|
||||
background-color: var(--surface-11) !important;
|
||||
color: var(--text-primary) !important;
|
||||
}
|
||||
html[data-panel-active-tab="copilot"] .panel-container [data-tab-button="toolbar"],
|
||||
@@ -600,7 +652,7 @@ input[type="search"]::-ms-clear {
|
||||
}
|
||||
|
||||
html[data-panel-active-tab="toolbar"] .panel-container [data-tab-button="toolbar"] {
|
||||
background-color: var(--border-1) !important;
|
||||
background-color: var(--surface-11) !important;
|
||||
color: var(--text-primary) !important;
|
||||
}
|
||||
html[data-panel-active-tab="toolbar"] .panel-container [data-tab-button="copilot"],
|
||||
@@ -610,7 +662,7 @@ input[type="search"]::-ms-clear {
|
||||
}
|
||||
|
||||
html[data-panel-active-tab="editor"] .panel-container [data-tab-button="editor"] {
|
||||
background-color: var(--border-1) !important;
|
||||
background-color: var(--surface-11) !important;
|
||||
color: var(--text-primary) !important;
|
||||
}
|
||||
html[data-panel-active-tab="editor"] .panel-container [data-tab-button="copilot"],
|
||||
|
||||
@@ -735,7 +735,7 @@ export function mockKnowledgeSchemas() {
|
||||
* This ensures tests can assert on the same mockLogger instance exported from this module.
|
||||
*/
|
||||
export function mockConsoleLogger() {
|
||||
vi.doMock('@sim/logger', () => ({
|
||||
vi.doMock('@/lib/logs/console/logger', () => ({
|
||||
createLogger: vi.fn().mockReturnValue(mockLogger),
|
||||
}))
|
||||
}
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
import { db } from '@sim/db'
|
||||
import { account } from '@sim/db/schema'
|
||||
import { createLogger } from '@sim/logger'
|
||||
import { and, eq } from 'drizzle-orm'
|
||||
import { type NextRequest, NextResponse } from 'next/server'
|
||||
import { getSession } from '@/lib/auth'
|
||||
import { createLogger } from '@/lib/logs/console/logger'
|
||||
|
||||
const logger = createLogger('AuthAccountsAPI')
|
||||
|
||||
|
||||
@@ -162,7 +162,7 @@ describe('Forget Password API Route', () => {
|
||||
expect(response.status).toBe(500)
|
||||
expect(data.message).toBe(errorMessage)
|
||||
|
||||
const logger = await import('@sim/logger')
|
||||
const logger = await import('@/lib/logs/console/logger')
|
||||
const mockLogger = logger.createLogger('ForgetPasswordTest')
|
||||
expect(mockLogger.error).toHaveBeenCalledWith('Error requesting password reset:', {
|
||||
error: expect.any(Error),
|
||||
@@ -192,7 +192,7 @@ describe('Forget Password API Route', () => {
|
||||
expect(response.status).toBe(500)
|
||||
expect(data.message).toBe('Failed to send password reset email. Please try again later.')
|
||||
|
||||
const logger = await import('@sim/logger')
|
||||
const logger = await import('@/lib/logs/console/logger')
|
||||
const mockLogger = logger.createLogger('ForgetPasswordTest')
|
||||
expect(mockLogger.error).toHaveBeenCalled()
|
||||
})
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
import { createLogger } from '@sim/logger'
|
||||
import { type NextRequest, NextResponse } from 'next/server'
|
||||
import { z } from 'zod'
|
||||
import { auth } from '@/lib/auth'
|
||||
import { isSameOrigin } from '@/lib/core/utils/validation'
|
||||
import { createLogger } from '@/lib/logs/console/logger'
|
||||
|
||||
export const dynamic = 'force-dynamic'
|
||||
|
||||
|
||||
@@ -46,7 +46,7 @@ describe('OAuth Connections API Route', () => {
|
||||
jwtDecode: vi.fn(),
|
||||
}))
|
||||
|
||||
vi.doMock('@sim/logger', () => ({
|
||||
vi.doMock('@/lib/logs/console/logger', () => ({
|
||||
createLogger: vi.fn().mockReturnValue(mockLogger),
|
||||
}))
|
||||
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
import { account, db, user } from '@sim/db'
|
||||
import { createLogger } from '@sim/logger'
|
||||
import { eq } from 'drizzle-orm'
|
||||
import { jwtDecode } from 'jwt-decode'
|
||||
import { type NextRequest, NextResponse } from 'next/server'
|
||||
import { getSession } from '@/lib/auth'
|
||||
import { generateRequestId } from '@/lib/core/utils/request'
|
||||
import { createLogger } from '@/lib/logs/console/logger'
|
||||
import type { OAuthProvider } from '@/lib/oauth'
|
||||
import { evaluateScopeCoverage, parseProvider } from '@/lib/oauth'
|
||||
|
||||
|
||||
@@ -61,7 +61,7 @@ describe('OAuth Credentials API Route', () => {
|
||||
jwtDecode: vi.fn(),
|
||||
}))
|
||||
|
||||
vi.doMock('@sim/logger', () => ({
|
||||
vi.doMock('@/lib/logs/console/logger', () => ({
|
||||
createLogger: vi.fn().mockReturnValue(mockLogger),
|
||||
}))
|
||||
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
import { db } from '@sim/db'
|
||||
import { account, user, workflow } from '@sim/db/schema'
|
||||
import { createLogger } from '@sim/logger'
|
||||
import { and, eq } from 'drizzle-orm'
|
||||
import { jwtDecode } from 'jwt-decode'
|
||||
import { type NextRequest, NextResponse } from 'next/server'
|
||||
import { z } from 'zod'
|
||||
import { checkHybridAuth } from '@/lib/auth/hybrid'
|
||||
import { generateRequestId } from '@/lib/core/utils/request'
|
||||
import { createLogger } from '@/lib/logs/console/logger'
|
||||
import { evaluateScopeCoverage, type OAuthProvider, parseProvider } from '@/lib/oauth'
|
||||
import { getUserEntityPermissions } from '@/lib/workspaces/permissions/utils'
|
||||
|
||||
|
||||
@@ -42,7 +42,7 @@ describe('OAuth Disconnect API Route', () => {
|
||||
or: vi.fn((...conditions) => ({ conditions, type: 'or' })),
|
||||
}))
|
||||
|
||||
vi.doMock('@sim/logger', () => ({
|
||||
vi.doMock('@/lib/logs/console/logger', () => ({
|
||||
createLogger: vi.fn().mockReturnValue(mockLogger),
|
||||
}))
|
||||
})
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
import { db } from '@sim/db'
|
||||
import { account } from '@sim/db/schema'
|
||||
import { createLogger } from '@sim/logger'
|
||||
import { and, eq, like, or } from 'drizzle-orm'
|
||||
import { type NextRequest, NextResponse } from 'next/server'
|
||||
import { z } from 'zod'
|
||||
import { getSession } from '@/lib/auth'
|
||||
import { generateRequestId } from '@/lib/core/utils/request'
|
||||
import { createLogger } from '@/lib/logs/console/logger'
|
||||
|
||||
export const dynamic = 'force-dynamic'
|
||||
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
import { createLogger } from '@sim/logger'
|
||||
import { type NextRequest, NextResponse } from 'next/server'
|
||||
import { authorizeCredentialUse } from '@/lib/auth/credential-access'
|
||||
import { validateMicrosoftGraphId } from '@/lib/core/security/input-validation'
|
||||
import { generateRequestId } from '@/lib/core/utils/request'
|
||||
import { createLogger } from '@/lib/logs/console/logger'
|
||||
import { getCredential, refreshAccessTokenIfNeeded } from '@/app/api/auth/oauth/utils'
|
||||
|
||||
export const dynamic = 'force-dynamic'
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import { createLogger } from '@sim/logger'
|
||||
import { type NextRequest, NextResponse } from 'next/server'
|
||||
import { authorizeCredentialUse } from '@/lib/auth/credential-access'
|
||||
import { generateRequestId } from '@/lib/core/utils/request'
|
||||
import { createLogger } from '@/lib/logs/console/logger'
|
||||
import { getCredential, refreshAccessTokenIfNeeded } from '@/app/api/auth/oauth/utils'
|
||||
|
||||
export const dynamic = 'force-dynamic'
|
||||
|
||||
@@ -31,7 +31,7 @@ describe('OAuth Token API Routes', () => {
|
||||
refreshTokenIfNeeded: mockRefreshTokenIfNeeded,
|
||||
}))
|
||||
|
||||
vi.doMock('@sim/logger', () => ({
|
||||
vi.doMock('@/lib/logs/console/logger', () => ({
|
||||
createLogger: vi.fn().mockReturnValue(mockLogger),
|
||||
}))
|
||||
|
||||
|
||||
@@ -1,17 +1,15 @@
|
||||
import { createLogger } from '@sim/logger'
|
||||
import { type NextRequest, NextResponse } from 'next/server'
|
||||
import { z } from 'zod'
|
||||
import { authorizeCredentialUse } from '@/lib/auth/credential-access'
|
||||
import { checkHybridAuth } from '@/lib/auth/hybrid'
|
||||
import { generateRequestId } from '@/lib/core/utils/request'
|
||||
import { createLogger } from '@/lib/logs/console/logger'
|
||||
import { getCredential, refreshTokenIfNeeded } from '@/app/api/auth/oauth/utils'
|
||||
|
||||
export const dynamic = 'force-dynamic'
|
||||
|
||||
const logger = createLogger('OAuthTokenAPI')
|
||||
|
||||
const SALESFORCE_INSTANCE_URL_REGEX = /__sf_instance__:([^\s]+)/
|
||||
|
||||
const tokenRequestSchema = z.object({
|
||||
credentialId: z
|
||||
.string({ required_error: 'Credential ID is required' })
|
||||
@@ -80,20 +78,10 @@ export async function POST(request: NextRequest) {
|
||||
try {
|
||||
// Refresh the token if needed
|
||||
const { accessToken } = await refreshTokenIfNeeded(requestId, credential, credentialId)
|
||||
|
||||
let instanceUrl: string | undefined
|
||||
if (credential.providerId === 'salesforce' && credential.scope) {
|
||||
const instanceMatch = credential.scope.match(SALESFORCE_INSTANCE_URL_REGEX)
|
||||
if (instanceMatch) {
|
||||
instanceUrl = instanceMatch[1]
|
||||
}
|
||||
}
|
||||
|
||||
return NextResponse.json(
|
||||
{
|
||||
accessToken,
|
||||
idToken: credential.idToken || undefined,
|
||||
...(instanceUrl && { instanceUrl }),
|
||||
},
|
||||
{ status: 200 }
|
||||
)
|
||||
@@ -159,21 +147,10 @@ export async function GET(request: NextRequest) {
|
||||
|
||||
try {
|
||||
const { accessToken } = await refreshTokenIfNeeded(requestId, credential, credentialId)
|
||||
|
||||
// For Salesforce, extract instanceUrl from the scope field
|
||||
let instanceUrl: string | undefined
|
||||
if (credential.providerId === 'salesforce' && credential.scope) {
|
||||
const instanceMatch = credential.scope.match(SALESFORCE_INSTANCE_URL_REGEX)
|
||||
if (instanceMatch) {
|
||||
instanceUrl = instanceMatch[1]
|
||||
}
|
||||
}
|
||||
|
||||
return NextResponse.json(
|
||||
{
|
||||
accessToken,
|
||||
idToken: credential.idToken || undefined,
|
||||
...(instanceUrl && { instanceUrl }),
|
||||
},
|
||||
{ status: 200 }
|
||||
)
|
||||
|
||||
@@ -31,7 +31,7 @@ vi.mock('@/lib/oauth/oauth', () => ({
|
||||
OAUTH_PROVIDERS: {},
|
||||
}))
|
||||
|
||||
vi.mock('@sim/logger', () => loggerMock)
|
||||
vi.mock('@/lib/logs/console/logger', () => loggerMock)
|
||||
|
||||
import { db } from '@sim/db'
|
||||
import { refreshOAuthToken } from '@/lib/oauth'
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
import { db } from '@sim/db'
|
||||
import { account, workflow } from '@sim/db/schema'
|
||||
import { createLogger } from '@sim/logger'
|
||||
import { and, desc, eq } from 'drizzle-orm'
|
||||
import { getSession } from '@/lib/auth'
|
||||
import { createLogger } from '@/lib/logs/console/logger'
|
||||
import { refreshOAuthToken } from '@/lib/oauth'
|
||||
|
||||
const logger = createLogger('OAuthUtilsAPI')
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
import { db } from '@sim/db'
|
||||
import { account } from '@sim/db/schema'
|
||||
import { createLogger } from '@sim/logger'
|
||||
import { eq } from 'drizzle-orm'
|
||||
import { type NextRequest, NextResponse } from 'next/server'
|
||||
import { getSession } from '@/lib/auth'
|
||||
import { validateEnum, validatePathSegment } from '@/lib/core/security/input-validation'
|
||||
import { generateRequestId } from '@/lib/core/utils/request'
|
||||
import { createLogger } from '@/lib/logs/console/logger'
|
||||
import { refreshAccessTokenIfNeeded } from '@/app/api/auth/oauth/utils'
|
||||
|
||||
export const dynamic = 'force-dynamic'
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
import { db } from '@sim/db'
|
||||
import { account } from '@sim/db/schema'
|
||||
import { createLogger } from '@sim/logger'
|
||||
import { eq } from 'drizzle-orm'
|
||||
import { type NextRequest, NextResponse } from 'next/server'
|
||||
import { getSession } from '@/lib/auth'
|
||||
import { generateRequestId } from '@/lib/core/utils/request'
|
||||
import { createLogger } from '@/lib/logs/console/logger'
|
||||
import { refreshAccessTokenIfNeeded } from '@/app/api/auth/oauth/utils'
|
||||
|
||||
export const dynamic = 'force-dynamic'
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
import crypto from 'crypto'
|
||||
import { createLogger } from '@sim/logger'
|
||||
import { type NextRequest, NextResponse } from 'next/server'
|
||||
import { getSession } from '@/lib/auth'
|
||||
import { env } from '@/lib/core/config/env'
|
||||
import { getBaseUrl } from '@/lib/core/utils/urls'
|
||||
import { createLogger } from '@/lib/logs/console/logger'
|
||||
|
||||
const logger = createLogger('ShopifyCallback')
|
||||
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
import { db } from '@sim/db'
|
||||
import { account } from '@sim/db/schema'
|
||||
import { createLogger } from '@sim/logger'
|
||||
import { and, eq } from 'drizzle-orm'
|
||||
import { type NextRequest, NextResponse } from 'next/server'
|
||||
import { getSession } from '@/lib/auth'
|
||||
import { getBaseUrl } from '@/lib/core/utils/urls'
|
||||
import { createLogger } from '@/lib/logs/console/logger'
|
||||
import { safeAccountInsert } from '@/app/api/auth/oauth/utils'
|
||||
|
||||
const logger = createLogger('ShopifyStore')
|
||||
|
||||
@@ -148,7 +148,7 @@ describe('Reset Password API Route', () => {
|
||||
expect(response.status).toBe(500)
|
||||
expect(data.message).toBe(errorMessage)
|
||||
|
||||
const logger = await import('@sim/logger')
|
||||
const logger = await import('@/lib/logs/console/logger')
|
||||
const mockLogger = logger.createLogger('PasswordResetAPI')
|
||||
expect(mockLogger.error).toHaveBeenCalledWith('Error during password reset:', {
|
||||
error: expect.any(Error),
|
||||
@@ -181,7 +181,7 @@ describe('Reset Password API Route', () => {
|
||||
'Failed to reset password. Please try again or request a new reset link.'
|
||||
)
|
||||
|
||||
const logger = await import('@sim/logger')
|
||||
const logger = await import('@/lib/logs/console/logger')
|
||||
const mockLogger = logger.createLogger('PasswordResetAPI')
|
||||
expect(mockLogger.error).toHaveBeenCalled()
|
||||
})
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import { createLogger } from '@sim/logger'
|
||||
import { type NextRequest, NextResponse } from 'next/server'
|
||||
import { z } from 'zod'
|
||||
import { auth } from '@/lib/auth'
|
||||
import { createLogger } from '@/lib/logs/console/logger'
|
||||
|
||||
export const dynamic = 'force-dynamic'
|
||||
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
import { createLogger } from '@sim/logger'
|
||||
import { type NextRequest, NextResponse } from 'next/server'
|
||||
import { getSession } from '@/lib/auth'
|
||||
import { env } from '@/lib/core/config/env'
|
||||
import { getBaseUrl } from '@/lib/core/utils/urls'
|
||||
import { createLogger } from '@/lib/logs/console/logger'
|
||||
|
||||
const logger = createLogger('ShopifyAuthorize')
|
||||
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
import { db, ssoProvider } from '@sim/db'
|
||||
import { createLogger } from '@sim/logger'
|
||||
import { eq } from 'drizzle-orm'
|
||||
import { NextResponse } from 'next/server'
|
||||
import { getSession } from '@/lib/auth'
|
||||
import { createLogger } from '@/lib/logs/console/logger'
|
||||
|
||||
const logger = createLogger('SSO-Providers')
|
||||
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
import { createLogger } from '@sim/logger'
|
||||
import { type NextRequest, NextResponse } from 'next/server'
|
||||
import { z } from 'zod'
|
||||
import { auth } from '@/lib/auth'
|
||||
import { env } from '@/lib/core/config/env'
|
||||
import { REDACTED_MARKER } from '@/lib/core/security/redaction'
|
||||
import { createLogger } from '@/lib/logs/console/logger'
|
||||
|
||||
const logger = createLogger('SSO-Register')
|
||||
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
import { createLogger } from '@sim/logger'
|
||||
import { type NextRequest, NextResponse } from 'next/server'
|
||||
import { getSession } from '@/lib/auth'
|
||||
import { env } from '@/lib/core/config/env'
|
||||
import { getBaseUrl } from '@/lib/core/utils/urls'
|
||||
import { createLogger } from '@/lib/logs/console/logger'
|
||||
|
||||
const logger = createLogger('TrelloAuthorize')
|
||||
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
import { createLogger } from '@sim/logger'
|
||||
import { and, eq } from 'drizzle-orm'
|
||||
import { type NextRequest, NextResponse } from 'next/server'
|
||||
import { getSession } from '@/lib/auth'
|
||||
import { env } from '@/lib/core/config/env'
|
||||
import { createLogger } from '@/lib/logs/console/logger'
|
||||
import { safeAccountInsert } from '@/app/api/auth/oauth/utils'
|
||||
import { db } from '@/../../packages/db'
|
||||
import { account } from '@/../../packages/db/schema'
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
import { createLogger } from '@sim/logger'
|
||||
import { type NextRequest, NextResponse } from 'next/server'
|
||||
import { z } from 'zod'
|
||||
import { getSession } from '@/lib/auth'
|
||||
import { getCreditBalance } from '@/lib/billing/credits/balance'
|
||||
import { purchaseCredits } from '@/lib/billing/credits/purchase'
|
||||
import { createLogger } from '@/lib/logs/console/logger'
|
||||
|
||||
const logger = createLogger('CreditsAPI')
|
||||
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
import { db } from '@sim/db'
|
||||
import { subscription as subscriptionTable, user } from '@sim/db/schema'
|
||||
import { createLogger } from '@sim/logger'
|
||||
import { and, eq, or } from 'drizzle-orm'
|
||||
import { type NextRequest, NextResponse } from 'next/server'
|
||||
import { getSession } from '@/lib/auth'
|
||||
import { requireStripeClient } from '@/lib/billing/stripe-client'
|
||||
import { getBaseUrl } from '@/lib/core/utils/urls'
|
||||
import { createLogger } from '@/lib/logs/console/logger'
|
||||
|
||||
const logger = createLogger('BillingPortal')
|
||||
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
import { db } from '@sim/db'
|
||||
import { member, userStats } from '@sim/db/schema'
|
||||
import { createLogger } from '@sim/logger'
|
||||
import { and, eq } from 'drizzle-orm'
|
||||
import { type NextRequest, NextResponse } from 'next/server'
|
||||
import { getSession } from '@/lib/auth'
|
||||
import { getSimplifiedBillingSummary } from '@/lib/billing/core/billing'
|
||||
import { getOrganizationBillingData } from '@/lib/billing/core/organization'
|
||||
import { createLogger } from '@/lib/logs/console/logger'
|
||||
|
||||
/**
|
||||
* Gets the effective billing blocked status for a user.
|
||||
@@ -93,7 +93,6 @@ export async function GET(request: NextRequest) {
|
||||
const { searchParams } = new URL(request.url)
|
||||
const context = searchParams.get('context') || 'user'
|
||||
const contextId = searchParams.get('id')
|
||||
const includeOrg = searchParams.get('includeOrg') === 'true'
|
||||
|
||||
// Validate context parameter
|
||||
if (!['user', 'organization'].includes(context)) {
|
||||
@@ -116,38 +115,14 @@ export async function GET(request: NextRequest) {
|
||||
if (context === 'user') {
|
||||
// Get user billing (may include organization if they're part of one)
|
||||
billingData = await getSimplifiedBillingSummary(session.user.id, contextId || undefined)
|
||||
|
||||
// Attach effective billing blocked status (includes org owner check)
|
||||
const billingStatus = await getEffectiveBillingStatus(session.user.id)
|
||||
|
||||
billingData = {
|
||||
...billingData,
|
||||
billingBlocked: billingStatus.billingBlocked,
|
||||
billingBlockedReason: billingStatus.billingBlockedReason,
|
||||
blockedByOrgOwner: billingStatus.blockedByOrgOwner,
|
||||
}
|
||||
|
||||
// Optionally include organization membership and role
|
||||
if (includeOrg) {
|
||||
const userMembership = await db
|
||||
.select({
|
||||
organizationId: member.organizationId,
|
||||
role: member.role,
|
||||
})
|
||||
.from(member)
|
||||
.where(eq(member.userId, session.user.id))
|
||||
.limit(1)
|
||||
|
||||
if (userMembership.length > 0) {
|
||||
billingData = {
|
||||
...billingData,
|
||||
organization: {
|
||||
id: userMembership[0].organizationId,
|
||||
role: userMembership[0].role as 'owner' | 'admin' | 'member',
|
||||
},
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
// Get user role in organization for permission checks first
|
||||
const memberRecord = await db
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
import { db } from '@sim/db'
|
||||
import { userStats } from '@sim/db/schema'
|
||||
import { createLogger } from '@sim/logger'
|
||||
import { eq, sql } from 'drizzle-orm'
|
||||
import { type NextRequest, NextResponse } from 'next/server'
|
||||
import { z } from 'zod'
|
||||
@@ -9,6 +8,7 @@ import { checkAndBillOverageThreshold } from '@/lib/billing/threshold-billing'
|
||||
import { checkInternalApiKey } from '@/lib/copilot/utils'
|
||||
import { isBillingEnabled } from '@/lib/core/config/feature-flags'
|
||||
import { generateRequestId } from '@/lib/core/utils/request'
|
||||
import { createLogger } from '@/lib/logs/console/logger'
|
||||
|
||||
const logger = createLogger('BillingUpdateCostAPI')
|
||||
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
import { render } from '@react-email/components'
|
||||
import { createLogger } from '@sim/logger'
|
||||
import { type NextRequest, NextResponse } from 'next/server'
|
||||
import { z } from 'zod'
|
||||
import CareersConfirmationEmail from '@/components/emails/careers/careers-confirmation-email'
|
||||
import CareersSubmissionEmail from '@/components/emails/careers/careers-submission-email'
|
||||
import { generateRequestId } from '@/lib/core/utils/request'
|
||||
import { createLogger } from '@/lib/logs/console/logger'
|
||||
import { sendEmail } from '@/lib/messaging/email/mailer'
|
||||
|
||||
export const dynamic = 'force-dynamic'
|
||||
|
||||
@@ -147,7 +147,7 @@ describe('Chat OTP API Route', () => {
|
||||
createErrorResponse: mockCreateErrorResponse,
|
||||
}))
|
||||
|
||||
vi.doMock('@sim/logger', () => ({
|
||||
vi.doMock('@/lib/logs/console/logger', () => ({
|
||||
createLogger: vi.fn().mockReturnValue({
|
||||
info: vi.fn(),
|
||||
error: vi.fn(),
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
import { randomUUID } from 'crypto'
|
||||
import { db } from '@sim/db'
|
||||
import { chat, verification } from '@sim/db/schema'
|
||||
import { createLogger } from '@sim/logger'
|
||||
import { and, eq, gt } from 'drizzle-orm'
|
||||
import type { NextRequest } from 'next/server'
|
||||
import { z } from 'zod'
|
||||
@@ -9,6 +8,7 @@ import { renderOTPEmail } from '@/components/emails/render-email'
|
||||
import { getRedisClient } from '@/lib/core/config/redis'
|
||||
import { getStorageMethod } from '@/lib/core/storage'
|
||||
import { generateRequestId } from '@/lib/core/utils/request'
|
||||
import { createLogger } from '@/lib/logs/console/logger'
|
||||
import { sendEmail } from '@/lib/messaging/email/mailer'
|
||||
import { addCorsHeaders, setChatAuthCookie } from '@/app/api/chat/utils'
|
||||
import { createErrorResponse, createSuccessResponse } from '@/app/api/workflows/utils'
|
||||
|
||||
@@ -120,7 +120,7 @@ describe('Chat Identifier API Route', () => {
|
||||
validateAuthToken: vi.fn().mockReturnValue(true),
|
||||
}))
|
||||
|
||||
vi.doMock('@sim/logger', () => ({
|
||||
vi.doMock('@/lib/logs/console/logger', () => ({
|
||||
createLogger: vi.fn().mockReturnValue({
|
||||
debug: vi.fn(),
|
||||
info: vi.fn(),
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
import { randomUUID } from 'crypto'
|
||||
import { db } from '@sim/db'
|
||||
import { chat, workflow } from '@sim/db/schema'
|
||||
import { createLogger } from '@sim/logger'
|
||||
import { eq } from 'drizzle-orm'
|
||||
import { type NextRequest, NextResponse } from 'next/server'
|
||||
import { z } from 'zod'
|
||||
import { generateRequestId } from '@/lib/core/utils/request'
|
||||
import { preprocessExecution } from '@/lib/execution/preprocessing'
|
||||
import { createLogger } from '@/lib/logs/console/logger'
|
||||
import { LoggingSession } from '@/lib/logs/execution/logging-session'
|
||||
import { ChatFiles } from '@/lib/uploads'
|
||||
import {
|
||||
|
||||
@@ -50,7 +50,7 @@ describe('Chat Edit API Route', () => {
|
||||
chat: { id: 'id', identifier: 'identifier', userId: 'userId' },
|
||||
}))
|
||||
|
||||
vi.doMock('@sim/logger', () => ({
|
||||
vi.doMock('@/lib/logs/console/logger', () => ({
|
||||
createLogger: vi.fn().mockReturnValue({
|
||||
info: vi.fn(),
|
||||
error: vi.fn(),
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
import { db } from '@sim/db'
|
||||
import { chat } from '@sim/db/schema'
|
||||
import { createLogger } from '@sim/logger'
|
||||
import { eq } from 'drizzle-orm'
|
||||
import type { NextRequest } from 'next/server'
|
||||
import { z } from 'zod'
|
||||
@@ -8,6 +7,7 @@ import { getSession } from '@/lib/auth'
|
||||
import { isDev } from '@/lib/core/config/feature-flags'
|
||||
import { encryptSecret } from '@/lib/core/security/encryption'
|
||||
import { getEmailDomain } from '@/lib/core/utils/urls'
|
||||
import { createLogger } from '@/lib/logs/console/logger'
|
||||
import { deployWorkflow } from '@/lib/workflows/persistence/utils'
|
||||
import { checkChatAccess } from '@/app/api/chat/utils'
|
||||
import { createErrorResponse, createSuccessResponse } from '@/app/api/workflows/utils'
|
||||
|
||||
@@ -42,7 +42,7 @@ describe('Chat API Route', () => {
|
||||
workflow: { id: 'id', userId: 'userId', isDeployed: 'isDeployed' },
|
||||
}))
|
||||
|
||||
vi.doMock('@sim/logger', () => ({
|
||||
vi.doMock('@/lib/logs/console/logger', () => ({
|
||||
createLogger: vi.fn().mockReturnValue({
|
||||
info: vi.fn(),
|
||||
error: vi.fn(),
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
import { db } from '@sim/db'
|
||||
import { chat } from '@sim/db/schema'
|
||||
import { createLogger } from '@sim/logger'
|
||||
import { eq } from 'drizzle-orm'
|
||||
import type { NextRequest } from 'next/server'
|
||||
import { v4 as uuidv4 } from 'uuid'
|
||||
@@ -9,6 +8,7 @@ import { getSession } from '@/lib/auth'
|
||||
import { isDev } from '@/lib/core/config/feature-flags'
|
||||
import { encryptSecret } from '@/lib/core/security/encryption'
|
||||
import { getBaseUrl } from '@/lib/core/utils/urls'
|
||||
import { createLogger } from '@/lib/logs/console/logger'
|
||||
import { deployWorkflow } from '@/lib/workflows/persistence/utils'
|
||||
import { checkWorkflowAccessForChatCreation } from '@/app/api/chat/utils'
|
||||
import { createErrorResponse, createSuccessResponse } from '@/app/api/workflows/utils'
|
||||
|
||||
@@ -52,7 +52,7 @@ vi.mock('@/lib/core/config/feature-flags', () => ({
|
||||
|
||||
describe('Chat API Utils', () => {
|
||||
beforeEach(() => {
|
||||
vi.doMock('@sim/logger', () => ({
|
||||
vi.doMock('@/lib/logs/console/logger', () => ({
|
||||
createLogger: vi.fn().mockReturnValue({
|
||||
info: vi.fn(),
|
||||
error: vi.fn(),
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user