@my-life-buddies/buddy-runtime 0.23.0 → 0.24.0-dev.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/server.js CHANGED
@@ -1,7 +1,8 @@
1
1
  // 进程级入口:一只搭子起来后长什么样。
2
2
  // 管:读搭子 id(工程 package.json 的 buddyId 字段)与令牌(环境变量 BUDDY_TOKEN),缺一个就启动失败、定网关地址(缺省连 ecs-test,开发者不用填,设了环境变量 MLB_GATEWAY_URL 才覆盖)、
3
- // 建日志 / MLBClient、启动时注册 data-access.json 声明、读一次 resources/ 目录里的资料、把 widgets/ 目录里的小挂件逐个上传平台(任一上传失败都启动失败)、按会话键管一张 ConversationHandle 表、
4
- // 把事件流的 message / welcome / delete 分发给对应会话、收到 replaced(同一身份有新的进程连上了平台)就收尾并退出进程、
3
+ // 建日志 / MLBClient、先连上事件流再做启动准备(注册 data-access.json 声明、读一次 resources/ 目录里的资料、把 widgets/ 目录里的小挂件逐个上传平台,任一上传失败都启动失败;
4
+ // 准备做完之前收到的事件先攒着)、按会话键管一张 ConversationHandle 表、
5
+ // 把事件流的 message / welcome / delete 分发给对应会话、收到 replaced(同一身份有新的进程连上了平台)或 rejected(平台以 4xx 拒了这条事件流)就收尾并退出进程、
5
6
  // 每 60 秒淘汰不忙且 30 分钟没消息的会话(淘汰前历史超过触发线的拍快照、回收后在后台压缩写回,见 conversation/compaction.ts)、stop 时把一切收掉。
6
7
  // 不管:会话里的纪律(conversation/ 目录)、协议细节(mlbClient.ts)。没有 HTTP 面、没有主动触达、没有会话列表。
7
8
  import { existsSync, readFileSync } from "node:fs";
@@ -59,6 +60,50 @@ function readBuddyId(dir) {
59
60
  throw new Error(`${file} 缺 buddyId 字段:搭子 id,创建搭子时平台发的,写成 "buddyId": "b_…"`);
60
61
  return pkg.buddyId;
61
62
  }
