@linkmind_claw/openclaw-faq-kb 1.0.6 → 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +6 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +159 -22
- package/dist/index.js.map +1 -1
- package/dist/lib/api-client.d.ts +35 -5
- package/dist/lib/api-client.d.ts.map +1 -1
- package/dist/lib/api-client.js +101 -27
- package/dist/lib/api-client.js.map +1 -1
- package/dist/tools/account-manage.d.ts +26 -0
- package/dist/tools/account-manage.d.ts.map +1 -0
- package/dist/tools/account-manage.js +89 -0
- package/dist/tools/account-manage.js.map +1 -0
- package/dist/tools/account-register.d.ts +21 -0
- package/dist/tools/account-register.d.ts.map +1 -0
- package/dist/tools/account-register.js +36 -0
- package/dist/tools/account-register.js.map +1 -0
- package/dist/tools/query-kb.d.ts +5 -4
- package/dist/tools/query-kb.d.ts.map +1 -1
- package/dist/tools/query-kb.js +37 -11
- package/dist/tools/query-kb.js.map +1 -1
- package/linkmind_claw-openclaw-faq-kb-1.1.0.tgz +0 -0
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* OpenClaw Plugin entry — FAQ Knowledge Base
|
|
3
3
|
*
|
|
4
|
-
*
|
|
4
|
+
* 5 tools + 5 slash commands:
|
|
5
5
|
*
|
|
6
|
-
* 1.
|
|
7
|
-
* 2.
|
|
8
|
-
* 3.
|
|
6
|
+
* 1. faq_account_register — OAuth 用户注册/登录 (所有人)
|
|
7
|
+
* 2. faq_account_manage — 权限管理 (admin)
|
|
8
|
+
* 3. faq_kb_create_and_train — 一键建库训练 (editor+)
|
|
9
|
+
* 4. faq_kb_query — 知识库问答 (viewer+)
|
|
10
|
+
* 5. faq_kb_list — 查看知识库列表 (viewer+)
|
|
9
11
|
*/
|
|
10
12
|
interface CommandContext {
|
|
11
13
|
args?: string;
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAyCH,UAAU,cAAc;IACtB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,UAAU,SAAS;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACvC,YAAY,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,KAAK,IAAI,CAAC;IAC9C,eAAe,EAAE,CAAC,OAAO,EAAE;QACzB,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,EAAE,MAAM,CAAC;QACpB,WAAW,CAAC,EAAE,OAAO,CAAC;QACtB,WAAW,CAAC,EAAE,OAAO,CAAC;QACtB,OAAO,EAAE,CAAC,GAAG,EAAE,cAAc,KAAK,OAAO,CAAC;YAAE,IAAI,EAAE,MAAM,CAAA;SAAE,CAAC,GAAG;YAAE,IAAI,EAAE,MAAM,CAAA;SAAE,CAAC;KAChF,KAAK,IAAI,CAAC;CACZ;AAED,UAAU,WAAW;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,CAAC,GAAG,EAAE,SAAS,KAAK,IAAI,CAAC;CACpC;;AAQD,wBAqTG"}
|
package/dist/index.js
CHANGED
|
@@ -1,14 +1,18 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* OpenClaw Plugin entry — FAQ Knowledge Base
|
|
3
3
|
*
|
|
4
|
-
*
|
|
4
|
+
* 5 tools + 5 slash commands:
|
|
5
5
|
*
|
|
6
|
-
* 1.
|
|
7
|
-
* 2.
|
|
8
|
-
* 3.
|
|
6
|
+
* 1. faq_account_register — OAuth 用户注册/登录 (所有人)
|
|
7
|
+
* 2. faq_account_manage — 权限管理 (admin)
|
|
8
|
+
* 3. faq_kb_create_and_train — 一键建库训练 (editor+)
|
|
9
|
+
* 4. faq_kb_query — 知识库问答 (viewer+)
|
|
10
|
+
* 5. faq_kb_list — 查看知识库列表 (viewer+)
|
|
9
11
|
*/
|
|
10
12
|
import { Type } from "@sinclair/typebox";
|
|
11
13
|
import { FaqKbApiClient } from "./lib/api-client.js";
|
|
14
|
+
import { AccountRegisterParams, executeAccountRegister, } from "./tools/account-register.js";
|
|
15
|
+
import { AccountManageParams, executeAccountManage, } from "./tools/account-manage.js";
|
|
12
16
|
import { CreateAndTrainParams, executeCreateAndTrain, } from "./tools/create-kb-and-train.js";
|
|
13
17
|
import { QueryParams, executeQuery, } from "./tools/query-kb.js";
|
|
14
18
|
function definePluginEntry(entry) {
|
|
@@ -18,7 +22,7 @@ function definePluginEntry(entry) {
|
|
|
18
22
|
export default definePluginEntry({
|
|
19
23
|
id: "faq-knowledge-base",
|
|
20
24
|
name: "FAQ Knowledge Base",
|
|
21
|
-
description: "FAQ
|
|
25
|
+
description: "FAQ 知识库插件:OAuth 用户管理、一键上传文档训练知识库、智能问答",
|
|
22
26
|
register(api) {
|
|
23
27
|
const cfg = (api.pluginConfig ?? {});
|
|
24
28
|
const baseUrl = cfg.apiBaseUrl || "http://67.212.146.21:8999";
|
|
@@ -28,7 +32,33 @@ export default definePluginEntry({
|
|
|
28
32
|
baseUrl,
|
|
29
33
|
staticToken: cfg.apiToken || undefined,
|
|
30
34
|
});
|
|
31
|
-
// ── Tool 1:
|
|
35
|
+
// ── Tool 1: Account Register (OAuth) ──────────────────────────────
|
|
36
|
+
api.registerTool({
|
|
37
|
+
name: "faq_account_register",
|
|
38
|
+
label: "用户注册/登录",
|
|
39
|
+
description: [
|
|
40
|
+
"社媒用户 OAuth 注册或登录。",
|
|
41
|
+
"首次调用自动创建账号(默认 viewer 角色),后续调用等同登录。",
|
|
42
|
+
"成功后自动缓存 JWT,后续 API 调用自动携带用户身份。",
|
|
43
|
+
"支持 Telegram / Discord / Slack / Web 等渠道。",
|
|
44
|
+
].join(" "),
|
|
45
|
+
parameters: AccountRegisterParams,
|
|
46
|
+
execute: (_id, params) => executeAccountRegister(client, params),
|
|
47
|
+
});
|
|
48
|
+
// ── Tool 2: Account Manage (admin) ────────────────────────────────
|
|
49
|
+
api.registerTool({
|
|
50
|
+
name: "faq_account_manage",
|
|
51
|
+
label: "权限管理",
|
|
52
|
+
description: [
|
|
53
|
+
"管理员权限操作工具。",
|
|
54
|
+
"grant_role: 给用户授予角色和知识库访问范围。",
|
|
55
|
+
"list_users: 列出所有渠道用户。",
|
|
56
|
+
"my_info: 查看自己的身份、角色和配额。",
|
|
57
|
+
].join(" "),
|
|
58
|
+
parameters: AccountManageParams,
|
|
59
|
+
execute: (_id, params) => executeAccountManage(client, params),
|
|
60
|
+
});
|
|
61
|
+
// ── Tool 3: Create & Train ────────────────────────────────────────
|
|
32
62
|
api.registerTool({
|
|
33
63
|
name: "faq_kb_create_and_train",
|
|
34
64
|
label: "创建知识库并训练",
|
|
@@ -47,10 +77,10 @@ export default definePluginEntry({
|
|
|
47
77
|
name: "faq_kb_query",
|
|
48
78
|
label: "知识库问答",
|
|
49
79
|
description: [
|
|
50
|
-
"
|
|
51
|
-
"
|
|
80
|
+
"向知识库提问并获取 AI 智能回答。",
|
|
81
|
+
"可以用知识库名称(kb_name)或 ID(kb_id)指定,推荐用名称。",
|
|
82
|
+
"名称支持模糊匹配,系统自动在你有权限的 KB 中查找。",
|
|
52
83
|
"设置 enable_polish=true 可让 LLM 综合多个 FAQ 生成更自然的回答。",
|
|
53
|
-
"返回包含答案、置信度、来源引用和日志 ID。",
|
|
54
84
|
].join(" "),
|
|
55
85
|
parameters: QueryParams,
|
|
56
86
|
execute: (_id, params) => executeQuery(client, params),
|
|
@@ -92,7 +122,59 @@ export default definePluginEntry({
|
|
|
92
122
|
return { content: [{ type: "text", text: lines.join("\n") }] };
|
|
93
123
|
},
|
|
94
124
|
});
|
|
95
|
-
// ──
|
|
125
|
+
// ── 5 Slash Commands ────────────────────────────────────────────────
|
|
126
|
+
api.registerCommand({
|
|
127
|
+
name: "faq_register",
|
|
128
|
+
description: "注册/登录: /faq_register",
|
|
129
|
+
handler: async (ctx) => {
|
|
130
|
+
if (!ctx.senderId || !ctx.channel) {
|
|
131
|
+
return { text: "无法获取你的用户信息,请在社媒渠道中使用。" };
|
|
132
|
+
}
|
|
133
|
+
try {
|
|
134
|
+
client.setSender(ctx.senderId);
|
|
135
|
+
const result = await client.oauthLogin({
|
|
136
|
+
channel_type: ctx.channel,
|
|
137
|
+
channel_user_id: ctx.senderId,
|
|
138
|
+
display_name: "",
|
|
139
|
+
});
|
|
140
|
+
const status = result.is_new ? "注册成功" : "登录成功";
|
|
141
|
+
return {
|
|
142
|
+
text: `✅ ${status}!\n 角色: ${result.role}\n 用户 ID: ${result.user_id}`,
|
|
143
|
+
};
|
|
144
|
+
}
|
|
145
|
+
catch (e) {
|
|
146
|
+
return { text: `❌ 注册失败: ${e.message}` };
|
|
147
|
+
}
|
|
148
|
+
},
|
|
149
|
+
});
|
|
150
|
+
api.registerCommand({
|
|
151
|
+
name: "faq_grant",
|
|
152
|
+
description: "授权用户: /faq_grant <user_id> <role>",
|
|
153
|
+
acceptsArgs: true,
|
|
154
|
+
handler: async (ctx) => {
|
|
155
|
+
const args = (ctx.args ?? "").trim();
|
|
156
|
+
const parts = args.split(/\s+/);
|
|
157
|
+
if (parts.length < 2) {
|
|
158
|
+
return {
|
|
159
|
+
text: "用法: /faq_grant <channel_user_id> <role>\n角色可选: viewer / editor / reviewer / admin",
|
|
160
|
+
};
|
|
161
|
+
}
|
|
162
|
+
const [targetId, role] = parts;
|
|
163
|
+
try {
|
|
164
|
+
const res = await client.post("/auth/grant_role", {
|
|
165
|
+
target_channel_user_id: targetId,
|
|
166
|
+
target_channel_type: ctx.channel || "telegram",
|
|
167
|
+
channel_bot_id: "default",
|
|
168
|
+
role,
|
|
169
|
+
kb_scope: null,
|
|
170
|
+
});
|
|
171
|
+
return { text: `✅ ${res.message || "授权成功"}` };
|
|
172
|
+
}
|
|
173
|
+
catch (e) {
|
|
174
|
+
return { text: `❌ 授权失败: ${e.message}` };
|
|
175
|
+
}
|
|
176
|
+
},
|
|
177
|
+
});
|
|
96
178
|
api.registerCommand({
|
|
97
179
|
name: "faq_create",
|
|
98
180
|
description: "创建知识库并训练: /faq_create <名称> <文档URL>",
|
|
@@ -128,26 +210,44 @@ export default definePluginEntry({
|
|
|
128
210
|
});
|
|
129
211
|
api.registerCommand({
|
|
130
212
|
name: "faq_query",
|
|
131
|
-
description: "知识库问答: /faq_query
|
|
213
|
+
description: "知识库问答: /faq_query <知识库名称> <问题>",
|
|
132
214
|
acceptsArgs: true,
|
|
133
215
|
handler: async (ctx) => {
|
|
134
216
|
const args = (ctx.args ?? "").trim();
|
|
135
217
|
const spaceIdx = args.indexOf(" ");
|
|
136
218
|
if (!args || spaceIdx === -1) {
|
|
137
|
-
return { text: "用法: /faq_query
|
|
219
|
+
return { text: "用法: /faq_query <知识库名称> <问题>\n示例: /faq_query 客服知识库 什么是退款政策?\n\n也支持 ID: /faq_query abc123 问题" };
|
|
138
220
|
}
|
|
139
|
-
const
|
|
221
|
+
const nameOrId = args.slice(0, spaceIdx).trim();
|
|
140
222
|
const question = args.slice(spaceIdx + 1).trim();
|
|
141
223
|
if (!question)
|
|
142
224
|
return { text: "请提供问题" };
|
|
143
225
|
try {
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
226
|
+
// 先尝试按名称查,失败再按 ID 查
|
|
227
|
+
let res;
|
|
228
|
+
try {
|
|
229
|
+
res = await client.post("/knowledge_bases/query_by_name", {
|
|
230
|
+
kb_name: nameOrId, question, enable_polish: false,
|
|
231
|
+
});
|
|
232
|
+
}
|
|
233
|
+
catch {
|
|
234
|
+
res = await client.post(`/knowledge_bases/${nameOrId}/query`, {
|
|
235
|
+
question, enable_polish: false,
|
|
236
|
+
});
|
|
237
|
+
}
|
|
238
|
+
if (!res.success) {
|
|
239
|
+
const candidates = res.data?.candidates;
|
|
240
|
+
if (candidates?.length) {
|
|
241
|
+
const list = candidates.map((c) => ` • ${c.name} (${c.id})`).join("\n");
|
|
242
|
+
return { text: `${res.message}\n\n可选:\n${list}` };
|
|
243
|
+
}
|
|
148
244
|
return { text: `❌ ${res.message}` };
|
|
245
|
+
}
|
|
149
246
|
const d = res.data;
|
|
150
|
-
const lines = [
|
|
247
|
+
const lines = [];
|
|
248
|
+
if (d.kb_name)
|
|
249
|
+
lines.push(`📚 ${d.kb_name}`);
|
|
250
|
+
lines.push(`💡 ${d.answer || "(无答案)"}`);
|
|
151
251
|
if (d.faq_data?.question)
|
|
152
252
|
lines.push(`📌 匹配: ${d.faq_data.question}`);
|
|
153
253
|
if (d.source_nodes?.[0]?.score != null) {
|
|
@@ -160,22 +260,59 @@ export default definePluginEntry({
|
|
|
160
260
|
}
|
|
161
261
|
},
|
|
162
262
|
});
|
|
263
|
+
api.registerCommand({
|
|
264
|
+
name: "faq_share",
|
|
265
|
+
description: "分享知识库: /faq_share <KB名称或ID> <用户ID> <角色>",
|
|
266
|
+
acceptsArgs: true,
|
|
267
|
+
handler: async (ctx) => {
|
|
268
|
+
const parts = (ctx.args ?? "").trim().split(/\s+/);
|
|
269
|
+
if (parts.length < 3) {
|
|
270
|
+
return { text: "用法: /faq_share <KB名称或ID> <目标用户渠道ID> <角色>\n角色可选: viewer / editor\n示例: /faq_share 客服知识库 123456789 viewer" };
|
|
271
|
+
}
|
|
272
|
+
const [kbNameOrId, targetUserId, role] = parts;
|
|
273
|
+
try {
|
|
274
|
+
// 先按名称查找 KB ID
|
|
275
|
+
let kbId = kbNameOrId;
|
|
276
|
+
try {
|
|
277
|
+
const listRes = await client.get(`/knowledge_bases?keyword=${encodeURIComponent(kbNameOrId)}&page_size=0`);
|
|
278
|
+
const items = listRes.items ?? listRes.data?.items ?? [];
|
|
279
|
+
const exact = items.find((kb) => kb.name === kbNameOrId);
|
|
280
|
+
if (exact)
|
|
281
|
+
kbId = exact.id;
|
|
282
|
+
else if (items.length === 1)
|
|
283
|
+
kbId = items[0].id;
|
|
284
|
+
}
|
|
285
|
+
catch { /* use as-is if lookup fails */ }
|
|
286
|
+
const res = await client.post(`/knowledge_bases/${kbId}/share`, {
|
|
287
|
+
target_channel_user_id: targetUserId,
|
|
288
|
+
target_channel_type: ctx.channel || "telegram",
|
|
289
|
+
channel_bot_id: "default",
|
|
290
|
+
role,
|
|
291
|
+
});
|
|
292
|
+
return { text: `✅ ${res.message || "分享成功"}` };
|
|
293
|
+
}
|
|
294
|
+
catch (e) {
|
|
295
|
+
return { text: `❌ 分享失败: ${e.message}` };
|
|
296
|
+
}
|
|
297
|
+
},
|
|
298
|
+
});
|
|
163
299
|
api.registerCommand({
|
|
164
300
|
name: "faq_list",
|
|
165
|
-
description: "
|
|
301
|
+
description: "列出我可访问的知识库",
|
|
166
302
|
handler: async () => {
|
|
167
303
|
try {
|
|
168
304
|
const res = await client.get("/knowledge_bases?page=1&page_size=0");
|
|
169
305
|
const items = res.items ?? res.data?.items ?? [];
|
|
170
306
|
const total = res.total ?? items.length;
|
|
171
|
-
const lines = [`📚
|
|
307
|
+
const lines = [`📚 我的知识库(共 ${total} 个):`];
|
|
172
308
|
for (const kb of items) {
|
|
173
309
|
const st = kb.is_active ? "✅ 就绪" : "⏳ 未训练";
|
|
174
310
|
const tag = kb.tag_name ? ` [${kb.tag_name}]` : "";
|
|
175
|
-
|
|
311
|
+
const role = kb.my_role ? ` (${kb.my_role})` : "";
|
|
312
|
+
lines.push(` • ${kb.name}${tag}${role} ${st}\n ID: ${kb.id}`);
|
|
176
313
|
}
|
|
177
314
|
if (items.length === 0)
|
|
178
|
-
lines.push("
|
|
315
|
+
lines.push(" (暂无可访问的知识库)");
|
|
179
316
|
return { text: lines.join("\n") };
|
|
180
317
|
}
|
|
181
318
|
catch (e) {
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/api-client.d.ts
CHANGED
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* HTTP client for the FAQ Knowledge Base API (port 8999).
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
4
|
+
* Two-layer auth:
|
|
5
|
+
* 1. System-level token (shared, for legacy/anonymous access)
|
|
6
|
+
* 2. Per-user OAuth JWT (from /oauth/telegram or /oauth/token)
|
|
7
|
+
*
|
|
8
|
+
* resolveToken() prefers user JWT, falls back to system token.
|
|
6
9
|
*/
|
|
7
10
|
export interface ApiClientConfig {
|
|
8
11
|
baseUrl: string;
|
|
@@ -11,14 +14,41 @@ export interface ApiClientConfig {
|
|
|
11
14
|
/** Request timeout in ms (default 30 000). */
|
|
12
15
|
timeoutMs?: number;
|
|
13
16
|
}
|
|
17
|
+
export interface OAuthTokenResult {
|
|
18
|
+
access_token: string;
|
|
19
|
+
token_type: string;
|
|
20
|
+
expires_in: number;
|
|
21
|
+
user_id: string;
|
|
22
|
+
role: string;
|
|
23
|
+
is_new: boolean;
|
|
24
|
+
}
|
|
14
25
|
export declare class FaqKbApiClient {
|
|
15
26
|
private readonly baseUrl;
|
|
16
27
|
private readonly staticToken;
|
|
17
28
|
private readonly timeoutMs;
|
|
18
|
-
private
|
|
29
|
+
private systemTokenCache;
|
|
30
|
+
/** Per-user JWT cache, keyed by channel_user_id */
|
|
31
|
+
private userTokens;
|
|
32
|
+
/** Sender → channel_user_id mapping set by Plugin at call time */
|
|
33
|
+
private activeSenderId;
|
|
19
34
|
constructor(cfg: ApiClientConfig);
|
|
20
|
-
|
|
21
|
-
private
|
|
35
|
+
setSender(senderId: string | null): void;
|
|
36
|
+
private acquireSystemToken;
|
|
37
|
+
private getSystemToken;
|
|
38
|
+
storeUserToken(senderId: string, token: string, expiresIn: number): void;
|
|
39
|
+
getUserToken(senderId: string): string | null;
|
|
40
|
+
hasUserToken(senderId?: string): boolean;
|
|
41
|
+
/**
|
|
42
|
+
* OAuth login — calls /oauth/telegram or /oauth/token and caches the JWT.
|
|
43
|
+
*/
|
|
44
|
+
oauthLogin(params: {
|
|
45
|
+
channel_type: string;
|
|
46
|
+
channel_user_id: string;
|
|
47
|
+
channel_bot_id?: string;
|
|
48
|
+
display_name?: string;
|
|
49
|
+
telegram_data?: Record<string, unknown>;
|
|
50
|
+
}): Promise<OAuthTokenResult>;
|
|
51
|
+
private resolveToken;
|
|
22
52
|
request<T = unknown>(method: string, path: string, body?: unknown): Promise<T>;
|
|
23
53
|
get<T = unknown>(path: string): Promise<T>;
|
|
24
54
|
post<T = unknown>(path: string, body?: unknown): Promise<T>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api-client.d.ts","sourceRoot":"","sources":["../../lib/api-client.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"api-client.d.ts","sourceRoot":"","sources":["../../lib/api-client.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,8DAA8D;IAC9D,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,8CAA8C;IAC9C,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAOD,MAAM,WAAW,gBAAgB;IAC/B,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,OAAO,CAAC;CACjB;AAED,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAqB;IACjD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,gBAAgB,CAA2B;IAEnD,mDAAmD;IACnD,OAAO,CAAC,UAAU,CAAiC;IAEnD,kEAAkE;IAClE,OAAO,CAAC,cAAc,CAAuB;gBAEjC,GAAG,EAAE,eAAe;IAQhC,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;YAMnB,kBAAkB;YAiBlB,cAAc;IAU5B,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM;IAQjE,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAO7C,YAAY,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO;IAKxC;;OAEG;IACG,UAAU,CACd,MAAM,EAAE;QACN,YAAY,EAAE,MAAM,CAAC;QACrB,eAAe,EAAE,MAAM,CAAC;QACxB,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KACzC,GACA,OAAO,CAAC,gBAAgB,CAAC;YAgDd,YAAY;IAUpB,OAAO,CAAC,CAAC,GAAG,OAAO,EACvB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE,OAAO,GACb,OAAO,CAAC,CAAC,CAAC;IAqCb,GAAG,CAAC,CAAC,GAAG,OAAO,EAAE,IAAI,EAAE,MAAM;IAC7B,IAAI,CAAC,CAAC,GAAG,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO;IAC9C,GAAG,CAAC,CAAC,GAAG,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO;IAC7C,GAAG,CAAC,CAAC,GAAG,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO;IAC7C,KAAK,CAAC,CAAC,GAAG,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO;CAChD;AAID,MAAM,WAAW,WAAW,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IACtD,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,CAAC,CAAC;CACT"}
|
package/dist/lib/api-client.js
CHANGED
|
@@ -1,21 +1,32 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* HTTP client for the FAQ Knowledge Base API (port 8999).
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
4
|
+
* Two-layer auth:
|
|
5
|
+
* 1. System-level token (shared, for legacy/anonymous access)
|
|
6
|
+
* 2. Per-user OAuth JWT (from /oauth/telegram or /oauth/token)
|
|
7
|
+
*
|
|
8
|
+
* resolveToken() prefers user JWT, falls back to system token.
|
|
6
9
|
*/
|
|
7
10
|
export class FaqKbApiClient {
|
|
8
11
|
baseUrl;
|
|
9
12
|
staticToken;
|
|
10
13
|
timeoutMs;
|
|
11
|
-
|
|
14
|
+
systemTokenCache = null;
|
|
15
|
+
/** Per-user JWT cache, keyed by channel_user_id */
|
|
16
|
+
userTokens = new Map();
|
|
17
|
+
/** Sender → channel_user_id mapping set by Plugin at call time */
|
|
18
|
+
activeSenderId = null;
|
|
12
19
|
constructor(cfg) {
|
|
13
20
|
this.baseUrl = cfg.baseUrl.replace(/\/+$/, "");
|
|
14
21
|
this.staticToken = cfg.staticToken || undefined;
|
|
15
22
|
this.timeoutMs = cfg.timeoutMs ?? 30_000;
|
|
16
23
|
}
|
|
17
|
-
// ──
|
|
18
|
-
|
|
24
|
+
// ── Sender context ──────────────────────────────────────────────────
|
|
25
|
+
setSender(senderId) {
|
|
26
|
+
this.activeSenderId = senderId;
|
|
27
|
+
}
|
|
28
|
+
// ── System token (legacy) ───────────────────────────────────────────
|
|
29
|
+
async acquireSystemToken() {
|
|
19
30
|
const res = await fetch(`${this.baseUrl}/api/token`, {
|
|
20
31
|
method: "POST",
|
|
21
32
|
signal: AbortSignal.timeout(this.timeoutMs),
|
|
@@ -24,25 +35,98 @@ export class FaqKbApiClient {
|
|
|
24
35
|
throw new Error(`Token acquisition failed: ${res.status} ${res.statusText}`);
|
|
25
36
|
}
|
|
26
37
|
const body = (await res.json());
|
|
27
|
-
// Renew 5 min before actual expiry to avoid edge-case failures
|
|
28
38
|
const safetyMarginMs = 5 * 60 * 1000;
|
|
29
|
-
this.
|
|
39
|
+
this.systemTokenCache = {
|
|
30
40
|
token: body.token,
|
|
31
41
|
expiresAt: Date.now() + body.expires_in * 1000 - safetyMarginMs,
|
|
32
42
|
};
|
|
33
43
|
return body.token;
|
|
34
44
|
}
|
|
35
|
-
async
|
|
45
|
+
async getSystemToken() {
|
|
36
46
|
if (this.staticToken)
|
|
37
47
|
return this.staticToken;
|
|
38
|
-
if (this.
|
|
39
|
-
return this.
|
|
48
|
+
if (this.systemTokenCache && Date.now() < this.systemTokenCache.expiresAt) {
|
|
49
|
+
return this.systemTokenCache.token;
|
|
50
|
+
}
|
|
51
|
+
return this.acquireSystemToken();
|
|
52
|
+
}
|
|
53
|
+
// ── User OAuth JWT ──────────────────────────────────────────────────
|
|
54
|
+
storeUserToken(senderId, token, expiresIn) {
|
|
55
|
+
const safetyMs = 10 * 60 * 1000;
|
|
56
|
+
this.userTokens.set(senderId, {
|
|
57
|
+
token,
|
|
58
|
+
expiresAt: Date.now() + expiresIn * 1000 - safetyMs,
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
getUserToken(senderId) {
|
|
62
|
+
const cached = this.userTokens.get(senderId);
|
|
63
|
+
if (cached && Date.now() < cached.expiresAt)
|
|
64
|
+
return cached.token;
|
|
65
|
+
if (cached)
|
|
66
|
+
this.userTokens.delete(senderId);
|
|
67
|
+
return null;
|
|
68
|
+
}
|
|
69
|
+
hasUserToken(senderId) {
|
|
70
|
+
const id = senderId ?? this.activeSenderId;
|
|
71
|
+
return id ? this.getUserToken(id) !== null : false;
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* OAuth login — calls /oauth/telegram or /oauth/token and caches the JWT.
|
|
75
|
+
*/
|
|
76
|
+
async oauthLogin(params) {
|
|
77
|
+
const sysToken = await this.getSystemToken();
|
|
78
|
+
let endpoint;
|
|
79
|
+
let payload;
|
|
80
|
+
if (params.channel_type === "telegram" && params.telegram_data) {
|
|
81
|
+
endpoint = "/oauth/telegram";
|
|
82
|
+
payload = { ...params.telegram_data, bot_id: params.channel_bot_id ?? "default" };
|
|
83
|
+
}
|
|
84
|
+
else {
|
|
85
|
+
endpoint = "/oauth/token";
|
|
86
|
+
payload = {
|
|
87
|
+
channel_type: params.channel_type,
|
|
88
|
+
channel_user_id: params.channel_user_id,
|
|
89
|
+
channel_bot_id: params.channel_bot_id ?? "default",
|
|
90
|
+
display_name: params.display_name ?? "",
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
const res = await fetch(`${this.baseUrl}${endpoint}`, {
|
|
94
|
+
method: "POST",
|
|
95
|
+
headers: {
|
|
96
|
+
"X-API-Token": sysToken,
|
|
97
|
+
"Content-Type": "application/json",
|
|
98
|
+
Accept: "application/json",
|
|
99
|
+
},
|
|
100
|
+
body: JSON.stringify(payload),
|
|
101
|
+
signal: AbortSignal.timeout(this.timeoutMs),
|
|
102
|
+
});
|
|
103
|
+
if (!res.ok) {
|
|
104
|
+
let detail;
|
|
105
|
+
try {
|
|
106
|
+
const err = (await res.json());
|
|
107
|
+
detail = err.detail ?? JSON.stringify(err);
|
|
108
|
+
}
|
|
109
|
+
catch {
|
|
110
|
+
detail = await res.text();
|
|
111
|
+
}
|
|
112
|
+
throw new Error(`OAuth login failed: ${res.status}: ${detail}`);
|
|
40
113
|
}
|
|
41
|
-
|
|
114
|
+
const result = (await res.json());
|
|
115
|
+
this.storeUserToken(params.channel_user_id, result.access_token, result.expires_in);
|
|
116
|
+
return result;
|
|
117
|
+
}
|
|
118
|
+
// ── Token resolution ────────────────────────────────────────────────
|
|
119
|
+
async resolveToken() {
|
|
120
|
+
if (this.activeSenderId) {
|
|
121
|
+
const jwt = this.getUserToken(this.activeSenderId);
|
|
122
|
+
if (jwt)
|
|
123
|
+
return jwt;
|
|
124
|
+
}
|
|
125
|
+
return this.getSystemToken();
|
|
42
126
|
}
|
|
43
127
|
// ── Generic request ─────────────────────────────────────────────────
|
|
44
128
|
async request(method, path, body) {
|
|
45
|
-
const token = await this.
|
|
129
|
+
const token = await this.resolveToken();
|
|
46
130
|
const url = `${this.baseUrl}${path}`;
|
|
47
131
|
const headers = {
|
|
48
132
|
"X-API-Token": token,
|
|
@@ -72,20 +156,10 @@ export class FaqKbApiClient {
|
|
|
72
156
|
return res.json();
|
|
73
157
|
}
|
|
74
158
|
// ── Convenience wrappers ────────────────────────────────────────────
|
|
75
|
-
get(path) {
|
|
76
|
-
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
}
|
|
81
|
-
put(path, body) {
|
|
82
|
-
return this.request("PUT", path, body);
|
|
83
|
-
}
|
|
84
|
-
del(path, body) {
|
|
85
|
-
return this.request("DELETE", path, body);
|
|
86
|
-
}
|
|
87
|
-
patch(path, body) {
|
|
88
|
-
return this.request("PATCH", path, body);
|
|
89
|
-
}
|
|
159
|
+
get(path) { return this.request("GET", path); }
|
|
160
|
+
post(path, body) { return this.request("POST", path, body); }
|
|
161
|
+
put(path, body) { return this.request("PUT", path, body); }
|
|
162
|
+
del(path, body) { return this.request("DELETE", path, body); }
|
|
163
|
+
patch(path, body) { return this.request("PATCH", path, body); }
|
|
90
164
|
}
|
|
91
165
|
//# sourceMappingURL=api-client.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api-client.js","sourceRoot":"","sources":["../../lib/api-client.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"api-client.js","sourceRoot":"","sources":["../../lib/api-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* faq_account_manage — 权限管理 tool
|
|
3
|
+
*
|
|
4
|
+
* Admin 专用操作:
|
|
5
|
+
* - grant_role: 授权用户角色和知识库范围
|
|
6
|
+
* - list_users: 列出渠道用户
|
|
7
|
+
* - my_info: 查看自己的身份和配额
|
|
8
|
+
*/
|
|
9
|
+
import { type Static } from "@sinclair/typebox";
|
|
10
|
+
import type { FaqKbApiClient } from "../lib/api-client.js";
|
|
11
|
+
export declare const AccountManageParams: import("@sinclair/typebox").TObject<{
|
|
12
|
+
action: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"grant_role">, import("@sinclair/typebox").TLiteral<"list_users">, import("@sinclair/typebox").TLiteral<"my_info">]>;
|
|
13
|
+
target_channel_user_id: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
14
|
+
target_channel_type: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
15
|
+
channel_bot_id: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
16
|
+
role: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
17
|
+
kb_scope: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>>;
|
|
18
|
+
}>;
|
|
19
|
+
export type AccountManageInput = Static<typeof AccountManageParams>;
|
|
20
|
+
export declare function executeAccountManage(client: FaqKbApiClient, params: AccountManageInput): Promise<{
|
|
21
|
+
content: Array<{
|
|
22
|
+
type: "text";
|
|
23
|
+
text: string;
|
|
24
|
+
}>;
|
|
25
|
+
}>;
|
|
26
|
+
//# sourceMappingURL=account-manage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"account-manage.d.ts","sourceRoot":"","sources":["../../tools/account-manage.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAQ,KAAK,MAAM,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,KAAK,EAAE,cAAc,EAAe,MAAM,sBAAsB,CAAC;AAExE,eAAO,MAAM,mBAAmB;;;;;;;EA0B9B,CAAC;AAEH,MAAM,MAAM,kBAAkB,GAAG,MAAM,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAEpE,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,cAAc,EACtB,MAAM,EAAE,kBAAkB,GACzB,OAAO,CAAC;IAAE,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAAE,CAAC,CAsE7D"}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* faq_account_manage — 权限管理 tool
|
|
3
|
+
*
|
|
4
|
+
* Admin 专用操作:
|
|
5
|
+
* - grant_role: 授权用户角色和知识库范围
|
|
6
|
+
* - list_users: 列出渠道用户
|
|
7
|
+
* - my_info: 查看自己的身份和配额
|
|
8
|
+
*/
|
|
9
|
+
import { Type } from "@sinclair/typebox";
|
|
10
|
+
export const AccountManageParams = Type.Object({
|
|
11
|
+
action: Type.Union([
|
|
12
|
+
Type.Literal("grant_role"),
|
|
13
|
+
Type.Literal("list_users"),
|
|
14
|
+
Type.Literal("my_info"),
|
|
15
|
+
], { description: "操作类型: grant_role / list_users / my_info" }),
|
|
16
|
+
target_channel_user_id: Type.Optional(Type.String({ description: "目标用户渠道 ID(grant_role 必填)" })),
|
|
17
|
+
target_channel_type: Type.Optional(Type.String({ description: "目标用户渠道类型(默认 telegram)" })),
|
|
18
|
+
channel_bot_id: Type.Optional(Type.String({ description: "Bot 标识(默认 default)" })),
|
|
19
|
+
role: Type.Optional(Type.String({ description: "要授予的角色: viewer / editor / reviewer / admin" })),
|
|
20
|
+
kb_scope: Type.Optional(Type.Array(Type.String(), {
|
|
21
|
+
description: "可访问的知识库 ID 列表(null=全部)",
|
|
22
|
+
})),
|
|
23
|
+
});
|
|
24
|
+
export async function executeAccountManage(client, params) {
|
|
25
|
+
switch (params.action) {
|
|
26
|
+
case "grant_role": {
|
|
27
|
+
if (!params.target_channel_user_id || !params.role) {
|
|
28
|
+
return {
|
|
29
|
+
content: [
|
|
30
|
+
{
|
|
31
|
+
type: "text",
|
|
32
|
+
text: "grant_role 需要 target_channel_user_id 和 role 参数",
|
|
33
|
+
},
|
|
34
|
+
],
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
const res = await client.post("/auth/grant_role", {
|
|
38
|
+
target_channel_user_id: params.target_channel_user_id,
|
|
39
|
+
target_channel_type: params.target_channel_type ?? "telegram",
|
|
40
|
+
channel_bot_id: params.channel_bot_id ?? "default",
|
|
41
|
+
role: params.role,
|
|
42
|
+
kb_scope: params.kb_scope ?? null,
|
|
43
|
+
});
|
|
44
|
+
return {
|
|
45
|
+
content: [{ type: "text", text: res.message || "授权成功" }],
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
case "list_users": {
|
|
49
|
+
const qp = new URLSearchParams();
|
|
50
|
+
if (params.target_channel_type)
|
|
51
|
+
qp.set("channel_type", params.target_channel_type);
|
|
52
|
+
if (params.channel_bot_id)
|
|
53
|
+
qp.set("channel_bot_id", params.channel_bot_id);
|
|
54
|
+
const res = await client.get(`/auth/channel_users?${qp.toString()}`);
|
|
55
|
+
const users = res.data?.users ?? [];
|
|
56
|
+
const lines = [`渠道用户列表(共 ${users.length} 人):`];
|
|
57
|
+
for (const u of users) {
|
|
58
|
+
const scope = u.kb_scope ? `[${u.kb_scope.length} 个 KB]` : "[全部]";
|
|
59
|
+
lines.push(` ${u.name} 角色=${u.role} 渠道=${u.channel_type} 范围=${scope}`);
|
|
60
|
+
}
|
|
61
|
+
if (users.length === 0)
|
|
62
|
+
lines.push(" (暂无用户)");
|
|
63
|
+
return { content: [{ type: "text", text: lines.join("\n") }] };
|
|
64
|
+
}
|
|
65
|
+
case "my_info": {
|
|
66
|
+
const res = await client.get("/oauth/me");
|
|
67
|
+
const d = res.data;
|
|
68
|
+
const lines = [
|
|
69
|
+
"当前用户信息:",
|
|
70
|
+
` 用户 ID: ${d.user_id}`,
|
|
71
|
+
` 名称: ${d.name}`,
|
|
72
|
+
` 角色: ${d.role}`,
|
|
73
|
+
` 渠道: ${d.channel_type}`,
|
|
74
|
+
` 知识库范围: ${d.kb_scope ? JSON.stringify(d.kb_scope) : "全部"}`,
|
|
75
|
+
];
|
|
76
|
+
return { content: [{ type: "text", text: lines.join("\n") }] };
|
|
77
|
+
}
|
|
78
|
+
default:
|
|
79
|
+
return {
|
|
80
|
+
content: [
|
|
81
|
+
{
|
|
82
|
+
type: "text",
|
|
83
|
+
text: "未知操作,可选: grant_role / list_users / my_info",
|
|
84
|
+
},
|
|
85
|
+
],
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
//# sourceMappingURL=account-manage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"account-manage.js","sourceRoot":"","sources":["../../tools/account-manage.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* faq_account_register — OAuth 用户注册/登录
|
|
3
|
+
*
|
|
4
|
+
* 社媒用户首次使用时自动调用,完成 OAuth 注册并缓存 JWT。
|
|
5
|
+
*/
|
|
6
|
+
import { type Static } from "@sinclair/typebox";
|
|
7
|
+
import type { FaqKbApiClient } from "../lib/api-client.js";
|
|
8
|
+
export declare const AccountRegisterParams: import("@sinclair/typebox").TObject<{
|
|
9
|
+
channel_type: import("@sinclair/typebox").TString;
|
|
10
|
+
channel_user_id: import("@sinclair/typebox").TString;
|
|
11
|
+
display_name: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
12
|
+
channel_bot_id: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
13
|
+
}>;
|
|
14
|
+
export type AccountRegisterInput = Static<typeof AccountRegisterParams>;
|
|
15
|
+
export declare function executeAccountRegister(client: FaqKbApiClient, params: AccountRegisterInput): Promise<{
|
|
16
|
+
content: Array<{
|
|
17
|
+
type: "text";
|
|
18
|
+
text: string;
|
|
19
|
+
}>;
|
|
20
|
+
}>;
|
|
21
|
+
//# sourceMappingURL=account-register.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"account-register.d.ts","sourceRoot":"","sources":["../../tools/account-register.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAQ,KAAK,MAAM,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,KAAK,EAAE,cAAc,EAAoB,MAAM,sBAAsB,CAAC;AAE7E,eAAO,MAAM,qBAAqB;;;;;EAahC,CAAC;AAEH,MAAM,MAAM,oBAAoB,GAAG,MAAM,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAExE,wBAAsB,sBAAsB,CAC1C,MAAM,EAAE,cAAc,EACtB,MAAM,EAAE,oBAAoB,GAC3B,OAAO,CAAC;IAAE,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAAE,CAAC,CAmB7D"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* faq_account_register — OAuth 用户注册/登录
|
|
3
|
+
*
|
|
4
|
+
* 社媒用户首次使用时自动调用,完成 OAuth 注册并缓存 JWT。
|
|
5
|
+
*/
|
|
6
|
+
import { Type } from "@sinclair/typebox";
|
|
7
|
+
export const AccountRegisterParams = Type.Object({
|
|
8
|
+
channel_type: Type.String({
|
|
9
|
+
description: "渠道类型: telegram / discord / slack / web",
|
|
10
|
+
}),
|
|
11
|
+
channel_user_id: Type.String({
|
|
12
|
+
description: "渠道平台用户唯一标识(如 Telegram user ID)",
|
|
13
|
+
}),
|
|
14
|
+
display_name: Type.Optional(Type.String({ description: "用户显示名称(可选)" })),
|
|
15
|
+
channel_bot_id: Type.Optional(Type.String({ description: "Bot 标识,默认 default" })),
|
|
16
|
+
});
|
|
17
|
+
export async function executeAccountRegister(client, params) {
|
|
18
|
+
const result = await client.oauthLogin({
|
|
19
|
+
channel_type: params.channel_type,
|
|
20
|
+
channel_user_id: params.channel_user_id,
|
|
21
|
+
channel_bot_id: params.channel_bot_id ?? "default",
|
|
22
|
+
display_name: params.display_name ?? "",
|
|
23
|
+
});
|
|
24
|
+
const lines = [];
|
|
25
|
+
if (result.is_new) {
|
|
26
|
+
lines.push("注册成功!已为你创建账号。");
|
|
27
|
+
}
|
|
28
|
+
else {
|
|
29
|
+
lines.push("登录成功!欢迎回来。");
|
|
30
|
+
}
|
|
31
|
+
lines.push(` 用户 ID: ${result.user_id}`);
|
|
32
|
+
lines.push(` 角色: ${result.role}`);
|
|
33
|
+
lines.push(` Token 有效期: ${Math.round(result.expires_in / 3600)} 小时`);
|
|
34
|
+
return { content: [{ type: "text", text: lines.join("\n") }] };
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=account-register.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"account-register.js","sourceRoot":"","sources":["../../tools/account-register.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,IAAI,EAAe,MAAM,mBAAmB,CAAC;AAGtD,MAAM,CAAC,MAAM,qBAAqB,GAAG,IAAI,CAAC,MAAM,CAAC;IAC/C,YAAY,EAAE,IAAI,CAAC,MAAM,CAAC;QACxB,WAAW,EAAE,wCAAwC;KACtD,CAAC;IACF,eAAe,EAAE,IAAI,CAAC,MAAM,CAAC;QAC3B,WAAW,EAAE,gCAAgC;KAC9C,CAAC;IACF,YAAY,EAAE,IAAI,CAAC,QAAQ,CACzB,IAAI,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,YAAY,EAAE,CAAC,CAC3C;IACD,cAAc,EAAE,IAAI,CAAC,QAAQ,CAC3B,IAAI,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,mBAAmB,EAAE,CAAC,CAClD;CACF,CAAC,CAAC;AAIH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,MAAsB,EACtB,MAA4B;IAE5B,MAAM,MAAM,GAAqB,MAAM,MAAM,CAAC,UAAU,CAAC;QACvD,YAAY,EAAE,MAAM,CAAC,YAAY;QACjC,eAAe,EAAE,MAAM,CAAC,eAAe;QACvC,cAAc,EAAE,MAAM,CAAC,cAAc,IAAI,SAAS;QAClD,YAAY,EAAE,MAAM,CAAC,YAAY,IAAI,EAAE;KACxC,CAAC,CAAC;IAEH,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QAClB,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;IAC9B,CAAC;SAAM,CAAC;QACN,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAC3B,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,YAAY,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;IACzC,KAAK,CAAC,IAAI,CAAC,SAAS,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;IACnC,KAAK,CAAC,IAAI,CAAC,gBAAgB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;IAEtE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;AAC1E,CAAC"}
|
package/dist/tools/query-kb.d.ts
CHANGED
|
@@ -1,14 +1,15 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Tool
|
|
2
|
+
* Tool — faq_kb_query
|
|
3
3
|
*
|
|
4
|
-
* Ask a question against a trained knowledge base
|
|
5
|
-
*
|
|
4
|
+
* Ask a question against a trained knowledge base.
|
|
5
|
+
* Accepts either kb_id or kb_name (name preferred for UX).
|
|
6
6
|
*/
|
|
7
7
|
import { type Static } from "@sinclair/typebox";
|
|
8
8
|
import type { FaqKbApiClient } from "../lib/api-client.js";
|
|
9
9
|
export declare const QueryParams: import("@sinclair/typebox").TObject<{
|
|
10
|
-
kb_id: import("@sinclair/typebox").TString;
|
|
11
10
|
question: import("@sinclair/typebox").TString;
|
|
11
|
+
kb_name: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
12
|
+
kb_id: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
12
13
|
enable_polish: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
|
|
13
14
|
user_id: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
14
15
|
session_id: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"query-kb.d.ts","sourceRoot":"","sources":["../../tools/query-kb.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAQ,KAAK,MAAM,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,KAAK,EAAE,cAAc,EAAe,MAAM,sBAAsB,CAAC;AAExE,eAAO,MAAM,WAAW
|
|
1
|
+
{"version":3,"file":"query-kb.d.ts","sourceRoot":"","sources":["../../tools/query-kb.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAQ,KAAK,MAAM,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,KAAK,EAAE,cAAc,EAAe,MAAM,sBAAsB,CAAC;AAExE,eAAO,MAAM,WAAW;;;;;;;EAoBtB,CAAC;AAEH,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,WAAW,CAAC,CAAC;AAiBpD,wBAAsB,YAAY,CAChC,MAAM,EAAE,cAAc,EACtB,MAAM,EAAE,UAAU;;;;;GAoEnB"}
|
package/dist/tools/query-kb.js
CHANGED
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Tool
|
|
2
|
+
* Tool — faq_kb_query
|
|
3
3
|
*
|
|
4
|
-
* Ask a question against a trained knowledge base
|
|
5
|
-
*
|
|
4
|
+
* Ask a question against a trained knowledge base.
|
|
5
|
+
* Accepts either kb_id or kb_name (name preferred for UX).
|
|
6
6
|
*/
|
|
7
7
|
import { Type } from "@sinclair/typebox";
|
|
8
8
|
export const QueryParams = Type.Object({
|
|
9
|
-
kb_id: Type.String({ description: "知识库 ID" }),
|
|
10
9
|
question: Type.String({ description: "要查询的问题" }),
|
|
10
|
+
kb_name: Type.Optional(Type.String({ description: "知识库名称(推荐,支持模糊匹配)" })),
|
|
11
|
+
kb_id: Type.Optional(Type.String({ description: "知识库 ID(精确匹配,可选)" })),
|
|
11
12
|
enable_polish: Type.Optional(Type.Boolean({
|
|
12
13
|
description: "是否启用 LLM 综合分析(多 FAQ 融合生成更自然的答案)。默认 false",
|
|
13
14
|
})),
|
|
@@ -15,17 +16,42 @@ export const QueryParams = Type.Object({
|
|
|
15
16
|
session_id: Type.Optional(Type.String({ description: "会话 ID(用于上下文关联)" })),
|
|
16
17
|
});
|
|
17
18
|
export async function executeQuery(client, params) {
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
19
|
+
if (!params.kb_id && !params.kb_name) {
|
|
20
|
+
return textResult("请提供知识库名称(kb_name)或 ID(kb_id)");
|
|
21
|
+
}
|
|
22
|
+
let res;
|
|
23
|
+
if (params.kb_name && !params.kb_id) {
|
|
24
|
+
res = await client.post("/knowledge_bases/query_by_name", {
|
|
25
|
+
kb_name: params.kb_name,
|
|
26
|
+
question: params.question,
|
|
27
|
+
enable_polish: params.enable_polish ?? false,
|
|
28
|
+
user_id: params.user_id ?? null,
|
|
29
|
+
session_id: params.session_id ?? null,
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
else {
|
|
33
|
+
res = await client.post(`/knowledge_bases/${params.kb_id}/query`, {
|
|
34
|
+
question: params.question,
|
|
35
|
+
enable_polish: params.enable_polish ?? false,
|
|
36
|
+
user_id: params.user_id ?? null,
|
|
37
|
+
session_id: params.session_id ?? null,
|
|
38
|
+
});
|
|
39
|
+
}
|
|
24
40
|
if (!res.success) {
|
|
25
|
-
|
|
41
|
+
const candidates = res.data?.candidates;
|
|
42
|
+
if (candidates?.length) {
|
|
43
|
+
const list = candidates
|
|
44
|
+
.map((c) => ` • ${c.name} (ID: ${c.id})`)
|
|
45
|
+
.join("\n");
|
|
46
|
+
return textResult(`${res.message}\n\n可选知识库:\n${list}`);
|
|
47
|
+
}
|
|
48
|
+
return textResult(`[ERROR] ${res.message}`);
|
|
26
49
|
}
|
|
27
50
|
const d = res.data;
|
|
28
51
|
const lines = [];
|
|
52
|
+
if (d.kb_name) {
|
|
53
|
+
lines.push(`**知识库**: ${d.kb_name}`);
|
|
54
|
+
}
|
|
29
55
|
lines.push(`**答案**: ${d.answer || "(无答案)"}`);
|
|
30
56
|
if (d.faq_data?.question) {
|
|
31
57
|
lines.push(`**匹配问题**: ${d.faq_data.question}`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"query-kb.js","sourceRoot":"","sources":["../../tools/query-kb.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,IAAI,EAAe,MAAM,mBAAmB,CAAC;AAGtD,MAAM,CAAC,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC;IACrC,
|
|
1
|
+
{"version":3,"file":"query-kb.js","sourceRoot":"","sources":["../../tools/query-kb.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,IAAI,EAAe,MAAM,mBAAmB,CAAC;AAGtD,MAAM,CAAC,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC;IACrC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAC;IAChD,OAAO,EAAE,IAAI,CAAC,QAAQ,CACpB,IAAI,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,kBAAkB,EAAE,CAAC,CACjD;IACD,KAAK,EAAE,IAAI,CAAC,QAAQ,CAClB,IAAI,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,iBAAiB,EAAE,CAAC,CAChD;IACD,aAAa,EAAE,IAAI,CAAC,QAAQ,CAC1B,IAAI,CAAC,OAAO,CAAC;QACX,WAAW,EACT,0CAA0C;KAC7C,CAAC,CACH;IACD,OAAO,EAAE,IAAI,CAAC,QAAQ,CACpB,IAAI,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,gBAAgB,EAAE,CAAC,CAC/C;IACD,UAAU,EAAE,IAAI,CAAC,QAAQ,CACvB,IAAI,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,gBAAgB,EAAE,CAAC,CAC/C;CACF,CAAC,CAAC;AAmBH,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,MAAsB,EACtB,MAAkB;IAElB,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACrC,OAAO,UAAU,CAAC,8BAA8B,CAAC,CAAC;IACpD,CAAC;IAED,IAAI,GAA2B,CAAC;IAEhC,IAAI,MAAM,CAAC,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QACpC,GAAG,GAAG,MAAM,MAAM,CAAC,IAAI,CACrB,gCAAgC,EAChC;YACE,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,aAAa,EAAE,MAAM,CAAC,aAAa,IAAI,KAAK;YAC5C,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,IAAI;YAC/B,UAAU,EAAE,MAAM,CAAC,UAAU,IAAI,IAAI;SACtC,CACF,CAAC;IACJ,CAAC;SAAM,CAAC;QACN,GAAG,GAAG,MAAM,MAAM,CAAC,IAAI,CACrB,oBAAoB,MAAM,CAAC,KAAK,QAAQ,EACxC;YACE,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,aAAa,EAAE,MAAM,CAAC,aAAa,IAAI,KAAK;YAC5C,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,IAAI;YAC/B,UAAU,EAAE,MAAM,CAAC,UAAU,IAAI,IAAI;SACtC,CACF,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;QACjB,MAAM,UAAU,GAAG,GAAG,CAAC,IAAI,EAAE,UAAU,CAAC;QACxC,IAAI,UAAU,EAAE,MAAM,EAAE,CAAC;YACvB,MAAM,IAAI,GAAG,UAAU;iBACpB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC;iBACzC,IAAI,CAAC,IAAI,CAAC,CAAC;YACd,OAAO,UAAU,CAAC,GAAG,GAAG,CAAC,OAAO,eAAe,IAAI,EAAE,CAAC,CAAC;QACzD,CAAC;QACD,OAAO,UAAU,CAAC,WAAW,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;IAC9C,CAAC;IAED,MAAM,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC;IACnB,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC;QACd,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;IACtC,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,MAAM,IAAI,OAAO,EAAE,CAAC,CAAC;IAE7C,IAAI,CAAC,CAAC,QAAQ,EAAE,QAAQ,EAAE,CAAC;QACzB,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC;IACjD,CAAC;IAED,IAAI,CAAC,CAAC,YAAY,EAAE,MAAM,EAAE,CAAC;QAC3B,MAAM,QAAQ,GAAG,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC;QAC1C,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YAC3B,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QACzD,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC;IACpD,CAAC;IAED,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC;QACb,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,MAAM,WAAW,CAAC,CAAC;IAChD,CAAC;IAED,OAAO,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACtC,CAAC;AAED,SAAS,UAAU,CAAC,IAAY;IAC9B,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;AACxD,CAAC"}
|
|
Binary file
|
package/package.json
CHANGED