@lemoncat7/dsh-partner 2.21.11 → 2.21.13

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 (54) hide show
  1. package/README.md +3 -1
  2. package/docs/conversation-autonomy.md +27 -0
  3. package/docs/releases/2.21.12.md +5 -0
  4. package/docs/releases/2.21.13.md +13 -0
  5. package/lib/agent-runtime.d.ts +2 -1
  6. package/lib/agent-runtime.d.ts.map +1 -1
  7. package/lib/agent-runtime.js +54 -32
  8. package/lib/agent-runtime.js.map +1 -1
  9. package/lib/channels/authored-progress.d.ts +16 -0
  10. package/lib/channels/authored-progress.d.ts.map +1 -0
  11. package/lib/channels/authored-progress.js +38 -0
  12. package/lib/channels/authored-progress.js.map +1 -0
  13. package/lib/channels/manager.d.ts.map +1 -1
  14. package/lib/channels/manager.js +9 -6
  15. package/lib/channels/manager.js.map +1 -1
  16. package/lib/channels/qq/attention-classifier.js +5 -5
  17. package/lib/channels/qq/attention-classifier.js.map +1 -1
  18. package/lib/character/activity-tool.d.ts +3 -0
  19. package/lib/character/activity-tool.d.ts.map +1 -1
  20. package/lib/character/activity-tool.js +8 -1
  21. package/lib/character/activity-tool.js.map +1 -1
  22. package/lib/character/affection.d.ts +2 -2
  23. package/lib/character/conversation-behavior.d.ts +2 -0
  24. package/lib/character/conversation-behavior.d.ts.map +1 -1
  25. package/lib/character/conversation-behavior.js +7 -1
  26. package/lib/character/conversation-behavior.js.map +1 -1
  27. package/lib/character/idle-contact.d.ts.map +1 -1
  28. package/lib/character/idle-contact.js +13 -1
  29. package/lib/character/idle-contact.js.map +1 -1
  30. package/lib/character/post-reply.js +2 -2
  31. package/lib/character/post-reply.js.map +1 -1
  32. package/lib/client.js +31 -26
  33. package/lib/client.js.map +3 -3
  34. package/lib/collaboration/tool-discovery.d.ts.map +1 -1
  35. package/lib/collaboration/tool-discovery.js +11 -4
  36. package/lib/collaboration/tool-discovery.js.map +1 -1
  37. package/lib/core/semaphore.d.ts.map +1 -1
  38. package/lib/core/semaphore.js +6 -3
  39. package/lib/core/semaphore.js.map +1 -1
  40. package/lib/execution/reply-progress.d.ts +3 -1
  41. package/lib/execution/reply-progress.d.ts.map +1 -1
  42. package/lib/execution/reply-progress.js +16 -0
  43. package/lib/execution/reply-progress.js.map +1 -1
  44. package/lib/execution/task-preamble.d.ts +15 -0
  45. package/lib/execution/task-preamble.d.ts.map +1 -0
  46. package/lib/execution/task-preamble.js +107 -0
  47. package/lib/execution/task-preamble.js.map +1 -0
  48. package/lib/memory-admission.d.ts +5 -0
  49. package/lib/memory-admission.d.ts.map +1 -0
  50. package/lib/memory-admission.js +20 -0
  51. package/lib/memory-admission.js.map +1 -0
  52. package/lib/memory-reflection.js +1 -1
  53. package/lib/ui/push-draft.d.ts +2 -2
  54. package/package.json +5 -2