63
+ /**
64
+ * 启动准备:读 data-access.json 并整份上传、读一次 resources/ 目录、把 widgets/ 下每个目录的 schema.json 与
65
+ * index.html 逐个上传。三样都是每场会话共用的料,拿不到就启动失败(带着缺了类型的目录跑起来,模型建不出该有的小挂件)。
66
+ * 在事件流连上之后做:这期间来的事件由调用方攒着,见 BuddyServer.start。
67
+ */
68
+ async function prepare(dir, client, log) {
69
+ const dataRequirements = loadDataAccessRequirements(dir);
70
+ try {
71
+ await client.dataAccessRequirementsUpload(dataRequirements);
72
+ }
73
+ catch (e) {
74
+ throw new Error(`${join(dir, DATA_ACCESS_CONFIG_FILE)} 没传上平台:${errorText(e)}`);
75
+ }
76
+ if (dataRequirements.length > 0)
77
+ log.info("DataAccess 声明已传上平台", { file: join(dir, DATA_ACCESS_CONFIG_FILE), datasets: dataRequirements.map((item) => item.id) });
78
+ else
79
+ log.info("DataAccess 空声明已传上平台", { file: join(dir, DATA_ACCESS_CONFIG_FILE), exists: existsSync(join(dir, DATA_ACCESS_CONFIG_FILE)) });
80
+ // 资料:启动时读一次,之后每场会话共用;没有这个目录或里面没有 .md,resource_list 回「没有资料」
81
+ const resourcesDir = join(dir, RESOURCES_DIR);
82
+ const resources = existsSync(resourcesDir) ? loadResources(resourcesDir) : [];
83
+ if (resources.length > 0)
84
+ log.info("资料已读入", { dir: resourcesDir, files: resources.map((r) => r.file) });
85
+ else
86
+ log.info("没有资料", { dir: resourcesDir, exists: existsSync(resourcesDir) });
87
+ // 小挂件:启动时把 widgets/ 下每个目录的 schema.json 与 index.html 传给平台,之后每场会话共用这份类型目录。
88
+ // 有一个读不出或传不上(缺文件、schema 不合法、网络不通)就启动失败:带着缺了类型的目录跑起来,模型建不出该有的小挂件
89
+ const widgetsDir = join(dir, WIDGETS_DIR);
90
+ const widgetTypes = [];
91
+ for (const widget of existsSync(widgetsDir) ? loadWidgets(widgetsDir) : []) {
92
+ try {
93
+ await client.widgetTypeUpload(widget.id, { schema: widget.schema, html: widget.html });
94
+ }
95
+ catch (e) {
96
+ throw new Error(`小挂件 ${join(widgetsDir, widget.id)} 没传上平台:${errorText(e)}`);
97
+ }
98
+ const schema = widget.schema;
99
+ widgetTypes.push({ id: widget.id, description: schema.description, modules: schema.modules, openTargets: schema.openTargets });
100
+ }
101
+ if (widgetTypes.length > 0)
102
+ log.info("小挂件已传上平台", { dir: widgetsDir, types: widgetTypes.map((t) => t.id) });
103
+ else
104
+ log.info("没有小挂件", { dir: widgetsDir, exists: existsSync(widgetsDir) });
105
+ return { dataRequirements, resources, widgetTypes };
106
+ }
62
107
  export class BuddyServer {
63
108
  /** 起一只搭子:连上事件流,之后消息来一条处理一条。返回的 handle 只有 stop */
64
109
  static async start(buddy) {
@@ -73,42 +118,33 @@ export class BuddyServer {
73
118
  const gatewayUrl = process.env.MLB_GATEWAY_URL || DEFAULT_GATEWAY_URL;
74
119
  const log = createLogger(buddyId);
75
120
  const client = new MLBClient({ gatewayUrl, token, log });
76
- const dataRequirements = loadDataAccessRequirements(dir);
77
- try {
78
- await client.dataAccessRequirementsUpload(dataRequirements);
79
- }
80
- catch (e) {
81
- throw new Error(`${join(dir, DATA_ACCESS_CONFIG_FILE)} 没传上平台:${errorText(e)}`);
82
- }
83
- if (dataRequirements.length > 0)
84
- log.info("DataAccess 声明已传上平台", { file: join(dir, DATA_ACCESS_CONFIG_FILE), datasets: dataRequirements.map((item) => item.id) });
85
- else
86
- log.info("DataAccess 空声明已传上平台", { file: join(dir, DATA_ACCESS_CONFIG_FILE), exists: existsSync(join(dir, DATA_ACCESS_CONFIG_FILE)) });
87
- // 资料:启动时读一次,之后每场会话共用;没有这个目录或里面没有 .md,resource_list 回「没有资料」
88
- const resourcesDir = join(dir, RESOURCES_DIR);
89
- const resources = existsSync(resourcesDir) ? loadResources(resourcesDir) : [];
90
- if (resources.length > 0)
91
- log.info("资料已读入", { dir: resourcesDir, files: resources.map((r) => r.file) });
92
- else
93
- log.info("没有资料", { dir: resourcesDir, exists: existsSync(resourcesDir) });
94
- // 小挂件:启动时把 widgets/ 下每个目录的 schema.json 与 index.html 传给平台,之后每场会话共用这份类型目录。
95
- // 有一个读不出或传不上(缺文件、schema 不合法、网络不通)就启动失败:带着缺了类型的目录跑起来,模型建不出该有的小挂件
96
- const widgetsDir = join(dir, WIDGETS_DIR);
97
- const widgetTypes = [];
98
- for (const widget of existsSync(widgetsDir) ? loadWidgets(widgetsDir) : []) {
99
- try {
100
- await client.widgetTypeUpload(widget.id, { schema: widget.schema, html: widget.html });
101
- }
102
- catch (e) {
103
- throw new Error(`小挂件 ${join(widgetsDir, widget.id)} 没传上平台:${errorText(e)}`);
104
- }
105
- const schema = widget.schema;
106
- widgetTypes.push({ id: widget.id, description: schema.description, modules: schema.modules, openTargets: schema.openTargets });
121
+ // 事件流先连上、再做准备:平台立刻知道这只搭子活着,也立刻拿到连接时报的运行时版本号——版本不合就在这一步被
122
+ // 4xx 拒掉,一份声明都不会传上去。准备做完之前来的事件先攒着:那时 widgetTypes / resources 还没备齐,
123
+ // 拿这份空料建起来的会话会一直用它(要等空闲回收才有机会重建),模型看不到这只搭子的小挂件和资料。
124
+ const pending = [];
125
+ /** 准备期间收到的致命事件:被顶号、被平台拒绝。记下来,准备一做完就退出 */
126
+ let fatal;
127
+ let dispatch = (event) => {
128
+ if (event.type === "replaced")
129
+ fatal = "这个搭子身份有新的进程连上了平台,本进程被顶掉";
130
+ else if (event.type === "rejected")
131
+ fatal = `事件流被平台拒绝:${event.reason}`;
132
+ else
133
+ pending.push(event);
134
+ };
135
+ const stream = new EventStream({ gatewayUrl, token, log, onEvent: (event) => dispatch(event) });
136
+ stream.start();
137
+ const { dataRequirements, resources, widgetTypes } = await prepare(dir, client, log).catch((e) => {
138
+ // 准备失败要连流一起停:留下一条活着的连接,进程就退不掉——start 抛出后搭子工程的 start.mjs 拿不到
139
+ // handle,它 finally 里的 stop 是空操作,事件流的重连定时器和连接会一直把事件循环撑着
140
+ stream.stop();
141
+ throw e;
142
+ });
143
+ if (fatal !== undefined) {
144
+ // 准备期间就被顶号或被拒:流已经停了,会话表和巡检还没开张,直接退出
145
+ log.error(`${fatal},退出`);
146
+ process.exit(1);
107
147
  }
108
- if (widgetTypes.length > 0)
109
- log.info("小挂件已传上平台", { dir: widgetsDir, types: widgetTypes.map((t) => t.id) });
110
- else
111
- log.info("没有小挂件", { dir: widgetsDir, exists: existsSync(widgetsDir) });
112
148
  const conversations = new Map();
113
149
  const deleted = new Set();
114
150
  const proactiveTasks = new Map();
@@ -157,6 +193,13 @@ export class BuddyServer {
157
193
  void stop().finally(() => process.exit(1));
158
194
  return;
159
195
  }
196
+ if (event.type === "rejected") {
197
+ // 平台以 4xx 拒了这条事件流(令牌无效、运行时版本太低):重连多少次结果都一样,收尾退出。
198
+ // 托管的那只由网关按崩溃重拉、五次之后不再拉起,拒绝的原因留在搭子日志里
199
+ log.error(`事件流被平台拒绝,收尾后退出:${event.reason}`);
200
+ void stop().finally(() => process.exit(1));
201
+ return;
202
+ }
160
203
  if (event.type === "proactive") {
161
204
  if (proactiveTasks.has(event.runId))
162
205
  return;
@@ -187,7 +230,6 @@ export class BuddyServer {
187
230
  else if (!deleted.has(event.convoKey))
188
231
  conversationOf(event.convoKey).notify(event.type === "welcome");
189
232
  };
190
- const stream = new EventStream({ gatewayUrl, token, log, onEvent });
191
233
  // 回收后在后台压缩:同一场会话同时只跑一次;stop 时打断
192
234
  const compactions = new Map();
193
235
  const startCompaction = (key, snapshot) => {
@@ -227,7 +269,10 @@ export class BuddyServer {
227
269
  await Promise.all(proactiveTasks.values());
228
270
  log.info("搭子已停止", { buddyId });
229
271
  };
230
- stream.start();
272
+ // 机器搭好了:事件改为直接处理,准备期间攒下的按到达顺序补上
273
+ dispatch = onEvent;
274
+ for (const event of pending.splice(0))
275
+ onEvent(event);
231
276
  log.info("搭子已启动", { buddyId, gatewayUrl });
232
277
  return { stop };
233
278
  }
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
@@ -8,6 +8,8 @@ declare const queryParams: Type.TObject<{
8
8
  datasets: Type.TArray<Type.TString>;
9
9
  memberId: Type.TOptional<Type.TString>;
10
10
  }>;
11
+ /** 模型可能把成员号的展示标记 # 一并传入;平台协议中的真实 memberId 始终是不带 # 的 m_…。 */
12
+ export declare function normalizeDataAccessMemberId(memberId: string | undefined): string | undefined;
11
13
  export interface DataAccessToolDetails {
12
14
  kind: "data-access";
13
15
  datasets: {
@@ -31,15 +33,18 @@ export declare class DataAccessUsageTracker {
31
33
  private readonly queryOverride;
32
34
  private readonly proactiveTurn;
33
35
  private readonly usage;
34
- /** 真正拿到过授权数据的调用;位置/日历结果没有 Dataset details,也要能按调用识别。 */
36
+ /** 当前回合最近一次查询到的 Dataset 状态;群聊按成员隔离,避免拿甲的状态给乙发卡。 */
37
+ private readonly latestStatuses;
38
+ /** 真正拿到过授权数据(结果里带 data)的调用 */
35
39
  private readonly sensitiveCalls;
36
40
  /** 这批工具开始执行前,模型是否已经见过授权数据。并行调用共用同一个快照,避免完成顺序影响脱敏。 */
37
41
  private readonly taintedBeforeCall;
38
42
  private sensitive;
39
43
  track(tool: AgentTool): AgentTool;
40
- runForTool<T>(toolCallId: string, toolName: string, policy: DataAccessToolPolicy, action: () => Promise<T>): Promise<T>;
44
+ /** policy dataAccessPolicyOf 补全了缺省值的那份 */
45
+ runForTool<T>(toolCallId: string, toolName: string, policy: Required<DataAccessToolPolicy>, action: () => Promise<T>): Promise<T>;
41
46
  /** 已经读取过授权数据后,禁止执行会长期留存或外发内容的工具。 */
42
- guardTool(name: string, policy: DataAccessToolPolicy): void;
47
+ guardTool(name: string, { retention }: Required<DataAccessToolPolicy>): void;
43
48
  /** message_end 时调用:同一条 assistant 消息里的并行工具,共用执行前的污染状态。 */
44
49
  beginToolStep(toolCallIds: readonly string[]): boolean;
45
50
  query(client: MLBClient, convoKey: string, datasets: string[], memberId?: string, signal?: AbortSignal): Promise<DatasetAccessResult[]>;
@@ -49,6 +54,7 @@ export declare class DataAccessUsageTracker {
49
54
  runProactive<T>(action: () => Promise<T>): Promise<T>;
50
55
  isProactive(): boolean;
51
56
  details(toolCallId: string): DataAccessToolDetails | undefined;
57
+ latestStatus(datasetId: string, memberId?: string): DatasetAccessResult["status"] | undefined;
52
58
  isSensitive(toolCallId: string): boolean;
53
59
  /** 只有模型在生成当前工具参数前已经见过数据,或当前工具自己读取过数据,才禁止继续持久化。 */
54
60
  isPersistenceTainted(): boolean;
@@ -59,7 +65,6 @@ export declare class DataAccessUsageTracker {
59
65
  */
60
66
  guardPersistence(target: string): void;
61
67
  hasUsage(): boolean;
62
- markSensitive(containsData?: boolean): void;
63
68
  clear(): void;
64
69
  private record;
65
70
  }
@@ -1 +1 @@
1
- {"version":3,"file":"dataAccess.d.ts","sourceRoot":"","sources":["../../src/tools/dataAccess.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dataAccess.d.ts","sourceRoot":"","sources":["../../src/tools/dataAccess.ts"],"names":[],"mappings":"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"}
@@ -13,8 +13,15 @@ const queryParams = Type.Object({
13
13
  maxItems: MAX_DATASETS_PER_QUERY,
14
14
  uniqueItems: true,
15
15
  }),
16
- memberId: Type.Optional(Type.String({ description: "群聊数据主体,取用户消息前缀里的 #m_…;私聊不要传" })),
16
+ memberId: Type.Optional(Type.String({ description: "群聊数据主体。消息前缀显示为 #m_…,参数只传不带 # 的 m_…;私聊不要传" })),
17
17
  });
18
+ /** 模型可能把成员号的展示标记 # 一并传入;平台协议中的真实 memberId 始终是不带 # 的 m_…。 */
19
+ export function normalizeDataAccessMemberId(memberId) {
20
+ const value = memberId?.trim();
21
+ if (!value)
22
+ return undefined;
23
+ return value.startsWith("#m_") ? value.slice(1) : value;
24
+ }
18
25
  /** 只保留 Dataset ID 与状态,绝不把 data 放进 details。 */
19
26
  export function dataAccessDetails(results) {
20
27
  return { kind: "data-access", datasets: results.map(({ id, status }) => ({ id, status })) };
@@ -52,7 +59,9 @@ export class DataAccessUsageTracker {
52
59
  // 用 AsyncLocalStorage 而不用布尔字段:作用域内的工具、嵌套异步调用都能自动看到,不用逐层透传,也不会有两个真值来源互相不同步。
53
60
  proactiveTurn = new AsyncLocalStorage();
54
61
  usage = new Map();
55
- /** 真正拿到过授权数据的调用;位置/日历结果没有 Dataset details,也要能按调用识别。 */
62
+ /** 当前回合最近一次查询到的 Dataset 状态;群聊按成员隔离,避免拿甲的状态给乙发卡。 */
63
+ latestStatuses = new Map();
64
+ /** 真正拿到过授权数据(结果里带 data)的调用 */
56
65
  sensitiveCalls = new Set();
57
66
  /** 这批工具开始执行前,模型是否已经见过授权数据。并行调用共用同一个快照,避免完成顺序影响脱敏。 */
58
67
  taintedBeforeCall = new Map();
@@ -69,12 +78,12 @@ export class DataAccessUsageTracker {
69
78
  }),
70
79
  };
71
80
  }
81
+ /** policy 是 dataAccessPolicyOf 补全了缺省值的那份 */
72
82
  runForTool(toolCallId, toolName, policy, action) {
73
- return this.activeCall.run({ id: toolCallId, name: toolName, policy: dataAccessPolicyOf({ dataAccessPolicy: policy }) }, action);
83
+ return this.activeCall.run({ id: toolCallId, name: toolName, policy }, action);
74
84
  }
75
85
  /** 已经读取过授权数据后,禁止执行会长期留存或外发内容的工具。 */
76
- guardTool(name, policy) {
77
- const retention = dataAccessPolicyOf({ dataAccessPolicy: policy }).retention;
86
+ guardTool(name, { retention }) {
78
87
  if (!this.isPersistenceTainted() || (retention !== "durable" && retention !== "external"))
79
88
  return;
80
89
  throw new Error(`本回合已经读取用户授权数据,不能执行工具 ${name}(${retention === "external" ? "可能外发内容" : "会长期留存内容"});请只在当前回复中使用,并避免复述敏感数值。`);
@@ -91,7 +100,8 @@ export class DataAccessUsageTracker {
91
100
  if (active?.policy.retention === "durable" || active?.policy.retention === "external") {
92
101
  throw new Error(`工具 ${active.name} 的 DataAccess 策略允许长期留存或外发内容,不能在同一次执行中读取用户授权数据。`);
93
102
  }
94
- const results = await (this.queryOverride.getStore()?.(datasets, memberId, signal) ?? client.queryDataAccess(convoKey, datasets, memberId, signal));
103
+ const normalizedMemberId = normalizeDataAccessMemberId(memberId);
104
+ const results = await (this.queryOverride.getStore()?.(datasets, normalizedMemberId, signal) ?? client.queryDataAccess(convoKey, datasets, normalizedMemberId, signal));
95
105
  const containsData = results.some((item) => "data" in item);
96
106
  if (containsData)
97
107
  this.sensitive = true;
@@ -99,7 +109,7 @@ export class DataAccessUsageTracker {
99
109
  if (toolCallId !== undefined) {
100
110
  if (containsData)
101
111
  this.sensitiveCalls.add(toolCallId);
102
- this.record(toolCallId, results);
112
+ this.record(toolCallId, results, normalizedMemberId);
103
113
  }
104
114
  return results;
105
115
  }
@@ -115,6 +125,9 @@ export class DataAccessUsageTracker {
115
125
  details(toolCallId) {
116
126
  return this.usage.get(toolCallId);
117
127
  }
128
+ latestStatus(datasetId, memberId) {
129
+ return this.latestStatuses.get(dataAccessSubjectKey(datasetId, memberId));
130
+ }
118
131
  isSensitive(toolCallId) {
119
132
  return this.sensitiveCalls.has(toolCallId);
120
133
  }
@@ -138,28 +151,26 @@ export class DataAccessUsageTracker {
138
151
  hasUsage() {
139
152
  return this.sensitive;
140
153
  }
141
- markSensitive(containsData = true) {
142
- if (!containsData)
143
- return;
144
- this.sensitive = true;
145
- const toolCallId = this.activeCall.getStore()?.id;
146
- if (toolCallId !== undefined)
147
- this.sensitiveCalls.add(toolCallId);
148
- }
149
154
  clear() {
150
155
  this.usage.clear();
156
+ this.latestStatuses.clear();
151
157
  this.sensitiveCalls.clear();
152
158
  this.taintedBeforeCall.clear();
153
159
  this.sensitive = false;
154
160
  }
155
- record(toolCallId, results) {
161
+ record(toolCallId, results, memberId) {
156
162
  const previous = this.usage.get(toolCallId)?.datasets ?? [];
157
163
  const byId = new Map(previous.map((item) => [item.id, item]));
158
- for (const item of dataAccessDetails(results).datasets)
164
+ for (const item of dataAccessDetails(results).datasets) {
159
165
  byId.set(item.id, item);
166
+ this.latestStatuses.set(dataAccessSubjectKey(item.id, memberId), item.status);
167
+ }
160
168
  this.usage.set(toolCallId, { kind: "data-access", datasets: [...byId.values()] });
161
169
  }
162
170
  }
171
+ function dataAccessSubjectKey(datasetId, memberId) {
172
+ return `${memberId ?? ""}\u0000${datasetId}`;
173
+ }
163
174
  function resultForModel(results) {
164
175
  return {
165
176
  content: [{ type: "text", text: JSON.stringify({ datasets: results }) }],
@@ -173,7 +184,7 @@ export function dataAccessTool(client, convoKey, tracker, requirements) {
173
184
  name: DATA_ACCESS_TOOL_NAME,
174
185
  label: "正在读取授权数据",
175
186
  dataAccessPolicy: { retention: "none", result: "derived", arguments: "private" },
176
- description: "按需读取当前会话中用户授权给你的 Dataset。私聊只传 datasets;群聊必须同时传目标成员消息前缀里的 memberId(#m_…),不能按姓名猜测。逐项状态含 available、notDeclared、notGranted、disabledInGroup、unavailable;只有 available 才带 data。不要声称自己读到了不可用的数据。" +
187
+ description: "按需读取当前会话中用户授权给你的 Dataset。私聊只传 datasets;群聊必须同时传目标成员的 memberId。消息前缀显示为 #m_…,参数只传不带 # 的 m_…,不能按姓名猜测。逐项状态含 available、notDeclared、notGranted、disabledInGroup、unavailable、systemPermissionDenied;只有 available 才带 data。只有 notGranted 才能继续调用 data_access_request。systemPermissionDenied 表示业务授权仍有效、但用户关闭了系统权限:不要发授权卡,直接请用户到系统设置中重新开启对应权限。unavailable 也不要重复发卡。不要声称自己读到了不可用的数据。" +
177
188
  `\n你声明过的 Dataset:\n${catalog}`,
178
189
  parameters: queryParams,
179
190
  replay: "safe",
@@ -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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"}
@@ -1,7 +1,14 @@
1
1
  import type { AgentTool } from "@earendil-works/pi-agent-core";
2
- import type { MLBClient } from "../mlbClient.ts";
2
+ import { Type } from "typebox";
3
3
  import type { DataAccessRequestInput, DataRequirement, MLBMessageToWrite } from "../types.ts";
4
- import type { DataAccessUsageTracker } from "./dataAccess.ts";
4
+ import { type DataAccessUsageTracker } from "./dataAccess.ts";
5
+ declare const requestParams: Type.TObject<{
6
+ reason: Type.TString;
7
+ datasets: Type.TArray<Type.TString>;
8
+ memberId: Type.TOptional<Type.TString>;
9
+ }>;
5
10
  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[];
11
+ /** 给一场会话造 data_access_request。enqueue 是这场会话的发送队列;onRequested 告诉运行时这一轮发了等用户操作的卡 */
12
+ export declare function dataAccessRequestTool(convoKey: string, enqueue: (message: MLBMessageToWrite) => void, tracker: DataAccessUsageTracker, requirements: readonly DataRequirement[], onRequested: () => void): AgentTool<typeof requestParams, undefined>;
13
+ export {};
7
14
  //# sourceMappingURL=dataAccessRequest.d.ts.map
@@ -1 +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;AAO9D,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,sBAAsB,EAAE,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,SAAS,eAAe,EAAE,GAAG,sBAAsB,CAS3J;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,CAeb"}
1
+ {"version":3,"file":"dataAccessRequest.d.ts","sourceRoot":"","sources":["../../src/tools/dataAccessRequest.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAC/B,OAAO,KAAK,EAAE,sBAAsB,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAC9F,OAAO,EAA+B,KAAK,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AAI3F,QAAA,MAAM,aAAa;;;;EAIjB,CAAC;AAEH,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,sBAAsB,EAAE,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,SAAS,eAAe,EAAE,GAAG,sBAAsB,CAmB3J;AAED,kFAAkF;AAClF,wBAAgB,qBAAqB,CACpC,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,EAAE,MAAM,IAAI,GACrB,SAAS,CAAC,OAAO,aAAa,EAAE,SAAS,CAAC,CA2B5C"}
@@ -1,36 +1,64 @@
1
+ // DataAccess 权限请求卡工具:校验私聊/群聊目标、Dataset 声明和本轮查询状态;不管平台授权交互。对应 REDoc《【技术设计】DataAccess》
1
2
  import { Type } from "typebox";
3
+ import { normalizeDataAccessMemberId } from "./dataAccess.js";
4
+ const SINGLE_DATASET_REQUESTS = new Set(["device.location", "device.calendar"]);
2
5
  const requestParams = Type.Object({
3
6
  reason: Type.String({ minLength: 1, maxLength: 300, description: "为什么当前任务需要这项权限" }),
4
7
  datasets: Type.Array(Type.String(), { minItems: 1, maxItems: 8, uniqueItems: true }),
8
+ memberId: Type.Optional(Type.String({ description: "群聊必填。消息前缀显示为 #m_…,参数只传不带 # 的 m_…;私聊不要传" })),
5
9
  });
6
10
  export function validateDataAccessRequest(input, convoKey, requirements) {
7
- if (!convoKey.startsWith("p_"))
8
- throw new Error("权限请求卡第一期只支持私聊;请引导群成员到私聊中授权");
11
+ const privateConversation = convoKey.startsWith("p_");
12
+ const groupConversation = convoKey.startsWith("g_");
13
+ if (!privateConversation && !groupConversation)
14
+ throw new Error("权限请求卡只支持私聊或群聊");
15
+ const memberId = normalizeDataAccessMemberId(input.memberId);
16
+ if (privateConversation && memberId !== undefined && memberId.length > 0)
17
+ throw new Error("私聊权限请求不能传 memberId");
18
+ if (groupConversation && (memberId === undefined || !memberId.startsWith("m_") || memberId.length <= 2)) {
19
+ throw new Error("群聊权限请求必须传目标成员的 memberId(消息里显示为 #m_…,参数为不带 # 的 m_…),不能按姓名猜测");
20
+ }
9
21
  const reason = input.reason.trim();
10
22
  if (!reason || reason.length > 300)
11
23
  throw new Error("权限用途需要 1~300 字");
12
24
  const datasets = [...new Set(input.datasets)];
13
25
  if (datasets.length === 0 || datasets.length > 8)
14
26
  throw new Error("授权请求需要 1~8 个 Dataset");
27
+ if (datasets.length > 1 && datasets.some((id) => SINGLE_DATASET_REQUESTS.has(id))) {
28
+ throw new Error("位置和日历授权卡每次只能单独申请一个 Dataset;请选择回答当前问题必需的一项,等用户处理后再按需继续");
29
+ }
15
30
  const declared = new Map(requirements.map((item) => [item.id, item]));
16
31
  if (datasets.some((id) => !declared.has(id)))
17
32
  throw new Error("授权请求只能包含已声明的 Dataset");
18
- return { reason, datasets };
33
+ return groupConversation ? { reason, datasets, memberId } : { reason, datasets };
19
34
  }
20
- export function dataAccessRequestTools(client, convoKey, enqueue, tracker, requirements, onRequested) {
21
- const request = {
35
+ /** 给一场会话造 data_access_request。enqueue 是这场会话的发送队列;onRequested 告诉运行时这一轮发了等用户操作的卡 */
36
+ export function dataAccessRequestTool(convoKey, enqueue, tracker, requirements, onRequested) {
37
+ return {
22
38
  name: "data_access_request",
23
39
  label: "正在请求授权",
24
40
  dataAccessPolicy: { retention: "conversation", result: "independent", arguments: "user-visible" },
25
- description: "在私聊中向用户展示统一权限卡。datasets 必须来自已声明清单。发卡后结束本轮并等待用户操作。",
41
+ description: "向用户展示统一权限卡。私聊不要传 memberId;群聊必须传目标成员的 memberId。消息前缀显示为 #m_…,参数只传不带 # 的 m_…;卡片全群可见但仅该成员可操作,不能按姓名猜测。调用前必须先用相同 memberId 的 data_access_query 查询;只允许为状态为 notGranted 的已声明 Dataset 发卡。位置或日历每次只能单独申请一个 Dataset;存在多个未授权项时,先申请回答当前问题必需的一项。systemPermissionDenied 表示业务授权仍有效、但用户关闭了系统权限,应直接引导用户到系统设置中开启,不能发卡。发卡后结束本轮并等待目标成员操作。",
26
42
  parameters: requestParams,
27
43
  execute: async (callId, params) => {
28
44
  const input = validateDataAccessRequest(params, convoKey, requirements);
45
+ const statuses = input.datasets.map((id) => ({ id, status: tracker.latestStatus(id, input.memberId) }));
46
+ const notQueried = statuses.filter(({ status }) => status === undefined).map(({ id }) => id);
47
+ if (notQueried.length > 0) {
48
+ throw new Error(`发授权卡前必须先用 data_access_query 查询:${notQueried.join("、")}。只有查询结果为 notGranted 的 Dataset 才能申请授权。`);
49
+ }
50
+ const systemDenied = statuses.filter(({ status }) => status === "systemPermissionDenied").map(({ id }) => id);
51
+ if (systemDenied.length > 0) {
52
+ throw new Error(`${systemDenied.join("、")} 的业务授权仍有效,但用户关闭了系统权限;不要重复发送授权卡,请直接引导用户到系统设置中重新开启对应权限。`);
53
+ }
54
+ const notRequestable = statuses.filter(({ status }) => status !== "notGranted");
55
+ if (notRequestable.length > 0) {
56
+ throw new Error(`只有 notGranted 才能发送授权卡;当前状态:${notRequestable.map(({ id, status }) => `${id}=${status}`).join("、")}。请根据状态直接回复用户。`);
57
+ }
29
58
  enqueue({ type: "permissionRequest", text: input.reason, permissionRequest: input, idempotencyKey: `permission:${callId}` });
30
- onRequested?.();
59
+ onRequested();
31
60
  return { content: [{ type: "text", text: "权限请求卡已发送,请等待用户处理。" }], details: undefined, terminate: true };
32
61
  },
33
62
  };
34
- return [request];
35
63
  }
36
64
  //# sourceMappingURL=dataAccessRequest.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"dataAccessRequest.js","sourceRoot":"","sources":["../../src/tools/dataAccessRequest.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAK/B,MAAM,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC;IACjC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,SAAS,EAAE,GAAG,EAAE,WAAW,EAAE,eAAe,EAAE,CAAC;IACnF,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;CACpF,CAAC,CAAC;AAEH,MAAM,UAAU,yBAAyB,CAAC,KAA6B,EAAE,QAAgB,EAAE,YAAwC;IAClI,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;IAC9E,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;IACnC,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,GAAG,GAAG;QAAE,MAAM,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAC;IACtE,MAAM,QAAQ,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC9C,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;IAC1F,MAAM,QAAQ,GAAG,IAAI,GAAG,CAA0B,YAAY,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;IAC/F,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;IACtF,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;AAC7B,CAAC;AAED,MAAM,UAAU,sBAAsB,CACrC,MAAiB,EACjB,QAAgB,EAChB,OAA6C,EAC7C,OAA+B,EAC/B,YAAwC,EACxC,WAAwB;IAExB,MAAM,OAAO,GAA+C;QAC3D,IAAI,EAAE,qBAAqB;QAC3B,KAAK,EAAE,QAAQ;QACf,gBAAgB,EAAE,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,EAAE,aAAa,EAAE,SAAS,EAAE,cAAc,EAAE;QACjG,WAAW,EAAE,mDAAmD;QAChE,UAAU,EAAE,aAAa;QACxB,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE;YAClC,MAAM,KAAK,GAAG,yBAAyB,CAAC,MAAgC,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC;YAClG,OAAO,CAAC,EAAE,IAAI,EAAE,mBAAmB,EAAE,IAAI,EAAE,KAAK,CAAC,MAAM,EAAE,iBAAiB,EAAE,KAAK,EAAE,cAAc,EAAE,cAAc,MAAM,EAAE,EAAE,CAAC,CAAC;YAC7H,WAAW,EAAE,EAAE,CAAC;YAChB,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,mBAAmB,EAAE,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;QACxG,CAAC;KACD,CAAC;IACF,OAAO,CAAC,OAAO,CAAC,CAAC;AAClB,CAAC"}
1
+ {"version":3,"file":"dataAccessRequest.js","sourceRoot":"","sources":["../../src/tools/dataAccessRequest.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"proactive.d.ts","sourceRoot":"","sources":["../../src/tools/proactive.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAmB,MAAM,+BAA+B,CAAC;AAEhF,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,KAAK,EAAE,eAAe,EAAE,4BAA4B,EAAE,MAAM,aAAa,CAAC;AACjF,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AAkC9D,0DAA0D;AAC1D,wBAAgB,0BAA0B,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,4BAA4B,EAAE,YAAY,CAAC,EAAE,SAAS,eAAe,EAAE,GAAG;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,4BAA4B,CAAA;CAAE,CAoBrM;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,SAAS,eAAe,EAAE,EAAE,eAAe,CAAC,EAAE,sBAAsB,GAAG,SAAS,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC,CAoD7M"}
1
+ {"version":3,"file":"proactive.d.ts","sourceRoot":"","sources":["../../src/tools/proactive.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAmB,MAAM,+BAA+B,CAAC;AAEhF,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,KAAK,EAAE,eAAe,EAAE,4BAA4B,EAAE,MAAM,aAAa,CAAC;AACjF,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AAkC9D,0DAA0D;AAC1D,wBAAgB,0BAA0B,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,4BAA4B,EAAE,YAAY,CAAC,EAAE,SAAS,eAAe,EAAE,GAAG;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,4BAA4B,CAAA;CAAE,CAoBrM;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,SAAS,eAAe,EAAE,EAAE,eAAe,CAAC,EAAE,sBAAsB,GAAG,SAAS,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC,CAmD7M"}
@@ -93,10 +93,8 @@ export function proactiveTools(client, convoKey, requirements, dataAccessUsage)
93
93
  description: "按稳定 key 关闭当前私聊的一条主动服务订阅。",
94
94
  parameters: keyParams,
95
95
  execute: async (_callId, params, signal) => {
96
- const normalizedKey = params.key.trim();
97
- if (!new RegExp(KEY_PATTERN).test(normalizedKey))
98
- throw new Error("key 需要是 1~64 位小写字母、数字、点、下划线或横线,且首位是字母或数字");
99
- const unsubscribed = await client.unsubscribeProactive(convoKey, normalizedKey, signal);
96
+ // key 合不合规 pi 调工具前已按参数 schema 的 pattern 验过
97
+ const unsubscribed = await client.unsubscribeProactive(convoKey, params.key, signal);
100
98
  return text(unsubscribed ? "主动服务已关闭。" : "没有找到对应的主动服务。");
101
99
  },
102
100
  };