@my-life-buddies/buddy-runtime 0.4.2 → 0.6.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 (47) hide show
  1. package/README.md +2 -0
  2. package/dist/conversation/agentMessageLLMMessageConverter.d.ts +2 -1
  3. package/dist/conversation/agentMessageLLMMessageConverter.d.ts.map +1 -1
  4. package/dist/conversation/agentMessageLLMMessageConverter.js +14 -3
  5. package/dist/conversation/agentMessageLLMMessageConverter.js.map +1 -1
  6. package/dist/conversation/compaction.d.ts +73 -0
  7. package/dist/conversation/compaction.d.ts.map +1 -0
  8. package/dist/conversation/compaction.js +178 -0
  9. package/dist/conversation/compaction.js.map +1 -0
  10. package/dist/conversation/history.d.ts +16 -2
  11. package/dist/conversation/history.d.ts.map +1 -1
  12. package/dist/conversation/history.js +26 -3
  13. package/dist/conversation/history.js.map +1 -1
  14. package/dist/conversation/index.d.ts +7 -1
  15. package/dist/conversation/index.d.ts.map +1 -1
  16. package/dist/conversation/index.js +32 -12
  17. package/dist/conversation/index.js.map +1 -1
  18. package/dist/conversation/mlbMessageAgentMessageConverter.d.ts +16 -5
  19. package/dist/conversation/mlbMessageAgentMessageConverter.d.ts.map +1 -1
  20. package/dist/conversation/mlbMessageAgentMessageConverter.js +36 -16
  21. package/dist/conversation/mlbMessageAgentMessageConverter.js.map +1 -1
  22. package/dist/conversation/readMLBMessages.d.ts +8 -1
  23. package/dist/conversation/readMLBMessages.d.ts.map +1 -1
  24. package/dist/conversation/readMLBMessages.js +55 -9
  25. package/dist/conversation/readMLBMessages.js.map +1 -1
  26. package/dist/conversation/writeMLBMessage.d.ts +2 -2
  27. package/dist/conversation/writeMLBMessage.d.ts.map +1 -1
  28. package/dist/conversation/writeMLBMessage.js +2 -2
  29. package/dist/conversation/writeMLBMessage.js.map +1 -1
  30. package/dist/mlbClient.d.ts +176 -1
  31. package/dist/mlbClient.d.ts.map +1 -1
  32. package/dist/mlbClient.js +535 -2
  33. package/dist/mlbClient.js.map +1 -1
  34. package/dist/server.d.ts.map +1 -1
  35. package/dist/server.js +26 -4
  36. package/dist/server.js.map +1 -1
  37. package/dist/tools/widgets.d.ts +1 -1
  38. package/dist/tools/widgets.d.ts.map +1 -1
  39. package/dist/tools/widgets.js +1 -1
  40. package/dist/tools/widgets.js.map +1 -1
  41. package/dist/types.d.ts +8 -8
  42. package/dist/types.d.ts.map +1 -1
  43. package/package.json +2 -2
  44. package/dist/platform/mlbClient.d.ts +0 -172
  45. package/dist/platform/mlbClient.d.ts.map +0 -1
  46. package/dist/platform/mlbClient.js +0 -523
  47. package/dist/platform/mlbClient.js.map +0 -1
