@my-life-buddies/buddy-runtime 0.0.2 → 0.0.3

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 CHANGED
@@ -5,7 +5,7 @@ MLB 搭子运行时。基于 [`@earendil-works/pi-agent-core`](https://www.npmjs
5
5
  ## 安装
6
6
 
7
7
  ```bash
8
- npm install @my-life-buddies/buddy-runtime typebox
8
+ npm install @my-life-buddies/buddy-runtime
9
9
  ```
10
10
 
11
11
  要求 Node.js ≥ 22.19。
@@ -84,10 +84,10 @@ type BuddyOptions =
84
84
 
85
85
  | 字段 | 说明 |
86
86
  |---|---|
87
- | `initialState.systemPrompt` | 系统提示。静态内容;每回合变化的信息不应写在这里。搭子目录下有 `resources/` 时,运行时在末尾追加资料清单 |
87
+ | `initialState.systemPrompt` | 系统提示。静态内容;每回合变化的信息不应写在这里。工程目录下有 `resources/` 时,运行时在末尾追加资料清单 |
88
88
  | `initialState.tools` | 工具列表,类型为 pi 的 `AgentTool`。`label` 为必填,用作用户可见的状态行文案(空字符串表示不显示);`execute` 返回值的 `details` 为必填(可为 `undefined`);执行失败应直接抛出异常。工具名不得与内置工具或其他工具重复。先单独声明为 `AgentTool<typeof 参数 schema>` 再放入数组,`execute` 的参数才有类型;直接写在数组里时参数类型为 `unknown` |
89
89
  | `initialState.thinkingLevel` | 思考级别,默认 `off`。模型不支持的级别在发请求前就近换成支持的一档。显式设了模型不支持的级别时,每场会话建立时打一条 warn |
90
- | `transformContext` | 历史裁剪。开发者的函数先执行,运行时随后插入平台下发的会话上下文 |
90
+ | `transformContext` | 历史裁剪。平台下发的会话上下文是消息流里的记录,拿到的历史里已经有它 |
91
91
  | `beforeToolCall` / `afterToolCall` / `shouldStopAfterTurn` / `prepareNextTurnWithContext` / `thinkingBudgets` / `toolExecution` | 原样传递给 pi |
92
92
 
93
93
  密钥、会话历史、会话标识与插话策略由运行时统一管理,不对开发者开放。模型通过 `BuddyServer.start` 的 `model` 选择。
@@ -141,25 +141,35 @@ await BuddyServer.start({
141
141
 
142
142
  完整示例见 [examples/aunt-tu/](examples/aunt-tu/):`taste_read` / `taste_write` 两个工具用 `memory` 记每个人爱吃什么、不爱吃什么。
143
143
 
144
+ `dataAccess.query` 按当前会话读取用户授权的数据。私聊只传 `datasets`;群聊还要传消息前缀里的稳定 `memberId`。平台逐 Dataset 返回 `available`、`notDeclared`、`notGranted`、`disabledInGroup` 或 `unavailable`,只有 `available` 带数据。会话键和真实用户身份由平台绑定,开发者不能传真实用户 ID。
145
+
144
146
  ### 内置工具:运行时注册给模型
145
147
 
146
148
  以下工具由运行时注册到 Agent,排在开发者工具之前,由模型调用。开发者不需要注册,也不能再注册同名工具;系统提示中可按名称引用。
147
149
 
148
150
  | 工具 | 何时注册 | 做什么 |
149
151
  |---|---|---|
152
+ | `data_access_query` | 搭子声明过至少一个 Dataset | 按需读取当前会话用户授权的数据;单次最多 8 个 Dataset,响应上限 512 KiB |
150
153
  | `widget_create` / `widget_write` / `widget_read` / `widget_delete` / `widget_send` | 搭子在平台上登记了小挂件类型 | 建小挂件、写 / 读 / 删记录、把小挂件发进聊天流 |
151
- | `read_resource` | 搭子目录下有 `resources/`,且其中有 `.md` | 按资料清单里的相对路径读一篇资料 |
154
+ | `read_resource` | 工程目录下有 `resources/`,且其中有 `.md` | 按资料清单里的相对路径读一篇资料 |
155
+
156
+ DataAccess 真实数据仅在当前 Agent run 中可见;发生查询后,该 run 的平台 Tool 记录与长期 transcript 不保存 Tool 参数、Tool 原始结果和 thinking,只保留 Dataset ID、查询状态及最终给用户看的正文。
152
157
 
153
158
  #### 资料
154
159
 
155
- 运行时启动时读入其中全部 `.md`(递归,跳过点目录与 `node_modules`),注册 `read_resource`,并在系统提示末尾追加资料清单。搭子目录指入口脚本(如 `src/main.ts`)往上最近一个有 `package.json` 的目录,与进程从哪个工作目录启动无关。
160
+ 资料放在工程目录下的 `resources/` 里,是一篇篇 `.md` 文件。运行时自动让模型按需读取,开发者不需要写代码。
161
+
162
+ - 读哪些文件:进程启动时读一次 `resources/` 下全部 `.md`,包括子目录;跳过以 `.` 开头的文件与目录,以及 `node_modules`、`venv`、`.venv`、`__pycache__`;其他扩展名的文件忽略。资料改动后需重启进程。
163
+ - 模型看到什么:系统提示末尾追加一份资料清单,列出每篇资料相对 `resources/` 的路径;模型调用 `read_resource` 并传入清单中的路径,读到该篇全文。
164
+ - 没有资料时:`resources/` 不存在或其中没有 `.md`,不注册 `read_resource`,也不追加清单。
156
165
 
157
166
  ```
158
- my-buddy/
159
- ├─ resources/
167
+ my-buddy/ 工程目录
168
+ ├─ package.json
169
+ ├─ resources/ 资料目录
160
170
  │ └─ research/
161
171
  │ └─ 01-writings.md 清单中写作 research/01-writings.md
162
- └─ src/main.ts
172
+ └─ src/main.ts 入口脚本
163
173
  ```
164
174
 
165
175
  完整示例见 [examples/stacy-sims/](examples/stacy-sims/)。
@@ -168,7 +178,7 @@ my-buddy/
168
178
 
169
179
  开发者通过平台 CLI 接口给搭子登记小挂件类型:`PUT /cli/buddies/:id/widget-types/:typeId/schema` 交 schema,每个模块写一句 `description` 给模型读,每条记录的形状是一份 JSON Schema;`PUT /cli/buddies/:id/widget-types/:typeId/page` 交展示页面,单个 HTML 文件。
170
180
 
171
- 运行时在第一场会话建立时拉一次 `GET /internal/v1/widget-types`,按拉到的类型注册五个 `widget_*` 工具,工具说明里附上各类型的模块与字段;一个类型都没登记时不注册。这场会话里已有哪些小挂件,由平台随消息下发的会话上下文告诉模型。
181
+ 运行时在第一场会话建立时拉一次 `GET /internal/v1/widget-types`,按拉到的类型注册五个 `widget_*` 工具,工具说明里附上各类型的模块与字段;一个类型都没登记时不注册。这场会话里已有哪些小挂件,由平台写进消息流的会话上下文告诉模型。
172
182
 
173
183
  用法见 [examples/aunt-tu/](examples/aunt-tu/)。
174
184
 
@@ -186,4 +196,5 @@ my-buddy/
186
196
  ## 开发
187
197
 
188
198
  - `npm run dev`:以 `node --watch` 启动,文件变更后自动重启。停止时需终止整个进程树(`pkill -f "node --watch .* src/main.ts"`),仅终止子进程会被父进程重新拉起。
199
+ - 会话消息拉取遇到临时网络错误时会主动指数退避重试(1 秒起步、最高 30 秒);新的 SSE 通知会取消等待并立即重拉。
189
200
  - 运行时仓库:`npm test`、`npm run typecheck`、`npm run build`。
@@ -2,8 +2,9 @@ import { Agent } from "@earendil-works/pi-agent-core";
2
2
  import type { AgentEvent, StreamFn } from "@earendil-works/pi-agent-core";
3
3
  import type { Api, Model } from "@earendil-works/pi-ai";
4
4
  import type { MLBClient, WidgetType } from "../mlbClient.ts";
5
+ import { DataAccessUsageTracker } from "../tools/dataAccess.ts";
5
6
  import type { Resource } from "../tools/resource.ts";
6
- import type { BuddyFactory, BuddyLogger } from "../types.ts";
7
+ import type { BuddyFactory, BuddyLogger, DataRequirement } from "../types.ts";
7
8
  export interface AgentDeps {
8
9
  key: string;
9
10
  buddyId: string;
@@ -15,13 +16,16 @@ export interface AgentDeps {
15
16
  widgetTypes: () => Promise<WidgetType[]>;
16
17
  /** 搭子目录下 resources/ 里的资料;空数组就不装 read_resource、不接清单 */
17
18
  resources: Resource[];
19
+ dataRequirements: () => Promise<DataRequirement[]>;
18
20
  factory: BuddyFactory;
19
21
  log: BuddyLogger;
20
- /** 每次模型调用前现取平台 context 段;空就不插 */
21
- contextOf: () => string | undefined;
22
22
  /** Agent 事件的去处。pi 会等它返回,所以只能同步做事 */
23
23
  onEvent: (agent: Agent, event: AgentEvent) => void;
24
24
  }
25
25
  /** 跑开发者工厂拿配置,叠上运行时预置,建 Agent。开发者的工具名跟运行时的工具(小挂件、read_resource)重名或互相重名 → throw。 */
26
- export declare function createAgent(deps: AgentDeps): Promise<Agent>;
26
+ export interface CreatedAgent {
27
+ agent: Agent;
28
+ dataAccessUsage: DataAccessUsageTracker;
29
+ }
30
+ export declare function createAgent(deps: AgentDeps): Promise<CreatedAgent>;
27
31
  //# sourceMappingURL=agent.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../src/conversation/agent.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,KAAK,EAAE,MAAM,+BAA+B,CAAC;AACtD,OAAO,KAAK,EAAE,UAAU,EAAa,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AAErF,OAAO,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAGxD,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAErD,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAA8B,MAAM,aAAa,CAAC;AAEzF,MAAM,WAAW,SAAS;IACzB,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,SAAS,CAAC;IAClB,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;IAClB,QAAQ,EAAE,QAAQ,CAAC;IACnB,iEAAiE;IACjE,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;IACzC,sDAAsD;IACtD,SAAS,EAAE,QAAQ,EAAE,CAAC;IACtB,OAAO,EAAE,YAAY,CAAC;IACtB,GAAG,EAAE,WAAW,CAAC;IACjB,iCAAiC;IACjC,SAAS,EAAE,MAAM,MAAM,GAAG,SAAS,CAAC;IACpC,oCAAoC;IACpC,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,KAAK,IAAI,CAAC;CACnD;AAED,kFAAkF;AAClF,wBAAsB,WAAW,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,CAmGjE"}
1
+ {"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../src/conversation/agent.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,KAAK,EAAE,MAAM,+BAA+B,CAAC;AACtD,OAAO,KAAK,EAAE,UAAU,EAAa,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AAErF,OAAO,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAGxD,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7D,OAAO,EAAkB,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAEhF,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAErD,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAA8B,eAAe,EAAE,MAAM,aAAa,CAAC;AAE1G,MAAM,WAAW,SAAS;IACzB,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,SAAS,CAAC;IAClB,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;IAClB,QAAQ,EAAE,QAAQ,CAAC;IACnB,iEAAiE;IACjE,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;IACzC,sDAAsD;IACtD,SAAS,EAAE,QAAQ,EAAE,CAAC;IACtB,gBAAgB,EAAE,MAAM,OAAO,CAAC,eAAe,EAAE,CAAC,CAAC;IACnD,OAAO,EAAE,YAAY,CAAC;IACtB,GAAG,EAAE,WAAW,CAAC;IACjB,oCAAoC;IACpC,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,KAAK,IAAI,CAAC;CACnD;AAED,kFAAkF;AAClF,MAAM,WAAW,YAAY;IAC5B,KAAK,EAAE,KAAK,CAAC;IACb,eAAe,EAAE,sBAAsB,CAAC;CACxC;AAED,wBAAsB,WAAW,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO,CAAC,YAAY,CAAC,CA2GxE"}
@@ -1,18 +1,19 @@
1
1
  // 一场会话的 Agent 怎么建:运行时先把该填的填好,开发者的配置叠上去。
2
- // 管:拼好交给开发者工厂的 Conversation(会话键、日志、绑好会话键的 memory 三个方法),跑工厂拿配置;
3
- // 运行时的工具(小挂件五个、有资料时的 read_resource)排在开发者工具前面并查重名;有资料时把资料清单接在开发者的 systemPrompt 末尾;
2
+ // 管:拼好交给开发者工厂的 Conversation(会话键、日志、绑好会话键的 memory / DataAccess),跑工厂拿配置;
3
+ // 运行时工具(DataAccess、小挂件、有资料时的 read_resource)排在开发者工具前面并查重名;有资料时把资料清单接在 systemPrompt 末尾;
4
4
  // 开发者显式设的 thinkingLevel 这个模型不支持时打一条 warn,写明支持哪几档、实际会怎么发;
5
- // 钩子叠加——开发者的 transformContext 先跑、运行时最后插平台 context 段;开发者的 beforeToolCall 包 try/catch 抛了按放行;其余直通;
6
- // 每次请求模型,transformContext 入参 / 出参、convertToLlm 出参、请求体(onPayload)全量打日志。
5
+ // 钩子叠加——开发者的 transformContext try/catch 抛了用原历史;开发者的 beforeToolCall 包 try/catch 抛了按放行;其余直通;
6
+ // 模型调用日志只记规模,不打印消息、Tool 结果和请求体,避免用户对话与授权数据进入日志。
7
7
  // 不管:Agent 建好之后的事(回合、事件分发在 index.ts)。
8
8
  import { Agent } from "@earendil-works/pi-agent-core";
9
9
  import { clampThinkingLevel, getSupportedThinkingLevels } from "@earendil-works/pi-ai";
10
- import { convertToLlm, injectContext } from "./convert.js";
10
+ import { convertToLlm } from "./convert.js";
11
11
  import { errorText } from "../log.js";
12
+ import { dataAccessTool, DataAccessUsageTracker } from "../tools/dataAccess.js";
12
13
  import { readResourceTool, resourceCatalog } from "../tools/resource.js";
13
14
  import { widgetTools } from "../tools/widgets.js";
14
- /** 跑开发者工厂拿配置,叠上运行时预置,建 Agent。开发者的工具名跟运行时的工具(小挂件、read_resource)重名或互相重名 → throw。 */
15
15
  export async function createAgent(deps) {
16
+ const dataAccessUsage = new DataAccessUsageTracker();
16
17
  const conversation = {
17
18
  key: deps.key,
18
19
  log: deps.log,
@@ -21,14 +22,19 @@ export async function createAgent(deps) {
21
22
  write: (key, text) => deps.client.memoryWrite(deps.key, key, text),
22
23
  delete: (key) => deps.client.memoryDelete(deps.key, key),
23
24
  },
25
+ dataAccess: {
26
+ query: ({ datasets, memberId }) => dataAccessUsage.query(deps.client, deps.key, datasets, memberId),
27
+ },
24
28
  };
25
29
  const options = await deps.factory(conversation);
26
- const types = await deps.widgetTypes();
30
+ const [types, requirements] = await Promise.all([deps.widgetTypes(), deps.dataRequirements()]);
31
+ const dataTools = requirements.length === 0 ? [] : [dataAccessTool(deps.client, deps.key, dataAccessUsage, requirements)];
27
32
  const tools = [
33
+ ...dataTools,
28
34
  ...widgetTools(deps.client, deps.key, types),
29
35
  ...(deps.resources.length > 0 ? [readResourceTool(deps.resources)] : []),
30
36
  ...(options.initialState.tools ?? []),
31
- ];
37
+ ].map((tool) => dataAccessUsage.track(tool));
32
38
  const seen = new Set();
33
39
  for (const tool of tools) {
34
40
  if (seen.has(tool.name))
@@ -52,6 +58,7 @@ export async function createAgent(deps) {
52
58
  const catalog = resourceCatalog(deps.resources);
53
59
  const devTransform = options.transformContext;
54
60
  const devBefore = options.beforeToolCall;
61
+ const devAfter = options.afterToolCall;
55
62
  const agent = new Agent({
56
63
  streamFn: deps.streamFn,
57
64
  getApiKey: () => deps.token,
@@ -65,38 +72,36 @@ export async function createAgent(deps) {
65
72
  },
66
73
  steeringMode: "all",
67
74
  followUpMode: "all",
68
- // 下面三个钩子按 pi 每次请求模型时的调用顺序排:transformContext → convertToLlm → onPayload,每一步的全量都打一行日志
69
- // 返回的是新数组(injectContext 不动传进来的);context 为空就原样交回去,不插
75
+ // 下面三个钩子按 pi 每次请求模型时的调用顺序排;只记录规模,不记录正文或请求体。
76
+ // 平台的场合交代是历史里的记录,不在这里插;这里只跑开发者的裁剪
70
77
  transformContext: async (messages, signal) => {
71
- log.info("transformContext 入参", { convoKey: key, messages });
78
+ log.info("transformContext 入参", { convoKey: key, messageCount: messages.length });
79
+ if (devTransform === undefined)
80
+ return messages;
72
81
  let base = messages;
73
- if (devTransform !== undefined) {
74
- try {
75
- base = await devTransform(messages, signal);
76
- }
77
- catch (e) {
78
- log.warn("开发者的 transformContext 抛错,用原历史", { convoKey: key, error: errorText(e) });
79
- base = messages;
80
- }
81
- log.info("开发者 transformContext 出参", { convoKey: key, messages: base });
82
+ try {
83
+ base = await devTransform(messages, signal);
84
+ }
85
+ catch (e) {
86
+ log.warn("开发者的 transformContext 抛错,用原历史", { convoKey: key, error: errorText(e) });
87
+ base = messages;
82
88
  }
83
- const injected = injectContext(base, deps.contextOf());
84
- log.info("injectContext 出参", { convoKey: key, messages: injected });
85
- return injected;
89
+ log.info("开发者 transformContext 出参", { convoKey: key, messageCount: base.length });
90
+ return base;
86
91
  },
87
92
  convertToLlm: (messages) => {
88
93
  const llmMessages = convertToLlm(messages);
89
- log.info("convertToLlm 出参", { convoKey: key, messages: llmMessages });
94
+ log.info("convertToLlm 出参", { convoKey: key, messageCount: llmMessages.length });
90
95
  return llmMessages;
91
96
  },
92
97
  // 只打日志、返回 undefined:返回别的值 pi-ai 会拿它顶替请求体发出去
93
- onPayload: (payload) => {
94
- log.info("模型请求体", { convoKey: key, payload });
98
+ onPayload: () => {
99
+ log.info("模型请求已构建", { convoKey: key });
95
100
  return undefined;
96
101
  },
97
102
  beforeToolCall: devBefore === undefined
98
103
  ? undefined
99
- : async (context, signal) => {
104
+ : async (context, signal) => dataAccessUsage.runForTool(context.toolCall.id, async () => {
100
105
  try {
101
106
  return await devBefore(context, signal);
102
107
  }
@@ -104,14 +109,16 @@ export async function createAgent(deps) {
104
109
  log.warn("开发者的 beforeToolCall 抛错,按放行", { convoKey: key, tool: context.toolCall.name, error: errorText(e) });
105
110
  return undefined;
106
111
  }
107
- },
108
- afterToolCall: options.afterToolCall,
112
+ }),
113
+ afterToolCall: devAfter === undefined
114
+ ? undefined
115
+ : (context, signal) => dataAccessUsage.runForTool(context.toolCall.id, () => devAfter(context, signal)),
109
116
  shouldStopAfterTurn: options.shouldStopAfterTurn,
110
117
  prepareNextTurnWithContext: options.prepareNextTurnWithContext,
111
118
  thinkingBudgets: options.thinkingBudgets,
112
119
  toolExecution: options.toolExecution,
113
120
  });
114
121
  agent.subscribe((event) => deps.onEvent(agent, event));
115
- return agent;
122
+ return { agent, dataAccessUsage };
116
123
  }
117
124
  //# sourceMappingURL=agent.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"agent.js","sourceRoot":"","sources":["../../src/conversation/agent.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agent.js","sourceRoot":"","sources":["../../src/conversation/agent.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import type { AgentMessage } from "@earendil-works/pi-agent-core";
2
2
  import type { AssistantMessage, Message, ToolResultMessage } from "@earendil-works/pi-ai";
3
- import type { NoteMessage, OutgoingMessage, PlatformMessage } from "../types.ts";
3
+ import type { MLBMessage, NoteMessage, OutgoingMessage } from "../types.ts";
4
4
  /** 重建 assistant 消息时抄的模型身份(model.ts 的 modelIdentity 给) */
5
5
  export interface ModelIdentity {
6
6
  api: string;
@@ -9,15 +9,16 @@ export interface ModelIdentity {
9
9
  }
10
10
  /**
11
11
  * 把一批平台记录换成 pi 的历史。跳过的:interrupted 的半截话、question / widget、空正文又没工具调用的搭子记录。
12
- * 对方的 message 变 user(群里带成员前缀)、system 变 user(带「群里发生了一件事」)、messagesCard 拍平成 user
12
+ * 对方的 message 变 user(群里带成员前缀)、system 变 user(带「群里发生了一件事」)、messagesCard 拍平成 user
13
+ * 平台的场合交代 context 原样变 user(开头自带「平台交代给你的情况」那句用法,不套前缀);
13
14
  * 搭子的 message / checkin 变 assistant,tool 变 assistant + 每个调用一条 toolResult,note 变 note。
14
15
  */
15
- export declare function toAgentMessages(records: PlatformMessage[], identity: ModelIdentity): AgentMessage[];
16
+ export declare function toAgentMessages(records: MLBMessage[], identity: ModelIdentity): AgentMessage[];
16
17
  /**
17
18
  * 不带工具调用的 assistant 消息写成 message 记录。
18
19
  * 正常收尾的照写(带 thinking);error / aborted 收尾但已经说了半截的写成 interrupted;其余不写。
19
20
  */
20
- export declare function outboundFromAssistant(m: AssistantMessage): OutgoingMessage | null;
21
+ export declare function outboundFromAssistant(m: AssistantMessage, omitThinking?: boolean): OutgoingMessage | null;
21
22
  /**
22
23
  * 带工具调用的 assistant 消息连同它的结果写成一条 tool 记录;每个调用的 summary 取工具的 label,没有 label 用名字。
23
24
  * 没有工具调用的返回 null(那种走 outboundFromAssistant)。
@@ -25,7 +26,12 @@ export declare function outboundFromAssistant(m: AssistantMessage): OutgoingMess
25
26
  export declare function outboundFromTurn(m: AssistantMessage, toolResults: ToolResultMessage[], tools: {
26
27
  name: string;
27
28
  label: string;
28
- }[]): OutgoingMessage | null;
29
+ }[], dataAccessDetailsOf?: (toolCallId: string) => unknown, sensitiveRun?: boolean): OutgoingMessage | null;
30
+ /**
31
+ * Agent run 完成后,把内存 transcript 里的 DataAccess 原始结果换成状态摘要。
32
+ * run 内不能提前替换:模型在 Tool 后续一轮还需要读取真实数据。
33
+ */
34
+ export declare function redactSensitiveRun(messages: AgentMessage[], runMessages: AgentMessage[], dataAccessDetailsOf?: (toolCallId: string) => unknown): AgentMessage[];
29
35
  /** note 消息写成 note 记录 */
30
36
  export declare function outboundFromNote(n: NoteMessage): OutgoingMessage;
31
37
  /** assistant 消息里所有 thinking 块的推理原文拼起来;一个字都没有返回 undefined */
@@ -37,10 +43,4 @@ export declare function textOf(m: AssistantMessage): string;
37
43
  * 返回的是新数组,合并出来的也是新对象,不改传进来的消息。
38
44
  */
39
45
  export declare const convertToLlm: (messages: AgentMessage[]) => Message[];
40
- /**
41
- * 把平台随拉取下发的 context 段插进历史:找到末尾那段连续的 user(note 也算,它到模型那边就是 user),插在这段前面,
42
- * 后面的 convertToLlm 会把它跟这段合并;末尾是 assistant / toolResult 时,往前找最后一段 user 插在它前面。
43
- * context 为空原样返回;否则返回新数组,不改传进来的。
44
- */
45
- export declare function injectContext(messages: AgentMessage[], context: string | undefined): AgentMessage[];
46
46
  //# sourceMappingURL=convert.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"convert.d.ts","sourceRoot":"","sources":["../../src/conversation/convert.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,KAAK,EACX,gBAAgB,EAEhB,OAAO,EAIP,iBAAiB,EAGjB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAAgB,WAAW,EAAE,eAAe,EAAE,eAAe,EAAoB,MAAM,aAAa,CAAC;AAEjH,yDAAyD;AACzD,MAAM,WAAW,aAAa;IAC7B,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;CACd;AA6BD;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,eAAe,EAAE,EAAE,QAAQ,EAAE,aAAa,GAAG,YAAY,EAAE,CAgCnG;AAgFD;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,CAAC,EAAE,gBAAgB,GAAG,eAAe,GAAG,IAAI,CAQjF;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAC/B,CAAC,EAAE,gBAAgB,EACnB,WAAW,EAAE,iBAAiB,EAAE,EAChC,KAAK,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,EAAE,GACtC,eAAe,GAAG,IAAI,CAkBxB;AAED,wBAAwB;AACxB,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,WAAW,GAAG,eAAe,CAEhE;AAED,4DAA4D;AAC5D,wBAAgB,UAAU,CAAC,CAAC,EAAE,gBAAgB,GAAG,MAAM,GAAG,SAAS,CAMlE;AAED,mCAAmC;AACnC,wBAAgB,MAAM,CAAC,CAAC,EAAE,gBAAgB,GAAG,MAAM,CAKlD;AAYD;;;GAGG;AACH,eAAO,MAAM,YAAY,GAAI,UAAU,YAAY,EAAE,KAAG,OAAO,EAa9D,CAAC;AA8BF;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,YAAY,EAAE,EAAE,OAAO,EAAE,MAAM,GAAG,SAAS,GAAG,YAAY,EAAE,CAQnG"}
1
+ {"version":3,"file":"convert.d.ts","sourceRoot":"","sources":["../../src/conversation/convert.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,KAAK,EACX,gBAAgB,EAEhB,OAAO,EAIP,iBAAiB,EAGjB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAAgB,UAAU,EAAe,WAAW,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAGvG,yDAAyD;AACzD,MAAM,WAAW,aAAa;IAC7B,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;CACd;AA6BD;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,UAAU,EAAE,EAAE,QAAQ,EAAE,aAAa,GAAG,YAAY,EAAE,CAmC9F;AAgFD;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,CAAC,EAAE,gBAAgB,EAAE,YAAY,UAAQ,GAAG,eAAe,GAAG,IAAI,CAQvG;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAC/B,CAAC,EAAE,gBAAgB,EACnB,WAAW,EAAE,iBAAiB,EAAE,EAChC,KAAK,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,EAAE,EACxC,mBAAmB,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,OAAO,EACrD,YAAY,UAAQ,GAClB,eAAe,GAAG,IAAI,CAqBxB;AASD;;;GAGG;AAEH,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;AAED,wBAAwB;AACxB,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,WAAW,GAAG,eAAe,CAEhE;AAED,4DAA4D;AAC5D,wBAAgB,UAAU,CAAC,CAAC,EAAE,gBAAgB,GAAG,MAAM,GAAG,SAAS,CAMlE;AAED,mCAAmC;AACnC,wBAAgB,MAAM,CAAC,CAAC,EAAE,gBAAgB,GAAG,MAAM,CAKlD;AAYD;;;GAGG;AACH,eAAO,MAAM,YAAY,GAAI,UAAU,YAAY,EAAE,KAAG,OAAO,EAa9D,CAAC"}
@@ -1,7 +1,8 @@
1
1
  // 平台记录与 pi 消息之间的换算。只管形状换算,不碰网络、不碰 Agent、不管游标和幂等键。
2
2
  // 入站:把 GET /internal/v1/messages 拉回来的记录换成 pi 的 AgentMessage(重建历史、灌对方的话都用它)。
3
3
  // 出站:把 pi 跑出来的 assistant / toolResult / note 换成 POST /internal/v1/messages 的每条 body。
4
- // 另外两件给 Agent 用的事也在这:convertToLlmnote 变 user、相邻 user 合并)和 injectContext(把平台 context 段插进历史末尾)。
4
+ // 另外给 Agent 用的 convertToLlm 也在这:note 变 user、相邻 user 合并。
5
+ import { DATA_ACCESS_TOOL_NAME, SENSITIVE_RUN_TOOL_SUMMARY, dataAccessSummary, isDataAccessDetails } from "../tools/dataAccess.js";
5
6
  /** 工具结果没回来(回合被中断)时,写给模型和平台的占位文本 */
6
7
  const MISSING_TOOL_RESULT = "(工具结果未返回:回合被中断)";
7
8
  /** system 记录换成 user 消息时加在正文前的说明 */
@@ -25,7 +26,8 @@ function emptyUsage() {
25
26
  // —— 入站:平台记录 → pi AgentMessage
26
27
  /**
27
28
  * 把一批平台记录换成 pi 的历史。跳过的:interrupted 的半截话、question / widget、空正文又没工具调用的搭子记录。
28
- * 对方的 message 变 user(群里带成员前缀)、system 变 user(带「群里发生了一件事」)、messagesCard 拍平成 user
29
+ * 对方的 message 变 user(群里带成员前缀)、system 变 user(带「群里发生了一件事」)、messagesCard 拍平成 user
30
+ * 平台的场合交代 context 原样变 user(开头自带「平台交代给你的情况」那句用法,不套前缀);
29
31
  * 搭子的 message / checkin 变 assistant,tool 变 assistant + 每个调用一条 toolResult,note 变 note。
30
32
  */
31
33
  export function toAgentMessages(records, identity) {
@@ -38,6 +40,10 @@ export function toAgentMessages(records, identity) {
38
40
  case "system":
39
41
  out.push(userMessage(SYSTEM_EVENT_PREFIX + text, record.timestamp));
40
42
  break;
43
+ case "context":
44
+ if (text)
45
+ out.push(userMessage(text, record.timestamp));
46
+ break;
41
47
  case "messagesCard":
42
48
  if (record.messagesCard)
43
49
  out.push(userMessage(flattenCard(record.messagesCard, 1).join("\n"), record.timestamp));
@@ -145,21 +151,21 @@ function flattenCard(card, depth) {
145
151
  * 不带工具调用的 assistant 消息写成 message 记录。
146
152
  * 正常收尾的照写(带 thinking);error / aborted 收尾但已经说了半截的写成 interrupted;其余不写。
147
153
  */
148
- export function outboundFromAssistant(m) {
154
+ export function outboundFromAssistant(m, omitThinking = false) {
149
155
  if (m.content.some((block) => block.type === "toolCall"))
150
156
  return null;
151
157
  const text = textOf(m);
152
158
  if (m.stopReason === "error" || m.stopReason === "aborted") {
153
159
  return text ? { type: "message", text, interrupted: true } : null;
154
160
  }
155
- const thinking = thinkingOf(m);
161
+ const thinking = omitThinking ? undefined : thinkingOf(m);
156
162
  return thinking === undefined ? { type: "message", text } : { type: "message", text, thinking };
157
163
  }
158
164
  /**
159
165
  * 带工具调用的 assistant 消息连同它的结果写成一条 tool 记录;每个调用的 summary 取工具的 label,没有 label 用名字。
160
166
  * 没有工具调用的返回 null(那种走 outboundFromAssistant)。
161
167
  */
162
- export function outboundFromTurn(m, toolResults, tools) {
168
+ export function outboundFromTurn(m, toolResults, tools, dataAccessDetailsOf, sensitiveRun = false) {
163
169
  const calls = m.content.filter((block) => block.type === "toolCall");
164
170
  if (calls.length === 0)
165
171
  return null;
@@ -170,16 +176,52 @@ export function outboundFromTurn(m, toolResults, tools) {
170
176
  callId: call.id,
171
177
  name: call.name,
172
178
  summary: label || call.name,
173
- arguments: call.arguments,
174
- result: result === undefined ? MISSING_TOOL_RESULT : resultText(result),
179
+ arguments: sensitiveRun ? undefined : call.arguments,
180
+ result: result === undefined
181
+ ? MISSING_TOOL_RESULT
182
+ : persistedToolResult(call.name, result, dataAccessDetailsOf?.(call.id), sensitiveRun),
175
183
  };
176
184
  });
177
- const thinking = thinkingOf(m);
178
- const record = { type: "tool", text: textOf(m), toolCalls };
185
+ const thinking = sensitiveRun ? undefined : thinkingOf(m);
186
+ const record = { type: "tool", text: sensitiveRun ? "" : textOf(m), toolCalls };
179
187
  if (thinking !== undefined)
180
188
  record.thinking = thinking;
181
189
  return record;
182
190
  }
191
+ /** DataAccess 的真实 Tool 结果只给当前模型回合看;写平台时只留 Dataset ID 与状态。 */
192
+ function persistedToolResult(toolName, result, trackedDetails, sensitiveRun) {
193
+ const details = trackedDetails ?? result.details;
194
+ if (toolName === DATA_ACCESS_TOOL_NAME || isDataAccessDetails(details))
195
+ return dataAccessSummary(details);
196
+ return sensitiveRun ? SENSITIVE_RUN_TOOL_SUMMARY : resultText(result);
197
+ }
198
+ /**
199
+ * Agent run 完成后,把内存 transcript 里的 DataAccess 原始结果换成状态摘要。
200
+ * run 内不能提前替换:模型在 Tool 后续一轮还需要读取真实数据。
201
+ */
202
+ export function redactSensitiveRun(messages, runMessages, dataAccessDetailsOf) {
203
+ const currentRun = new Set(runMessages);
204
+ return messages.map((message) => {
205
+ if (message.role === "assistant" && currentRun.has(message)) {
206
+ const hasToolCall = message.content.some((block) => block.type === "toolCall");
207
+ return {
208
+ ...message,
209
+ content: message.content
210
+ .filter((block) => block.type !== "thinking" && (!hasToolCall || block.type === "toolCall"))
211
+ .map((block) => (block.type === "toolCall" ? { ...block, arguments: {} } : block)),
212
+ };
213
+ }
214
+ if (message.role !== "toolResult" || !currentRun.has(message))
215
+ return message;
216
+ const trackedDetails = dataAccessDetailsOf?.(message.toolCallId);
217
+ const details = isDataAccessDetails(trackedDetails) ? trackedDetails : isDataAccessDetails(message.details) ? message.details : undefined;
218
+ return {
219
+ ...message,
220
+ content: [{ type: "text", text: details === undefined ? SENSITIVE_RUN_TOOL_SUMMARY : dataAccessSummary(details) }],
221
+ details,
222
+ };
223
+ });
224
+ }
183
225
  /** note 消息写成 note 记录 */
184
226
  export function outboundFromNote(n) {
185
227
  return { type: "note", text: n.text };
@@ -252,24 +294,4 @@ function mergeUsers(a, b) {
252
294
  function userBlocks(m) {
253
295
  return typeof m.content === "string" ? [{ type: "text", text: m.content }] : m.content;
254
296
  }
255
- /**
256
- * 把平台随拉取下发的 context 段插进历史:找到末尾那段连续的 user(note 也算,它到模型那边就是 user),插在这段前面,
257
- * 后面的 convertToLlm 会把它跟这段合并;末尾是 assistant / toolResult 时,往前找最后一段 user 插在它前面。
258
- * context 为空原样返回;否则返回新数组,不改传进来的。
259
- */
260
- export function injectContext(messages, context) {
261
- if (!context)
262
- return messages;
263
- let last = messages.length - 1;
264
- while (last >= 0 && !isUserSide(messages[last]))
265
- last--;
266
- let start = last < 0 ? messages.length : last;
267
- while (start > 0 && isUserSide(messages[start - 1]))
268
- start--;
269
- const injected = userMessage(context, Date.now());
270
- return [...messages.slice(0, start), injected, ...messages.slice(start)];
271
- }
272
- function isUserSide(m) {
273
- return m.role === "user" || m.role === "note";
274
- }
275
297
  //# sourceMappingURL=convert.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"convert.js","sourceRoot":"","sources":["../../src/conversation/convert.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"convert.js","sourceRoot":"","sources":["../../src/conversation/convert.ts"],"names":[],"mappings":"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"}
@@ -1,18 +1,25 @@
1
- import type { PlatformMessage } from "../types.ts";
2
- /** 首次拉取:末尾一条若是对方说的,不灌历史,留给回合按正常规矩处理(该开口就开口) */
3
- export declare function splitForRebuild(records: PlatformMessage[]): {
4
- history: PlatformMessage[];
5
- tail: PlatformMessage | undefined;
1
+ import type { MLBMessage } from "../types.ts";
2
+ /**
3
+ * 首次拉取(重建):以搭子最后一次写的记录为界。之前的整段是历史,照原样灌;之后的是搭子还没回应过的,
4
+ * 交给回合按平时同一条规矩处理(wantsReply)。不看「最后一条」:拉取时平台追加的 context、
5
+ * 群里 @ 之后别人紧跟的闲聊,都可能排在该答的那句后面。搭子一句都没说过时,整段都算没回应过的
6
+ */
7
+ export declare function splitForRebuild(records: MLBMessage[]): {
8
+ history: MLBMessage[];
9
+ pending: MLBMessage[];
6
10
  };
7
11
  /** 一批记录里最大的 seq;空批回原游标 */
8
- export declare function maxSeq(records: PlatformMessage[], from: number): number;
12
+ export declare function maxSeq(records: MLBMessage[], from: number): number;
13
+ /** 对方的记录里要处理的:不是搭子写的,有正文或是转发卡 */
14
+ export declare function theirsOf(records: MLBMessage[]): MLBMessage[];
9
15
  /**
10
- * 一批增量:游标之后的、对方说的(author ≠ buddy)、有正文或是转发卡的,才是要处理的;
11
- * 「该不该开口」只看平台下发的 shouldReply,运行时不判、不让模型猜。
16
+ * 要不要开口:其中有一条是用户说的、平台标了该答。平台写的(context、system)从不该答;
17
+ * 该不该答只看平台下发的 shouldReply(旧平台叫 reply,没有 shouldReply 时照认),运行时不判、不让模型猜
12
18
  */
13
- export declare function incoming(batch: PlatformMessage[], pulledSeq: number): {
14
- fresh: PlatformMessage[];
15
- theirs: PlatformMessage[];
16
- shouldReply: boolean;
19
+ export declare function wantsReply(records: MLBMessage[]): boolean;
20
+ /** 一批增量:游标之后的是新的(fresh),其中对方的(theirs)交给回合 */
21
+ export declare function incoming(batch: MLBMessage[], pulledSeq: number): {
22
+ fresh: MLBMessage[];
23
+ theirs: MLBMessage[];
17
24
  };
18
25
  //# sourceMappingURL=history.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"history.d.ts","sourceRoot":"","sources":["../../src/conversation/history.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAEnD,+CAA+C;AAC/C,wBAAgB,eAAe,CAAC,OAAO,EAAE,eAAe,EAAE,GAAG;IAAE,OAAO,EAAE,eAAe,EAAE,CAAC;IAAC,IAAI,EAAE,eAAe,GAAG,SAAS,CAAA;CAAE,CAI7H;AAED,0BAA0B;AAC1B,wBAAgB,MAAM,CAAC,OAAO,EAAE,eAAe,EAAE,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAIvE;AAED;;;GAGG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,eAAe,EAAE,EAAE,SAAS,EAAE,MAAM,GAAG;IAAE,KAAK,EAAE,eAAe,EAAE,CAAC;IAAC,MAAM,EAAE,eAAe,EAAE,CAAC;IAAC,WAAW,EAAE,OAAO,CAAA;CAAE,CAInJ"}
1
+ {"version":3,"file":"history.d.ts","sourceRoot":"","sources":["../../src/conversation/history.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE9C;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,UAAU,EAAE,GAAG;IAAE,OAAO,EAAE,UAAU,EAAE,CAAC;IAAC,OAAO,EAAE,UAAU,EAAE,CAAA;CAAE,CAIvG;AAED,0BAA0B;AAC1B,wBAAgB,MAAM,CAAC,OAAO,EAAE,UAAU,EAAE,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAIlE;AAED,iCAAiC;AACjC,wBAAgB,QAAQ,CAAC,OAAO,EAAE,UAAU,EAAE,GAAG,UAAU,EAAE,CAE5D;AAED;;;GAGG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,UAAU,EAAE,GAAG,OAAO,CAEzD;AAED,6CAA6C;AAC7C,wBAAgB,QAAQ,CAAC,KAAK,EAAE,UAAU,EAAE,EAAE,SAAS,EAAE,MAAM,GAAG;IAAE,KAAK,EAAE,UAAU,EAAE,CAAC;IAAC,MAAM,EAAE,UAAU,EAAE,CAAA;CAAE,CAG9G"}