* feat: sync org from wecom, pref: member list pagination (#3549) * feat: sync org * chore: fe * chore: loading * chore: type * pref: team member list change to pagination. Edit a sort of list apis. * feat: member update avatar * chore: user avatar move to tmb * chore: init scripts move user avatar * chore: sourceMember * fix: list api sourceMember * fix: member sync * fix: pagination * chore: adjust code * chore: move changeOwner to pro * chore: init v4819 script * chore: adjust code * chore: UserBox * perf: scroll page code * perf: list data * docs:更新用户答疑 (#3576) * docs: add custom uid docs (#3572) * fix: pagination bug (#3577) * 4.8.19 test (#3584) * faet: dataset search filter * fix: scroll page * fix: collection list api old version (#3591) * fix: collection list api format * fix: type error of addSourceMemeber * fix: scroll fetch (#3592) * fix: yuque dataset file folder can enter (#3593) * perf: load members;perf: yuque load;fix: workflow llm params cannot close (#3594) * chat openapi doc * feat: dataset openapi doc * perf: load members * perf: member load code * perf: yuque load * fix: workflow llm params cannot close * fix: api dataset reference tag preview (#3600) * perf: doc * feat: chat page config * fix: http parse (#3634) * update doc * fix: http parse * fix code run node reset template (#3633) Co-authored-by: Archer <545436317@qq.com> * docs:faq (#3627) * docs:faq * docsFix * perf: sleep plugin * fix: selector --------- Co-authored-by: Finley Ge <32237950+FinleyGe@users.noreply.github.com> Co-authored-by: Jiangween <145003935+Jiangween@users.noreply.github.com> Co-authored-by: heheer <heheer@sealos.io>
105 lines
2.6 KiB
TypeScript
105 lines
2.6 KiB
TypeScript
import { PluginSourceEnum } from '@fastgpt/global/core/plugin/constants';
|
|
import { SystemPluginResponseType } from './type';
|
|
import { SystemPluginTemplateItemType } from '@fastgpt/global/core/workflow/type';
|
|
import { cloneDeep } from 'lodash';
|
|
import { WorkerNameEnum, runWorker } from '@fastgpt/service/worker/utils';
|
|
|
|
// Run in main thread
|
|
const staticPluginList = [
|
|
'getTime',
|
|
'fetchUrl',
|
|
'feishu',
|
|
'DingTalkWebhook',
|
|
'WeWorkWebhook',
|
|
'google',
|
|
'bing',
|
|
'delay'
|
|
];
|
|
// Run in worker thread (Have npm packages)
|
|
const packagePluginList = [
|
|
'mathExprVal',
|
|
'duckduckgo',
|
|
'duckduckgo/search',
|
|
'duckduckgo/searchImg',
|
|
'duckduckgo/searchNews',
|
|
'duckduckgo/searchVideo',
|
|
'drawing',
|
|
'drawing/baseChart',
|
|
'wiki',
|
|
'databaseConnection',
|
|
'Doc2X',
|
|
'Doc2X/PDF2text',
|
|
'searchXNG'
|
|
];
|
|
|
|
export const list = [...staticPluginList, ...packagePluginList];
|
|
|
|
/* Get plugins */
|
|
export const getCommunityPlugins = () => {
|
|
return Promise.all(
|
|
list.map<Promise<SystemPluginTemplateItemType>>(async (name) => {
|
|
const config = (await import(`./src/${name}/template.json`))?.default;
|
|
|
|
const isFolder = list.find((item) => item.startsWith(`${name}/`));
|
|
|
|
const parentIdList = name.split('/').slice(0, -1);
|
|
const parentId =
|
|
parentIdList.length > 0 ? `${PluginSourceEnum.community}-${parentIdList.join('/')}` : null;
|
|
|
|
return {
|
|
...config,
|
|
id: `${PluginSourceEnum.community}-${name}`,
|
|
isFolder,
|
|
parentId,
|
|
isActive: true,
|
|
isOfficial: true
|
|
};
|
|
})
|
|
);
|
|
};
|
|
|
|
export const getSystemPluginTemplates = () => {
|
|
if (!global.systemPlugins) return [];
|
|
|
|
const oldPlugins = global.communityPlugins ?? [];
|
|
return [...oldPlugins, ...cloneDeep(global.systemPlugins)];
|
|
};
|
|
|
|
export const getCommunityCb = async () => {
|
|
const loadCommunityModule = async (name: string) => {
|
|
const module = await import(`./src/${name}/index`);
|
|
return module.default;
|
|
};
|
|
|
|
const result = (
|
|
await Promise.all(
|
|
list.map(async (name) => {
|
|
try {
|
|
return {
|
|
name,
|
|
cb: staticPluginList.includes(name)
|
|
? await loadCommunityModule(name)
|
|
: (e: any) => {
|
|
return runWorker(WorkerNameEnum.systemPluginRun, {
|
|
pluginName: name,
|
|
data: e
|
|
});
|
|
}
|
|
};
|
|
} catch (error) {}
|
|
})
|
|
)
|
|
).filter(Boolean) as {
|
|
name: string;
|
|
cb: any;
|
|
}[];
|
|
|
|
return result.reduce<Record<string, (e: any) => SystemPluginResponseType>>(
|
|
(acc, { name, cb }) => {
|
|
acc[name] = cb;
|
|
return acc;
|
|
},
|
|
{}
|
|
);
|
|
};
|