@my-life-buddies/buddy-runtime 0.0.3 → 0.1.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.
Files changed (38) hide show
  1. package/README.md +106 -17
  2. package/dist/conversation/agent.js +2 -2
  3. package/dist/conversation/agent.js.map +1 -1
  4. package/dist/conversation/agentMessageLLMMessageConverter.d.ts +8 -0
  5. package/dist/conversation/agentMessageLLMMessageConverter.d.ts.map +1 -0
  6. package/dist/conversation/agentMessageLLMMessageConverter.js +48 -0
  7. package/dist/conversation/agentMessageLLMMessageConverter.js.map +1 -0
  8. package/dist/conversation/history.d.ts +0 -7
  9. package/dist/conversation/history.d.ts.map +1 -1
  10. package/dist/conversation/history.js +2 -15
  11. package/dist/conversation/history.js.map +1 -1
  12. package/dist/conversation/index.d.ts +14 -21
  13. package/dist/conversation/index.d.ts.map +1 -1
  14. package/dist/conversation/index.js +83 -110
  15. package/dist/conversation/index.js.map +1 -1
  16. package/dist/conversation/mlbMessageAgentMessageConverter.d.ts +36 -0
  17. package/dist/conversation/mlbMessageAgentMessageConverter.d.ts.map +1 -0
  18. package/dist/conversation/mlbMessageAgentMessageConverter.js +224 -0
  19. package/dist/conversation/mlbMessageAgentMessageConverter.js.map +1 -0
  20. package/dist/conversation/readMLBMessages.d.ts +29 -0
  21. package/dist/conversation/readMLBMessages.d.ts.map +1 -0
  22. package/dist/conversation/readMLBMessages.js +86 -0
  23. package/dist/conversation/readMLBMessages.js.map +1 -0
  24. package/dist/conversation/writeMLBMessage.d.ts +62 -0
  25. package/dist/conversation/writeMLBMessage.d.ts.map +1 -0
  26. package/dist/conversation/writeMLBMessage.js +212 -0
  27. package/dist/conversation/writeMLBMessage.js.map +1 -0
  28. package/dist/mlbClient.d.ts +7 -5
  29. package/dist/mlbClient.d.ts.map +1 -1
  30. package/dist/mlbClient.js +14 -3
  31. package/dist/mlbClient.js.map +1 -1
  32. package/dist/tools/dataAccess.d.ts +6 -1
  33. package/dist/tools/dataAccess.d.ts.map +1 -1
  34. package/dist/tools/dataAccess.js +29 -1
  35. package/dist/tools/dataAccess.js.map +1 -1
  36. package/dist/types.d.ts +4 -6
  37. package/dist/types.d.ts.map +1 -1
  38. package/package.json +1 -1
@@ -1,39 +1,31 @@
1
- // 一场会话的纪律:什么时候拉、拉到怎么办、什么时候起回合、Agent 事件往哪送、怎么退役。
2
- // 管:同会话拉取串行链与读方向游标;首次拉取把全量历史灌进 Agent(重建),搭子最后一次说话之后有该答的就起回合;
1
+ // 一场会话的纪律:拉到消息怎么办、什么时候起回合、Agent 事件往哪送、怎么退役。
2
+ // 管:首次拉到的整批灌进 Agent(重建),搭子最后一次说话之后有该答的就起回合;
3
3
  // 之后每批按空闲 / 忙碌 × 要不要开口四路分发;
4
- // 回合(prompt → 把回合中排进队列的消息消化完 → 一句话没说就补一句提醒再跑一次);Agent 事件分给写回队列与在线态;
5
- // close(先标退役、再打断回合、等它收尾)。
6
- // 不管:Agent 怎么建(agent.ts)、拉回来的记录怎么分拣(history.ts)、写回平台(writeBack.ts)、replying / delta 推送(presence.ts)、
7
- // HTTP 请求本身(mlbClient.ts)、平台记录与 pi 消息的形状换算(convert.ts)、会话从哪来到哪去(server.ts 管 Map、空闲淘汰与 delete 事件)。
4
+ // 回合(prompt → 把回合中排进队列的消息消化完 → 一句话没说就补一句提醒再跑一次 → 收尾把这一轮的历史按消息时间排好);
5
+ // Agent 事件交给发平台的队列;close(先标退役、再打断回合、等它收尾)。
6
+ // 不管:什么时候拉、游标、翻页与重试(readMLBMessages.ts)、Agent 怎么建(agent.ts)、拉回来的记录怎么分拣(history.ts)、
7
+ // replying / delta / 写回怎么发(writeMLBMessage.ts)、HTTP 请求本身(mlbClient.ts)、
8
+ // MLBMessage 与 AgentMessage 的换算(mlbMessageAgentMessageConverter.ts)、会话从哪来到哪去(server.ts 管 Map、空闲淘汰与 delete 事件)。
8
9
  import { randomUUID } from "node:crypto";
