mirror of
https://github.com/tiennm99/DocsGPT.git
synced 2026-10-12 14:14:50 +00:00
One vocabulary: Knowledge, tools, and connectors in plain words
- Sources (the collection) are called Knowledge: the settings page (now
/settings/knowledge; /settings/sources redirects), the composer and
agent pickers, Add knowledge, and "syncs into Knowledge" on connectors.
Citations keep "sources". All seven locales.
- Connector cards describe what they do ("Syncs into Knowledge", "Looks
things up", "Takes actions") and drop publisher labels ("Built in",
"Preset"). Filters read "Files & storage" and "Docs & wikis" so
"knowledge" means one thing.
- Custom tools are tools: "Add custom tool". The agent picker no longer
splits built-in tools into "Built-in" and "Default".
- Confluence is one card: syncing pages into Knowledge and the Jira &
Confluence MCP actions (part_of on the preset) share a page. The part
shows on its own when Confluence sync is not set up.
This commit is contained in:
1 parent
897b244d8d
commit
3b1288097d
21 files changed
+462
-244
No files matched your search
@@ -1,6 +1,6 @@
|
||||
---
|
||||
title: Connectors
|
||||
description: Connect DocsGPT to the services your team uses. One connection can sync content into Sources and give agents tools, with credentials encrypted on the server.
|
||||
description: Connect DocsGPT to the services your team uses. One connection can sync content into Knowledge and give agents tools, with credentials encrypted on the server.
|
||||
---
|
||||
|
||||
import { Callout } from 'nextra/components'
|
||||
@@ -20,7 +20,7 @@ Open **Settings > Connectors**. Filters narrow the list by category, and **Conne
|
||||
2. Choose what the connection sets up. File services offer a synced source (pick files or folders, then how often to sync: never, daily, weekly or monthly). Tool services create their tools right away.
|
||||
3. Adjust what the tools may do. Each action is **Read** or **Write**, and each can be **Always allow**, **Needs approval** or **Off**. Writes default to needing approval.
|
||||
|
||||
The **Add Source** and **Add Tool** dialogs, the composer's Sources and Tools menus, and the agent builder all start the same flow, and list tools grouped by the connection they use.
|
||||
**Knowledge** (formerly Sources) is what the assistant searches: uploads, links, and content synced from your connections. The **Add knowledge** and **Add Tool** dialogs, the composer's Knowledge and Tools menus, and the agent builder all start the same flow, and list tools grouped by the connection they use. A service offered two ways appears as one card: Confluence syncs pages into Knowledge and, through **Jira & Confluence**, lets agents search and update Jira and Confluence.
|
||||
|
||||
Click a connected card to see its account, the sources and tools that use it, and to **Reconnect** or **Disconnect**. Disconnecting keeps a source's indexed content but stops its sync.
|
||||
|
||||
|
||||
@@ -76,6 +76,8 @@ class ConnectorDefinition:
|
||||
publisher: ``built_in``, ``preset`` or ``custom``.
|
||||
docs_url: Setup guide for admins.
|
||||
oauth_scopes: Scopes an MCP preset requests.
|
||||
part_of: Another connector this one is shown under, for one service
|
||||
offered two ways (the Atlassian MCP preset under Confluence).
|
||||
"""
|
||||
|
||||
key: str
|
||||
@@ -96,6 +98,7 @@ class ConnectorDefinition:
|
||||
publisher: str = "built_in"
|
||||
docs_url: Optional[str] = None
|
||||
oauth_scopes: tuple[str, ...] = ()
|
||||
part_of: Optional[str] = None
|
||||
|
||||
@property
|
||||
def missing_settings(self) -> list[str]:
|
||||
@@ -132,6 +135,7 @@ class ConnectorDefinition:
|
||||
"publisher": self.publisher,
|
||||
"docs_url": self.docs_url,
|
||||
"oauth_scopes": list(self.oauth_scopes),
|
||||
"part_of": self.part_of,
|
||||
}
|
||||
|
||||
|
||||
@@ -328,6 +332,7 @@ def _load_presets(path: Optional[Path] = None) -> tuple[ConnectorDefinition, ...
|
||||
publisher="preset",
|
||||
docs_url=entry.get("docs_url"),
|
||||
oauth_scopes=tuple(entry.get("oauth_scopes") or ()),
|
||||
part_of=entry.get("part_of"),
|
||||
)
|
||||
)
|
||||
return tuple(presets)
|
||||
|
||||
@@ -31,10 +31,12 @@
|
||||
docs_url: https://linear.app/docs/mcp
|
||||
|
||||
- key: mcp:atlassian
|
||||
name: Atlassian (Jira and Confluence)
|
||||
name: Jira & Confluence
|
||||
description: Search and update Jira issues and Confluence pages.
|
||||
icon: atlassian
|
||||
category: dev
|
||||
# Shown on the Confluence card, next to syncing pages into Knowledge.
|
||||
part_of: confluence
|
||||
mcp_url: https://mcp.atlassian.com/v1/mcp
|
||||
auth_kind: mcp_oauth
|
||||
capabilities: [read, write]
|
||||
|
||||
@@ -54,7 +54,7 @@ describe('SourcesPopoverFooter', () => {
|
||||
it('renders the sources link as an inline link Button', async () => {
|
||||
await renderFooter();
|
||||
const [link, connect] = Array.from(container.querySelectorAll('a'));
|
||||
expect(link.getAttribute('href')).toBe('/settings/sources');
|
||||
expect(link.getAttribute('href')).toBe('/settings/knowledge');
|
||||
expect(connect.getAttribute('href')).toBe(
|
||||
'/settings/connectors?capability=sync',
|
||||
);
|
||||
|
||||
@@ -26,7 +26,7 @@ export default function SourcesPopoverFooter({
|
||||
<div className="flex flex-wrap items-center justify-between gap-3">
|
||||
<div className="flex flex-wrap items-center gap-x-4 gap-y-2">
|
||||
<Button variant="link" size="inline" asChild>
|
||||
<Link to="/settings/sources" onClick={onNavigate}>
|
||||
<Link to="/settings/knowledge" onClick={onNavigate}>
|
||||
{t('settings.sources.goToSources')}
|
||||
<ArrowRight aria-hidden="true" className="size-3" />
|
||||
</Link>
|
||||
|
||||
@@ -69,7 +69,7 @@ export default function SourcesTrigger({
|
||||
: t('conversation.sources.selectedCount', {
|
||||
count: selectedDocs.length,
|
||||
})
|
||||
: t('conversation.sources.title')}
|
||||
: t('conversation.sources.knowledge')}
|
||||
</span>
|
||||
</Button>
|
||||
}
|
||||
|
||||
@@ -381,10 +381,13 @@ function AccountSection({
|
||||
*/
|
||||
export default function ConnectionDrawer({
|
||||
connector,
|
||||
parts = [],
|
||||
onClose,
|
||||
onConnect,
|
||||
}: {
|
||||
connector: ConnectorDefinition | null;
|
||||
/** The same service offered another way, shown here (Jira & Confluence). */
|
||||
parts?: ConnectorDefinition[];
|
||||
onClose: () => void;
|
||||
onConnect: (connector: ConnectorDefinition, options?: LaunchOptions) => void;
|
||||
}) {
|
||||
@@ -401,8 +404,9 @@ export default function ConnectionDrawer({
|
||||
);
|
||||
const [toRemove, setToRemove] = useState<ConnectionDetail | null>(null);
|
||||
|
||||
const keys = [connector?.key, ...parts.map((part) => part.key)];
|
||||
const accountIds = connections
|
||||
.filter((connection) => connection.connector_key === connector?.key)
|
||||
.filter((connection) => keys.includes(connection.connector_key))
|
||||
.map((connection) => `${connection.id}:${connection.status}`)
|
||||
.join(',');
|
||||
|
||||
@@ -458,8 +462,12 @@ export default function ConnectionDrawer({
|
||||
|
||||
const reconnect = (detail: ConnectionDetail) => {
|
||||
if (!connector) return;
|
||||
// A part's account (Jira & Confluence under Confluence) reconnects
|
||||
// through its own connector.
|
||||
const target =
|
||||
parts.find((part) => part.key === detail.connector_key) ?? connector;
|
||||
const mcpTool = detail.tools.find((tool) => tool.name === 'mcp_tool');
|
||||
onConnect(connector, {
|
||||
onConnect(target, {
|
||||
mode: 'reconnect',
|
||||
connectionId: detail.id,
|
||||
mcpServer:
|
||||
@@ -497,6 +505,9 @@ export default function ConnectionDrawer({
|
||||
|
||||
if (!connector) return null;
|
||||
const name = connectorName(t, connector);
|
||||
const ownDetails = details.filter(
|
||||
(detail) => detail.connector_key === connector.key,
|
||||
);
|
||||
|
||||
return (
|
||||
<>
|
||||
@@ -509,16 +520,11 @@ export default function ConnectionDrawer({
|
||||
>
|
||||
<div className="flex flex-col gap-6 p-6">
|
||||
{/* pr-12 keeps the header clear of the close X. */}
|
||||
<div className="flex items-start gap-4 pr-12">
|
||||
<div className="flex items-center gap-4 pr-12">
|
||||
<span className="bg-muted flex size-12 shrink-0 items-center justify-center rounded-xl">
|
||||
<ConnectorIcon icon={connector.icon} className="size-7" />
|
||||
</span>
|
||||
<div className="flex min-w-0 flex-col gap-1">
|
||||
<SheetTitle className="truncate">{name}</SheetTitle>
|
||||
<p className="text-muted-foreground text-sm">
|
||||
{t(`settings.connectors.publisher.${connector.publisher}`)}
|
||||
</p>
|
||||
</div>
|
||||
<SheetTitle className="min-w-0 truncate">{name}</SheetTitle>
|
||||
</div>
|
||||
<SheetDescription>
|
||||
{connectorDescription(t, connector)}
|
||||
@@ -544,7 +550,7 @@ export default function ConnectionDrawer({
|
||||
size="xs"
|
||||
title={t('settings.connectors.detail.accounts')}
|
||||
actions={
|
||||
connector.available && details.length > 0 ? (
|
||||
connector.available && ownDetails.length > 0 ? (
|
||||
<Button
|
||||
type="button"
|
||||
variant="link"
|
||||
@@ -577,7 +583,7 @@ export default function ConnectionDrawer({
|
||||
</Button>
|
||||
}
|
||||
/>
|
||||
) : details.length === 0 ? (
|
||||
) : ownDetails.length === 0 ? (
|
||||
<EmptyState
|
||||
size="xs"
|
||||
illustration="none"
|
||||
@@ -596,7 +602,7 @@ export default function ConnectionDrawer({
|
||||
/>
|
||||
) : (
|
||||
<div className="flex flex-col gap-6">
|
||||
{details.map((detail) => (
|
||||
{ownDetails.map((detail) => (
|
||||
<AccountSection
|
||||
key={detail.id}
|
||||
connector={connector}
|
||||
@@ -616,6 +622,49 @@ export default function ConnectionDrawer({
|
||||
</div>
|
||||
)}
|
||||
</section>
|
||||
|
||||
{parts.map((part) => {
|
||||
const partDetails = details.filter(
|
||||
(detail) => detail.connector_key === part.key,
|
||||
);
|
||||
return (
|
||||
<section key={part.key} className="flex flex-col gap-3">
|
||||
<SectionHeader
|
||||
as="h3"
|
||||
size="xs"
|
||||
title={connectorName(t, part)}
|
||||
description={connectorDescription(t, part)}
|
||||
actions={
|
||||
part.available && partDetails.length === 0 ? (
|
||||
<Button
|
||||
type="button"
|
||||
size="sm"
|
||||
shape="pill"
|
||||
onClick={() => onConnect(part)}
|
||||
>
|
||||
{t('settings.connectors.status.connect')}
|
||||
</Button>
|
||||
) : undefined
|
||||
}
|
||||
/>
|
||||
<CapabilityBadges capabilities={part.capabilities} />
|
||||
{partDetails.map((detail) => (
|
||||
<AccountSection
|
||||
key={detail.id}
|
||||
connector={part}
|
||||
detail={detail}
|
||||
onReconnect={reconnect}
|
||||
onDisconnect={setToDisconnect}
|
||||
onRemove={setToRemove}
|
||||
onSyncMore={(d) =>
|
||||
onConnect(part, { mode: 'sync', connectionId: d.id })
|
||||
}
|
||||
onRefreshTools={refreshTools}
|
||||
/>
|
||||
))}
|
||||
</section>
|
||||
);
|
||||
})}
|
||||
</div>
|
||||
</SheetContent>
|
||||
</Sheet>
|
||||
|
||||
@@ -22,10 +22,10 @@ export function CapabilityBadges({
|
||||
return (
|
||||
<div className="flex flex-wrap gap-1">
|
||||
{capabilities.map((capability) => (
|
||||
// Capabilities are categories, not states: neutral, so the status
|
||||
// hues stay free for the state badge (DESIGN.md "Colour tokens").
|
||||
// What it does, in plain words; categories, not states, so neutral and
|
||||
// the status hues stay free for the state badge.
|
||||
<Badge key={capability} variant="neutral">
|
||||
{t(`settings.connectors.capability.${capability}`)}
|
||||
{t(`settings.connectors.capabilityPlain.${capability}`)}
|
||||
</Badge>
|
||||
))}
|
||||
</div>
|
||||
@@ -108,16 +108,9 @@ export default function ConnectorCard({
|
||||
>
|
||||
<span className="flex w-full items-center gap-3">
|
||||
<ConnectorIcon icon={connector.icon} className="size-8 shrink-0" />
|
||||
<span className="flex min-w-0 flex-1 flex-col gap-1">
|
||||
<CardTitle className="truncate" title={name}>
|
||||
{name}
|
||||
</CardTitle>
|
||||
{connector.publisher !== 'built_in' && (
|
||||
<span className="text-muted-foreground text-xs">
|
||||
{t(`settings.connectors.publisher.${connector.publisher}`)}
|
||||
</span>
|
||||
)}
|
||||
</span>
|
||||
<CardTitle className="min-w-0 flex-1 truncate" title={name}>
|
||||
{name}
|
||||
</CardTitle>
|
||||
</span>
|
||||
<CardDescription size="xs" className="line-clamp-2">
|
||||
{connectorDescription(t, connector)}
|
||||
|
||||
@@ -51,6 +51,8 @@ export type ConnectorDefinition = {
|
||||
publisher: 'built_in' | 'preset' | 'custom';
|
||||
docs_url: string | null;
|
||||
oauth_scopes: string[];
|
||||
/** Shown under this connector's card (one service offered two ways). */
|
||||
part_of?: string | null;
|
||||
available: boolean;
|
||||
disabled: boolean;
|
||||
needs_setup: boolean;
|
||||
|
||||
+35
-29
@@ -98,15 +98,15 @@
|
||||
"sources": {
|
||||
"title": "Hier kannst du alle verfügbaren Quelldateien verwalten, die dir zur Verfügung stehen und die du hochgeladen hast.",
|
||||
"subtitle": "Inhalte, die DocsGPT durchsuchen und zitieren kann: Uploads, Websites, Wikis und aus deinen Verbindungen synchronisierte Inhalte.",
|
||||
"label": "Quellen",
|
||||
"label": "Wissen",
|
||||
"name": "Quellenname",
|
||||
"date": "Vektor-Datum",
|
||||
"type": "Typ",
|
||||
"tokenUsage": "Token-Verbrauch",
|
||||
"noData": "Keine vorhandenen Quellen",
|
||||
"noData": "Noch kein Wissen",
|
||||
"searchPlaceholder": "Suchen...",
|
||||
"addNew": "Neu hinzufügen",
|
||||
"addSource": "Quelle hinzufügen",
|
||||
"addSource": "Wissen hinzufügen",
|
||||
"addChunk": "Chunk hinzufügen",
|
||||
"preLoaded": "Vorgeladen",
|
||||
"private": "Privat",
|
||||
@@ -294,7 +294,7 @@
|
||||
"chunks": "Chunks",
|
||||
"noChunks": "Keine Chunks gefunden",
|
||||
"noChunksAlt": "Keine Chunks gefunden",
|
||||
"goToSources": "Zu den Quellen",
|
||||
"goToSources": "Zum Wissen",
|
||||
"uploadNew": "Neu hochladen",
|
||||
"noResults": "Keine Ergebnisse gefunden",
|
||||
"fileName": "Name",
|
||||
@@ -1093,9 +1093,9 @@
|
||||
},
|
||||
"connectors": {
|
||||
"label": "Konnektoren",
|
||||
"subtitle": "Verbinde DocsGPT mit den Diensten, die dein Team nutzt. Eine Verbindung kann Inhalte in Quellen synchronisieren und Agenten Werkzeuge geben.",
|
||||
"subtitle": "Verbinde DocsGPT mit den Diensten, die dein Team nutzt. Eine Verbindung kann Inhalte ins Wissen synchronisieren und Agenten Werkzeuge geben.",
|
||||
"search": "Konnektoren suchen...",
|
||||
"addCustom": "Eigenen Konnektor hinzufügen",
|
||||
"addCustom": "Eigenes Werkzeug hinzufügen",
|
||||
"custom": {
|
||||
"custom_mcp": "MCP-Server",
|
||||
"custom_openapi": "OpenAPI / REST"
|
||||
@@ -1104,8 +1104,8 @@
|
||||
"categories": {
|
||||
"all": "Alle",
|
||||
"connected": "Verbunden",
|
||||
"files": "Dateien und Dokumente",
|
||||
"knowledge": "Wissensdatenbanken",
|
||||
"files": "Dateien & Speicher",
|
||||
"knowledge": "Dokus & Wikis",
|
||||
"dev": "Entwicklerwerkzeuge",
|
||||
"messaging": "Nachrichten",
|
||||
"database": "Datenbanken",
|
||||
@@ -1139,11 +1139,11 @@
|
||||
"custom": "Eigener"
|
||||
},
|
||||
"descriptions": {
|
||||
"google_drive": "Docs, Tabellen und PDFs in Quellen synchronisieren.",
|
||||
"share_point": "Dateien aus SharePoint-Sites und OneDrive in Quellen synchronisieren.",
|
||||
"confluence": "Confluence-Bereiche und -Seiten in Quellen synchronisieren.",
|
||||
"s3": "Dokumente aus einem S3-Bucket in Quellen synchronisieren.",
|
||||
"reddit": "Reddit-Beiträge zu deinen Suchen in Quellen synchronisieren.",
|
||||
"google_drive": "Docs, Tabellen und PDFs ins Wissen synchronisieren.",
|
||||
"share_point": "Dateien aus SharePoint-Sites und OneDrive ins Wissen synchronisieren.",
|
||||
"confluence": "Confluence-Bereiche und -Seiten ins Wissen synchronisieren.",
|
||||
"s3": "Dokumente aus einem S3-Bucket ins Wissen synchronisieren.",
|
||||
"reddit": "Reddit-Beiträge zu deinen Suchen ins Wissen synchronisieren.",
|
||||
"brave": "Web und Bilder mit der Brave Search API durchsuchen.",
|
||||
"telegram": "Nachrichten und Bilder an einen Telegram-Chat senden.",
|
||||
"ntfy": "Push-Benachrichtigungen über einen ntfy-Server senden.",
|
||||
@@ -1168,7 +1168,7 @@
|
||||
"accounts": "Konten",
|
||||
"connectedAs": "Verbunden als {{account}}",
|
||||
"connectAnother": "Weiteres Konto verbinden",
|
||||
"sources": "Quellen aus dieser Verbindung",
|
||||
"sources": "Wissen aus dieser Verbindung",
|
||||
"tools": "Werkzeuge aus dieser Verbindung",
|
||||
"noAccounts": "Noch kein Konto verbunden.",
|
||||
"failed": "Diese Verbindung konnte nicht geladen werden.",
|
||||
@@ -1284,17 +1284,22 @@
|
||||
},
|
||||
"createFailed": "Der Konnektor konnte nicht hinzugefügt werden. Versuche es erneut.",
|
||||
"capabilityFilter": {
|
||||
"sync": "Angezeigt werden Konnektoren, die Inhalte in Quellen synchronisieren.",
|
||||
"sync": "Angezeigt werden Konnektoren, die Inhalte ins Wissen synchronisieren.",
|
||||
"tools": "Angezeigt werden Konnektoren, die Agenten Werkzeuge geben.",
|
||||
"showAll": "Alle anzeigen"
|
||||
},
|
||||
"capabilityPlain": {
|
||||
"sync": "Synchronisiert ins Wissen",
|
||||
"read": "Schlägt nach",
|
||||
"write": "Führt Aktionen aus"
|
||||
}
|
||||
}
|
||||
},
|
||||
"modals": {
|
||||
"uploadDoc": {
|
||||
"label": "Quelle hinzufügen",
|
||||
"label": "Wissen hinzufügen",
|
||||
"select": "Wähle, wie du dein Dokument zu DocsGPT hochladen möchtest",
|
||||
"selectSource": "Quelle hinzufügen",
|
||||
"selectSource": "Wissen hinzufügen",
|
||||
"selectedFiles": "Ausgewählte Dateien",
|
||||
"noFilesSelected": "Keine Dateien ausgewählt",
|
||||
"file": "Vom Gerät hochladen",
|
||||
@@ -1309,7 +1314,7 @@
|
||||
"filesRejected": "Nicht hinzugefügt (größer als 25 MB oder kein unterstützter Dateityp): {{files}}",
|
||||
"uploadedFiles": "Hochgeladene Dateien",
|
||||
"cancel": "Abbrechen",
|
||||
"train": "Quelle hinzufügen",
|
||||
"train": "Zum Wissen hinzufügen",
|
||||
"create": "Erstellen",
|
||||
"link": "Link",
|
||||
"urlLink": "URL-Link",
|
||||
@@ -1659,17 +1664,18 @@
|
||||
},
|
||||
"sources": {
|
||||
"title": "Quellen",
|
||||
"text": "Wähle deine Quellen",
|
||||
"text": "Wissen auswählen",
|
||||
"link": "Quellen-Link",
|
||||
"view_more_one": "{{count}} weitere Quelle",
|
||||
"view_more_other": "{{count}} weitere Quellen",
|
||||
"noSourcesAvailable": "Keine Quellen verfügbar",
|
||||
"noSourcesAvailable": "Noch kein Wissen",
|
||||
"selectedCount": "{{count}} Quellen ausgewählt",
|
||||
"groupOwn": "Deine Quellen",
|
||||
"groupTeam": "Mit dem Team geteilt",
|
||||
"connectMore": "Weitere verbinden",
|
||||
"fromConnector": "Aus {{name}}",
|
||||
"fromConnectorTitle": "Aus {{name}}: {{title}}"
|
||||
"fromConnectorTitle": "Aus {{name}}: {{title}}",
|
||||
"knowledge": "Wissen"
|
||||
},
|
||||
"attachments": {
|
||||
"attach": "Anhängen",
|
||||
@@ -1894,7 +1900,7 @@
|
||||
"placeholders": {
|
||||
"agentName": "Agentenname",
|
||||
"describeAgent": "Beschreibe deinen Agenten",
|
||||
"selectSources": "Quellen auswählen",
|
||||
"selectSources": "Wissen auswählen",
|
||||
"chunksPerQuery": "Chunks pro Anfrage",
|
||||
"selectType": "Typ auswählen",
|
||||
"selectTools": "Werkzeuge auswählen",
|
||||
@@ -1904,19 +1910,19 @@
|
||||
"enterRequestLimit": "Anfrage-Limit eingeben"
|
||||
},
|
||||
"sourcePopup": {
|
||||
"title": "Quellen auswählen",
|
||||
"searchPlaceholder": "Quellen suchen...",
|
||||
"noOptionsMessage": "Keine Quellen verfügbar",
|
||||
"title": "Wissen auswählen",
|
||||
"searchPlaceholder": "Wissen durchsuchen...",
|
||||
"noOptionsMessage": "Noch kein Wissen",
|
||||
"groupOwn": "Deine Quellen",
|
||||
"groupTeam": "Mit dem Team geteilt",
|
||||
"noSourceHint": "Optional. Ohne Quelle antwortet der Agent nur anhand des Modells und seiner Werkzeuge."
|
||||
"noSourceHint": "Optional. Ohne Wissen antwortet der Agent nur mit dem Modell und seinen Werkzeugen."
|
||||
},
|
||||
"toolsPopup": {
|
||||
"title": "Werkzeuge auswählen",
|
||||
"searchPlaceholder": "Werkzeuge suchen...",
|
||||
"noOptionsMessage": "Keine Werkzeuge verfügbar",
|
||||
"groupBuiltin": "Integriert",
|
||||
"groupDefault": "Standard",
|
||||
"groupDefault": "Integriert",
|
||||
"groupCustom": "Benutzerdefiniert",
|
||||
"groupConnection": "{{name}} · {{account}}"
|
||||
},
|
||||
@@ -1938,7 +1944,7 @@
|
||||
"defaultModel": "Standardmodell",
|
||||
"name": "Name",
|
||||
"description": "Beschreibung",
|
||||
"sources": "Quellen",
|
||||
"sources": "Wissen",
|
||||
"avatar": "Avatar"
|
||||
},
|
||||
"advanced": {
|
||||
@@ -2317,7 +2323,7 @@
|
||||
"outputVariable": "Ausgabevariable",
|
||||
"outputVariablePlaceholder": "Variablenname für die Ausgabe",
|
||||
"streamToUser": "Ausgabe an Nutzer streamen",
|
||||
"sources": "Quellen",
|
||||
"sources": "Wissen",
|
||||
"documents": "Dokumente",
|
||||
"documentsHint": "Dokumente, die diesem Agenten aus Uploads oder vorgelagerten Knoten übergeben werden.",
|
||||
"filePassing": "Dateiübergabe",
|
||||
|
||||
+35
-29
@@ -102,15 +102,15 @@
|
||||
"sources": {
|
||||
"title": "Here you can manage all of the source file that are available to you and those you have uploaded.",
|
||||
"subtitle": "Content DocsGPT can search and cite: uploads, websites, wikis and content synced from your connections.",
|
||||
"label": "Sources",
|
||||
"label": "Knowledge",
|
||||
"name": "Source Name",
|
||||
"date": "Vector Date",
|
||||
"type": "Type",
|
||||
"tokenUsage": "Token Usage",
|
||||
"noData": "No existing Sources",
|
||||
"noData": "No knowledge yet",
|
||||
"searchPlaceholder": "Search...",
|
||||
"addNew": "Add New",
|
||||
"addSource": "Add Source",
|
||||
"addSource": "Add knowledge",
|
||||
"addChunk": "Add Chunk",
|
||||
"preLoaded": "Pre-loaded",
|
||||
"private": "Private",
|
||||
@@ -299,7 +299,7 @@
|
||||
"chunks": "Chunks",
|
||||
"noChunks": "No chunks found",
|
||||
"noChunksAlt": "No chunks found",
|
||||
"goToSources": "Go to Sources",
|
||||
"goToSources": "Go to Knowledge",
|
||||
"uploadNew": "Upload new",
|
||||
"noResults": "No results found",
|
||||
"fileName": "Name",
|
||||
@@ -1099,9 +1099,9 @@
|
||||
},
|
||||
"connectors": {
|
||||
"label": "Connectors",
|
||||
"subtitle": "Connect DocsGPT to the services your team uses. A connection can sync content into Sources and give agents tools.",
|
||||
"subtitle": "Connect DocsGPT to the services your team uses. A connection can sync content into Knowledge and give agents tools.",
|
||||
"search": "Search connectors...",
|
||||
"addCustom": "Add custom connector",
|
||||
"addCustom": "Add custom tool",
|
||||
"custom": {
|
||||
"custom_mcp": "MCP server",
|
||||
"custom_openapi": "OpenAPI / REST"
|
||||
@@ -1110,8 +1110,8 @@
|
||||
"categories": {
|
||||
"all": "All",
|
||||
"connected": "Connected",
|
||||
"files": "Files and docs",
|
||||
"knowledge": "Knowledge bases",
|
||||
"files": "Files & storage",
|
||||
"knowledge": "Docs & wikis",
|
||||
"dev": "Developer tools",
|
||||
"messaging": "Messaging",
|
||||
"database": "Databases",
|
||||
@@ -1145,11 +1145,11 @@
|
||||
"custom": "Custom"
|
||||
},
|
||||
"descriptions": {
|
||||
"google_drive": "Sync Docs, Sheets and PDFs into Sources.",
|
||||
"share_point": "Sync files from SharePoint sites and OneDrive into Sources.",
|
||||
"confluence": "Sync Confluence spaces and pages into Sources.",
|
||||
"s3": "Sync documents from an S3 bucket into Sources.",
|
||||
"reddit": "Sync Reddit posts that match your searches into Sources.",
|
||||
"google_drive": "Sync Docs, Sheets and PDFs into Knowledge.",
|
||||
"share_point": "Sync files from SharePoint sites and OneDrive into Knowledge.",
|
||||
"confluence": "Sync Confluence spaces and pages into Knowledge.",
|
||||
"s3": "Sync documents from an S3 bucket into Knowledge.",
|
||||
"reddit": "Sync Reddit posts that match your searches into Knowledge.",
|
||||
"brave": "Search the web and images with the Brave Search API.",
|
||||
"telegram": "Send messages and images to a Telegram chat.",
|
||||
"ntfy": "Send push notifications through an ntfy server.",
|
||||
@@ -1174,7 +1174,7 @@
|
||||
"accounts": "Accounts",
|
||||
"connectedAs": "Connected as {{account}}",
|
||||
"connectAnother": "Connect another account",
|
||||
"sources": "Sources from this connection",
|
||||
"sources": "Knowledge from this connection",
|
||||
"tools": "Tools from this connection",
|
||||
"noAccounts": "No account connected yet.",
|
||||
"failed": "Could not load this connection.",
|
||||
@@ -1290,17 +1290,22 @@
|
||||
},
|
||||
"createFailed": "Could not add the connector. Try again.",
|
||||
"capabilityFilter": {
|
||||
"sync": "Showing connectors that sync content into Sources.",
|
||||
"sync": "Showing connectors that sync content into Knowledge.",
|
||||
"tools": "Showing connectors that give agents tools.",
|
||||
"showAll": "Show all"
|
||||
},
|
||||
"capabilityPlain": {
|
||||
"sync": "Syncs into Knowledge",
|
||||
"read": "Looks things up",
|
||||
"write": "Takes actions"
|
||||
}
|
||||
}
|
||||
},
|
||||
"modals": {
|
||||
"uploadDoc": {
|
||||
"label": "Add a source",
|
||||
"label": "Add knowledge",
|
||||
"select": "Choose how to upload your document to DocsGPT",
|
||||
"selectSource": "Add a source",
|
||||
"selectSource": "Add knowledge",
|
||||
"selectedFiles": "Selected Files",
|
||||
"noFilesSelected": "No files selected",
|
||||
"file": "Upload from device",
|
||||
@@ -1315,7 +1320,7 @@
|
||||
"filesRejected": "Not added (over 25 MB or not a supported type): {{files}}",
|
||||
"uploadedFiles": "Uploaded Files",
|
||||
"cancel": "Cancel",
|
||||
"train": "Add source",
|
||||
"train": "Add to Knowledge",
|
||||
"create": "Create",
|
||||
"link": "Link",
|
||||
"urlLink": "URL Link",
|
||||
@@ -1665,17 +1670,18 @@
|
||||
},
|
||||
"sources": {
|
||||
"title": "Sources",
|
||||
"text": "Choose Your Sources",
|
||||
"text": "Choose knowledge",
|
||||
"link": "Source link",
|
||||
"view_more_one": "{{count}} more source",
|
||||
"view_more_other": "{{count}} more sources",
|
||||
"noSourcesAvailable": "No sources available",
|
||||
"noSourcesAvailable": "No knowledge yet",
|
||||
"selectedCount": "{{count}} sources selected",
|
||||
"groupOwn": "Your sources",
|
||||
"groupTeam": "Shared with team",
|
||||
"connectMore": "Connect more",
|
||||
"fromConnector": "From {{name}}",
|
||||
"fromConnectorTitle": "From {{name}}: {{title}}"
|
||||
"fromConnectorTitle": "From {{name}}: {{title}}",
|
||||
"knowledge": "Knowledge"
|
||||
},
|
||||
"attachments": {
|
||||
"attach": "Attach",
|
||||
@@ -1910,7 +1916,7 @@
|
||||
"placeholders": {
|
||||
"agentName": "Agent name",
|
||||
"describeAgent": "Describe your agent",
|
||||
"selectSources": "Select sources",
|
||||
"selectSources": "Select knowledge",
|
||||
"chunksPerQuery": "Chunks per query",
|
||||
"selectType": "Select type",
|
||||
"selectTools": "Select tools",
|
||||
@@ -1920,19 +1926,19 @@
|
||||
"enterRequestLimit": "Enter request limit"
|
||||
},
|
||||
"sourcePopup": {
|
||||
"title": "Select Sources",
|
||||
"searchPlaceholder": "Search sources...",
|
||||
"noOptionsMessage": "No sources available",
|
||||
"title": "Select knowledge",
|
||||
"searchPlaceholder": "Search knowledge...",
|
||||
"noOptionsMessage": "No knowledge yet",
|
||||
"groupOwn": "Your sources",
|
||||
"groupTeam": "Shared with team",
|
||||
"noSourceHint": "Optional. Without a source the agent answers from the model and its tools only."
|
||||
"noSourceHint": "Optional. Without knowledge the agent answers from the model and its tools only."
|
||||
},
|
||||
"toolsPopup": {
|
||||
"title": "Select Tools",
|
||||
"searchPlaceholder": "Search tools...",
|
||||
"noOptionsMessage": "No tools available",
|
||||
"groupBuiltin": "Built-in",
|
||||
"groupDefault": "Default",
|
||||
"groupDefault": "Built-in",
|
||||
"groupCustom": "Custom",
|
||||
"groupConnection": "{{name}} · {{account}}"
|
||||
},
|
||||
@@ -1954,7 +1960,7 @@
|
||||
"defaultModel": "Default Model",
|
||||
"name": "Name",
|
||||
"description": "Description",
|
||||
"sources": "Sources",
|
||||
"sources": "Knowledge",
|
||||
"avatar": "Avatar"
|
||||
},
|
||||
"advanced": {
|
||||
@@ -2352,7 +2358,7 @@
|
||||
"outputVariable": "Output Variable",
|
||||
"outputVariablePlaceholder": "Variable name for output",
|
||||
"streamToUser": "Stream output to user",
|
||||
"sources": "Sources",
|
||||
"sources": "Knowledge",
|
||||
"documents": "Documents",
|
||||
"documentsHint": "Documents passed to this agent from uploads or upstream nodes.",
|
||||
"filePassing": "File passing",
|
||||
|
||||
+35
-29
@@ -98,15 +98,15 @@
|
||||
"sources": {
|
||||
"title": "Aquí puedes gestionar todos los archivos fuente que están disponibles para ti y los que has subido.",
|
||||
"subtitle": "Contenido que DocsGPT puede buscar y citar: archivos subidos, sitios web, wikis y contenido sincronizado desde tus conexiones.",
|
||||
"label": "Fuentes",
|
||||
"label": "Conocimiento",
|
||||
"name": "Nombre de la Fuente",
|
||||
"date": "Fecha de Vector",
|
||||
"type": "Tipo",
|
||||
"tokenUsage": "Uso de Tokens",
|
||||
"noData": "No hay fuentes existentes",
|
||||
"noData": "Aún no hay conocimiento",
|
||||
"searchPlaceholder": "Buscar...",
|
||||
"addNew": "Agregar Nuevo",
|
||||
"addSource": "Agregar Fuente",
|
||||
"addSource": "Añadir conocimiento",
|
||||
"addChunk": "Agregar Fragmento",
|
||||
"preLoaded": "Precargado",
|
||||
"private": "Privado",
|
||||
@@ -294,7 +294,7 @@
|
||||
"chunks": "Fragmentos",
|
||||
"noChunks": "No se encontraron fragmentos",
|
||||
"noChunksAlt": "No se encontraron fragmentos",
|
||||
"goToSources": "Ir a Fuentes",
|
||||
"goToSources": "Ir a Conocimiento",
|
||||
"uploadNew": "Subir nuevo",
|
||||
"noResults": "No se encontraron resultados",
|
||||
"fileName": "Nombre",
|
||||
@@ -1093,9 +1093,9 @@
|
||||
},
|
||||
"connectors": {
|
||||
"label": "Conectores",
|
||||
"subtitle": "Conecta DocsGPT a los servicios que usa tu equipo. Una conexión puede sincronizar contenido en Fuentes y dar herramientas a los agentes.",
|
||||
"subtitle": "Conecta DocsGPT a los servicios que usa tu equipo. Una conexión puede sincronizar contenido en Conocimiento y dar herramientas a los agentes.",
|
||||
"search": "Buscar conectores...",
|
||||
"addCustom": "Añadir conector personalizado",
|
||||
"addCustom": "Añadir herramienta propia",
|
||||
"custom": {
|
||||
"custom_mcp": "Servidor MCP",
|
||||
"custom_openapi": "OpenAPI / REST"
|
||||
@@ -1104,8 +1104,8 @@
|
||||
"categories": {
|
||||
"all": "Todos",
|
||||
"connected": "Conectados",
|
||||
"files": "Archivos y documentos",
|
||||
"knowledge": "Bases de conocimiento",
|
||||
"files": "Archivos y almacenamiento",
|
||||
"knowledge": "Documentos y wikis",
|
||||
"dev": "Herramientas de desarrollo",
|
||||
"messaging": "Mensajería",
|
||||
"database": "Bases de datos",
|
||||
@@ -1139,11 +1139,11 @@
|
||||
"custom": "Personalizado"
|
||||
},
|
||||
"descriptions": {
|
||||
"google_drive": "Sincroniza Docs, Hojas de cálculo y PDF en Fuentes.",
|
||||
"share_point": "Sincroniza archivos de sitios de SharePoint y OneDrive en Fuentes.",
|
||||
"confluence": "Sincroniza espacios y páginas de Confluence en Fuentes.",
|
||||
"s3": "Sincroniza documentos de un bucket de S3 en Fuentes.",
|
||||
"reddit": "Sincroniza en Fuentes las publicaciones de Reddit que coinciden con tus búsquedas.",
|
||||
"google_drive": "Sincroniza Docs, Hojas de cálculo y PDF en Conocimiento.",
|
||||
"share_point": "Sincroniza archivos de sitios de SharePoint y OneDrive en Conocimiento.",
|
||||
"confluence": "Sincroniza espacios y páginas de Confluence en Conocimiento.",
|
||||
"s3": "Sincroniza documentos de un bucket de S3 en Conocimiento.",
|
||||
"reddit": "Sincroniza publicaciones de Reddit que coinciden con tus búsquedas en Conocimiento.",
|
||||
"brave": "Busca en la web e imágenes con la API de Brave Search.",
|
||||
"telegram": "Envía mensajes e imágenes a un chat de Telegram.",
|
||||
"ntfy": "Envía notificaciones push mediante un servidor ntfy.",
|
||||
@@ -1168,7 +1168,7 @@
|
||||
"accounts": "Cuentas",
|
||||
"connectedAs": "Conectado como {{account}}",
|
||||
"connectAnother": "Conectar otra cuenta",
|
||||
"sources": "Fuentes de esta conexión",
|
||||
"sources": "Conocimiento de esta conexión",
|
||||
"tools": "Herramientas de esta conexión",
|
||||
"noAccounts": "Aún no hay ninguna cuenta conectada.",
|
||||
"failed": "No se pudo cargar esta conexión.",
|
||||
@@ -1284,17 +1284,22 @@
|
||||
},
|
||||
"createFailed": "No se pudo añadir el conector. Inténtalo de nuevo.",
|
||||
"capabilityFilter": {
|
||||
"sync": "Se muestran los conectores que sincronizan contenido en Fuentes.",
|
||||
"sync": "Se muestran los conectores que sincronizan contenido en Conocimiento.",
|
||||
"tools": "Se muestran los conectores que dan herramientas a los agentes.",
|
||||
"showAll": "Mostrar todos"
|
||||
},
|
||||
"capabilityPlain": {
|
||||
"sync": "Sincroniza en Conocimiento",
|
||||
"read": "Consulta datos",
|
||||
"write": "Realiza acciones"
|
||||
}
|
||||
}
|
||||
},
|
||||
"modals": {
|
||||
"uploadDoc": {
|
||||
"label": "Añadir una fuente",
|
||||
"label": "Añadir conocimiento",
|
||||
"select": "Elige cómo cargar tu documento en DocsGPT",
|
||||
"selectSource": "Añadir una fuente",
|
||||
"selectSource": "Añadir conocimiento",
|
||||
"selectedFiles": "Archivos Seleccionados",
|
||||
"noFilesSelected": "No hay archivos seleccionados",
|
||||
"file": "Subir desde el dispositivo",
|
||||
@@ -1309,7 +1314,7 @@
|
||||
"filesRejected": "No se añadieron (más de 25 MB o tipo no admitido): {{files}}",
|
||||
"uploadedFiles": "Archivos Subidos",
|
||||
"cancel": "Cancelar",
|
||||
"train": "Añadir fuente",
|
||||
"train": "Añadir al conocimiento",
|
||||
"create": "Crear",
|
||||
"link": "Enlace",
|
||||
"urlLink": "Enlace URL",
|
||||
@@ -1659,17 +1664,18 @@
|
||||
},
|
||||
"sources": {
|
||||
"title": "Fuentes",
|
||||
"text": "Elegir tus fuentes",
|
||||
"text": "Elegir conocimiento",
|
||||
"link": "Enlace fuente",
|
||||
"view_more_one": "Ver {{count}} fuente más",
|
||||
"view_more_other": "Ver {{count}} fuentes más",
|
||||
"noSourcesAvailable": "No hay fuentes disponibles",
|
||||
"noSourcesAvailable": "Aún no hay conocimiento",
|
||||
"selectedCount": "{{count}} fuentes seleccionadas",
|
||||
"groupOwn": "Tus fuentes",
|
||||
"groupTeam": "Compartidas con el equipo",
|
||||
"connectMore": "Conectar más",
|
||||
"fromConnector": "De {{name}}",
|
||||
"fromConnectorTitle": "De {{name}}: {{title}}"
|
||||
"fromConnectorTitle": "De {{name}}: {{title}}",
|
||||
"knowledge": "Conocimiento"
|
||||
},
|
||||
"attachments": {
|
||||
"attach": "Adjuntar",
|
||||
@@ -1894,7 +1900,7 @@
|
||||
"placeholders": {
|
||||
"agentName": "Nombre del agente",
|
||||
"describeAgent": "Describe tu agente",
|
||||
"selectSources": "Seleccionar fuentes",
|
||||
"selectSources": "Seleccionar conocimiento",
|
||||
"chunksPerQuery": "Fragmentos por consulta",
|
||||
"selectType": "Seleccionar tipo",
|
||||
"selectTools": "Seleccionar herramientas",
|
||||
@@ -1904,19 +1910,19 @@
|
||||
"enterRequestLimit": "Ingresar límite de solicitudes"
|
||||
},
|
||||
"sourcePopup": {
|
||||
"title": "Seleccionar Fuentes",
|
||||
"searchPlaceholder": "Buscar fuentes...",
|
||||
"noOptionsMessage": "No hay fuentes disponibles",
|
||||
"title": "Seleccionar conocimiento",
|
||||
"searchPlaceholder": "Buscar conocimiento...",
|
||||
"noOptionsMessage": "Aún no hay conocimiento",
|
||||
"groupOwn": "Tus fuentes",
|
||||
"groupTeam": "Compartidas con el equipo",
|
||||
"noSourceHint": "Opcional. Sin una fuente, el agente responde solo con el modelo y sus herramientas."
|
||||
"noSourceHint": "Opcional. Sin conocimiento, el agente responde solo con el modelo y sus herramientas."
|
||||
},
|
||||
"toolsPopup": {
|
||||
"title": "Seleccionar Herramientas",
|
||||
"searchPlaceholder": "Buscar herramientas...",
|
||||
"noOptionsMessage": "No hay herramientas disponibles",
|
||||
"groupBuiltin": "Integradas",
|
||||
"groupDefault": "Predeterminadas",
|
||||
"groupDefault": "Integradas",
|
||||
"groupCustom": "Personalizadas",
|
||||
"groupConnection": "{{name}} · {{account}}"
|
||||
},
|
||||
@@ -1938,7 +1944,7 @@
|
||||
"defaultModel": "Modelo Predeterminado",
|
||||
"name": "Nombre",
|
||||
"description": "Descripción",
|
||||
"sources": "Fuentes",
|
||||
"sources": "Conocimiento",
|
||||
"avatar": "Avatar"
|
||||
},
|
||||
"advanced": {
|
||||
@@ -2317,7 +2323,7 @@
|
||||
"outputVariable": "Variable de salida",
|
||||
"outputVariablePlaceholder": "Nombre de la variable de salida",
|
||||
"streamToUser": "Transmitir la salida al usuario",
|
||||
"sources": "Fuentes",
|
||||
"sources": "Conocimiento",
|
||||
"documents": "Documentos",
|
||||
"documentsHint": "Documentos que se pasan a este agente desde cargas o nodos anteriores.",
|
||||
"filePassing": "Paso de archivos",
|
||||
|
||||
+35
-29
@@ -98,15 +98,15 @@
|
||||
"sources": {
|
||||
"title": "ここでは、利用可能なすべてのソースファイルとアップロードしたファイルを管理できます。",
|
||||
"subtitle": "DocsGPT が検索・引用できるコンテンツ:アップロード、ウェブサイト、Wiki、接続から同期したコンテンツ。",
|
||||
"label": "ソース",
|
||||
"label": "ナレッジ",
|
||||
"name": "ソース名",
|
||||
"date": "ベクトル日付",
|
||||
"type": "タイプ",
|
||||
"tokenUsage": "トークン使用量",
|
||||
"noData": "既存のソースがありません",
|
||||
"noData": "ナレッジはまだありません",
|
||||
"searchPlaceholder": "検索...",
|
||||
"addNew": "新規追加",
|
||||
"addSource": "ソースを追加",
|
||||
"addSource": "ナレッジを追加",
|
||||
"addChunk": "チャンクを追加",
|
||||
"preLoaded": "プリロード済み",
|
||||
"private": "プライベート",
|
||||
@@ -287,7 +287,7 @@
|
||||
"chunks": "チャンク",
|
||||
"noChunks": "チャンクが見つかりません",
|
||||
"noChunksAlt": "チャンクが見つかりません",
|
||||
"goToSources": "ソースへ移動",
|
||||
"goToSources": "ナレッジへ移動",
|
||||
"uploadNew": "新規アップロード",
|
||||
"noResults": "結果が見つかりません",
|
||||
"fileName": "名前",
|
||||
@@ -1084,9 +1084,9 @@
|
||||
},
|
||||
"connectors": {
|
||||
"label": "コネクタ",
|
||||
"subtitle": "DocsGPT をチームで使っているサービスに接続します。接続ごとに、コンテンツをソースへ同期したり、エージェントにツールを提供したりできます。",
|
||||
"subtitle": "DocsGPT をチームで使っているサービスに接続します。接続ごとに、コンテンツをナレッジへ同期したり、エージェントにツールを提供したりできます。",
|
||||
"search": "コネクタを検索...",
|
||||
"addCustom": "カスタムコネクタを追加",
|
||||
"addCustom": "カスタムツールを追加",
|
||||
"custom": {
|
||||
"custom_mcp": "MCP サーバー",
|
||||
"custom_openapi": "OpenAPI / REST"
|
||||
@@ -1095,8 +1095,8 @@
|
||||
"categories": {
|
||||
"all": "すべて",
|
||||
"connected": "接続済み",
|
||||
"files": "ファイルとドキュメント",
|
||||
"knowledge": "ナレッジベース",
|
||||
"files": "ファイルとストレージ",
|
||||
"knowledge": "ドキュメントと Wiki",
|
||||
"dev": "開発者ツール",
|
||||
"messaging": "メッセージ",
|
||||
"database": "データベース",
|
||||
@@ -1130,11 +1130,11 @@
|
||||
"custom": "カスタム"
|
||||
},
|
||||
"descriptions": {
|
||||
"google_drive": "ドキュメント、スプレッドシート、PDF をソースに同期します。",
|
||||
"share_point": "SharePoint サイトと OneDrive のファイルをソースに同期します。",
|
||||
"confluence": "Confluence のスペースとページをソースに同期します。",
|
||||
"s3": "S3 バケットのドキュメントをソースに同期します。",
|
||||
"reddit": "検索に一致する Reddit の投稿をソースに同期します。",
|
||||
"google_drive": "ドキュメント、スプレッドシート、PDF をナレッジに同期します。",
|
||||
"share_point": "SharePoint サイトと OneDrive のファイルをナレッジに同期します。",
|
||||
"confluence": "Confluence のスペースとページをナレッジに同期します。",
|
||||
"s3": "S3 バケットのドキュメントをナレッジに同期します。",
|
||||
"reddit": "検索条件に一致する Reddit の投稿をナレッジに同期します。",
|
||||
"brave": "Brave Search API でウェブと画像を検索します。",
|
||||
"telegram": "Telegram のチャットにメッセージや画像を送信します。",
|
||||
"ntfy": "ntfy サーバー経由でプッシュ通知を送信します。",
|
||||
@@ -1159,7 +1159,7 @@
|
||||
"accounts": "アカウント",
|
||||
"connectedAs": "{{account}} として接続中",
|
||||
"connectAnother": "別のアカウントを接続",
|
||||
"sources": "この接続のソース",
|
||||
"sources": "この接続からのナレッジ",
|
||||
"tools": "この接続のツール",
|
||||
"noAccounts": "まだアカウントが接続されていません。",
|
||||
"failed": "この接続を読み込めませんでした。",
|
||||
@@ -1268,17 +1268,22 @@
|
||||
},
|
||||
"createFailed": "コネクタを追加できませんでした。もう一度お試しください。",
|
||||
"capabilityFilter": {
|
||||
"sync": "ソースにコンテンツを同期するコネクタを表示しています。",
|
||||
"sync": "ナレッジにコンテンツを同期するコネクタを表示しています。",
|
||||
"tools": "エージェントにツールを提供するコネクタを表示しています。",
|
||||
"showAll": "すべて表示"
|
||||
},
|
||||
"capabilityPlain": {
|
||||
"sync": "ナレッジに同期",
|
||||
"read": "情報を調べる",
|
||||
"write": "操作を行う"
|
||||
}
|
||||
}
|
||||
},
|
||||
"modals": {
|
||||
"uploadDoc": {
|
||||
"label": "ソースを追加",
|
||||
"label": "ナレッジを追加",
|
||||
"select": "ドキュメントを DocsGPT にアップロードする方法を選択します",
|
||||
"selectSource": "ソースを追加",
|
||||
"selectSource": "ナレッジを追加",
|
||||
"selectedFiles": "選択されたファイル",
|
||||
"noFilesSelected": "ファイルが選択されていません",
|
||||
"file": "デバイスからアップロード",
|
||||
@@ -1293,7 +1298,7 @@
|
||||
"filesRejected": "追加されませんでした(25 MB を超えているか、未対応の形式です): {{files}}",
|
||||
"uploadedFiles": "アップロードされたファイル",
|
||||
"cancel": "キャンセル",
|
||||
"train": "ソースを追加",
|
||||
"train": "ナレッジに追加",
|
||||
"create": "作成",
|
||||
"link": "リンク",
|
||||
"urlLink": "URLリンク",
|
||||
@@ -1642,16 +1647,17 @@
|
||||
},
|
||||
"sources": {
|
||||
"title": "ソース",
|
||||
"text": "ソーステキスト",
|
||||
"text": "ナレッジを選択",
|
||||
"link": "ソースリンク",
|
||||
"view_more": "さらに{{count}}個のソース",
|
||||
"noSourcesAvailable": "利用可能なソースがありません",
|
||||
"noSourcesAvailable": "ナレッジはまだありません",
|
||||
"selectedCount": "{{count}} 件のソースを選択中",
|
||||
"groupOwn": "自分のソース",
|
||||
"groupTeam": "チームと共有",
|
||||
"connectMore": "さらに接続",
|
||||
"fromConnector": "{{name}} から",
|
||||
"fromConnectorTitle": "{{name}} から: {{title}}"
|
||||
"fromConnectorTitle": "{{name}} から: {{title}}",
|
||||
"knowledge": "ナレッジ"
|
||||
},
|
||||
"attachments": {
|
||||
"attach": "添付",
|
||||
@@ -1875,7 +1881,7 @@
|
||||
"placeholders": {
|
||||
"agentName": "エージェント名",
|
||||
"describeAgent": "エージェントを説明してください",
|
||||
"selectSources": "ソースを選択",
|
||||
"selectSources": "ナレッジを選択",
|
||||
"chunksPerQuery": "クエリごとのチャンク数",
|
||||
"selectType": "タイプを選択",
|
||||
"selectTools": "ツールを選択",
|
||||
@@ -1885,19 +1891,19 @@
|
||||
"enterRequestLimit": "リクエスト制限を入力"
|
||||
},
|
||||
"sourcePopup": {
|
||||
"title": "ソースを選択",
|
||||
"searchPlaceholder": "ソースを検索...",
|
||||
"noOptionsMessage": "利用可能なソースがありません",
|
||||
"title": "ナレッジを選択",
|
||||
"searchPlaceholder": "ナレッジを検索...",
|
||||
"noOptionsMessage": "ナレッジはまだありません",
|
||||
"groupOwn": "自分のソース",
|
||||
"groupTeam": "チームと共有",
|
||||
"noSourceHint": "任意。ソースがない場合、エージェントはモデルとツールのみで回答します。"
|
||||
"noSourceHint": "任意です。ナレッジがない場合、エージェントはモデルとツールだけで回答します。"
|
||||
},
|
||||
"toolsPopup": {
|
||||
"title": "ツールを選択",
|
||||
"searchPlaceholder": "ツールを検索...",
|
||||
"noOptionsMessage": "利用可能なツールがありません",
|
||||
"groupBuiltin": "ビルトイン",
|
||||
"groupDefault": "デフォルト",
|
||||
"groupDefault": "組み込み",
|
||||
"groupCustom": "カスタム",
|
||||
"groupConnection": "{{name}} · {{account}}"
|
||||
},
|
||||
@@ -1919,7 +1925,7 @@
|
||||
"defaultModel": "デフォルトモデル",
|
||||
"name": "名前",
|
||||
"description": "説明",
|
||||
"sources": "ソース",
|
||||
"sources": "ナレッジ",
|
||||
"avatar": "アバター"
|
||||
},
|
||||
"advanced": {
|
||||
@@ -2297,7 +2303,7 @@
|
||||
"outputVariable": "出力変数",
|
||||
"outputVariablePlaceholder": "出力の変数名",
|
||||
"streamToUser": "出力をユーザーにストリーミング",
|
||||
"sources": "ソース",
|
||||
"sources": "ナレッジ",
|
||||
"documents": "ドキュメント",
|
||||
"documentsHint": "アップロードまたは上流ノードからこのエージェントに渡されるドキュメント。",
|
||||
"filePassing": "ファイルの受け渡し",
|
||||
|
||||
+35
-29
@@ -98,15 +98,15 @@
|
||||
"sources": {
|
||||
"title": "Здесь вы можете управлять всеми исходными файлами, которые доступны вам и которые вы загрузили.",
|
||||
"subtitle": "Контент, по которому DocsGPT может искать и который может цитировать: загрузки, сайты, вики и контент, синхронизированный из ваших подключений.",
|
||||
"label": "Источники",
|
||||
"label": "Знания",
|
||||
"name": "Название источника",
|
||||
"date": "Дата вектора",
|
||||
"type": "Тип",
|
||||
"tokenUsage": "Использование токена",
|
||||
"noData": "Нет существующих источников",
|
||||
"noData": "Знаний пока нет",
|
||||
"searchPlaceholder": "Поиск...",
|
||||
"addNew": "добавить новый",
|
||||
"addSource": "Добавить источник",
|
||||
"addSource": "Добавить знания",
|
||||
"addChunk": "Добавить фрагмент",
|
||||
"preLoaded": "Предзагруженный",
|
||||
"private": "Частный",
|
||||
@@ -318,7 +318,7 @@
|
||||
"chunks": "Фрагменты",
|
||||
"noChunks": "Фрагменты не найдены",
|
||||
"noChunksAlt": "Фрагменты не найдены",
|
||||
"goToSources": "Перейти к источникам",
|
||||
"goToSources": "К знаниям",
|
||||
"uploadNew": "Загрузить новый",
|
||||
"noResults": "Результаты не найдены",
|
||||
"fileName": "Имя",
|
||||
@@ -1149,9 +1149,9 @@
|
||||
},
|
||||
"connectors": {
|
||||
"label": "Коннекторы",
|
||||
"subtitle": "Подключите DocsGPT к сервисам, которыми пользуется ваша команда. Подключение может синхронизировать контент в Источники и давать агентам инструменты.",
|
||||
"subtitle": "Подключите DocsGPT к сервисам, которыми пользуется ваша команда. Подключение может синхронизировать содержимое в знания и давать агентам инструменты.",
|
||||
"search": "Поиск коннекторов...",
|
||||
"addCustom": "Добавить свой коннектор",
|
||||
"addCustom": "Добавить свой инструмент",
|
||||
"custom": {
|
||||
"custom_mcp": "MCP-сервер",
|
||||
"custom_openapi": "OpenAPI / REST"
|
||||
@@ -1160,8 +1160,8 @@
|
||||
"categories": {
|
||||
"all": "Все",
|
||||
"connected": "Подключённые",
|
||||
"files": "Файлы и документы",
|
||||
"knowledge": "Базы знаний",
|
||||
"files": "Файлы и хранилища",
|
||||
"knowledge": "Документы и вики",
|
||||
"dev": "Инструменты разработчика",
|
||||
"messaging": "Сообщения",
|
||||
"database": "Базы данных",
|
||||
@@ -1195,11 +1195,11 @@
|
||||
"custom": "Свой"
|
||||
},
|
||||
"descriptions": {
|
||||
"google_drive": "Синхронизирует Документы, Таблицы и PDF в Источники.",
|
||||
"share_point": "Синхронизирует файлы с сайтов SharePoint и из OneDrive в Источники.",
|
||||
"confluence": "Синхронизирует пространства и страницы Confluence в Источники.",
|
||||
"s3": "Синхронизирует документы из бакета S3 в Источники.",
|
||||
"reddit": "Синхронизирует в Источники посты Reddit по вашим поисковым запросам.",
|
||||
"google_drive": "Синхронизирует Документы, Таблицы и PDF в знания.",
|
||||
"share_point": "Синхронизирует файлы с сайтов SharePoint и из OneDrive в знания.",
|
||||
"confluence": "Синхронизирует пространства и страницы Confluence в знания.",
|
||||
"s3": "Синхронизирует документы из бакета S3 в знания.",
|
||||
"reddit": "Синхронизирует публикации Reddit по вашим запросам в знания.",
|
||||
"brave": "Поиск в интернете и по картинкам через Brave Search API.",
|
||||
"telegram": "Отправляет сообщения и изображения в чат Telegram.",
|
||||
"ntfy": "Отправляет push-уведомления через сервер ntfy.",
|
||||
@@ -1224,7 +1224,7 @@
|
||||
"accounts": "Аккаунты",
|
||||
"connectedAs": "Подключено как {{account}}",
|
||||
"connectAnother": "Подключить другой аккаунт",
|
||||
"sources": "Источники из этого подключения",
|
||||
"sources": "Знания из этого подключения",
|
||||
"tools": "Инструменты из этого подключения",
|
||||
"noAccounts": "Аккаунт ещё не подключён.",
|
||||
"failed": "Не удалось загрузить это подключение.",
|
||||
@@ -1354,17 +1354,22 @@
|
||||
},
|
||||
"createFailed": "Не удалось добавить коннектор. Попробуйте ещё раз.",
|
||||
"capabilityFilter": {
|
||||
"sync": "Показаны коннекторы, которые синхронизируют содержимое в источники.",
|
||||
"sync": "Показаны коннекторы, которые синхронизируют содержимое в знания.",
|
||||
"tools": "Показаны коннекторы, которые дают агентам инструменты.",
|
||||
"showAll": "Показать все"
|
||||
},
|
||||
"capabilityPlain": {
|
||||
"sync": "Синхронизирует в знания",
|
||||
"read": "Ищет информацию",
|
||||
"write": "Выполняет действия"
|
||||
}
|
||||
}
|
||||
},
|
||||
"modals": {
|
||||
"uploadDoc": {
|
||||
"label": "Добавить источник",
|
||||
"label": "Добавить знания",
|
||||
"select": "Выберите способ загрузки документа в DocsGPT",
|
||||
"selectSource": "Добавить источник",
|
||||
"selectSource": "Добавить знания",
|
||||
"selectedFiles": "Выбранные файлы",
|
||||
"noFilesSelected": "Файлы не выбраны",
|
||||
"file": "Загрузить с устройства",
|
||||
@@ -1379,7 +1384,7 @@
|
||||
"filesRejected": "Не добавлены (больше 25 МБ или неподдерживаемый формат): {{files}}",
|
||||
"uploadedFiles": "Загруженные файлы",
|
||||
"cancel": "Отмена",
|
||||
"train": "Добавить источник",
|
||||
"train": "Добавить в знания",
|
||||
"create": "Создать",
|
||||
"link": "Ссылка",
|
||||
"urlLink": "URL ссылка",
|
||||
@@ -1731,19 +1736,20 @@
|
||||
},
|
||||
"sources": {
|
||||
"title": "Источники",
|
||||
"text": "Выберите ваши источники",
|
||||
"text": "Выберите знания",
|
||||
"link": "Ссылка на источник",
|
||||
"view_more_one": "ещё {{count}} источник",
|
||||
"view_more_few": "ещё {{count}} источника",
|
||||
"view_more_many": "ещё {{count}} источников",
|
||||
"view_more_other": "ещё {{count}} источников",
|
||||
"noSourcesAvailable": "Нет доступных источников",
|
||||
"noSourcesAvailable": "Знаний пока нет",
|
||||
"selectedCount": "Выбрано источников: {{count}}",
|
||||
"groupOwn": "Ваши источники",
|
||||
"groupTeam": "Общие с командой",
|
||||
"connectMore": "Подключить ещё",
|
||||
"fromConnector": "Из {{name}}",
|
||||
"fromConnectorTitle": "Из {{name}}: {{title}}"
|
||||
"fromConnectorTitle": "Из {{name}}: {{title}}",
|
||||
"knowledge": "Знания"
|
||||
},
|
||||
"attachments": {
|
||||
"attach": "Прикрепить",
|
||||
@@ -1970,7 +1976,7 @@
|
||||
"placeholders": {
|
||||
"agentName": "Имя агента",
|
||||
"describeAgent": "Опишите вашего агента",
|
||||
"selectSources": "Выберите источники",
|
||||
"selectSources": "Выберите знания",
|
||||
"chunksPerQuery": "Фрагментов на запрос",
|
||||
"selectType": "Выберите тип",
|
||||
"selectTools": "Выберите инструменты",
|
||||
@@ -1980,19 +1986,19 @@
|
||||
"enterRequestLimit": "Введите лимит запросов"
|
||||
},
|
||||
"sourcePopup": {
|
||||
"title": "Выберите Источники",
|
||||
"searchPlaceholder": "Поиск источников...",
|
||||
"noOptionsMessage": "Нет доступных источников",
|
||||
"title": "Выберите знания",
|
||||
"searchPlaceholder": "Поиск по знаниям...",
|
||||
"noOptionsMessage": "Знаний пока нет",
|
||||
"groupOwn": "Ваши источники",
|
||||
"groupTeam": "Общие с командой",
|
||||
"noSourceHint": "Необязательно. Без источника агент отвечает только на основе модели и своих инструментов."
|
||||
"noSourceHint": "Необязательно. Без знаний агент отвечает только с помощью модели и своих инструментов."
|
||||
},
|
||||
"toolsPopup": {
|
||||
"title": "Выберите Инструменты",
|
||||
"searchPlaceholder": "Поиск инструментов...",
|
||||
"noOptionsMessage": "Нет доступных инструментов",
|
||||
"groupBuiltin": "Встроенные",
|
||||
"groupDefault": "По умолчанию",
|
||||
"groupDefault": "Встроенные",
|
||||
"groupCustom": "Пользовательские",
|
||||
"groupConnection": "{{name}} · {{account}}"
|
||||
},
|
||||
@@ -2014,7 +2020,7 @@
|
||||
"defaultModel": "Модель по умолчанию",
|
||||
"name": "Имя",
|
||||
"description": "Описание",
|
||||
"sources": "Источники",
|
||||
"sources": "Знания",
|
||||
"avatar": "Аватар"
|
||||
},
|
||||
"advanced": {
|
||||
@@ -2401,7 +2407,7 @@
|
||||
"outputVariable": "Выходная переменная",
|
||||
"outputVariablePlaceholder": "Имя переменной для вывода",
|
||||
"streamToUser": "Передавать вывод пользователю потоком",
|
||||
"sources": "Источники",
|
||||
"sources": "Знания",
|
||||
"documents": "Документы",
|
||||
"documentsHint": "Документы, передаваемые этому агенту из загрузок или предыдущих узлов.",
|
||||
"filePassing": "Передача файлов",
|
||||
|
||||
@@ -98,15 +98,15 @@
|
||||
"sources": {
|
||||
"title": "在這裡您可以管理所有可用的來源檔案以及您上傳的檔案。",
|
||||
"subtitle": "DocsGPT 可以搜尋和引用的內容:上傳的檔案、網站、Wiki,以及從連線同步的內容。",
|
||||
"label": "來源",
|
||||
"label": "知識庫",
|
||||
"name": "來源名稱",
|
||||
"date": "向量日期",
|
||||
"type": "類型",
|
||||
"tokenUsage": "Token 使用量",
|
||||
"noData": "沒有現有的來源",
|
||||
"noData": "還沒有知識",
|
||||
"searchPlaceholder": "搜尋...",
|
||||
"addNew": "新增文件",
|
||||
"addSource": "新增來源",
|
||||
"addSource": "新增知識",
|
||||
"addChunk": "新增區塊",
|
||||
"preLoaded": "預載入",
|
||||
"private": "私人",
|
||||
@@ -287,7 +287,7 @@
|
||||
"chunks": "文本塊",
|
||||
"noChunks": "未找到文本塊",
|
||||
"noChunksAlt": "未找到文本塊",
|
||||
"goToSources": "前往來源",
|
||||
"goToSources": "前往知識庫",
|
||||
"uploadNew": "上傳新文件",
|
||||
"noResults": "未找到結果",
|
||||
"fileName": "名稱",
|
||||
@@ -1084,9 +1084,9 @@
|
||||
},
|
||||
"connectors": {
|
||||
"label": "連接器",
|
||||
"subtitle": "將 DocsGPT 連接到團隊使用的服務。一個連線可以把內容同步到來源,也可以為代理提供工具。",
|
||||
"subtitle": "將 DocsGPT 連接到團隊使用的服務。一個連線可以把內容同步到知識庫,也可以為代理提供工具。",
|
||||
"search": "搜尋連接器...",
|
||||
"addCustom": "新增自訂連接器",
|
||||
"addCustom": "新增自訂工具",
|
||||
"custom": {
|
||||
"custom_mcp": "MCP 伺服器",
|
||||
"custom_openapi": "OpenAPI / REST"
|
||||
@@ -1095,8 +1095,8 @@
|
||||
"categories": {
|
||||
"all": "全部",
|
||||
"connected": "已連線",
|
||||
"files": "檔案和文件",
|
||||
"knowledge": "知識庫",
|
||||
"files": "檔案與儲存",
|
||||
"knowledge": "文件與 Wiki",
|
||||
"dev": "開發者工具",
|
||||
"messaging": "訊息",
|
||||
"database": "資料庫",
|
||||
@@ -1130,11 +1130,11 @@
|
||||
"custom": "自訂"
|
||||
},
|
||||
"descriptions": {
|
||||
"google_drive": "將文件、試算表和 PDF 同步到來源。",
|
||||
"share_point": "將 SharePoint 網站和 OneDrive 中的檔案同步到來源。",
|
||||
"confluence": "將 Confluence 空間和頁面同步到來源。",
|
||||
"s3": "將 S3 儲存貯體中的文件同步到來源。",
|
||||
"reddit": "將符合搜尋條件的 Reddit 貼文同步到來源。",
|
||||
"google_drive": "將文件、試算表和 PDF 同步到知識庫。",
|
||||
"share_point": "將 SharePoint 網站和 OneDrive 中的檔案同步到知識庫。",
|
||||
"confluence": "將 Confluence 空間和頁面同步到知識庫。",
|
||||
"s3": "將 S3 儲存貯體中的文件同步到知識庫。",
|
||||
"reddit": "將符合你搜尋條件的 Reddit 貼文同步到知識庫。",
|
||||
"brave": "使用 Brave Search API 搜尋網頁和圖片。",
|
||||
"telegram": "傳送訊息和圖片到 Telegram 聊天。",
|
||||
"ntfy": "透過 ntfy 伺服器傳送推播通知。",
|
||||
@@ -1159,7 +1159,7 @@
|
||||
"accounts": "帳號",
|
||||
"connectedAs": "已以 {{account}} 連線",
|
||||
"connectAnother": "連線其他帳號",
|
||||
"sources": "來自此連線的來源",
|
||||
"sources": "來自此連線的知識",
|
||||
"tools": "來自此連線的工具",
|
||||
"noAccounts": "尚未連線帳號。",
|
||||
"failed": "無法載入此連線。",
|
||||
@@ -1268,17 +1268,22 @@
|
||||
},
|
||||
"createFailed": "無法新增連接器。請再試一次。",
|
||||
"capabilityFilter": {
|
||||
"sync": "正在顯示將內容同步到來源的連接器。",
|
||||
"sync": "正在顯示將內容同步到知識庫的連接器。",
|
||||
"tools": "正在顯示為代理提供工具的連接器。",
|
||||
"showAll": "顯示全部"
|
||||
},
|
||||
"capabilityPlain": {
|
||||
"sync": "同步到知識庫",
|
||||
"read": "查詢資訊",
|
||||
"write": "執行操作"
|
||||
}
|
||||
}
|
||||
},
|
||||
"modals": {
|
||||
"uploadDoc": {
|
||||
"label": "新增來源",
|
||||
"label": "新增知識",
|
||||
"select": "選擇如何將文件上傳到 DocsGPT",
|
||||
"selectSource": "新增來源",
|
||||
"selectSource": "新增知識",
|
||||
"selectedFiles": "已選擇的檔案",
|
||||
"noFilesSelected": "未選擇檔案",
|
||||
"file": "從檔案",
|
||||
@@ -1293,7 +1298,7 @@
|
||||
"filesRejected": "未新增(超過 25 MB 或不支援的類型):{{files}}",
|
||||
"uploadedFiles": "已上傳檔案",
|
||||
"cancel": "取消",
|
||||
"train": "新增來源",
|
||||
"train": "新增到知識庫",
|
||||
"create": "建立",
|
||||
"link": "連結",
|
||||
"urlLink": "URL 連結",
|
||||
@@ -1642,16 +1647,17 @@
|
||||
},
|
||||
"sources": {
|
||||
"title": "來源",
|
||||
"text": "來源文字",
|
||||
"text": "選擇知識",
|
||||
"link": "來源連結",
|
||||
"view_more": "查看更多 {{count}} 個來源",
|
||||
"noSourcesAvailable": "沒有可用的來源",
|
||||
"noSourcesAvailable": "還沒有知識",
|
||||
"selectedCount": "已選擇 {{count}} 個來源",
|
||||
"groupOwn": "我的來源",
|
||||
"groupTeam": "團隊共享",
|
||||
"connectMore": "連線更多",
|
||||
"fromConnector": "來自 {{name}}",
|
||||
"fromConnectorTitle": "來自 {{name}}:{{title}}"
|
||||
"fromConnectorTitle": "來自 {{name}}:{{title}}",
|
||||
"knowledge": "知識庫"
|
||||
},
|
||||
"attachments": {
|
||||
"attach": "附件",
|
||||
@@ -1875,7 +1881,7 @@
|
||||
"placeholders": {
|
||||
"agentName": "代理名稱",
|
||||
"describeAgent": "描述您的代理",
|
||||
"selectSources": "選擇來源",
|
||||
"selectSources": "選擇知識",
|
||||
"chunksPerQuery": "每次查詢的區塊數",
|
||||
"selectType": "選擇類型",
|
||||
"selectTools": "選擇工具",
|
||||
@@ -1885,19 +1891,19 @@
|
||||
"enterRequestLimit": "輸入請求限制"
|
||||
},
|
||||
"sourcePopup": {
|
||||
"title": "選擇來源",
|
||||
"searchPlaceholder": "搜尋來源...",
|
||||
"noOptionsMessage": "沒有可用的來源",
|
||||
"title": "選擇知識",
|
||||
"searchPlaceholder": "搜尋知識...",
|
||||
"noOptionsMessage": "還沒有知識",
|
||||
"groupOwn": "我的來源",
|
||||
"groupTeam": "團隊共享",
|
||||
"noSourceHint": "可選。未選擇來源時,代理僅根據模型和工具作答。"
|
||||
"noSourceHint": "選填。沒有知識時,代理只用模型和它的工具回答。"
|
||||
},
|
||||
"toolsPopup": {
|
||||
"title": "選擇工具",
|
||||
"searchPlaceholder": "搜尋工具...",
|
||||
"noOptionsMessage": "沒有可用的工具",
|
||||
"groupBuiltin": "內建",
|
||||
"groupDefault": "預設",
|
||||
"groupDefault": "內建",
|
||||
"groupCustom": "自訂",
|
||||
"groupConnection": "{{name}} · {{account}}"
|
||||
},
|
||||
@@ -1919,7 +1925,7 @@
|
||||
"defaultModel": "預設模型",
|
||||
"name": "名稱",
|
||||
"description": "描述",
|
||||
"sources": "來源",
|
||||
"sources": "知識庫",
|
||||
"avatar": "頭像"
|
||||
},
|
||||
"advanced": {
|
||||
@@ -2297,7 +2303,7 @@
|
||||
"outputVariable": "輸出變數",
|
||||
"outputVariablePlaceholder": "輸出的變數名稱",
|
||||
"streamToUser": "將輸出串流給使用者",
|
||||
"sources": "來源",
|
||||
"sources": "知識庫",
|
||||
"documents": "文件",
|
||||
"documentsHint": "從上傳或上游節點傳給此代理的文件。",
|
||||
"filePassing": "檔案傳遞",
|
||||
|
||||
+35
-29
@@ -98,15 +98,15 @@
|
||||
"sources": {
|
||||
"title": "在这里您可以管理所有可用的源文件以及您上传的文件。",
|
||||
"subtitle": "DocsGPT 可以搜索和引用的内容:上传的文件、网站、Wiki,以及从连接同步的内容。",
|
||||
"label": "来源",
|
||||
"label": "知识库",
|
||||
"name": "来源名称",
|
||||
"date": "向量日期",
|
||||
"type": "类型",
|
||||
"tokenUsage": "令牌使用",
|
||||
"noData": "没有现有的来源",
|
||||
"noData": "还没有知识",
|
||||
"searchPlaceholder": "搜索...",
|
||||
"addNew": "添加新文档",
|
||||
"addSource": "添加来源",
|
||||
"addSource": "添加知识",
|
||||
"addChunk": "添加块",
|
||||
"preLoaded": "预加载",
|
||||
"private": "私有",
|
||||
@@ -287,7 +287,7 @@
|
||||
"chunks": "文本块",
|
||||
"noChunks": "未找到文本块",
|
||||
"noChunksAlt": "未找到文本块",
|
||||
"goToSources": "前往来源",
|
||||
"goToSources": "前往知识库",
|
||||
"uploadNew": "上传新文档",
|
||||
"noResults": "未找到结果",
|
||||
"fileName": "名称",
|
||||
@@ -1084,9 +1084,9 @@
|
||||
},
|
||||
"connectors": {
|
||||
"label": "连接器",
|
||||
"subtitle": "将 DocsGPT 连接到团队使用的服务。一个连接可以把内容同步到来源,也可以为智能体提供工具。",
|
||||
"subtitle": "将 DocsGPT 连接到团队使用的服务。一个连接可以把内容同步到知识库,也可以为智能体提供工具。",
|
||||
"search": "搜索连接器...",
|
||||
"addCustom": "添加自定义连接器",
|
||||
"addCustom": "添加自定义工具",
|
||||
"custom": {
|
||||
"custom_mcp": "MCP 服务器",
|
||||
"custom_openapi": "OpenAPI / REST"
|
||||
@@ -1095,8 +1095,8 @@
|
||||
"categories": {
|
||||
"all": "全部",
|
||||
"connected": "已连接",
|
||||
"files": "文件和文档",
|
||||
"knowledge": "知识库",
|
||||
"files": "文件与存储",
|
||||
"knowledge": "文档与 Wiki",
|
||||
"dev": "开发者工具",
|
||||
"messaging": "消息",
|
||||
"database": "数据库",
|
||||
@@ -1130,11 +1130,11 @@
|
||||
"custom": "自定义"
|
||||
},
|
||||
"descriptions": {
|
||||
"google_drive": "将文档、表格和 PDF 同步到来源。",
|
||||
"share_point": "将 SharePoint 站点和 OneDrive 中的文件同步到来源。",
|
||||
"confluence": "将 Confluence 空间和页面同步到来源。",
|
||||
"s3": "将 S3 存储桶中的文档同步到来源。",
|
||||
"reddit": "将符合搜索条件的 Reddit 帖子同步到来源。",
|
||||
"google_drive": "将文档、表格和 PDF 同步到知识库。",
|
||||
"share_point": "将 SharePoint 站点和 OneDrive 中的文件同步到知识库。",
|
||||
"confluence": "将 Confluence 空间和页面同步到知识库。",
|
||||
"s3": "将 S3 存储桶中的文档同步到知识库。",
|
||||
"reddit": "将符合你搜索条件的 Reddit 帖子同步到知识库。",
|
||||
"brave": "使用 Brave Search API 搜索网页和图片。",
|
||||
"telegram": "向 Telegram 聊天发送消息和图片。",
|
||||
"ntfy": "通过 ntfy 服务器发送推送通知。",
|
||||
@@ -1159,7 +1159,7 @@
|
||||
"accounts": "账号",
|
||||
"connectedAs": "已作为 {{account}} 连接",
|
||||
"connectAnother": "连接其他账号",
|
||||
"sources": "来自此连接的来源",
|
||||
"sources": "来自此连接的知识",
|
||||
"tools": "来自此连接的工具",
|
||||
"noAccounts": "尚未连接账号。",
|
||||
"failed": "无法加载此连接。",
|
||||
@@ -1268,17 +1268,22 @@
|
||||
},
|
||||
"createFailed": "无法添加连接器。请重试。",
|
||||
"capabilityFilter": {
|
||||
"sync": "正在显示将内容同步到来源的连接器。",
|
||||
"sync": "正在显示将内容同步到知识库的连接器。",
|
||||
"tools": "正在显示为智能体提供工具的连接器。",
|
||||
"showAll": "显示全部"
|
||||
},
|
||||
"capabilityPlain": {
|
||||
"sync": "同步到知识库",
|
||||
"read": "查找信息",
|
||||
"write": "执行操作"
|
||||
}
|
||||
}
|
||||
},
|
||||
"modals": {
|
||||
"uploadDoc": {
|
||||
"label": "添加来源",
|
||||
"label": "添加知识",
|
||||
"select": "选择如何将文档上传到 DocsGPT",
|
||||
"selectSource": "添加来源",
|
||||
"selectSource": "添加知识",
|
||||
"selectedFiles": "已选择的文件",
|
||||
"noFilesSelected": "未选择文件",
|
||||
"file": "从设备上传",
|
||||
@@ -1293,7 +1298,7 @@
|
||||
"filesRejected": "未添加(超过 25 MB 或不支持的类型):{{files}}",
|
||||
"uploadedFiles": "已上传文件",
|
||||
"cancel": "取消",
|
||||
"train": "添加来源",
|
||||
"train": "添加到知识库",
|
||||
"create": "创建",
|
||||
"link": "链接",
|
||||
"urlLink": "URL 链接",
|
||||
@@ -1642,16 +1647,17 @@
|
||||
},
|
||||
"sources": {
|
||||
"title": "来源",
|
||||
"text": "来源文本",
|
||||
"text": "选择知识",
|
||||
"link": "来源链接",
|
||||
"view_more": "还有{{count}}个来源",
|
||||
"noSourcesAvailable": "没有可用的来源",
|
||||
"noSourcesAvailable": "还没有知识",
|
||||
"selectedCount": "已选择 {{count}} 个来源",
|
||||
"groupOwn": "我的来源",
|
||||
"groupTeam": "团队共享",
|
||||
"connectMore": "连接更多",
|
||||
"fromConnector": "来自 {{name}}",
|
||||
"fromConnectorTitle": "来自 {{name}}:{{title}}"
|
||||
"fromConnectorTitle": "来自 {{name}}:{{title}}",
|
||||
"knowledge": "知识库"
|
||||
},
|
||||
"attachments": {
|
||||
"attach": "附件",
|
||||
@@ -1875,7 +1881,7 @@
|
||||
"placeholders": {
|
||||
"agentName": "代理名称",
|
||||
"describeAgent": "描述您的代理",
|
||||
"selectSources": "选择来源",
|
||||
"selectSources": "选择知识",
|
||||
"chunksPerQuery": "每次查询的块数",
|
||||
"selectType": "选择类型",
|
||||
"selectTools": "选择工具",
|
||||
@@ -1885,19 +1891,19 @@
|
||||
"enterRequestLimit": "输入请求限制"
|
||||
},
|
||||
"sourcePopup": {
|
||||
"title": "选择来源",
|
||||
"searchPlaceholder": "搜索来源...",
|
||||
"noOptionsMessage": "没有可用的来源",
|
||||
"title": "选择知识",
|
||||
"searchPlaceholder": "搜索知识...",
|
||||
"noOptionsMessage": "还没有知识",
|
||||
"groupOwn": "我的来源",
|
||||
"groupTeam": "团队共享",
|
||||
"noSourceHint": "可选。未选择来源时,智能体仅根据模型和工具作答。"
|
||||
"noSourceHint": "可选。没有知识时,智能体只用模型和它的工具回答。"
|
||||
},
|
||||
"toolsPopup": {
|
||||
"title": "选择工具",
|
||||
"searchPlaceholder": "搜索工具...",
|
||||
"noOptionsMessage": "没有可用的工具",
|
||||
"groupBuiltin": "内置",
|
||||
"groupDefault": "默认",
|
||||
"groupDefault": "内置",
|
||||
"groupCustom": "自定义",
|
||||
"groupConnection": "{{name}} · {{account}}"
|
||||
},
|
||||
@@ -1919,7 +1925,7 @@
|
||||
"defaultModel": "默认模型",
|
||||
"name": "名称",
|
||||
"description": "描述",
|
||||
"sources": "来源",
|
||||
"sources": "知识库",
|
||||
"avatar": "头像"
|
||||
},
|
||||
"advanced": {
|
||||
@@ -2297,7 +2303,7 @@
|
||||
"outputVariable": "输出变量",
|
||||
"outputVariablePlaceholder": "输出的变量名",
|
||||
"streamToUser": "将输出流式传输给用户",
|
||||
"sources": "来源",
|
||||
"sources": "知识库",
|
||||
"documents": "文档",
|
||||
"documentsHint": "从上传或上游节点传给此智能体的文档。",
|
||||
"filePassing": "文件传递",
|
||||
|
||||
@@ -114,7 +114,7 @@ export const SETTINGS_SECTION: Section = {
|
||||
items: [
|
||||
{
|
||||
key: 'sources',
|
||||
path: '/settings/sources',
|
||||
path: '/settings/knowledge',
|
||||
labelKey: 'settings.sources.label',
|
||||
icon: Database,
|
||||
},
|
||||
|
||||
@@ -168,8 +168,9 @@ describe('Connectors page', () => {
|
||||
'settings.connectors.status.disabledByAdmin',
|
||||
);
|
||||
expect(card('brave')!.disabled).toBe(true);
|
||||
expect(card('custom_mcp')!.textContent).toContain(
|
||||
'settings.connectors.publisher.custom',
|
||||
// No publisher jargon ("Preset", "Built in") on cards.
|
||||
expect(card('custom_mcp')!.textContent).not.toContain(
|
||||
'settings.connectors.publisher',
|
||||
);
|
||||
});
|
||||
|
||||
@@ -186,10 +187,10 @@ describe('Connectors page', () => {
|
||||
it('shows capability chips', async () => {
|
||||
await render();
|
||||
expect(card('google_drive')!.textContent).toContain(
|
||||
'settings.connectors.capability.sync',
|
||||
'settings.connectors.capabilityPlain.sync',
|
||||
);
|
||||
expect(card('telegram')!.textContent).toContain(
|
||||
'settings.connectors.capability.write',
|
||||
'settings.connectors.capabilityPlain.write',
|
||||
);
|
||||
});
|
||||
|
||||
@@ -246,6 +247,75 @@ describe('Connectors page', () => {
|
||||
expect(pills).not.toContain('settings.connectors.categories.messaging');
|
||||
});
|
||||
|
||||
const ATLASSIAN = definition({
|
||||
key: 'mcp:atlassian',
|
||||
name: 'Jira & Confluence',
|
||||
description: 'Search and update Jira issues.',
|
||||
category: 'dev',
|
||||
auth_kind: 'mcp_oauth',
|
||||
capabilities: ['read', 'write'],
|
||||
publisher: 'preset',
|
||||
part_of: 'confluence',
|
||||
});
|
||||
|
||||
it('shows one Confluence card that also does what its MCP part does', async () => {
|
||||
service.getCatalog.mockResolvedValue({
|
||||
success: true,
|
||||
connectors: [...CATALOG, ATLASSIAN],
|
||||
});
|
||||
await render();
|
||||
expect(card('mcp:atlassian')).toBeNull();
|
||||
const confluence = card('confluence')!;
|
||||
expect(confluence.textContent).toContain(
|
||||
'settings.connectors.capabilityPlain.sync',
|
||||
);
|
||||
expect(confluence.textContent).toContain(
|
||||
'settings.connectors.capabilityPlain.write',
|
||||
);
|
||||
});
|
||||
|
||||
it("finds the merged card by its part's name", async () => {
|
||||
service.getCatalog.mockResolvedValue({
|
||||
success: true,
|
||||
connectors: [...CATALOG, ATLASSIAN],
|
||||
});
|
||||
await render();
|
||||
const input = container.querySelector<HTMLInputElement>(
|
||||
'#connector-search-input',
|
||||
)!;
|
||||
const setter = Object.getOwnPropertyDescriptor(
|
||||
HTMLInputElement.prototype,
|
||||
'value',
|
||||
)!.set!;
|
||||
await act(async () => {
|
||||
setter.call(input, 'jira');
|
||||
input.dispatchEvent(new Event('input', { bubbles: true }));
|
||||
});
|
||||
expect(card('confluence')).not.toBeNull();
|
||||
});
|
||||
|
||||
it('shows the part on its own when its parent is not listed', async () => {
|
||||
service.getCatalog.mockResolvedValue({
|
||||
success: true,
|
||||
connectors: [...CATALOG.filter((c) => c.key !== 'confluence'), ATLASSIAN],
|
||||
});
|
||||
await render();
|
||||
expect(card('mcp:atlassian')).not.toBeNull();
|
||||
});
|
||||
|
||||
it("opens the merged card's page with a section for its part", async () => {
|
||||
service.getCatalog.mockResolvedValue({
|
||||
success: true,
|
||||
connectors: [...CATALOG, ATLASSIAN],
|
||||
});
|
||||
await render();
|
||||
await act(async () => card('confluence')!.click());
|
||||
expect(document.body.textContent).toContain('Jira & Confluence');
|
||||
expect(document.body.textContent).toContain(
|
||||
'settings.connectors.descriptions.mcp_atlassian',
|
||||
);
|
||||
});
|
||||
|
||||
it('shows a retry when the catalog fails to load', async () => {
|
||||
service.getCatalog.mockResolvedValue({ success: false });
|
||||
await render();
|
||||
|
||||
@@ -90,6 +90,30 @@ export default function Connectors() {
|
||||
const custom = catalog.filter((c) => c.publisher === 'custom');
|
||||
const openConnector = catalog.find((c) => c.key === openKey) ?? null;
|
||||
|
||||
// One service offered two ways (Confluence sync and the Jira & Confluence
|
||||
// MCP actions) is one card. A part is shown on its own only when its
|
||||
// parent is not listed (not set up, or turned off).
|
||||
const partsOf = (key: string) => catalog.filter((c) => c.part_of === key);
|
||||
const isShownUnderParent = (connector: ConnectorDefinition) =>
|
||||
!!connector.part_of && catalog.some((c) => c.key === connector.part_of);
|
||||
const merged = (connector: ConnectorDefinition): ConnectorDefinition => {
|
||||
const parts = partsOf(connector.key);
|
||||
if (parts.length === 0) return connector;
|
||||
const all = [connector, ...parts];
|
||||
const state = all.some((c) => c.state === 'reconnect')
|
||||
? 'reconnect'
|
||||
: all.some((c) => c.state === 'connected')
|
||||
? 'connected'
|
||||
: connector.state;
|
||||
return {
|
||||
...connector,
|
||||
capabilities: Array.from(new Set(all.flatMap((c) => c.capabilities))),
|
||||
connection_count: all.reduce((n, c) => n + c.connection_count, 0),
|
||||
connected_count: all.reduce((n, c) => n + c.connected_count, 0),
|
||||
state,
|
||||
};
|
||||
};
|
||||
|
||||
// "Connect more" in the composer opens the connectors that can do what the
|
||||
// picker is for: sync content, or give tools.
|
||||
const capability = searchParams.get('capability');
|
||||
@@ -101,7 +125,10 @@ export default function Connectors() {
|
||||
// Only categories that have something in them once the composer's
|
||||
// capability filter applies (hidden connectors can empty one too), so no
|
||||
// pill leads to an empty page.
|
||||
const withCapability = catalog.filter((connector) =>
|
||||
const cards = catalog
|
||||
.filter((connector) => !isShownUnderParent(connector))
|
||||
.map(merged);
|
||||
const withCapability = cards.filter((connector) =>
|
||||
capability === 'sync'
|
||||
? connector.capabilities.includes('sync')
|
||||
: capability === 'tools'
|
||||
@@ -128,14 +155,21 @@ export default function Connectors() {
|
||||
.filter(
|
||||
(connector) =>
|
||||
!query ||
|
||||
connectorName(t, connector).toLowerCase().includes(query) ||
|
||||
connectorDescription(t, connector).toLowerCase().includes(query),
|
||||
[connector, ...partsOf(connector.key)].some(
|
||||
(c) =>
|
||||
connectorName(t, c).toLowerCase().includes(query) ||
|
||||
connectorDescription(t, c).toLowerCase().includes(query),
|
||||
),
|
||||
)
|
||||
.sort((a, b) => STATE_ORDER[a.state] - STATE_ORDER[b.state]);
|
||||
}, [withCapability, filter, search, t]);
|
||||
|
||||
const open = (connector: ConnectorDefinition) => {
|
||||
if (connector.state === 'available' || connector.state === 'custom') {
|
||||
const hasParts = partsOf(connector.key).length > 0;
|
||||
if (
|
||||
!hasParts &&
|
||||
(connector.state === 'available' || connector.state === 'custom')
|
||||
) {
|
||||
launch(connector);
|
||||
return;
|
||||
}
|
||||
@@ -283,6 +317,7 @@ export default function Connectors() {
|
||||
|
||||
<ConnectionDrawer
|
||||
connector={openConnector}
|
||||
parts={openConnector ? partsOf(openConnector.key) : []}
|
||||
onClose={closeDrawer}
|
||||
onConnect={(connector, options) => {
|
||||
closeDrawer();
|
||||
|
||||
@@ -76,8 +76,10 @@ export default function Settings() {
|
||||
<Routes>
|
||||
<Route index element={<General />} />
|
||||
<Route path="general" element={<General />} />
|
||||
{/* Sources are called Knowledge now; old links keep working. */}
|
||||
<Route path="sources" element={<SourcesRedirect />} />
|
||||
<Route
|
||||
path="sources"
|
||||
path="knowledge"
|
||||
element={
|
||||
<Sources
|
||||
paginatedDocuments={paginatedDocuments}
|
||||
@@ -100,3 +102,11 @@ export default function Settings() {
|
||||
</SectionShell>
|
||||
);
|
||||
}
|
||||
|
||||
/** `/settings/sources` from before the rename, query string kept. */
|
||||
function SourcesRedirect() {
|
||||
const { search, hash } = useLocation();
|
||||
return (
|
||||
<Navigate to={{ pathname: '/settings/knowledge', search, hash }} replace />
|
||||
);
|
||||
}
|
||||
@@ -114,3 +114,13 @@ class TestPresets:
|
||||
def test_base_url(self):
|
||||
assert catalog.base_url("https://a.example.com:8443/x/y") == "https://a.example.com:8443"
|
||||
assert catalog.base_url("not a url") == ""
|
||||
|
||||
|
||||
def test_atlassian_preset_is_part_of_confluence():
|
||||
"""One Confluence card: syncing pages and the Jira/Confluence agent actions."""
|
||||
from docsgpt.connectors import catalog
|
||||
|
||||
atlassian = catalog.get_definition("mcp:atlassian")
|
||||
assert atlassian.part_of == "confluence"
|
||||
assert atlassian.to_dict()["part_of"] == "confluence"
|
||||
assert catalog.get_definition("confluence").to_dict()["part_of"] is None
|
||||
Reference in new issue
Block a user