@my-life-buddies/buddy-runtime 0.24.0-dev.2 → 0.24.0-dev.4
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 +147 -9
- package/dist/conversation/agent.d.ts +7 -1
- package/dist/conversation/agent.d.ts.map +1 -1
- package/dist/conversation/agent.js +64 -4
- package/dist/conversation/agent.js.map +1 -1
- package/dist/conversation/index.d.ts +24 -3
- package/dist/conversation/index.d.ts.map +1 -1
- package/dist/conversation/index.js +252 -6
- package/dist/conversation/index.js.map +1 -1
- package/dist/conversation/mlbMessageAgentMessageConverter.js +1 -1
- package/dist/conversation/mlbMessageAgentMessageConverter.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/mlbClient.d.ts +8 -2
- package/dist/mlbClient.d.ts.map +1 -1
- package/dist/mlbClient.js +60 -2
- package/dist/mlbClient.js.map +1 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +95 -3
- package/dist/server.js.map +1 -1
- package/dist/services/cache.d.ts +15 -0
- package/dist/services/cache.d.ts.map +1 -0
- package/dist/services/cache.js +58 -0
- package/dist/services/cache.js.map +1 -0
- package/dist/services/manifest.d.ts +3 -0
- package/dist/services/manifest.d.ts.map +1 -0
- package/dist/services/manifest.js +19 -0
- package/dist/services/manifest.js.map +1 -0
- package/dist/services/session.d.ts +10 -0
- package/dist/services/session.d.ts.map +1 -0
- package/dist/services/session.js +57 -0
- package/dist/services/session.js.map +1 -0
- package/dist/services/types.d.ts +122 -0
- package/dist/services/types.d.ts.map +1 -0
- package/dist/services/types.js +2 -0
- package/dist/services/types.js.map +1 -0
- package/dist/tools/service.d.ts +18 -0
- package/dist/tools/service.d.ts.map +1 -0
- package/dist/tools/service.js +25 -0
- package/dist/tools/service.js.map +1 -0
- package/dist/tools/widget.d.ts +1 -1
- package/dist/tools/widget.d.ts.map +1 -1
- package/dist/tools/widget.js +10 -11
- package/dist/tools/widget.js.map +1 -1
- package/dist/types.d.ts +61 -7
- package/dist/types.d.ts.map +1 -1
- package/package.json +3 -3
package/README.md
CHANGED
|
@@ -75,7 +75,7 @@ await BuddyServer.start(() => ({
|
|
|
75
75
|
|
|
76
76
|
连上平台开始处理消息,返回 `{ stop(): Promise<void> }`。
|
|
77
77
|
|
|
78
|
-
`buddy` 是每场会话建起来时调用一次的工厂函数,返回这场会话的配置,见 2.2、2.3。DataAccess 声明不属于会话工厂,单独写在工程根目录的 `data-access.json`,见 3.4。
|
|
78
|
+
`buddy` 是每场会话建起来时调用一次的工厂函数,返回这场会话的配置,见 2.2、2.3。需要按服务凭证切换配置时,在返回值中提供可选的 `configureTurn`,不重复执行工厂,见 3.7。DataAccess 声明不属于会话工厂,单独写在工程根目录的 `data-access.json`,见 3.4。
|
|
79
79
|
|
|
80
80
|
**buddyId 与 token**:buddyId 从工程 `package.json` 顶层的 `buddyId` 字段读,token 从环境变量 `BUDDY_TOKEN` 读,缺一个都启动失败。创建搭子时会下发 buddyId 与开发 token:buddyId 写进 `package.json`,随工程进 git 与发布包,平台收包时会比对它与推送目标是否一致;开发 token 写在 `.env`,由启动命令带进环境变量。正式上线时平台托管注入正式 token 到同名变量,对开发者无感。
|
|
81
81
|
|
|
@@ -157,7 +157,6 @@ interface Conversation {
|
|
|
157
157
|
widget_rename: AgentTool;
|
|
158
158
|
widget_write_record: AgentTool;
|
|
159
159
|
widget_delete_record: AgentTool;
|
|
160
|
-
widget_delete: AgentTool;
|
|
161
160
|
widget_send: AgentTool;
|
|
162
161
|
};
|
|
163
162
|
|
|
@@ -192,7 +191,6 @@ interface Conversation {
|
|
|
192
191
|
input: { module: string; recordId: string; data: Record<string, unknown>; expectedRevision?: number },
|
|
193
192
|
): Promise<{ revision?: number }>;
|
|
194
193
|
deleteRecord(id: string, module: string, recordId: string): Promise<void>;
|
|
195
|
-
delete(id: string): Promise<void>;
|
|
196
194
|
setPresentation(id: string, input: { summary: string; imageMediaId: string }): Promise<void>;
|
|
197
195
|
send(id: string, options: { idempotencyKey: string; openTarget?: WidgetOpenTarget }): void;
|
|
198
196
|
};
|
|
@@ -216,8 +214,9 @@ interface Conversation {
|
|
|
216
214
|
| 提问 | 无 | `ask_question` |
|
|
217
215
|
| 记忆 | `conversation.memory` | 无,开发者可以根据具体场景,自己组装成适合的模型工具 |
|
|
218
216
|
| 用户授权数据 | `conversation.dataAccess.query` / `conversation.dataAccess.request` | `data_access_query` / `data_access_request` |
|
|
219
|
-
| 小挂件 | `conversation.widget.list` / `conversation.widget.create` / `conversation.widget.read` / `conversation.widget.readModule` / `conversation.widget.rename` / `conversation.widget.writeRecord` / `conversation.widget.deleteRecord` / `conversation.widget.
|
|
217
|
+
| 小挂件 | `conversation.widget.list` / `conversation.widget.create` / `conversation.widget.read` / `conversation.widget.readModule` / `conversation.widget.rename` / `conversation.widget.writeRecord` / `conversation.widget.deleteRecord` / `conversation.widget.setPresentation` / `conversation.widget.send` | `widget_create` / `widget_read` / `widget_read_module` / `widget_rename` / `widget_write_record` / `widget_delete_record` / `widget_send` |
|
|
220
218
|
| 主动服务 | `conversation.proactive.subscribe` / `list` / `unsubscribe` / `unsubscribeAll` / `isRunning` | `proactive_subscribe` / `proactive_list` / `proactive_unsubscribe` / `proactive_unsubscribe_all` |
|
|
219
|
+
| 付费服务(内测) | `conversation.service`:展示服务、读取、启用和终止服务凭证 | `show_service_card` |
|
|
221
220
|
|
|
222
221
|
```ts
|
|
223
222
|
buddy: (conversation) => ({
|
|
@@ -491,7 +490,7 @@ data_access_query
|
|
|
491
490
|
- **用户可见出口(一律留)**:正文(`text` 块)跟用户直接看得见的话是同一份,通过 delta 就已经推给用户,落库照留;题卡的题目和选项也归到这一类,Runtime 会在内部 Tool 历史里保留这组用户可见参数,用户回答后模型仍知道原题;授权卡的理由同理。
|
|
492
491
|
- **长期出口(读过数据的这一轮拒收)**:`memory.write` / `remember`、`widget.create` / `rename` / `writeRecord` / `setPresentation`、`proactive.subscribe` 的 `title` / `reason` / `trigger`——这些跨会话可读,模型看一次数据能刻很久,Runtime 抛异常拒收,模型能看到错误信息(一般是「本回合已经读取用户授权数据,不能写入 …」)。
|
|
493
492
|
- **开发者工具必须声明 `dataAccessPolicy`**:纯计算或只读工具设 `retention: "none"`;只向当前聊天发送用户可见内容的工具设 `retention: "conversation"`;写数据库、文件或长期状态的设 `retention: "durable"`;访问第三方服务的设 `retention: "external"`。缺省按最保守的 `external` 处理。结果确定不回显模型参数时才设 `result: "independent"`;参数本身就是用户看到的卡片内容时设 `arguments: "user-visible"`。
|
|
494
|
-
-
|
|
493
|
+
- **只读、删除记录、发送不带打开目标的小挂件引用不受影响**:`widget.list` / `read` / `readModule` / `deleteRecord`、`proactive.list` / `unsubscribe` / `unsubscribeAll` 都不新增内容;`widget.send` 不带 `openTarget` 时照常,带 `openTarget` 时会把 `state` 等内容写进消息,读过数据后拒收。
|
|
495
494
|
|
|
496
495
|
这么设计是为了让用户撤销授权后,Runtime 不能再次读取原始数据,也不能把本轮原始数据写入长期业务状态。已经向用户展示并进入聊天记录的正文或题卡不会追溯删除。
|
|
497
496
|
|
|
@@ -503,7 +502,7 @@ data_access_query
|
|
|
503
502
|
|
|
504
503
|
### 3.5 小挂件
|
|
505
504
|
|
|
506
|
-
|
|
505
|
+
小挂件是会话里一块给用户看的结构化面板,比如一份菜单。建小挂件、读整个或一个模块、改标题、写记录、删记录,并把它发进当前聊天,模型和开发者代码都能做。平台不提供删除整个小挂件或跨会话分享的能力。
|
|
507
506
|
|
|
508
507
|
**准备工作**
|
|
509
508
|
|
|
@@ -521,6 +520,34 @@ my-buddy/ 工程目录
|
|
|
521
520
|
|
|
522
521
|
资料小挂件要重启进程,建议 watch `widgets/` 实时重启。
|
|
523
522
|
|
|
523
|
+
`schema.json` 需要同时声明页面与 Agent 对每个模块能做的记录操作。旧 Schema 没有 `operations` 时,页面保持只读,Agent 保持原有记录 CRUD 能力。字段写 `readOnly: true` 后,页面创建或修改记录时不能写入或移除该字段;图片字段用 `format: "media-id"`,记录里只保存平台返回的 `mediaId`。
|
|
524
|
+
|
|
525
|
+
```json
|
|
526
|
+
{
|
|
527
|
+
"description": "宠物档案",
|
|
528
|
+
"modules": {
|
|
529
|
+
"pets": {
|
|
530
|
+
"description": "一条记录是一只宠物",
|
|
531
|
+
"operations": {
|
|
532
|
+
"userUI": ["read", "create", "update"],
|
|
533
|
+
"agent": ["read", "create", "update", "delete"]
|
|
534
|
+
},
|
|
535
|
+
"record": {
|
|
536
|
+
"type": "object",
|
|
537
|
+
"properties": {
|
|
538
|
+
"name": { "type": "string" },
|
|
539
|
+
"avatarMediaId": { "type": "string", "format": "media-id" },
|
|
540
|
+
"createdBy": { "type": "string", "readOnly": true }
|
|
541
|
+
},
|
|
542
|
+
"required": ["name"]
|
|
543
|
+
}
|
|
544
|
+
}
|
|
545
|
+
}
|
|
546
|
+
}
|
|
547
|
+
```
|
|
548
|
+
|
|
549
|
+
`index.html` 不能直接访问平台接口或任意外部网络。页面通过平台注入的 `window.dadaWidget` 调用 `records.list/get/create/update/delete`、`media.pickAndUpload/url` 与 `close`;身份、令牌、Widget id 和会话 id 都由客户端注入并校验,不交给页面拼接。用户关闭页面后,平台会把本次记录变更聚合成一次不可见输入交给 Agent;不需要回复时 Agent 可以保持静默。
|
|
550
|
+
|
|
524
551
|
**`conversation` 对象方法**
|
|
525
552
|
|
|
526
553
|
| 方法 | 做什么 |
|
|
@@ -532,7 +559,6 @@ my-buddy/ 工程目录
|
|
|
532
559
|
| `rename(id, title)` | 改标题,id 不变,聊天里发过的卡片跟着显示新标题 |
|
|
533
560
|
| `writeRecord(id, { module, recordId, data, expectedRevision? })` | 写一条记录,已存在就整条覆盖,回 `{ revision }`;带 `expectedRevision` 时版本号对不上,平台回 409 |
|
|
534
561
|
| `deleteRecord(id, module, recordId)` | 删一条记录 |
|
|
535
|
-
| `delete(id)` | 删整个小挂件连记录;聊天里发过的卡片留着,点开显示已删除 |
|
|
536
562
|
| `setPresentation(id, { summary, imageMediaId })` | 设聊天里卡片的摘要(不超过 500 字)和封面图,`imageMediaId` 传空串去掉封面 |
|
|
537
563
|
| `send(id, { idempotencyKey, openTarget? })` | 发进聊天:可把这张卡锚到声明过的语义入口和具体记录;放进发送队列就返回,不等平台确认送达;同一个 `idempotencyKey` 重复发只落一条 |
|
|
538
564
|
|
|
@@ -565,7 +591,8 @@ execute: async (toolCallId, params) => {
|
|
|
565
591
|
|
|
566
592
|
**限制与异常**
|
|
567
593
|
|
|
568
|
-
-
|
|
594
|
+
- Widget 只属于创建它的一个会话,不能跨会话分享或转发;当前会话成员统一可编辑、可固定到首页。
|
|
595
|
+
- 页面只能执行 `schema.json` 的 `operations.userUI` 已声明的操作;Agent 只能执行 `operations.agent` 已声明的操作。未声明的操作平台回 403。
|
|
569
596
|
- `data` 要符合 `schema.json` 里这个模块的 `record`,不符合时平台回 400。
|
|
570
597
|
- 平台回非 2xx、网络出错、超过 30 秒或响应超过 4 MiB 时抛异常,异常的 `status` 是 HTTP 状态码,不带平台给的原因。写操作不自动重试,失败后先读一遍真实状态再决定。
|
|
571
598
|
- 这一轮读过用户授权数据之后,写入类操作(`create` / `rename` / `writeRecord` / `setPresentation` 及对应模型工具)抛异常;只读、删除、`send` 不受影响,见 3.4 的「数据只在当轮可见」。
|
|
@@ -635,7 +662,7 @@ await BuddyServer.start((conversation) => ({
|
|
|
635
662
|
|
|
636
663
|
**主动服务的回合,不允许使用部分模型工具**
|
|
637
664
|
|
|
638
|
-
|
|
665
|
+
主动服务回合沿用当前配置的工具,数据授权保护照常生效;`show_service_card` 只允许普通用户私聊回合调用,见 3.7。开发者如需进一步限制其他工具,可以使用 `beforeToolCall`,通过 `conversation.proactive.isRunning()` 判断当前是否为主动服务回合:
|
|
639
666
|
|
|
640
667
|
```ts
|
|
641
668
|
beforeToolCall: async ({ toolCall }) =>
|
|
@@ -643,3 +670,114 @@ beforeToolCall: async ({ toolCall }) =>
|
|
|
643
670
|
? { block: true, reason: "这一轮用户不在场,这个工具用不了。" }
|
|
644
671
|
: undefined,
|
|
645
672
|
```
|
|
673
|
+
|
|
674
|
+
### 3.7 付费服务(内测)
|
|
675
|
+
|
|
676
|
+
在私聊展示服务卡,用户查看详情后可以完成不扣费的模拟购买。平台在购买成功后生成一份待启用服务凭证,创作者决定何时启用和终止。没有单独的授予凭证接口。群聊暂不支持。
|
|
677
|
+
|
|
678
|
+
**准备工作**
|
|
679
|
+
|
|
680
|
+
工程根目录放置 `services.json`,包含 `schemaVersion: 1` 与 `services` 数组。每项声明包含服务标识、版本、名称、可选通用说明、适用对象、计价单位、服务内容、开始/结束条件、不包含的服务和拟售价格。提交后需要平台审核;格式正确不等于已获准售卖。更改内容必须增加版本,不能覆盖旧版本。
|
|
681
|
+
|
|
682
|
+
```json
|
|
683
|
+
{
|
|
684
|
+
"schemaVersion": 1,
|
|
685
|
+
"services": [{
|
|
686
|
+
"serviceId": "plant_care",
|
|
687
|
+
"version": "1",
|
|
688
|
+
"name": "植物养护陪伴",
|
|
689
|
+
"description": "结合用户的记录提供养护安排和调整建议。",
|
|
690
|
+
"audience": "希望获得持续养护支持的用户",
|
|
691
|
+
"pricingUnitLabel": "一次养护计划",
|
|
692
|
+
"benefits": [{ "title": "养护计划", "description": "结合观察记录调整安排" }],
|
|
693
|
+
"serviceTerms": {
|
|
694
|
+
"startCondition": "购买后确认资料并开始",
|
|
695
|
+
"endCondition": "计划完成交付后结束"
|
|
696
|
+
},
|
|
697
|
+
"limitations": ["不含上门养护", "不保证植物恢复"],
|
|
698
|
+
"requestedPrice": { "amountMinor": 3900, "currency": "CNY" }
|
|
699
|
+
}]
|
|
700
|
+
}
|
|
701
|
+
```
|
|
702
|
+
|
|
703
|
+
文件缺失时不提交,旧工程升级后无需新增配置。文件存在则启动后独立提交:读取或提交失败只记录错误,不阻止搭子接收消息;本次新声明需成功提交并经审核后才可售卖,已审核版本和已购凭证不变。修复后可重新启动提交;删除文件不会自动撤回已发布服务。正式搭子和开发分身的声明分别审核。
|
|
704
|
+
|
|
705
|
+
**`conversation` 对象方法**
|
|
706
|
+
|
|
707
|
+
`conversation.service` 绑定当前私聊,不能传入其他用户或搭子的标识。旧 Runtime 可能没有此属性,接入时检查是否存在。
|
|
708
|
+
|
|
709
|
+
| 方法 | 做什么 |
|
|
710
|
+
| --- | --- |
|
|
711
|
+
| `showCard({serviceId,idempotencyKey,personalization})` | 平台准备服务记录后,将 `paidservice` 消息加入统一发送队列;返回不代表已送达,不支付、不创建凭证 |
|
|
712
|
+
| `readCurrentCredential({refresh?})` | 读取当前生效凭证快照;默认用缓存,事件失效、缓存过期或主动刷新时回源 |
|
|
713
|
+
| `listCredentials({state?,cursor?})` | 分页读取凭证;pending 表示已购买但尚未启用 |
|
|
714
|
+
| `activateCredential({credentialId,expectedRevision,idempotencyKey})` | 启用指定 pending 凭证;已有 active 凭证时拒绝 |
|
|
715
|
+
| `terminateCredential({credentialId,expectedRevision,idempotencyKey,reason})` | 终止当前 active 凭证,不删除凭证或订单,不执行退款 |
|
|
716
|
+
|
|
717
|
+
`serviceId` 是创作者定义、同一搭子内唯一的服务标识,不另设凭证类型;`credentialId` 是平台为每次成功购买生成的唯一凭证 ID,复购时生成新的 ID。读取当前凭证得到 `ServiceCredentialSnapshot`:`current` 是生效凭证或 null,`revision` 与刷新时间用于缓存校验,不代表服务有效期。
|
|
718
|
+
|
|
719
|
+
启用和终止返回 `{ credential, snapshot, reused }`:`credential` 是本次操作后的凭证,`snapshot` 是最新的当前生效凭证快照。`configureTurn({ credential })` 中的 `credential` 也是快照,使用 `credential.current` 判断本轮服务。
|
|
720
|
+
|
|
721
|
+
```ts
|
|
722
|
+
await BuddyServer.start((conversation) => {
|
|
723
|
+
if (!conversation.key.startsWith("p_")) {
|
|
724
|
+
return { initialState: { model: "deepseek-v4-flash", systemPrompt: "提供普通群聊帮助;购买和使用付费服务请前往私聊。", tools: [] } };
|
|
725
|
+
}
|
|
726
|
+
const service = conversation.service;
|
|
727
|
+
const showCard = conversation.tools.show_service_card;
|
|
728
|
+
if (!service || !showCard) throw new Error("请使用支持服务能力的 Runtime");
|
|
729
|
+
const basic = {
|
|
730
|
+
model: "deepseek-v4-flash" as const,
|
|
731
|
+
systemPrompt: "提供基础养护建议。用户希望持续养护且未拒绝推荐时,可展示 plant_care。",
|
|
732
|
+
tools: [showCard],
|
|
733
|
+
};
|
|
734
|
+
return {
|
|
735
|
+
initialState: basic,
|
|
736
|
+
configureTurn: ({ credential }) => credential.current?.serviceId === "plant_care"
|
|
737
|
+
? { model: "kimi-k3", systemPrompt: "按已购买服务的约定提供养护规划与调整。", tools: [] }
|
|
738
|
+
: basic,
|
|
739
|
+
onCredentialCreated: async (credential) => {
|
|
740
|
+
if (credential.serviceId !== "plant_care") return;
|
|
741
|
+
if ((await service.readCurrentCredential()).current) return;
|
|
742
|
+
// 该示例收到凭证即启用。需要准备资料时,可先保留 pending,条件满足后再启用。
|
|
743
|
+
await service.activateCredential({
|
|
744
|
+
credentialId: credential.credentialId,
|
|
745
|
+
expectedRevision: credential.revision,
|
|
746
|
+
idempotencyKey: `start:${credential.credentialId}`,
|
|
747
|
+
});
|
|
748
|
+
},
|
|
749
|
+
};
|
|
750
|
+
});
|
|
751
|
+
```
|
|
752
|
+
|
|
753
|
+
`configureTurn` 仅在私聊的新回合边界返回完整的模型、提示词和工具配置。凭证来自平台,不让模型从聊天文本判断是否付费。平台提示、鉴权和数据授权保护保留,既有对话历史保留。正在执行的回合按原配置完成;执行中追加的用户消息仍沿用原来的 steering 交互,不为切换凭证强制拆成新回合。下一个独立用户回合或主动服务回合再应用新配置。
|
|
754
|
+
|
|
755
|
+
凭证查询暂时失败时,当前输入仍进入基础对话:使用 `initialState` 的模型和提示词,暂不开放工具,并告知模型付费能力暂不可用。查询失败不等于未购买,不调用 `configureTurn` 的无凭证分支,也不修改或终止凭证;查询恢复后的新回合按真实凭证恢复配置。`initialState` 应保留基础交流所需的人设与模型,不能依赖它的工具完成这个兜底。
|
|
756
|
+
|
|
757
|
+
群聊使用工厂的 `initialState`,不读取个人服务凭证,不调用 `configureTurn` 或 `onCredentialCreated`,并从模型工具列表移除 `show_service_card`。普通模型配置、其他工具和 Widget 不受影响。开发者应像示例一样先按会话类型分流:群聊不得注册自己的付费服务工具,也不得通过跨会话变量、闭包或持久记录复用私聊的付费配置与数据。此限制不包含对任意创作者代码的执行隔离。
|
|
758
|
+
|
|
759
|
+
示例不包含业务计时和计次:创作者应持久保存自己的交付进度,满足结束条件后调用 `terminateCredential`。不能只依赖会被回收的会话闭包变量。
|
|
760
|
+
|
|
761
|
+
需要计时、计次与重启恢复的完整接入参考,见 [观察记录示例](examples/service-buddy/README.md)。
|
|
762
|
+
|
|
763
|
+
**模型工具**
|
|
764
|
+
|
|
765
|
+
把 `conversation.tools.show_service_card` 加入当前配置的工具列表。参数为 `serviceId` 与必填的 `personalization`:必须包含 `cardSummary`(1–200 字符),可选 `buttonText`、`needSummary`、`contextItems`。卡片介绍由搭子基于本次对话生成;详情介绍取 `needSummary`,缺失时取声明 `description`,两者皆无则隐藏。价格、服务名称和交付承诺来自审核版本,不能由工具改写。
|
|
766
|
+
|
|
767
|
+
`personalization.buttonText` 是聊天服务卡的可选按钮文案,省略时显示「查看方案」。传入时需为 1–20 字符的有效文本,平台去除首尾空白;空白文本或超长文本会被拒绝。例如 `{ serviceId: "care", personalization: { cardSummary: "根据你这盆植物的情况安排养护", buttonText: "了解养护方案" } }`。按钮始终打开服务详情,不直接购买,也不影响详情页的「去购买/已购买」。同一张卡重试或再次展示时保留首次保存的文案。
|
|
768
|
+
|
|
769
|
+
工具只在普通用户私聊回合可调用,自动绑定当前用户消息和工具调用幂等键。成功入队后本轮停止;卡片沿用普通消息的顺序、重试和历史读取链路。内测购买由用户点击触发,不向模型提供付款工具。
|
|
770
|
+
|
|
771
|
+
`showCard()` 返回 `{ offerId, reused, queued: true }`,仅表示服务记录已准备、消息已入队。旧内测返回中的 `messageId`、`timestamp` 已弃用,类型暂保留为可选字段,新链路不再填入。Server、Runtime 和客户端需配套更新。发送队列只提交 `paidservice: { offerId }`;平台校验归属后补齐卡片内容,调用方不能在写消息时改写名称、价格或购买状态。
|
|
772
|
+
|
|
773
|
+
**限制与异常**
|
|
774
|
+
|
|
775
|
+
- 购买与启用分开;同服务复购可产生多份 pending 凭证,但同一用户在同一搭子下只能有一份 active 凭证。
|
|
776
|
+
- 同一用户在当前搭子下有 pending 或 active 服务凭证时,平台拒绝创建新服务卡,同一服务也不能再发新卡。收到已有服务的错误后,不换服务或参数重试,应继续提供已有服务。旧卡幂等恢复、查看已购详情与历史记录不受影响;无待开始或进行中的服务后可重新发卡。
|
|
777
|
+
- 群聊直接调用 `conversation.service` 的发卡、读取、启用或终止方法均会报错;平台接口也校验会话类型。
|
|
778
|
+
- `onCredentialCreated` 可能重放,副作用需按 `credentialId` 幂等。回调成功后确认事件;未启用的凭证仍可通过列表查询。回调不保证发起模型回复。
|
|
779
|
+
- 直接调用服务 SDK 的操作失败时仍抛异常,不伪报成功。仅运行时在回合边界读取凭证失败时按上述规则保留基础对话;创作者配置代码自身的异常不在此兜底范围。写操作不自动重试;使用同一幂等键恢复原操作,版本冲突时读取最新状态再决定。
|
|
780
|
+
- 模拟购买不设内测开关或白名单;仍需用户登录、私聊归属及已审核服务。展示拟售价格,实付为 0,不调用真实支付。
|
|
781
|
+
- 同一张服务卡仅对应一次购买意图,重复点击或重开详情会返回原购买结果。复购需要新一轮用户意图对应的新卡。
|
|
782
|
+
- `activateCredential` / `terminateCredential` 保留授权数据的长期写入保护;服务凭证不能替代用户的数据授权。
|
|
783
|
+
- 未配置 `configureTurn` 时,模型、提示词、工具仍沿用原来的一次性工厂配置。仅写入凭证不会自动猜测应该更换哪些能力。
|
|
@@ -4,9 +4,12 @@ import type { Api, Model } from "@earendil-works/pi-ai";
|
|
|
4
4
|
import type { MLBClient, WidgetType } from "../mlbClient.ts";
|
|
5
5
|
import { DataAccessUsageTracker } from "../tools/dataAccess.ts";
|
|
6
6
|
import type { Resource } from "../tools/resource.ts";
|
|
7
|
+
import type { ServiceEvent } from "../services/types.ts";
|
|
7
8
|
import type { BuddyFactory, BuddyLogger, DataRequirement, MLBMessageToWrite } from "../types.ts";
|
|
8
9
|
export interface AgentDeps {
|
|
9
|
-
/**
|
|
10
|
+
/** 当前普通用户回合的真实来源消息;模型参数不能覆盖。 */
|
|
11
|
+
sourceMessage?: () => string | undefined;
|
|
12
|
+
/** 这场会话的发送队列:小挂件引用、服务引用、权限请求卡、题卡都放进来 */
|
|
10
13
|
enqueueMessage: (message: MLBMessageToWrite) => void;
|
|
11
14
|
/** 发了一张等用户操作的卡(权限请求卡、题卡):这张卡算这一轮说过的话 */
|
|
12
15
|
onWaitingForUser: () => void;
|
|
@@ -32,6 +35,9 @@ export interface AgentDeps {
|
|
|
32
35
|
}
|
|
33
36
|
/** createAgent 建好的:Agent、这场会话的模型条目、授权数据记账,以及开发者配的兜底话 */
|
|
34
37
|
export interface CreatedAgent {
|
|
38
|
+
prepareTurn: () => Promise<Model<Api>>;
|
|
39
|
+
handleServiceEvent: (event: ServiceEvent) => Promise<void>;
|
|
40
|
+
invalidateCredential: () => void;
|
|
35
41
|
agent: Agent;
|
|
36
42
|
/** 按开发者 initialState.model 造的模型条目:重建历史时抄身份、判断收不收图片都按它 */
|
|
37
43
|
model: Model<Api>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../src/conversation/agent.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../src/conversation/agent.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,KAAK,EAAE,MAAM,+BAA+B,CAAC;AACtD,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AAExF,OAAO,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAGxD,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAI7D,OAAO,EAAyF,sBAAsB,EAAuB,MAAM,wBAAwB,CAAC;AAE5K,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAOrD,OAAO,KAAK,EAAE,YAAY,EAA6B,MAAM,sBAAsB,CAAC;AACpF,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAA8B,eAAe,EAAE,iBAAiB,EAAiB,MAAM,aAAa,CAAC;AAE5I,MAAM,WAAW,SAAS;IACzB,gCAAgC;IAChC,aAAa,CAAC,EAAE,MAAM,MAAM,GAAG,SAAS,CAAC;IACzC,wCAAwC;IACxC,cAAc,EAAE,CAAC,OAAO,EAAE,iBAAiB,KAAK,IAAI,CAAC;IACrD,wCAAwC;IACxC,gBAAgB,EAAE,MAAM,IAAI,CAAC;IAC7B,oFAAoF;IACpF,YAAY,EAAE,MAAM,IAAI,CAAC;IACzB,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,SAAS,CAAC;IAClB,uEAAuE;IACvE,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,QAAQ,CAAC;IACnB,iEAAiE;IACjE,KAAK,EAAE,MAAM,CAAC;IACd,+DAA+D;IAC/D,WAAW,EAAE,UAAU,EAAE,CAAC;IAC1B,uDAAuD;IACvD,SAAS,EAAE,QAAQ,EAAE,CAAC;IACtB,gBAAgB,EAAE,SAAS,eAAe,EAAE,CAAC;IAC7C,OAAO,EAAE,YAAY,CAAC;IACtB,GAAG,EAAE,WAAW,CAAC;IACjB,oCAAoC;IACpC,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,KAAK,IAAI,CAAC;CACnD;AAED,wDAAwD;AACxD,MAAM,WAAW,YAAY;IAC5B,WAAW,EAAE,MAAM,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;IACvC,kBAAkB,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3D,oBAAoB,EAAE,MAAM,IAAI,CAAC;IACjC,KAAK,EAAE,KAAK,CAAC;IACb,yDAAyD;IACzD,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;IAClB,eAAe,EAAE,sBAAsB,CAAC;IACxC,iFAAiF;IACjF,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;CAC/B;AAED,kFAAkF;AAClF,wBAAsB,WAAW,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO,CAAC,YAAY,CAAC,CAqQxE;AAED;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,iHAAuB,CAAC;AAEtD,iEAAiE;AACjE,wBAAgB,eAAe,CAAC,QAAQ,EAAE,YAAY,EAAE,EAAE,GAAG,EAAE,MAAM,GAAG,YAAY,EAAE,CAErF;AAED,iDAAiD;AACjD,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAQxD;AAED,2DAA2D;AAC3D,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAa1D"}
|
|
@@ -1,14 +1,16 @@
|
|
|
1
1
|
// 一场会话的 Agent 怎么建:运行时先把该填的填好,开发者的配置叠上去。
|
|
2
2
|
// 管:造好这场会话的平台工具,拼好交给开发者工厂的 Conversation(会话键、日志、平台工具、进程启动时读好的资料、绑好会话键的记忆、授权数据查询、权限请求、主动服务与小挂件),跑工厂拿配置;
|
|
3
3
|
// systemPrompt 按 平台的(GET /internal/v1/system-prompt,每场会话建 Agent 时拉一次)→ 开发者的 拼,段间空一行;
|
|
4
|
-
//
|
|
4
|
+
// 工具清单由开发者的 initialState.tools 决定(平台工具也是开发者从 conversation.tools 取来放进去的),群聊移除 show_service_card 后查重名;
|
|
5
5
|
// 按 initialState.model 造网关的模型条目(id 运行时不支持就 throw,这场会话起不来);开发者显式设的 thinkingLevel 这个模型不支持时打一条 warn,写明支持哪几档、实际会怎么发;
|
|
6
6
|
// 钩子叠加——开发者的 beforeToolCall / afterToolCall 包一层授权数据记账,beforeToolCall 抛错时打 warn 再抛给 pi(工具不执行,模型看到错误);
|
|
7
7
|
// 发了等用户操作的卡(权限请求卡、题卡)的那一轮,shouldStopAfterTurn 在这一步收尾后停下;其余直通;
|
|
8
8
|
// 主动服务回合本身不改变工具权限;DataAccess 数据策略仍照常生效,其他限制由开发者在 beforeToolCall 里按 conversation.proactive.isRunning() 自己拦;
|
|
9
9
|
// transformContext 由运行时自己装、不开放给开发者:每次请求模型在历史末尾接一条写当前时间的 user 消息,不进会话历史;
|
|
10
10
|
// 每次请求模型的请求体全量打日志,图片换成字节数;响应收完再打一条「模型响应」:内容、结束原因、usage(含缓存命中)、总耗时与首字耗时。主动回合也一样。
|
|
11
|
-
//
|
|
11
|
+
// 私聊的 configureTurn 在回合边界返回完整配置时,保留平台规则、鉴权与历史,替换模型/开发者提示/工具;凭证查询失败保留基础对话但不开放工具,不伪造空凭证;
|
|
12
|
+
// 服务事件只调用同一私聊的创作者回调,不直接开模型回合,不改变追加消息的 steering 行为。
|
|
13
|
+
// 不管:回合和事件调度(index.ts)、服务业务计时计次。
|
|
12
14
|
import { Agent } from "@earendil-works/pi-agent-core";
|
|
13
15
|
import { clampThinkingLevel, getSupportedThinkingLevels } from "@earendil-works/pi-ai";
|
|
14
16
|
import { agentMessagesToLLMMessages } from "./agentMessageLLMMessageConverter.js";
|
|
@@ -22,9 +24,12 @@ import { assertUniqueToolNames } from "../tools/registry.js";
|
|
|
22
24
|
import { widgetTools } from "../tools/widget.js";
|
|
23
25
|
import { dataAccessRequestTool, validateDataAccessRequest } from "../tools/dataAccessRequest.js";
|
|
24
26
|
import { proactiveTools, validateProactiveSubscribe } from "../tools/proactive.js";
|
|
27
|
+
import { serviceCardTool } from "../tools/service.js";
|
|
28
|
+
import { ServiceSession } from "../services/session.js";
|
|
25
29
|
/** 跑开发者工厂拿配置,叠上运行时预置,建 Agent。模型 id 运行时不支持、工具清单重名、拉平台 system prompt 失败 → throw。 */
|
|
26
30
|
export async function createAgent(deps) {
|
|
27
31
|
const dataAccessUsage = new DataAccessUsageTracker();
|
|
32
|
+
const supportsServices = deps.key.startsWith("p_");
|
|
28
33
|
/** 这一轮发了等用户操作的卡(权限请求卡、题卡):shouldStopAfterTurn 在这一步收尾后停下,不再请求模型 */
|
|
29
34
|
let waitingForUser = false;
|
|
30
35
|
const waitForUser = () => {
|
|
@@ -32,11 +37,13 @@ export async function createAgent(deps) {
|
|
|
32
37
|
deps.onWaitingForUser();
|
|
33
38
|
};
|
|
34
39
|
const { client } = deps;
|
|
40
|
+
const service = new ServiceSession(client, deps.key, () => dataAccessUsage.isProactive() ? undefined : deps.sourceMessage?.(), waitForUser, () => dataAccessUsage.guardPersistence("服务凭证操作(长期留存)"), deps.enqueueMessage);
|
|
35
41
|
// 平台工具:每场会话造一份、绑好会话键,挂在 conversation.tools 上由开发者挑。背后没数据时照样造:
|
|
36
42
|
// 没资料、没声明 Dataset、没有小挂件类型,工具照常注册,调用时回空结果或报错
|
|
37
43
|
const [widgetCreate, widgetRead, widgetReadModule, widgetRename, widgetWriteRecord, widgetDeleteRecord, widgetDelete, widgetSend] = widgetTools(client, deps.key, deps.widgetTypes, deps.enqueueMessage, dataAccessUsage);
|
|
38
44
|
const [proactiveSubscribe, proactiveList, proactiveUnsubscribe, proactiveUnsubscribeAll] = proactiveTools(client, deps.key, deps.dataRequirements, dataAccessUsage);
|
|
39
45
|
const platformTools = {
|
|
46
|
+
show_service_card: serviceCardTool(service.api),
|
|
40
47
|
proactive_subscribe: proactiveSubscribe,
|
|
41
48
|
proactive_list: proactiveList,
|
|
42
49
|
proactive_unsubscribe: proactiveUnsubscribe,
|
|
@@ -57,6 +64,7 @@ export async function createAgent(deps) {
|
|
|
57
64
|
};
|
|
58
65
|
// 这些方法在主动服务回合里跟普通回合一样能调:运行时不按回合性质拦,开发者要限制就在 beforeToolCall 里按 proactive.isRunning() 拦
|
|
59
66
|
const conversation = {
|
|
67
|
+
service: service.api,
|
|
60
68
|
key: deps.key,
|
|
61
69
|
log: deps.log,
|
|
62
70
|
tools: platformTools,
|
|
@@ -133,7 +141,8 @@ export async function createAgent(deps) {
|
|
|
133
141
|
const model = createModel(deps.gatewayUrl, options.initialState.model);
|
|
134
142
|
// 平台的 system prompt 拉失败就 throw:这场会话起不来,等下一条消息再重建
|
|
135
143
|
const platformPrompt = await deps.client.systemPrompt(deps.key);
|
|
136
|
-
|
|
144
|
+
// 群聊保留普通工具;服务卡不暴露给模型。SDK 仍保留私聊校验,防止代码直接调用。
|
|
145
|
+
const devTools = (options.initialState.tools ?? []).filter(tool => supportsServices || tool.name !== "show_service_card");
|
|
137
146
|
assertUniqueToolNames(devTools);
|
|
138
147
|
const tools = devTools.map((tool) => dataAccessUsage.track(tool));
|
|
139
148
|
const { log, key } = deps;
|
|
@@ -241,7 +250,58 @@ export async function createAgent(deps) {
|
|
|
241
250
|
}
|
|
242
251
|
deps.onEvent(agent, event);
|
|
243
252
|
});
|
|
244
|
-
|
|
253
|
+
const applyConfiguration = (config, serviceState) => {
|
|
254
|
+
const nextModel = createModel(deps.gatewayUrl, config.model);
|
|
255
|
+
if (typeof config.systemPrompt !== "string")
|
|
256
|
+
throw new Error("configureTurn 需要返回完整 systemPrompt");
|
|
257
|
+
const nextTools = config.tools ?? [];
|
|
258
|
+
assertUniqueToolNames(nextTools);
|
|
259
|
+
const tracked = nextTools.map(tool => dataAccessUsage.track(tool));
|
|
260
|
+
// 全部校验后一起应用;平台提示与 DataAccess Gate 保留,历史不改。
|
|
261
|
+
agent.state.model = nextModel;
|
|
262
|
+
agent.state.systemPrompt = [platformPrompt, serviceState, config.systemPrompt].filter(part => part !== undefined).join("\n\n");
|
|
263
|
+
agent.state.tools = tracked;
|
|
264
|
+
agent.state.thinkingLevel = config.thinkingLevel ?? "off";
|
|
265
|
+
toolByName.clear();
|
|
266
|
+
for (const tool of tracked)
|
|
267
|
+
toolByName.set(tool.name, tool);
|
|
268
|
+
return nextModel;
|
|
269
|
+
};
|
|
270
|
+
return {
|
|
271
|
+
agent, model, dataAccessUsage, errorReply: options.errorReply,
|
|
272
|
+
invalidateCredential: () => service.invalidate(),
|
|
273
|
+
prepareTurn: async () => {
|
|
274
|
+
if (!supportsServices || !options.configureTurn)
|
|
275
|
+
return agent.state.model;
|
|
276
|
+
let credential;
|
|
277
|
+
try {
|
|
278
|
+
credential = await service.api.readCurrentCredential();
|
|
279
|
+
}
|
|
280
|
+
catch {
|
|
281
|
+
// 查询未知不是未购买;不修改缓存或调用创作者的无凭证分支,也不复用上轮付费工具。
|
|
282
|
+
log.warn("服务凭证暂时无法核验,本轮仅提供基础对话", { convoKey: key });
|
|
283
|
+
return applyConfiguration({ ...options.initialState, tools: [] }, "平台服务状态:凭证校验暂不可用。");
|
|
284
|
+
}
|
|
285
|
+
return applyConfiguration(await options.configureTurn({ credential }));
|
|
286
|
+
},
|
|
287
|
+
handleServiceEvent: async (event) => {
|
|
288
|
+
if (!supportsServices || event.convoKey !== deps.key)
|
|
289
|
+
return;
|
|
290
|
+
service.invalidate();
|
|
291
|
+
if (event.type !== "credential_created" || !options.onCredentialCreated)
|
|
292
|
+
return;
|
|
293
|
+
let cursor;
|
|
294
|
+
do {
|
|
295
|
+
const page = await service.api.listCredentials({ state: "pending", cursor });
|
|
296
|
+
const credential = page.items.find(item => item.credentialId === event.credentialId);
|
|
297
|
+
if (credential) {
|
|
298
|
+
await options.onCredentialCreated(credential);
|
|
299
|
+
return;
|
|
300
|
+
}
|
|
301
|
+
cursor = page.nextCursor;
|
|
302
|
+
} while (cursor);
|
|
303
|
+
},
|
|
304
|
+
};
|
|
245
305
|
}
|
|
246
306
|
/**
|
|
247
307
|
* 每次请求模型时接在历史末尾那条 user 消息的正文;现在的时间由 convertToLlm 按这条消息的 timestamp 拼在开头。
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent.js","sourceRoot":"","sources":["../../src/conversation/agent.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"agent.js","sourceRoot":"","sources":["../../src/conversation/agent.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import type { AgentMessage, StreamFn } from "@earendil-works/pi-agent-core";
|
|
2
2
|
import type { MLBClient, WidgetType } from "../mlbClient.ts";
|
|
3
3
|
import type { Resource } from "../tools/resource.ts";
|
|
4
|
-
import type { BuddyFactory, BuddyLogger, DataRequirement, ProactiveRun, ProactiveSkip } from "../types.ts";
|
|
4
|
+
import type { BuddyFactory, BuddyLogger, DataRequirement, ProactiveRun, ProactiveSkip, WidgetChangeRun } from "../types.ts";
|
|
5
|
+
import type { ServiceEvent } from "../services/types.ts";
|
|
5
6
|
import type { CompactionSnapshot } from "./compaction.ts";
|
|
6
7
|
export interface ConversationHandleDeps {
|
|
7
8
|
/** 平台会话键:p_ 私聊、g_ 群 */
|
|
@@ -38,6 +39,9 @@ export declare class ConversationHandle {
|
|
|
38
39
|
private readonly writer;
|
|
39
40
|
/** 懒建:第一次拉到消息时跑 factory 再 new */
|
|
40
41
|
private agent;
|
|
42
|
+
private created;
|
|
43
|
+
/** 与主 Agent 相同的模型条目;Widget 快速二元判断用它发一条独立、无工具、低思考请求。 */
|
|
44
|
+
private model;
|
|
41
45
|
private dataAccessUsage;
|
|
42
46
|
/** 每条 assistant 工具步生成参数前是否已经见过授权数据;message_end 记下,turn_end 写回时使用。 */
|
|
43
47
|
private readonly dataAccessTaintedSteps;
|
|
@@ -61,6 +65,9 @@ export declare class ConversationHandle {
|
|
|
61
65
|
/** 正在跑主动服务回合:不推 delta、不开 replying、正文不按普通回合写回(开口的那条收尾时写,带这次 Run 的凭据),用户这时说话就打断它 */
|
|
62
66
|
private proactiveRun;
|
|
63
67
|
private proactiveTask;
|
|
68
|
+
private widgetChangeTask;
|
|
69
|
+
private widgetChangeReplying;
|
|
70
|
+
private widgetChangeDecisionAbort;
|
|
64
71
|
private deferredDuringProactive;
|
|
65
72
|
constructor(deps: ConversationHandleDeps);
|
|
66
73
|
/** 正在跑回合(含收尾:等发平台的队列清空) */
|
|
@@ -78,9 +85,23 @@ export declare class ConversationHandle {
|
|
|
78
85
|
snapshotForCompaction(): CompactionSnapshot | undefined;
|
|
79
86
|
/** SSE message / welcome 到了:让 reader 拉一次,welcome 另记下会话刚建好。已退役的直接忽略 */
|
|
80
87
|
notify(welcome?: boolean): void;
|
|
81
|
-
/**
|
|
82
|
-
|
|
88
|
+
/** 服务事件不启动模型回合;已关闭时拒绝确认,让持久事件在新会话重试。 */
|
|
89
|
+
handleServiceEvent(event: ServiceEvent): Promise<void>;
|
|
90
|
+
invalidateCredential(): void;
|
|
91
|
+
private prepareTurn;
|
|
83
92
|
runProactive(run: ProactiveRun): Promise<ProactiveSkip | undefined>;
|
|
93
|
+
/** Widget 详情页关闭后的隐藏回合:不推 delta;模型确定要回复后才短暂打开思考态,[[SILENT]] 不打扰。 */
|
|
94
|
+
runWidgetChange(run: WidgetChangeRun): Promise<"reply" | "silent" | "failed">;
|
|
95
|
+
private runWidgetChangeWhenIdle;
|
|
96
|
+
private executeWidgetChange;
|
|
97
|
+
/**
|
|
98
|
+
* 不动主 Agent 历史、不给工具,只用同一模型做一次极短二元判断。REPLY 后先开思考态,再让主 Agent 生成正文;
|
|
99
|
+
* 判断失败时回 unknown,调用方退回原先单次生成 + 流式标记方案,不因此漏掉高风险提醒。
|
|
100
|
+
*/
|
|
101
|
+
private decideWidgetChange;
|
|
102
|
+
/** 模型的流式正文一旦已经不可能是纯 [[SILENT]],就说明它决定开口;此时立刻把思考态送给客户端。 */
|
|
103
|
+
private observeWidgetChangeText;
|
|
104
|
+
private beginWidgetChangeReplying;
|
|
84
105
|
private executeProactive;
|
|
85
106
|
/**
|
|
86
107
|
* SSE delete 到了(或 server 空闲淘汰、stop、会话起不来):先标退役,再打断正在跑的回合,等回合收尾。可以重复调。
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/conversation/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/conversation/index.ts"],"names":[],"mappings":"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"}
|