@my-life-buddies/buddy-runtime 0.3.0 → 0.4.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 +181 -181
- package/dist/conversation/agent.d.ts +3 -4
- package/dist/conversation/agent.d.ts.map +1 -1
- package/dist/conversation/agent.js +36 -20
- package/dist/conversation/agent.js.map +1 -1
- package/dist/conversation/agentMessageLLMMessageConverter.d.ts +3 -2
- package/dist/conversation/agentMessageLLMMessageConverter.d.ts.map +1 -1
- package/dist/conversation/agentMessageLLMMessageConverter.js +5 -14
- package/dist/conversation/agentMessageLLMMessageConverter.js.map +1 -1
- package/dist/conversation/index.d.ts +0 -2
- package/dist/conversation/index.d.ts.map +1 -1
- package/dist/conversation/index.js +13 -36
- package/dist/conversation/index.js.map +1 -1
- package/dist/conversation/mlbMessageAgentMessageConverter.d.ts +3 -2
- package/dist/conversation/mlbMessageAgentMessageConverter.d.ts.map +1 -1
- package/dist/conversation/mlbMessageAgentMessageConverter.js +13 -9
- package/dist/conversation/mlbMessageAgentMessageConverter.js.map +1 -1
- package/dist/conversation/writeMLBMessage.d.ts +1 -1
- package/dist/conversation/writeMLBMessage.d.ts.map +1 -1
- package/dist/conversation/writeMLBMessage.js +2 -2
- package/dist/conversation/writeMLBMessage.js.map +1 -1
- package/dist/index.d.ts +0 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +0 -2
- package/dist/index.js.map +1 -1
- package/dist/platform/mlbClient.d.ts +33 -18
- package/dist/platform/mlbClient.d.ts.map +1 -1
- package/dist/platform/mlbClient.js +60 -32
- package/dist/platform/mlbClient.js.map +1 -1
- package/dist/tools/dataAccess.d.ts +1 -1
- package/dist/tools/dataAccess.d.ts.map +1 -1
- package/dist/tools/dataAccess.js +2 -2
- package/dist/tools/dataAccess.js.map +1 -1
- package/dist/tools/widgets.d.ts +4 -4
- package/dist/tools/widgets.d.ts.map +1 -1
- package/dist/tools/widgets.js +13 -11
- package/dist/tools/widgets.js.map +1 -1
- package/dist/types.d.ts +39 -9
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
- package/dist/platform/client.d.ts +0 -48
- package/dist/platform/client.d.ts.map +0 -1
- package/dist/platform/client.js +0 -24
- package/dist/platform/client.js.map +0 -1
- package/dist/platform/widgets.d.ts +0 -75
- package/dist/platform/widgets.d.ts.map +0 -1
- package/dist/platform/widgets.js +0 -88
- package/dist/platform/widgets.js.map +0 -1
package/dist/tools/widgets.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// 小挂件工具:把平台的小挂件接口包成五个 pi AgentTool,交给模型在会话里建面板、写记录、读记录、删记录、把小挂件发进聊天流。
|
|
2
|
-
// 管:五个工具的名字与 label(固定,人设按名字叫它们)、参数 schema(typebox)、description
|
|
3
|
-
//
|
|
4
|
-
// 不管:HTTP 请求本身(platform
|
|
2
|
+
// 管:五个工具的名字与 label(固定,人设按名字叫它们)、参数 schema(typebox)、description 里把小挂件类型目录渲染成人话;
|
|
3
|
+
// 前四个调 MLBClient 的小挂件接口,widget_send 把小挂件引用放进这场会话的发送队列;失败抛给 pi 标为错误,不能伪报成功。
|
|
4
|
+
// 不管:HTTP 请求本身(platform/mlbClient.ts)、类型目录从哪拉(server.ts 懒拉一次)、什么时候把工具装进 Agent(conversation/agent.ts)。
|
|
5
5
|
import { Type } from "typebox";
|
|
6
6
|
/** JSON Schema 的 type 值 → 目录里给模型看的中文类型词 */
|
|
7
7
|
const TYPE_WORDS = {
|
|
@@ -109,9 +109,9 @@ const sendParams = Type.Object({
|
|
|
109
109
|
});
|
|
110
110
|
/**
|
|
111
111
|
* 给一场会话造五个小挂件工具。types 为空说明平台没开放任何小挂件类型,回 [],模型就见不到这些工具。
|
|
112
|
-
* 五个工具都绑死在这场会话的 convoKey
|
|
112
|
+
* 五个工具都绑死在这场会话的 convoKey 上,跨会话看不见对方的小挂件;enqueueMessage 是这场会话的发送队列。
|
|
113
113
|
*/
|
|
114
|
-
export function widgetTools(client, types) {
|
|
114
|
+
export function widgetTools(client, convoKey, types, enqueueMessage) {
|
|
115
115
|
if (types.length === 0)
|
|
116
116
|
return [];
|
|
117
117
|
const catalog = renderCatalog(types);
|
|
@@ -122,7 +122,7 @@ export function widgetTools(client, types) {
|
|
|
122
122
|
`你能建的类型:\n${catalog}`,
|
|
123
123
|
parameters: createParams,
|
|
124
124
|
execute: async (callId, params, signal) => {
|
|
125
|
-
const { id } = await client.
|
|
125
|
+
const { id } = await client.widgetCreate(convoKey, { ...params, idempotencyKey: `widget-create:${callId}` }, signal);
|
|
126
126
|
return text(`建好了,小挂件 id 是 ${id}。后续使用当前可用的工具写入内容并发送引用;这里只确认创建。`);
|
|
127
127
|
},
|
|
128
128
|
};
|
|
@@ -133,7 +133,8 @@ export function widgetTools(client, types) {
|
|
|
133
133
|
`各类型的模块与字段:\n${catalog}`,
|
|
134
134
|
parameters: writeParams,
|
|
135
135
|
execute: async (_id, params, signal) => {
|
|
136
|
-
const {
|
|
136
|
+
const { widgetId, module, recordId, expectedRevision } = params;
|
|
137
|
+
const { revision } = await client.widgetWrite(convoKey, widgetId, { module, recordId, data: params.data, expectedRevision }, signal);
|
|
137
138
|
return text(`写好了:${params.module}/${params.recordId}${revision === undefined ? "" : `(revision ${String(revision)})`}`);
|
|
138
139
|
},
|
|
139
140
|
};
|
|
@@ -144,8 +145,8 @@ export function widgetTools(client, types) {
|
|
|
144
145
|
parameters: readParams,
|
|
145
146
|
execute: async (_id, params, signal) => {
|
|
146
147
|
if (params.module === undefined)
|
|
147
|
-
return text(renderWidget(await client.
|
|
148
|
-
const body = await client.
|
|
148
|
+
return text(renderWidget(await client.widgetRead(convoKey, params.widgetId, signal)));
|
|
149
|
+
const body = await client.widgetReadModule(convoKey, params.widgetId, params.module, signal);
|
|
149
150
|
return text(renderRecords(params.module, body.records).join("\n"));
|
|
150
151
|
},
|
|
151
152
|
};
|
|
@@ -155,7 +156,7 @@ export function widgetTools(client, types) {
|
|
|
155
156
|
description: "删掉小挂件某个模块里的一条记录。删的是记录,不是整个小挂件。",
|
|
156
157
|
parameters: deleteParams,
|
|
157
158
|
execute: async (_id, params, signal) => {
|
|
158
|
-
await client.
|
|
159
|
+
await client.widgetDeleteRecord(convoKey, params.widgetId, params.module, params.recordId, signal);
|
|
159
160
|
return text(`删掉了:${params.module}/${params.recordId}`);
|
|
160
161
|
},
|
|
161
162
|
};
|
|
@@ -165,7 +166,8 @@ export function widgetTools(client, types) {
|
|
|
165
166
|
description: "把一个建好的小挂件发进聊天流,用户点开就能看。内容改了不用重发,用户点开看到的就是最新的;同一个小挂件也可以再发一次。",
|
|
166
167
|
parameters: sendParams,
|
|
167
168
|
execute: async (callId, params, signal) => {
|
|
168
|
-
|
|
169
|
+
signal?.throwIfAborted();
|
|
170
|
+
enqueueMessage({ type: "widget", widget: { id: params.widgetId }, idempotencyKey: `widget-send:${callId}` });
|
|
169
171
|
return text("小挂件引用已加入发送队列,尚不代表平台确认送达。");
|
|
170
172
|
},
|
|
171
173
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"widgets.js","sourceRoot":"","sources":["../../src/tools/widgets.ts"],"names":[],"mappings":"AAAA,sEAAsE;AACtE,+EAA+E;AAC/E
|
|
1
|
+
{"version":3,"file":"widgets.js","sourceRoot":"","sources":["../../src/tools/widgets.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -1,10 +1,16 @@
|
|
|
1
|
-
import type { PlatformClient } from "./platform/client.ts";
|
|
2
1
|
import type { PlatformToolName } from "./tools/registry.ts";
|
|
3
2
|
import type { AgentMessage, AgentOptions, AgentState } from "@earendil-works/pi-agent-core";
|
|
4
3
|
/** 一个搭子在一场会话里的配置。形状照 pi 的 Agent 来。 */
|
|
5
4
|
export type BuddyOptions = Pick<AgentOptions, "beforeToolCall" | "afterToolCall" | "shouldStopAfterTurn" | "prepareNextTurnWithContext" | "thinkingBudgets" | "toolExecution"> & {
|
|
6
|
-
/** 显式选择给模型开放的平台工具;默认 []
|
|
5
|
+
/** 显式选择给模型开放的平台工具;默认 []。不影响开发者在代码里调用 conversation.memory / conversation.dataAccess / conversation.proactive。 */
|
|
7
6
|
platformTools?: readonly PlatformToolName[];
|
|
7
|
+
/**
|
|
8
|
+
* 主动服务回合里还能用哪些工具;默认 [](一个都不给)。取值是这场会话真注册上的工具名——
|
|
9
|
+
* platformTools 选中的那些 + initialState.tools 里开发者自己的;写了没注册的名字直接 throw。
|
|
10
|
+
* 主动回合用户不在场,所以默认不信任任何工具,要用就显式点名。
|
|
11
|
+
* 实现上不换 Agent 的工具清单(换它会让整条请求前缀的缓存失效),是在工具执行前拦掉没点名的。
|
|
12
|
+
*/
|
|
13
|
+
proactiveTools?: readonly string[];
|
|
8
14
|
/** systemPrompt 必填;tools / thinkingLevel 可选。model / messages 不露——模型在 BuddyServer.start 的 model 里按 id 选、历史从平台灌 */
|
|
9
15
|
initialState: Pick<AgentState, "systemPrompt"> & Partial<Pick<AgentState, "tools" | "thinkingLevel">>;
|
|
10
16
|
};
|
|
@@ -12,15 +18,33 @@ export type BuddyOptions = Pick<AgentOptions, "beforeToolCall" | "afterToolCall"
|
|
|
12
18
|
export type BuddyFactory = (conversation: Conversation) => BuddyOptions | Promise<BuddyOptions>;
|
|
13
19
|
/** 一场会话。工厂和工具闭包都拿得到。 */
|
|
14
20
|
export interface Conversation {
|
|
15
|
-
/** 会话退役时取消工具中尚未完成的请求。 */
|
|
16
|
-
readonly signal: AbortSignal;
|
|
17
|
-
/** 当前会话绑定的平台能力;Client 不包含任何应用领域规则。 */
|
|
18
|
-
readonly platform: PlatformClient;
|
|
19
21
|
/** 平台的会话键:私聊 p_ 前缀、群 g_ 前缀。两场会话之间不该看得见对方 */
|
|
20
22
|
readonly key: string;
|
|
21
23
|
/** 行首带搭子 id */
|
|
22
24
|
readonly log: BuddyLogger;
|
|
23
|
-
/**
|
|
25
|
+
/**
|
|
26
|
+
* 这场会话的记忆:搭子写给自己的长期印象,平台只存不读,按会话隔离,会话删除后读写不到。会话键已经绑好,调的时候不用传。
|
|
27
|
+
* 失败(超配额、key 不合法、网络错误)直接 throw,文案是平台给的原因。主动服务回合里调 write / delete 直接 throw。
|
|
28
|
+
*/
|
|
29
|
+
readonly memory: {
|
|
30
|
+
/** 全量列出,按 key 字典序。GET /internal/v1/memory */
|
|
31
|
+
list(): Promise<MemoryEntry[]>;
|
|
32
|
+
/** 覆盖写一条。key 是主题名:非空、不含空白与 /、≤64 字;text 单条 ≤16KB;每会话 ≤64 条、合计 ≤256KB。PUT /internal/v1/memory/:key */
|
|
33
|
+
write(key: string, text: string): Promise<void>;
|
|
34
|
+
/** 删一条,删不存在的也算成功。DELETE /internal/v1/memory/:key */
|
|
35
|
+
delete(key: string): Promise<void>;
|
|
36
|
+
};
|
|
37
|
+
/**
|
|
38
|
+
* 用户授权数据。会话键已经绑好:私聊只传 datasets,群聊还要传消息前缀里的稳定 memberId。
|
|
39
|
+
* 平台按搭子声明、用户 Grant、群开关和 Snapshot 有效期逐项判定;搭子拿不到真实用户 ID。POST /internal/v1/data-access/query
|
|
40
|
+
*/
|
|
41
|
+
readonly dataAccess: {
|
|
42
|
+
query(request: DataAccessQuery): Promise<DatasetAccessResult[]>;
|
|
43
|
+
};
|
|
44
|
+
/**
|
|
45
|
+
* 向平台提一条主动服务订阅建议:POST /internal/v1/proactive/subscriptions。平台回的订阅一律是 pending,用户在 App 里确认后才会触发。
|
|
46
|
+
* 主动服务回合里调直接 throw。
|
|
47
|
+
*/
|
|
24
48
|
readonly proactive: {
|
|
25
49
|
propose(request: ProactiveSubscriptionRequest): Promise<{
|
|
26
50
|
id: string;
|
|
@@ -154,7 +178,7 @@ export interface MLBImage {
|
|
|
154
178
|
export interface MLBMessage {
|
|
155
179
|
/** 平台消息的稳定 ID。换算图片记录时给图片打标记,引用靠它对上是历史里哪一张;不用时间戳代替 */
|
|
156
180
|
id: string;
|
|
157
|
-
/** message / checkin / image / tool / question / note / widget / messagesCard / system / context */
|
|
181
|
+
/** message / checkin / image / tool / question / note / proactive / widget / messagesCard / system / context */
|
|
158
182
|
type: string;
|
|
159
183
|
/** user / buddy / platform */
|
|
160
184
|
author: string;
|
|
@@ -182,6 +206,9 @@ export interface MLBMessage {
|
|
|
182
206
|
thinking?: string;
|
|
183
207
|
/** 半截话,重建跳过 */
|
|
184
208
|
interrupted?: boolean;
|
|
209
|
+
/** 这条产生于主动服务回合(type "proactive" 的两条本身整类如此,这个标记是给同一轮的 tool 记录用的):
|
|
210
|
+
* 平台 ② 出口整条不下发,用户看不见 */
|
|
211
|
+
proactive?: boolean;
|
|
185
212
|
/** 引用块:被引消息的 id、发言人名、原文前 120 字;引用的是图片消息时带 image(不带图片内容) */
|
|
186
213
|
quote?: {
|
|
187
214
|
id?: string;
|
|
@@ -208,7 +235,7 @@ export interface MLBToolCall {
|
|
|
208
235
|
arguments?: unknown;
|
|
209
236
|
result?: string;
|
|
210
237
|
}
|
|
211
|
-
/** 写口每条:type 只能是 message / checkin / tool / question / widget / note */
|
|
238
|
+
/** 写口每条:type 只能是 message / checkin / tool / question / widget / note;proactive 是平台自己落的,搭子写不了 */
|
|
212
239
|
export interface MLBMessageToWrite {
|
|
213
240
|
type: "message" | "tool" | "note" | "widget";
|
|
214
241
|
text?: string;
|
|
@@ -219,6 +246,9 @@ export interface MLBMessageToWrite {
|
|
|
219
246
|
id: string;
|
|
220
247
|
};
|
|
221
248
|
idempotencyKey?: string;
|
|
249
|
+
/** 这条产生于主动服务回合:平台 ② 出口整条不下发,用户看不见。
|
|
250
|
+
* type "proactive" 的两条记录本身整类不下发,这个标记是给同一轮里的 tool 记录用的 */
|
|
251
|
+
proactive?: boolean;
|
|
222
252
|
}
|
|
223
253
|
/** 读口响应。平台的场合交代是其中 type 为 context 的记录,不单独成字段 */
|
|
224
254
|
export interface PullResponse {
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
import type { DataAccessQuery, DatasetAccessResult, MemoryEntry, MLBMessageToWrite, ProactiveSubscriptionRequest } from "../types.ts";
|
|
2
|
-
import type { MLBClient } from "./mlbClient.ts";
|
|
3
|
-
import { WidgetClient } from "./widgets.ts";
|
|
4
|
-
/** 应用拿到的是已绑定当前会话的能力,不接触平台 Token,也不重复实现 HTTP。 */
|
|
5
|
-
export interface PlatformClient {
|
|
6
|
-
readonly widgets: WidgetClient;
|
|
7
|
-
readonly messages: {
|
|
8
|
-
send(message: MLBMessageToWrite & {
|
|
9
|
-
idempotencyKey: string;
|
|
10
|
-
}): void;
|
|
11
|
-
};
|
|
12
|
-
/**
|
|
13
|
-
* 这场会话的记忆:搭子写给自己的长期印象,平台只存不读,按会话隔离,会话删除后读写不到。
|
|
14
|
-
* 失败(超配额、key 不合法、网络错误)直接 throw,文案是平台给的原因。
|
|
15
|
-
*/
|
|
16
|
-
readonly memory: {
|
|
17
|
-
/** 全量列出,按 key 字典序。GET /internal/v1/memory */
|
|
18
|
-
list(): Promise<MemoryEntry[]>;
|
|
19
|
-
/** 覆盖写一条。key 是主题名:非空、不含空白与 /、≤64 字;text 单条 ≤16KB;每会话 ≤64 条、合计 ≤256KB。PUT /internal/v1/memory/:key */
|
|
20
|
-
write(key: string, text: string): Promise<void>;
|
|
21
|
-
/** 删一条,删不存在的也算成功。DELETE /internal/v1/memory/:key */
|
|
22
|
-
delete(key: string): Promise<void>;
|
|
23
|
-
};
|
|
24
|
-
/**
|
|
25
|
-
* 用户授权数据:私聊只传 datasets,群聊还要传消息前缀里的稳定 memberId。
|
|
26
|
-
* 平台按搭子声明、用户 Grant、群开关和 Snapshot 有效期逐项判定;搭子拿不到真实用户 ID。
|
|
27
|
-
*/
|
|
28
|
-
readonly dataAccess: {
|
|
29
|
-
query(request: DataAccessQuery): Promise<DatasetAccessResult[]>;
|
|
30
|
-
};
|
|
31
|
-
readonly proactive: {
|
|
32
|
-
propose(request: ProactiveSubscriptionRequest): Promise<{
|
|
33
|
-
id: string;
|
|
34
|
-
status: "pending";
|
|
35
|
-
}>;
|
|
36
|
-
};
|
|
37
|
-
}
|
|
38
|
-
export declare function createPlatformClient(options: {
|
|
39
|
-
client: MLBClient;
|
|
40
|
-
key: string;
|
|
41
|
-
signal: AbortSignal;
|
|
42
|
-
enqueueMessage: (message: MLBMessageToWrite) => void;
|
|
43
|
-
/** 注入敏感数据使用追踪;不是绕过 DataAccess 校验的另一条读口。 */
|
|
44
|
-
queryDataAccess: (request: DataAccessQuery) => Promise<DatasetAccessResult[]>;
|
|
45
|
-
/** 主动执行作用域不允许复用普通 Client 发起写操作。 */
|
|
46
|
-
assertWritable?: () => void;
|
|
47
|
-
}): PlatformClient;
|
|
48
|
-
//# sourceMappingURL=client.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/platform/client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,mBAAmB,EAAE,WAAW,EAAE,iBAAiB,EAAE,4BAA4B,EAAE,MAAM,aAAa,CAAC;AACtI,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAE5C,gDAAgD;AAChD,MAAM,WAAW,cAAc;IAC9B,QAAQ,CAAC,OAAO,EAAE,YAAY,CAAC;IAC/B,QAAQ,CAAC,QAAQ,EAAE;QAAE,IAAI,CAAC,OAAO,EAAE,iBAAiB,GAAG;YAAE,cAAc,EAAE,MAAM,CAAA;SAAE,GAAG,IAAI,CAAA;KAAE,CAAC;IAC3F;;;OAGG;IACH,QAAQ,CAAC,MAAM,EAAE;QAChB,6CAA6C;QAC7C,IAAI,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;QAC/B,qGAAqG;QACrG,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;QAChD,oDAAoD;QACpD,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;KACnC,CAAC;IACF;;;OAGG;IACH,QAAQ,CAAC,UAAU,EAAE;QAAE,KAAK,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAAA;KAAE,CAAC;IACzF,QAAQ,CAAC,SAAS,EAAE;QAAE,OAAO,CAAC,OAAO,EAAE,4BAA4B,GAAG,OAAO,CAAC;YAAE,EAAE,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,SAAS,CAAA;SAAE,CAAC,CAAA;KAAE,CAAC;CACnH;AAED,wBAAgB,oBAAoB,CAAC,OAAO,EAAE;IAC7C,MAAM,EAAE,SAAS,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,WAAW,CAAC;IACpD,cAAc,EAAE,CAAC,OAAO,EAAE,iBAAiB,KAAK,IAAI,CAAC;IACrD,2CAA2C;IAC3C,eAAe,EAAE,CAAC,OAAO,EAAE,eAAe,KAAK,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAAC;IAC9E,mCAAmC;IACnC,cAAc,CAAC,EAAE,MAAM,IAAI,CAAC;CAC5B,GAAG,cAAc,CAoBjB"}
|
package/dist/platform/client.js
DELETED
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
import { WidgetClient } from "./widgets.js";
|
|
2
|
-
export function createPlatformClient(options) {
|
|
3
|
-
const { client, key, signal } = options;
|
|
4
|
-
const send = (message) => {
|
|
5
|
-
signal.throwIfAborted();
|
|
6
|
-
options.assertWritable?.();
|
|
7
|
-
if (!message.idempotencyKey)
|
|
8
|
-
throw new Error("消息幂等键不能为空");
|
|
9
|
-
options.enqueueMessage(message);
|
|
10
|
-
};
|
|
11
|
-
let widgets;
|
|
12
|
-
return {
|
|
13
|
-
get widgets() { return widgets ??= client.widgets(key, { signal, enqueueMessage: send, assertWritable: options.assertWritable }); },
|
|
14
|
-
messages: { send },
|
|
15
|
-
memory: {
|
|
16
|
-
list: () => client.memoryList(key, signal),
|
|
17
|
-
write: (name, text) => { options.assertWritable?.(); return client.memoryWrite(key, name, text, signal); },
|
|
18
|
-
delete: name => { options.assertWritable?.(); return client.memoryDelete(key, name, signal); },
|
|
19
|
-
},
|
|
20
|
-
dataAccess: { query: async (request) => { signal.throwIfAborted(); const result = await options.queryDataAccess(request); signal.throwIfAborted(); return result; } },
|
|
21
|
-
proactive: { propose: request => { signal.throwIfAborted(); options.assertWritable?.(); return client.proposeProactiveSubscription(key, request, signal); } },
|
|
22
|
-
};
|
|
23
|
-
}
|
|
24
|
-
//# sourceMappingURL=client.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/platform/client.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AA0B5C,MAAM,UAAU,oBAAoB,CAAC,OAOpC;IACA,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;IACxC,MAAM,IAAI,GAAG,CAAC,OAAuD,EAAQ,EAAE;QAC9E,MAAM,CAAC,cAAc,EAAE,CAAC;QACxB,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC;QAC3B,IAAI,CAAC,OAAO,CAAC,cAAc;YAAE,MAAM,IAAI,KAAK,CAAC,WAAW,CAAC,CAAC;QAC1D,OAAO,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;IACjC,CAAC,CAAC;IACF,IAAI,OAAiC,CAAC;IACtC,OAAO;QACN,IAAI,OAAO,KAAK,OAAO,OAAO,KAAK,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,cAAc,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,CAAC;QACnI,QAAQ,EAAE,EAAE,IAAI,EAAE;QAClB,MAAM,EAAE;YACP,IAAI,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,MAAM,CAAC;YAC1C,KAAK,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,GAAG,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC,OAAO,MAAM,CAAC,WAAW,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;YAC1G,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC,OAAO,MAAM,CAAC,YAAY,CAAC,GAAG,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;SAC9F;QACD,UAAU,EAAE,EAAE,KAAK,EAAE,KAAK,EAAC,OAAO,EAAC,EAAE,GAAG,MAAM,CAAC,cAAc,EAAE,CAAC,CAAC,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC,CAAC,OAAO,MAAM,CAAC,CAAC,CAAC,EAAE;QACnK,SAAS,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,GAAG,MAAM,CAAC,cAAc,EAAE,CAAC,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC,OAAO,MAAM,CAAC,4BAA4B,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE;KAC7J,CAAC;AACH,CAAC"}
|
|
@@ -1,75 +0,0 @@
|
|
|
1
|
-
import type { MLBMessageToWrite } from "../types.ts";
|
|
2
|
-
export interface RequestOptions {
|
|
3
|
-
signal?: AbortSignal;
|
|
4
|
-
}
|
|
5
|
-
export type PlatformRequest = <T>(method: string, path: string, body?: unknown, options?: RequestOptions) => Promise<T>;
|
|
6
|
-
export interface WidgetSummary {
|
|
7
|
-
id: string;
|
|
8
|
-
type: string;
|
|
9
|
-
title: string;
|
|
10
|
-
updatedAt?: number;
|
|
11
|
-
}
|
|
12
|
-
export interface WidgetRecord<T = Record<string, unknown>> {
|
|
13
|
-
id: string;
|
|
14
|
-
data: T;
|
|
15
|
-
revision: number;
|
|
16
|
-
}
|
|
17
|
-
export interface Widget<T = Record<string, unknown>> extends WidgetSummary {
|
|
18
|
-
modules: Record<string, WidgetRecord<T>[]>;
|
|
19
|
-
}
|
|
20
|
-
export interface WidgetWriteResult {
|
|
21
|
-
ok: boolean;
|
|
22
|
-
revision?: number;
|
|
23
|
-
}
|
|
24
|
-
export interface WidgetCreateInput {
|
|
25
|
-
type: string;
|
|
26
|
-
title: string;
|
|
27
|
-
idempotencyKey?: string;
|
|
28
|
-
}
|
|
29
|
-
export interface WidgetWriteInput {
|
|
30
|
-
module: string;
|
|
31
|
-
recordId: string;
|
|
32
|
-
data: Record<string, unknown>;
|
|
33
|
-
expectedRevision?: number;
|
|
34
|
-
}
|
|
35
|
-
export interface WidgetPresentation {
|
|
36
|
-
summary: string;
|
|
37
|
-
imageMediaId: string;
|
|
38
|
-
}
|
|
39
|
-
export interface WidgetClientOptions {
|
|
40
|
-
convoKey: string;
|
|
41
|
-
request: PlatformRequest;
|
|
42
|
-
signal?: AbortSignal;
|
|
43
|
-
/** 注入 Runtime 的可靠消息队列;Client 不自行另开消息发送通道。 */
|
|
44
|
-
enqueueMessage?: (message: MLBMessageToWrite & {
|
|
45
|
-
idempotencyKey: string;
|
|
46
|
-
}) => void;
|
|
47
|
-
assertWritable?: () => void;
|
|
48
|
-
}
|
|
49
|
-
export declare class WidgetClient {
|
|
50
|
-
private readonly options;
|
|
51
|
-
constructor(options: WidgetClientOptions);
|
|
52
|
-
/** 派生本次操作的取消范围,保留原会话取消信号。 */
|
|
53
|
-
withSignal(signal?: AbortSignal): WidgetClient;
|
|
54
|
-
private signal;
|
|
55
|
-
private call;
|
|
56
|
-
list(options?: RequestOptions): Promise<WidgetSummary[]>;
|
|
57
|
-
create(input: WidgetCreateInput, options?: RequestOptions): Promise<{
|
|
58
|
-
id: string;
|
|
59
|
-
}>;
|
|
60
|
-
read<T = Record<string, unknown>>(id: string, options?: RequestOptions): Promise<Widget<T>>;
|
|
61
|
-
readModule<T = Record<string, unknown>>(id: string, module: string, options?: RequestOptions): Promise<{
|
|
62
|
-
records: WidgetRecord<T>[];
|
|
63
|
-
}>;
|
|
64
|
-
private mutation;
|
|
65
|
-
rename(id: string, title: string, options?: RequestOptions): Promise<WidgetWriteResult>;
|
|
66
|
-
write(id: string, input: WidgetWriteInput, options?: RequestOptions): Promise<WidgetWriteResult>;
|
|
67
|
-
deleteRecord(id: string, module: string, recordId: string, options?: RequestOptions): Promise<WidgetWriteResult>;
|
|
68
|
-
setPresentation(id: string, input: WidgetPresentation, options?: RequestOptions): Promise<WidgetWriteResult>;
|
|
69
|
-
/** 入队,不等同于平台已确认送达;复用 Runtime 的幂等/重试/恢复机制。 */
|
|
70
|
-
send(id: string, options: {
|
|
71
|
-
idempotencyKey: string;
|
|
72
|
-
signal?: AbortSignal;
|
|
73
|
-
}): void;
|
|
74
|
-
}
|
|
75
|
-
//# sourceMappingURL=widgets.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"widgets.d.ts","sourceRoot":"","sources":["../../src/platform/widgets.ts"],"names":[],"mappings":"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"}
|
package/dist/platform/widgets.js
DELETED
|
@@ -1,88 +0,0 @@
|
|
|
1
|
-
function segment(value) {
|
|
2
|
-
if (typeof value !== "string" || !value || value === "." || value === "..")
|
|
3
|
-
throw new Error("Widget 标识无效");
|
|
4
|
-
return encodeURIComponent(value);
|
|
5
|
-
}
|
|
6
|
-
export class WidgetClient {
|
|
7
|
-
options;
|
|
8
|
-
constructor(options) {
|
|
9
|
-
if (!/^[pg]_[0-9a-f]{24}$/.test(options.convoKey))
|
|
10
|
-
throw new Error("会话键无效");
|
|
11
|
-
this.options = { ...options };
|
|
12
|
-
}
|
|
13
|
-
/** 派生本次操作的取消范围,保留原会话取消信号。 */
|
|
14
|
-
withSignal(signal) {
|
|
15
|
-
return new WidgetClient({ ...this.options, signal: this.signal(signal) });
|
|
16
|
-
}
|
|
17
|
-
signal(signal) {
|
|
18
|
-
return AbortSignal.any([...(this.options.signal ? [this.options.signal] : []), ...(signal ? [signal] : [])]);
|
|
19
|
-
}
|
|
20
|
-
async call(method, path, body, options) {
|
|
21
|
-
const signal = this.signal(options?.signal);
|
|
22
|
-
signal.throwIfAborted();
|
|
23
|
-
if (method !== "GET")
|
|
24
|
-
this.options.assertWritable?.();
|
|
25
|
-
const scope = { convoKey: this.options.convoKey };
|
|
26
|
-
const result = await this.options.request(method, body === undefined ? `${path}?${new URLSearchParams(scope)}` : path, body === undefined ? undefined : { ...body, ...scope }, { signal });
|
|
27
|
-
signal.throwIfAborted();
|
|
28
|
-
return result;
|
|
29
|
-
}
|
|
30
|
-
async list(options) {
|
|
31
|
-
const body = await this.call("GET", "/widgets", undefined, options);
|
|
32
|
-
if (!Array.isArray(body?.widgets))
|
|
33
|
-
throw new Error("Widget 列表响应无效");
|
|
34
|
-
return body.widgets;
|
|
35
|
-
}
|
|
36
|
-
async create(input, options) {
|
|
37
|
-
const result = await this.call("POST", "/widgets", {
|
|
38
|
-
type: input.type, title: input.title, ...(input.idempotencyKey ? { idempotencyKey: input.idempotencyKey } : {}),
|
|
39
|
-
}, options);
|
|
40
|
-
if (typeof result?.id !== "string" || !result.id)
|
|
41
|
-
throw new Error("Widget 未创建:会话无效或响应缺少 id");
|
|
42
|
-
return result;
|
|
43
|
-
}
|
|
44
|
-
read(id, options) {
|
|
45
|
-
return this.call("GET", `/widgets/${segment(id)}`, undefined, options).then(widget => {
|
|
46
|
-
if (!widget || widget.id !== id || typeof widget.type !== "string" || !widget.modules || typeof widget.modules !== "object" || Array.isArray(widget.modules))
|
|
47
|
-
throw new Error("Widget 读取响应无效");
|
|
48
|
-
return widget;
|
|
49
|
-
});
|
|
50
|
-
}
|
|
51
|
-
readModule(id, module, options) {
|
|
52
|
-
return this.call("GET", `/widgets/${segment(id)}/${segment(module)}`, undefined, options).then(body => {
|
|
53
|
-
if (!Array.isArray(body?.records))
|
|
54
|
-
throw new Error("Widget 模块响应无效");
|
|
55
|
-
return body;
|
|
56
|
-
});
|
|
57
|
-
}
|
|
58
|
-
async mutation(method, path, body, options) {
|
|
59
|
-
const result = await this.call(method, path, body, options);
|
|
60
|
-
if (result?.ok !== true)
|
|
61
|
-
throw new Error("Widget 操作未被平台确认");
|
|
62
|
-
return result;
|
|
63
|
-
}
|
|
64
|
-
rename(id, title, options) {
|
|
65
|
-
return this.mutation("PUT", `/widgets/${segment(id)}`, { title }, options);
|
|
66
|
-
}
|
|
67
|
-
write(id, input, options) {
|
|
68
|
-
return this.mutation("PUT", `/widgets/${segment(id)}/${segment(input.module)}/${segment(input.recordId)}`, {
|
|
69
|
-
data: input.data, ...(input.expectedRevision === undefined ? {} : { expectedRevision: input.expectedRevision }),
|
|
70
|
-
}, options);
|
|
71
|
-
}
|
|
72
|
-
deleteRecord(id, module, recordId, options) {
|
|
73
|
-
return this.mutation("DELETE", `/widgets/${segment(id)}/${segment(module)}/${segment(recordId)}`, undefined, options);
|
|
74
|
-
}
|
|
75
|
-
setPresentation(id, input, options) {
|
|
76
|
-
return this.mutation("PUT", `/widgets/${segment(id)}/presentation`, { summary: input.summary, imageMediaId: input.imageMediaId }, options);
|
|
77
|
-
}
|
|
78
|
-
/** 入队,不等同于平台已确认送达;复用 Runtime 的幂等/重试/恢复机制。 */
|
|
79
|
-
send(id, options) {
|
|
80
|
-
this.signal(options.signal).throwIfAborted();
|
|
81
|
-
this.options.assertWritable?.();
|
|
82
|
-
segment(id);
|
|
83
|
-
if (!options.idempotencyKey || !this.options.enqueueMessage)
|
|
84
|
-
throw new Error("缺少 Widget 发送队列或幂等键");
|
|
85
|
-
this.options.enqueueMessage({ type: "widget", widget: { id }, idempotencyKey: options.idempotencyKey });
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
//# sourceMappingURL=widgets.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"widgets.js","sourceRoot":"","sources":["../../src/platform/widgets.ts"],"names":[],"mappings":"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"}
|