@my-life-buddies/buddy-runtime 0.0.3 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +209 -45
- package/dist/conversation/agent.d.ts +6 -1
- package/dist/conversation/agent.d.ts.map +1 -1
- package/dist/conversation/agent.js +60 -53
- package/dist/conversation/agent.js.map +1 -1
- package/dist/conversation/agentMessageLLMMessageConverter.d.ts +8 -0
- package/dist/conversation/agentMessageLLMMessageConverter.d.ts.map +1 -0
- package/dist/conversation/agentMessageLLMMessageConverter.js +24 -0
- package/dist/conversation/agentMessageLLMMessageConverter.js.map +1 -0
- package/dist/conversation/history.d.ts +0 -7
- package/dist/conversation/history.d.ts.map +1 -1
- package/dist/conversation/history.js +3 -16
- package/dist/conversation/history.js.map +1 -1
- package/dist/conversation/index.d.ts +25 -22
- package/dist/conversation/index.d.ts.map +1 -1
- package/dist/conversation/index.js +141 -116
- package/dist/conversation/index.js.map +1 -1
- package/dist/conversation/mlbMessageAgentMessageConverter.d.ts +39 -0
- package/dist/conversation/mlbMessageAgentMessageConverter.d.ts.map +1 -0
- package/dist/conversation/{convert.js → mlbMessageAgentMessageConverter.js} +95 -113
- package/dist/conversation/mlbMessageAgentMessageConverter.js.map +1 -0
- package/dist/conversation/readMLBMessages.d.ts +31 -0
- package/dist/conversation/readMLBMessages.d.ts.map +1 -0
- package/dist/conversation/readMLBMessages.js +90 -0
- package/dist/conversation/readMLBMessages.js.map +1 -0
- package/dist/conversation/writeMLBMessage.d.ts +64 -0
- package/dist/conversation/writeMLBMessage.d.ts.map +1 -0
- package/dist/conversation/writeMLBMessage.js +214 -0
- package/dist/conversation/writeMLBMessage.js.map +1 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/mlbClient.d.ts +1 -126
- package/dist/mlbClient.d.ts.map +1 -1
- package/dist/mlbClient.js +2 -364
- package/dist/mlbClient.js.map +1 -1
- package/dist/platform/client.d.ts +29 -0
- package/dist/platform/client.d.ts.map +1 -0
- package/dist/platform/client.js +22 -0
- package/dist/platform/client.js.map +1 -0
- package/dist/platform/mlbClient.d.ts +133 -0
- package/dist/platform/mlbClient.d.ts.map +1 -0
- package/dist/platform/mlbClient.js +420 -0
- package/dist/platform/mlbClient.js.map +1 -0
- package/dist/platform/widgets.d.ts +74 -0
- package/dist/platform/widgets.d.ts.map +1 -0
- package/dist/platform/widgets.js +85 -0
- package/dist/platform/widgets.js.map +1 -0
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +8 -4
- package/dist/server.js.map +1 -1
- package/dist/tools/dataAccess.d.ts +8 -3
- package/dist/tools/dataAccess.d.ts.map +1 -1
- package/dist/tools/dataAccess.js +33 -5
- package/dist/tools/dataAccess.js.map +1 -1
- package/dist/tools/registry.d.ts +6 -0
- package/dist/tools/registry.d.ts.map +1 -0
- package/dist/tools/registry.js +23 -0
- package/dist/tools/registry.js.map +1 -0
- package/dist/tools/widgets.d.ts +3 -2
- package/dist/tools/widgets.d.ts.map +1 -1
- package/dist/tools/widgets.js +22 -53
- package/dist/tools/widgets.js.map +1 -1
- package/dist/types.d.ts +41 -13
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +3 -3
- package/dist/types.js.map +1 -1
- package/package.json +4 -3
- package/dist/conversation/convert.d.ts +0 -46
- package/dist/conversation/convert.d.ts.map +0 -1
- package/dist/conversation/convert.js.map +0 -1
- package/dist/conversation/presence.d.ts +0 -24
- package/dist/conversation/presence.d.ts.map +0 -1
- package/dist/conversation/presence.js +0 -56
- package/dist/conversation/presence.js.map +0 -1
- package/dist/conversation/writeBack.d.ts +0 -36
- package/dist/conversation/writeBack.d.ts.map +0 -1
- package/dist/conversation/writeBack.js +0 -114
- package/dist/conversation/writeBack.js.map +0 -1
package/dist/types.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
// 开发者契约 + 模块间共享的类型。设计正本:REDoc《【技术设计】搭子 runtime 基座》。
|
|
2
2
|
//
|
|
3
|
-
// 开发者交一个工厂:buddy: (conversation) => BuddyOptions
|
|
4
|
-
//
|
|
5
|
-
// 藏掉运行时独占的字段(streamFn / getApiKey / model / messages / convertToLlm / steeringMode …),
|
|
3
|
+
// 开发者交一个工厂:buddy: (conversation) => BuddyOptions。模型钩子取自 pi,
|
|
4
|
+
// 平台工具按名单显式注册,默认不暴露给模型。
|
|
5
|
+
// 藏掉运行时独占的字段(streamFn / getApiKey / model / messages / transformContext / convertToLlm / steeringMode …),
|
|
6
6
|
// 把 systemPrompt 设成必填(没人设的搭子是 bug,类型上就拦)。
|
|
7
7
|
export {};
|
|
8
8
|
//# sourceMappingURL=types.js.map
|
package/dist/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,oDAAoD;AACpD,EAAE;AACF,
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,oDAAoD;AACpD,EAAE;AACF,4DAA4D;AAC5D,wBAAwB;AACxB,0GAA0G;AAC1G,0CAA0C"}
|
package/package.json
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@my-life-buddies/buddy-runtime",
|
|
3
|
-
"version": "0.0
|
|
3
|
+
"version": "0.2.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "MLB 搭子运行时,基于 pi-agent-core:订阅平台事件流、拉取消息、驱动模型、写回回复。开发者调用 BuddyServer.start 交一份配置即可跑起一只搭子",
|
|
6
6
|
"exports": {
|
|
7
7
|
".": {
|
|
8
|
+
"buddy-runtime-source": "./src/index.ts",
|
|
8
9
|
"types": "./dist/index.d.ts",
|
|
9
10
|
"default": "./dist/index.js"
|
|
10
11
|
},
|
|
@@ -14,9 +15,9 @@
|
|
|
14
15
|
"dist/"
|
|
15
16
|
],
|
|
16
17
|
"scripts": {
|
|
17
|
-
"build": "tsc -p tsconfig.build.json",
|
|
18
|
+
"build": "node -e \"require('node:fs').rmSync('dist', { recursive: true, force: true })\" && tsc -p tsconfig.build.json",
|
|
18
19
|
"typecheck": "tsc --noEmit -p tsconfig.json",
|
|
19
|
-
"test": "node --test src/*.test.ts src/conversation/*.test.ts src/tools/*.test.ts",
|
|
20
|
+
"test": "node --test src/*.test.ts src/conversation/*.test.ts src/tools/*.test.ts src/platform/*.test.ts",
|
|
20
21
|
"prepublishOnly": "npm run build"
|
|
21
22
|
},
|
|
22
23
|
"dependencies": {
|
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
import type { AgentMessage } from "@earendil-works/pi-agent-core";
|
|
2
|
-
import type { AssistantMessage, Message, ToolResultMessage } from "@earendil-works/pi-ai";
|
|
3
|
-
import type { MLBMessage, NoteMessage, OutgoingMessage } 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 toAgentMessages(records: MLBMessage[], identity: ModelIdentity): AgentMessage[];
|
|
17
|
-
/**
|
|
18
|
-
* 不带工具调用的 assistant 消息写成 message 记录。
|
|
19
|
-
* 正常收尾的照写(带 thinking);error / aborted 收尾但已经说了半截的写成 interrupted;其余不写。
|
|
20
|
-
*/
|
|
21
|
-
export declare function outboundFromAssistant(m: AssistantMessage, omitThinking?: boolean): OutgoingMessage | null;
|
|
22
|
-
/**
|
|
23
|
-
* 带工具调用的 assistant 消息连同它的结果写成一条 tool 记录;每个调用的 summary 取工具的 label,没有 label 用名字。
|
|
24
|
-
* 没有工具调用的返回 null(那种走 outboundFromAssistant)。
|
|
25
|
-
*/
|
|
26
|
-
export declare function outboundFromTurn(m: AssistantMessage, toolResults: ToolResultMessage[], tools: {
|
|
27
|
-
name: string;
|
|
28
|
-
label: string;
|
|
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[];
|
|
35
|
-
/** note 消息写成 note 记录 */
|
|
36
|
-
export declare function outboundFromNote(n: NoteMessage): OutgoingMessage;
|
|
37
|
-
/** assistant 消息里所有 thinking 块的推理原文拼起来;一个字都没有返回 undefined */
|
|
38
|
-
export declare function thinkingOf(m: AssistantMessage): string | undefined;
|
|
39
|
-
/** assistant 消息里所有 text 块的正文拼起来 */
|
|
40
|
-
export declare function textOf(m: AssistantMessage): string;
|
|
41
|
-
/**
|
|
42
|
-
* 交给 pi 的 convertToLlm:note 变 user;相邻两条 user 合并成一条(正文中间隔一个换行);user / assistant / toolResult 原样。
|
|
43
|
-
* 返回的是新数组,合并出来的也是新对象,不改传进来的消息。
|
|
44
|
-
*/
|
|
45
|
-
export declare const convertToLlm: (messages: AgentMessage[]) => Message[];
|
|
46
|
-
//# sourceMappingURL=convert.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
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 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"convert.js","sourceRoot":"","sources":["../../src/conversation/convert.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
import type { MLBClient } from "../mlbClient.ts";
|
|
2
|
-
export declare class Presence {
|
|
3
|
-
private readonly client;
|
|
4
|
-
private readonly key;
|
|
5
|
-
/** 推送串行链:只保证顺序,不等它 */
|
|
6
|
-
private chain;
|
|
7
|
-
private deltaBuffer;
|
|
8
|
-
private deltaTimer;
|
|
9
|
-
private closed;
|
|
10
|
-
constructor(client: MLBClient, key: string);
|
|
11
|
-
/** 回合开始 on、收尾 off;工具跑起来时带 status 更新状态行 */
|
|
12
|
-
replying(data: {
|
|
13
|
-
on: boolean;
|
|
14
|
-
status?: string;
|
|
15
|
-
}): void;
|
|
16
|
-
/** 正文碎片先攒着,120 毫秒内攒到的一起发 */
|
|
17
|
-
delta(text: string): void;
|
|
18
|
-
/** 把攒下的碎片立刻发出去;退役了就扔掉。写平台前、回合收尾前各叫一次,预览不落在正文后面 */
|
|
19
|
-
flushDelta(): void;
|
|
20
|
-
/** 退役:攒着的碎片扔掉,定时器清掉。replying off 仍然放行——收尾要把三个圆点熄掉 */
|
|
21
|
-
close(): void;
|
|
22
|
-
private clearTimer;
|
|
23
|
-
}
|
|
24
|
-
//# sourceMappingURL=presence.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"presence.d.ts","sourceRoot":"","sources":["../../src/conversation/presence.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAKjD,qBAAa,QAAQ;IACpB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAY;IACnC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAS;IAC7B,sBAAsB;IACtB,OAAO,CAAC,KAAK,CAAoC;IACjD,OAAO,CAAC,WAAW,CAAM;IACzB,OAAO,CAAC,UAAU,CAA4C;IAC9D,OAAO,CAAC,MAAM,CAAS;gBAEX,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM;IAK1C,0CAA0C;IAC1C,QAAQ,CAAC,IAAI,EAAE;QAAE,EAAE,EAAE,OAAO,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IAItD,4BAA4B;IAC5B,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAWzB,kDAAkD;IAClD,UAAU,IAAI,IAAI;IAQlB,qDAAqD;IACrD,KAAK,IAAI,IAAI;IAMb,OAAO,CAAC,UAAU;CAKlB"}
|
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
// 一场会话的在线态:replying 开关与工具状态行、生成中的正文碎片(delta)。
|
|
2
|
-
// 管:把 replying / delta 按顺序推给平台(POST /internal/v1/push),只保证顺序、不等结果;delta 每 120 毫秒攒一帧。
|
|
3
|
-
// 不管:什么时候该开关 replying、碎片从哪来(index.ts 按 Agent 事件调这里)。
|
|
4
|
-
/** 生成中的正文碎片攒多久发一帧 delta */
|
|
5
|
-
const DELTA_THROTTLE_MS = 120;
|
|
6
|
-
export class Presence {
|
|
7
|
-
client;
|
|
8
|
-
key;
|
|
9
|
-
/** 推送串行链:只保证顺序,不等它 */
|
|
10
|
-
chain = Promise.resolve();
|
|
11
|
-
deltaBuffer = "";
|
|
12
|
-
deltaTimer;
|
|
13
|
-
closed = false;
|
|
14
|
-
constructor(client, key) {
|
|
15
|
-
this.client = client;
|
|
16
|
-
this.key = key;
|
|
17
|
-
}
|
|
18
|
-
/** 回合开始 on、收尾 off;工具跑起来时带 status 更新状态行 */
|
|
19
|
-
replying(data) {
|
|
20
|
-
this.chain = this.chain.then(() => this.client.push(this.key, "replying", data)).catch(() => { });
|
|
21
|
-
}
|
|
22
|
-
/** 正文碎片先攒着,120 毫秒内攒到的一起发 */
|
|
23
|
-
delta(text) {
|
|
24
|
-
if (text === "" || this.closed)
|
|
25
|
-
return;
|
|
26
|
-
this.deltaBuffer += text;
|
|
27
|
-
if (this.deltaTimer === undefined) {
|
|
28
|
-
this.deltaTimer = setTimeout(() => {
|
|
29
|
-
this.deltaTimer = undefined;
|
|
30
|
-
this.flushDelta();
|
|
31
|
-
}, DELTA_THROTTLE_MS);
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
/** 把攒下的碎片立刻发出去;退役了就扔掉。写平台前、回合收尾前各叫一次,预览不落在正文后面 */
|
|
35
|
-
flushDelta() {
|
|
36
|
-
this.clearTimer();
|
|
37
|
-
const text = this.deltaBuffer;
|
|
38
|
-
this.deltaBuffer = "";
|
|
39
|
-
if (text === "" || this.closed)
|
|
40
|
-
return;
|
|
41
|
-
this.chain = this.chain.then(() => this.client.push(this.key, "delta", { text })).catch(() => { });
|
|
42
|
-
}
|
|
43
|
-
/** 退役:攒着的碎片扔掉,定时器清掉。replying off 仍然放行——收尾要把三个圆点熄掉 */
|
|
44
|
-
close() {
|
|
45
|
-
this.closed = true;
|
|
46
|
-
this.clearTimer();
|
|
47
|
-
this.deltaBuffer = "";
|
|
48
|
-
}
|
|
49
|
-
clearTimer() {
|
|
50
|
-
if (this.deltaTimer === undefined)
|
|
51
|
-
return;
|
|
52
|
-
clearTimeout(this.deltaTimer);
|
|
53
|
-
this.deltaTimer = undefined;
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
//# sourceMappingURL=presence.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"presence.js","sourceRoot":"","sources":["../../src/conversation/presence.ts"],"names":[],"mappings":"AAAA,8CAA8C;AAC9C,qFAAqF;AACrF,qDAAqD;AAIrD,2BAA2B;AAC3B,MAAM,iBAAiB,GAAG,GAAG,CAAC;AAE9B,MAAM,OAAO,QAAQ;IACH,MAAM,CAAY;IAClB,GAAG,CAAS;IAC7B,sBAAsB;IACd,KAAK,GAAkB,OAAO,CAAC,OAAO,EAAE,CAAC;IACzC,WAAW,GAAG,EAAE,CAAC;IACjB,UAAU,CAA4C;IACtD,MAAM,GAAG,KAAK,CAAC;IAEvB,YAAY,MAAiB,EAAE,GAAW;QACzC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;IAChB,CAAC;IAED,0CAA0C;IAC1C,QAAQ,CAAC,IAAsC;QAC9C,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IAClG,CAAC;IAED,4BAA4B;IAC5B,KAAK,CAAC,IAAY;QACjB,IAAI,IAAI,KAAK,EAAE,IAAI,IAAI,CAAC,MAAM;YAAE,OAAO;QACvC,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC;QACzB,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;YACnC,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC,GAAG,EAAE;gBACjC,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;gBAC5B,IAAI,CAAC,UAAU,EAAE,CAAC;YACnB,CAAC,EAAE,iBAAiB,CAAC,CAAC;QACvB,CAAC;IACF,CAAC;IAED,kDAAkD;IAClD,UAAU;QACT,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC;QAC9B,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;QACtB,IAAI,IAAI,KAAK,EAAE,IAAI,IAAI,CAAC,MAAM;YAAE,OAAO;QACvC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IACnG,CAAC;IAED,qDAAqD;IACrD,KAAK;QACJ,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACnB,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;IACvB,CAAC;IAEO,UAAU;QACjB,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS;YAAE,OAAO;QAC1C,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC9B,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;IAC7B,CAAC;CACD"}
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
import type { MLBClient } from "../mlbClient.ts";
|
|
2
|
-
import type { BuddyLogger, OutgoingMessage } from "../types.ts";
|
|
3
|
-
export interface WriteBackDeps {
|
|
4
|
-
client: MLBClient;
|
|
5
|
-
key: string;
|
|
6
|
-
buddyId: string;
|
|
7
|
-
/** 本进程里这场会话的一次生命周期标识,进幂等键;重启后换一个,旧键不会撞新键 */
|
|
8
|
-
runId: string;
|
|
9
|
-
log: BuddyLogger;
|
|
10
|
-
/** 每次真正写平台之前先调一下(把攒着的 delta 发完,预览不落在正文后面) */
|
|
11
|
-
beforeSend: () => void;
|
|
12
|
-
}
|
|
13
|
-
export declare class WriteBack {
|
|
14
|
-
private readonly deps;
|
|
15
|
-
private queue;
|
|
16
|
-
/** 串行链正在跑 */
|
|
17
|
-
private sending;
|
|
18
|
-
/** 幂等键里的自增号 */
|
|
19
|
-
private sent;
|
|
20
|
-
private retryDelay;
|
|
21
|
-
/** close 时打断重发等待 */
|
|
22
|
-
private readonly abort;
|
|
23
|
-
/** 等队列清空的人 */
|
|
24
|
-
private waiters;
|
|
25
|
-
private closed;
|
|
26
|
-
constructor(deps: WriteBackDeps);
|
|
27
|
-
/** 入队即分配幂等键;退役后不收 */
|
|
28
|
-
enqueue(message: OutgoingMessage): void;
|
|
29
|
-
/** 等队列清空(或退役) */
|
|
30
|
-
flush(): Promise<void>;
|
|
31
|
-
/** 退役:正在退避等重发的立刻醒来并退出,队列清空 */
|
|
32
|
-
close(): void;
|
|
33
|
-
/** 一次发队头一条:delivered → 出队;rejected(4xx)→ warn 出队;throw(网络 / 5xx)→ 留队退避后带同一个键重发 */
|
|
34
|
-
private drain;
|
|
35
|
-
}
|
|
36
|
-
//# sourceMappingURL=writeBack.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"writeBack.d.ts","sourceRoot":"","sources":["../../src/conversation/writeBack.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,SAAS,EAAe,MAAM,iBAAiB,CAAC;AAC9D,OAAO,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAMhE,MAAM,WAAW,aAAa;IAC7B,MAAM,EAAE,SAAS,CAAC;IAClB,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,4CAA4C;IAC5C,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,WAAW,CAAC;IACjB,6CAA6C;IAC7C,UAAU,EAAE,MAAM,IAAI,CAAC;CACvB;AAED,qBAAa,SAAS;IACrB,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAgB;IACrC,OAAO,CAAC,KAAK,CAAyB;IACtC,aAAa;IACb,OAAO,CAAC,OAAO,CAAS;IACxB,eAAe;IACf,OAAO,CAAC,IAAI,CAAK;IACjB,OAAO,CAAC,UAAU,CAAsB;IACxC,oBAAoB;IACpB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAyB;IAC/C,cAAc;IACd,OAAO,CAAC,OAAO,CAAsB;IACrC,OAAO,CAAC,MAAM,CAAS;gBAEX,IAAI,EAAE,aAAa;IAI/B,qBAAqB;IACrB,OAAO,CAAC,OAAO,EAAE,eAAe,GAAG,IAAI;IAOvC,iBAAiB;IACjB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAOtB,8BAA8B;IAC9B,KAAK,IAAI,IAAI;IAMb,kFAAkF;YACpE,KAAK;CA2CnB"}
|
|
@@ -1,114 +0,0 @@
|
|
|
1
|
-
// 一场会话的写回:模型说的话怎么写回平台。
|
|
2
|
-
// 管:入队那一刻分配幂等键(之后重发一字不变);串行 POST /internal/v1/messages;4xx 丢弃并 warn(平台明确拒绝,重发没用);
|
|
3
|
-
// 网络错误 / 5xx 留队退避重发(1 秒起步、翻倍、封顶 10 秒);等队列清空;退役时清空并打断等待。
|
|
4
|
-
// 不管:记录长什么样(convert.ts 产出、index.ts 交进来)、写之前要先把 delta 发完(调用方通过 beforeSend 挂进来)。
|
|
5
|
-
import { errorText } from "../log.js";
|
|
6
|
-
/** 写平台遇到网络错误 / 5xx 的重发间隔 */
|
|
7
|
-
const WRITE_RETRY_MIN_MS = 1_000;
|
|
8
|
-
const WRITE_RETRY_MAX_MS = 10_000;
|
|
9
|
-
export class WriteBack {
|
|
10
|
-
deps;
|
|
11
|
-
queue = [];
|
|
12
|
-
/** 串行链正在跑 */
|
|
13
|
-
sending = false;
|
|
14
|
-
/** 幂等键里的自增号 */
|
|
15
|
-
sent = 0;
|
|
16
|
-
retryDelay = WRITE_RETRY_MIN_MS;
|
|
17
|
-
/** close 时打断重发等待 */
|
|
18
|
-
abort = new AbortController();
|
|
19
|
-
/** 等队列清空的人 */
|
|
20
|
-
waiters = [];
|
|
21
|
-
closed = false;
|
|
22
|
-
constructor(deps) {
|
|
23
|
-
this.deps = deps;
|
|
24
|
-
}
|
|
25
|
-
/** 入队即分配幂等键;退役后不收 */
|
|
26
|
-
enqueue(message) {
|
|
27
|
-
if (this.closed)
|
|
28
|
-
return;
|
|
29
|
-
this.sent += 1;
|
|
30
|
-
this.queue.push({ ...message, idempotencyKey: `buddy:${this.deps.buddyId}:${this.deps.key}:${this.deps.runId}:${this.sent}` });
|
|
31
|
-
void this.drain();
|
|
32
|
-
}
|
|
33
|
-
/** 等队列清空(或退役) */
|
|
34
|
-
flush() {
|
|
35
|
-
if (!this.sending && this.queue.length === 0)
|
|
36
|
-
return Promise.resolve();
|
|
37
|
-
return new Promise((resolve) => {
|
|
38
|
-
this.waiters.push(resolve);
|
|
39
|
-
});
|
|
40
|
-
}
|
|
41
|
-
/** 退役:正在退避等重发的立刻醒来并退出,队列清空 */
|
|
42
|
-
close() {
|
|
43
|
-
this.closed = true;
|
|
44
|
-
this.abort.abort();
|
|
45
|
-
this.queue = [];
|
|
46
|
-
}
|
|
47
|
-
/** 一次发队头一条:delivered → 出队;rejected(4xx)→ warn 出队;throw(网络 / 5xx)→ 留队退避后带同一个键重发 */
|
|
48
|
-
async drain() {
|
|
49
|
-
if (this.sending)
|
|
50
|
-
return;
|
|
51
|
-
this.sending = true;
|
|
52
|
-
try {
|
|
53
|
-
while (!this.closed && this.queue.length > 0) {
|
|
54
|
-
const head = this.queue[0];
|
|
55
|
-
this.deps.beforeSend();
|
|
56
|
-
let result;
|
|
57
|
-
try {
|
|
58
|
-
result = await this.deps.client.writeMessages(this.deps.key, [head]);
|
|
59
|
-
}
|
|
60
|
-
catch (e) {
|
|
61
|
-
this.deps.log.warn("写消息失败,稍后重发", {
|
|
62
|
-
convoKey: this.deps.key,
|
|
63
|
-
idempotencyKey: head.idempotencyKey,
|
|
64
|
-
delayMs: this.retryDelay,
|
|
65
|
-
error: errorText(e),
|
|
66
|
-
});
|
|
67
|
-
await waitMs(this.retryDelay, this.abort.signal);
|
|
68
|
-
this.retryDelay = Math.min(this.retryDelay * 2, WRITE_RETRY_MAX_MS);
|
|
69
|
-
continue;
|
|
70
|
-
}
|
|
71
|
-
this.retryDelay = WRITE_RETRY_MIN_MS;
|
|
72
|
-
if (result.kind === "delivered") {
|
|
73
|
-
this.deps.log.info("写回一条", { convoKey: this.deps.key, type: head.type, chars: head.text?.length ?? 0, idempotencyKey: head.idempotencyKey });
|
|
74
|
-
}
|
|
75
|
-
else {
|
|
76
|
-
this.deps.log.warn("写消息被平台拒绝,丢弃", {
|
|
77
|
-
convoKey: this.deps.key,
|
|
78
|
-
idempotencyKey: head.idempotencyKey,
|
|
79
|
-
type: head.type,
|
|
80
|
-
status: result.status,
|
|
81
|
-
body: result.body,
|
|
82
|
-
});
|
|
83
|
-
}
|
|
84
|
-
this.queue.shift();
|
|
85
|
-
}
|
|
86
|
-
if (this.closed)
|
|
87
|
-
this.queue = [];
|
|
88
|
-
}
|
|
89
|
-
finally {
|
|
90
|
-
this.sending = false;
|
|
91
|
-
const waiters = this.waiters;
|
|
92
|
-
this.waiters = [];
|
|
93
|
-
for (const resolve of waiters)
|
|
94
|
-
resolve();
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
/** 等 ms 毫秒;signal 触发就提前返回(不 reject) */
|
|
99
|
-
function waitMs(ms, signal) {
|
|
100
|
-
return new Promise((resolve) => {
|
|
101
|
-
if (signal.aborted) {
|
|
102
|
-
resolve();
|
|
103
|
-
return;
|
|
104
|
-
}
|
|
105
|
-
const finish = () => {
|
|
106
|
-
clearTimeout(timer);
|
|
107
|
-
signal.removeEventListener("abort", finish);
|
|
108
|
-
resolve();
|
|
109
|
-
};
|
|
110
|
-
const timer = setTimeout(finish, ms);
|
|
111
|
-
signal.addEventListener("abort", finish, { once: true });
|
|
112
|
-
});
|
|
113
|
-
}
|
|
114
|
-
//# sourceMappingURL=writeBack.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"writeBack.js","sourceRoot":"","sources":["../../src/conversation/writeBack.ts"],"names":[],"mappings":"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"}
|