diff --git a/web/src/assets/svg/github.svg b/web/src/assets/svg/github.svg new file mode 100644 index 000000000..92c08f50d --- /dev/null +++ b/web/src/assets/svg/github.svg @@ -0,0 +1,6 @@ + \ No newline at end of file diff --git a/web/src/locales/en.ts b/web/src/locales/en.ts index 5571cb2c3..33f641cb9 100644 --- a/web/src/locales/en.ts +++ b/web/src/locales/en.ts @@ -667,6 +667,9 @@ The above is the content you need to summarize.`, authKey: 'Auth key', sourceLang: 'Source language', targetLang: 'Target language', + gitHub: 'GitHub', + githubDescription: + 'This component is used to search the repository from https://github.com/. Top N specifies the number of search results to be adjusted.', }, footer: { profile: 'All rights reserved @ React', diff --git a/web/src/locales/zh-traditional.ts b/web/src/locales/zh-traditional.ts index 4e3ec74c1..4efdbf6ad 100644 --- a/web/src/locales/zh-traditional.ts +++ b/web/src/locales/zh-traditional.ts @@ -625,6 +625,9 @@ export default { authKey: '授權鍵', sourceLang: '原始語言', targetLang: '目標語言', + gitHub: 'GitHub', + gitHubDescription: + '此元件用於從 https://github.com/ 搜尋儲存庫。 Top N 指定要調整的搜尋結果的數量。', }, footer: { profile: '“保留所有權利 @ react”', diff --git a/web/src/locales/zh.ts b/web/src/locales/zh.ts index 1c8de8b80..87f3eca33 100644 --- a/web/src/locales/zh.ts +++ b/web/src/locales/zh.ts @@ -643,6 +643,9 @@ export default { authKey: '授权键', sourceLang: '源语言', targetLang: '目标语言', + gitHub: 'GitHub', + githubDescription: + '该组件用于从 https://github.com/ 搜索仓库。Top N 指定需要调整的搜索结果数量。', }, footer: { profile: 'All rights reserved @ React', diff --git a/web/src/pages/flow/constant.tsx b/web/src/pages/flow/constant.tsx index 46a8f9971..316578e7e 100644 --- a/web/src/pages/flow/constant.tsx +++ b/web/src/pages/flow/constant.tsx @@ -3,6 +3,7 @@ import { ReactComponent as BaiduIcon } from '@/assets/svg/baidu.svg'; import { ReactComponent as BingIcon } from '@/assets/svg/bing.svg'; import { ReactComponent as DeepLIcon } from '@/assets/svg/deepl.svg'; import { ReactComponent as DuckIcon } from '@/assets/svg/duck.svg'; +import { ReactComponent as GithubIcon } from '@/assets/svg/github.svg'; import { ReactComponent as GoogleScholarIcon } from '@/assets/svg/google-scholar.svg'; import { ReactComponent as GoogleIcon } from '@/assets/svg/google.svg'; import { ReactComponent as KeywordIcon } from '@/assets/svg/keyword.svg'; @@ -48,6 +49,7 @@ export enum Operator { Bing = 'Bing', GoogleScholar = 'GoogleScholar', DeepL = 'DeepL', + GitHub = 'GitHub', } export const operatorIconMap = { @@ -69,6 +71,7 @@ export const operatorIconMap = { [Operator.Bing]: BingIcon, [Operator.GoogleScholar]: GoogleScholarIcon, [Operator.DeepL]: DeepLIcon, + [Operator.GitHub]: GithubIcon, }; export const operatorMap = { @@ -153,6 +156,7 @@ export const operatorMap = { [Operator.Bing]: {}, [Operator.GoogleScholar]: {}, [Operator.DeepL]: {}, + [Operator.GitHub]: {}, }; export const componentMenuList = [ @@ -207,6 +211,9 @@ export const componentMenuList = [ { name: Operator.DeepL, }, + { + name: Operator.GitHub, + }, ]; export const initialRetrievalValues = { @@ -316,6 +323,10 @@ export const initialDeepLValues = { auth_key: 'relevance', }; +export const initialGithubValues = { + top_n: 5, +}; + export const CategorizeAnchorPointPositions = [ { top: 1, right: 34 }, { top: 8, right: 18 }, @@ -381,6 +392,7 @@ export const RestrictedUpstreamMap = { [Operator.Bing]: [Operator.Begin, Operator.Retrieval], [Operator.GoogleScholar]: [Operator.Begin, Operator.Retrieval], [Operator.DeepL]: [Operator.Begin, Operator.Retrieval], + [Operator.GitHub]: [Operator.Begin, Operator.Retrieval], }; export const NodeMap = { @@ -402,6 +414,7 @@ export const NodeMap = { [Operator.Bing]: 'ragNode', [Operator.GoogleScholar]: 'ragNode', [Operator.DeepL]: 'ragNode', + [Operator.GitHub]: 'ragNode', }; export const LanguageOptions = [ diff --git a/web/src/pages/flow/flow-drawer/index.tsx b/web/src/pages/flow/flow-drawer/index.tsx index 6173b683f..db74b9081 100644 --- a/web/src/pages/flow/flow-drawer/index.tsx +++ b/web/src/pages/flow/flow-drawer/index.tsx @@ -12,6 +12,7 @@ import CategorizeForm from '../categorize-form'; import { Operator } from '../constant'; import DuckDuckGoForm from '../duckduckgo-form'; import GenerateForm from '../generate-form'; +import GithubForm from '../github-form'; import GoogleForm from '../google-form'; import GoogleScholarForm from '../google-scholar-form'; import { useHandleFormValuesChange, useHandleNodeNameChange } from '../hooks'; @@ -50,6 +51,7 @@ const FormMap = { [Operator.Bing]: BingForm, [Operator.GoogleScholar]: GoogleScholarForm, [Operator.DeepL]: DeepLForm, + [Operator.GitHub]: GithubForm, }; const EmptyContent = () =>