@my-life-buddies/buddy-runtime 0.8.0 → 0.10.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 +242 -111
- package/dist/conversation/agent.d.ts +14 -6
- package/dist/conversation/agent.d.ts.map +1 -1
- package/dist/conversation/agent.js +121 -64
- package/dist/conversation/agent.js.map +1 -1
- package/dist/conversation/compaction.d.ts +2 -2
- package/dist/conversation/compaction.d.ts.map +1 -1
- package/dist/conversation/compaction.js +1 -1
- package/dist/conversation/compaction.js.map +1 -1
- package/dist/conversation/index.d.ts +14 -12
- package/dist/conversation/index.d.ts.map +1 -1
- package/dist/conversation/index.js +23 -22
- package/dist/conversation/index.js.map +1 -1
- package/dist/conversation/mlbMessageAgentMessageConverter.d.ts +1 -1
- package/dist/conversation/mlbMessageAgentMessageConverter.d.ts.map +1 -1
- package/dist/conversation/mlbMessageAgentMessageConverter.js +3 -2
- package/dist/conversation/mlbMessageAgentMessageConverter.js.map +1 -1
- package/dist/dataAccessCatalog.d.ts +56 -0
- package/dist/dataAccessCatalog.d.ts.map +1 -0
- package/dist/dataAccessCatalog.js +18 -0
- package/dist/dataAccessCatalog.js.map +1 -0
- package/dist/index.d.ts +5 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/mlbClient.d.ts +6 -6
- package/dist/mlbClient.d.ts.map +1 -1
- package/dist/mlbClient.js +11 -16
- package/dist/mlbClient.js.map +1 -1
- package/dist/model.d.ts +8 -1
- package/dist/model.d.ts.map +1 -1
- package/dist/model.js +12 -6
- package/dist/model.js.map +1 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +36 -24
- package/dist/server.js.map +1 -1
- package/dist/tools/askQuestion.d.ts +15 -0
- package/dist/tools/askQuestion.d.ts.map +1 -0
- package/dist/tools/askQuestion.js +47 -0
- package/dist/tools/askQuestion.js.map +1 -0
- package/dist/tools/dataAccess.d.ts +3 -2
- package/dist/tools/dataAccess.d.ts.map +1 -1
- package/dist/tools/dataAccess.js +7 -4
- package/dist/tools/dataAccess.js.map +1 -1
- package/dist/tools/dataAccessRequest.d.ts +7 -0
- package/dist/tools/dataAccessRequest.d.ts.map +1 -0
- package/dist/tools/dataAccessRequest.js +67 -0
- package/dist/tools/dataAccessRequest.js.map +1 -0
- package/dist/tools/registry.d.ts +1 -4
- package/dist/tools/registry.d.ts.map +1 -1
- package/dist/tools/registry.js +1 -15
- package/dist/tools/registry.js.map +1 -1
- package/dist/tools/resource.d.ts +4 -3
- package/dist/tools/resource.d.ts.map +1 -1
- package/dist/tools/resource.js +18 -13
- package/dist/tools/resource.js.map +1 -1
- package/dist/tools/{widgets.d.ts → widget.d.ts} +6 -4
- package/dist/tools/widget.d.ts.map +1 -0
- package/dist/tools/{widgets.js → widget.js} +13 -9
- package/dist/tools/widget.js.map +1 -0
- package/dist/types.d.ts +79 -23
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +5 -3
- package/dist/types.js.map +1 -1
- package/package.json +2 -2
- package/dist/tools/widgets.d.ts.map +0 -1
- package/dist/tools/widgets.js.map +0 -1
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { Type } from "typebox";
|
|
2
|
+
const requestParams = Type.Object({
|
|
3
|
+
kind: Type.Union([Type.Literal("location"), Type.Literal("calendar"), Type.Literal("healthkit")]),
|
|
4
|
+
reason: Type.String({ minLength: 1, maxLength: 300, description: "为什么当前任务需要这项权限" }),
|
|
5
|
+
datasets: Type.Optional(Type.Array(Type.String(), { minItems: 1, maxItems: 8, uniqueItems: true })),
|
|
6
|
+
calendarDays: Type.Optional(Type.Integer({ minimum: 1, maximum: 31, description: "仅日历使用,读取未来天数" })),
|
|
7
|
+
});
|
|
8
|
+
const readParams = Type.Object({ requestId: Type.String({ minLength: 1 }) });
|
|
9
|
+
export function validateDataAccessRequest(input, convoKey, requirements) {
|
|
10
|
+
if (!convoKey.startsWith("p_"))
|
|
11
|
+
throw new Error("权限请求卡第一期只支持私聊;请引导群成员到私聊中授权");
|
|
12
|
+
const reason = input.reason.trim();
|
|
13
|
+
if (!reason || reason.length > 300)
|
|
14
|
+
throw new Error("权限用途需要 1~300 字");
|
|
15
|
+
if (input.kind === "healthkit") {
|
|
16
|
+
if (input.calendarDays !== undefined)
|
|
17
|
+
throw new Error("healthkit 权限请求不接受 calendarDays");
|
|
18
|
+
const datasets = [...new Set(input.datasets ?? [])];
|
|
19
|
+
if (datasets.length === 0 || datasets.length > 8)
|
|
20
|
+
throw new Error("HealthKit 权限请求需要 1~8 个 Dataset");
|
|
21
|
+
const declared = new Map(requirements.map((item) => [item.id, item]));
|
|
22
|
+
if (datasets.some((id) => declared.get(id)?.source !== "healthkit"))
|
|
23
|
+
throw new Error("HealthKit 权限请求只能包含已声明的 HealthKit Dataset");
|
|
24
|
+
return { kind: input.kind, reason, datasets };
|
|
25
|
+
}
|
|
26
|
+
if (input.datasets !== undefined)
|
|
27
|
+
throw new Error(`${input.kind} 权限请求不接受 datasets`);
|
|
28
|
+
if (input.kind === "location" && input.calendarDays !== undefined)
|
|
29
|
+
throw new Error("location 权限请求不接受 calendarDays");
|
|
30
|
+
if (input.kind === "calendar") {
|
|
31
|
+
const calendarDays = input.calendarDays ?? 7;
|
|
32
|
+
if (!Number.isInteger(calendarDays) || calendarDays < 1 || calendarDays > 31)
|
|
33
|
+
throw new Error("calendarDays 只能是 1~31");
|
|
34
|
+
return { kind: input.kind, reason, calendarDays };
|
|
35
|
+
}
|
|
36
|
+
return { kind: input.kind, reason };
|
|
37
|
+
}
|
|
38
|
+
export function dataAccessRequestTools(client, convoKey, enqueue, tracker, requirements, onRequested) {
|
|
39
|
+
const request = {
|
|
40
|
+
name: "data_access_request",
|
|
41
|
+
label: "正在请求授权",
|
|
42
|
+
description: "在私聊中向用户展示统一权限卡。HealthKit 的 datasets 必须来自已声明清单;位置和日历不要传 datasets。发卡后结束本轮并等待用户操作。",
|
|
43
|
+
parameters: requestParams,
|
|
44
|
+
execute: async (callId, params) => {
|
|
45
|
+
tracker.assertWritable();
|
|
46
|
+
const input = validateDataAccessRequest(params, convoKey, requirements);
|
|
47
|
+
enqueue({ type: "permissionRequest", text: input.reason, permissionRequest: input, dataRequirements: requirements.map(({ id, purpose }) => ({ id, purpose })), idempotencyKey: `permission:${callId}` });
|
|
48
|
+
onRequested?.();
|
|
49
|
+
return { content: [{ type: "text", text: "权限请求卡已发送,请等待用户处理。" }], details: undefined, terminate: true };
|
|
50
|
+
},
|
|
51
|
+
};
|
|
52
|
+
const read = {
|
|
53
|
+
name: "data_access_read_result",
|
|
54
|
+
label: "正在读取授权结果",
|
|
55
|
+
description: "收到 permissionResult 后读取该 requestId 的一次性位置或日历结果。HealthKit 请使用 data_access_query。",
|
|
56
|
+
parameters: readParams,
|
|
57
|
+
replay: "safe",
|
|
58
|
+
execute: async (_callId, { requestId }, signal) => {
|
|
59
|
+
tracker.assertWritable();
|
|
60
|
+
const result = await client.readPermissionResult(convoKey, requestId, signal);
|
|
61
|
+
tracker.markSensitive();
|
|
62
|
+
return { content: [{ type: "text", text: JSON.stringify(result) }], details: undefined };
|
|
63
|
+
},
|
|
64
|
+
};
|
|
65
|
+
return [request, read];
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=dataAccessRequest.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dataAccessRequest.js","sourceRoot":"","sources":["../../src/tools/dataAccessRequest.ts"],"names":[],"mappings":"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"}
|
package/dist/tools/registry.d.ts
CHANGED
|
@@ -1,6 +1,3 @@
|
|
|
1
1
|
import type { AgentTool } from "@earendil-works/pi-agent-core";
|
|
2
|
-
export declare
|
|
3
|
-
export type PlatformToolName = typeof PLATFORM_TOOL_NAMES[number];
|
|
4
|
-
export declare function validatePlatformTools(names?: readonly PlatformToolName[]): Set<PlatformToolName>;
|
|
5
|
-
export declare function registerTools(selected: ReadonlySet<PlatformToolName>, available: AgentTool[], business: AgentTool[]): AgentTool[];
|
|
2
|
+
export declare function assertUniqueToolNames(tools: readonly AgentTool[]): void;
|
|
6
3
|
//# sourceMappingURL=registry.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/tools/registry.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/tools/registry.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAC;AAE/D,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,SAAS,SAAS,EAAE,GAAG,IAAI,CAMvE"}
|
package/dist/tools/registry.js
CHANGED
|
@@ -1,23 +1,9 @@
|
|
|
1
|
-
export
|
|
2
|
-
export function validatePlatformTools(names = []) {
|
|
3
|
-
const selected = new Set();
|
|
4
|
-
for (const name of names) {
|
|
5
|
-
if (!PLATFORM_TOOL_NAMES.includes(name))
|
|
6
|
-
throw new Error(`未知平台工具:${name}`);
|
|
7
|
-
if (selected.has(name))
|
|
8
|
-
throw new Error(`工具重复注册:${name}`);
|
|
9
|
-
selected.add(name);
|
|
10
|
-
}
|
|
11
|
-
return selected;
|
|
12
|
-
}
|
|
13
|
-
export function registerTools(selected, available, business) {
|
|
14
|
-
const tools = [...available.filter(tool => selected.has(tool.name)), ...business];
|
|
1
|
+
export function assertUniqueToolNames(tools) {
|
|
15
2
|
const names = new Set();
|
|
16
3
|
for (const tool of tools) {
|
|
17
4
|
if (names.has(tool.name))
|
|
18
5
|
throw new Error(`工具重名:${tool.name}`);
|
|
19
6
|
names.add(tool.name);
|
|
20
7
|
}
|
|
21
|
-
return tools;
|
|
22
8
|
}
|
|
23
9
|
//# sourceMappingURL=registry.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/tools/registry.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/tools/registry.ts"],"names":[],"mappings":"AAKA,MAAM,UAAU,qBAAqB,CAAC,KAA2B;IAChE,MAAM,KAAK,GAAG,IAAI,GAAG,EAAU,CAAC;IAChC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QAC1B,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QAC/D,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACtB,CAAC;AACF,CAAC"}
|
package/dist/tools/resource.d.ts
CHANGED
|
@@ -7,12 +7,13 @@ export interface Resource {
|
|
|
7
7
|
}
|
|
8
8
|
/** 读一个目录下的全部 .md,按路径排序。非 .md 一律忽略。 */
|
|
9
9
|
export declare function loadResources(dir: string): Resource[];
|
|
10
|
-
|
|
11
|
-
|
|
10
|
+
declare const RESOURCE_LIST_PARAMS: Type.TObject<{}>;
|
|
11
|
+
/** resource_list:列出全部资料的路径,每行一个,按路径排序,跟 conversation.resource.list 给的一样;没有资料时回「没有资料。」 */
|
|
12
|
+
export declare function resourceListTool(resources: Resource[]): AgentTool<typeof RESOURCE_LIST_PARAMS, undefined>;
|
|
12
13
|
declare const RESOURCE_READ_PARAMS: Type.TObject<{
|
|
13
14
|
file: Type.TString;
|
|
14
15
|
}>;
|
|
15
|
-
/** resource_read
|
|
16
|
+
/** resource_read:读一篇资料的正文。没有这篇就抛——pi 会把错误如实交给模型,让它换一篇。 */
|
|
16
17
|
export declare function resourceReadTool(resources: Resource[]): AgentTool<typeof RESOURCE_READ_PARAMS>;
|
|
17
18
|
export {};
|
|
18
19
|
//# sourceMappingURL=resource.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resource.d.ts","sourceRoot":"","sources":["../../src/tools/resource.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAE/B,MAAM,WAAW,QAAQ;IACxB,kDAAkD;IAClD,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CAChB;AAID,sCAAsC;AACtC,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,QAAQ,EAAE,CAKrD;AAeD,
|
|
1
|
+
{"version":3,"file":"resource.d.ts","sourceRoot":"","sources":["../../src/tools/resource.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAE/B,MAAM,WAAW,QAAQ;IACxB,kDAAkD;IAClD,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CAChB;AAID,sCAAsC;AACtC,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,QAAQ,EAAE,CAKrD;AAeD,QAAA,MAAM,oBAAoB,kBAAkB,CAAC;AAE7C,yFAAyF;AACzF,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,QAAQ,EAAE,GAAG,SAAS,CAAC,OAAO,oBAAoB,EAAE,SAAS,CAAC,CASzG;AAED,QAAA,MAAM,oBAAoB;;EAExB,CAAC;AAEH,0DAA0D;AAC1D,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,QAAQ,EAAE,GAAG,SAAS,CAAC,OAAO,oBAAoB,CAAC,CAa9F"}
|
package/dist/tools/resource.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
// resource_read
|
|
1
|
+
// resource_list / resource_read:让模型先看有哪些 markdown 资料,再按需读一篇。
|
|
2
2
|
//
|
|
3
3
|
// 资料 = 搭子目录下 resources/ 里的 .md 文件(递归,跳过 node_modules 与点目录),路径相对 resources/。
|
|
4
|
-
//
|
|
5
|
-
// 不管:什么时候读目录(server.ts
|
|
4
|
+
// 这里只管资料本身:把目录读成清单、造列清单和读一篇两个工具。
|
|
5
|
+
// 不管:什么时候读目录(server.ts 启动时读一次)、工具怎么交给开发者(conversation/agent.ts 挂在 conversation.tools 上,开发者放进 initialState.tools)。
|
|
6
6
|
import { readdirSync, readFileSync, statSync } from "node:fs";
|
|
7
7
|
import { join, relative } from "node:path";
|
|
8
8
|
import { Type } from "typebox";
|
|
@@ -28,28 +28,33 @@ function walk(root, dir, out) {
|
|
|
28
28
|
out.push({ file: relative(root, full), content: readFileSync(full, "utf8") });
|
|
29
29
|
}
|
|
30
30
|
}
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
31
|
+
const RESOURCE_LIST_PARAMS = Type.Object({});
|
|
32
|
+
/** resource_list:列出全部资料的路径,每行一个,按路径排序,跟 conversation.resource.list 给的一样;没有资料时回「没有资料。」 */
|
|
33
|
+
export function resourceListTool(resources) {
|
|
34
|
+
const list = resources.length === 0 ? "没有资料。" : resources.map((r) => r.file).join("\n");
|
|
35
|
+
return {
|
|
36
|
+
name: "resource_list",
|
|
37
|
+
label: "正在翻资料清单",
|
|
38
|
+
description: "列出能读的资料,每行一个路径。要读哪篇,照路径用 resource_read 读。",
|
|
39
|
+
parameters: RESOURCE_LIST_PARAMS,
|
|
40
|
+
execute: async () => ({ content: [{ type: "text", text: list }], details: undefined }),
|
|
41
|
+
};
|
|
37
42
|
}
|
|
38
43
|
const RESOURCE_READ_PARAMS = Type.Object({
|
|
39
|
-
file: Type.String({ description: "
|
|
44
|
+
file: Type.String({ description: "资料路径,照 resource_list 列出的原样填" }),
|
|
40
45
|
});
|
|
41
|
-
/** resource_read
|
|
46
|
+
/** resource_read:读一篇资料的正文。没有这篇就抛——pi 会把错误如实交给模型,让它换一篇。 */
|
|
42
47
|
export function resourceReadTool(resources) {
|
|
43
48
|
const byFile = new Map(resources.map((r) => [r.file, r.content]));
|
|
44
49
|
return {
|
|
45
50
|
name: "resource_read",
|
|
46
51
|
label: "正在读资料",
|
|
47
|
-
description: "
|
|
52
|
+
description: "读一篇资料的正文。用到哪篇读哪篇,别一次全读;有哪些资料用 resource_list 查。",
|
|
48
53
|
parameters: RESOURCE_READ_PARAMS,
|
|
49
54
|
execute: async (_id, params) => {
|
|
50
55
|
const content = byFile.get(params.file);
|
|
51
56
|
if (content === undefined)
|
|
52
|
-
throw new Error(`没有这篇资料:${params.file}
|
|
57
|
+
throw new Error(`没有这篇资料:${params.file}(有哪些资料用 resource_list 查)`);
|
|
53
58
|
return { content: [{ type: "text", text: content }], details: undefined };
|
|
54
59
|
},
|
|
55
60
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resource.js","sourceRoot":"","sources":["../../src/tools/resource.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"resource.js","sourceRoot":"","sources":["../../src/tools/resource.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { AgentTool } from "@earendil-works/pi-agent-core";
|
|
2
2
|
import type { MLBClient, WidgetType } from "../mlbClient.ts";
|
|
3
3
|
import type { MLBMessageToWrite } from "../types.ts";
|
|
4
|
+
import type { DataAccessUsageTracker } from "./dataAccess.ts";
|
|
4
5
|
/** widgets/ 下的一个小挂件:目录名是类型 id;schema.json 解析出的对象与 index.html 的原文原样交给平台 */
|
|
5
6
|
export interface WidgetSource {
|
|
6
7
|
id: string;
|
|
@@ -21,8 +22,9 @@ export declare function loadWidgets(dir: string): WidgetSource[];
|
|
|
21
22
|
*/
|
|
22
23
|
export declare function renderCatalog(types: WidgetType[]): string;
|
|
23
24
|
/**
|
|
24
|
-
* 给一场会话造五个小挂件工具。types
|
|
25
|
-
* 五个工具都绑死在这场会话的 convoKey 上,跨会话看不见对方的小挂件;enqueueMessage
|
|
25
|
+
* 给一场会话造五个小挂件工具。types 为空(widgets/ 里没有小挂件)时照样造,说明里的类型目录写「(没有)」,模型硬要建时平台回错误。
|
|
26
|
+
* 五个工具都绑死在这场会话的 convoKey 上,跨会话看不见对方的小挂件;enqueueMessage 是这场会话的发送队列;
|
|
27
|
+
* tracker 是这场会话的授权数据记账,建、写、删、发四个工具靠它的 assertWritable 在主动服务回合里抛错。
|
|
26
28
|
*/
|
|
27
|
-
export declare function widgetTools(client: MLBClient, convoKey: string, types: WidgetType[], enqueueMessage: (message: MLBMessageToWrite) => void): AgentTool[];
|
|
28
|
-
//# sourceMappingURL=
|
|
29
|
+
export declare function widgetTools(client: MLBClient, convoKey: string, types: WidgetType[], enqueueMessage: (message: MLBMessageToWrite) => void, tracker: DataAccessUsageTracker): AgentTool[];
|
|
30
|
+
//# sourceMappingURL=widget.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"widget.d.ts","sourceRoot":"","sources":["../../src/tools/widget.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,SAAS,EAAmB,MAAM,+BAA+B,CAAC;AAGhF,OAAO,KAAK,EAAE,SAAS,EAAoB,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC/E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AAE9D,0EAA0E;AAC1E,MAAM,WAAW,YAAY;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,OAAO,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;CACb;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,YAAY,EAAE,CAmBvD;AAYD;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,UAAU,EAAE,GAAG,MAAM,CAWzD;AAwFD;;;;GAIG;AACH,wBAAgB,WAAW,CAC1B,MAAM,EAAE,SAAS,EACjB,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,UAAU,EAAE,EACnB,cAAc,EAAE,CAAC,OAAO,EAAE,iBAAiB,KAAK,IAAI,EACpD,OAAO,EAAE,sBAAsB,GAC7B,SAAS,EAAE,CAsEb"}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
// 小挂件:读工程 widgets/ 目录;把平台的小挂件接口包成五个 pi AgentTool,交给模型在会话里建面板、写记录、读记录、删记录、把小挂件发进聊天流。
|
|
2
2
|
// 管:widgets/ 下每个子目录读成一个小挂件(目录名是类型 id,schema.json 是 schema,index.html 是页面);
|
|
3
3
|
// 五个工具的名字与 label(固定,人设按名字叫它们)、参数 schema(typebox)、description 里把小挂件类型目录渲染成人话;
|
|
4
|
-
// 前四个调 MLBClient 的小挂件接口,widget_send 把小挂件引用放进这场会话的发送队列;失败抛给 pi
|
|
5
|
-
//
|
|
4
|
+
// 前四个调 MLBClient 的小挂件接口,widget_send 把小挂件引用放进这场会话的发送队列;失败抛给 pi 标为错误,不能伪报成功;
|
|
5
|
+
// widget_create / widget_write / widget_delete / widget_send 在主动服务回合里 assertWritable 抛错,widget_read 照常能用。
|
|
6
|
+
// 不管:HTTP 请求本身(mlbClient.ts)、什么时候读目录与上传平台(server.ts 启动时)、工具怎么交给开发者(conversation/agent.ts 挂在 conversation.tools 上)。
|
|
6
7
|
import { existsSync, readdirSync, readFileSync, statSync } from "node:fs";
|
|
7
8
|
import { join } from "node:path";
|
|
8
9
|
import { Type } from "typebox";
|
|
@@ -140,13 +141,12 @@ const sendParams = Type.Object({
|
|
|
140
141
|
widgetId: Type.String({ description: "要发的小挂件的 id" }),
|
|
141
142
|
});
|
|
142
143
|
/**
|
|
143
|
-
* 给一场会话造五个小挂件工具。types
|
|
144
|
-
* 五个工具都绑死在这场会话的 convoKey 上,跨会话看不见对方的小挂件;enqueueMessage
|
|
144
|
+
* 给一场会话造五个小挂件工具。types 为空(widgets/ 里没有小挂件)时照样造,说明里的类型目录写「(没有)」,模型硬要建时平台回错误。
|
|
145
|
+
* 五个工具都绑死在这场会话的 convoKey 上,跨会话看不见对方的小挂件;enqueueMessage 是这场会话的发送队列;
|
|
146
|
+
* tracker 是这场会话的授权数据记账,建、写、删、发四个工具靠它的 assertWritable 在主动服务回合里抛错。
|
|
145
147
|
*/
|
|
146
|
-
export function widgetTools(client, convoKey, types, enqueueMessage) {
|
|
147
|
-
|
|
148
|
-
return [];
|
|
149
|
-
const catalog = renderCatalog(types);
|
|
148
|
+
export function widgetTools(client, convoKey, types, enqueueMessage, tracker) {
|
|
149
|
+
const catalog = types.length === 0 ? "(没有)" : renderCatalog(types);
|
|
150
150
|
const create = {
|
|
151
151
|
name: "widget_create",
|
|
152
152
|
label: "正在建 widget",
|
|
@@ -154,6 +154,7 @@ export function widgetTools(client, convoKey, types, enqueueMessage) {
|
|
|
154
154
|
`你能建的类型:\n${catalog}`,
|
|
155
155
|
parameters: createParams,
|
|
156
156
|
execute: async (callId, params, signal) => {
|
|
157
|
+
tracker.assertWritable();
|
|
157
158
|
const { id } = await client.widgetCreate(convoKey, { ...params, idempotencyKey: `widget-create:${callId}` }, signal);
|
|
158
159
|
return text(`建好了,小挂件 id 是 ${id}。后续使用当前可用的工具写入内容并发送引用;这里只确认创建。`);
|
|
159
160
|
},
|
|
@@ -165,6 +166,7 @@ export function widgetTools(client, convoKey, types, enqueueMessage) {
|
|
|
165
166
|
`各类型的模块与字段:\n${catalog}`,
|
|
166
167
|
parameters: writeParams,
|
|
167
168
|
execute: async (_id, params, signal) => {
|
|
169
|
+
tracker.assertWritable();
|
|
168
170
|
const { widgetId, module, recordId, expectedRevision } = params;
|
|
169
171
|
const { revision } = await client.widgetWrite(convoKey, widgetId, { module, recordId, data: params.data, expectedRevision }, signal);
|
|
170
172
|
return text(`写好了:${params.module}/${params.recordId}${revision === undefined ? "" : `(revision ${String(revision)})`}`);
|
|
@@ -188,6 +190,7 @@ export function widgetTools(client, convoKey, types, enqueueMessage) {
|
|
|
188
190
|
description: "删掉小挂件某个模块里的一条记录。删的是记录,不是整个小挂件。",
|
|
189
191
|
parameters: deleteParams,
|
|
190
192
|
execute: async (_id, params, signal) => {
|
|
193
|
+
tracker.assertWritable();
|
|
191
194
|
await client.widgetDeleteRecord(convoKey, params.widgetId, params.module, params.recordId, signal);
|
|
192
195
|
return text(`删掉了:${params.module}/${params.recordId}`);
|
|
193
196
|
},
|
|
@@ -199,10 +202,11 @@ export function widgetTools(client, convoKey, types, enqueueMessage) {
|
|
|
199
202
|
parameters: sendParams,
|
|
200
203
|
execute: async (callId, params, signal) => {
|
|
201
204
|
signal?.throwIfAborted();
|
|
205
|
+
tracker.assertWritable();
|
|
202
206
|
enqueueMessage({ type: "widget", widget: { id: params.widgetId }, idempotencyKey: `widget-send:${callId}` });
|
|
203
207
|
return text("小挂件引用已加入发送队列,尚不代表平台确认送达。");
|
|
204
208
|
},
|
|
205
209
|
};
|
|
206
210
|
return [create, write, read, remove, send];
|
|
207
211
|
}
|
|
208
|
-
//# sourceMappingURL=
|
|
212
|
+
//# sourceMappingURL=widget.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"widget.js","sourceRoot":"","sources":["../../src/tools/widget.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -1,18 +1,17 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
import type {
|
|
1
|
+
import type { DataAccessDatasetId } from "./dataAccessCatalog.ts";
|
|
2
|
+
import type { ModelId } from "./model.ts";
|
|
3
|
+
import type { AgentMessage, AgentOptions, AgentState, AgentTool } from "@earendil-works/pi-agent-core";
|
|
3
4
|
/** 一个搭子在一场会话里的配置。形状照 pi 的 Agent 来。 */
|
|
4
|
-
export type BuddyOptions = Pick<AgentOptions, "beforeToolCall" | "afterToolCall" | "shouldStopAfterTurn"
|
|
5
|
-
/** 显式选择给模型开放的平台工具;默认 []。不影响开发者在代码里调用 conversation.resources / conversation.memory / conversation.dataAccess / conversation.proactive / conversation.widgets。 */
|
|
6
|
-
platformTools?: readonly PlatformToolName[];
|
|
5
|
+
export type BuddyOptions = Pick<AgentOptions, "beforeToolCall" | "afterToolCall" | "shouldStopAfterTurn"> & {
|
|
7
6
|
/**
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
* 主动回合用户不在场,所以默认不信任任何工具,要用就显式点名。
|
|
11
|
-
* 实现上不换 Agent 的工具清单(换它会让整条请求前缀的缓存失效),是在工具执行前拦掉没点名的。
|
|
7
|
+
* model、systemPrompt 必填;tools / thinkingLevel 可选。平台工具从 conversation.tools 里取来放进 tools。
|
|
8
|
+
* model 填运行时支持的模型 id,建 Agent 时换成网关的模型条目;messages 不露,历史从平台灌
|
|
12
9
|
*/
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
10
|
+
initialState: Pick<AgentState, "systemPrompt"> & Partial<Pick<AgentState, "tools" | "thinkingLevel">> & {
|
|
11
|
+
model: ModelId;
|
|
12
|
+
};
|
|
13
|
+
/** 普通回合里模型出错或一句话没说时,替搭子发的兜底话;不配就不发。主动服务回合不发 */
|
|
14
|
+
errorReply?: string;
|
|
16
15
|
};
|
|
17
16
|
/** 工厂:每场会话第一条消息到达时调一次。 */
|
|
18
17
|
export type BuddyFactory = (conversation: Conversation) => BuddyOptions | Promise<BuddyOptions>;
|
|
@@ -22,11 +21,17 @@ export interface Conversation {
|
|
|
22
21
|
readonly key: string;
|
|
23
22
|
/** 行首带搭子 id */
|
|
24
23
|
readonly log: BuddyLogger;
|
|
24
|
+
/**
|
|
25
|
+
* 平台工具:运行时造好、绑好这场会话,属性名就是工具名。挑要用的放进 initialState.tools,没放进去的模型看不到。
|
|
26
|
+
* 放进去就一定注册;背后没数据时照常注册、调用时回空结果或报错:没资料时 resource_list 回「没有资料」,没声明 Dataset 时查询逐项回 notDeclared,
|
|
27
|
+
* 没有小挂件类型时类型目录为空,群聊里 data_access_request 报错说只支持私聊。
|
|
28
|
+
*/
|
|
29
|
+
readonly tools: PlatformTools;
|
|
25
30
|
/**
|
|
26
31
|
* 搭子目录下 resources/ 里的 .md 资料:进程启动时读一次,所有会话共用,资料改了要重启进程。
|
|
27
32
|
* 只读,主动服务回合里也能调。
|
|
28
33
|
*/
|
|
29
|
-
readonly
|
|
34
|
+
readonly resource: {
|
|
30
35
|
/** 全部资料的路径,相对 resources/,按路径排序,如 research/01-writings.md */
|
|
31
36
|
list(): string[];
|
|
32
37
|
/** 读一篇的正文,file 照 list 给的路径原样填;没有这篇直接 throw */
|
|
@@ -50,6 +55,11 @@ export interface Conversation {
|
|
|
50
55
|
*/
|
|
51
56
|
readonly dataAccess: {
|
|
52
57
|
query(request: DataAccessQuery): Promise<DatasetAccessResult[]>;
|
|
58
|
+
/** 会话内数据授权请求:卡片发进聊天;HealthKit 授权后重新 query,位置和日历按 requestId 读取一次性结果。 */
|
|
59
|
+
request(input: DataAccessRequestInput & {
|
|
60
|
+
idempotencyKey: string;
|
|
61
|
+
}): Promise<void>;
|
|
62
|
+
readResult(requestId: string): Promise<DataAccessReadResult>;
|
|
53
63
|
};
|
|
54
64
|
/**
|
|
55
65
|
* 向平台提一条主动服务订阅建议:POST /internal/v1/proactive/subscriptions。平台回的订阅一律是 pending,用户在 App 里确认后才会触发。
|
|
@@ -60,12 +70,17 @@ export interface Conversation {
|
|
|
60
70
|
id: string;
|
|
61
71
|
status: "pending";
|
|
62
72
|
}>;
|
|
73
|
+
/**
|
|
74
|
+
* 现在是不是主动服务回合。主动回合里用户不在场,运行时不按工具名拦(会发卡、写平台的平台工具自己会 throw),
|
|
75
|
+
* 开发者要限制自己的工具,在 beforeToolCall 里按它挡掉。
|
|
76
|
+
*/
|
|
77
|
+
isRunning(): boolean;
|
|
63
78
|
};
|
|
64
79
|
/**
|
|
65
80
|
* 这场会话的小挂件,会话键已经绑好。平台回非 2xx、网络错误、超时、响应超过 4 MiB 都 throw,异常的 status 是 HTTP 状态码,不带平台原文;写操作不重试。
|
|
66
81
|
* 主动服务回合里调 create / rename / write / deleteRecord / delete / setPresentation / send 直接 throw。
|
|
67
82
|
*/
|
|
68
|
-
readonly
|
|
83
|
+
readonly widget: {
|
|
69
84
|
/** 这场会话里的小挂件,不带记录。GET /internal/v1/widgets */
|
|
70
85
|
list(): Promise<WidgetSummary[]>;
|
|
71
86
|
/** 新建一个,回平台给的 id;同一个 idempotencyKey 重复建回同一个 id。POST /internal/v1/widgets */
|
|
@@ -108,6 +123,20 @@ export interface Conversation {
|
|
|
108
123
|
}): void;
|
|
109
124
|
};
|
|
110
125
|
}
|
|
126
|
+
/** 运行时造好的平台工具,属性名就是工具名,每个都是 pi 的 AgentTool。说明见 Conversation.tools */
|
|
127
|
+
export interface PlatformTools {
|
|
128
|
+
readonly resource_list: AgentTool;
|
|
129
|
+
readonly resource_read: AgentTool;
|
|
130
|
+
readonly ask_question: AgentTool;
|
|
131
|
+
readonly data_access_query: AgentTool;
|
|
132
|
+
readonly data_access_request: AgentTool;
|
|
133
|
+
readonly data_access_read_result: AgentTool;
|
|
134
|
+
readonly widget_create: AgentTool;
|
|
135
|
+
readonly widget_write: AgentTool;
|
|
136
|
+
readonly widget_read: AgentTool;
|
|
137
|
+
readonly widget_delete: AgentTool;
|
|
138
|
+
readonly widget_send: AgentTool;
|
|
139
|
+
}
|
|
111
140
|
/** 小挂件列表里的一项:GET /internal/v1/widgets 响应体的 widgets[] */
|
|
112
141
|
export interface WidgetSummary {
|
|
113
142
|
id: string;
|
|
@@ -170,13 +199,33 @@ export type DatasetAccessResult = {
|
|
|
170
199
|
};
|
|
171
200
|
/** 搭子向平台声明的一项用户数据需求。 */
|
|
172
201
|
export interface DataRequirement {
|
|
173
|
-
id:
|
|
202
|
+
id: DataAccessDatasetId;
|
|
174
203
|
title: string;
|
|
175
|
-
source:
|
|
204
|
+
source: "healthkit" | "xhs";
|
|
176
205
|
purpose: string;
|
|
177
|
-
revision: number;
|
|
178
206
|
schemaVersion: number;
|
|
179
207
|
}
|
|
208
|
+
/** 搭子随 Runtime 启动声明的一项用户数据需求。平台补齐标题、来源和版本。 */
|
|
209
|
+
export interface DataRequirementDeclaration {
|
|
210
|
+
id: DataAccessDatasetId;
|
|
211
|
+
purpose: string;
|
|
212
|
+
}
|
|
213
|
+
export type DataAccessRequestKind = "location" | "calendar" | "healthkit";
|
|
214
|
+
export interface DataAccessRequestInput {
|
|
215
|
+
kind: DataAccessRequestKind;
|
|
216
|
+
reason: string;
|
|
217
|
+
/** 仅 HealthKit 使用,且只能申请搭子已声明的 Dataset。 */
|
|
218
|
+
datasets?: string[];
|
|
219
|
+
/** 仅日历使用,读取未来多少天,默认 7 天。 */
|
|
220
|
+
calendarDays?: number;
|
|
221
|
+
}
|
|
222
|
+
export type DataAccessReadResult = {
|
|
223
|
+
status: "available";
|
|
224
|
+
kind: "location" | "calendar";
|
|
225
|
+
data: Record<string, unknown>;
|
|
226
|
+
} | {
|
|
227
|
+
status: "unavailable";
|
|
228
|
+
};
|
|
180
229
|
export interface ProactiveTrigger {
|
|
181
230
|
eventId: string;
|
|
182
231
|
source: string;
|
|
@@ -222,10 +271,8 @@ export interface BuddyLogger {
|
|
|
222
271
|
}
|
|
223
272
|
export interface StartOptions {
|
|
224
273
|
buddy: BuddyFactory;
|
|
225
|
-
/**
|
|
226
|
-
|
|
227
|
-
/** 模型失败、空回复时的明确兜底;不在会话已删除时发送。 */
|
|
228
|
-
errorReply?: string;
|
|
274
|
+
/** 这只搭子需要的用户数据。Runtime 本地校验,并在实际查询或请求授权时随请求携带。 */
|
|
275
|
+
dataRequirements: readonly DataRequirementDeclaration[];
|
|
229
276
|
}
|
|
230
277
|
export interface BuddyServerHandle {
|
|
231
278
|
stop(): Promise<void>;
|
|
@@ -262,6 +309,8 @@ export interface MLBMessage {
|
|
|
262
309
|
/** 旧 Server 字段名;兼容过渡期读取,不应作为新协议继续扩散 */
|
|
263
310
|
reply?: boolean;
|
|
264
311
|
question?: unknown;
|
|
312
|
+
permissionRequest?: unknown;
|
|
313
|
+
permissionResult?: unknown;
|
|
265
314
|
widget?: {
|
|
266
315
|
id: string;
|
|
267
316
|
};
|
|
@@ -301,9 +350,9 @@ export interface MLBToolCall {
|
|
|
301
350
|
arguments?: unknown;
|
|
302
351
|
result?: string;
|
|
303
352
|
}
|
|
304
|
-
/** 写口每条:运行时只写 message / tool / widget / compaction;checkin 只能经
|
|
353
|
+
/** 写口每条:运行时只写 message / tool / widget / permissionRequest / question / compaction;checkin 只能经 Proactive 结果接口由平台落。 */
|
|
305
354
|
export interface MLBMessageToWrite {
|
|
306
|
-
type: "message" | "tool" | "widget" | "compaction";
|
|
355
|
+
type: "message" | "tool" | "widget" | "permissionRequest" | "question" | "compaction";
|
|
307
356
|
text?: string;
|
|
308
357
|
/** type compaction:这份摘要盖到哪一刻(被摘掉的最后一条记录的平台时间) */
|
|
309
358
|
coversUntil?: number;
|
|
@@ -312,6 +361,13 @@ export interface MLBMessageToWrite {
|
|
|
312
361
|
widget?: {
|
|
313
362
|
id: string;
|
|
314
363
|
};
|
|
364
|
+
permissionRequest?: DataAccessRequestInput;
|
|
365
|
+
/** type question(ask_question 发的题卡):text 是题目,这里是 2 到 4 个选项 */
|
|
366
|
+
question?: {
|
|
367
|
+
options: string[];
|
|
368
|
+
};
|
|
369
|
+
/** HealthKit 权限卡附带当前 Runtime 初始化声明,供平台绑定用途版本;不存入客户端消息。 */
|
|
370
|
+
dataRequirements?: readonly DataRequirementDeclaration[];
|
|
315
371
|
idempotencyKey?: string;
|
|
316
372
|
/** 这条产生于主动服务回合:平台 ② 出口整条不下发,用户看不见。
|
|
317
373
|
* type "proactive" 的两条记录本身整类不下发,这个标记是给同一轮里的 tool 记录用的 */
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/types.js
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
// 开发者契约 + 模块间共享的类型。设计正本:REDoc《【技术设计】搭子 runtime 基座》。
|
|
2
2
|
//
|
|
3
|
-
// 开发者交一个工厂:buddy: (conversation) => BuddyOptions。模型钩子取自 pi
|
|
4
|
-
//
|
|
5
|
-
// 藏掉运行时独占的字段(streamFn / getApiKey /
|
|
3
|
+
// 开发者交一个工厂:buddy: (conversation) => BuddyOptions。模型钩子取自 pi;
|
|
4
|
+
// 平台工具由运行时造好挂在 conversation.tools 上,开发者放进 initialState.tools 模型才看得到。
|
|
5
|
+
// 藏掉运行时独占的字段(streamFn / getApiKey / messages / transformContext / convertToLlm / steeringMode …);
|
|
6
|
+
// model 不收 pi 的 Model 对象,只收运行时支持的模型 id(同一个 id 各家目录 compat 不同;baseUrl 让开发者填会把搭子令牌发到别处),运行时换成网关的模型条目;
|
|
7
|
+
// 也不给 prepareNextTurn / prepareNextTurnWithContext:它们能在回合中途换模型、系统提示、工具与历史,换了的不写回会话历史与平台,模型看到的就跟记录对不上;
|
|
6
8
|
// 把 systemPrompt 设成必填(没人设的搭子是 bug,类型上就拦)。
|
|
7
9
|
export {};
|
|
8
10
|
//# 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,4DAA4D;AAC5D,
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,oDAAoD;AACpD,EAAE;AACF,4DAA4D;AAC5D,qEAAqE;AACrE,kGAAkG;AAClG,oGAAoG;AACpG,sGAAsG;AACtG,0CAA0C"}
|
package/package.json
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@my-life-buddies/buddy-runtime",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.10.0",
|
|
4
4
|
"type": "module",
|
|
5
|
-
"description": "
|
|
5
|
+
"description": "搭搭开发者工具:基于 pi-agent-core 的 搭子运行时",
|
|
6
6
|
"exports": {
|
|
7
7
|
".": {
|
|
8
8
|
"buddy-runtime-source": "./src/index.ts",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"widgets.d.ts","sourceRoot":"","sources":["../../src/tools/widgets.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,SAAS,EAAmB,MAAM,+BAA+B,CAAC;AAGhF,OAAO,KAAK,EAAE,SAAS,EAAoB,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC/E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAErD,0EAA0E;AAC1E,MAAM,WAAW,YAAY;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,OAAO,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;CACb;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,YAAY,EAAE,CAmBvD;AAYD;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,UAAU,EAAE,GAAG,MAAM,CAWzD;AAwFD;;;GAGG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,EAAE,cAAc,EAAE,CAAC,OAAO,EAAE,iBAAiB,KAAK,IAAI,GAAG,SAAS,EAAE,CAmEvJ"}
|