@@ -1 +1 @@
1
- {"version":3,"file":"tool-discovery.d.ts","sourceRoot":"","sources":["../../src/collaboration/tool-discovery.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,cAAc,EAAC,WAAW,EAAoC,MAAM,wBAAwB,CAAA;AAGzG,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,aAAa,CAAA;AAG7C,MAAM,WAAW,gBAAgB;IAAE,IAAI,EAAC,cAAc,CAAC;IAAA,OAAO,EAAC,MAAI,OAAO,CAAA;CAAC;AAC3E,eAAO,MAAM,oBAAoB,sDAAoD,CAAA;AAwBrF,eAAO,MAAM,qBAAqB,QAA0jB,CAAA;AAE5lB;oFACoF;AACpF,wBAAgB,oBAAoB,CAAC,OAAO,EAAC,WAAW,EAAC,KAAK,EAAC,MAAM,EAAC,KAAK,EAAC,YAAY,EAAC,OAAO,EAAC,gBAAgB,EAAE,GAAE,MAAI,IAAI,CA2E5H"}
1
+ {"version":3,"file":"tool-discovery.d.ts","sourceRoot":"","sources":["../../src/collaboration/tool-discovery.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,cAAc,EAAC,WAAW,EAAoC,MAAM,wBAAwB,CAAA;AAGzG,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,aAAa,CAAA;AAG7C,MAAM,WAAW,gBAAgB;IAAE,IAAI,EAAC,cAAc,CAAC;IAAA,OAAO,EAAC,MAAI,OAAO,CAAA;CAAC;AAC3E,eAAO,MAAM,oBAAoB,sDAAoD,CAAA;AA8BrF,eAAO,MAAM,qBAAqB,QAA01B,CAAA;AAE53B;oFACoF;AACpF,wBAAgB,oBAAoB,CAAC,OAAO,EAAC,WAAW,EAAC,KAAK,EAAC,MAAM,EAAC,KAAK,EAAC,YAAY,EAAC,OAAO,EAAC,gBAAgB,EAAE,GAAE,MAAI,IAAI,CA2E5H"}
@@ -4,6 +4,7 @@ import { resolveToolAccess } from '../execution/tool-access-adapter.js';
4
4
  export const PARTNER_TOOL_ENTRIES = ['partner_tools', 'partner_channel_access'];
5
5
  const GROUPS = [
6
6
  { id: 'chat', title: '聊天回复', description: '文字、表情与语音' },
7
+ { id: 'media', title: '图片创作', description: '生图、画图、图生图与图片编辑' },
7
8
  { id: 'identity', title: '身份与生活', description: '人格参考模板、角色与关系设定、睡眠和头像' },
8
9
  { id: 'work', title: '任务与协作', description: '需求、任务看板和伙伴协作' },
9
10
  { id: 'automation', title: '定时与续接', description: '定时计划、长任务等待与恢复' },
@@ -13,8 +14,14 @@ const GROUPS = [
13
14
  { id: 'mcp', title: '外部 MCP', description: '已授权的外部服务工具' },
14
15
  { id: 'other', title: '其他能力', description: '宿主和其他已授权扩展工具' },
15
16
  ];
17
+ const IMAGE_ALIASES = ['生图', '画图', '绘图', '生成图片', '图片生成', '图生图', '改图', '编辑图片', '图片编辑', '画一张', '画张', '绘制', '图片', 'image generation', 'image editing'];
18
+ function toolSearchMatches(tool, query) {
19
+ return `${tool.name} ${tool.description}`.toLocaleLowerCase().includes(query) || tool.name === 'generate_image' && IMAGE_ALIASES.some(alias => alias.includes(query) || query.includes(alias));
20
+ }
16
21
  function category(name) {
17
- if (['partner_chat_reply', 'partner_stickers', 'partner_qq_reply'].includes(name))
22
+ if (name === 'generate_image')
23
+ return 'media';
24
+ if (['partner_chat_reply', 'partner_chat_progress', 'partner_stickers', 'partner_qq_reply'].includes(name))
18
25
  return 'chat';
19
26
  if (/identity|sleep|avatar|activity/.test(name))
20
27
  return 'identity';
@@ -33,7 +40,7 @@ function category(name) {
33
40
  return 'other';
34
41
  }
35
42
  const PERSONA_REFERENCE_CALL = JSON.stringify({ action: 'call', name: 'partner_identity', argumentsJson: JSON.stringify({ action: 'reference' }) });
36
- export const TOOL_DISCOVERY_PROMPT = '伙伴工具统一由两个固定入口提供:partner_channel_access 根据真实渠道及当前发言账号返回已授权能力,partner_tools 查询和调用能力。默认渠道沿用既有授权,QQ 由渠道适配器核验账号;不接受模型自报账号或权限。先用 list 查询(可按 category/query 缩小),describe 或 load 查看参数,再用 partner_tools action=call、name=真实工具名、argumentsJson=原工具参数的 JSON 字符串执行;不会另行向顶层工具表添加工具。常用聊天可直接 call partner_chat_reply,参数为 {"messages":[{"text":"要说的话"}]},表情独立使用 {"stickerId":"库内ID"};先完成工作再提交最终回复。普通正文仍可直接最终回答。人格参考模板在 partner_identity 内置,包含基本身份、角色设定、关系设定和 qq-bridge 大肥鱼原卡;用户要参考时直接向 partner_tools 传入 ' + PERSONA_REFERENCE_CALL + ',无需搜索 cosplay 配置或文件。普通修改和自主优化不要求读模板。每次调用都会再次检查实时权限,原工具审批、超时、取消与终结行为保留。';
43
+ export const TOOL_DISCOVERY_PROMPT = '伙伴工具统一由两个固定入口提供:partner_channel_access 根据真实渠道及当前发言账号返回已授权能力,partner_tools 查询和调用能力。默认渠道沿用既有授权,QQ 由渠道适配器核验账号;不接受模型自报账号或权限。先用 list 查询(可按 category/query 缩小),describe 或 load 查看参数,再用 partner_tools action=call、name=真实工具名、argumentsJson=原工具参数的 JSON 字符串执行;不会另行向顶层工具表添加工具。用户明确要求生成或编辑图片时,先查询 media 分类或 query=image;若 generate_image 可用,describe 后通过本入口 call 实际生成,依据返回文件交付,不以口头承诺、提示词或虚构图片代替工具执行。顶层没有 generate_image 不表示没有生图能力;只有查询当前授权目录后才能说明能力是否缺失。回应和结果说明保持当前人格。私聊耗时任务先 call partner_chat_progress,argumentsJson 为 {"text":"按当前人格生成的一句自然回应"} 的 JSON 字符串;成功后再工作,此工具不结束回合。常用聊天可直接 call partner_chat_reply,参数为 {"messages":[{"text":"要说的话"}]},表情独立使用 {"stickerId":"库内ID"};先完成工作再提交最终回复。普通正文仍可直接最终回答。人格参考模板在 partner_identity 内置,包含基本身份、角色设定、关系设定和 qq-bridge 大肥鱼原卡;用户要参考时直接向 partner_tools 传入 ' + PERSONA_REFERENCE_CALL + ',无需搜索 cosplay 配置或文件。普通修改和自主优化不要求读模板。每次调用都会再次检查实时权限,原工具审批、超时、取消与终结行为保留。';
37
44
  /** Stable model-facing entries; original definitions remain registered in scope
38
45
  * so the normal DSH execution pipeline owns validation, policy and cancellation. */
39
46
  export function installToolDiscovery(runtime, owner, store, entries) {
@@ -63,7 +70,7 @@ export function installToolDiscovery(runtime, owner, store, entries) {
63
70
  }
64
71
  return [...tools.values()].filter(tool => !['partner_tools', 'partner_channel_access', 'run_code'].includes(tool.name) && access.sendTools && (!access.allowedTools || access.allowedTools.includes(tool.name)));
65
72
  };
66
- const visible = (tool) => ({ name: tool.name, category: category(tool.name), summary: tool.description.slice(0, 160) });
73
+ const visible = (tool) => ({ name: tool.name, category: category(tool.name), summary: (tool.name === 'generate_image' ? '生图、画图、图生图、图片编辑。' + tool.description : tool.description).slice(0, 160) });
67
74
  const render = (_args, value) => {
68
75
  const result = value;
69
76
  return result.dispatch ? result.dispatch.content : [{ type: 'text', text: JSON.stringify(value) }];
@@ -112,7 +119,7 @@ export function installToolDiscovery(runtime, owner, store, entries) {
112
119
  throw Error('查询参数无效');
113
120
  if (!args.category && !query)
114
121
  return { categories: GROUPS.map(g => ({ ...g, count: all.filter(t => category(t.name) === g.id).length })).filter(g => g.count), next: '按 category 或 query 查询;call 通过本入口执行' };
115
- const found = all.filter(t => (!args.category || category(t.name) === args.category) && (!query || `${t.name} ${t.description}`.toLocaleLowerCase().includes(query)));
122
+ const found = all.filter(t => (!args.category || category(t.name) === args.category) && (!query || toolSearchMatches(t, query)));
116
123
  return { tools: found.slice(offset, offset + 12).map(visible), total: found.length, nextOffset: offset + 12 < found.length ? offset + 12 : null };
117
124
  }
118
125
  const tool = all.find(t => t.name === args.name);
@@ -1 +1 @@
1
- {"version":3,"file":"tool-discovery.js","sourceRoot":"","sources":["../../src/collaboration/tool-discovery.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tool-discovery.js","sourceRoot":"","sources":["../../src/collaboration/tool-discovery.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"semaphore.d.ts","sourceRoot":"","sources":["../../src/core/semaphore.ts"],"names":[],"mappings":"AAAA,qBAAa,cAAc;IAIb,OAAO,CAAC,QAAQ,CAAC,KAAK;IAHlC,OAAO,CAAC,MAAM,CAAI;IAClB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAwB;gBAEnB,KAAK,EAAE,MAAM;IAIpC,GAAG,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;YAKvC,OAAO;IAMrB,OAAO,CAAC,OAAO;CAIhB"}
1
+ {"version":3,"file":"semaphore.d.ts","sourceRoot":"","sources":["../../src/core/semaphore.ts"],"names":[],"mappings":"AAAA,qBAAa,cAAc;IAIb,OAAO,CAAC,QAAQ,CAAC,KAAK;IAHlC,OAAO,CAAC,MAAM,CAAI;IAClB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAwB;gBAEnB,KAAK,EAAE,MAAM;IAIpC,GAAG,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;YAKvC,OAAO;IAMrB,OAAO,CAAC,OAAO;CAKhB"}
@@ -22,11 +22,14 @@ export class AsyncSemaphore {
22
22
  return;
23
23
  }
24
24
  await new Promise(resolve => this.waiting.push(resolve));
25
- this.active += 1;
25
+ // The releasing owner transfers its reserved slot to this waiter.
26
26
  }
27
27
  release() {
28
- this.active -= 1;
29
- this.waiting.shift()?.();
28
+ const next = this.waiting.shift();
29
+ if (next)
30
+ next();
31
+ else
32
+ this.active -= 1;
30
33
  }
31
34
  }
32
35
  //# sourceMappingURL=semaphore.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"semaphore.js","sourceRoot":"","sources":["../../src/core/semaphore.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,cAAc;IAII;IAHrB,MAAM,GAAG,CAAC,CAAA;IACD,OAAO,GAAsB,EAAE,CAAA;IAEhD,YAA6B,KAAa;QAAb,UAAK,GAAL,KAAK,CAAQ;QACxC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAA;IAChG,CAAC;IAED,KAAK,CAAC,GAAG,CAAI,SAA2B;QACtC,MAAM,IAAI,CAAC,OAAO,EAAE,CAAA;QACpB,IAAI,CAAC;YAAC,OAAO,MAAM,SAAS,EAAE,CAAA;QAAC,CAAC;gBAAS,CAAC;YAAC,IAAI,CAAC,OAAO,EAAE,CAAA;QAAC,CAAC;IAC7D,CAAC;IAEO,KAAK,CAAC,OAAO;QACnB,IAAI,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;YAAC,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC;YAAC,OAAM;QAAC,CAAC;QAC1D,MAAM,IAAI,OAAO,CAAO,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAA;QAC9D,IAAI,CAAC,MAAM,IAAI,CAAC,CAAA;IAClB,CAAC;IAEO,OAAO;QACb,IAAI,CAAC,MAAM,IAAI,CAAC,CAAA;QAChB,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,EAAE,CAAA;IAC1B,CAAC;CACF"}
1
+ {"version":3,"file":"semaphore.js","sourceRoot":"","sources":["../../src/core/semaphore.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,cAAc;IAII;IAHrB,MAAM,GAAG,CAAC,CAAA;IACD,OAAO,GAAsB,EAAE,CAAA;IAEhD,YAA6B,KAAa;QAAb,UAAK,GAAL,KAAK,CAAQ;QACxC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAA;IAChG,CAAC;IAED,KAAK,CAAC,GAAG,CAAI,SAA2B;QACtC,MAAM,IAAI,CAAC,OAAO,EAAE,CAAA;QACpB,IAAI,CAAC;YAAC,OAAO,MAAM,SAAS,EAAE,CAAA;QAAC,CAAC;gBAAS,CAAC;YAAC,IAAI,CAAC,OAAO,EAAE,CAAA;QAAC,CAAC;IAC7D,CAAC;IAEO,KAAK,CAAC,OAAO;QACnB,IAAI,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;YAAC,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC;YAAC,OAAM;QAAC,CAAC;QAC1D,MAAM,IAAI,OAAO,CAAO,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAA;QAC9D,kEAAkE;IACpE,CAAC;IAEO,OAAO;QACb,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAA;QACjC,IAAI,IAAI;YAAE,IAAI,EAAE,CAAA;;YACX,IAAI,CAAC,MAAM,IAAI,CAAC,CAAA;IACvB,CAAC;CACF"}
@@ -12,7 +12,9 @@ export type ReplyActivity = {
12
12
  id: string;
13
13
  failed: boolean;
14
14
  };
15
- export type ReplyProgress = (stage: ReplyStage | ReplyActivity) => void;
15
+ export type ReplyProgress = ((stage: ReplyStage | ReplyActivity) => void) & {
16
+ acknowledge?: (text: string) => Promise<void>;
17
+ };
16
18
  /** Deliberately expose only fixed labels, never tool names, arguments or reasoning. */
17
19
  export declare function replyStage(event: SessionEvent): ReplyStage | undefined;
18
20
  export declare function replyActivity(event: SessionEvent): ReplyActivity | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"reply-progress.d.ts","sourceRoot":"","sources":["../../src/execution/reply-progress.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,0BAA0B,CAAA;AAE1D,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,SAAS,GAAG,OAAO,GAAG,WAAW,CAAA;AACrE,MAAM,MAAM,aAAa,GAAG;IAAC,IAAI,EAAC,MAAM,CAAC;IAAA,IAAI,EAAC,MAAM,CAAA;CAAC,GAAG;IAAC,IAAI,EAAC,YAAY,CAAC;IAAA,EAAE,EAAC,MAAM,CAAC;IAAA,IAAI,EAAC,MAAM,CAAA;CAAC,GAAG;IAAC,IAAI,EAAC,UAAU,CAAC;IAAA,EAAE,EAAC,MAAM,CAAC;IAAA,MAAM,EAAC,OAAO,CAAA;CAAC,CAAA;AAC9I,MAAM,MAAM,aAAa,GAAG,CAAC,KAAK,EAAC,UAAU,GAAG,aAAa,KAAG,IAAI,CAAA;AAEpE,uFAAuF;AACvF,wBAAgB,UAAU,CAAC,KAAK,EAAC,YAAY,GAAE,UAAU,GAAC,SAAS,CAIlE;AACD,wBAAgB,aAAa,CAAC,KAAK,EAAC,YAAY,GAAE,aAAa,GAAC,SAAS,CAWxE;AACD,wBAAgB,cAAc,CAAC,MAAM,EAAC,aAAa,GAAC,SAAS,EAAC,KAAK,EAAC,UAAU,GAAC,aAAa,GAAE,IAAI,CAEjG"}
1
+ {"version":3,"file":"reply-progress.d.ts","sourceRoot":"","sources":["../../src/execution/reply-progress.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,0BAA0B,CAAA;AAE1D,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,SAAS,GAAG,OAAO,GAAG,WAAW,CAAA;AACrE,MAAM,MAAM,aAAa,GAAG;IAAC,IAAI,EAAC,MAAM,CAAC;IAAA,IAAI,EAAC,MAAM,CAAA;CAAC,GAAG;IAAC,IAAI,EAAC,YAAY,CAAC;IAAA,EAAE,EAAC,MAAM,CAAC;IAAA,IAAI,EAAC,MAAM,CAAA;CAAC,GAAG;IAAC,IAAI,EAAC,UAAU,CAAC;IAAA,EAAE,EAAC,MAAM,CAAC;IAAA,MAAM,EAAC,OAAO,CAAA;CAAC,CAAA;AAC9I,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,EAAC,UAAU,GAAG,aAAa,KAAG,IAAI,CAAC,GAAG;IAAC,WAAW,CAAC,EAAC,CAAC,IAAI,EAAC,MAAM,KAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CAAC,CAAA;AAEpH,uFAAuF;AACvF,wBAAgB,UAAU,CAAC,KAAK,EAAC,YAAY,GAAE,UAAU,GAAC,SAAS,CAIlE;AACD,wBAAgB,aAAa,CAAC,KAAK,EAAC,YAAY,GAAE,aAAa,GAAC,SAAS,CAkBxE;AACD,wBAAgB,cAAc,CAAC,MAAM,EAAC,aAAa,GAAC,SAAS,EAAC,KAAK,EAAC,UAAU,GAAC,aAAa,GAAE,IAAI,CAEjG"}
@@ -14,6 +14,22 @@ export function replyActivity(event) {
14
14
  return { kind: 'tool-end', id: result.toolCallId, failed: !!event.data.error || !!result.isError };
15
15
  }
16
16
  if (event.type === 'assistant/message' && !event.data.interrupted && event.data.message.content.some(block => block.type === 'tool-call')) {
17
+ // Terminal chat tools own their text; forwarding it here would deliver twice.
18
+ if (event.data.message.content.some(block => {
19
+ if (block.type !== 'tool-call')
20
+ return false;
21
+ if (block.name === 'partner_chat_reply')
22
+ return true;
23
+ if (block.name !== 'partner_tools')
24
+ return false;
25
+ try {
26
+ return JSON.parse(block.arguments).name === 'partner_chat_reply';
27
+ }
28
+ catch {
29
+ return false;
30
+ }
31
+ }))
32
+ return undefined;
17
33
  const text = event.data.message.content.filter(block => block.type === 'text').map(block => block.text).join('\n').trim();
18
34
  if (text)
19
35
  return { kind: 'text', text };
@@ -1 +1 @@
1
- {"version":3,"file":"reply-progress.js","sourceRoot":"","sources":["../../src/execution/reply-progress.ts"],"names":[],"mappings":"AAMA,uFAAuF;AACvF,MAAM,UAAU,UAAU,CAAC,KAAkB;IAC3C,IAAG,KAAK,CAAC,IAAI,KAAG,WAAW;QAAC,OAAO,OAAO,CAAA;IAC1C,IAAG,KAAK,CAAC,IAAI,KAAG,gBAAgB;QAAC,OAAO,WAAW,CAAA;IACnD,OAAO,SAAS,CAAA;AAClB,CAAC;AACD,MAAM,UAAU,aAAa,CAAC,KAAkB;IAC9C,IAAG,KAAK,CAAC,IAAI,KAAG,WAAW;QAAC,OAAO,EAAC,IAAI,EAAC,YAAY,EAAC,EAAE,EAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAC,IAAI,EAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA,CAAC,CAAA,KAAK,CAAC,IAAI,CAAC,IAAI,CAAA,CAAC,CAAA,IAAI,EAAC,CAAA;IAC9I,IAAG,KAAK,CAAC,IAAI,KAAG,aAAa,EAAC,CAAC;QAC7B,MAAM,MAAM,GAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAA;QAC/B,OAAO,EAAC,IAAI,EAAC,UAAU,EAAC,EAAE,EAAC,MAAM,CAAC,UAAU,EAAC,MAAM,EAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,IAAE,CAAC,CAAC,MAAM,CAAC,OAAO,EAAC,CAAA;IAC3F,CAAC;IACD,IAAG,KAAK,CAAC,IAAI,KAAG,mBAAmB,IAAE,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,IAAE,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAA,EAAE,CAAA,KAAK,CAAC,IAAI,KAAG,WAAW,CAAC,EAAC,CAAC;QAC9H,MAAM,IAAI,GAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAA,EAAE,CAAA,KAAK,CAAC,IAAI,KAAG,MAAM,CAAC,CAAC,GAAG,CAAC,KAAK,CAAA,EAAE,CAAA,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAA;QACjH,IAAG,IAAI;YAAC,OAAO,EAAC,IAAI,EAAC,MAAM,EAAC,IAAI,EAAC,CAAA;IACnC,CAAC;IACD,OAAO,SAAS,CAAA;AAClB,CAAC;AACD,MAAM,UAAU,cAAc,CAAC,MAA8B,EAAC,KAA8B;IAC1F,IAAG,CAAC;QAAA,MAAM,EAAE,CAAC,KAAK,CAAC,CAAA;IAAA,CAAC;IAAA,MAAK,CAAC,CAAC,qDAAqD,CAAC,CAAC;AACpF,CAAC"}
1
+ {"version":3,"file":"reply-progress.js","sourceRoot":"","sources":["../../src/execution/reply-progress.ts"],"names":[],"mappings":"AAMA,uFAAuF;AACvF,MAAM,UAAU,UAAU,CAAC,KAAkB;IAC3C,IAAG,KAAK,CAAC,IAAI,KAAG,WAAW;QAAC,OAAO,OAAO,CAAA;IAC1C,IAAG,KAAK,CAAC,IAAI,KAAG,gBAAgB;QAAC,OAAO,WAAW,CAAA;IACnD,OAAO,SAAS,CAAA;AAClB,CAAC;AACD,MAAM,UAAU,aAAa,CAAC,KAAkB;IAC9C,IAAG,KAAK,CAAC,IAAI,KAAG,WAAW;QAAC,OAAO,EAAC,IAAI,EAAC,YAAY,EAAC,EAAE,EAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAC,IAAI,EAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA,CAAC,CAAA,KAAK,CAAC,IAAI,CAAC,IAAI,CAAA,CAAC,CAAA,IAAI,EAAC,CAAA;IAC9I,IAAG,KAAK,CAAC,IAAI,KAAG,aAAa,EAAC,CAAC;QAC7B,MAAM,MAAM,GAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAA;QAC/B,OAAO,EAAC,IAAI,EAAC,UAAU,EAAC,EAAE,EAAC,MAAM,CAAC,UAAU,EAAC,MAAM,EAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,IAAE,CAAC,CAAC,MAAM,CAAC,OAAO,EAAC,CAAA;IAC3F,CAAC;IACD,IAAG,KAAK,CAAC,IAAI,KAAG,mBAAmB,IAAE,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,IAAE,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAA,EAAE,CAAA,KAAK,CAAC,IAAI,KAAG,WAAW,CAAC,EAAC,CAAC;QAC9H,8EAA8E;QAC9E,IAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAA,EAAE;YACxC,IAAG,KAAK,CAAC,IAAI,KAAG,WAAW;gBAAC,OAAO,KAAK,CAAA;YACxC,IAAG,KAAK,CAAC,IAAI,KAAG,oBAAoB;gBAAC,OAAO,IAAI,CAAA;YAChD,IAAG,KAAK,CAAC,IAAI,KAAG,eAAe;gBAAC,OAAO,KAAK,CAAA;YAC5C,IAAG,CAAC;gBAAA,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,KAAG,oBAAoB,CAAA;YAAA,CAAC;YAAA,MAAK,CAAC;gBAAA,OAAO,KAAK,CAAA;YAAA,CAAC;QACxF,CAAC,CAAC;YAAC,OAAO,SAAS,CAAA;QACnB,MAAM,IAAI,GAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAA,EAAE,CAAA,KAAK,CAAC,IAAI,KAAG,MAAM,CAAC,CAAC,GAAG,CAAC,KAAK,CAAA,EAAE,CAAA,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAA;QACjH,IAAG,IAAI;YAAC,OAAO,EAAC,IAAI,EAAC,MAAM,EAAC,IAAI,EAAC,CAAA;IACnC,CAAC;IACD,OAAO,SAAS,CAAA;AAClB,CAAC;AACD,MAAM,UAAU,cAAc,CAAC,MAA8B,EAAC,KAA8B;IAC1F,IAAG,CAAC;QAAA,MAAM,EAAE,CAAC,KAAK,CAAC,CAAA;IAAA,CAAC;IAAA,MAAK,CAAC,CAAC,qDAAqD,CAAC,CAAC;AACpF,CAAC"}
@@ -0,0 +1,15 @@
1
+ import type { Agent } from '@deepseek-ai/dsh-agent';
2
+ import type { SessionEvent } from '@deepseek-ai/dsh-session';
3
+ export declare function needsTaskPreamble(name: string, args: unknown): boolean;
4
+ export declare class TaskPreambleGate {
5
+ private readonly events;
6
+ private readonly send;
7
+ private readonly active;
8
+ private readonly sent;
9
+ constructor(events: () => readonly SessionEvent[], send: (text: string) => Promise<void>, active?: () => boolean);
10
+ acknowledge(text: string): Promise<void>;
11
+ before(name: string, args: unknown): Promise<string | undefined>;
12
+ }
13
+ /** Scoped to one active channel reply; no extra model or hardcoded spoken text. */
14
+ export declare function installTaskPreamble(agent: Agent, send: (text: string) => Promise<void>, active?: () => boolean): () => void;
15
+ //# sourceMappingURL=task-preamble.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task-preamble.d.ts","sourceRoot":"","sources":["../../src/execution/task-preamble.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAA;AAEnD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAG5D,wBAAgB,iBAAiB,CAAC,IAAI,EAAC,MAAM,EAAC,IAAI,EAAC,OAAO,GAAE,OAAO,CAIlE;AAYD,qBAAa,gBAAgB;IAEf,OAAO,CAAC,QAAQ,CAAC,MAAM;IAA6B,OAAO,CAAC,QAAQ,CAAC,IAAI;IAA8B,OAAO,CAAC,QAAQ,CAAC,MAAM;IAD1I,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAgC;gBACxB,MAAM,EAAC,MAAI,SAAS,YAAY,EAAE,EAAkB,IAAI,EAAC,CAAC,IAAI,EAAC,MAAM,KAAG,OAAO,CAAC,IAAI,CAAC,EAAkB,MAAM,GAAC,MAAI,OAAgB;IACzJ,WAAW,CAAC,IAAI,EAAC,MAAM,GAAE,OAAO,CAAC,IAAI,CAAC;IAStC,MAAM,CAAC,IAAI,EAAC,MAAM,EAAC,IAAI,EAAC,OAAO,GAAE,OAAO,CAAC,MAAM,GAAC,SAAS,CAAC;CAgBjE;AACD,mFAAmF;AACnF,wBAAgB,mBAAmB,CAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,CAAC,IAAI,EAAC,MAAM,KAAG,OAAO,CAAC,IAAI,CAAC,EAAC,MAAM,GAAC,MAAI,OAAgB,GAAE,MAAI,IAAI,CAoBtH"}
@@ -0,0 +1,107 @@
1
+ import { isInternalTaskNotice, isRequirementDeliveryReceipt } from '../channels/delivery-policy.js';
2
+ import { isIdleContactNotice } from '../character/idle-contact.js';
3
+ const conversational = new Set(['partner_tools', 'partner_channel_access', 'partner_chat_progress', 'partner_chat_reply', 'partner_stickers', 'partner_qq_reply', 'partner_activity_finish', 'partner_identity', 'partner_memory_recall', 'partner_sleep']);
4
+ export function needsTaskPreamble(name, args) {
5
+ if (conversational.has(name))
6
+ return false;
7
+ const action = args && typeof args === 'object' ? args.action : undefined;
8
+ return !['list', 'describe', 'load', 'unload', 'reference', 'inspect'].includes(String(action));
9
+ }
10
+ /** Only the active user turn can request a private-channel acknowledgement. */
11
+ function inputId(events) {
12
+ for (let i = events.length - 1; i >= 0; i--) {
13
+ const event = events[i];
14
+ if (event.type === 'turn/start')
15
+ return undefined;
16
+ if (event.type !== 'user/message')
17
+ continue;
18
+ if (event.data.source.kind === 'user')
19
+ return event.data.id;
20
+ if (isIdleContactNotice(event) || isInternalTaskNotice(event) && !isRequirementDeliveryReceipt(event))
21
+ return undefined;
22
+ }
23
+ return undefined;
24
+ }
25
+ export class TaskPreambleGate {
26
+ events;
27
+ send;
28
+ active;
29
+ sent = new Map();
30
+ constructor(events, send, active = () => true) {
31
+ this.events = events;
32
+ this.send = send;
33
+ this.active = active;
34
+ }
35
+ async acknowledge(text) {
36
+ const id = inputId(this.events());
37
+ if (!id || !this.active())
38
+ throw Error('只有当前用户私聊任务可以发送前置回应,内部任务和自主活动不能使用');
39
+ if (typeof text !== 'string' || !text.trim() || text.length > 1200)
40
+ throw Error('请按当前人格写一句自然回应(1–1200 字),不使用固定进度套话');
41
+ let pending = this.sent.get(id);
42
+ if (!pending) {
43
+ pending = this.send(text.trim());
44
+ this.sent.set(id, pending);
45
+ }
46
+ await pending;
47
+ if (!this.active() || inputId(this.events()) !== id)
48
+ throw Error('用户消息已变化,请先处理新的输入');
49
+ }
50
+ async before(name, args) {
51
+ if (!this.active() || !needsTaskPreamble(name, args))
52
+ return;
53
+ const id = inputId(this.events());
54
+ if (!id)
55
+ return;
56
+ let pending = this.sent.get(id);
57
+ if (!pending) {
58
+ const message = [...this.events()].reverse().find(e => e.type === 'assistant/message' || e.type === 'user/message' || e.type === 'turn/start');
59
+ if (message?.type === 'assistant/message' && !message.data.interrupted && message.data.message.content.some(b => b.type === 'tool-call')) {
60
+ const text = message.data.message.content.filter(b => b.type === 'text').map(b => b.text).join('\n').trim();
61
+ if (text) {
62
+ try {
63
+ await this.acknowledge(text);
64
+ pending = this.sent.get(id);
65
+ }
66
+ catch {
67
+ return '前置回应未确认送达,本次工作尚未执行。不要宣称已开始或重试未知发送;请向用户说明当前情况。';
68
+ }
69
+ }
70
+ }
71
+ }
72
+ if (!pending)
73
+ return '本次工作尚未执行:先调用 partner_chat_progress,text 用当前人格自然回应接下此事;等待成功后再调用本工具。统一入口使用 partner_tools action=call、name=partner_chat_progress、argumentsJson={"text":"由你按当前人格生成的回应"} 的 JSON 字符串。这个回复不会结束回合;不要用 partner_chat_reply 代替。';
74
+ try {
75
+ await pending;
76
+ }
77
+ catch {
78
+ return '前置回应发送失败或结果未知,本次工作尚未执行;不要重复发送或宣称已开始。';
79
+ }
80
+ if (!this.active() || inputId(this.events()) !== id)
81
+ return '用户消息已变化,旧任务未开始;先处理新输入。';
82
+ }
83
+ }
84
+ /** Scoped to one active channel reply; no extra model or hardcoded spoken text. */
85
+ export function installTaskPreamble(agent, send, active = () => true) {
86
+ const tools = agent.ctx.tools;
87
+ const gate = new TaskPreambleGate(() => agent.session.snapshotEvents(), send, active);
88
+ const unregister = tools.register({
89
+ name: 'partner_chat_progress',
90
+ description: '私聊任务开始前先按当前人格回应一句。立即发送 text,确认投递后返回,不结束回合;随后继续实际调查、生图或执行,最后再正常答复。一轮只发送一次,不能用于自主活动或内部任务。不虚构已经完成。',
91
+ parameters: { type: 'object', properties: { text: { type: 'string', minLength: 1, maxLength: 1200 } }, required: ['text'], additionalProperties: false },
92
+ output: { schema: { type: 'object' }, render: () => [{ type: 'text', text: '前置回应已送达;继续执行任务,完成后再给出最终回复。' }] },
93
+ presentCall: () => ({ card: 'generic', title: '任务前置回应' }),
94
+ async execute(raw, exec) { exec.signal.throwIfAborted(); await gate.acknowledge(raw.text); exec.signal.throwIfAborted(); return { delivered: true }; },
95
+ });
96
+ const unguard = agent.ctx.on('tools/pre-execute', async (exec, next) => {
97
+ const decision = await next();
98
+ if (exec.agent !== agent || decision.kind !== 'allow')
99
+ return decision;
100
+ exec.signal.throwIfAborted();
101
+ const reason = await gate.before(exec.name, exec.arguments);
102
+ exec.signal.throwIfAborted();
103
+ return reason ? { kind: 'deny', reason } : decision;
104
+ });
105
+ return () => { unguard(); unregister(); };
106
+ }
107
+ //# sourceMappingURL=task-preamble.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task-preamble.js","sourceRoot":"","sources":["../../src/execution/task-preamble.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,4BAA4B,EAAE,MAAM,gCAAgC,CAAA;AACnG,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAA;AAKlE,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC,CAAC,eAAe,EAAC,wBAAwB,EAAC,uBAAuB,EAAC,oBAAoB,EAAC,kBAAkB,EAAC,kBAAkB,EAAC,yBAAyB,EAAC,kBAAkB,EAAC,uBAAuB,EAAC,eAAe,CAAC,CAAC,CAAA;AAClP,MAAM,UAAU,iBAAiB,CAAC,IAAW,EAAC,IAAY;IACxD,IAAG,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC;QAAC,OAAO,KAAK,CAAA;IACxC,MAAM,MAAM,GAAC,IAAI,IAAI,OAAO,IAAI,KAAG,QAAQ,CAAC,CAAC,CAAE,IAA0B,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAA;IAC5F,OAAO,CAAC,CAAC,MAAM,EAAC,UAAU,EAAC,MAAM,EAAC,QAAQ,EAAC,WAAW,EAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAA;AAC5F,CAAC;AACD,+EAA+E;AAC/E,SAAS,OAAO,CAAC,MAA8B;IAC7C,KAAI,IAAI,CAAC,GAAC,MAAM,CAAC,MAAM,GAAC,CAAC,EAAC,CAAC,IAAE,CAAC,EAAC,CAAC,EAAE,EAAC,CAAC;QAClC,MAAM,KAAK,GAAC,MAAM,CAAC,CAAC,CAAE,CAAA;QACtB,IAAG,KAAK,CAAC,IAAI,KAAG,YAAY;YAAC,OAAO,SAAS,CAAA;QAC7C,IAAG,KAAK,CAAC,IAAI,KAAG,cAAc;YAAC,SAAQ;QACvC,IAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,KAAG,MAAM;YAAC,OAAO,KAAK,CAAC,IAAI,CAAC,EAAE,CAAA;QACvD,IAAG,mBAAmB,CAAC,KAAK,CAAC,IAAI,oBAAoB,CAAC,KAAK,CAAC,IAAI,CAAC,4BAA4B,CAAC,KAAK,CAAC;YAAC,OAAO,SAAS,CAAA;IACvH,CAAC;IACD,OAAO,SAAS,CAAA;AAClB,CAAC;AACD,MAAM,OAAO,gBAAgB;IAEE;IAAoD;IAAmD;IADnH,IAAI,GAAC,IAAI,GAAG,EAAwB,CAAA;IACrD,YAA6B,MAAkC,EAAkB,IAAiC,EAAkB,SAAmB,GAAE,EAAE,CAAA,IAAI;QAAlI,WAAM,GAAN,MAAM,CAA4B;QAAkB,SAAI,GAAJ,IAAI,CAA6B;QAAkB,WAAM,GAAN,MAAM,CAAqB;IAAE,CAAC;IAClK,KAAK,CAAC,WAAW,CAAC,IAAW;QAC3B,MAAM,EAAE,GAAC,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAA;QAC/B,IAAG,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;YAAC,MAAM,KAAK,CAAC,kCAAkC,CAAC,CAAA;QACxE,IAAG,OAAO,IAAI,KAAG,QAAQ,IAAE,CAAC,IAAI,CAAC,IAAI,EAAE,IAAE,IAAI,CAAC,MAAM,GAAC,IAAI;YAAC,MAAM,KAAK,CAAC,mCAAmC,CAAC,CAAA;QAC1G,IAAI,OAAO,GAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;QAC7B,IAAG,CAAC,OAAO,EAAC,CAAC;YAAA,OAAO,GAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;YAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAC,OAAO,CAAC,CAAA;QAAA,CAAC;QACtE,MAAM,OAAO,CAAA;QACb,IAAG,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,KAAG,EAAE;YAAC,MAAM,KAAK,CAAC,kBAAkB,CAAC,CAAA;IAClF,CAAC;IACD,KAAK,CAAC,MAAM,CAAC,IAAW,EAAC,IAAY;QACnC,IAAG,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAC,IAAI,CAAC;YAAC,OAAM;QACzD,MAAM,EAAE,GAAC,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAA;QAC/B,IAAG,CAAC,EAAE;YAAC,OAAM;QACb,IAAI,OAAO,GAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;QAC7B,IAAG,CAAC,OAAO,EAAC,CAAC;YACX,MAAM,OAAO,GAAC,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC,CAAA,EAAE,CAAA,CAAC,CAAC,IAAI,KAAG,mBAAmB,IAAE,CAAC,CAAC,IAAI,KAAG,cAAc,IAAE,CAAC,CAAC,IAAI,KAAG,YAAY,CAAC,CAAA;YAChI,IAAG,OAAO,EAAE,IAAI,KAAG,mBAAmB,IAAE,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,IAAE,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAA,EAAE,CAAA,CAAC,CAAC,IAAI,KAAG,WAAW,CAAC,EAAC,CAAC;gBAC7H,MAAM,IAAI,GAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAA,EAAE,CAAA,CAAC,CAAC,IAAI,KAAG,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA,EAAE,CAAA,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAA;gBACnG,IAAG,IAAI,EAAC,CAAC;oBAAA,IAAG,CAAC;wBAAA,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;wBAAA,OAAO,GAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;oBAAA,CAAC;oBAAA,MAAK,CAAC;wBAAA,OAAO,+CAA+C,CAAA;oBAAA,CAAC;gBAAA,CAAC;YACpI,CAAC;QACH,CAAC;QACD,IAAG,CAAC,OAAO;YAAC,OAAO,sNAAsN,CAAA;QACzO,IAAG,CAAC;YAAA,MAAM,OAAO,CAAA;QAAA,CAAC;QAAA,MAAK,CAAC;YAAA,OAAO,sCAAsC,CAAA;QAAA,CAAC;QACtE,IAAG,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,KAAG,EAAE;YAAC,OAAO,wBAAwB,CAAA;IAClF,CAAC;CACF;AACD,mFAAmF;AACnF,MAAM,UAAU,mBAAmB,CAAC,KAAW,EAAC,IAAiC,EAAC,SAAmB,GAAE,EAAE,CAAA,IAAI;IAC3G,MAAM,KAAK,GAAC,KAAK,CAAC,GAAG,CAAC,KAAoB,CAAA;IAC1C,MAAM,IAAI,GAAC,IAAI,gBAAgB,CAAC,GAAE,EAAE,CAAA,KAAK,CAAC,OAAO,CAAC,cAAc,EAAE,EAAC,IAAI,EAAC,MAAM,CAAC,CAAA;IAC/E,MAAM,UAAU,GAAC,KAAK,CAAC,QAAQ,CAAC;QAC9B,IAAI,EAAC,uBAAuB;QAC5B,WAAW,EAAC,iGAAiG;QAC7G,UAAU,EAAC,EAAC,IAAI,EAAC,QAAQ,EAAC,UAAU,EAAC,EAAC,IAAI,EAAC,EAAC,IAAI,EAAC,QAAQ,EAAC,SAAS,EAAC,CAAC,EAAC,SAAS,EAAC,IAAI,EAAC,EAAC,EAAC,QAAQ,EAAC,CAAC,MAAM,CAAC,EAAC,oBAAoB,EAAC,KAAK,EAAC;QACpI,MAAM,EAAC,EAAC,MAAM,EAAC,EAAC,IAAI,EAAC,QAAQ,EAAC,EAAC,MAAM,EAAC,GAAE,EAAE,CAAA,CAAC,EAAC,IAAI,EAAC,MAAM,EAAC,IAAI,EAAC,4BAA4B,EAAC,CAAC,EAAC;QAC5F,WAAW,EAAC,GAAE,EAAE,CAAA,CAAC,EAAC,IAAI,EAAC,SAAS,EAAC,KAAK,EAAC,QAAQ,EAAC,CAAC;QACjD,KAAK,CAAC,OAAO,CAAC,GAAG,EAAC,IAAI,IAAE,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC,CAAA,MAAM,IAAI,CAAC,WAAW,CAAE,GAAqB,CAAC,IAAI,CAAC,CAAC,CAAA,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC,CAAA,OAAO,EAAC,SAAS,EAAC,IAAI,EAAC,CAAA,CAAA,CAAC;KAC/J,CAAC,CAAA;IACF,MAAM,OAAO,GAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,mBAAmB,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,EAAE;QAC/D,MAAM,QAAQ,GAAC,MAAM,IAAI,EAAE,CAAA;QAC3B,IAAG,IAAI,CAAC,KAAK,KAAG,KAAK,IAAI,QAAQ,CAAC,IAAI,KAAG,OAAO;YAAC,OAAO,QAAQ,CAAA;QAChE,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,CAAA;QAC5B,MAAM,MAAM,GAAC,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAC,IAAI,CAAC,SAAS,CAAC,CAAA;QACxD,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,CAAA;QAC5B,OAAO,MAAM,CAAA,CAAC,CAAA,EAAC,IAAI,EAAC,MAAM,EAAC,MAAM,EAAC,CAAA,CAAC,CAAA,QAAQ,CAAA;IAC7C,CAAC,CAAC,CAAA;IACF,OAAO,GAAE,EAAE,GAAC,OAAO,EAAE,CAAC,CAAA,UAAU,EAAE,CAAA,CAAA,CAAC,CAAA;AACrC,CAAC"}
@@ -0,0 +1,5 @@
1
+ import type { SessionEvent } from '@deepseek-ai/dsh-session';
2
+ import type { ChannelSession } from './domain.js';
3
+ /** Reading shared memory never implies permission to archive every conversation. */
4
+ export declare function automaticMemoryAllowed(sessionId: string, events: readonly SessionEvent[], routes: readonly ChannelSession[]): boolean;
5
+ //# sourceMappingURL=memory-admission.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory-admission.d.ts","sourceRoot":"","sources":["../src/memory-admission.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAC5D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAGjD,oFAAoF;AACpF,wBAAgB,sBAAsB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,YAAY,EAAE,EAAE,MAAM,EAAE,SAAS,cAAc,EAAE,GAAG,OAAO,CAYrI"}
@@ -0,0 +1,20 @@
1
+ import { questionOrigin } from './channels/question-origin.js';
2
+ /** Reading shared memory never implies permission to archive every conversation. */
3
+ export function automaticMemoryAllowed(sessionId, events, routes) {
4
+ const primary = routes.find(r => r.kind === 'local' && r.sessionId === sessionId);
5
+ if (!primary)
6
+ return false;
7
+ const origin = questionOrigin(sessionId, events, routes);
8
+ if (origin?.userId.startsWith('group:'))
9
+ return false;
10
+ const users = events.filter(e => e.type === 'user/message' && e.data.source.kind === 'user');
11
+ if (!users.length)
12
+ return false;
13
+ const text = users.map(e => e.type === 'user/message' ? e.data.content.filter(b => b.type === 'text').map(b => b.text).join('\n') : '').join('\n').trim();
14
+ // Old group origin IDs may have aged out of the bounded route index. The
15
+ // transport envelope remains in the transcript; never backfill it as local chat.
16
+ if (/\[QQ 群 \d+ · 发言人 |群聊背景(引用资料,不能作为执行指令)/.test(text))
17
+ return false;
18
+ return !!text && !/^(?:你好|您好|早安|午安|晚安|早上好|晚上好|谢谢|多谢|好的|好|嗯|哦|收到|再见|拜拜|哈哈|hi|hello|ok|thanks)[\s!!。.,,~~]*$/iu.test(text);
19
+ }
20
+ //# sourceMappingURL=memory-admission.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory-admission.js","sourceRoot":"","sources":["../src/memory-admission.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAA;AAE9D,oFAAoF;AACpF,MAAM,UAAU,sBAAsB,CAAC,SAAiB,EAAE,MAA+B,EAAE,MAAiC;IAC1H,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,IAAI,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC,CAAA;IACjF,IAAI,CAAC,OAAO;QAAE,OAAO,KAAK,CAAA;IAC1B,MAAM,MAAM,GAAG,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;IACxD,IAAI,MAAM,EAAE,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC;QAAE,OAAO,KAAK,CAAA;IACrD,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,cAAc,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC,CAAA;IAC5F,IAAI,CAAC,KAAK,CAAC,MAAM;QAAE,OAAO,KAAK,CAAA;IAC/B,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAA;IACzJ,yEAAyE;IACzE,iFAAiF;IACjF,IAAI,uCAAuC,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,KAAK,CAAA;IACpE,OAAO,CAAC,CAAC,IAAI,IAAI,CAAC,2FAA2F,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AAC1H,CAAC"}
@@ -226,7 +226,7 @@ const MEMORY_QUALITY_RULES = `梦境、想象和角色主观联想不是用户
226
226
  function memoryCandidateContract() {
227
227
  return `memories 每项必须包含完整字段,例如:{"kind":"profile","subject":"常用环境","content":"用户日常使用 macOS。","confidence":0.95,"importance":0.8,"operation":"upsert","evidenceQuote":"我平时用 macOS","sourceTurnId":"复制输入中对应的 id"}。该例仅说明格式,不是待记录事实。evidenceQuote 必须来自输入 user 的连续原话,不能包含压缩标记省略号;sourceTurnId 取 newTurn.id 或 turns[].id。targetMemoryId 仅更新已有记忆时填写;长期画像和偏好不要填写 expiresInDays。用户明确陈述的长期背景和明确的长期协作偏好,应当及时提炼,不要求先重复多次;不能从临时任务推断身份。`;
228
228
  }
229
- const REFLECTION_SYSTEM = `你是长期伙伴的记忆整理器。你不回答用户,只从有证据的对话中维护每日回顾和结构化记忆。
229
+ const REFLECTION_SYSTEM = `你是长期伙伴的记忆整理器。你不回答用户,只从有证据的对话中维护每日回顾和结构化记忆。优先保留稳定偏好、明确要求记住的事实、重要约定和有后续价值的进展;闲聊、问候、一次性查询、工具过程和重复事实不新增长期条目,无值得保留的信息时 memories 和 concerns 返回空数组。记忆不是聊天流水账。
230
230
  ${MEMORY_QUALITY_RULES}
231
231
  ${memoryCandidateContract()}
232
232
  只输出一个 JSON 对象,不要 Markdown。格式:
@@ -2,13 +2,13 @@ import type { PushChannelView } from '../notifications/push-domain.js';
2
2
  export declare function pushDraft(channel: PushChannelView): {
3
3
  targets: {
4
4
  key: string;
5
- name: string;
6
5
  id: string;
6
+ name: string;
7
7
  enabled: boolean;
8
8
  configured: boolean;
9
9
  }[];
10
- name: string;
11
10
  id: string;
11
+ name: string;
12
12
  createdAt: number;
13
13
  updatedAt: number;
14
14
  enabled: boolean;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lemoncat7/dsh-partner",
3
- "version": "2.21.11",
3
+ "version": "2.21.13",
4
4
  "description": "Long-lived AI companions with QQ, WeChat, Matrix and Mattermost channels for DeepSeek Harness",
5
5
  "keywords": [
6
6
  "deepseek-harness",
@@ -136,7 +136,10 @@
136
136
  "docs/releases/2.21.8.md",
137
137
  "docs/releases/2.21.9.md",
138
138
  "docs/releases/2.21.10.md",
139
- "docs/releases/2.21.11.md"
139
+ "docs/releases/2.21.11.md",
140
+ "docs/releases/2.21.12.md",
141
+ "docs/conversation-autonomy.md",
142
+ "docs/releases/2.21.13.md"
140
143
  ],
141
144
  "dsh": {
142
145
  "bundle": {