V4.8.16 dev (#3431)
* feat: add feishu & yuque dataset (#3379) * feat: add feishu & yuque dataset * fix ts * fix ts * move type position * fix * fix: merge interface * fix * feat: dingtalk sso support (#3408) * fix: optional sso state * feat: dingtalk bot * feat: dingtalk sso login * chore: move i18n to user namespace * feat: dingtalk bot integration (#3415) * feat: dingtalk bot integration * docs: config dingtalk bot * feat:sear XNG服务 (#3413) * feat:sear XNG服务 * 补充了courseUrl * 添加了官方文档 * 错误时返回情况修正了一下 * Tracks (#3420) * feat: node intro * feat: add domain track * dingding sso login * perf: api dataset code and add doc * feat: tracks * feat: searXNG plugins * fix: ts * feat: delete node tracks (#3423) * fix: dingtalk bot GET verification (#3424) * 4.8.16 test: fix: plugin inputs render;fix: ui offset (#3426) * fix: ui offset * perf: dingding talk * fix: plugin inputs render * feat: menu all folder (#3429) * fix: recall code --------- Co-authored-by: heheer <heheer@sealos.io> Co-authored-by: a.e. <49438478+I-Info@users.noreply.github.com> Co-authored-by: Jiangween <145003935+Jiangween@users.noreply.github.com>
@@ -12,7 +12,8 @@ export enum DatasetErrEnum {
|
||||
unLinkCollection = 'unLinkCollection',
|
||||
invalidVectorModelOrQAModel = 'invalidVectorModelOrQAModel',
|
||||
notSupportSync = 'notSupportSync',
|
||||
sameApiCollection = 'sameApiCollection'
|
||||
sameApiCollection = 'sameApiCollection',
|
||||
noApiServer = 'noApiServer'
|
||||
}
|
||||
const datasetErr = [
|
||||
{
|
||||
|
7
packages/global/common/middle/tracks/constants.ts
Normal file
@@ -0,0 +1,7 @@
|
||||
export enum TrackEnum {
|
||||
login = 'login',
|
||||
createApp = 'createApp',
|
||||
useAppTemplate = 'useAppTemplate',
|
||||
createDataset = 'createDataset',
|
||||
appNodes = 'appNodes'
|
||||
}
|
18
packages/global/common/middle/tracks/type.d.ts
vendored
Normal file
@@ -0,0 +1,18 @@
|
||||
import { TrackEnum } from './constants';
|
||||
import { OAuthEnum } from '../../../support/user/constant';
|
||||
import { AppTypeEnum } from '../../../core/app/constants';
|
||||
|
||||
export type PushTrackCommonType = {
|
||||
uid: string;
|
||||
teamId: string;
|
||||
tmbId: string;
|
||||
};
|
||||
|
||||
export type TrackSchemaType = {
|
||||
event: TrackEnum;
|
||||
createTime: Date;
|
||||
uid?: string;
|
||||
teamId?: string;
|
||||
tmbId?: string;
|
||||
data: Record<string, any>;
|
||||
};
|
@@ -63,6 +63,7 @@ export type FastGPTFeConfigsType = {
|
||||
github?: string;
|
||||
google?: string;
|
||||
wechat?: string;
|
||||
dingtalk?: string;
|
||||
microsoft?: {
|
||||
clientId?: string;
|
||||
tenantId?: string;
|
||||
|
2
packages/global/core/chat/type.d.ts
vendored
@@ -16,6 +16,7 @@ import { DatasetSearchModeEnum } from '../dataset/constants';
|
||||
import { DispatchNodeResponseType } from '../workflow/runtime/type.d';
|
||||
import { ChatBoxInputType } from '../../../../projects/app/src/components/core/chat/ChatContainer/ChatBox/type';
|
||||
import { WorkflowInteractiveResponseType } from '../workflow/template/system/interactive/type';
|
||||
import { FlowNodeInputItemType } from '../workflow/type/io';
|
||||
|
||||
export type ChatSchema = {
|
||||
_id: string;
|
||||
@@ -35,6 +36,7 @@ export type ChatSchema = {
|
||||
variableList?: VariableItemType[];
|
||||
welcomeText?: string;
|
||||
variables: Record<string, any>;
|
||||
pluginInputs?: FlowNodeInputItemType[];
|
||||
metadata?: Record<string, any>;
|
||||
};
|
||||
|
||||
|
2
packages/global/core/dataset/api.d.ts
vendored
@@ -17,6 +17,8 @@ export type DatasetUpdateBody = {
|
||||
externalReadUrl?: DatasetSchemaType['externalReadUrl'];
|
||||
defaultPermission?: DatasetSchemaType['defaultPermission'];
|
||||
apiServer?: DatasetSchemaType['apiServer'];
|
||||
yuqueServer?: DatasetSchemaType['yuqueServer'];
|
||||
feishuServer?: DatasetSchemaType['feishuServer'];
|
||||
|
||||
// sync schedule
|
||||
autoSync?: boolean;
|
||||
|
11
packages/global/core/dataset/apiDataset.d.ts
vendored
@@ -22,3 +22,14 @@ export type APIFileContentResponse = {
|
||||
export type APIFileReadResponse = {
|
||||
url: string;
|
||||
};
|
||||
|
||||
export type FeishuServer = {
|
||||
appId: string;
|
||||
appSecret: string;
|
||||
folderToken: string;
|
||||
};
|
||||
|
||||
export type YuqueServer = {
|
||||
userId: string;
|
||||
token: string;
|
||||
};
|
||||
|
@@ -6,7 +6,9 @@ export enum DatasetTypeEnum {
|
||||
dataset = 'dataset',
|
||||
websiteDataset = 'websiteDataset', // depp link
|
||||
externalFile = 'externalFile',
|
||||
apiDataset = 'apiDataset'
|
||||
apiDataset = 'apiDataset',
|
||||
feishu = 'feishu',
|
||||
yuque = 'yuque'
|
||||
}
|
||||
export const DatasetTypeMap = {
|
||||
[DatasetTypeEnum.folder]: {
|
||||
@@ -33,6 +35,16 @@ export const DatasetTypeMap = {
|
||||
icon: 'core/dataset/externalDatasetOutline',
|
||||
label: 'api_file',
|
||||
collectionLabel: 'common.File'
|
||||
},
|
||||
[DatasetTypeEnum.feishu]: {
|
||||
icon: 'core/dataset/feishuDatasetOutline',
|
||||
label: 'feishu_dataset',
|
||||
collectionLabel: 'common.File'
|
||||
},
|
||||
[DatasetTypeEnum.yuque]: {
|
||||
icon: 'core/dataset/yuqueDatasetOutline',
|
||||
label: 'yuque_dataset',
|
||||
collectionLabel: 'common.File'
|
||||
}
|
||||
};
|
||||
|
||||
|
4
packages/global/core/dataset/type.d.ts
vendored
@@ -10,7 +10,7 @@ import {
|
||||
} from './constants';
|
||||
import { DatasetPermission } from '../../support/permission/dataset/controller';
|
||||
import { Permission } from '../../support/permission/controller';
|
||||
import { APIFileServer } from './apiDataset';
|
||||
import { APIFileServer, FeishuServer, YuqueServer } from './apiDataset';
|
||||
|
||||
export type DatasetSchemaType = {
|
||||
_id: string;
|
||||
@@ -33,6 +33,8 @@ export type DatasetSchemaType = {
|
||||
};
|
||||
inheritPermission: boolean;
|
||||
apiServer?: APIFileServer;
|
||||
feishuServer?: FeishuServer;
|
||||
yuqueServer?: YuqueServer;
|
||||
|
||||
autoSync?: boolean;
|
||||
|
||||
|
@@ -3,6 +3,7 @@ export enum PublishChannelEnum {
|
||||
iframe = 'iframe',
|
||||
apikey = 'apikey',
|
||||
feishu = 'feishu',
|
||||
dingtalk = 'dingtalk',
|
||||
wecom = 'wecom',
|
||||
officialAccount = 'official_account'
|
||||
}
|
||||
|
12
packages/global/support/outLink/type.d.ts
vendored
@@ -14,6 +14,11 @@ export interface FeishuAppType {
|
||||
verificationToken?: string;
|
||||
}
|
||||
|
||||
export interface DingtalkAppType {
|
||||
clientId: string;
|
||||
clientSecret: string;
|
||||
}
|
||||
|
||||
export interface WecomAppType {
|
||||
AgentId: string;
|
||||
CorpId: string;
|
||||
@@ -36,7 +41,12 @@ export interface OffiAccountAppType {
|
||||
// because we can not reply anything in 15s. Thus, the wechat server will treat this request as a failed request.
|
||||
}
|
||||
|
||||
export type OutlinkAppType = FeishuAppType | WecomAppType | OffiAccountAppType | undefined;
|
||||
export type OutlinkAppType =
|
||||
| FeishuAppType
|
||||
| WecomAppType
|
||||
| OffiAccountAppType
|
||||
| DingtalkAppType
|
||||
| undefined;
|
||||
|
||||
export type OutLinkSchema<T extends OutlinkAppType = undefined> = {
|
||||
_id: string;
|
||||
|
4
packages/global/support/user/api.d.ts
vendored
@@ -1,4 +1,5 @@
|
||||
import { OAuthEnum } from './constant';
|
||||
import { TrackRegisterParams } from './login/api';
|
||||
|
||||
export type PostLoginProps = {
|
||||
username: string;
|
||||
@@ -9,8 +10,7 @@ export type OauthLoginProps = {
|
||||
type: `${OAuthEnum}`;
|
||||
code: string;
|
||||
callbackUrl: string;
|
||||
inviterId?: string;
|
||||
};
|
||||
} & TrackRegisterParams;
|
||||
|
||||
export type WxLoginProps = {
|
||||
inviterId?: string;
|
||||
|
@@ -16,5 +16,6 @@ export enum OAuthEnum {
|
||||
google = 'google',
|
||||
wechat = 'wechat',
|
||||
microsoft = 'microsoft',
|
||||
dingtalk = 'dingtalk',
|
||||
sso = 'sso'
|
||||
}
|
||||
|
14
packages/global/support/user/login/api.d.ts
vendored
@@ -2,3 +2,17 @@ export type GetWXLoginQRResponse = {
|
||||
code: string;
|
||||
codeUrl: string;
|
||||
};
|
||||
|
||||
export type TrackRegisterParams = {
|
||||
inviterId?: string;
|
||||
bd_vid?: string;
|
||||
fastgpt_sem?: {
|
||||
keyword: string;
|
||||
};
|
||||
sourceDomain?: string;
|
||||
};
|
||||
export type AccountRegisterBody = {
|
||||
username: string;
|
||||
code: string;
|
||||
password: string;
|
||||
} & TrackRegisterParams;
|
||||
|
@@ -12,6 +12,7 @@ export type CreateTeamProps = {
|
||||
avatar?: string;
|
||||
defaultTeam?: boolean;
|
||||
lafAccount?: LafAccountType;
|
||||
memberName?: string;
|
||||
};
|
||||
export type UpdateTeamProps = {
|
||||
name?: string;
|
||||
|
@@ -9,6 +9,7 @@ export enum UsageSourceEnum {
|
||||
share = 'share',
|
||||
wecom = 'wecom',
|
||||
feishu = 'feishu',
|
||||
dingtalk = 'dingtalk',
|
||||
official_account = 'official_account'
|
||||
}
|
||||
|
||||
@@ -39,5 +40,8 @@ export const UsageSourceMap = {
|
||||
},
|
||||
[UsageSourceEnum.wecom]: {
|
||||
label: i18nT('user:usage.wecom')
|
||||
},
|
||||
[UsageSourceEnum.dingtalk]: {
|
||||
label: i18nT('user:usage.dingtalk')
|
||||
}
|
||||
};
|
||||
|
@@ -37,6 +37,8 @@ export const getUsageSourceByPublishChannel = (publishchannel: PublishChannelEnu
|
||||
return UsageSourceEnum.wecom;
|
||||
case PublishChannelEnum.officialAccount:
|
||||
return UsageSourceEnum.official_account;
|
||||
case PublishChannelEnum.dingtalk:
|
||||
return UsageSourceEnum.dingtalk;
|
||||
default:
|
||||
return UsageSourceEnum.fastgpt;
|
||||
}
|
||||
|
@@ -3,6 +3,7 @@
|
||||
"version": "1.0.0",
|
||||
"type": "module",
|
||||
"dependencies": {
|
||||
"cheerio": "1.0.0-rc.12",
|
||||
"@types/pg": "^8.6.6",
|
||||
"axios": "^1.5.1",
|
||||
"duck-duck-scrape": "^2.2.5",
|
||||
|
@@ -27,7 +27,8 @@ const packagePluginList = [
|
||||
'wiki',
|
||||
'databaseConnection',
|
||||
'Doc2X',
|
||||
'Doc2X/PDF2text'
|
||||
'Doc2X/PDF2text',
|
||||
'searchXNG'
|
||||
];
|
||||
|
||||
export const list = [...staticPluginList, ...packagePluginList];
|
||||
|
66
packages/plugins/src/searchXNG/index.ts
Normal file
@@ -0,0 +1,66 @@
|
||||
import { delay } from '@fastgpt/global/common/system/utils';
|
||||
import * as cheerio from 'cheerio';
|
||||
import { i18nT } from '../../../web/i18n/utils';
|
||||
|
||||
type Props = {
|
||||
query: string;
|
||||
url: string;
|
||||
};
|
||||
|
||||
interface SearchResult {
|
||||
title: string;
|
||||
link: string;
|
||||
snippet: string;
|
||||
}
|
||||
|
||||
type Response = Promise<{
|
||||
result: string;
|
||||
error?: Record<string, any>;
|
||||
}>;
|
||||
|
||||
const main = async (props: Props, retry = 3): Response => {
|
||||
const { query, url } = props;
|
||||
|
||||
if (!query) {
|
||||
return Promise.reject(i18nT('chat:not_query'));
|
||||
}
|
||||
|
||||
if (!url) {
|
||||
return Promise.reject('Can not find url');
|
||||
}
|
||||
|
||||
try {
|
||||
const response = await fetch(`${url}?q=${encodeURIComponent(query)}&language=auto`);
|
||||
const html = await response.text();
|
||||
const $ = cheerio.load(html, {
|
||||
xml: false,
|
||||
decodeEntities: true
|
||||
});
|
||||
|
||||
const results: SearchResult[] = [];
|
||||
|
||||
$('.result').each((_: number, element: cheerio.Element) => {
|
||||
const $element = $(element);
|
||||
results.push({
|
||||
title: $element.find('h3').text().trim(),
|
||||
link: $element.find('a').first().attr('href') || '',
|
||||
snippet: $element.find('.content').text().trim()
|
||||
});
|
||||
});
|
||||
|
||||
return {
|
||||
result: JSON.stringify(results.slice(0, 10))
|
||||
};
|
||||
} catch (error) {
|
||||
console.log(error);
|
||||
if (retry <= 0) {
|
||||
console.log('Search XNG error', { error });
|
||||
return Promise.reject('Failed to fetch data from Search XNG');
|
||||
}
|
||||
|
||||
await delay(Math.random() * 2000);
|
||||
return main(props, retry - 1);
|
||||
}
|
||||
};
|
||||
|
||||
export default main;
|
414
packages/plugins/src/searchXNG/template.json
Normal file
@@ -0,0 +1,414 @@
|
||||
{
|
||||
"author": "",
|
||||
"version": "4816",
|
||||
"name": "Search XNG 搜索",
|
||||
"avatar": "core/workflow/template/searxng",
|
||||
"intro": "使用 Search XNG 服务进行搜索。",
|
||||
"courseUrl": "/docs/guide/plugins/searxng_plugin_guide/",
|
||||
"showStatus": true,
|
||||
"weight": 10,
|
||||
|
||||
"isTool": true,
|
||||
"templateType": "search",
|
||||
|
||||
"workflow": {
|
||||
"nodes": [
|
||||
{
|
||||
"nodeId": "pluginInput",
|
||||
"name": "插件开始",
|
||||
"intro": "可以配置插件需要哪些输入,利用这些输入来运行插件",
|
||||
"avatar": "core/workflow/template/workflowStart",
|
||||
"flowNodeType": "pluginInput",
|
||||
"showStatus": false,
|
||||
"position": {
|
||||
"x": 482.8986144681427,
|
||||
"y": -77.56127656499825
|
||||
},
|
||||
"version": "481",
|
||||
"inputs": [
|
||||
{
|
||||
"renderTypeList": ["input", "reference"],
|
||||
"selectedTypeIndex": 0,
|
||||
"valueType": "string",
|
||||
"canEdit": true,
|
||||
"key": "query",
|
||||
"label": "query",
|
||||
"description": "检索词",
|
||||
"required": true,
|
||||
"toolDescription": "检索词"
|
||||
},
|
||||
{
|
||||
"renderTypeList": ["input", "reference"],
|
||||
"selectedTypeIndex": 0,
|
||||
"valueType": "string",
|
||||
"canEdit": true,
|
||||
"key": "url",
|
||||
"label": "url",
|
||||
"description": "部署的searXNG服务的链接",
|
||||
"defaultValue": "",
|
||||
"list": [
|
||||
{
|
||||
"label": "",
|
||||
"value": ""
|
||||
}
|
||||
],
|
||||
"maxFiles": 5,
|
||||
"canSelectFile": true,
|
||||
"canSelectImg": true,
|
||||
"required": true,
|
||||
"toolDescription": "部署的searXNG服务的链接"
|
||||
}
|
||||
],
|
||||
"outputs": [
|
||||
{
|
||||
"id": "query",
|
||||
"valueType": "string",
|
||||
"key": "query",
|
||||
"label": "query",
|
||||
"type": "hidden"
|
||||
},
|
||||
{
|
||||
"id": "url",
|
||||
"valueType": "string",
|
||||
"key": "url",
|
||||
"label": "url",
|
||||
"type": "hidden"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"nodeId": "pluginOutput",
|
||||
"name": "插件输出",
|
||||
"intro": "自定义配置外部输出,使用插件时,仅暴露自定义配置的输出",
|
||||
"avatar": "core/workflow/template/pluginOutput",
|
||||
"flowNodeType": "pluginOutput",
|
||||
"showStatus": false,
|
||||
"position": {
|
||||
"x": 1763.7518709731714,
|
||||
"y": -55.56127656499825
|
||||
},
|
||||
"version": "481",
|
||||
"inputs": [
|
||||
{
|
||||
"renderTypeList": ["reference"],
|
||||
"valueType": "string",
|
||||
"canEdit": true,
|
||||
"key": "result",
|
||||
"label": "result",
|
||||
"description": " 检索结果",
|
||||
"value": ["hjnVuJAOwyXV", "lEyy5QqyIBrK"]
|
||||
},
|
||||
{
|
||||
"renderTypeList": ["reference"],
|
||||
"valueType": "object",
|
||||
"canEdit": true,
|
||||
"key": "error",
|
||||
"label": "error",
|
||||
"isToolOutput": true,
|
||||
"description": "请求错误",
|
||||
"required": true,
|
||||
"value": ["hjnVuJAOwyXV", "error"]
|
||||
}
|
||||
],
|
||||
"outputs": []
|
||||
},
|
||||
{
|
||||
"nodeId": "hjnVuJAOwyXV",
|
||||
"name": "HTTP 请求",
|
||||
"intro": "可以发出一个 HTTP 请求,实现更为复杂的操作(联网搜索、数据库查询等)",
|
||||
"avatar": "core/workflow/template/httpRequest",
|
||||
"flowNodeType": "httpRequest468",
|
||||
"showStatus": true,
|
||||
"position": {
|
||||
"x": 1054.6774638324207,
|
||||
"y": -403.06127656499825
|
||||
},
|
||||
"version": "481",
|
||||
"inputs": [
|
||||
{
|
||||
"key": "system_addInputParam",
|
||||
"renderTypeList": ["addInputParam"],
|
||||
"valueType": "dynamic",
|
||||
"label": "",
|
||||
"required": false,
|
||||
"description": "common:core.module.input.description.HTTP Dynamic Input",
|
||||
"customInputConfig": {
|
||||
"selectValueTypeList": [
|
||||
"string",
|
||||
"number",
|
||||
"boolean",
|
||||
"object",
|
||||
"arrayString",
|
||||
"arrayNumber",
|
||||
"arrayBoolean",
|
||||
"arrayObject",
|
||||
"arrayAny",
|
||||
"any",
|
||||
"chatHistory",
|
||||
"datasetQuote",
|
||||
"dynamic",
|
||||
"selectApp",
|
||||
"selectDataset"
|
||||
],
|
||||
"showDescription": false,
|
||||
"showDefaultValue": true
|
||||
},
|
||||
"debugLabel": "",
|
||||
"toolDescription": ""
|
||||
},
|
||||
{
|
||||
"key": "system_httpMethod",
|
||||
"renderTypeList": ["custom"],
|
||||
"valueType": "string",
|
||||
"label": "",
|
||||
"value": "POST",
|
||||
"required": true,
|
||||
"debugLabel": "",
|
||||
"toolDescription": ""
|
||||
},
|
||||
{
|
||||
"key": "system_httpTimeout",
|
||||
"renderTypeList": ["custom"],
|
||||
"valueType": "number",
|
||||
"label": "",
|
||||
"value": 30,
|
||||
"min": 5,
|
||||
"max": 600,
|
||||
"required": true,
|
||||
"debugLabel": "",
|
||||
"toolDescription": ""
|
||||
},
|
||||
{
|
||||
"key": "system_httpReqUrl",
|
||||
"renderTypeList": ["hidden"],
|
||||
"valueType": "string",
|
||||
"label": "",
|
||||
"description": "common:core.module.input.description.Http Request Url",
|
||||
"placeholder": "https://api.ai.com/getInventory",
|
||||
"required": false,
|
||||
"value": "searchXNG",
|
||||
"debugLabel": "",
|
||||
"toolDescription": ""
|
||||
},
|
||||
{
|
||||
"key": "system_httpHeader",
|
||||
"renderTypeList": ["custom"],
|
||||
"valueType": "any",
|
||||
"value": [],
|
||||
"label": "",
|
||||
"description": "common:core.module.input.description.Http Request Header",
|
||||
"placeholder": "common:core.module.input.description.Http Request Header",
|
||||
"required": false,
|
||||
"debugLabel": "",
|
||||
"toolDescription": ""
|
||||
},
|
||||
{
|
||||
"key": "system_httpParams",
|
||||
"renderTypeList": ["hidden"],
|
||||
"valueType": "any",
|
||||
"value": [],
|
||||
"label": "",
|
||||
"required": false,
|
||||
"debugLabel": "",
|
||||
"toolDescription": ""
|
||||
},
|
||||
{
|
||||
"key": "system_httpJsonBody",
|
||||
"renderTypeList": ["hidden"],
|
||||
"valueType": "any",
|
||||
"value": "{\n \"query\": \"{{query}}\",\n \"url\": \"{{url}}\"\n}",
|
||||
"label": "",
|
||||
"required": false,
|
||||
"debugLabel": "",
|
||||
"toolDescription": ""
|
||||
},
|
||||
{
|
||||
"key": "system_httpFormBody",
|
||||
"renderTypeList": ["hidden"],
|
||||
"valueType": "any",
|
||||
"value": [],
|
||||
"label": "",
|
||||
"required": false,
|
||||
"debugLabel": "",
|
||||
"toolDescription": ""
|
||||
},
|
||||
{
|
||||
"key": "system_httpContentType",
|
||||
"renderTypeList": ["hidden"],
|
||||
"valueType": "string",
|
||||
"value": "json",
|
||||
"label": "",
|
||||
"required": false,
|
||||
"debugLabel": "",
|
||||
"toolDescription": ""
|
||||
},
|
||||
{
|
||||
"renderTypeList": ["reference"],
|
||||
"valueType": "string",
|
||||
"canEdit": true,
|
||||
"key": "query",
|
||||
"label": "query",
|
||||
"customInputConfig": {
|
||||
"selectValueTypeList": [
|
||||
"string",
|
||||
"number",
|
||||
"boolean",
|
||||
"object",
|
||||
"arrayString",
|
||||
"arrayNumber",
|
||||
"arrayBoolean",
|
||||
"arrayObject",
|
||||
"arrayAny",
|
||||
"any",
|
||||
"chatHistory",
|
||||
"datasetQuote",
|
||||
"dynamic",
|
||||
"selectApp",
|
||||
"selectDataset"
|
||||
],
|
||||
"showDescription": false,
|
||||
"showDefaultValue": true
|
||||
},
|
||||
"required": true,
|
||||
"value": ["pluginInput", "query"]
|
||||
},
|
||||
{
|
||||
"renderTypeList": ["reference"],
|
||||
"valueType": "string",
|
||||
"canEdit": true,
|
||||
"key": "url",
|
||||
"label": "url",
|
||||
"customInputConfig": {
|
||||
"selectValueTypeList": [
|
||||
"string",
|
||||
"number",
|
||||
"boolean",
|
||||
"object",
|
||||
"arrayString",
|
||||
"arrayNumber",
|
||||
"arrayBoolean",
|
||||
"arrayObject",
|
||||
"arrayAny",
|
||||
"any",
|
||||
"chatHistory",
|
||||
"datasetQuote",
|
||||
"dynamic",
|
||||
"selectApp",
|
||||
"selectDataset"
|
||||
],
|
||||
"showDescription": false,
|
||||
"showDefaultValue": true
|
||||
},
|
||||
"required": true,
|
||||
"value": ["pluginInput", "url"]
|
||||
}
|
||||
],
|
||||
"outputs": [
|
||||
{
|
||||
"id": "error",
|
||||
"key": "error",
|
||||
"label": "workflow:request_error",
|
||||
"description": "HTTP请求错误信息,成功时返回空",
|
||||
"valueType": "object",
|
||||
"type": "static"
|
||||
},
|
||||
{
|
||||
"id": "httpRawResponse",
|
||||
"key": "httpRawResponse",
|
||||
"required": true,
|
||||
"label": "workflow:raw_response",
|
||||
"description": "HTTP请求的原始响应。只能接受字符串或JSON类型响应数据。",
|
||||
"valueType": "any",
|
||||
"type": "static"
|
||||
},
|
||||
{
|
||||
"id": "system_addOutputParam",
|
||||
"key": "system_addOutputParam",
|
||||
"type": "dynamic",
|
||||
"valueType": "dynamic",
|
||||
"label": "",
|
||||
"customFieldConfig": {
|
||||
"selectValueTypeList": [
|
||||
"string",
|
||||
"number",
|
||||
"boolean",
|
||||
"object",
|
||||
"arrayString",
|
||||
"arrayNumber",
|
||||
"arrayBoolean",
|
||||
"arrayObject",
|
||||
"any",
|
||||
"chatHistory",
|
||||
"datasetQuote",
|
||||
"dynamic",
|
||||
"selectApp",
|
||||
"selectDataset"
|
||||
],
|
||||
"showDescription": false,
|
||||
"showDefaultValue": false
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "lEyy5QqyIBrK",
|
||||
"valueType": "string",
|
||||
"type": "dynamic",
|
||||
"key": "result",
|
||||
"label": "result"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"nodeId": "f1mRh1D85H2D",
|
||||
"name": "系统配置",
|
||||
"intro": "",
|
||||
"avatar": "core/workflow/template/systemConfig",
|
||||
"flowNodeType": "pluginConfig",
|
||||
"position": {
|
||||
"x": -28.511358745511643,
|
||||
"y": -103.56127656499825
|
||||
},
|
||||
"version": "4811",
|
||||
"inputs": [],
|
||||
"outputs": []
|
||||
}
|
||||
],
|
||||
"edges": [
|
||||
{
|
||||
"source": "pluginInput",
|
||||
"target": "hjnVuJAOwyXV",
|
||||
"sourceHandle": "pluginInput-source-right",
|
||||
"targetHandle": "hjnVuJAOwyXV-target-left"
|
||||
},
|
||||
{
|
||||
"source": "hjnVuJAOwyXV",
|
||||
"target": "pluginOutput",
|
||||
"sourceHandle": "hjnVuJAOwyXV-source-right",
|
||||
"targetHandle": "pluginOutput-target-left"
|
||||
}
|
||||
],
|
||||
"chatConfig": {
|
||||
"welcomeText": "",
|
||||
"variables": [],
|
||||
"questionGuide": false,
|
||||
"ttsConfig": {
|
||||
"type": "web"
|
||||
},
|
||||
"whisperConfig": {
|
||||
"open": false,
|
||||
"autoSend": false,
|
||||
"autoTTSResponse": false
|
||||
},
|
||||
"chatInputGuide": {
|
||||
"open": false,
|
||||
"textList": [],
|
||||
"customUrl": ""
|
||||
},
|
||||
"instruction": "",
|
||||
"autoExecute": {
|
||||
"open": false,
|
||||
"defaultPrompt": ""
|
||||
},
|
||||
"_id": "67611a5eed7efa452a6e50c5"
|
||||
}
|
||||
}
|
||||
}
|
20
packages/service/common/middle/tracks/schema.ts
Normal file
@@ -0,0 +1,20 @@
|
||||
import { TrackSchemaType } from '@fastgpt/global/common/middle/tracks/type';
|
||||
import { getMongoModel, Schema } from '../../mongo';
|
||||
import { TrackEnum } from '@fastgpt/global/common/middle/tracks/constants';
|
||||
|
||||
const TrackSchema = new Schema({
|
||||
event: { type: String, required: true, enum: Object.values(TrackEnum) },
|
||||
uid: String,
|
||||
teamId: String,
|
||||
tmbId: String,
|
||||
createTime: { type: Date, default: () => new Date() },
|
||||
data: Object
|
||||
});
|
||||
|
||||
try {
|
||||
TrackSchema.index({ event: 1 });
|
||||
} catch (error) {
|
||||
console.log(error);
|
||||
}
|
||||
|
||||
export const TrackModel = getMongoModel<TrackSchemaType>('track', TrackSchema);
|
62
packages/service/common/middle/tracks/utils.ts
Normal file
@@ -0,0 +1,62 @@
|
||||
import { PushTrackCommonType } from '@fastgpt/global/common/middle/tracks/type';
|
||||
import { TrackModel } from './schema';
|
||||
import { TrackEnum } from '@fastgpt/global/common/middle/tracks/constants';
|
||||
import { addLog } from '../../system/log';
|
||||
import { OAuthEnum } from '@fastgpt/global/support/user/constant';
|
||||
import { AppTypeEnum } from '@fastgpt/global/core/app/constants';
|
||||
import { DatasetTypeEnum } from '@fastgpt/global/core/dataset/constants';
|
||||
import { getAppLatestVersion } from '../../../core/app/version/controller';
|
||||
|
||||
const createTrack = ({ event, data }: { event: TrackEnum; data: Record<string, any> }) => {
|
||||
if (!global.feConfigs?.isPlus) return;
|
||||
addLog.info('Push tracks', {
|
||||
event,
|
||||
...data
|
||||
});
|
||||
|
||||
const { uid, teamId, tmbId, ...props } = data;
|
||||
|
||||
return TrackModel.create({
|
||||
event,
|
||||
uid,
|
||||
teamId,
|
||||
tmbId,
|
||||
data: props
|
||||
});
|
||||
};
|
||||
export const pushTrack = {
|
||||
login: (data: PushTrackCommonType & { type: `${OAuthEnum}` | 'password' }) => {
|
||||
return createTrack({
|
||||
event: TrackEnum.login,
|
||||
data
|
||||
});
|
||||
},
|
||||
createApp: (data: PushTrackCommonType & { type: AppTypeEnum }) => {
|
||||
return createTrack({
|
||||
event: TrackEnum.createApp,
|
||||
data
|
||||
});
|
||||
},
|
||||
createDataset: (data: PushTrackCommonType & { type: DatasetTypeEnum }) => {
|
||||
return createTrack({
|
||||
event: TrackEnum.createDataset,
|
||||
data
|
||||
});
|
||||
},
|
||||
countAppNodes: async (data: PushTrackCommonType & { appId: string }) => {
|
||||
try {
|
||||
const { nodes } = await getAppLatestVersion(data.appId);
|
||||
const nodeTypeList = nodes.map((node) => ({
|
||||
type: node.flowNodeType,
|
||||
pluginId: node.pluginId
|
||||
}));
|
||||
return createTrack({
|
||||
event: TrackEnum.appNodes,
|
||||
data: {
|
||||
...data,
|
||||
nodeTypeList
|
||||
}
|
||||
});
|
||||
} catch (error) {}
|
||||
}
|
||||
};
|
@@ -72,6 +72,7 @@ const ChatSchema = new Schema({
|
||||
type: Object,
|
||||
default: {}
|
||||
},
|
||||
pluginInputs: Array,
|
||||
metadata: {
|
||||
//For special storage
|
||||
type: Object,
|
||||
|
@@ -10,6 +10,7 @@ import { getAppChatConfig, getGuideModule } from '@fastgpt/global/core/workflow/
|
||||
import { AppChatConfigType } from '@fastgpt/global/core/app/type';
|
||||
import { mergeChatResponseData } from '@fastgpt/global/core/chat/utils';
|
||||
import { pushChatLog } from './pushChatLog';
|
||||
import { FlowNodeTypeEnum } from '@fastgpt/global/core/workflow/node/constant';
|
||||
|
||||
type Props = {
|
||||
chatId: string;
|
||||
@@ -62,6 +63,9 @@ export async function saveChat({
|
||||
systemConfigNode: getGuideModule(nodes),
|
||||
isPublicFetch: false
|
||||
});
|
||||
const pluginInputs = nodes?.find(
|
||||
(node) => node.flowNodeType === FlowNodeTypeEnum.pluginInput
|
||||
)?.inputs;
|
||||
|
||||
await mongoSessionRun(async (session) => {
|
||||
const [{ _id: chatItemIdHuman }, { _id: chatItemIdAi }] = await MongoChatItem.insertMany(
|
||||
@@ -89,6 +93,7 @@ export async function saveChat({
|
||||
variableList,
|
||||
welcomeText,
|
||||
variables: variables || {},
|
||||
pluginInputs,
|
||||
title: newTitle,
|
||||
source,
|
||||
shareId,
|
||||
|
@@ -7,8 +7,9 @@ import { TextSplitProps, splitText2Chunks } from '@fastgpt/global/common/string/
|
||||
import axios from 'axios';
|
||||
import { readRawContentByFileBuffer } from '../../common/file/read/utils';
|
||||
import { parseFileExtensionFromUrl } from '@fastgpt/global/common/string/tools';
|
||||
import { APIFileServer } from '@fastgpt/global/core/dataset/apiDataset';
|
||||
import { APIFileServer, FeishuServer, YuqueServer } from '@fastgpt/global/core/dataset/apiDataset';
|
||||
import { useApiDatasetRequest } from './apiDataset/api';
|
||||
import { POST } from '../../common/api/plusRequest';
|
||||
|
||||
export const readFileRawTextByUrl = async ({
|
||||
teamId,
|
||||
@@ -53,7 +54,9 @@ export const readDatasetSourceRawText = async ({
|
||||
isQAImport,
|
||||
selector,
|
||||
externalFileId,
|
||||
apiServer
|
||||
apiServer,
|
||||
feishuServer,
|
||||
yuqueServer
|
||||
}: {
|
||||
teamId: string;
|
||||
type: DatasetSourceReadTypeEnum;
|
||||
@@ -63,6 +66,8 @@ export const readDatasetSourceRawText = async ({
|
||||
selector?: string; // link selector
|
||||
externalFileId?: string; // external file dataset
|
||||
apiServer?: APIFileServer; // api dataset
|
||||
feishuServer?: FeishuServer; // feishu dataset
|
||||
yuqueServer?: YuqueServer; // yuque dataset
|
||||
}): Promise<string> => {
|
||||
if (type === DatasetSourceReadTypeEnum.fileLocal) {
|
||||
const { rawText } = await readFileContentFromMongo({
|
||||
@@ -88,28 +93,45 @@ export const readDatasetSourceRawText = async ({
|
||||
});
|
||||
return rawText;
|
||||
} else if (type === DatasetSourceReadTypeEnum.apiFile) {
|
||||
if (!apiServer) return Promise.reject('apiServer not found');
|
||||
const rawText = await readApiServerFileContent({
|
||||
apiServer,
|
||||
feishuServer,
|
||||
yuqueServer,
|
||||
apiFileId: sourceId,
|
||||
teamId
|
||||
});
|
||||
return rawText;
|
||||
}
|
||||
|
||||
return '';
|
||||
};
|
||||
|
||||
export const readApiServerFileContent = async ({
|
||||
apiServer,
|
||||
feishuServer,
|
||||
yuqueServer,
|
||||
apiFileId,
|
||||
teamId
|
||||
}: {
|
||||
apiServer: APIFileServer;
|
||||
apiServer?: APIFileServer;
|
||||
feishuServer?: FeishuServer;
|
||||
yuqueServer?: YuqueServer;
|
||||
apiFileId: string;
|
||||
teamId: string;
|
||||
}) => {
|
||||
return useApiDatasetRequest({ apiServer }).getFileContent({ teamId, apiFileId });
|
||||
if (apiServer) {
|
||||
return useApiDatasetRequest({ apiServer }).getFileContent({ teamId, apiFileId });
|
||||
}
|
||||
|
||||
if (feishuServer || yuqueServer) {
|
||||
return POST<string>(`/core/dataset/systemApiDataset`, {
|
||||
type: 'content',
|
||||
feishuServer,
|
||||
yuqueServer,
|
||||
apiFileId
|
||||
});
|
||||
}
|
||||
|
||||
return Promise.reject('No apiServer or feishuServer or yuqueServer');
|
||||
};
|
||||
|
||||
export const rawText2Chunks = ({
|
||||
|
@@ -90,6 +90,12 @@ const DatasetSchema = new Schema({
|
||||
apiServer: {
|
||||
type: Object
|
||||
},
|
||||
feishuServer: {
|
||||
type: Object
|
||||
},
|
||||
yuqueServer: {
|
||||
type: Object
|
||||
},
|
||||
|
||||
autoSync: Boolean,
|
||||
|
||||
|
@@ -42,8 +42,7 @@ import {
|
||||
filterWorkflowEdges,
|
||||
checkNodeRunStatus,
|
||||
textAdaptGptResponse,
|
||||
replaceEditorVariable,
|
||||
formatVariableValByType
|
||||
replaceEditorVariable
|
||||
} from '@fastgpt/global/core/workflow/runtime/utils';
|
||||
import { ChatNodeUsageType } from '@fastgpt/global/support/wallet/bill/type';
|
||||
import { dispatchRunTools } from './agent/runTool/index';
|
||||
|
@@ -172,7 +172,7 @@ export async function authDatasetCollection({
|
||||
collection: CollectionWithDatasetType;
|
||||
}
|
||||
> {
|
||||
const { teamId, tmbId, isRoot: isRootFromHeader } = await parseHeaderCert(props);
|
||||
const { teamId, tmbId, userId, isRoot: isRootFromHeader } = await parseHeaderCert(props);
|
||||
const collection = await getCollectionWithDataset(collectionId);
|
||||
|
||||
if (!collection) {
|
||||
@@ -187,6 +187,7 @@ export async function authDatasetCollection({
|
||||
});
|
||||
|
||||
return {
|
||||
userId,
|
||||
teamId,
|
||||
tmbId,
|
||||
collection,
|
||||
|
@@ -24,6 +24,7 @@ type authModeType = {
|
||||
export type AuthModeType = RequireAtLeastOne<authModeType, 'authApiKey' | 'authRoot' | 'authToken'>;
|
||||
|
||||
export type AuthResponseType<T extends Permission = Permission> = {
|
||||
userId: string;
|
||||
teamId: string;
|
||||
tmbId: string;
|
||||
authType?: `${AuthUserTypeEnum}`;
|
||||
|
@@ -49,11 +49,7 @@ const UserSchema = new Schema({
|
||||
type: String,
|
||||
default: defaultAvatars[Math.floor(Math.random() * defaultAvatars.length)]
|
||||
},
|
||||
inviterId: {
|
||||
// 谁邀请注册的
|
||||
type: Schema.Types.ObjectId,
|
||||
ref: userCollectionName
|
||||
},
|
||||
|
||||
promotionRate: {
|
||||
type: Number,
|
||||
default: 15
|
||||
@@ -71,9 +67,14 @@ const UserSchema = new Schema({
|
||||
lastLoginTmbId: {
|
||||
type: Schema.Types.ObjectId
|
||||
},
|
||||
fastgpt_sem: {
|
||||
type: Object
|
||||
}
|
||||
|
||||
inviterId: {
|
||||
// 谁邀请注册的
|
||||
type: Schema.Types.ObjectId,
|
||||
ref: userCollectionName
|
||||
},
|
||||
fastgpt_sem: Object,
|
||||
sourceDomain: String
|
||||
});
|
||||
|
||||
try {
|
||||
|
@@ -91,6 +91,7 @@ export const iconPaths = {
|
||||
'common/voiceLight': () => import('./icons/common/voiceLight.svg'),
|
||||
'common/warn': () => import('./icons/common/warn.svg'),
|
||||
'common/wechatFill': () => import('./icons/common/wechatFill.svg'),
|
||||
'common/dingtalkFill': () => import('./icons/common/dingtalkFill.svg'),
|
||||
configmap: () => import('./icons/configmap.svg'),
|
||||
copy: () => import('./icons/copy.svg'),
|
||||
'core/app/aiFill': () => import('./icons/core/app/aiFill.svg'),
|
||||
@@ -169,6 +170,9 @@ export const iconPaths = {
|
||||
import('./icons/core/dataset/externalDatasetColor.svg'),
|
||||
'core/dataset/externalDatasetOutline': () =>
|
||||
import('./icons/core/dataset/externalDatasetOutline.svg'),
|
||||
'core/dataset/feishuDatasetColor': () => import('./icons/core/dataset/feishuDatasetColor.svg'),
|
||||
'core/dataset/feishuDatasetOutline': () =>
|
||||
import('./icons/core/dataset/feishuDatasetOutline.svg'),
|
||||
'core/dataset/fileCollection': () => import('./icons/core/dataset/fileCollection.svg'),
|
||||
'core/dataset/fullTextRecall': () => import('./icons/core/dataset/fullTextRecall.svg'),
|
||||
'core/dataset/manualCollection': () => import('./icons/core/dataset/manualCollection.svg'),
|
||||
@@ -182,6 +186,8 @@ export const iconPaths = {
|
||||
'core/dataset/websiteDatasetColor': () => import('./icons/core/dataset/websiteDatasetColor.svg'),
|
||||
'core/dataset/websiteDatasetOutline': () =>
|
||||
import('./icons/core/dataset/websiteDatasetOutline.svg'),
|
||||
'core/dataset/yuqueDatasetColor': () => import('./icons/core/dataset/yuqueDatasetColor.svg'),
|
||||
'core/dataset/yuqueDatasetOutline': () => import('./icons/core/dataset/yuqueDatasetOutline.svg'),
|
||||
'core/modules/basicNode': () => import('./icons/core/modules/basicNode.svg'),
|
||||
'core/modules/fixview': () => import('./icons/core/modules/fixview.svg'),
|
||||
'core/modules/flowLight': () => import('./icons/core/modules/flowLight.svg'),
|
||||
@@ -250,6 +256,7 @@ export const iconPaths = {
|
||||
'core/workflow/template/formInput': () => import('./icons/core/workflow/template/formInput.svg'),
|
||||
'core/workflow/template/getTime': () => import('./icons/core/workflow/template/getTime.svg'),
|
||||
'core/workflow/template/google': () => import('./icons/core/workflow/template/google.svg'),
|
||||
'core/workflow/template/searxng': () => import('./icons/core/workflow/template/searxng.svg'),
|
||||
'core/workflow/template/httpRequest': () =>
|
||||
import('./icons/core/workflow/template/httpRequest.svg'),
|
||||
'core/workflow/template/ifelse': () => import('./icons/core/workflow/template/ifelse.svg'),
|
||||
|
@@ -0,0 +1 @@
|
||||
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1734408223570" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="1236" xmlns:xlink="http://www.w3.org/1999/xlink" width="64" height="64"><path d="M512.00341333 19.34222222C239.90613333 19.34222222 19.34222222 239.90613333 19.34222222 512.00341333 19.34222222 784.09386667 239.90613333 1004.65777778 512.00341333 1004.65777778 784.09386667 1004.65777778 1004.65777778 784.09386667 1004.65777778 512.00341333 1004.65777778 239.90613333 784.09386667 19.34222222 512.00341333 19.34222222z m227.64088889 426.68259556c-0.98645333 4.28259555-3.54645333 10.63480889-7.09290667 18.21809777h0.09898667l-0.39480889 0.73728c-20.68821333 44.21404445-74.67349333 130.96732445-74.67349333 130.96732445l-0.24462222-0.59164445-15.76504889 27.47392h76.00355556L572.37390222 815.78666667l32.99783111-131.26314667h-59.84483555l20.7872-86.80106667c-16.7936 4.03911111-36.69674667 9.59829333-60.23964445 17.18044445 0 0-31.82023111 18.61404445-91.71285333-35.84 0 0-40.39224889-35.60106667-16.94264889-44.46208 9.94872889-3.7888 48.31687111-8.61639111 78.51121778-12.65436445 40.88035555-5.51253333 65.95128889-8.46620445 65.95128889-8.46620444s-125.84618667 1.86936889-155.69464889-2.80803556c-29.85187555-4.67626667-67.72622222-54.50524445-75.80558222-98.27783111 0 0-12.46208-24.02645333 26.84586666-12.65436444 39.30680889 11.37777778 201.99537778 44.31644445 201.99537778 44.31644444s-211.55043555-64.84423111-225.6896-80.70144c-14.08682667-15.75367111-41.42193778-86.35960889-37.87548444-129.68504889 0 0 1.52803555-10.83278222 12.66005333-7.88024888 0 0 156.43306667 71.39555555 263.36711111 110.53738666 106.98296889 39.14296889 199.97582222 59.0336 187.96088889 109.69770667z" fill="#3AA2EB" p-id="1237"></path></svg>
|
After Width: | Height: | Size: 1.8 KiB |
After Width: | Height: | Size: 22 KiB |
@@ -0,0 +1 @@
|
||||
<svg t="1733810815616" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="8843" width="200" height="200"><path d="M816.512 399.317333c-42.965333 5.205333-105.6 32.341333-186.666667 127.658667L597.333333 499.328l32.512 27.648C559.36 609.834667 462.848 661.333333 362.666667 661.333333a42.666667 42.666667 0 1 1 0-85.333333c70.485333 0 144.64-36.650667 202.154666-104.32 89.6-105.344 170.154667-148.48 241.450667-157.098667 66.816-8.106667 117.845333 15.616 145.706667 28.586667l4.48 2.048a42.666667 42.666667 0 0 1 2.645333 76.245333c-41.045333 22.357333-55.552 64.853333-81.365333 141.226667-24.32 71.850667-56.576 161.706667-146.090667 237.824-107.946667 91.776-222.890667 117.162667-326.442667 116.821333-151.210667-0.469333-281.173333-74.88-347.008-129.066666A42.666667 42.666667 0 0 1 42.666667 755.328V362.666667a42.666667 42.666667 0 0 1 85.333333 0v371.882666c59.861333 44.458667 162.986667 97.109333 277.461333 97.450667 88.192 0.256 181.845333-20.778667 270.933334-96.512 70.485333-59.946667 96.853333-130.048 120.533333-200.149333l4.352-13.056c13.44-40.277333 28.288-84.906667 55.893333-122.026667a140.8 140.8 0 0 0-40.661333-0.938667z" p-id="8844"></path><path d="M120.490667 338.474667a42.666667 42.666667 0 1 0-70.314667 48.384l70.314667-48.384z m647.552 423.765333a42.666667 42.666667 0 1 0-42.752-73.813333L768 762.197333zM50.176 386.858667c61.696 89.685333 180.224 213.546667 310.058667 300.586666 65.024 43.562667 135.04 79.402667 204.032 96.170667 69.205333 16.853333 140.714667 15.146667 203.776-21.333333l-42.752-73.898667c-38.272 22.186667-85.461333 25.813333-140.885334 12.330667-55.68-13.568-116.352-43.733333-176.64-84.138667-120.832-80.981333-231.637333-197.12-287.274666-278.101333L50.176 386.858667z" p-id="8845"></path><path d="M208 132.864a42.666667 42.666667 0 0 1 39.338667-26.197333h341.333333a42.666667 42.666667 0 0 1 28.586667 10.965333c78.08 70.4 123.306667 180.906667 139.946666 231.68a42.666667 42.666667 0 1 1-81.066666 26.666667c-14.506667-44.16-50.048-128.256-104.576-183.978667H357.717333c25.045333 22.016 52.650667 46.506667 80.554667 73.344 63.36 61.013333 130.133333 135.978667 175.914667 227.584a42.666667 42.666667 0 0 1-76.373334 38.144c-39.509333-79.061333-98.432-146.218667-158.72-204.245333a2505.642667 2505.642667 0 0 0-87.893333-79.658667l-0.896-0.768c-27.050667-23.722667-52.906667-46.378667-73.344-67.114667a42.666667 42.666667 0 0 1-8.96-46.421333z" p-id="8846"></path></svg>
|
After Width: | Height: | Size: 2.4 KiB |
@@ -0,0 +1,14 @@
|
||||
<svg viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<rect width="32" height="32" fill="url(#paint0_linear_15107_494)"/>
|
||||
<path d="M9.26643 19.4365C9.26399 19.439 9.26154 19.4439 9.25909 19.4463C9.35449 19.3387 9.45478 19.2262 9.55263 19.1161C9.36917 19.3216 9.26643 19.4365 9.26643 19.4365Z" fill="#1590E9"/>
|
||||
<path d="M25.5403 10.9779L26.1665 10.6086C26.4209 10.4594 26.3891 10.0827 26.1152 9.97504L25.8143 9.85763C25.374 9.68395 24.9777 9.41244 24.672 9.05041C24.2879 8.59789 23.5786 7.94722 22.4485 7.56319C21.1594 7.12289 18.953 7.21095 17.7226 7.30635C17.3337 7.3357 17.1111 7.75643 17.297 8.10133C18.339 10.024 17.7055 10.8972 17.1576 11.543C16.3186 12.5312 14.7751 14.2875 13.2267 16.034C13.7624 15.4347 14.2492 14.8892 14.6479 14.4416C15.5382 13.4436 16.8812 12.9373 18.1972 13.177C22.3922 13.9426 22.8692 19.3754 17.9721 22.6091C18.6105 22.5749 19.2588 22.5284 19.9094 22.4624C26.0883 21.8264 26.5775 16.785 25.2419 14.2948C24.7674 13.4118 24.6989 12.815 24.7502 12.2426C24.7992 11.7167 25.0878 11.2446 25.5403 10.9779Z" fill="#99C236"/>
|
||||
<path d="M8.8775 20.9189C9.56975 20.1459 11.4019 18.0936 13.2291 16.0316C11.8935 17.5286 10.2498 19.3754 8.8775 20.9189Z" fill="#1590E9"/>
|
||||
<path d="M8.96316 22.2422C8.48617 22.1811 8.27336 21.616 8.58401 21.2491C7.31938 22.6752 6.34094 23.7808 6.15993 24.0034C5.57042 24.725 12.2189 26.3981 17.9648 22.614C17.9672 22.6116 17.9721 22.6091 17.9746 22.6067C14.1464 22.8073 10.673 22.4624 8.96316 22.2422Z" fill="#CAC134"/>
|
||||
<path d="M18.1996 13.1745C16.8836 12.9348 15.5407 13.4411 14.6503 14.4391C14.2516 14.8843 13.7648 15.4298 13.2291 16.0316C11.4019 18.0936 9.56975 20.1459 8.87751 20.9189C8.77722 21.0314 8.67937 21.1415 8.58397 21.2491C8.27332 21.6136 8.48613 22.1786 8.96312 22.2422C10.6729 22.4623 14.1464 22.8072 17.9721 22.6091C22.8692 19.3729 22.3946 13.9401 18.1996 13.1745Z" fill="#029F40"/>
|
||||
<defs>
|
||||
<linearGradient id="paint0_linear_15107_494" x1="16" y1="0" x2="4.88889" y2="29.3333" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#F2FFD2"/>
|
||||
<stop offset="1" stop-color="#C6F6D9"/>
|
||||
</linearGradient>
|
||||
</defs>
|
||||
</svg>
|
After Width: | Height: | Size: 2.0 KiB |
@@ -0,0 +1 @@
|
||||
<svg t="1733816460969" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="13871" width="200" height="200"><path d="M903.542857 350.4c-11.314286-45.028571 11.314286-116.8 83.885714-142.171429l-77.6-4.114285s-29.371429-102.857143-164.114285-112c-134.628571-9.257143-222.742857-3.428571-222.857143-3.428572 0.114286 0 99.885714 63.542857 59.885714 176.8-29.257143 60-75.2 109.257143-124.342857 165.371429-1.485714 1.485714-2.857143 2.971429-4 4.228571C291.885714 618.285714 36.571429 909.714286 36.571429 909.714286c281.028571 73.6 469.371429-7.2 580.8-104.114286 23.428571-0.228571 41.028571-0.342857 52.914285-0.342857 155.2 0 286.4-134.4 281.028572-283.885714-3.657143-102.742857-36.457143-125.942857-47.771429-170.971429z m-233.257143 381.714286c-12.114286 0-29.942857 0.114286-53.485714 0.342857l-26.971429 0.228571-20.342857 17.714286c-53.828571 46.857143-119.314286 81.714286-195.885714 100.114286-60 14.4-125.714286 18.514286-197.371429 10.971428 20.571429-23.428571 41.714286-47.542857 63.314286-72.114285 105.142857-119.542857 198.628571-225.714286 270.742857-306.857143l1.6-1.6 1.485715-1.714286c4.685714-5.257143 23.542857-26.628571 28.228571-32.114286 11.085714-12.685714 19.771429-22.742857 28-32.685714 35.085714-41.942857 59.657143-77.485714 78.857143-116.8l1.828571-3.771429 1.371429-3.885714c15.657143-44.342857 17.6-87.885714 7.085714-128.914286 25.714286 0.8 53.142857 2.171429 81.942857 4.114286 38.057143 2.628571 63.428571 14.742857 81.257143 33.371429 6.628571 6.857143 11.657143 14.285714 15.314286 21.371428 1.142857 2.285714 1.942857 4.114286 2.628571 5.714286l5.714286 20.228571c-17.942857 39.428571-22.742857 83.771429-13.028571 122.514286 3.428571 13.485714 7.885714 25.6 14.057142 39.314286 2.4 5.371429 10.857143 22.971429 12.571429 26.628571 11.771429 25.942857 17.6 49.142857 19.085714 89.942857 3.771429 108.114286-94.514286 207.885714-208 207.885715z" p-id="13872"></path></svg>
|
After Width: | Height: | Size: 1.9 KiB |
@@ -0,0 +1,96 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
sodipodi:docname="searxng.svg"
|
||||
inkscape:version="1.0 (4035a4fb49, 2020-05-01)"
|
||||
id="svg8"
|
||||
version="1.1"
|
||||
viewBox="0 0 225.86871 38.709602"
|
||||
height="38.709602mm"
|
||||
width="225.86871mm">
|
||||
<defs
|
||||
id="defs2" />
|
||||
<sodipodi:namedview
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:window-y="2149"
|
||||
inkscape:window-x="-7"
|
||||
inkscape:window-height="1346"
|
||||
inkscape:window-width="2560"
|
||||
fit-margin-bottom="0"
|
||||
fit-margin-right="0"
|
||||
fit-margin-left="0"
|
||||
fit-margin-top="0"
|
||||
showgrid="false"
|
||||
inkscape:document-rotation="0"
|
||||
inkscape:current-layer="layer1"
|
||||
inkscape:document-units="mm"
|
||||
inkscape:cy="235.27775"
|
||||
inkscape:cx="1236.8338"
|
||||
inkscape:zoom="0.7"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:pageopacity="0.0"
|
||||
borderopacity="1.0"
|
||||
bordercolor="#666666"
|
||||
pagecolor="#ffffff"
|
||||
id="base" />
|
||||
<metadata
|
||||
id="metadata5">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title></dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
transform="translate(-4.020089,-7.482607)"
|
||||
id="layer1"
|
||||
inkscape:groupmode="layer"
|
||||
inkscape:label="Layer 1">
|
||||
<g
|
||||
inkscape:export-ydpi="96"
|
||||
inkscape:export-xdpi="96"
|
||||
transform="translate(-25.702381,-86.178571)"
|
||||
style="font-style:normal;font-weight:normal;font-size:50.8px;line-height:1.25;font-family:sans-serif;fill:#487cff;fill-opacity:1;stroke:none;stroke-width:0.264583"
|
||||
id="text884"
|
||||
aria-label="SearXNG">
|
||||
<path
|
||||
id="path886"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:50.8px;font-family:'Libre Franklin';-inkscape-font-specification:'Libre Franklin';fill:#487cff;fill-opacity:1;stroke-width:0.264583"
|
||||
d="m 56.494069,102.70358 q -1.1684,-1.2192 -3.047999,-2.032 -1.8796,-0.812802 -4.4196,-0.812802 -3.1496,0 -5.08,1.320802 -1.9304,1.27 -1.9304,3.4544 0,2.3368 3.7084,3.6068 l 7.6708,2.6416 q 3.962399,1.3208 5.841999,3.4036 1.8796,2.0828 1.8796,5.1308 0,4.064 -2.1844,7.0104 -2.1844,2.8956 -5.943599,4.4196 -3.7592,1.524 -8.4836,1.524 -5.334,0 -9.0424,-1.778 -3.7084,-1.8288 -5.5372,-5.1308 -0.2032,-0.3556 -0.2032,-0.7112 0,-0.3556 0.4064,-0.6096 l 4.0132,-2.4384 q 0.3556,-0.254 0.762,-0.254 0.6096,0 1.1176,0.6604 1.3208,1.6256 2.3876,2.54 1.1176,0.8636 2.6924,1.3208 1.6256,0.4572 4.1656,0.4572 3.2004,0 5.1816,-1.1684 1.9812,-1.2192 1.9812,-3.7592 0,-1.27 -0.9144,-2.0828 -0.9144,-0.8636 -2.9464,-1.5748 l -7.4168,-2.4892 q -3.6576,-1.2192 -5.588,-3.556 -1.8796,-2.3876 -1.8796,-5.4356 0,-3.7592 2.1336,-6.654802 2.1336,-2.8956 5.6896,-4.4704 3.6068,-1.5748 7.874,-1.5748 4.3688,0 7.670799,1.5748 3.3528,1.524 5.1816,3.9624 0.4064,0.508 0.4064,0.762 0,0.254002 -0.3556,0.457202 l -4.5212,2.9972 q -0.0508,0.0508 -0.2032,0.0508 -0.3048,0 -1.0668,-0.762 z" />
|
||||
<path
|
||||
id="path888"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:50.8px;font-family:'Libre Franklin';-inkscape-font-specification:'Libre Franklin';fill:#487cff;fill-opacity:1;stroke-width:0.264583"
|
||||
d="m 77.003775,132.37078 q -3.6068,0 -6.4008,-1.4732 -2.794,-1.4732 -4.318,-4.1148 -1.524,-2.6924 -1.524,-6.1976 0,-4.1656 1.9812,-7.874 2.032,-3.7592 5.5372,-5.9944 3.556,-2.286 7.9248,-2.286 5.334,0 8.4836,3.1496 3.1496,3.1496 3.1496,8.6868 0,1.4732 -0.2032,2.8448 -0.1016,0.4064 -0.3556,0.6096 -0.2032,0.1524 -0.8128,0.1524 h -17.1196 q -0.8128,0 -0.8128,2.1844 0,2.3876 1.524,3.7084 1.5748,1.27 4.064,1.27 1.9304,0 3.6068,-0.8128 1.6764,-0.8128 3.302,-2.54 0.254,-0.254 0.508,-0.254 0.1524,0 0.6604,0.2032 l 3.3528,1.5748 q 0.6096,0.2032 0.6096,0.6604 0,0.254 -0.254,0.6604 -2.9464,3.302 -5.8928,4.572 -2.8956,1.27 -7.0104,1.27 z m 6.4516,-16.5608 q 1.2192,0 1.2192,-1.9812 0,-1.9304 -1.1684,-3.2512 -1.1684,-1.3716 -3.2512,-1.3716 -2.54,0 -4.5212,1.9304 -1.9304,1.8796 -2.2352,4.6736 z" />
|
||||
<path
|
||||
id="path890"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:50.8px;font-family:'Libre Franklin';-inkscape-font-specification:'Libre Franklin';fill:#487cff;fill-opacity:1;stroke-width:0.264583"
|
||||
d="m 109.411,129.37358 q -3.048,2.9972 -8.3312,2.9972 -3.555996,0 -5.587996,-1.8288 -2.032,-1.8288 -2.032,-4.7752 0,-3.6068 2.3876,-5.8928 2.3876,-2.3368 5.994396,-3.3528 3.6576,-1.0668 7.5692,-1.1684 l 1.8288,-0.1524 q 0.9652,0 1.1176,-0.9652 l 0.1524,-1.0668 q 0.0508,-0.254 0.0508,-0.8128 0,-3.048 -3.5052,-3.048 -4.0132,0 -5.9436,3.1496 -0.254,0.3556 -0.6604,0.3556 -0.3048,0 -0.4572,-0.0508 l -4.927596,-1.1684 q -0.508,-0.1016 -0.508,-0.6604 0,-0.508 0.254,-1.016 3.352796,-5.4864 12.649196,-5.4864 5.4864,0 8.0264,1.9304 2.5908,1.9304 2.5908,5.334 0,0.4572 -0.1016,1.4732 l -2.54,17.78 q -0.0508,0.6604 -0.2032,0.8128 -0.1524,0.1016 -0.7112,0.1016 h -5.2324 q -0.508,0 -0.6604,-0.3048 -0.1524,-0.3048 -0.2032,-1.016 l 0.0508,-1.3208 q 0,-0.4064 -0.254,-0.4064 -0.254,0 -0.8128,0.5588 z m 2.1844,-9.7536 v -0.3048 q 0,-0.2032 -0.1016,-0.254 -0.1016,-0.1016 -0.4064,-0.0508 l -1.8288,0.1524 q -2.9464,0.2032 -5.4864,1.4732 -2.54,1.27 -2.54,3.9116 0,1.2192 0.8636,1.9812 0.9144,0.7112 2.4384,0.7112 1.3208,0 2.4892,-0.3556 1.1684,-0.4064 2.032,-1.0668 1.8796,-1.4224 2.0828,-2.8956 z" />
|
||||
<path
|
||||
id="path892"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:50.8px;font-family:'Libre Franklin';-inkscape-font-specification:'Libre Franklin';fill:#487cff;fill-opacity:1;stroke-width:0.264583"
|
||||
d="m 123.8636,131.86278 q -0.6096,0 -0.9144,-0.3556 -0.254,-0.3556 -0.1524,-0.9144 l 3.5052,-24.9428 q 0.0508,-0.4572 0.1524,-0.5588 0.1524,-0.1524 0.5588,-0.1524 h 6.0452 q 0.9144,0 0.7112,1.0668 l -0.3556,2.286 v 0.2032 q 0,0.3556 0.2032,0.3556 0.1524,0 0.4572,-0.3048 1.778,-1.8796 3.9624,-2.9972 2.1844,-1.1176 3.9624,-1.1176 1.0668,0 1.5748,0.1524 0.508,0.1524 0.4572,0.6096 l -0.8128,5.6896 q -0.0508,0.5588 -0.2032,0.7112 -0.1016,0.1524 -0.4064,0.1016 -1.7272,-0.254 -3.4544,-0.254 -1.3208,0 -2.794,0.7112 -1.4732,0.6604 -2.54,1.778 -1.016,1.0668 -1.1684,2.1336 l -2.0828,14.8336 q -0.1016,0.6604 -0.3556,0.8128 -0.2032,0.1524 -0.9652,0.1524 z" />
|
||||
<path
|
||||
id="path894"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:50.8px;font-family:'Libre Franklin';-inkscape-font-specification:'Libre Franklin';fill:#487cff;fill-opacity:1;stroke-width:0.264583"
|
||||
d="m 176.48129,130.08478 q 0.4572,0.8128 0.4572,1.2192 0,0.3048 -0.254,0.4572 -0.254,0.1016 -0.762,0.1016 h -7.0612 q -0.6096,0 -0.9652,-0.1524 -0.3048,-0.1524 -0.508,-0.6096 l -5.6388,-11.7348 q -0.254,-0.508 -0.508,-0.508 -0.1524,0 -0.5588,0.5588 l -9.0424,11.8364 q -0.254,0.4064 -0.6096,0.508 -0.3048,0.1016 -1.0668,0.1016 h -5.9436 q -1.016,0 -1.016,-0.6604 0,-0.4572 0.762,-1.524 l 13.0048,-16.3068 q 0.5588,-0.6096 0.5588,-1.0668 0,-0.3556 -0.1016,-0.5588 l -8.4836,-16.560802 q -0.1524,-0.254 -0.1524,-0.508 0,-0.508 0.762,-0.508 h 7.4168 q 0.6604,0 0.9144,0.1524 0.254,0.1524 0.508,0.6604 l 4.9276,10.363202 q 0.1524,0.4064 0.3556,0.4064 0.2032,0 0.508,-0.4064 l 8.0264,-10.566402 q 0.3048,-0.4064 0.5588,-0.508 0.3048,-0.1016 0.9652,-0.1016 h 6.5532 q 0.6096,0 0.6096,0.5588 0,0.4064 -0.3048,0.9144 l -12.5984,15.646402 q -0.508,0.6604 -0.508,0.9144 0,0.2032 0.1524,0.508 z" />
|
||||
<path
|
||||
id="path896"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:50.8px;font-family:'Libre Franklin';-inkscape-font-specification:'Libre Franklin';fill:#487cff;fill-opacity:1;stroke-width:0.264583"
|
||||
d="m 218.11268,94.169178 q 0.3556,0 0.4572,0.2032 0.1016,0.1524 0.0508,0.5588 l -5.1308,36.372802 q -0.0508,0.3556 -0.254,0.4572 -0.1524,0.1016 -0.5588,0.1016 h -5.1816 q -0.6604,0 -1.1684,-0.8128 l -13.1064,-22.7076 q -0.1524,-0.254 -0.3048,-0.254 -0.3048,0 -0.3556,0.5588 l -3.1496,22.4028 q -0.1016,0.508 -0.3048,0.6604 -0.1524,0.1524 -0.7112,0.1524 h -5.588 q -0.8128,0 -0.7112,-1.1176 l 5.08,-35.814002 q 0.1016,-0.508 0.2032,-0.6096 0.1524,-0.1524 0.6604,-0.1524 h 6.1468 q 0.508,0 0.762,0.254 0.3048,0.2032 0.5588,0.7112 l 11.9888,21.183602 q 0.254,0.4064 0.508,0.4064 0.4064,0 0.4572,-0.6096 l 2.9464,-21.285202 q 0.0508,-0.4064 0.2032,-0.508 0.2032,-0.1524 0.6604,-0.1524 z" />
|
||||
<path
|
||||
id="path898"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:50.8px;font-family:'Libre Franklin';-inkscape-font-specification:'Libre Franklin';fill:#487cff;fill-opacity:1;stroke-width:0.264583"
|
||||
d="m 236.43958,132.37078 q -4.572,0 -7.9248,-1.9304 -3.3528,-1.9304 -5.1308,-5.4356 -1.7272,-3.556 -1.7272,-8.3312 0,-6.2992 2.4892,-11.5316 2.4892,-5.283202 7.0612,-8.382002 4.572,-3.0988 10.5156,-3.0988 4.064,0 7.1628,1.5748 3.1496,1.5748 4.8768,4.1656 1.7272,2.540002 1.8288,5.435602 0,0.508 -0.1016,0.762 -0.0508,0.2032 -0.254,0.254 l -6.9596,1.016 h -0.0508 q -0.2032,0 -0.3556,-0.254 -0.1016,-0.254 -0.254,-1.016 -0.3556,-2.54 -1.9304,-4.1148 -1.524,-1.574802 -4.318,-1.574802 -3.6068,0 -5.9944,2.641602 -2.3368,2.6416 -3.4544,6.8072 -1.1176,4.1148 -1.1176,8.5852 0,4.3688 1.6256,6.2992 1.6764,1.8796 4.8768,1.8796 3.0988,0 5.2324,-1.7272 2.1336,-1.7272 3.1496,-4.2164 l 0.3048,-1.4224 q 0.1524,-0.254 0.1524,-0.3556 0,-0.3048 -0.6096,-0.3048 h -6.2484 q -0.3048,0 -0.4064,-0.1016 -0.1016,-0.1524 -0.0508,-0.5588 l 0.4572,-4.1656 q 0.0508,-0.5588 0.508,-0.5588 l 14.5288,0.0508 q 0.6096,0 0.762,0.2032 0.2032,0.1524 0.1016,0.6604 l -2.4892,17.5768 q -0.0508,0.6604 -0.8128,0.6604 h -1.524 q -0.4572,0 -0.7112,-0.1524 -0.2032,-0.1524 -0.3556,-0.6096 l -0.8636,-3.7084 q -0.0508,-0.254 -0.3556,-0.254 -0.3048,0 -0.6604,0.4064 -1.6764,2.0828 -4.3688,3.4544 -2.6924,1.3716 -6.604,1.3716 z" />
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 10 KiB |
@@ -1 +1 @@
|
||||
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1734061835557" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="4251" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M512.003 79C272.855 79 79 272.855 79 512.003 79 751.145 272.855 945 512.003 945 751.145 945 945 751.145 945 512.003 945 272.855 751.145 79 512.003 79z m200.075 375.014c-0.867 3.764-3.117 9.347-6.234 16.012h0.087l-0.347 0.648c-18.183 38.86-65.631 115.108-65.631 115.108l-0.215-0.52-13.856 24.147h66.8L565.063 779l29.002-115.368h-52.598l18.27-76.29c-14.76 3.55-32.253 8.436-52.945 15.1 0 0-27.967 16.36-80.607-31.5 0 0-35.501-31.29-14.891-39.078 8.744-3.33 42.466-7.573 69.004-11.122 35.93-4.845 57.965-7.441 57.965-7.441s-110.607 1.643-136.841-2.468c-26.237-4.11-59.525-47.905-66.626-86.377 0 0-10.953-21.117 23.595-11.122 34.547 10 177.535 38.95 177.535 38.95s-185.933-56.992-198.36-70.929c-12.381-13.846-36.406-75.902-33.289-113.981 0 0 1.343-9.521 11.127-6.926 0 0 137.49 62.75 231.475 97.152 94.028 34.403 175.76 51.885 165.2 96.414z" fill="#3AA2EB" p-id="4252"></path></svg>
|
||||
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1734061835557" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="4251" xmlns:xlink="http://www.w3.org/1999/xlink" ><path d="M512.003 79C272.855 79 79 272.855 79 512.003 79 751.145 272.855 945 512.003 945 751.145 945 945 751.145 945 512.003 945 272.855 751.145 79 512.003 79z m200.075 375.014c-0.867 3.764-3.117 9.347-6.234 16.012h0.087l-0.347 0.648c-18.183 38.86-65.631 115.108-65.631 115.108l-0.215-0.52-13.856 24.147h66.8L565.063 779l29.002-115.368h-52.598l18.27-76.29c-14.76 3.55-32.253 8.436-52.945 15.1 0 0-27.967 16.36-80.607-31.5 0 0-35.501-31.29-14.891-39.078 8.744-3.33 42.466-7.573 69.004-11.122 35.93-4.845 57.965-7.441 57.965-7.441s-110.607 1.643-136.841-2.468c-26.237-4.11-59.525-47.905-66.626-86.377 0 0-10.953-21.117 23.595-11.122 34.547 10 177.535 38.95 177.535 38.95s-185.933-56.992-198.36-70.929c-12.381-13.846-36.406-75.902-33.289-113.981 0 0 1.343-9.521 11.127-6.926 0 0 137.49 62.75 231.475 97.152 94.028 34.403 175.76 51.885 165.2 96.414z" fill="#3AA2EB" p-id="4252"></path></svg>
|
Before Width: | Height: | Size: 1.2 KiB After Width: | Height: | Size: 1.2 KiB |
@@ -50,6 +50,8 @@ const MyModal = ({
|
||||
autoFocus={false}
|
||||
isCentered={isPc ? isCentered : true}
|
||||
blockScrollOnMount={false}
|
||||
allowPinchZoom
|
||||
scrollBehavior={'inside'}
|
||||
closeOnOverlayClick={closeOnOverlayClick}
|
||||
>
|
||||
<ModalOverlay />
|
||||
|
@@ -82,6 +82,7 @@
|
||||
"month.unit": "Day",
|
||||
"move.hint": "After moving, the selected application/folder will inherit the permission settings of the new folder, and the original permission settings will become invalid.",
|
||||
"move_app": "Move Application",
|
||||
"node_not_intro": "This node is not introduced",
|
||||
"not_json_file": "Please select a JSON file",
|
||||
"open_auto_execute": "Enable automatic execution",
|
||||
"open_vision_function_tip": "Models with icon switches have image recognition capabilities. \nAfter being turned on, the model will parse the pictures in the file link and automatically parse the pictures in the user's question (user question ≤ 500 words).",
|
||||
|
@@ -33,6 +33,7 @@
|
||||
"multiple_AI_conversations": "Multiple AI Conversations",
|
||||
"new_input_guide_lexicon": "New Lexicon",
|
||||
"no_workflow_response": "No workflow data",
|
||||
"not_query": "Missing query content",
|
||||
"not_select_file": "No file selected",
|
||||
"plugins_output": "Plugin Output",
|
||||
"question_tip": "From top to bottom, the response order of each module",
|
||||
|
@@ -841,7 +841,6 @@
|
||||
"dataset.Create Folder": "Create Folder",
|
||||
"dataset.Create manual collection": "Create Manual Dataset",
|
||||
"dataset.Delete Dataset Error": "Delete Dataset Error",
|
||||
"dataset.Edit API Service": "Edit API Service",
|
||||
"dataset.Edit Folder": "Edit Folder",
|
||||
"dataset.Edit Info": "Edit Information",
|
||||
"dataset.Export": "Export",
|
||||
|
@@ -25,6 +25,7 @@
|
||||
"dataset.Unsupported operation": "dataset.Unsupported operation",
|
||||
"dataset.no_collections": "No datasets available",
|
||||
"dataset.no_tags": "No tags available",
|
||||
"edit_dataset_config": "Edit knowledge base configuration",
|
||||
"error.collectionNotFound": "Collection not found~",
|
||||
"external_file": "External File Library",
|
||||
"external_file_dataset_desc": "Import files from an external file library to build a Dataset. The files will not be stored again.",
|
||||
@@ -32,6 +33,9 @@
|
||||
"external_read_url": "External Preview URL",
|
||||
"external_read_url_tip": "Configure the reading URL of your file library for user authentication. Use the {{fileId}} variable to refer to the external file ID.",
|
||||
"external_url": "File Access URL",
|
||||
"feishu_dataset": "Feishu Dataset",
|
||||
"feishu_dataset_config": "Feishu Dataset Config",
|
||||
"feishu_dataset_desc": "Can build a dataset using Feishu documents by configuring permissions, without secondary storage",
|
||||
"file_model_function_tip": "Enhances indexing and QA generation",
|
||||
"filename": "Filename",
|
||||
"folder_dataset": "Folder",
|
||||
@@ -69,5 +73,8 @@
|
||||
"training_mode": "Chunk mode",
|
||||
"vector_model_max_tokens_tip": "Each chunk of data has a maximum length of 3000 tokens",
|
||||
"website_dataset": "Website Sync",
|
||||
"website_dataset_desc": "Website sync allows you to build a Dataset directly using a web link."
|
||||
"website_dataset_desc": "Website sync allows you to build a Dataset directly using a web link.",
|
||||
"yuque_dataset": "Yuque Dataset",
|
||||
"yuque_dataset_config": "Yuque Dataset Config",
|
||||
"yuque_dataset_desc": "Can build a dataset using Yuque documents by configuring permissions, without secondary storage"
|
||||
}
|
||||
|
@@ -35,5 +35,11 @@
|
||||
"wecom.bot_desc": "Connect to WeCom Bot directly via API",
|
||||
"wecom.create_modal_title": "Create WeCom Bot",
|
||||
"wecom.edit_modal_title": "Edit WeCom Bot",
|
||||
"wecom.title": "Publish to WeCom Bot"
|
||||
}
|
||||
"wecom.title": "Publish to WeCom Bot",
|
||||
"dingtalk.bot": "DingTalk Bot",
|
||||
"dingtalk.bot_desc": "Connect to DingTalk Bot directly via API",
|
||||
"dingtalk.create_modal_title": "Create DingTalk Bot",
|
||||
"dingtalk.edit_modal_title": "Edit DingTalk Bot",
|
||||
"dingtalk.title": "Publish to DingTalk Bot",
|
||||
"dingtalk.api": "DingTalk API"
|
||||
}
|
||||
|
@@ -26,6 +26,7 @@
|
||||
"login.error": "Login Error",
|
||||
"login.password_condition": "Password can be up to 60 characters",
|
||||
"login.success": "Login Successful",
|
||||
"login.Dingtalk": "DingTalk Login",
|
||||
"manage_team": "Manage team",
|
||||
"name": "Name",
|
||||
"notification.Bind Notification Pipe Hint": "Please bind a notification receiving account to ensure you receive notifications such as plan expiration reminders, ensuring your service runs smoothly.",
|
||||
@@ -114,6 +115,7 @@
|
||||
"team.no_collaborators": "No Collaborators",
|
||||
"team.write_role_member": "",
|
||||
"usage.feishu": "Feishu",
|
||||
"usage.dingtalk": "DingTalk",
|
||||
"usage.official_account": "Official Account",
|
||||
"usage.share": "Share Link",
|
||||
"usage.wecom": "WeCom"
|
||||
|
@@ -57,6 +57,7 @@
|
||||
"field_required": "Required",
|
||||
"field_used_as_tool_input": "Used as Tool Call Parameter",
|
||||
"filter_description": "Currently supports filtering by tags and creation time. Fill in the format as follows:\n{\n \"tags\": {\n \"$and\": [\"Tag 1\",\"Tag 2\"],\n \"$or\": [\"When there are $and tags, and is effective, or is not effective\"]\n },\n \"createTime\": {\n \"$gte\": \"YYYY-MM-DD HH:mm format, collection creation time greater than this time\",\n \"$lte\": \"YYYY-MM-DD HH:mm format, collection creation time less than this time, can be used with $gte\"\n }\n}",
|
||||
"foldAll": "Collapse all",
|
||||
"form_input_result": "User complete input result",
|
||||
"form_input_result_tip": "an object containing the complete result",
|
||||
"full_field_extraction": "Full Field Extraction",
|
||||
@@ -179,6 +180,7 @@
|
||||
"tool_params.params_name_placeholder": "name/age/sql",
|
||||
"tool_params.tool_params_result": "Parameter configuration results",
|
||||
"trigger_after_application_completion": "Will be triggered after the application is fully completed",
|
||||
"unFoldAll": "Expand all",
|
||||
"update_link_error": "Error updating link",
|
||||
"update_specified_node_output_or_global_variable": "Can update the output value of a specified node or update global variables",
|
||||
"use_user_id": "User ID",
|
||||
|
@@ -82,6 +82,7 @@
|
||||
"month.unit": "号",
|
||||
"move.hint": "移动后,所选应用/文件夹将继承新文件夹的权限设置,原先的权限设置失效。",
|
||||
"move_app": "移动应用",
|
||||
"node_not_intro": "这个节点没有介绍",
|
||||
"not_json_file": "请选择JSON文件",
|
||||
"open_auto_execute": "启用自动执行",
|
||||
"open_vision_function_tip": "有图示开关的模型即拥有图片识别能力。若开启,模型会解析文件链接里的图片,并自动解析用户问题中的图片(用户问题≤500字时生效)。",
|
||||
|
@@ -33,6 +33,7 @@
|
||||
"multiple_AI_conversations": "多组 AI 对话",
|
||||
"new_input_guide_lexicon": "新词库",
|
||||
"no_workflow_response": "没有运行数据",
|
||||
"not_query": "缺少查询内容",
|
||||
"not_select_file": "未选择文件",
|
||||
"plugins_output": "插件输出",
|
||||
"question_tip": "从上到下,为各个模块的响应顺序",
|
||||
|
@@ -840,7 +840,6 @@
|
||||
"dataset.Create Folder": "创建文件夹",
|
||||
"dataset.Create manual collection": "创建手动数据集",
|
||||
"dataset.Delete Dataset Error": "删除知识库异常",
|
||||
"dataset.Edit API Service": "编辑 API 文件接口",
|
||||
"dataset.Edit Folder": "编辑文件夹",
|
||||
"dataset.Edit Info": "编辑信息",
|
||||
"dataset.Export": "导出",
|
||||
|
@@ -25,6 +25,7 @@
|
||||
"dataset.Unsupported operation": "操作不支持",
|
||||
"dataset.no_collections": "暂无数据集",
|
||||
"dataset.no_tags": "暂无标签",
|
||||
"edit_dataset_config": "编辑知识库配置",
|
||||
"error.collectionNotFound": "集合找不到了~",
|
||||
"external_file": "外部文件库",
|
||||
"external_file_dataset_desc": "可以从外部文件库导入文件构建知识库,文件不会进行二次存储",
|
||||
@@ -32,6 +33,9 @@
|
||||
"external_read_url": "外部预览地址",
|
||||
"external_read_url_tip": "可以配置你文件库的阅读地址。便于对用户进行阅读鉴权操作。目前可以使用 {{fileId}} 变量来指代外部文件 ID。",
|
||||
"external_url": "文件访问 URL",
|
||||
"feishu_dataset": "飞书知识库",
|
||||
"feishu_dataset_config": "配置飞书知识库",
|
||||
"feishu_dataset_desc": "可通过配置飞书文档权限,使用飞书文档构建知识库,文档不会进行二次存储",
|
||||
"file_model_function_tip": "用于增强索引和 QA 生成",
|
||||
"filename": "文件名",
|
||||
"folder_dataset": "文件夹",
|
||||
@@ -69,5 +73,8 @@
|
||||
"training_mode": "处理方式",
|
||||
"vector_model_max_tokens_tip": "每个分块数据,最大长度为 3000 tokens",
|
||||
"website_dataset": "Web 站点同步",
|
||||
"website_dataset_desc": "Web 站点同步允许你直接使用一个网页链接构建知识库"
|
||||
"website_dataset_desc": "Web 站点同步允许你直接使用一个网页链接构建知识库",
|
||||
"yuque_dataset": "语雀知识库",
|
||||
"yuque_dataset_config": "配置语雀知识库",
|
||||
"yuque_dataset_desc": "可通过配置语雀文档权限,使用语雀文档构建知识库,文档不会进行二次存储"
|
||||
}
|
||||
|
@@ -35,5 +35,11 @@
|
||||
"wecom.bot_desc": "通过 API 直接接入企业微信机器人",
|
||||
"wecom.create_modal_title": "创建企微机器人",
|
||||
"wecom.edit_modal_title": "编辑企微机器人",
|
||||
"wecom.title": "发布到企业微信机器人"
|
||||
}
|
||||
"wecom.title": "发布到企业微信机器人",
|
||||
"dingtalk.bot": "钉钉机器人",
|
||||
"dingtalk.bot_desc": "通过 API 直接接入钉钉机器人",
|
||||
"dingtalk.create_modal_title": "创建钉钉机器人",
|
||||
"dingtalk.edit_modal_title": "编辑钉钉机器人",
|
||||
"dingtalk.title": "发布到钉钉机器人",
|
||||
"dingtalk.api": "钉钉 API"
|
||||
}
|
||||
|
@@ -26,6 +26,7 @@
|
||||
"login.error": "登录异常",
|
||||
"login.password_condition": "密码最多 60 位",
|
||||
"login.success": "登录成功",
|
||||
"login.Dingtalk": "钉钉登录",
|
||||
"manage_team": "管理团队",
|
||||
"name": "名称",
|
||||
"notification.Bind Notification Pipe Hint": "请绑定通知接收账号,以确保您能正常接收套餐过期提醒等通知,保障您的服务正常运行。",
|
||||
@@ -114,6 +115,7 @@
|
||||
"team.no_collaborators": "暂无协作者",
|
||||
"team.write_role_member": "可写权限",
|
||||
"usage.feishu": "飞书",
|
||||
"usage.dingtalk": "钉钉",
|
||||
"usage.official_account": "公众号",
|
||||
"usage.share": "分享链接",
|
||||
"usage.wecom": "企业微信"
|
||||
|
@@ -10,7 +10,6 @@
|
||||
"Variable_name": "变量名",
|
||||
"add_new_input": "新增输入",
|
||||
"add_new_output": "新增输出",
|
||||
"http_body_placeholder": "与 APIFox 类似的语法,可通过 / 来激活变量选择。字符串变量均需加双引号,其他类型变量无需加双引号。请严格检查是否符合 JSON 格式。",
|
||||
"append_application_reply_to_history_as_new_context": "将该应用回复内容拼接到历史记录中,作为新的上下文返回",
|
||||
"application_call": "应用调用",
|
||||
"assigned_reply": "指定回复",
|
||||
@@ -58,6 +57,7 @@
|
||||
"field_required": "必填",
|
||||
"field_used_as_tool_input": "作为工具调用参数",
|
||||
"filter_description": "目前支持标签和创建时间过滤,需按照以下格式填写:\n{\n \"tags\": {\n \"$and\": [\"标签 1\",\"标签 2\"],\n \"$or\": [\"有 $and 标签时,and 生效,or 不生效\"]\n },\n \"createTime\": {\n \"$gte\": \"YYYY-MM-DD HH:mm 格式即可,集合的创建时间大于该时间\",\n \"$lte\": \"YYYY-MM-DD HH:mm 格式即可,集合的创建时间小于该时间,可和 $gte 共同使用\"\n }\n}",
|
||||
"foldAll": "全部折叠",
|
||||
"form_input_result": "用户完整输入结果",
|
||||
"form_input_result_tip": "一个包含完整结果的对象",
|
||||
"full_field_extraction": "字段完全提取",
|
||||
@@ -65,6 +65,7 @@
|
||||
"full_response_data": "完整响应数据",
|
||||
"greater_than": "大于",
|
||||
"greater_than_or_equal_to": "大于等于",
|
||||
"http_body_placeholder": "与 APIFox 类似的语法,可通过 / 来激活变量选择。字符串变量均需加双引号,其他类型变量无需加双引号。请严格检查是否符合 JSON 格式。",
|
||||
"http_extract_output": "输出字段提取",
|
||||
"http_extract_output_description": "可以通过 JSONPath 语法来提取响应值中的指定字段",
|
||||
"http_raw_response_description": "HTTP请求的原始响应。只能接受字符串或JSON类型响应数据。",
|
||||
@@ -179,6 +180,7 @@
|
||||
"tool_params.params_name_placeholder": "name/age/sql",
|
||||
"tool_params.tool_params_result": "参数配置结果",
|
||||
"trigger_after_application_completion": "将在应用完全结束后触发",
|
||||
"unFoldAll": "全部展开",
|
||||
"update_link_error": "更新链接异常",
|
||||
"update_specified_node_output_or_global_variable": "可以更新指定节点的输出值或更新全局变量",
|
||||
"use_user_id": "使用者 ID",
|
||||
|
@@ -82,6 +82,7 @@
|
||||
"month.unit": "號",
|
||||
"move.hint": "移動後,所選應用程式/資料夾將會繼承新資料夾的權限設定,原先的權限設定將會失效。",
|
||||
"move_app": "移動應用程式",
|
||||
"node_not_intro": "這個節點沒有介紹",
|
||||
"not_json_file": "請選擇 JSON 檔案",
|
||||
"open_auto_execute": "啟用自動執行",
|
||||
"open_vision_function_tip": "有圖示開關的模型即擁有圖片辨識功能。若開啟,模型會解析檔案連結中的圖片,並自動解析使用者問題中的圖片(使用者問題 ≤ 500 字時生效)。",
|
||||
|
@@ -33,6 +33,7 @@
|
||||
"multiple_AI_conversations": "多組 AI 對話",
|
||||
"new_input_guide_lexicon": "新增詞彙庫",
|
||||
"no_workflow_response": "無工作流程資料",
|
||||
"not_query": "缺少查詢內容",
|
||||
"not_select_file": "尚未選取檔案",
|
||||
"plugins_output": "外掛程式輸出",
|
||||
"question_tip": "由上至下,各個模組的回應順序",
|
||||
|
@@ -25,6 +25,7 @@
|
||||
"dataset.Unsupported operation": "操作不支持",
|
||||
"dataset.no_collections": "尚無資料集",
|
||||
"dataset.no_tags": "尚無標籤",
|
||||
"edit_dataset_config": "編輯知識庫配置",
|
||||
"error.collectionNotFound": "找不到集合",
|
||||
"external_file": "外部檔案庫",
|
||||
"external_file_dataset_desc": "可以從外部檔案庫匯入檔案建立資料集,檔案不會進行二次儲存",
|
||||
@@ -32,6 +33,9 @@
|
||||
"external_read_url": "外部預覽網址",
|
||||
"external_read_url_tip": "可以設定您檔案庫的讀取網址,方便對使用者進行讀取權限驗證。目前可使用 {{fileId}} 變數來代表外部檔案識別碼。",
|
||||
"external_url": "檔案存取網址",
|
||||
"feishu_dataset": "飛書知識庫",
|
||||
"feishu_dataset_config": "配置飛書知識庫",
|
||||
"feishu_dataset_desc": "可通過配置飛書文檔權限,使用飛書文檔構建知識庫,文檔不會進行二次存儲",
|
||||
"file_model_function_tip": "用於增強索引和問答生成",
|
||||
"filename": "檔案名稱",
|
||||
"folder_dataset": "資料夾",
|
||||
@@ -69,5 +73,8 @@
|
||||
"training_mode": "分段模式",
|
||||
"vector_model_max_tokens_tip": "每個分塊數據,最大長度為 3000 tokens",
|
||||
"website_dataset": "網站同步",
|
||||
"website_dataset_desc": "網站同步功能讓您可以直接使用網頁連結建立資料集"
|
||||
"website_dataset_desc": "網站同步功能讓您可以直接使用網頁連結建立資料集",
|
||||
"yuque_dataset": "語雀知識庫",
|
||||
"yuque_dataset_config": "配置語雀知識庫",
|
||||
"yuque_dataset_desc": "可通過配置語雀文檔權限,使用語雀文檔構建知識庫,文檔不會進行二次存儲"
|
||||
}
|
||||
|
@@ -35,5 +35,11 @@
|
||||
"wecom.bot_desc": "透過 API 直接連結企業微信聊天機器人",
|
||||
"wecom.create_modal_title": "建立企業微信聊天機器人",
|
||||
"wecom.edit_modal_title": "編輯企業微信聊天機器人",
|
||||
"wecom.title": "發布至企業微信聊天機器人"
|
||||
}
|
||||
"wecom.title": "發布至企業微信聊天機器人",
|
||||
"dingtalk.bot": "釘釘聊天機器人",
|
||||
"dingtalk.bot_desc": "透過 API 直接連結釘釘聊天機器人",
|
||||
"dingtalk.create_modal_title": "建立釘釘聊天機器人",
|
||||
"dingtalk.edit_modal_title": "編輯釘釘聊天機器人",
|
||||
"dingtalk.title": "發布至釘釘聊天機器人",
|
||||
"dingtalk.api": "釘釘 API"
|
||||
}
|
||||
|
@@ -26,6 +26,7 @@
|
||||
"login.error": "登入失敗",
|
||||
"login.password_condition": "密碼最多可輸入 60 個字元",
|
||||
"login.success": "登入成功",
|
||||
"login.Dingtalk": "釘釘登入",
|
||||
"manage_team": "管理團隊",
|
||||
"name": "名稱",
|
||||
"notification.Bind Notification Pipe Hint": "請綁定通知接收帳號,以確保您能正常接收方案到期提醒等通知,保障您的服務正常運作。",
|
||||
@@ -114,6 +115,7 @@
|
||||
"team.no_collaborators": "目前沒有協作者",
|
||||
"team.write_role_member": "可寫入權限",
|
||||
"usage.feishu": "飛書",
|
||||
"usage.dingtalk": "釘釘",
|
||||
"usage.official_account": "公眾號",
|
||||
"usage.share": "分享連結",
|
||||
"usage.wecom": "企業微信"
|
||||
|
@@ -57,6 +57,7 @@
|
||||
"field_required": "必填",
|
||||
"field_used_as_tool_input": "作為工具呼叫參數",
|
||||
"filter_description": "目前支援標籤和建立時間篩選,需按照以下格式填寫:\n{\n \"tags\": {\n \"$and\": [\"標籤 1\",\"標籤 2\"],\n \"$or\": [\"當有 $and 標籤時,$and 才會生效,$or 不會生效\"]\n },\n \"createTime\": {\n \"$gte\": \"YYYY-MM-DD HH:mm 格式,資料集的建立時間大於這個時間\",\n \"$lte\": \"YYYY-MM-DD HH:mm 格式,資料集的建立時間小於這個時間,可以和 $gte 一起使用\"\n }\n}",
|
||||
"foldAll": "全部折疊",
|
||||
"form_input_result": "使用者完整輸入結果",
|
||||
"form_input_result_tip": "一個包含完整結果的物件",
|
||||
"full_field_extraction": "欄位完整擷取",
|
||||
@@ -179,6 +180,7 @@
|
||||
"tool_params.params_name_placeholder": "name/age/sql",
|
||||
"tool_params.tool_params_result": "參數設定結果",
|
||||
"trigger_after_application_completion": "將會在應用程式完全結束後觸發",
|
||||
"unFoldAll": "全部展開",
|
||||
"update_link_error": "更新連結發生錯誤",
|
||||
"update_specified_node_output_or_global_variable": "可以更新指定節點的輸出值或更新全域變數",
|
||||
"use_user_id": "使用者 ID",
|
||||
|