@@ -1,2 +1,177 @@
1
- export * from "./platform/mlbClient.ts";
1
+ import type { BuddyEvent, BuddyLogger, DataRequirement, DatasetAccessResult, MemoryEntry, MLBMessageToWrite, PullResponse, Widget, WidgetRecord, WidgetSummary } from "./types.ts";
2
+ import type { ProactiveDecision, ProactiveRun, ProactiveSubscriptionRequest } from "./types.ts";
3
+ export interface MLBClientOptions {
4
+ /** 网关地址,如 http://localhost:8788;末尾带不带斜杠都行 */
5
+ gatewayUrl: string;
6
+ /** 搭子令牌,放进每个请求的 Authorization: Bearer */
7
+ token: string;
8
+ log: BuddyLogger;
9
+ }
10
+ /** 写消息的结果:4xx 是平台明确拒绝(调用方丢弃不重发);网络错误 / 5xx 直接 throw(调用方重发) */
11
+ export type WriteResult = {
12
+ kind: "delivered";
13
+ timestamps: number[];
14
+ } | {
15
+ kind: "rejected";
16
+ status: number;
17
+ body: string;
18
+ };
19
+ /** widget 类型目录里一个模块的声明 */
20
+ export interface WidgetModuleDecl {
21
+ description?: string;
22
+ record?: {
23
+ properties?: Record<string, {
24
+ type?: string;
25
+ description?: string;
26
+ }>;
27
+ required?: string[];
28
+ };
29
+ }
30
+ /** GET /internal/v1/widget-types 回的一个类型 */
31
+ export interface WidgetType {
32
+ id: string;
33
+ description?: string;
34
+ modules?: Record<string, WidgetModuleDecl>;
35
+ }
36
+ export declare const MAX_DATASETS_PER_QUERY = 8;
37
+ export declare const MAX_DATA_ACCESS_RESPONSE_BYTES: number;
38
+ /** 不向模型暴露服务端原文、凭据或临时媒体地址。写入失败不自动重试。 */
39
+ export declare class PlatformRequestError extends Error {
40
+ readonly status?: number;
41
+ constructor(status?: number);
42
+ }
43
+ export declare class MLBClient {
44
+ private readonly base;
45
+ private readonly token;
46
+ private readonly log;
47
+ constructor(options: MLBClientOptions);
48
+ /**
49
+ * GET /internal/v1/messages?convoKey=&after=&limit=。after 为平台消息时间(毫秒),不是 seq。
50
+ * 网络错误与非 2xx 都 throw,交给调用方等下次通知再拉;2xx 原样回响应体:messages 里图片记录带图片内容,hasMore 说这一页之外还有没有;
51
+ * 平台的场合交代是流内 type 为 situation 的记录。
52
+ */
53
+ pullMessages(convoKey: string, after: number, limit?: number): Promise<PullResponse>;
54
+ /**
55
+ * GET /internal/v1/messages?convoKey=&limit=[&before=]:不带 before 取尾窗(最近 limit 条),带 before(消息时间)取更早的一页;
56
+ * 都按时间升序回,hasMore 说这一页最旧那条之前还有没有。重建从尾往回翻用它(readMLBMessages.ts)。网络错误与非 2xx 都 throw
57
+ */
58
+ pullTail(convoKey: string, before: number | undefined, limit?: number): Promise<PullResponse>;
59
+ /**
60
+ * POST /internal/v1/messages { convoKey, messages }。
61
+ * 2xx → delivered;4xx → rejected(带 status 与响应体,调用方丢弃);网络错误 / 5xx → throw(调用方带同一幂等键重发)。
62
+ */
63
+ writeMessages(convoKey: string, messages: MLBMessageToWrite[]): Promise<WriteResult>;
64
+ /** POST /internal/v1/push。只管发,失败(网络错误或非 2xx)只记 warn,不 throw */
65
+ push(convoKey: string, event: "replying", data: {
66
+ on: boolean;
67
+ status?: string;
68
+ }): Promise<void>;
69
+ push(convoKey: string, event: "delta", data: {
70
+ text: string;
71
+ }): Promise<void>;
72
+ /** GET /internal/v1/widget-types → types 数组。非 2xx、网络错误、响应体解析不了都回 [] 并记 warn */
73
+ widgetTypes(): Promise<WidgetType[]>;
74
+ /** POST /internal/v1/widgets { type, title, idempotencyKey?, convoKey }:建一个小挂件,回平台给的 id;同一个 idempotencyKey 重复建回同一个 id */
75
+ widgetCreate(convoKey: string, input: {
76
+ type: string;
77
+ title: string;
78
+ idempotencyKey?: string;
79
+ }, signal?: AbortSignal): Promise<{
80
+ id: string;
81
+ }>;
82
+ /** GET /internal/v1/widgets/:widgetId?convoKey=:整个小挂件,响应体里 modules 是各模块的记录 */
83
+ widgetRead(convoKey: string, widgetId: string, signal?: AbortSignal): Promise<Widget>;
84
+ /** GET /internal/v1/widgets/:widgetId/:module?convoKey=:一个模块的记录,响应体的 records */
85
+ widgetReadModule(convoKey: string, widgetId: string, module: string, signal?: AbortSignal): Promise<{
86
+ records: WidgetRecord[];
87
+ }>;
88
+ /** GET /internal/v1/widgets?convoKey=:这场会话里的小挂件,不带记录,响应体的 widgets;会话键作废时平台回空表 */
89
+ widgetList(convoKey: string): Promise<WidgetSummary[]>;
90
+ /** PUT /internal/v1/widgets/:widgetId { title, convoKey }:改标题,id 不变 */
91
+ widgetRename(convoKey: string, widgetId: string, title: string): Promise<void>;
92
+ /** PUT /internal/v1/widgets/:widgetId/presentation { summary, imageMediaId, convoKey }:聊天流里卡片的摘要与封面图,imageMediaId 传空串去掉封面 */
93
+ widgetSetPresentation(convoKey: string, widgetId: string, input: {
94
+ summary: string;
95
+ imageMediaId: string;
96
+ }): Promise<void>;
97
+ /** DELETE /internal/v1/widgets/:widgetId?convoKey=:删整个小挂件连记录,删不存在的也回 ok */
98
+ widgetDelete(convoKey: string, widgetId: string): Promise<void>;
99
+ /** PUT /internal/v1/widgets/:widgetId/:module/:recordId { data, expectedRevision?, convoKey }:写一条记录,已存在就整条覆盖;带 expectedRevision 而版本对不上时平台回 409 */
100
+ widgetWrite(convoKey: string, widgetId: string, input: {
101
+ module: string;
102
+ recordId: string;
103
+ data: Record<string, unknown>;
104
+ expectedRevision?: number;
105
+ }, signal?: AbortSignal): Promise<{
106
+ revision?: number;
107
+ }>;
108
+ /** DELETE /internal/v1/widgets/:widgetId/:module/:recordId?convoKey=:删一条记录 */
109
+ widgetDeleteRecord(convoKey: string, widgetId: string, module: string, recordId: string, signal?: AbortSignal): Promise<void>;
110
+ /** 小挂件的写操作:响应体的 ok 不是 true 就 throw */
111
+ private widgetMutation;
112
+ /**
113
+ * 小挂件接口共用:没有请求体的把 convoKey 放进 query,有请求体的并进请求体。
114
+ * 非 2xx、网络错误、超时、响应超过 4 MiB、响应体不是 JSON 都 throw PlatformRequestError,只带 HTTP 状态码、不带平台原文;
115
+ * signal 触发时 throw 它的中止原因。写操作不重试。
116
+ */
117
+ private widgetCall;
118
+ /** GET /internal/v1/memory?convoKey= → entries(全量,按 key 字典序)。会话键作废时平台回空表 */
119
+ memoryList(convoKey: string, signal?: AbortSignal): Promise<MemoryEntry[]>;
120
+ /** PUT /internal/v1/memory/:key { convoKey, text }:覆盖写一条(后写赢) */
121
+ memoryWrite(convoKey: string, key: string, text: string, signal?: AbortSignal): Promise<void>;
122
+ /** DELETE /internal/v1/memory/:key?convoKey=:删一条,删不存在的也回 ok */
123
+ memoryDelete(convoKey: string, key: string, signal?: AbortSignal): Promise<void>;
124
+ /**
125
+ * POST /internal/v1/data-access/query:按当前会话读取用户已授权的 Dataset。
126
+ * 私聊不传 memberId;群聊传消息前缀里的稳定 memberId。非 2xx、坏 JSON 或响应缺 datasets 都 throw。
127
+ */
128
+ queryDataAccess(convoKey: string, datasets: string[], memberId?: string, signal?: AbortSignal): Promise<DatasetAccessResult[]>;
129
+ /** GET /internal/v1/data-access/requirements:当前搭子声明的 Dataset;失败由调用方决定是否降级。 */
130
+ dataRequirements(): Promise<DataRequirement[]>;
131
+ claimProactiveRun(runId: string): Promise<ProactiveRun>;
132
+ proposeProactiveSubscription(sessionId: string, request: ProactiveSubscriptionRequest, signal?: AbortSignal): Promise<{
133
+ id: string;
134
+ status: "pending";
135
+ }>;
136
+ queryProactiveData(runId: string, capabilityToken: string, datasets: string[], signal?: AbortSignal): Promise<DatasetAccessResult[]>;
137
+ finishProactiveRun(runId: string, capabilityToken: string, decision: ProactiveDecision | {
138
+ action: "failed";
139
+ reasonCode: string;
140
+ }): Promise<void>;
141
+ /** GET /internal/v1/system-prompt?convoKey=:这场会话的平台 system prompt(私聊与群各一版),拼在开发者的前面。非 2xx、响应体没有 systemPrompt 字符串都 throw */
142
+ systemPrompt(convoKey: string): Promise<string>;
143
+ /** memory 接口共用:2xx 回解析后的响应体;非 2xx throw 平台错误体的 error 字段(超配额、key 不合法都在这);网络错误、超时原样 throw */
144
+ private memoryCall;
145
+ /** 发一个请求并把响应体读完。网络错误、超时直接 throw;HTTP 状态不在这里判 */
146
+ private call;
147
+ }
148
+ export declare class EventStream {
149
+ private readonly includeWelcome;
150
+ private readonly base;
151
+ private readonly token;
152
+ private readonly log;
153
+ private readonly onEvent;
154
+ private run;
155
+ constructor(options: MLBClientOptions & {
156
+ onEvent: (event: BuddyEvent) => void;
157
+ includeWelcome?: boolean;
158
+ });
159
+ /** 连上 GET /internal/v1/events 并一直保持;已经在跑就不重复起。不会 throw,连不上在后台退避重连 */
160
+ start(): void;
161
+ /** 断开当前连接、取消等待中的重连,之后不再连。再调 start() 会重新起一轮 */
162
+ stop(): void;
163
+ /**
164
+ * 连接循环:连上就一直读,读到服务端关流或出错就按退避等一会再连。
165
+ * 退避只针对「连不上」:这次连上过(流打开了)的,不论后来怎么断,下次都从 1 秒重新算——
166
+ * 健康连接被服务端掐掉(网关重启、顶号)不该被当成连不上而越等越久。
167
+ */
168
+ private loop;
169
+ /** 连一次并读到流结束。流一打开就把 attempt.opened 置真;非 2xx、网络错误、被 abort 都 throw */
170
+ private connectOnce;
171
+ /**
172
+ * 解一帧:取 event: 与 data: 行(多行 data 用 \n 拼),其余字段和 : 开头的注释行不管。
173
+ * 没有 data 的帧不算事件;ping / welcome / data-access 丢掉;只把 message / delete 分发出去,且 convoKey 必须合法。
174
+ */
175
+ private handleFrame;
176
+ }
2
177
  //# sourceMappingURL=mlbClient.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"mlbClient.d.ts","sourceRoot":"","sources":["../src/mlbClient.ts"],"names":[],"mappings":"AACA,cAAc,yBAAyB,CAAC"}
1
+ {"version":3,"file":"mlbClient.d.ts","sourceRoot":"","sources":["../src/mlbClient.ts"],"names":[],"mappings":"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"}