@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.
@@ -1,12 +1,16 @@
1
- // 拉回来的平台记录怎么分拣:哪些灌进历史、哪条留给回合、哪些是对方说的、要不要开口。纯函数,不碰 Agent。
2
- // 管:首次拉取(重建)的切分;每批增量的过滤与判定。
1
+ // 拉回来的平台记录怎么分拣:哪些灌进历史、哪些是搭子还没回应过的、哪些是对方的、要不要开口。纯函数,不碰 Agent。
2
+ // 管:首次拉取(重建)的切分;每批增量的过滤;「要不要开口」的判定(重建与平时同一条)。
3
3
  // 不管:记录换成 pi 消息的形状(convert.ts)、分拣之后怎么处理(index.ts)。
4
- /** 首次拉取:末尾一条若是对方说的,不灌历史,留给回合按正常规矩处理(该开口就开口) */
4
+ /**
5
+ * 首次拉取(重建):以搭子最后一次写的记录为界。之前的整段是历史,照原样灌;之后的是搭子还没回应过的,
6
+ * 交给回合按平时同一条规矩处理(wantsReply)。不看「最后一条」:拉取时平台追加的 context、
7
+ * 群里 @ 之后别人紧跟的闲聊,都可能排在该答的那句后面。搭子一句都没说过时,整段都算没回应过的
8
+ */
5
9
  export function splitForRebuild(records) {
6
- const last = records[records.length - 1];
7
- if (last === undefined || last.author === "buddy")
8
- return { history: records, tail: undefined };
9
- return { history: records.slice(0, -1), tail: last };
10
+ let last = records.length - 1;
11
+ while (last >= 0 && records[last].author !== "buddy")
12
+ last--;
13
+ return { history: records.slice(0, last + 1), pending: records.slice(last + 1) };
10
14
  }
11
15
  /** 一批记录里最大的 seq;空批回原游标 */
