2025-06-02 17:19:57 +08:00

102 lines
3.8 KiB
JavaScript

const defaultConfig = {
tokenExpireHours: 24,
apiConfig: {
esSearch: {
name: "ES 搜索接口",
url: "http://app.wisdompulse.cn/search",
requestParams: [
{ label: "关键词组", field: "keywordGroups" },
{ label: "页码", field: "page" },
{ label: "分页大小", field: "size" }
],
responseParams: [
{ label: "结果字段", field: "results" },
{ label: "总条数字段", field: "total" },
{ label: "分页大小字段", field: "size" }
]
},
materialPublicUrl: {
name: "材料公开地址",
url: "http://share.wisdompulse.cn/public",
requestParams: [],
responseParams: []
},
login: {
name: "登录接口",
url: "http://app.wisdompulse.cn/api/v1/user/login",
requestParams: [
{ label: "用户名字段", field: "username" },
{ label: "密码字段", field: "password" }
],
responseParams: [
{ label: "Token 字段", field: "token" },
{ label: "用户名字段", field: "username" }
]
},
filePath: {
name: "获取文件路径接口",
url: "http://app.wisdompulse.cn/search/file-path",
requestParams: [
{ label: "文件名字段", field: "filename" }
],
responseParams: [
{ label: "路径字段", field: "filepath" }
]
},
llmToken: {
name: "获取 AnythingLLM Token 接口",
url: "http://llm.wisdompulse.cn/api/request-token",
requestParams: [
{ label: "用户名字段", field: "username" }
],
responseParams: [
{ label: "Token 字段", field: "token" }
]
},
workspaces: {
name: "获取工作区接口",
url: "http://llm.wisdompulse.cn/api/workspaces",
requestParams: [],
responseParams: [
{ label: "工作区数组字段", field: "workspaces" }
]
},
llmChat: {
name: "指定工作区对话接口",
url: "http://llm.wisdompulse.cn/api/workspace/${workId}/stream-chat",
requestParams: [
{ label: "问题字段", field: "prompt" },
{ label: "历史字段", field: "messages" }
],
responseParams: []
}
}
};
function loadMergedConfig() {
return new Promise((resolve) => {
chrome.storage.local.get(["customConfig"], (res) => {
const merged = JSON.parse(JSON.stringify(defaultConfig));
if (res.customConfig && typeof res.customConfig === "object") {
merged.tokenExpireHours = res.customConfig.tokenExpireHours || merged.tokenExpireHours;
for (const key in merged.apiConfig) {
const override = res.customConfig.apiConfig?.[key];
if (override) {
merged.apiConfig[key].url = override.url || merged.apiConfig[key].url;
merged.apiConfig[key].requestParams.forEach((param, i) => {
if (override.requestParams?.[i]?.field) param.field = override.requestParams[i].field;
});
merged.apiConfig[key].responseParams.forEach((param, i) => {
if (override.responseParams?.[i]?.field) param.field = override.responseParams[i].field;
});
}
}
}
resolve(merged);
});
});
}
window.loadMergedConfig = loadMergedConfig;