@my-life-buddies/buddy-runtime 0.9.0 → 0.11.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/README.md +222 -134
- package/dist/conversation/agent.d.ts +10 -4
- package/dist/conversation/agent.d.ts.map +1 -1
- package/dist/conversation/agent.js +93 -68
- package/dist/conversation/agent.js.map +1 -1
- package/dist/conversation/compaction.d.ts +2 -2
- package/dist/conversation/compaction.d.ts.map +1 -1
- package/dist/conversation/compaction.js +1 -1
- package/dist/conversation/compaction.js.map +1 -1
- package/dist/conversation/index.d.ts +12 -10
- package/dist/conversation/index.d.ts.map +1 -1
- package/dist/conversation/index.js +20 -20
- package/dist/conversation/index.js.map +1 -1
- package/dist/dataAccessCatalog.d.ts +56 -0
- package/dist/dataAccessCatalog.d.ts.map +1 -0
- package/dist/dataAccessCatalog.js +18 -0
- package/dist/dataAccessCatalog.js.map +1 -0
- package/dist/index.d.ts +5 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/mlbClient.d.ts +5 -7
- package/dist/mlbClient.d.ts.map +1 -1
- package/dist/mlbClient.js +6 -18
- package/dist/mlbClient.js.map +1 -1
- package/dist/model.d.ts +8 -1
- package/dist/model.d.ts.map +1 -1
- package/dist/model.js +12 -6
- package/dist/model.js.map +1 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +25 -35
- package/dist/server.js.map +1 -1
- package/dist/tools/dataAccess.d.ts +1 -1
- package/dist/tools/dataAccess.d.ts.map +1 -1
- package/dist/tools/dataAccess.js +4 -4
- package/dist/tools/dataAccess.js.map +1 -1
- package/dist/tools/dataAccessRequest.d.ts +7 -0
- package/dist/tools/dataAccessRequest.d.ts.map +1 -0
- package/dist/tools/{permissions.js → dataAccessRequest.js} +7 -7
- package/dist/tools/dataAccessRequest.js.map +1 -0
- package/dist/tools/registry.d.ts +1 -4
- package/dist/tools/registry.d.ts.map +1 -1
- package/dist/tools/registry.js +1 -15
- package/dist/tools/registry.js.map +1 -1
- package/dist/tools/resource.d.ts +4 -3
- package/dist/tools/resource.d.ts.map +1 -1
- package/dist/tools/resource.js +18 -13
- package/dist/tools/resource.js.map +1 -1
- package/dist/tools/{widgets.d.ts → widget.d.ts} +6 -4
- package/dist/tools/widget.d.ts.map +1 -0
- package/dist/tools/{widgets.js → widget.js} +13 -9
- package/dist/tools/widget.js.map +1 -0
- package/dist/types.d.ts +56 -33
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +5 -3
- package/dist/types.js.map +1 -1
- package/package.json +2 -2
- package/dist/tools/permissions.d.ts +0 -7
- package/dist/tools/permissions.d.ts.map +0 -1
- package/dist/tools/permissions.js.map +0 -1
- package/dist/tools/widgets.d.ts.map +0 -1
- package/dist/tools/widgets.js.map +0 -1
package/dist/server.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// 进程级入口:一只搭子起来后长什么样。
|
|
2
|
-
//
|
|
3
|
-
// 建日志 / MLBClient
|
|
2
|
+
// 管:收 start 参数里的搭子 id 与令牌(必填)、定网关地址(缺省连 ecs-test,开发者不用填,设了环境变量 MLB_GATEWAY_URL 才覆盖)、
|
|
3
|
+
// 建日志 / MLBClient、启动时读一次 resources/ 目录里的资料、启动时把 widgets/ 目录里的小挂件逐个上传平台(有一个传不上就启动失败)、按会话键管一张 ConversationHandle 表、
|
|
4
4
|
// 把事件流的 message / welcome / delete 分发给对应会话、每 60 秒淘汰不忙且 30 分钟没消息的会话(淘汰前历史超过触发线的拍快照、回收后在后台压缩写回,见 conversation/compaction.ts)、stop 时把一切收掉。
|
|
5
5
|
// 不管:会话里的纪律(conversation/ 目录)、协议细节(mlbClient.ts)。没有 HTTP 面、没有主动触达、没有会话列表。
|
|
6
6
|
import { existsSync } from "node:fs";
|
|
@@ -9,9 +9,10 @@ import { compactConversation } from "./conversation/compaction.js";
|
|
|
9
9
|
import { ConversationHandle } from "./conversation/index.js";
|
|
10
10
|
import { createLogger, errorText } from "./log.js";
|
|
11
11
|
import { EventStream, MLBClient } from "./mlbClient.js";
|
|
12
|
-
import {
|
|
12
|
+
import { streamFn } from "./model.js";
|
|
13
13
|
import { loadResources } from "./tools/resource.js";
|
|
14
|
-
import { loadWidgets } from "./tools/
|
|
14
|
+
import { loadWidgets } from "./tools/widget.js";
|
|
15
|
+
import { dataAccessCapability } from "./dataAccessCatalog.js";
|
|
15
16
|
/** 缺省连的网关:测试环境 ecs-test。环境变量 MLB_GATEWAY_URL 有值时以它为准 */
|
|
16
17
|
const DEFAULT_GATEWAY_URL = "http://47.116.168.81:8788";
|
|
17
18
|
/** 资料目录:搭子目录下的 resources/(搭子目录怎么定见 buddyDir) */
|
|
@@ -21,19 +22,11 @@ const WIDGETS_DIR = "widgets";
|
|
|
21
22
|
/** 空闲淘汰:多久扫一次、多久没消息算空闲 */
|
|
22
23
|
const SWEEP_INTERVAL_MS = 60_000;
|
|
23
24
|
const IDLE_AFTER_MS = 30 * 60_000;
|
|
24
|
-
function
|
|
25
|
-
const value = process.env[name];
|
|
26
|
-
if (value === undefined || value === "") {
|
|
27
|
-
throw new Error(`缺环境变量 ${name}(${meaning}):平台托管时由平台注入;本地跑请在 .env 里设`);
|
|
28
|
-
}
|
|
29
|
-
return value;
|
|
30
|
-
}
|
|
31
|
-
function dataRequirementDeclarations(value) {
|
|
25
|
+
function dataRequirementsOf(value) {
|
|
32
26
|
if (!Array.isArray(value))
|
|
33
27
|
throw new Error("BuddyServer.start 需要 dataRequirements 数组;不需要用户数据时传 []");
|
|
34
|
-
const declarations = value;
|
|
35
28
|
const seen = new Set();
|
|
36
|
-
return
|
|
29
|
+
return value.map((item) => {
|
|
37
30
|
const id = item.id.trim();
|
|
38
31
|
const purpose = item.purpose.trim();
|
|
39
32
|
if (!id)
|
|
@@ -42,12 +35,15 @@ function dataRequirementDeclarations(value) {
|
|
|
42
35
|
throw new Error(`dataRequirements 的 ${id} 需要 1~200 字用途说明`);
|
|
43
36
|
if (seen.has(id))
|
|
44
37
|
throw new Error(`dataRequirements 的 Dataset 重复:${id}`);
|
|
38
|
+
const capability = dataAccessCapability(id);
|
|
39
|
+
if (!capability)
|
|
40
|
+
throw new Error(`dataRequirements 包含 Runtime 不支持的 Dataset:${id}`);
|
|
45
41
|
seen.add(id);
|
|
46
|
-
return {
|
|
42
|
+
return { ...capability, purpose };
|
|
47
43
|
});
|
|
48
44
|
}
|
|
49
45
|
/**
|
|
50
|
-
* 搭子目录:从入口脚本(process.argv[1],如 <搭子目录>/src/
|
|
46
|
+
* 搭子目录:从入口脚本(process.argv[1],如 <搭子目录>/src/index.ts)往上找,最近一个有 package.json 的目录。
|
|
51
47
|
* 这样进程从哪个工作目录起都找得对;拿不到入口脚本(比如在 REPL 里起)或一路找不到时,退回工作目录。
|
|
52
48
|
*/
|
|
53
49
|
function buddyDir() {
|
|
@@ -67,32 +63,27 @@ function buddyDir() {
|
|
|
67
63
|
export class BuddyServer {
|
|
68
64
|
/** 起一只搭子:连上事件流,之后消息来一条处理一条。返回的 handle 只有 stop */
|
|
69
65
|
static async start(options) {
|
|
70
|
-
const buddyId
|
|
71
|
-
|
|
66
|
+
const { buddyId, token } = options;
|
|
67
|
+
if (!buddyId)
|
|
68
|
+
throw new Error("BuddyServer.start 需要 buddyId(搭子 id)");
|
|
69
|
+
if (!token)
|
|
70
|
+
throw new Error("BuddyServer.start 需要 token(搭子令牌)");
|
|
72
71
|
const gatewayUrl = process.env.MLB_GATEWAY_URL || DEFAULT_GATEWAY_URL;
|
|
73
72
|
const log = createLogger(buddyId);
|
|
74
73
|
const client = new MLBClient({ gatewayUrl, token, log });
|
|
75
|
-
const
|
|
76
|
-
const declarations = dataRequirementDeclarations(options.dataRequirements);
|
|
77
|
-
let dataRequirements;
|
|
78
|
-
try {
|
|
79
|
-
dataRequirements = await client.replaceDataRequirements(declarations);
|
|
80
|
-
}
|
|
81
|
-
catch (e) {
|
|
82
|
-
throw new Error(`DataAccess 声明没传上平台:${errorText(e)}`);
|
|
83
|
-
}
|
|
74
|
+
const dataRequirements = dataRequirementsOf(options.dataRequirements);
|
|
84
75
|
if (dataRequirements.length > 0)
|
|
85
|
-
log.info("DataAccess
|
|
76
|
+
log.info("DataAccess 声明已加载", { datasets: dataRequirements.map((item) => item.id) });
|
|
86
77
|
else
|
|
87
78
|
log.info("没有 DataAccess 声明");
|
|
88
79
|
const dir = buddyDir();
|
|
89
|
-
// 资料:启动时读一次,之后每场会话共用;没有这个目录或里面没有 .md
|
|
80
|
+
// 资料:启动时读一次,之后每场会话共用;没有这个目录或里面没有 .md,resource_list 回「没有资料」
|
|
90
81
|
const resourcesDir = join(dir, RESOURCES_DIR);
|
|
91
82
|
const resources = existsSync(resourcesDir) ? loadResources(resourcesDir) : [];
|
|
92
83
|
if (resources.length > 0)
|
|
93
|
-
log.info("
|
|
84
|
+
log.info("资料已读入", { dir: resourcesDir, files: resources.map((r) => r.file) });
|
|
94
85
|
else
|
|
95
|
-
log.info("
|
|
86
|
+
log.info("没有资料", { dir: resourcesDir, exists: existsSync(resourcesDir) });
|
|
96
87
|
// 小挂件:启动时把 widgets/ 下每个目录的 schema.json 与 index.html 传给平台,之后每场会话共用这份类型目录。
|
|
97
88
|
// 有一个读不出或传不上(缺文件、schema 不合法、网络不通)就启动失败:带着缺了类型的目录跑起来,模型建不出该有的小挂件
|
|
98
89
|
const widgetsDir = join(dir, WIDGETS_DIR);
|
|
@@ -121,11 +112,10 @@ export class BuddyServer {
|
|
|
121
112
|
if (existing !== undefined && !existing.closed)
|
|
122
113
|
return existing;
|
|
123
114
|
const conversation = new ConversationHandle({
|
|
124
|
-
errorReply: options.errorReply,
|
|
125
115
|
key,
|
|
126
116
|
buddyId,
|
|
127
117
|
client,
|
|
128
|
-
|
|
118
|
+
gatewayUrl,
|
|
129
119
|
streamFn,
|
|
130
120
|
token,
|
|
131
121
|
widgetTypes,
|
|
@@ -191,7 +181,7 @@ export class BuddyServer {
|
|
|
191
181
|
return;
|
|
192
182
|
const abort = new AbortController();
|
|
193
183
|
compactions.set(key, abort);
|
|
194
|
-
void compactConversation({ client, key, buddyId,
|
|
184
|
+
void compactConversation({ client, key, buddyId, streamFn, token, log, signal: abort.signal }, snapshot)
|
|
195
185
|
.catch((e) => log.warn("压缩失败,下次回收再试", { convoKey: key, error: errorText(e) }))
|
|
196
186
|
.finally(() => {
|
|
197
187
|
if (compactions.get(key) === abort)
|
|
@@ -211,7 +201,7 @@ export class BuddyServer {
|
|
|
211
201
|
}
|
|
212
202
|
}, SWEEP_INTERVAL_MS);
|
|
213
203
|
sweeper.unref();
|
|
214
|
-
log.info("搭子已启动", { buddyId, gatewayUrl
|
|
204
|
+
log.info("搭子已启动", { buddyId, gatewayUrl });
|
|
215
205
|
return {
|
|
216
206
|
stop: async () => {
|
|
217
207
|
stopped = true;
|
package/dist/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,qBAAqB;AACrB,
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
|
|
@@ -32,7 +32,7 @@ export declare class DataAccessUsageTracker {
|
|
|
32
32
|
private used;
|
|
33
33
|
track(tool: AgentTool): AgentTool;
|
|
34
34
|
runForTool<T>(toolCallId: string, action: () => Promise<T>): Promise<T>;
|
|
35
|
-
query(client: MLBClient, convoKey: string, datasets: string[], memberId?: string, signal?: AbortSignal): Promise<DatasetAccessResult[]>;
|
|
35
|
+
query(client: MLBClient, convoKey: string, datasets: string[], requirements: readonly DataRequirement[], memberId?: string, signal?: AbortSignal): Promise<DatasetAccessResult[]>;
|
|
36
36
|
/** Proactive Run 内把查询绑定到短期 capability token;离开作用域自动恢复普通会话查询。 */
|
|
37
37
|
withQuery<T>(query: (datasets: string[], memberId?: string, signal?: AbortSignal) => Promise<DatasetAccessResult[]>, action: () => Promise<T>): Promise<T>;
|
|
38
38
|
assertWritable(): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dataAccess.d.ts","sourceRoot":"","sources":["../../src/tools/dataAccess.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAmB,MAAM,+BAA+B,CAAC;AAC9F,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAE/B,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,KAAK,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAExE,eAAO,MAAM,qBAAqB,sBAAsB,CAAC;AAEzD,QAAA,MAAM,WAAW;;;EAQf,CAAC;AAEH,MAAM,WAAW,qBAAqB;IACrC,IAAI,EAAE,aAAa,CAAC;IACpB,QAAQ,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,mBAAmB,CAAC,QAAQ,CAAC,CAAA;KAAE,EAAE,CAAC;CAClE;AAED,8CAA8C;AAC9C,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,mBAAmB,EAAE,GAAG,qBAAqB,CAEvF;AAED,sCAAsC;AACtC,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAG1D;AAED,4DAA4D;AAC5D,eAAO,MAAM,2BAA2B,qJAA6B,CAAC;AAEtE,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,qBAAqB,CASlF;AAED;;;GAGG;AACH,qBAAa,sBAAsB;IAClC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAmC;IAC9D,OAAO,CAAC,QAAQ,CAAC,aAAa,CAA4H;IAC1J,OAAO,CAAC,QAAQ,CAAC,KAAK,CAA4C;IAClE,OAAO,CAAC,IAAI,CAAS;IAErB,KAAK,CAAC,IAAI,EAAE,SAAS,GAAG,SAAS;IAOjC,UAAU,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAIjE,KAAK,CAAC,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,mBAAmB,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"dataAccess.d.ts","sourceRoot":"","sources":["../../src/tools/dataAccess.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAmB,MAAM,+BAA+B,CAAC;AAC9F,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAE/B,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,KAAK,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAExE,eAAO,MAAM,qBAAqB,sBAAsB,CAAC;AAEzD,QAAA,MAAM,WAAW;;;EAQf,CAAC;AAEH,MAAM,WAAW,qBAAqB;IACrC,IAAI,EAAE,aAAa,CAAC;IACpB,QAAQ,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,mBAAmB,CAAC,QAAQ,CAAC,CAAA;KAAE,EAAE,CAAC;CAClE;AAED,8CAA8C;AAC9C,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,mBAAmB,EAAE,GAAG,qBAAqB,CAEvF;AAED,sCAAsC;AACtC,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAG1D;AAED,4DAA4D;AAC5D,eAAO,MAAM,2BAA2B,qJAA6B,CAAC;AAEtE,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,qBAAqB,CASlF;AAED;;;GAGG;AACH,qBAAa,sBAAsB;IAClC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAmC;IAC9D,OAAO,CAAC,QAAQ,CAAC,aAAa,CAA4H;IAC1J,OAAO,CAAC,QAAQ,CAAC,KAAK,CAA4C;IAClE,OAAO,CAAC,IAAI,CAAS;IAErB,KAAK,CAAC,IAAI,EAAE,SAAS,GAAG,SAAS;IAOjC,UAAU,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAIjE,KAAK,CAAC,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,YAAY,EAAE,SAAS,eAAe,EAAE,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,mBAAmB,EAAE,CAAC;IAQvL,gEAAgE;IAChE,SAAS,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,mBAAmB,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAI1J,cAAc,IAAI,IAAI;IAItB,WAAW,IAAI,OAAO;IAEtB,OAAO,CAAC,UAAU,EAAE,MAAM,GAAG,qBAAqB,GAAG,SAAS;IAI9D,QAAQ,IAAI,OAAO;IAInB,aAAa,IAAI,IAAI;IAIrB,KAAK,IAAI,IAAI;IAKb,OAAO,CAAC,MAAM;CAMd;AASD,gDAAgD;AAChD,wBAAgB,cAAc,CAC7B,MAAM,EAAE,SAAS,EACjB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,sBAAsB,EAC/B,YAAY,EAAE,SAAS,eAAe,EAAE,GACtC,SAAS,CAAC,OAAO,WAAW,EAAE,qBAAqB,CAAC,CAYtD;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CACjC,QAAQ,EAAE,YAAY,EAAE,EACxB,WAAW,EAAE,YAAY,EAAE,EAC3B,mBAAmB,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,OAAO,GACnD,YAAY,EAAE,CAqBhB"}
|
package/dist/tools/dataAccess.js
CHANGED
|
@@ -57,8 +57,8 @@ export class DataAccessUsageTracker {
|
|
|
57
57
|
runForTool(toolCallId, action) {
|
|
58
58
|
return this.activeCall.run(toolCallId, action);
|
|
59
59
|
}
|
|
60
|
-
async query(client, convoKey, datasets, memberId, signal) {
|
|
61
|
-
const results = await (this.queryOverride.getStore()?.(datasets, memberId, signal) ?? client.queryDataAccess(convoKey, datasets, memberId, signal));
|
|
60
|
+
async query(client, convoKey, datasets, requirements, memberId, signal) {
|
|
61
|
+
const results = await (this.queryOverride.getStore()?.(datasets, memberId, signal) ?? client.queryDataAccess(convoKey, datasets, requirements, memberId, signal));
|
|
62
62
|
this.used = true;
|
|
63
63
|
const toolCallId = this.activeCall.getStore();
|
|
64
64
|
if (toolCallId !== undefined)
|
|
@@ -103,7 +103,7 @@ function resultForModel(results) {
|
|
|
103
103
|
}
|
|
104
104
|
/** 内置只读 Tool。真实数据会给当前回合的模型,但不会被 Runtime 持久化。 */
|
|
105
105
|
export function dataAccessTool(client, convoKey, tracker, requirements) {
|
|
106
|
-
const catalog = requirements.map((item) => `${item.id}(${item.title}):${item.purpose}`).join("\n");
|
|
106
|
+
const catalog = requirements.length === 0 ? "(没有)" : requirements.map((item) => `${item.id}(${item.title}):${item.purpose}`).join("\n");
|
|
107
107
|
return {
|
|
108
108
|
name: DATA_ACCESS_TOOL_NAME,
|
|
109
109
|
label: "正在读取授权数据",
|
|
@@ -111,7 +111,7 @@ export function dataAccessTool(client, convoKey, tracker, requirements) {
|
|
|
111
111
|
`\n你声明过的 Dataset:\n${catalog}`,
|
|
112
112
|
parameters: queryParams,
|
|
113
113
|
replay: "safe",
|
|
114
|
-
execute: async (_id, { datasets, memberId }, signal) => resultForModel(await tracker.query(client, convoKey, datasets, memberId, signal)),
|
|
114
|
+
execute: async (_id, { datasets, memberId }, signal) => resultForModel(await tracker.query(client, convoKey, datasets, requirements, memberId, signal)),
|
|
115
115
|
};
|
|
116
116
|
}
|
|
117
117
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dataAccess.js","sourceRoot":"","sources":["../../src/tools/dataAccess.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"dataAccess.js","sourceRoot":"","sources":["../../src/tools/dataAccess.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { AgentTool } from "@earendil-works/pi-agent-core";
|
|
2
|
+
import type { MLBClient } from "../mlbClient.ts";
|
|
3
|
+
import type { DataAccessRequestInput, DataRequirement, MLBMessageToWrite } from "../types.ts";
|
|
4
|
+
import type { DataAccessUsageTracker } from "./dataAccess.ts";
|
|
5
|
+
export declare function validateDataAccessRequest(input: DataAccessRequestInput, convoKey: string, requirements: readonly DataRequirement[]): DataAccessRequestInput;
|
|
6
|
+
export declare function dataAccessRequestTools(client: MLBClient, convoKey: string, enqueue: (message: MLBMessageToWrite) => void, tracker: DataAccessUsageTracker, requirements: readonly DataRequirement[], onRequested?: () => void): AgentTool[];
|
|
7
|
+
//# sourceMappingURL=dataAccessRequest.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dataAccessRequest.d.ts","sourceRoot":"","sources":["../../src/tools/dataAccessRequest.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAC;AAE/D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,KAAK,EAAE,sBAAsB,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAC9F,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AAW9D,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,sBAAsB,EAAE,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,SAAS,eAAe,EAAE,GAAG,sBAAsB,CAoB3J;AAED,wBAAgB,sBAAsB,CACrC,MAAM,EAAE,SAAS,EACjB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,CAAC,OAAO,EAAE,iBAAiB,KAAK,IAAI,EAC7C,OAAO,EAAE,sBAAsB,EAC/B,YAAY,EAAE,SAAS,eAAe,EAAE,EACxC,WAAW,CAAC,EAAE,MAAM,IAAI,GACtB,SAAS,EAAE,CA4Bb"}
|
|
@@ -6,7 +6,7 @@ const requestParams = Type.Object({
|
|
|
6
6
|
calendarDays: Type.Optional(Type.Integer({ minimum: 1, maximum: 31, description: "仅日历使用,读取未来天数" })),
|
|
7
7
|
});
|
|
8
8
|
const readParams = Type.Object({ requestId: Type.String({ minLength: 1 }) });
|
|
9
|
-
export function
|
|
9
|
+
export function validateDataAccessRequest(input, convoKey, requirements) {
|
|
10
10
|
if (!convoKey.startsWith("p_"))
|
|
11
11
|
throw new Error("权限请求卡第一期只支持私聊;请引导群成员到私聊中授权");
|
|
12
12
|
const reason = input.reason.trim();
|
|
@@ -35,22 +35,22 @@ export function validatePermissionRequest(input, convoKey, requirements) {
|
|
|
35
35
|
}
|
|
36
36
|
return { kind: input.kind, reason };
|
|
37
37
|
}
|
|
38
|
-
export function
|
|
38
|
+
export function dataAccessRequestTools(client, convoKey, enqueue, tracker, requirements, onRequested) {
|
|
39
39
|
const request = {
|
|
40
|
-
name: "
|
|
40
|
+
name: "data_access_request",
|
|
41
41
|
label: "正在请求授权",
|
|
42
42
|
description: "在私聊中向用户展示统一权限卡。HealthKit 的 datasets 必须来自已声明清单;位置和日历不要传 datasets。发卡后结束本轮并等待用户操作。",
|
|
43
43
|
parameters: requestParams,
|
|
44
44
|
execute: async (callId, params) => {
|
|
45
45
|
tracker.assertWritable();
|
|
46
|
-
const input =
|
|
47
|
-
enqueue({ type: "permissionRequest", text: input.reason, permissionRequest: input, idempotencyKey: `permission:${callId}` });
|
|
46
|
+
const input = validateDataAccessRequest(params, convoKey, requirements);
|
|
47
|
+
enqueue({ type: "permissionRequest", text: input.reason, permissionRequest: input, dataRequirements: requirements.map(({ id, purpose }) => ({ id, purpose })), idempotencyKey: `permission:${callId}` });
|
|
48
48
|
onRequested?.();
|
|
49
49
|
return { content: [{ type: "text", text: "权限请求卡已发送,请等待用户处理。" }], details: undefined, terminate: true };
|
|
50
50
|
},
|
|
51
51
|
};
|
|
52
52
|
const read = {
|
|
53
|
-
name: "
|
|
53
|
+
name: "data_access_read_result",
|
|
54
54
|
label: "正在读取授权结果",
|
|
55
55
|
description: "收到 permissionResult 后读取该 requestId 的一次性位置或日历结果。HealthKit 请使用 data_access_query。",
|
|
56
56
|
parameters: readParams,
|
|
@@ -64,4 +64,4 @@ export function permissionTools(client, convoKey, enqueue, tracker, requirements
|
|
|
64
64
|
};
|
|
65
65
|
return [request, read];
|
|
66
66
|
}
|
|
67
|
-
//# sourceMappingURL=
|
|
67
|
+
//# sourceMappingURL=dataAccessRequest.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dataAccessRequest.js","sourceRoot":"","sources":["../../src/tools/dataAccessRequest.ts"],"names":[],"mappings":"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"}
|
package/dist/tools/registry.d.ts
CHANGED
|
@@ -1,6 +1,3 @@
|
|
|
1
1
|
import type { AgentTool } from "@earendil-works/pi-agent-core";
|
|
2
|
-
export declare
|
|
3
|
-
export type PlatformToolName = typeof PLATFORM_TOOL_NAMES[number];
|
|
4
|
-
export declare function validatePlatformTools(names?: readonly PlatformToolName[]): Set<PlatformToolName>;
|
|
5
|
-
export declare function registerTools(selected: ReadonlySet<PlatformToolName>, available: AgentTool[], business: AgentTool[]): AgentTool[];
|
|
2
|
+
export declare function assertUniqueToolNames(tools: readonly AgentTool[]): void;
|
|
6
3
|
//# sourceMappingURL=registry.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/tools/registry.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/tools/registry.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAC;AAE/D,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,SAAS,SAAS,EAAE,GAAG,IAAI,CAMvE"}
|
package/dist/tools/registry.js
CHANGED
|
@@ -1,23 +1,9 @@
|
|
|
1
|
-
export
|
|
2
|
-
export function validatePlatformTools(names = []) {
|
|
3
|
-
const selected = new Set();
|
|
4
|
-
for (const name of names) {
|
|
5
|
-
if (!PLATFORM_TOOL_NAMES.includes(name))
|
|
6
|
-
throw new Error(`未知平台工具:${name}`);
|
|
7
|
-
if (selected.has(name))
|
|
8
|
-
throw new Error(`工具重复注册:${name}`);
|
|
9
|
-
selected.add(name);
|
|
10
|
-
}
|
|
11
|
-
return selected;
|
|
12
|
-
}
|
|
13
|
-
export function registerTools(selected, available, business) {
|
|
14
|
-
const tools = [...available.filter(tool => selected.has(tool.name)), ...business];
|
|
1
|
+
export function assertUniqueToolNames(tools) {
|
|
15
2
|
const names = new Set();
|
|
16
3
|
for (const tool of tools) {
|
|
17
4
|
if (names.has(tool.name))
|
|
18
5
|
throw new Error(`工具重名:${tool.name}`);
|
|
19
6
|
names.add(tool.name);
|
|
20
7
|
}
|
|
21
|
-
return tools;
|
|
22
8
|
}
|
|
23
9
|
//# sourceMappingURL=registry.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/tools/registry.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/tools/registry.ts"],"names":[],"mappings":"AAKA,MAAM,UAAU,qBAAqB,CAAC,KAA2B;IAChE,MAAM,KAAK,GAAG,IAAI,GAAG,EAAU,CAAC;IAChC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QAC1B,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QAC/D,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACtB,CAAC;AACF,CAAC"}
|
package/dist/tools/resource.d.ts
CHANGED
|
@@ -7,12 +7,13 @@ export interface Resource {
|
|
|
7
7
|
}
|
|
8
8
|
/** 读一个目录下的全部 .md,按路径排序。非 .md 一律忽略。 */
|
|
9
9
|
export declare function loadResources(dir: string): Resource[];
|
|
10
|
-
|
|
11
|
-
|
|
10
|
+
declare const RESOURCE_LIST_PARAMS: Type.TObject<{}>;
|
|
11
|
+
/** resource_list:列出全部资料的路径,每行一个,按路径排序,跟 conversation.resource.list 给的一样;没有资料时回「没有资料。」 */
|
|
12
|
+
export declare function resourceListTool(resources: Resource[]): AgentTool<typeof RESOURCE_LIST_PARAMS, undefined>;
|
|
12
13
|
declare const RESOURCE_READ_PARAMS: Type.TObject<{
|
|
13
14
|
file: Type.TString;
|
|
14
15
|
}>;
|
|
15
|
-
/** resource_read
|
|
16
|
+
/** resource_read:读一篇资料的正文。没有这篇就抛——pi 会把错误如实交给模型,让它换一篇。 */
|
|
16
17
|
export declare function resourceReadTool(resources: Resource[]): AgentTool<typeof RESOURCE_READ_PARAMS>;
|
|
17
18
|
export {};
|
|
18
19
|
//# sourceMappingURL=resource.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resource.d.ts","sourceRoot":"","sources":["../../src/tools/resource.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAE/B,MAAM,WAAW,QAAQ;IACxB,kDAAkD;IAClD,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CAChB;AAID,sCAAsC;AACtC,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,QAAQ,EAAE,CAKrD;AAeD,
|
|
1
|
+
{"version":3,"file":"resource.d.ts","sourceRoot":"","sources":["../../src/tools/resource.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAE/B,MAAM,WAAW,QAAQ;IACxB,kDAAkD;IAClD,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CAChB;AAID,sCAAsC;AACtC,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,QAAQ,EAAE,CAKrD;AAeD,QAAA,MAAM,oBAAoB,kBAAkB,CAAC;AAE7C,yFAAyF;AACzF,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,QAAQ,EAAE,GAAG,SAAS,CAAC,OAAO,oBAAoB,EAAE,SAAS,CAAC,CASzG;AAED,QAAA,MAAM,oBAAoB;;EAExB,CAAC;AAEH,0DAA0D;AAC1D,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,QAAQ,EAAE,GAAG,SAAS,CAAC,OAAO,oBAAoB,CAAC,CAa9F"}
|
package/dist/tools/resource.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
// resource_read
|
|
1
|
+
// resource_list / resource_read:让模型先看有哪些 markdown 资料,再按需读一篇。
|
|
2
2
|
//
|
|
3
3
|
// 资料 = 搭子目录下 resources/ 里的 .md 文件(递归,跳过 node_modules 与点目录),路径相对 resources/。
|
|
4
|
-
//
|
|
5
|
-
// 不管:什么时候读目录(server.ts
|
|
4
|
+
// 这里只管资料本身:把目录读成清单、造列清单和读一篇两个工具。
|
|
5
|
+
// 不管:什么时候读目录(server.ts 启动时读一次)、工具怎么交给开发者(conversation/agent.ts 挂在 conversation.tools 上,开发者放进 initialState.tools)。
|
|
6
6
|
import { readdirSync, readFileSync, statSync } from "node:fs";
|
|
7
7
|
import { join, relative } from "node:path";
|
|
8
8
|
import { Type } from "typebox";
|
|
@@ -28,28 +28,33 @@ function walk(root, dir, out) {
|
|
|
28
28
|
out.push({ file: relative(root, full), content: readFileSync(full, "utf8") });
|
|
29
29
|
}
|
|
30
30
|
}
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
31
|
+
const RESOURCE_LIST_PARAMS = Type.Object({});
|
|
32
|
+
/** resource_list:列出全部资料的路径,每行一个,按路径排序,跟 conversation.resource.list 给的一样;没有资料时回「没有资料。」 */
|
|
33
|
+
export function resourceListTool(resources) {
|
|
34
|
+
const list = resources.length === 0 ? "没有资料。" : resources.map((r) => r.file).join("\n");
|
|
35
|
+
return {
|
|
36
|
+
name: "resource_list",
|
|
37
|
+
label: "正在翻资料清单",
|
|
38
|
+
description: "列出能读的资料,每行一个路径。要读哪篇,照路径用 resource_read 读。",
|
|
39
|
+
parameters: RESOURCE_LIST_PARAMS,
|
|
40
|
+
execute: async () => ({ content: [{ type: "text", text: list }], details: undefined }),
|
|
41
|
+
};
|
|
37
42
|
}
|
|
38
43
|
const RESOURCE_READ_PARAMS = Type.Object({
|
|
39
|
-
file: Type.String({ description: "
|
|
44
|
+
file: Type.String({ description: "资料路径,照 resource_list 列出的原样填" }),
|
|
40
45
|
});
|
|
41
|
-
/** resource_read
|
|
46
|
+
/** resource_read:读一篇资料的正文。没有这篇就抛——pi 会把错误如实交给模型,让它换一篇。 */
|
|
42
47
|
export function resourceReadTool(resources) {
|
|
43
48
|
const byFile = new Map(resources.map((r) => [r.file, r.content]));
|
|
44
49
|
return {
|
|
45
50
|
name: "resource_read",
|
|
46
51
|
label: "正在读资料",
|
|
47
|
-
description: "
|
|
52
|
+
description: "读一篇资料的正文。用到哪篇读哪篇,别一次全读;有哪些资料用 resource_list 查。",
|
|
48
53
|
parameters: RESOURCE_READ_PARAMS,
|
|
49
54
|
execute: async (_id, params) => {
|
|
50
55
|
const content = byFile.get(params.file);
|
|
51
56
|
if (content === undefined)
|
|
52
|
-
throw new Error(`没有这篇资料:${params.file}
|
|
57
|
+
throw new Error(`没有这篇资料:${params.file}(有哪些资料用 resource_list 查)`);
|
|
53
58
|
return { content: [{ type: "text", text: content }], details: undefined };
|
|
54
59
|
},
|
|
55
60
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resource.js","sourceRoot":"","sources":["../../src/tools/resource.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"resource.js","sourceRoot":"","sources":["../../src/tools/resource.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { AgentTool } from "@earendil-works/pi-agent-core";
|
|
2
2
|
import type { MLBClient, WidgetType } from "../mlbClient.ts";
|
|
3
3
|
import type { MLBMessageToWrite } from "../types.ts";
|
|
4
|
+
import type { DataAccessUsageTracker } from "./dataAccess.ts";
|
|
4
5
|
/** widgets/ 下的一个小挂件:目录名是类型 id;schema.json 解析出的对象与 index.html 的原文原样交给平台 */
|
|
5
6
|
export interface WidgetSource {
|
|
6
7
|
id: string;
|
|
@@ -21,8 +22,9 @@ export declare function loadWidgets(dir: string): WidgetSource[];
|
|
|
21
22
|
*/
|
|
22
23
|
export declare function renderCatalog(types: WidgetType[]): string;
|
|
23
24
|
/**
|
|
24
|
-
* 给一场会话造五个小挂件工具。types
|
|
25
|
-
* 五个工具都绑死在这场会话的 convoKey 上,跨会话看不见对方的小挂件;enqueueMessage
|
|
25
|
+
* 给一场会话造五个小挂件工具。types 为空(widgets/ 里没有小挂件)时照样造,说明里的类型目录写「(没有)」,模型硬要建时平台回错误。
|
|
26
|
+
* 五个工具都绑死在这场会话的 convoKey 上,跨会话看不见对方的小挂件;enqueueMessage 是这场会话的发送队列;
|
|
27
|
+
* tracker 是这场会话的授权数据记账,建、写、删、发四个工具靠它的 assertWritable 在主动服务回合里抛错。
|
|
26
28
|
*/
|
|
27
|
-
export declare function widgetTools(client: MLBClient, convoKey: string, types: WidgetType[], enqueueMessage: (message: MLBMessageToWrite) => void): AgentTool[];
|
|
28
|
-
//# sourceMappingURL=
|
|
29
|
+
export declare function widgetTools(client: MLBClient, convoKey: string, types: WidgetType[], enqueueMessage: (message: MLBMessageToWrite) => void, tracker: DataAccessUsageTracker): AgentTool[];
|
|
30
|
+
//# sourceMappingURL=widget.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"widget.d.ts","sourceRoot":"","sources":["../../src/tools/widget.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,SAAS,EAAmB,MAAM,+BAA+B,CAAC;AAGhF,OAAO,KAAK,EAAE,SAAS,EAAoB,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC/E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AAE9D,0EAA0E;AAC1E,MAAM,WAAW,YAAY;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,OAAO,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;CACb;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,YAAY,EAAE,CAmBvD;AAYD;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,UAAU,EAAE,GAAG,MAAM,CAWzD;AAwFD;;;;GAIG;AACH,wBAAgB,WAAW,CAC1B,MAAM,EAAE,SAAS,EACjB,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,UAAU,EAAE,EACnB,cAAc,EAAE,CAAC,OAAO,EAAE,iBAAiB,KAAK,IAAI,EACpD,OAAO,EAAE,sBAAsB,GAC7B,SAAS,EAAE,CAsEb"}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
// 小挂件:读工程 widgets/ 目录;把平台的小挂件接口包成五个 pi AgentTool,交给模型在会话里建面板、写记录、读记录、删记录、把小挂件发进聊天流。
|
|
2
2
|
// 管:widgets/ 下每个子目录读成一个小挂件(目录名是类型 id,schema.json 是 schema,index.html 是页面);
|
|
3
3
|
// 五个工具的名字与 label(固定,人设按名字叫它们)、参数 schema(typebox)、description 里把小挂件类型目录渲染成人话;
|
|
4
|
-
// 前四个调 MLBClient 的小挂件接口,widget_send 把小挂件引用放进这场会话的发送队列;失败抛给 pi
|
|
5
|
-
//
|
|
4
|
+
// 前四个调 MLBClient 的小挂件接口,widget_send 把小挂件引用放进这场会话的发送队列;失败抛给 pi 标为错误,不能伪报成功;
|
|
5
|
+
// widget_create / widget_write / widget_delete / widget_send 在主动服务回合里 assertWritable 抛错,widget_read 照常能用。
|
|
6
|
+
// 不管:HTTP 请求本身(mlbClient.ts)、什么时候读目录与上传平台(server.ts 启动时)、工具怎么交给开发者(conversation/agent.ts 挂在 conversation.tools 上)。
|
|
6
7
|
import { existsSync, readdirSync, readFileSync, statSync } from "node:fs";
|
|
7
8
|
import { join } from "node:path";
|
|
8
9
|
import { Type } from "typebox";
|
|
@@ -140,13 +141,12 @@ const sendParams = Type.Object({
|
|
|
140
141
|
widgetId: Type.String({ description: "要发的小挂件的 id" }),
|
|
141
142
|
});
|
|
142
143
|
/**
|
|
143
|
-
* 给一场会话造五个小挂件工具。types
|
|
144
|
-
* 五个工具都绑死在这场会话的 convoKey 上,跨会话看不见对方的小挂件;enqueueMessage
|
|
144
|
+
* 给一场会话造五个小挂件工具。types 为空(widgets/ 里没有小挂件)时照样造,说明里的类型目录写「(没有)」,模型硬要建时平台回错误。
|
|
145
|
+
* 五个工具都绑死在这场会话的 convoKey 上,跨会话看不见对方的小挂件;enqueueMessage 是这场会话的发送队列;
|
|
146
|
+
* tracker 是这场会话的授权数据记账,建、写、删、发四个工具靠它的 assertWritable 在主动服务回合里抛错。
|
|
145
147
|
*/
|
|
146
|
-
export function widgetTools(client, convoKey, types, enqueueMessage) {
|
|
147
|
-
|
|
148
|
-
return [];
|
|
149
|
-
const catalog = renderCatalog(types);
|
|
148
|
+
export function widgetTools(client, convoKey, types, enqueueMessage, tracker) {
|
|
149
|
+
const catalog = types.length === 0 ? "(没有)" : renderCatalog(types);
|
|
150
150
|
const create = {
|
|
151
151
|
name: "widget_create",
|
|
152
152
|
label: "正在建 widget",
|
|
@@ -154,6 +154,7 @@ export function widgetTools(client, convoKey, types, enqueueMessage) {
|
|
|
154
154
|
`你能建的类型:\n${catalog}`,
|
|
155
155
|
parameters: createParams,
|
|
156
156
|
execute: async (callId, params, signal) => {
|
|
157
|
+
tracker.assertWritable();
|
|
157
158
|
const { id } = await client.widgetCreate(convoKey, { ...params, idempotencyKey: `widget-create:${callId}` }, signal);
|
|
158
159
|
return text(`建好了,小挂件 id 是 ${id}。后续使用当前可用的工具写入内容并发送引用;这里只确认创建。`);
|
|
159
160
|
},
|
|
@@ -165,6 +166,7 @@ export function widgetTools(client, convoKey, types, enqueueMessage) {
|
|
|
165
166
|
`各类型的模块与字段:\n${catalog}`,
|
|
166
167
|
parameters: writeParams,
|
|
167
168
|
execute: async (_id, params, signal) => {
|
|
169
|
+
tracker.assertWritable();
|
|
168
170
|
const { widgetId, module, recordId, expectedRevision } = params;
|
|
169
171
|
const { revision } = await client.widgetWrite(convoKey, widgetId, { module, recordId, data: params.data, expectedRevision }, signal);
|
|
170
172
|
return text(`写好了:${params.module}/${params.recordId}${revision === undefined ? "" : `(revision ${String(revision)})`}`);
|
|
@@ -188,6 +190,7 @@ export function widgetTools(client, convoKey, types, enqueueMessage) {
|
|
|
188
190
|
description: "删掉小挂件某个模块里的一条记录。删的是记录,不是整个小挂件。",
|
|
189
191
|
parameters: deleteParams,
|
|
190
192
|
execute: async (_id, params, signal) => {
|
|
193
|
+
tracker.assertWritable();
|
|
191
194
|
await client.widgetDeleteRecord(convoKey, params.widgetId, params.module, params.recordId, signal);
|
|
192
195
|
return text(`删掉了:${params.module}/${params.recordId}`);
|
|
193
196
|
},
|
|
@@ -199,10 +202,11 @@ export function widgetTools(client, convoKey, types, enqueueMessage) {
|
|
|
199
202
|
parameters: sendParams,
|
|
200
203
|
execute: async (callId, params, signal) => {
|
|
201
204
|
signal?.throwIfAborted();
|
|
205
|
+
tracker.assertWritable();
|
|
202
206
|
enqueueMessage({ type: "widget", widget: { id: params.widgetId }, idempotencyKey: `widget-send:${callId}` });
|
|
203
207
|
return text("小挂件引用已加入发送队列,尚不代表平台确认送达。");
|
|
204
208
|
},
|
|
205
209
|
};
|
|
206
210
|
return [create, write, read, remove, send];
|
|
207
211
|
}
|
|
208
|
-
//# sourceMappingURL=
|
|
212
|
+
//# sourceMappingURL=widget.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"widget.js","sourceRoot":"","sources":["../../src/tools/widget.ts"],"names":[],"mappings":"AAAA,oFAAoF;AACpF,2EAA2E;AAC3E,iFAAiF;AACjF,+EAA+E;AAC/E,8GAA8G;AAC9G,mHAAmH;AAEnH,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC1E,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAC/B,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAYtC;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAC,GAAW;IACtC,MAAM,GAAG,GAAmB,EAAE,CAAC;IAC/B,KAAK,MAAM,KAAK,IAAI,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC;QACtC,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QACnC,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE;YAAE,SAAS;QAC1E,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;QAClD,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;QAC/C,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,SAAS,SAAS,iBAAiB,CAAC,CAAC;QAClF,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,SAAS,SAAS,gBAAgB,CAAC,CAAC;QAC/E,IAAI,MAAe,CAAC;QACpB,IAAI,CAAC;YACJ,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC;QACvD,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CAAC,GAAG,UAAU,eAAe,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAC7D,CAAC;QACD,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;IACvE,CAAC;IACD,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC7C,OAAO,GAAG,CAAC;AACZ,CAAC;AAED,2CAA2C;AAC3C,MAAM,UAAU,GAA2B;IAC1C,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,IAAI;IACZ,OAAO,EAAE,IAAI;IACb,OAAO,EAAE,KAAK;IACd,KAAK,EAAE,IAAI;IACX,MAAM,EAAE,IAAI;CACZ,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,UAAU,aAAa,CAAC,KAAmB;IAChD,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QAC1B,KAAK,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,WAAW,IAAI,EAAE,EAAE,CAAC,CAAC;QACpD,KAAK,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,EAAE,CAAC;YAC/D,KAAK,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,IAAI,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;YAC3F,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;YAClC,IAAI,MAAM,KAAK,EAAE;gBAAE,KAAK,CAAC,IAAI,CAAC,aAAa,MAAM,EAAE,CAAC,CAAC;QACtD,CAAC;IACF,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACzB,CAAC;AAED,0DAA0D;AAC1D,SAAS,YAAY,CAAC,IAAsB;IAC3C,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,EAAE,UAAU,IAAI,EAAE,CAAC;IACjD,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,IAAI,EAAE,CAAC,CAAC;IACtD,OAAO,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC;SAC/B,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE;QACtB,MAAM,IAAI,GAAa,EAAE,CAAC;QAC1B,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC;QACxF,IAAI,IAAI,KAAK,SAAS;YAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACxC,IAAI,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC;YAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzC,IAAI,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC3B,IAAI,IAAI,CAAC,WAAW,KAAK,SAAS,IAAI,IAAI,CAAC,WAAW,KAAK,EAAE,EAAE,CAAC;YAC/D,KAAK,GAAG,KAAK,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,KAAK,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;QAC1E,CAAC;QACD,OAAO,KAAK,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,IAAI,KAAK,GAAG,CAAC;IACpD,CAAC,CAAC;SACD,IAAI,CAAC,GAAG,CAAC,CAAC;AACb,CAAC;AAED,gCAAgC;AAChC,SAAS,IAAI,CAAC,KAAa;IAC1B,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC;AACzE,CAAC;AAED,kCAAkC;AAClC,SAAS,KAAK,CAAC,IAAa,EAAE,IAAY;IACzC,OAAO,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI,CAAC,CAAC,CAAE,IAAgC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AACxG,CAAC;AAQD,0DAA0D;AAC1D,SAAS,aAAa,CAAC,MAAc,EAAE,OAAgB;IACtD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;QAAE,OAAO,CAAC,MAAM,MAAM,KAAK,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IACjF,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,CAAC,MAAM,MAAM,QAAQ,CAAC,CAAC;IACxD,MAAM,KAAK,GAAG,CAAC,MAAM,MAAM,KAAK,OAAO,CAAC,MAAM,MAAM,CAAC,CAAC;IACtD,KAAK,MAAM,MAAM,IAAI,OAAuB,EAAE,CAAC;QAC9C,KAAK,CAAC,IAAI,CAAC,KAAK,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,GAAG,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC5E,CAAC;IACD,OAAO,KAAK,CAAC;AACd,CAAC;AAED,wEAAwE;AACxE,SAAS,YAAY,CAAC,IAAa;IAClC,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IACvC,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IACjF,MAAM,KAAK,GAAG,CAAC,OAAO,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,OAAO,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,OAAO,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC;IAC1H,KAAK,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAkC,CAAC,EAAE,CAAC;QAClF,KAAK,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;IAC7C,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACzB,CAAC;AAED,+CAA+C;AAC/C,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC;IAChC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,gBAAgB,EAAE,CAAC;IACpD,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,SAAS,EAAE,CAAC;CAC9C,CAAC,CAAC;AAEH,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC;IAC/B,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,gCAAgC,EAAE,CAAC;IACxE,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,SAAS,EAAE,CAAC;IAC/C,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,kBAAkB,EAAE,CAAC;IAC1D,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,oBAAoB,EAAE,IAAI,EAAE,WAAW,EAAE,oBAAoB,EAAE,CAAC;IACxF,gBAAgB,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,WAAW,EAAE,wBAAwB,EAAE,CAAC,CAAC;CACpG,CAAC,CAAC;AAEH,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC;IAC9B,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,gCAAgC,EAAE,CAAC;IACxE,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,sBAAsB,EAAE,CAAC,CAAC;CAC3E,CAAC,CAAC;AAEH,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC;IAChC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,gCAAgC,EAAE,CAAC;IACxE,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC;IAC3C,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC;CAClD,CAAC,CAAC;AAEH,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC;IAC9B,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,YAAY,EAAE,CAAC;CACpD,CAAC,CAAC;AAEH;;;;GAIG;AACH,MAAM,UAAU,WAAW,CAC1B,MAAiB,EACjB,QAAgB,EAChB,KAAmB,EACnB,cAAoD,EACpD,OAA+B;IAE/B,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IAEnE,MAAM,MAAM,GAA8C;QACzD,IAAI,EAAE,eAAe;QACrB,KAAK,EAAE,YAAY;QACnB,WAAW,EACV,qEAAqE;YACrE,YAAY,OAAO,EAAE;QACtB,UAAU,EAAE,YAAY;QACxB,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE;YACzC,OAAO,CAAC,cAAc,EAAE,CAAC;YACzB,MAAM,EAAE,EAAE,EAAE,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC,QAAQ,EAAE,EAAE,GAAG,MAAM,EAAE,cAAc,EAAE,iBAAiB,MAAM,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC;YACrH,OAAO,IAAI,CAAC,gBAAgB,EAAE,gCAAgC,CAAC,CAAC;QACjE,CAAC;KACD,CAAC;IAEF,MAAM,KAAK,GAA6C;QACvD,IAAI,EAAE,cAAc;QACpB,KAAK,EAAE,YAAY;QACnB,WAAW,EACV,+DAA+D;YAC/D,eAAe,OAAO,EAAE;QACzB,UAAU,EAAE,WAAW;QACvB,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE;YACtC,OAAO,CAAC,cAAc,EAAE,CAAC;YACzB,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,gBAAgB,EAAE,GAAG,MAAM,CAAC;YAChE,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,QAAQ,EAAE,QAAQ,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,CAAC,IAA+B,EAAE,gBAAgB,EAAE,EAAE,MAAM,CAAC,CAAC;YAChK,OAAO,IAAI,CAAC,OAAO,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,QAAQ,GAAG,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC;QACzH,CAAC;KACD,CAAC;IAEF,MAAM,IAAI,GAA4C;QACrD,IAAI,EAAE,aAAa;QACnB,KAAK,EAAE,YAAY;QACnB,WAAW,EAAE,0EAA0E;QACvF,UAAU,EAAE,UAAU;QACtB,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE;YACtC,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS;gBAAE,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM,MAAM,CAAC,UAAU,CAAC,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;YACvH,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YAC7F,OAAO,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QACpE,CAAC;KACD,CAAC;IAEF,MAAM,MAAM,GAA8C;QACzD,IAAI,EAAE,eAAe;QACrB,KAAK,EAAE,UAAU;QACjB,WAAW,EAAE,gCAAgC;QAC7C,UAAU,EAAE,YAAY;QACxB,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE;YACtC,OAAO,CAAC,cAAc,EAAE,CAAC;YACzB,MAAM,MAAM,CAAC,kBAAkB,CAAC,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;YACnG,OAAO,IAAI,CAAC,OAAO,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;QACxD,CAAC;KACD,CAAC;IAEF,MAAM,IAAI,GAA4C;QACrD,IAAI,EAAE,aAAa;QACnB,KAAK,EAAE,aAAa;QACpB,WAAW,EAAE,6DAA6D;QAC1E,UAAU,EAAE,UAAU;QACtB,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE;YACzC,MAAM,EAAE,cAAc,EAAE,CAAC;YACzB,OAAO,CAAC,cAAc,EAAE,CAAC;YACzB,cAAc,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,QAAQ,EAAE,EAAE,cAAc,EAAE,eAAe,MAAM,EAAE,EAAE,CAAC,CAAC;YAC7G,OAAO,IAAI,CAAC,0BAA0B,CAAC,CAAC;QACzC,CAAC;KACD,CAAC;IAEF,OAAO,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;AAC5C,CAAC"}
|