12
16
  export function maxSeq(records, from) {
@@ -16,13 +20,20 @@ export function maxSeq(records, from) {
16
20
  seq = m.seq;
17
21
  return seq;
18
22
  }
23
+ /** 对方的记录里要处理的:不是搭子写的,有正文或是转发卡 */
24
+ export function theirsOf(records) {
25
+ return records.filter((m) => m.author !== "buddy" && ((m.text ?? "") !== "" || m.messagesCard !== undefined));
26
+ }
19
27
  /**
20
- * 一批增量:游标之后的、对方说的(author ≠ buddy)、有正文或是转发卡的,才是要处理的;
21
- * 「该不该开口」只看平台下发的 shouldReply,运行时不判、不让模型猜。
28
+ * 要不要开口:其中有一条是用户说的、平台标了该答。平台写的(context、system)从不该答;
29
+ * 该不该答只看平台下发的 shouldReply(旧平台叫 reply,没有 shouldReply 时照认),运行时不判、不让模型猜
22
30
  */
31
+ export function wantsReply(records) {
32
+ return records.some((m) => m.author === "user" && (m.shouldReply === true || (m.shouldReply === undefined && m.reply === true)));
33
+ }
34
+ /** 一批增量:游标之后的是新的(fresh),其中对方的(theirs)交给回合 */
23
35
  export function incoming(batch, pulledSeq) {
24
36
  const fresh = batch.filter((m) => m.seq > pulledSeq);
25
- const theirs = fresh.filter((m) => m.author !== "buddy" && ((m.text ?? "") !== "" || m.messagesCard !== undefined));
26
- return { fresh, theirs, shouldReply: theirs.some((m) => m.shouldReply === true) };
37
+ return { fresh, theirs: theirsOf(fresh) };
27
38
  }
28
39
  //# sourceMappingURL=history.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"history.js","sourceRoot":"","sources":["../../src/conversation/history.ts"],"names":[],"mappings":"AAAA,yDAAyD;AACzD,4BAA4B;AAC5B,mDAAmD;AAInD,+CAA+C;AAC/C,MAAM,UAAU,eAAe,CAAC,OAA0B;IACzD,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACzC,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,MAAM,KAAK,OAAO;QAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;IAChG,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AACtD,CAAC;AAED,0BAA0B;AAC1B,MAAM,UAAU,MAAM,CAAC,OAA0B,EAAE,IAAY;IAC9D,IAAI,GAAG,GAAG,IAAI,CAAC;IACf,KAAK,MAAM,CAAC,IAAI,OAAO;QAAE,IAAI,CAAC,CAAC,GAAG,GAAG,GAAG;YAAE,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC;IACtD,OAAO,GAAG,CAAC;AACZ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,QAAQ,CAAC,KAAwB,EAAE,SAAiB;IACnE,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,SAAS,CAAC,CAAC;IACrD,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC;IACpH,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,KAAK,IAAI,CAAC,EAAE,CAAC;AACnF,CAAC"}
1
+ {"version":3,"file":"history.js","sourceRoot":"","sources":["../../src/conversation/history.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAC7D,8CAA8C;AAC9C,mDAAmD;AAInD;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAAC,OAAqB;IACpD,IAAI,IAAI,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;IAC9B,OAAO,IAAI,IAAI,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,OAAO;QAAE,IAAI,EAAE,CAAC;IAC7D,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,GAAG,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC;AAClF,CAAC;AAED,0BAA0B;AAC1B,MAAM,UAAU,MAAM,CAAC,OAAqB,EAAE,IAAY;IACzD,IAAI,GAAG,GAAG,IAAI,CAAC;IACf,KAAK,MAAM,CAAC,IAAI,OAAO;QAAE,IAAI,CAAC,CAAC,GAAG,GAAG,GAAG;YAAE,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC;IACtD,OAAO,GAAG,CAAC;AACZ,CAAC;AAED,iCAAiC;AACjC,MAAM,UAAU,QAAQ,CAAC,OAAqB;IAC7C,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC;AAC/G,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,UAAU,CAAC,OAAqB;IAC/C,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,IAAI,CAAC,CAAC,CAAC,WAAW,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,WAAW,KAAK,SAAS,IAAI,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC;AAClI,CAAC;AAED,6CAA6C;AAC7C,MAAM,UAAU,QAAQ,CAAC,KAAmB,EAAE,SAAiB;IAC9D,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,SAAS,CAAC,CAAC;IACrD,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;AAC3C,CAAC"}
@@ -2,7 +2,7 @@ import type { AgentMessage, StreamFn } from "@earendil-works/pi-agent-core";
2
2
  import type { Api, Model } from "@earendil-works/pi-ai";
3
3
  import type { MLBClient, WidgetType } from "../mlbClient.ts";
4
4
  import type { Resource } from "../tools/resource.ts";
5
- import type { BuddyFactory, BuddyLogger } from "../types.ts";
5
+ import type { BuddyFactory, BuddyLogger, DataRequirement } from "../types.ts";
6
6
  export interface ConversationHandleDeps {
7
7
  /** 平台会话键:p_ 私聊、g_ 群 */
8
8
  key: string;
@@ -16,10 +16,12 @@ export interface ConversationHandleDeps {
16
16
  widgetTypes: () => Promise<WidgetType[]>;
17
17
  /** 搭子目录下 resources/ 里的资料,server 启动时读一次;空数组就不装 read_resource */
18
18
  resources: Resource[];
19
+ /** 搭子已声明的用户数据需求,进程级懒加载并复用 */
20
+ dataRequirements: () => Promise<DataRequirement[]>;
19
21
  factory: BuddyFactory;
20
22
  log: BuddyLogger;
21
- /** 拉取响应没有 context 字段(键已作废)时通知 server 把这场会话从表里删掉 */
22
- onInvalid: () => void;
23
+ /** 这场会话起不来(工厂抛错、工具重名)时通知 server 把它从表里删掉,下一条消息会重新起一场 */
24
+ onStartFailed: () => void;
23
25
  }
24
26
  export declare class ConversationHandle {
25
27
  private readonly deps;
@@ -28,14 +30,15 @@ export declare class ConversationHandle {
28
30
  private readonly writeBack;
29
31
  /** 懒建:第一次拉到消息时跑 factory 再 new */
30
32
  private agent;
33
+ private dataAccessUsage;
31
34
  /** 同会话的拉取串行链:notify 只往链尾排,绝不并发拉 */
32
35
  private pullChain;
36
+ private pullRetry;
37
+ private pullRetryDelay;
33
38
  /** 读方向游标:已经拉到并处理过的最大 seq(含自己写的) */
34
39
  private pulledSeq;
35
40
  /** 首次拉取(after=0 全量灌历史)做过没有 */
36
41
  private rebuilt;
37
- /** 平台随拉取下发的 context 段,每回合由 transformContext 插进历史末尾 */
38
- private lastContext;
39
42
  /** 忙时听见的、不用开口的旁听消息,回合收尾再进历史 */
40
43
  private heard;
41
44
  /** 当前回合的 promise,close 要等它 */
@@ -59,26 +62,31 @@ export declare class ConversationHandle {
59
62
  /** SSE message 到了:把一次拉取排进串行链。已退役的直接忽略 */
60
63
  notify(): void;
61
64
  /**
62
- * SSE delete 到了(或 server 空闲淘汰 / 键作废):先标退役,再打断正在跑的回合,等回合收尾。可以重复调。
65
+ * SSE delete 到了(或 server 空闲淘汰、stop、会话起不来):先标退役,再打断正在跑的回合,等回合收尾。可以重复调。
63
66
  */
64
67
  close(): Promise<void>;
65
68
  /** 标退役:写回队列清空并打断重发等待(回合收尾才不会被它拖住)、攒着的 delta 扔掉 */
66
69
  private retire;
67
70
  /**
68
- * 一次拉取:从 pulledSeq 往后翻到不满页。响应没有 context = 键已作废 退役、通知 server;
69
- * context 就存下来。第一次走重建,之后走 ingest。网络错误只记 warn,等下次通知再拉。
71
+ * 一次拉取:从 pulledSeq 往后翻到不满页。第一次走重建,之后走 ingest。网络错误按 1s–30s 指数退避主动重试,新 SSE 会提前唤醒。
72
+ * 平台的场合交代(context)是流里的一条记录,跟别的记录一起拉到;会话没了只靠 SSE delete 事件收,拉取这里不判。
70
73
  */
71
74
  private pull;
75
+ private schedulePullRetry;
76
+ private cancelPullRetry;
72
77
  /**
73
- * 首次拉取:建 Agent,把全量历史灌进 state.messages(不经事件,天然不会被写回平台),不起回合。
74
- * 末尾一条若是对方说的,不灌,留给 ingest 按正常规矩处理(该开口就开口)。
78
+ * 首次拉取:建 Agent,以搭子最后一次写的记录为界,之前的整段灌进 state.messages(不经事件,天然不会被写回平台);
79
+ * 之后的是搭子还没回应过的,交给 admit 按平时同一条规矩处理:有该答的就起回合,没有就只进历史。
75
80
  */
76
81
  private rebuild;
82
+ /** 一批新记录:游标推到最大 seq(自己写的也算,下次不再拉到),对方的交给 admit */
83
+ private ingest;
77
84
  /**
78
- * 一批新记录:游标推到最大 seq(自己写的也算,下次不再拉到);只留对方说的、有正文(或是转发卡)的,换成 user 消息;
85
+ * 搭子还没回应过的对方记录(重建时是搭子最后一次说话之后的那段,平时是这批新来的),换成 user 消息分发。
86
+ * 其中有一条是用户说的、平台标了该答(wantsReply),就要开口:
79
87
  * 空闲 + 不用开口 → 直接进历史;空闲 + 要开口 → 起回合;忙 + 不用开口 → 攒进 heard;忙 + 要开口 → steer 进当前回合。
80
88
  */
81
- private ingest;
89
+ private admit;
82
90
  /**
83
91
  * 跑一个回合。messages 有值就 prompt 它们;没值(收尾时发现队列里还有消息)就直接 continue。
84
92
  * prompt 完把回合中 steer 进来的消化完;一句话没说就 followUp 一条 note 提醒再跑一次。
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/conversation/index.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAqB,YAAY,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AAC/F,OAAO,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAIxD,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAgC,MAAM,aAAa,CAAC;AAM3F,MAAM,WAAW,sBAAsB;IACtC,uBAAuB;IACvB,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,oEAAoE;IACpE,KAAK,EAAE,MAAM,CAAC;IACd,yCAAyC;IACzC,WAAW,EAAE,MAAM,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;IACzC,+DAA+D;IAC/D,SAAS,EAAE,QAAQ,EAAE,CAAC;IACtB,OAAO,EAAE,YAAY,CAAC;IACtB,GAAG,EAAE,WAAW,CAAC;IACjB,mDAAmD;IACnD,SAAS,EAAE,MAAM,IAAI,CAAC;CACtB;AAQD,qBAAa,kBAAkB;IAC9B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAyB;IAC9C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAgB;IACzC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAW;IACpC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAY;IAEtC,iCAAiC;IACjC,OAAO,CAAC,KAAK,CAAoB;IACjC,mCAAmC;IACnC,OAAO,CAAC,SAAS,CAAoC;IACrD,mCAAmC;IACnC,OAAO,CAAC,SAAS,CAAK;IACtB,8BAA8B;IAC9B,OAAO,CAAC,OAAO,CAAS;IACxB,sDAAsD;IACtD,OAAO,CAAC,WAAW,CAAqB;IACxC,+BAA+B;IAC/B,OAAO,CAAC,KAAK,CAAsB;IACnC,8BAA8B;IAC9B,OAAO,CAAC,IAAI,CAA4B;IACxC,sCAAsC;IACtC,OAAO,CAAC,KAAK,CAAS;IACtB,iFAAiF;IACjF,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,aAAa,CAAc;gBAEvB,IAAI,EAAE,sBAAsB;IAcxC,yBAAyB;IACzB,IAAI,IAAI,IAAI,OAAO,CAElB;IAED,uCAAuC;IACvC,IAAI,YAAY,IAAI,MAAM,CAEzB;IAED,uBAAuB;IACvB,IAAI,MAAM,IAAI,OAAO,CAEpB;IAED,uCAAuC;IACvC,IAAI,UAAU,IAAI,SAAS,YAAY,EAAE,CAExC;IAED,yCAAyC;IACzC,MAAM,IAAI,IAAI;IAQd;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAM5B,kDAAkD;IAClD,OAAO,CAAC,MAAM;IAQd;;;OAGG;YACW,IAAI;IAsClB;;;OAGG;YACW,OAAO;IAgBrB;;;OAGG;IACH,OAAO,CAAC,MAAM;IAqBd;;;;;OAKG;YACW,OAAO;IA6CrB;;;OAGG;IACH,OAAO,CAAC,OAAO;CAuDf"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/conversation/index.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAqB,YAAY,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AAC/F,OAAO,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAIxD,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAG7D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,eAAe,EAA2B,MAAM,aAAa,CAAC;AAMvG,MAAM,WAAW,sBAAsB;IACtC,uBAAuB;IACvB,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,oEAAoE;IACpE,KAAK,EAAE,MAAM,CAAC;IACd,yCAAyC;IACzC,WAAW,EAAE,MAAM,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;IACzC,+DAA+D;IAC/D,SAAS,EAAE,QAAQ,EAAE,CAAC;IACtB,6BAA6B;IAC7B,gBAAgB,EAAE,MAAM,OAAO,CAAC,eAAe,EAAE,CAAC,CAAC;IACnD,OAAO,EAAE,YAAY,CAAC;IACtB,GAAG,EAAE,WAAW,CAAC;IACjB,uDAAuD;IACvD,aAAa,EAAE,MAAM,IAAI,CAAC;CAC1B;AAUD,qBAAa,kBAAkB;IAC9B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAyB;IAC9C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAgB;IACzC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAW;IACpC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAY;IAEtC,iCAAiC;IACjC,OAAO,CAAC,KAAK,CAAoB;IACjC,OAAO,CAAC,eAAe,CAAqC;IAC5D,mCAAmC;IACnC,OAAO,CAAC,SAAS,CAAoC;IACrD,OAAO,CAAC,SAAS,CAA4C;IAC7D,OAAO,CAAC,cAAc,CAAqB;IAC3C,mCAAmC;IACnC,OAAO,CAAC,SAAS,CAAK;IACtB,8BAA8B;IAC9B,OAAO,CAAC,OAAO,CAAS;IACxB,+BAA+B;IAC/B,OAAO,CAAC,KAAK,CAAsB;IACnC,8BAA8B;IAC9B,OAAO,CAAC,IAAI,CAA4B;IACxC,sCAAsC;IACtC,OAAO,CAAC,KAAK,CAAS;IACtB,iFAAiF;IACjF,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,aAAa,CAAc;gBAEvB,IAAI,EAAE,sBAAsB;IAcxC,yBAAyB;IACzB,IAAI,IAAI,IAAI,OAAO,CAElB;IAED,uCAAuC;IACvC,IAAI,YAAY,IAAI,MAAM,CAEzB;IAED,uBAAuB;IACvB,IAAI,MAAM,IAAI,OAAO,CAEpB;IAED,uCAAuC;IACvC,IAAI,UAAU,IAAI,SAAS,YAAY,EAAE,CAExC;IAED,yCAAyC;IACzC,MAAM,IAAI,IAAI;IASd;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAM5B,kDAAkD;IAClD,OAAO,CAAC,MAAM;IASd;;;OAGG;YACW,IAAI;IAkClB,OAAO,CAAC,iBAAiB;IAWzB,OAAO,CAAC,eAAe;IAMvB;;;OAGG;YACW,OAAO;IAiBrB,kDAAkD;IAClD,OAAO,CAAC,MAAM;IASd;;;;OAIG;IACH,OAAO,CAAC,KAAK;IAiBb;;;;;OAKG;YACW,OAAO;IA6CrB;;;OAGG;IACH,OAAO,CAAC,OAAO;CAiEf"}
@@ -1,19 +1,22 @@
1
1
  // 一场会话的纪律:什么时候拉、拉到怎么办、什么时候起回合、Agent 事件往哪送、怎么退役。
2
- // 管:同会话拉取串行链与读方向游标;首次拉取把全量历史灌进 Agent(重建);之后每批按空闲 / 忙碌 × 要不要开口四路分发;
2
+ // 管:同会话拉取串行链与读方向游标;首次拉取把全量历史灌进 Agent(重建),搭子最后一次说话之后有该答的就起回合;
3
+ // 之后每批按空闲 / 忙碌 × 要不要开口四路分发;
3
4
  // 回合(prompt → 把回合中排进队列的消息消化完 → 一句话没说就补一句提醒再跑一次);Agent 事件分给写回队列与在线态;
4
5
  // close(先标退役、再打断回合、等它收尾)。
5
6
  // 不管:Agent 怎么建(agent.ts)、拉回来的记录怎么分拣(history.ts)、写回平台(writeBack.ts)、replying / delta 推送(presence.ts)、
6
7
  // HTTP 请求本身(mlbClient.ts)、平台记录与 pi 消息的形状换算(convert.ts)、会话从哪来到哪去(server.ts 管 Map、空闲淘汰与 delete 事件)。
7
8
  import { randomUUID } from "node:crypto";
8
- import { outboundFromAssistant, outboundFromNote, outboundFromTurn, textOf, toAgentMessages } from "./convert.js";
9
+ import { outboundFromAssistant, outboundFromNote, outboundFromTurn, redactSensitiveRun, textOf, toAgentMessages } from "./convert.js";
9
10
  import { errorText } from "../log.js";
10
11
  import { modelIdentity } from "../model.js";
11
12
  import { createAgent } from "./agent.js";
12
- import { incoming, maxSeq, splitForRebuild } from "./history.js";
13
+ import { incoming, maxSeq, splitForRebuild, theirsOf, wantsReply } from "./history.js";
13
14
  import { Presence } from "./presence.js";
14
15
  import { WriteBack } from "./writeBack.js";
15
16
  /** 每页拉多少条:平台钳在 1..200,翻页靠不满页 */
16
17
  const PULL_LIMIT = 200;
18
+ const PULL_RETRY_MIN_MS = 1_000;
19
+ const PULL_RETRY_MAX_MS = 30_000;
17
20
  /** 回合跑完一句话都没说时,以 note 的身份补给模型的一句提醒 */
18
21
  const NUDGE = "你上一条回复正文是空的。把要说的话直接说出来。";
19
22
  export class ConversationHandle {
@@ -23,14 +26,15 @@ export class ConversationHandle {
23
26
  writeBack;
24
27
  /** 懒建:第一次拉到消息时跑 factory 再 new */
25
28
  agent;
29
+ dataAccessUsage;
26
30
  /** 同会话的拉取串行链:notify 只往链尾排,绝不并发拉 */
27
31
  pullChain = Promise.resolve();
32
+ pullRetry;
33
+ pullRetryDelay = PULL_RETRY_MIN_MS;
28
34
  /** 读方向游标:已经拉到并处理过的最大 seq(含自己写的) */
29
35
  pulledSeq = 0;
30
36
  /** 首次拉取(after=0 全量灌历史)做过没有 */
31
37
  rebuilt = false;
32
- /** 平台随拉取下发的 context 段,每回合由 transformContext 插进历史末尾 */
33
- lastContext;
34
38
  /** 忙时听见的、不用开口的旁听消息,回合收尾再进历史 */
35
39
  heard = [];
36
40
  /** 当前回合的 promise,close 要等它 */
@@ -75,13 +79,14 @@ export class ConversationHandle {
75
79
  notify() {
76
80
  if (this._closed)
77
81
  return;
82
+ this.cancelPullRetry();
78
83
  this._lastActivity = Date.now();
79
84
  this.pullChain = this.pullChain
80
85
  .then(() => this.pull())
81
86
  .catch((e) => this.deps.log.warn("处理拉取结果出错", { convoKey: this.deps.key, error: errorText(e) }));
82
87
  }
83
88
  /**
84
- * SSE delete 到了(或 server 空闲淘汰 / 键作废):先标退役,再打断正在跑的回合,等回合收尾。可以重复调。
89
+ * SSE delete 到了(或 server 空闲淘汰、stop、会话起不来):先标退役,再打断正在跑的回合,等回合收尾。可以重复调。
85
90
  */
86
91
  async close() {
87
92
  this.retire();
@@ -92,13 +97,14 @@ export class ConversationHandle {
92
97
  /** 标退役:写回队列清空并打断重发等待(回合收尾才不会被它拖住)、攒着的 delta 扔掉 */
93
98
  retire() {
94
99
  this._closed = true;
100
+ this.cancelPullRetry();
95
101
  this.writeBack.close();
96
102
  this.presence.close();
97
103
  }
98
104
  // —— 拉取
99
105
  /**
100
- * 一次拉取:从 pulledSeq 往后翻到不满页。响应没有 context = 键已作废 退役、通知 server;
101
- * context 就存下来。第一次走重建,之后走 ingest。网络错误只记 warn,等下次通知再拉。
106
+ * 一次拉取:从 pulledSeq 往后翻到不满页。第一次走重建,之后走 ingest。网络错误按 1s–30s 指数退避主动重试,新 SSE 会提前唤醒。
107
+ * 平台的场合交代(context)是流里的一条记录,跟别的记录一起拉到;会话没了只靠 SSE delete 事件收,拉取这里不判。
102
108
  */
103
109
  async pull() {
104
110
  if (this._closed)
@@ -111,23 +117,19 @@ export class ConversationHandle {
111
117
  page = await this.deps.client.pullMessages(this.deps.key, after, PULL_LIMIT);
112
118
  }
113
119
  catch (e) {
114
- this.deps.log.warn("拉消息失败,等下次通知再拉", { convoKey: this.deps.key, after, error: errorText(e) });
120
+ this.deps.log.warn("拉消息失败,稍后主动重试", { convoKey: this.deps.key, after, delayMs: this.pullRetryDelay, error: errorText(e) });
121
+ this.schedulePullRetry();
115
122
  return;
116
123
  }
124
+ this.cancelPullRetry();
117
125
  if (this._closed)
118
126
  return;
119
- if (page.context === undefined) {
120
- this.deps.log.info("会话键已作废,退役", { convoKey: this.deps.key });
121
- this.retire();
122
- this.deps.onInvalid();
123
- return;
124
- }
125
- this.lastContext = page.context;
126
127
  batch.push(...page.messages);
127
128
  if (page.messages.length < PULL_LIMIT)
128
129
  break;
129
130
  after = page.messages[page.messages.length - 1].seq;
130
131
  }
132
+ this.pullRetryDelay = PULL_RETRY_MIN_MS;
131
133
  if (this.rebuilt) {
132
134
  this.ingest(batch);
133
135
  return;
@@ -139,48 +141,71 @@ export class ConversationHandle {
139
141
  // factory 抛错、工具重名之类:这场会话起不来。退役并让 server 删掉,下一条消息会重新起一场再试
140
142
  this.deps.log.error("起会话失败", { convoKey: this.deps.key, error: errorText(e) });
141
143
  this.retire();
142
- this.deps.onInvalid();
144
+ this.deps.onStartFailed();
143
145
  }
144
146
  }
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
+ }
145
164
  /**
146
- * 首次拉取:建 Agent,把全量历史灌进 state.messages(不经事件,天然不会被写回平台),不起回合。
147
- * 末尾一条若是对方说的,不灌,留给 ingest 按正常规矩处理(该开口就开口)。
165
+ * 首次拉取:建 Agent,以搭子最后一次写的记录为界,之前的整段灌进 state.messages(不经事件,天然不会被写回平台);
166
+ * 之后的是搭子还没回应过的,交给 admit 按平时同一条规矩处理:有该答的就起回合,没有就只进历史。
148
167
  */
149
168
  async rebuild(records) {
150
- const agent = await createAgent({
169
+ const created = await createAgent({
151
170
  ...this.deps,
152
- contextOf: () => this.lastContext,
153
171
  onEvent: (a, event) => this.onEvent(a, event),
154
172
  });
155
173
  if (this._closed)
156
174
  return;
175
+ const agent = created.agent;
157
176
  this.agent = agent;
158
- const { history, tail } = splitForRebuild(records);
177
+ this.dataAccessUsage = created.dataAccessUsage;
178
+ const { history, pending } = splitForRebuild(records);
159
179
  agent.state.messages = toAgentMessages(history, this.identity);
160
- this.pulledSeq = maxSeq(history, this.pulledSeq);
180
+ this.pulledSeq = maxSeq(records, this.pulledSeq);
161
181
  this.rebuilt = true;
162
- this.deps.log.info("历史已重建", { convoKey: this.deps.key, records: history.length, transcript: agent.state.messages.length });
163
- if (tail !== undefined)
164
- this.ingest([tail]);
182
+ this.deps.log.info("历史已重建", { convoKey: this.deps.key, records: history.length, pending: pending.length, transcript: agent.state.messages.length });
183
+ this.admit(theirsOf(pending));
165
184
  }
166
- /**
167
- * 一批新记录:游标推到最大 seq(自己写的也算,下次不再拉到);只留对方说的、有正文(或是转发卡)的,换成 user 消息;
168
- * 空闲 + 不用开口 → 直接进历史;空闲 + 要开口 → 起回合;忙 + 不用开口 → 攒进 heard;忙 + 要开口 → steer 进当前回合。
169
- */
185
+ /** 一批新记录:游标推到最大 seq(自己写的也算,下次不再拉到),对方的交给 admit */
170
186
  ingest(batch) {
171
- const agent = this.agent;
172
- if (agent === undefined || this._closed)
187
+ if (this.agent === undefined || this._closed)
173
188
  return;
174
- const { fresh, theirs, shouldReply } = incoming(batch, this.pulledSeq);
189
+ const { fresh, theirs } = incoming(batch, this.pulledSeq);
175
190
  if (fresh.length === 0)
176
191
  return;
177
192
  this.pulledSeq = maxSeq(fresh, this.pulledSeq);
178
193
  this._lastActivity = Date.now();
179
- if (theirs.length === 0)
194
+ this.admit(theirs);
195
+ }
196
+ /**
197
+ * 搭子还没回应过的对方记录(重建时是搭子最后一次说话之后的那段,平时是这批新来的),换成 user 消息分发。
198
+ * 其中有一条是用户说的、平台标了该答(wantsReply),就要开口:
199
+ * 空闲 + 不用开口 → 直接进历史;空闲 + 要开口 → 起回合;忙 + 不用开口 → 攒进 heard;忙 + 要开口 → steer 进当前回合。
200
+ */
201
+ admit(theirs) {
202
+ const agent = this.agent;
203
+ if (agent === undefined || this._closed || theirs.length === 0)
180
204
  return;
181
205
  const messages = toAgentMessages(theirs, this.identity);
182
206
  if (messages.length === 0)
183
207
  return;
208
+ const shouldReply = wantsReply(theirs);
184
209
  if (!this._busy) {
185
210
  if (shouldReply)
186
211
  this.turn = this.runTurn(messages);
@@ -263,6 +288,10 @@ export class ConversationHandle {
263
288
  this.deps.log.info("run 开始", { convoKey: this.deps.key });
264
289
  break;
265
290
  case "agent_end":
291
+ if (this.dataAccessUsage?.hasUsage()) {
292
+ agent.state.messages = redactSensitiveRun(agent.state.messages, event.messages, (toolCallId) => this.dataAccessUsage?.details(toolCallId));
293
+ }
294
+ this.dataAccessUsage?.clear();
266
295
  this.deps.log.info("run 结束", { convoKey: this.deps.key, newMessages: event.messages.length, queued: agent.hasQueuedMessages() });
267
296
  break;
268
297
  case "message_end": {
@@ -281,7 +310,7 @@ export class ConversationHandle {
281
310
  this.spoke = true;
282
311
  // 带工具调用的等 turn_end 连结果一起写成 tool 记录
283
312
  if (!m.content.some((block) => block.type === "toolCall")) {
284
- const out = outboundFromAssistant(m);
313
+ const out = outboundFromAssistant(m, this.dataAccessUsage?.hasUsage());
285
314
  if (out !== null)
286
315
  this.writeBack.enqueue(out);
287
316
  }
@@ -294,7 +323,7 @@ export class ConversationHandle {
294
323
  case "turn_end": {
295
324
  const m = event.message;
296
325
  if (m.role === "assistant" && m.content.some((block) => block.type === "toolCall")) {
297
- const out = outboundFromTurn(m, event.toolResults, agent.state.tools);
326
+ const out = outboundFromTurn(m, event.toolResults, agent.state.tools, (toolCallId) => this.dataAccessUsage?.details(toolCallId), this.dataAccessUsage?.hasUsage());
298
327
  if (out !== null)
299
328
  this.writeBack.enqueue(out);
300
329
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/conversation/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/conversation/index.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,3 +1,3 @@
1
1
  export { BuddyServer } from "./server.ts";
2
- export type { BuddyFactory, BuddyLogger, BuddyOptions, BuddyServerHandle, Conversation, MemoryEntry, StartOptions } from "./types.ts";
2
+ export type { BuddyFactory, BuddyLogger, BuddyOptions, BuddyServerHandle, Conversation, DataAccessQuery, DataRequirement, DatasetAccessResult, MemoryEntry, StartOptions, } from "./types.ts";
3
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,iBAAiB,EAAE,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,YAAY,EACX,YAAY,EACZ,WAAW,EACX,YAAY,EACZ,iBAAiB,EACjB,YAAY,EACZ,eAAe,EACf,eAAe,EACf,mBAAmB,EACnB,WAAW,EACX,YAAY,GACZ,MAAM,YAAY,CAAC"}
@@ -1,4 +1,4 @@
1
- import type { BuddyEvent, BuddyLogger, MemoryEntry, OutgoingMessage, PullResponse } from "./types.ts";
1
+ import type { BuddyEvent, BuddyLogger, DataRequirement, DatasetAccessResult, MemoryEntry, OutgoingMessage, PullResponse } from "./types.ts";
2
2
  export interface MLBClientOptions {
3
3
  /** 网关地址,如 http://localhost:8788;末尾带不带斜杠都行 */
4
4
  gatewayUrl: string;
@@ -39,6 +39,8 @@ export type WidgetReply = {
39
39
  ok: false;
40
40
  error: string;
41
41
  };
42
+ export declare const MAX_DATASETS_PER_QUERY = 8;
43
+ export declare const MAX_DATA_ACCESS_RESPONSE_BYTES: number;
42
44
  export declare class MLBClient {
43
45
  private readonly base;
44
46
  private readonly token;
@@ -46,7 +48,7 @@ export declare class MLBClient {
46
48
  constructor(options: MLBClientOptions);
47
49
  /**
48
50
  * GET /internal/v1/messages?convoKey=&after=&limit=。
49
- * 网络错误与非 2xx 都 throw,交给调用方等下次通知再拉;2xx 原样回响应体(没有 context 字段 = 键已作废,由调用方判)。
51
+ * 网络错误与非 2xx 都 throw,交给调用方等下次通知再拉;2xx 原样回响应体。
50
52
  */
51
53
  pullMessages(convoKey: string, after: number, limit?: number): Promise<PullResponse>;
52
54
  /**
@@ -83,6 +85,13 @@ export declare class MLBClient {
83
85
  memoryWrite(convoKey: string, key: string, text: string): Promise<void>;
84
86
  /** DELETE /internal/v1/memory/:key?convoKey=:删一条,删不存在的也回 ok */
85
87
  memoryDelete(convoKey: string, key: string): Promise<void>;
88
+ /**
89
+ * POST /internal/v1/data-access/query:按当前会话读取用户已授权的 Dataset。
90
+ * 私聊不传 memberId;群聊传消息前缀里的稳定 memberId。非 2xx、坏 JSON 或响应缺 datasets 都 throw。
91
+ */
92
+ queryDataAccess(convoKey: string, datasets: string[], memberId?: string): Promise<DatasetAccessResult[]>;
93
+ /** GET /internal/v1/data-access/requirements:当前搭子声明的 Dataset;失败由调用方决定是否降级。 */
94
+ dataRequirements(): Promise<DataRequirement[]>;
86
95
  /** memory 接口共用:2xx 回解析后的响应体;非 2xx throw 平台错误体的 error 字段(超配额、key 不合法都在这);网络错误、超时原样 throw */
87
96
  private memoryCall;
88
97
  /** 发一个请求并把响应体读完。网络错误、超时直接 throw;HTTP 状态不在这里判 */
@@ -1 +1 @@
1
- {"version":3,"file":"mlbClient.d.ts","sourceRoot":"","sources":["../src/mlbClient.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mlbClient.d.ts","sourceRoot":"","sources":["../src/mlbClient.ts"],"names":[],"mappings":"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"}
package/dist/mlbClient.js CHANGED
@@ -5,6 +5,8 @@
5
5
  import { errorText } from "./log.js";
6
6
  /** 除事件流以外的请求都限时 30 秒:卡死的请求超时后按网络错误处理,调用方决定重不重发 */
7
7
  const REQUEST_TIMEOUT_MS = 30_000;
8
+ export const MAX_DATASETS_PER_QUERY = 8;
9
+ export const MAX_DATA_ACCESS_RESPONSE_BYTES = 512 * 1024;
8
10
  /** 会话键:p_ 私聊、g_ 群,后面 24 位十六进制 */
9
11
  const CONVO_KEY = /^[gp]_[0-9a-f]{24}$/;
10
12
  /** 事件流重连退避:1 秒起步,每次翻倍,封顶 30 秒,再加 0–500 毫秒抖动 */
@@ -25,7 +27,7 @@ export class MLBClient {
25
27
  }
26
28
  /**
27
29
  * GET /internal/v1/messages?convoKey=&after=&limit=。
28
- * 网络错误与非 2xx 都 throw,交给调用方等下次通知再拉;2xx 原样回响应体(没有 context 字段 = 键已作废,由调用方判)。
30
+ * 网络错误与非 2xx 都 throw,交给调用方等下次通知再拉;2xx 原样回响应体。
29
31
  */
30
32
  async pullMessages(convoKey, after, limit = 200) {
31
33
  const query = new URLSearchParams({ convoKey, after: String(after), limit: String(limit) });
@@ -129,6 +131,47 @@ export class MLBClient {
129
131
  async memoryDelete(convoKey, key) {
130
132
  await this.memoryCall("DELETE", `/memory/${seg(key)}?${new URLSearchParams({ convoKey })}`);
131
133
  }
134
+ /**
135
+ * POST /internal/v1/data-access/query:按当前会话读取用户已授权的 Dataset。
136
+ * 私聊不传 memberId;群聊传消息前缀里的稳定 memberId。非 2xx、坏 JSON 或响应缺 datasets 都 throw。
137
+ */
138
+ async queryDataAccess(convoKey, datasets, memberId) {
139
+ const unique = [...new Set(datasets)];
140
+ if (unique.length === 0)
141
+ throw new Error("DataAccess 至少需要一个 Dataset");
142
+ if (unique.length > MAX_DATASETS_PER_QUERY)
143
+ throw new Error(`DataAccess 一次最多查询 ${MAX_DATASETS_PER_QUERY} 个 Dataset`);
144
+ const body = { convoKey, datasets: unique };
145
+ if (memberId !== undefined)
146
+ body.memberId = memberId;
147
+ const reply = await this.call("POST", "/data-access/query", body);
148
+ if (!reply.ok)
149
+ throw new Error(errorOf(reply));
150
+ if (Buffer.byteLength(reply.text, "utf8") > MAX_DATA_ACCESS_RESPONSE_BYTES) {
151
+ throw new Error(`DataAccess 响应超过 ${MAX_DATA_ACCESS_RESPONSE_BYTES} 字节,请减少 Dataset 后重试`);
152
+ }
153
+ let parsed;
154
+ try {
155
+ parsed = JSON.parse(reply.text);
156
+ }
157
+ catch {
158
+ throw new Error("DataAccess 响应体不是 JSON");
159
+ }
160
+ const result = typeof parsed === "object" && parsed !== null ? parsed.datasets : undefined;
161
+ if (!Array.isArray(result))
162
+ throw new Error("DataAccess 响应体里没有 datasets 数组");
163
+ return result;
164
+ }
165
+ /** GET /internal/v1/data-access/requirements:当前搭子声明的 Dataset;失败由调用方决定是否降级。 */
166
+ async dataRequirements() {
167
+ const reply = await this.call("GET", "/data-access/requirements");
168
+ if (!reply.ok)
169
+ throw new Error(errorOf(reply));
170
+ const parsed = JSON.parse(reply.text);
171
+ if (!Array.isArray(parsed.datasets))
172
+ throw new Error("DataAccess 声明响应体里没有 datasets 数组");
173
+ return parsed.datasets;
174
+ }
132
175
  /** memory 接口共用:2xx 回解析后的响应体;非 2xx throw 平台错误体的 error 字段(超配额、key 不合法都在这);网络错误、超时原样 throw */
133
176
  async memoryCall(method, path, body) {
134
177
  const reply = await this.call(method, path, body);