9
- import { outboundFromAssistant, outboundFromNote, outboundFromTurn, redactSensitiveRun, textOf, toAgentMessages } from "./convert.js";
10
+ import { mlbMessagesToAgentMessages, textOf } from "./mlbMessageAgentMessageConverter.js";
10
11
  import { errorText } from "../log.js";
11
12
  import { modelIdentity } from "../model.js";
13
+ import { redactSensitiveRun } from "../tools/dataAccess.js";
12
14
  import { createAgent } from "./agent.js";
13
- import { incoming, maxSeq, splitForRebuild, theirsOf, wantsReply } from "./history.js";
14
- import { Presence } from "./presence.js";
15
- import { WriteBack } from "./writeBack.js";
16
- /** 每页拉多少条:平台钳在 1..200,翻页靠不满页 */
17
- const PULL_LIMIT = 200;
18
- const PULL_RETRY_MIN_MS = 1_000;
19
- const PULL_RETRY_MAX_MS = 30_000;
15
+ import { splitForRebuild, theirsOf, wantsReply } from "./history.js";
16
+ import { ReadMLBMessages } from "./readMLBMessages.js";
17
+ import { WriteMLBMessage } from "./writeMLBMessage.js";
20
18
  /** 回合跑完一句话都没说时,以 note 的身份补给模型的一句提醒 */
21
19
  const NUDGE = "你上一条回复正文是空的。把要说的话直接说出来。";
22
20
  export class ConversationHandle {
23
21
  deps;
24
22
  identity;
25
- presence;
26
- writeBack;
23
+ reader;
24
+ writer;
27
25
  /** 懒建:第一次拉到消息时跑 factory 再 new */
28
26
  agent;
29
27
  dataAccessUsage;
30
- /** 同会话的拉取串行链:notify 只往链尾排,绝不并发拉 */
31
- pullChain = Promise.resolve();
32
- pullRetry;
33
- pullRetryDelay = PULL_RETRY_MIN_MS;
34
- /** 读方向游标:已经拉到并处理过的最大 seq(含自己写的) */
35
- pulledSeq = 0;
36
- /** 首次拉取(after=0 全量灌历史)做过没有 */
28
+ /** 首次拉到的整批灌进历史(重建)做过没有 */
37
29
  rebuilt = false;
38
30
  /** 忙时听见的、不用开口的旁听消息,回合收尾再进历史 */
39
31
  heard = [];
@@ -49,17 +41,21 @@ export class ConversationHandle {
49
41
  constructor(deps) {
50
42
  this.deps = deps;
51
43
  this.identity = modelIdentity(deps.model);
52
- this.presence = new Presence(deps.client, deps.key);
53
- this.writeBack = new WriteBack({
44
+ this.reader = new ReadMLBMessages({
45
+ client: deps.client,
46
+ key: deps.key,
47
+ log: deps.log,
48
+ onMessages: (messages) => this.onMessages(messages),
49
+ });
50
+ this.writer = new WriteMLBMessage({
54
51
  client: deps.client,
55
52
  key: deps.key,
56
53
  buddyId: deps.buddyId,
57
54
  runId: randomUUID().slice(0, 8),
58
55
  log: deps.log,
59
- beforeSend: () => this.presence.flushDelta(),
60
56
  });
61
57
  }
62
- /** 正在跑回合(含收尾:等出站队列清空) */
58
+ /** 正在跑回合(含收尾:等发平台的队列清空) */
63
59
  get busy() {
64
60
  return this._busy;
65
61
  }
@@ -75,15 +71,12 @@ export class ConversationHandle {
75
71
  get transcript() {
76
72
  return this.agent?.state.messages ?? [];
77
73
  }
78
- /** SSE message 到了:把一次拉取排进串行链。已退役的直接忽略 */
74
+ /** SSE message 到了:让 reader 拉一次。已退役的直接忽略 */
79
75
  notify() {
80
76
  if (this._closed)
81
77
  return;
82
- this.cancelPullRetry();
83
78
  this._lastActivity = Date.now();
84
- this.pullChain = this.pullChain
85
- .then(() => this.pull())
86
- .catch((e) => this.deps.log.warn("处理拉取结果出错", { convoKey: this.deps.key, error: errorText(e) }));
79
+ this.reader.notify();
87
80
  }
88
81
  /**
89
82
  * SSE delete 到了(或 server 空闲淘汰、stop、会话起不来):先标退役,再打断正在跑的回合,等回合收尾。可以重复调。
@@ -94,48 +87,26 @@ export class ConversationHandle {
94
87
  this.agent?.abort();
95
88
  await this.turn;
96
89
  }
97
- /** 标退役:写回队列清空并打断重发等待(回合收尾才不会被它拖住)、攒着的 delta 扔掉 */
90
+ /** 标退役:不再拉、取消拉取重试;发平台的队列丢掉没发的字与写回、打断重发等待(回合收尾才不会被它拖住) */
98
91
  retire() {
99
92
  this._closed = true;
100
- this.cancelPullRetry();
101
- this.writeBack.close();
102
- this.presence.close();
93
+ this.reader.close();
94
+ this.writer.close();
103
95
  }
104
- // —— 拉取
96
+ // —— 拉到消息
105
97
  /**
106
- * 一次拉取:从 pulledSeq 往后翻到不满页。第一次走重建,之后走 ingest。网络错误按 1s–30s 指数退避主动重试,新 SSE 会提前唤醒。
107
- * 平台的场合交代(context)是流里的一条记录,跟别的记录一起拉到;会话没了只靠 SSE delete 事件收,拉取这里不判。
98
+ * reader 交来一批:第一次走重建,之后走 ingest。
99
+ * 平台的场合交代(context)是流里的一条记录,跟别的记录一起拉到;会话没了只靠 SSE delete 事件收,这里不判。
108
100
  */
109
- async pull() {
101
+ async onMessages(messages) {
110
102
  if (this._closed)
111
103
  return;
112
- const batch = [];
113
- let after = this.pulledSeq;
114
- for (;;) {
115
- let page;
116
- try {
117
- page = await this.deps.client.pullMessages(this.deps.key, after, PULL_LIMIT);
118
- }
119
- catch (e) {
120
- this.deps.log.warn("拉消息失败,稍后主动重试", { convoKey: this.deps.key, after, delayMs: this.pullRetryDelay, error: errorText(e) });
121
- this.schedulePullRetry();
122
- return;
123
- }
124
- this.cancelPullRetry();
125
- if (this._closed)
126
- return;
127
- batch.push(...page.messages);
128
- if (page.messages.length < PULL_LIMIT)
129
- break;
130
- after = page.messages[page.messages.length - 1].seq;
131
- }
132
- this.pullRetryDelay = PULL_RETRY_MIN_MS;
133
104
  if (this.rebuilt) {
134
- this.ingest(batch);
105
+ this.ingest(messages);
135
106
  return;
136
107
  }
137
108
  try {
138
- await this.rebuild(batch);
109
+ await this.rebuild(messages);
139
110
  }
140
111
  catch (e) {
141
112
  // factory 抛错、工具重名之类:这场会话起不来。退役并让 server 删掉,下一条消息会重新起一场再试
@@ -144,25 +115,8 @@ export class ConversationHandle {
144
115
  this.deps.onStartFailed();
145
116
  }
146
117
  }
147
- schedulePullRetry() {
148
- if (this._closed || this.pullRetry !== undefined)
149
- return;
150
- const delay = this.pullRetryDelay;
151
- this.pullRetryDelay = Math.min(delay * 2, PULL_RETRY_MAX_MS);
152
- this.pullRetry = setTimeout(() => {
153
- this.pullRetry = undefined;
154
- this.notify();
155
- }, delay);
156
- this.pullRetry.unref();
157
- }
158
- cancelPullRetry() {
159
- if (this.pullRetry === undefined)
160
- return;
161
- clearTimeout(this.pullRetry);
162
- this.pullRetry = undefined;
163
- }
164
118
  /**
165
- * 首次拉取:建 Agent,以搭子最后一次写的记录为界,之前的整段灌进 state.messages(不经事件,天然不会被写回平台);
119
+ * 首次拉取:建 Agent,以搭子最后一次写的记录为界,之前的整段按消息时间的先后灌进 state.messages(不经事件,天然不会被写回平台);
166
120
  * 之后的是搭子还没回应过的,交给 admit 按平时同一条规矩处理:有该答的就起回合,没有就只进历史。
167
121
  */
168
122
  async rebuild(records) {
@@ -176,22 +130,17 @@ export class ConversationHandle {
176
130
  this.agent = agent;
177
131
  this.dataAccessUsage = created.dataAccessUsage;
178
132
  const { history, pending } = splitForRebuild(records);
179
- agent.state.messages = toAgentMessages(history, this.identity);
180
- this.pulledSeq = maxSeq(records, this.pulledSeq);
133
+ agent.state.messages = mlbMessagesToAgentMessages(history, this.identity);
181
134
  this.rebuilt = true;
182
135
  this.deps.log.info("历史已重建", { convoKey: this.deps.key, records: history.length, pending: pending.length, transcript: agent.state.messages.length });
183
136
  this.admit(theirsOf(pending));
184
137
  }
185
- /** 一批新记录:游标推到最大 seq(自己写的也算,下次不再拉到),对方的交给 admit */
138
+ /** 一批新记录(reader 只交比上一批晚的,自己写回的也在里面):对方的交给 admit */
186
139
  ingest(batch) {
187
- if (this.agent === undefined || this._closed)
188
- return;
189
- const { fresh, theirs } = incoming(batch, this.pulledSeq);
190
- if (fresh.length === 0)
140
+ if (this.agent === undefined || this._closed || batch.length === 0)
191
141
  return;
192
- this.pulledSeq = maxSeq(fresh, this.pulledSeq);
193
142
  this._lastActivity = Date.now();
194
- this.admit(theirs);
143
+ this.admit(theirsOf(batch));
195
144
  }
196
145
  /**
197
146
  * 搭子还没回应过的对方记录(重建时是搭子最后一次说话之后的那段,平时是这批新来的),换成 user 消息分发。
@@ -202,7 +151,7 @@ export class ConversationHandle {
202
151
  const agent = this.agent;
203
152
  if (agent === undefined || this._closed || theirs.length === 0)
204
153
  return;
205
- const messages = toAgentMessages(theirs, this.identity);
154
+ const messages = mlbMessagesToAgentMessages(theirs, this.identity);
206
155
  if (messages.length === 0)
207
156
  return;
208
157
  const shouldReply = wantsReply(theirs);
@@ -223,7 +172,8 @@ export class ConversationHandle {
223
172
  /**
224
173
  * 跑一个回合。messages 有值就 prompt 它们;没值(收尾时发现队列里还有消息)就直接 continue。
225
174
  * prompt 完把回合中 steer 进来的消化完;一句话没说就 followUp 一条 note 提醒再跑一次。
226
- * 收尾:heard 进历史、delta 发完、replying 关掉、等出站队列清空,才算不忙。
175
+ * 收尾:replying 关掉、等发平台的队列清空(每条写回的消息都拿到了平台定的时间)、heard 进历史、
176
+ * 这一轮进历史的消息按时间排好,才算不忙——排完的顺序跟手机上、跟重建出来的一样。
227
177
  * 收尾期间又有人 steer(busy 还是 true,走不了 prompt),就接着再跑一个回合把它消化掉。
228
178
  */
229
179
  async runTurn(messages) {
@@ -233,9 +183,10 @@ export class ConversationHandle {
233
183
  this._busy = true;
234
184
  this.spoke = false;
235
185
  this.failed = false;
236
- this.presence.replying({ on: true });
186
+ const turnStart = agent.state.messages.length;
187
+ this.writer.replying({ on: true });
237
188
  const startedAt = Date.now();
238
- this.deps.log.info("回合开始", { convoKey: this.deps.key, prompt: messages?.length ?? 0, transcript: agent.state.messages.length });
189
+ this.deps.log.info("回合开始", { convoKey: this.deps.key, prompt: messages?.length ?? 0, transcript: turnStart });
239
190
  try {
240
191
  if (messages !== undefined)
241
192
  await agent.prompt(messages);
@@ -254,13 +205,14 @@ export class ConversationHandle {
254
205
  this.deps.log.warn("回合出错", { convoKey: this.deps.key, error: errorText(e) });
255
206
  }
256
207
  finally {
208
+ this.writer.replying({ on: false });
209
+ await this.writer.flush();
257
210
  if (this.heard.length > 0) {
258
211
  agent.state.messages.push(...this.heard);
259
212
  this.heard = [];
260
213
  }
261
- this.presence.flushDelta();
262
- this.presence.replying({ on: false });
263
- await this.writeBack.flush();
214
+ const history = agent.state.messages;
215
+ agent.state.messages = [...history.slice(0, turnStart), ...sortByTimestamp(history.slice(turnStart))];
264
216
  this._busy = false;
265
217
  this._lastActivity = Date.now();
266
218
  this.deps.log.info("回合收尾", {
@@ -276,7 +228,7 @@ export class ConversationHandle {
276
228
  }
277
229
  // —— Agent 事件
278
230
  /**
279
- * Agent 事件 → 写回队列 / 在线态。pi 会等这个函数返回再往下走,所以只做同步入队,网络在队列自己的链上;
231
+ * Agent 事件 → 发平台的队列。pi 会等这个函数返回再往下走,所以只做同步入队,网络在队列自己的链上;
280
232
  * 抛错会让 pi 把整个回合判失败,所以整体 try/catch。退役后的事件直接丢。
281
233
  */
282
234
  onEvent(agent, event) {
@@ -289,7 +241,16 @@ export class ConversationHandle {
289
241
  break;
290
242
  case "agent_end":
291
243
  if (this.dataAccessUsage?.hasUsage()) {
292
- agent.state.messages = redactSensitiveRun(agent.state.messages, event.messages, (toolCallId) => this.dataAccessUsage?.details(toolCallId));
244
+ const before = agent.state.messages;
245
+ const after = redactSensitiveRun(before, event.messages, (toolCallId) => this.dataAccessUsage?.details(toolCallId));
246
+ agent.state.messages = after;
247
+ // 脱敏换成了副本:还没写完的那几条,平台回的时间要写到副本上
248
+ const replaced = new Map();
249
+ before.forEach((m, i) => {
250
+ if (after[i] !== m)
251
+ replaced.set(m, after[i]);
252
+ });
253
+ this.writer.retarget(replaced);
293
254
  }
294
255
  this.dataAccessUsage?.clear();
295
256
  this.deps.log.info("run 结束", { convoKey: this.deps.key, newMessages: event.messages.length, queued: agent.hasQueuedMessages() });
@@ -309,34 +270,29 @@ export class ConversationHandle {
309
270
  else if (textOf(m) !== "")
310
271
  this.spoke = true;
311
272
  // 带工具调用的等 turn_end 连结果一起写成 tool 记录
312
- if (!m.content.some((block) => block.type === "toolCall")) {
313
- const out = outboundFromAssistant(m, this.dataAccessUsage?.hasUsage());
314
- if (out !== null)
315
- this.writeBack.enqueue(out);
316
- }
273
+ if (!m.content.some((block) => block.type === "toolCall"))
274
+ this.writer.assistant(m, this.dataAccessUsage?.hasUsage());
317
275
  }
318
276
  else if (m.role === "note") {
319
- this.writeBack.enqueue(outboundFromNote(m));
277
+ this.writer.note(m);
320
278
  }
321
279
  break;
322
280
  }
323
281
  case "turn_end": {
324
282
  const m = event.message;
325
283
  if (m.role === "assistant" && m.content.some((block) => block.type === "toolCall")) {
326
- const out = outboundFromTurn(m, event.toolResults, agent.state.tools, (toolCallId) => this.dataAccessUsage?.details(toolCallId), this.dataAccessUsage?.hasUsage());
327
- if (out !== null)
328
- this.writeBack.enqueue(out);
284
+ this.writer.toolStep(m, event.toolResults, agent.state.tools, (toolCallId) => this.dataAccessUsage?.details(toolCallId), this.dataAccessUsage?.hasUsage());
329
285
  }
330
286
  break;
331
287
  }
332
288
  case "message_update":
333
289
  if (event.assistantMessageEvent.type === "text_delta")
334
- this.presence.delta(event.assistantMessageEvent.delta);
290
+ this.writer.delta(event.assistantMessageEvent.delta);
335
291
  break;
336
292
  case "tool_execution_start": {
337
293
  const label = agent.state.tools.find((t) => t.name === event.toolName)?.label;
338
294
  if (label)
339
- this.presence.replying({ on: true, status: label });
295
+ this.writer.replying({ on: true, status: label });
340
296
  break;
341
297
  }
342
298
  default:
@@ -348,4 +304,21 @@ export class ConversationHandle {
348
304
  }
349
305
  }
350
306
  }
307
+ /**
308
+ * 回合收尾:这一轮进历史的消息按消息时间排(稳定排序,时间一样的保持原来的先后)。
309
+ * 工具结果跟着它那一步的 assistant 消息走、不单独排——模型那边一步的调用和结果必须挨着。
310
+ * 时间的来处:别人的消息是平台记录上的,搭子写回的是平台回的(writeMLBMessage.ts 写进来),没写回平台的保留本地时刻
311
+ */
312
+ function sortByTimestamp(messages) {
313
+ const steps = [];
314
+ for (const m of messages) {
315
+ const step = steps[steps.length - 1];
316
+ if (m.role === "toolResult" && step !== undefined)
317
+ step.push(m);
318
+ else
319
+ steps.push([m]);
320
+ }
321
+ steps.sort((a, b) => a[0].timestamp - b[0].timestamp);
322
+ return steps.flat();
323
+ }
351
324
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/conversation/index.ts"],"names":[],"mappings":"AAAA,gDAAgD;AAChD,6DAA6D;AAC7D,gCAAgC;AAChC,wEAAwE;AACxE,8BAA8B;AAC9B,qGAAqG;AACrG,sGAAsG;AAEtG,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAIzC,OAAO,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AACtI,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAEtC,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAI5C,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,eAAe,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AACvF,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAuB3C,gCAAgC;AAChC,MAAM,UAAU,GAAG,GAAG,CAAC;AACvB,MAAM,iBAAiB,GAAG,KAAK,CAAC;AAChC,MAAM,iBAAiB,GAAG,MAAM,CAAC;AAEjC,sCAAsC;AACtC,MAAM,KAAK,GAAG,yBAAyB,CAAC;AAExC,MAAM,OAAO,kBAAkB;IACb,IAAI,CAAyB;IAC7B,QAAQ,CAAgB;IACxB,QAAQ,CAAW;IACnB,SAAS,CAAY;IAEtC,iCAAiC;IACzB,KAAK,CAAoB;IACzB,eAAe,CAAqC;IAC5D,mCAAmC;IAC3B,SAAS,GAAkB,OAAO,CAAC,OAAO,EAAE,CAAC;IAC7C,SAAS,CAA4C;IACrD,cAAc,GAAG,iBAAiB,CAAC;IAC3C,mCAAmC;IAC3B,SAAS,GAAG,CAAC,CAAC;IACtB,8BAA8B;IACtB,OAAO,GAAG,KAAK,CAAC;IACxB,+BAA+B;IACvB,KAAK,GAAmB,EAAE,CAAC;IACnC,8BAA8B;IACtB,IAAI,CAA4B;IACxC,sCAAsC;IAC9B,KAAK,GAAG,KAAK,CAAC;IACtB,iFAAiF;IACzE,MAAM,GAAG,KAAK,CAAC;IACf,KAAK,GAAG,KAAK,CAAC;IACd,OAAO,GAAG,KAAK,CAAC;IAChB,aAAa,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAEnC,YAAY,IAA4B;QACvC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,QAAQ,GAAG,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC1C,IAAI,CAAC,QAAQ,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;QACpD,IAAI,CAAC,SAAS,GAAG,IAAI,SAAS,CAAC;YAC9B,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,KAAK,EAAE,UAAU,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;YAC/B,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,UAAU,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE;SAC5C,CAAC,CAAC;IACJ,CAAC;IAED,yBAAyB;IACzB,IAAI,IAAI;QACP,OAAO,IAAI,CAAC,KAAK,CAAC;IACnB,CAAC;IAED,uCAAuC;IACvC,IAAI,YAAY;QACf,OAAO,IAAI,CAAC,aAAa,CAAC;IAC3B,CAAC;IAED,uBAAuB;IACvB,IAAI,MAAM;QACT,OAAO,IAAI,CAAC,OAAO,CAAC;IACrB,CAAC;IAED,uCAAuC;IACvC,IAAI,UAAU;QACb,OAAO,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,QAAQ,IAAI,EAAE,CAAC;IACzC,CAAC;IAED,yCAAyC;IACzC,MAAM;QACL,IAAI,IAAI,CAAC,OAAO;YAAE,OAAO;QACzB,IAAI,CAAC,eAAe,EAAE,CAAC;QACvB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAChC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS;aAC7B,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;aACvB,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAClG,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,KAAK;QACV,IAAI,CAAC,MAAM,EAAE,CAAC;QACd,IAAI,IAAI,CAAC,KAAK;YAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC;QACpC,MAAM,IAAI,CAAC,IAAI,CAAC;IACjB,CAAC;IAED,kDAAkD;IAC1C,MAAM;QACb,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,IAAI,CAAC,eAAe,EAAE,CAAC;QACvB,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;QACvB,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;IACvB,CAAC;IAED,QAAQ;IAER;;;OAGG;IACK,KAAK,CAAC,IAAI;QACjB,IAAI,IAAI,CAAC,OAAO;YAAE,OAAO;QACzB,MAAM,KAAK,GAAiB,EAAE,CAAC;QAC/B,IAAI,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC;QAC3B,SAAS,CAAC;YACT,IAAI,IAAgC,CAAC;YACrC,IAAI,CAAC;gBACJ,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC;YAC9E,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACZ,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,cAAc,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;gBAC1H,IAAI,CAAC,iBAAiB,EAAE,CAAC;gBACzB,OAAO;YACR,CAAC;YACD,IAAI,CAAC,eAAe,EAAE,CAAC;YACvB,IAAI,IAAI,CAAC,OAAO;gBAAE,OAAO;YACzB,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC7B,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,UAAU;gBAAE,MAAM;YAC7C,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;QACrD,CAAC;QACD,IAAI,CAAC,cAAc,GAAG,iBAAiB,CAAC;QACxC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YAClB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACnB,OAAO;QACR,CAAC;QACD,IAAI,CAAC;YACJ,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAC3B,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACZ,yDAAyD;YACzD,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YAC/E,IAAI,CAAC,MAAM,EAAE,CAAC;YACd,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;QAC3B,CAAC;IACF,CAAC;IAEO,iBAAiB;QACxB,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS;YAAE,OAAO;QACzD,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC;QAClC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,EAAE,iBAAiB,CAAC,CAAC;QAC7D,IAAI,CAAC,SAAS,GAAG,UAAU,CAAC,GAAG,EAAE;YAChC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;YAC3B,IAAI,CAAC,MAAM,EAAE,CAAC;QACf,CAAC,EAAE,KAAK,CAAC,CAAC;QACV,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;IACxB,CAAC;IAEO,eAAe;QACtB,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS;YAAE,OAAO;QACzC,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC7B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC5B,CAAC;IAED;;;OAGG;IACK,KAAK,CAAC,OAAO,CAAC,OAAqB;QAC1C,MAAM,OAAO,GAAG,MAAM,WAAW,CAAC;YACjC,GAAG,IAAI,CAAC,IAAI;YACZ,OAAO,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,KAAK,CAAC;SAC7C,CAAC,CAAC;QACH,IAAI,IAAI,CAAC,OAAO;YAAE,OAAO;QACzB,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;QAC5B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,eAAe,GAAG,OAAO,CAAC,eAAe,CAAC;QAC/C,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;QACtD,KAAK,CAAC,KAAK,CAAC,QAAQ,GAAG,eAAe,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC/D,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QACjD,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,MAAM,EAAE,UAAU,EAAE,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;QACpJ,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;IAC/B,CAAC;IAED,kDAAkD;IAC1C,MAAM,CAAC,KAAmB;QACjC,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,IAAI,IAAI,CAAC,OAAO;YAAE,OAAO;QACrD,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QAC1D,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;QAC/B,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QAC/C,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAChC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACpB,CAAC;IAED;;;;OAIG;IACK,KAAK,CAAC,MAAoB;QACjC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACzB,IAAI,KAAK,KAAK,SAAS,IAAI,IAAI,CAAC,OAAO,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;QACvE,MAAM,QAAQ,GAAG,eAAe,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QACxD,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;QAClC,MAAM,WAAW,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;QACvC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YACjB,IAAI,WAAW;gBAAE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;;gBAC/C,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAC;YAC5C,OAAO;QACR,CAAC;QACD,IAAI,WAAW;YAAE,KAAK,MAAM,CAAC,IAAI,QAAQ;gBAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;;YACrD,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAC;IACnC,CAAC;IAED,QAAQ;IAER;;;;;OAKG;IACK,KAAK,CAAC,OAAO,CAAC,QAAoC;QACzD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACzB,IAAI,KAAK,KAAK,SAAS,IAAI,IAAI,CAAC,OAAO;YAAE,OAAO;QAChD,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;QACrC,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC7B,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,IAAI,CAAC,EAAE,UAAU,EAAE,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;QAChI,IAAI,CAAC;YACJ,IAAI,QAAQ,KAAK,SAAS;gBAAE,MAAM,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YACzD,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,iBAAiB,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;YACxI,OAAO,CAAC,IAAI,CAAC,OAAO,IAAI,KAAK,CAAC,iBAAiB,EAAE;gBAAE,MAAM,KAAK,CAAC,QAAQ,EAAE,CAAC;YAC1E,4BAA4B;YAC5B,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;gBAClD,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;gBAC3D,MAAM,KAAK,GAAgB,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;gBAChF,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;gBACtB,MAAM,KAAK,CAAC,QAAQ,EAAE,CAAC;YACxB,CAAC;QACF,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACZ,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAC9E,CAAC;gBAAS,CAAC;YACV,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC3B,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;gBACzC,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;YACjB,CAAC;YACD,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC;YAC3B,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;YACtC,MAAM,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;YAC7B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;YACnB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YAChC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE;gBAC1B,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG;gBACvB,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;gBAC1B,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,YAAY;aAC/B,CAAC,CAAC;YACH,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,KAAK,CAAC,iBAAiB,EAAE;gBAAE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACrF,CAAC;IACF,CAAC;IAED,cAAc;IAEd;;;OAGG;IACK,OAAO,CAAC,KAAY,EAAE,KAAiB;QAC9C,IAAI,IAAI,CAAC,OAAO;YAAE,OAAO;QACzB,IAAI,CAAC;YACJ,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;gBACpB,KAAK,aAAa;oBACjB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;oBAC1D,MAAM;gBACP,KAAK,WAAW;oBACf,IAAI,IAAI,CAAC,eAAe,EAAE,QAAQ,EAAE,EAAE,CAAC;wBACtC,KAAK,CAAC,KAAK,CAAC,QAAQ,GAAG,kBAAkB,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,UAAU,EAAE,EAAE,CAAC,IAAI,CAAC,eAAe,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC;oBAC5I,CAAC;oBACD,IAAI,CAAC,eAAe,EAAE,KAAK,EAAE,CAAC;oBAC9B,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,WAAW,EAAE,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAC;oBACjI,MAAM;gBACP,KAAK,aAAa,CAAC,CAAC,CAAC;oBACpB,MAAM,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC;oBACxB,IAAI,CAAC,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;wBAC5B,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,EAAE;4BAClC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG;4BACvB,UAAU,EAAE,CAAC,CAAC,UAAU;4BACxB,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM;4BACvB,SAAS,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,MAAM;4BACxE,KAAK,EAAE,CAAC,CAAC,YAAY;yBACrB,CAAC,CAAC;wBACH,IAAI,CAAC,CAAC,UAAU,KAAK,OAAO,IAAI,CAAC,CAAC,UAAU,KAAK,SAAS;4BAAE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;6BAC1E,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,EAAE;4BAAE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;wBAC7C,mCAAmC;wBACnC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,UAAU,CAAC,EAAE,CAAC;4BAC3D,MAAM,GAAG,GAAG,qBAAqB,CAAC,CAAC,EAAE,IAAI,CAAC,eAAe,EAAE,QAAQ,EAAE,CAAC,CAAC;4BACvE,IAAI,GAAG,KAAK,IAAI;gCAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;wBAC/C,CAAC;oBACF,CAAC;yBAAM,IAAI,CAAC,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;wBAC9B,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC;oBAC7C,CAAC;oBACD,MAAM;gBACP,CAAC;gBACD,KAAK,UAAU,CAAC,CAAC,CAAC;oBACjB,MAAM,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC;oBACxB,IAAI,CAAC,CAAC,IAAI,KAAK,WAAW,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,UAAU,CAAC,EAAE,CAAC;wBACpF,MAAM,GAAG,GAAG,gBAAgB,CAC3B,CAAC,EACD,KAAK,CAAC,WAAW,EACjB,KAAK,CAAC,KAAK,CAAC,KAAK,EACjB,CAAC,UAAU,EAAE,EAAE,CAAC,IAAI,CAAC,eAAe,EAAE,OAAO,CAAC,UAAU,CAAC,EACzD,IAAI,CAAC,eAAe,EAAE,QAAQ,EAAE,CAChC,CAAC;wBACF,IAAI,GAAG,KAAK,IAAI;4BAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;oBAC/C,CAAC;oBACD,MAAM;gBACP,CAAC;gBACD,KAAK,gBAAgB;oBACpB,IAAI,KAAK,CAAC,qBAAqB,CAAC,IAAI,KAAK,YAAY;wBAAE,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAC;oBAC9G,MAAM;gBACP,KAAK,sBAAsB,CAAC,CAAC,CAAC;oBAC7B,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC,QAAQ,CAAC,EAAE,KAAK,CAAC;oBAC9E,IAAI,KAAK;wBAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;oBAC/D,MAAM;gBACP,CAAC;gBACD;oBACC,MAAM;YACR,CAAC;QACF,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACZ,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,eAAe,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAC1G,CAAC;IACF,CAAC;CACD"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/conversation/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,36 @@
1
+ import type { AgentMessage } from "@earendil-works/pi-agent-core";
2
+ import type { AssistantMessage, ToolResultMessage } from "@earendil-works/pi-ai";
3
+ import type { MLBMessage, MLBMessageToWrite, NoteMessage } from "../types.ts";
4
+ /** 重建 assistant 消息时抄的模型身份(model.ts 的 modelIdentity 给) */
5
+ export interface ModelIdentity {
6
+ api: string;
7
+ provider: string;
8
+ model: string;
9
+ }
10
+ /**
11
+ * 把一批平台记录换成 pi 的历史。跳过的:interrupted 的半截话、question / widget、空正文又没工具调用的搭子记录。
12
+ * 对方的 message 变 user(群里带成员前缀)、system 变 user(带「群里发生了一件事」)、messagesCard 拍平成 user、
13
+ * 平台的场合交代 context 原样变 user(开头自带「平台交代给你的情况」那句用法,不套前缀);
14
+ * 搭子的 message / checkin 变 assistant,tool 变 assistant + 每个调用一条 toolResult,note 变 note。
15
+ */
16
+ export declare function mlbMessagesToAgentMessages(records: MLBMessage[], identity: ModelIdentity): AgentMessage[];
17
+ /**
18
+ * 不带工具调用的 assistant 消息写成 message 记录。
19
+ * 正常收尾的照写(带 thinking);error / aborted 收尾但已经说了半截的写成 interrupted;其余不写。
20
+ */
21
+ export declare function assistantMessageToMLBMessage(m: AssistantMessage, omitThinking?: boolean): MLBMessageToWrite | null;
22
+ /**
23
+ * 带工具调用的 assistant 消息连同它的结果写成一条 tool 记录;每个调用的 summary 取工具的 label,没有 label 用名字。
24
+ * 没有工具调用的返回 null(那种走 assistantMessageToMLBMessage)。
25
+ */
26
+ export declare function toolStepToMLBMessage(m: AssistantMessage, toolResults: ToolResultMessage[], tools: {
27
+ name: string;
28
+ label: string;
29
+ }[], dataAccessDetailsOf?: (toolCallId: string) => unknown, sensitiveRun?: boolean): MLBMessageToWrite | null;
30
+ /** note 消息写成 note 记录 */
31
+ export declare function noteMessageToMLBMessage(n: NoteMessage): MLBMessageToWrite;
32
+ /** assistant 消息里所有 thinking 块的推理原文拼起来;一个字都没有返回 undefined */
33
+ export declare function thinkingOf(m: AssistantMessage): string | undefined;
34
+ /** assistant 消息里所有 text 块的正文拼起来 */
35
+ export declare function textOf(m: AssistantMessage): string;
36
+ //# sourceMappingURL=mlbMessageAgentMessageConverter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mlbMessageAgentMessageConverter.d.ts","sourceRoot":"","sources":["../../src/conversation/mlbMessageAgentMessageConverter.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,KAAK,EAAE,gBAAgB,EAA0C,iBAAiB,EAAsB,MAAM,uBAAuB,CAAC;AAC7I,OAAO,KAAK,EAAgB,UAAU,EAAE,iBAAiB,EAAe,WAAW,EAAE,MAAM,aAAa,CAAC;AAGzG,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,0BAA0B,CAAC,OAAO,EAAE,UAAU,EAAE,EAAE,QAAQ,EAAE,aAAa,GAAG,YAAY,EAAE,CAmCzG;AAgFD;;;GAGG;AACH,wBAAgB,4BAA4B,CAAC,CAAC,EAAE,gBAAgB,EAAE,YAAY,UAAQ,GAAG,iBAAiB,GAAG,IAAI,CAQhH;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CACnC,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,iBAAiB,GAAG,IAAI,CAqB1B;AASD,wBAAwB;AACxB,wBAAgB,uBAAuB,CAAC,CAAC,EAAE,WAAW,GAAG,iBAAiB,CAEzE;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"}