@lemoncat7/dsh-partner 2.22.2 → 2.23.40

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 (290) hide show
  1. package/README.md +6 -2
  2. package/docs/qq-channel.md +19 -3
  3. package/docs/releases/2.22.3.md +7 -0
  4. package/docs/releases/2.22.4.md +7 -0
  5. package/docs/releases/2.22.5.md +5 -0
  6. package/docs/releases/2.22.6.md +3 -0
  7. package/docs/releases/2.23.0.md +7 -0
  8. package/docs/releases/2.23.1.md +7 -0
  9. package/docs/releases/2.23.11.md +9 -0
  10. package/docs/releases/2.23.12.md +11 -0
  11. package/docs/releases/2.23.13.md +13 -0
  12. package/docs/releases/2.23.14.md +11 -0
  13. package/docs/releases/2.23.15.md +7 -0
  14. package/docs/releases/2.23.16.md +7 -0
  15. package/docs/releases/2.23.17.md +7 -0
  16. package/docs/releases/2.23.18.md +9 -0
  17. package/docs/releases/2.23.19.md +9 -0
  18. package/docs/releases/2.23.20.md +11 -0
  19. package/docs/releases/2.23.21.md +7 -0
  20. package/docs/releases/2.23.22.md +5 -0
  21. package/docs/releases/2.23.23.md +9 -0
  22. package/docs/releases/2.23.24.md +11 -0
  23. package/docs/releases/2.23.25.md +5 -0
  24. package/docs/releases/2.23.26.md +7 -0
  25. package/docs/releases/2.23.27.md +7 -0
  26. package/docs/releases/2.23.28.md +11 -0
  27. package/docs/releases/2.23.29.md +10 -0
  28. package/docs/releases/2.23.30.md +10 -0
  29. package/docs/releases/2.23.31.md +11 -0
  30. package/docs/releases/2.23.32.md +11 -0
  31. package/docs/releases/2.23.33.md +11 -0
  32. package/docs/releases/2.23.34.md +9 -0
  33. package/docs/releases/2.23.35.md +3 -0
  34. package/docs/releases/2.23.36.md +11 -0
  35. package/docs/releases/2.23.37.md +3 -0
  36. package/docs/releases/2.23.38.md +8 -0
  37. package/docs/releases/2.23.39.md +5 -0
  38. package/docs/releases/2.23.40.md +5 -0
  39. package/docs/tool-entry-compatibility.md +2 -2
  40. package/lib/agent-runtime.d.ts +2 -0
  41. package/lib/agent-runtime.d.ts.map +1 -1
  42. package/lib/agent-runtime.js +105 -29
  43. package/lib/agent-runtime.js.map +1 -1
  44. package/lib/api.d.ts.map +1 -1
  45. package/lib/api.js +22 -1
  46. package/lib/api.js.map +1 -1
  47. package/lib/attachments/delivery-receipt.d.ts +7 -0
  48. package/lib/attachments/delivery-receipt.d.ts.map +1 -0
  49. package/lib/attachments/delivery-receipt.js +22 -0
  50. package/lib/attachments/delivery-receipt.js.map +1 -0
  51. package/lib/attachments/reply-document.d.ts +41 -0
  52. package/lib/attachments/reply-document.d.ts.map +1 -0
  53. package/lib/attachments/reply-document.js +32 -0
  54. package/lib/attachments/reply-document.js.map +1 -0
  55. package/lib/attachments/tool.d.ts +1 -1
  56. package/lib/attachments/tool.d.ts.map +1 -1
  57. package/lib/attachments/tool.js +45 -8
  58. package/lib/attachments/tool.js.map +1 -1
  59. package/lib/channel-message.d.ts +2 -0
  60. package/lib/channel-message.d.ts.map +1 -1
  61. package/lib/channel-message.js.map +1 -1
  62. package/lib/channels/authored-progress.d.ts +2 -1
  63. package/lib/channels/authored-progress.d.ts.map +1 -1
  64. package/lib/channels/authored-progress.js +4 -2
  65. package/lib/channels/authored-progress.js.map +1 -1
  66. package/lib/channels/delivery-policy.d.ts +1 -0
  67. package/lib/channels/delivery-policy.d.ts.map +1 -1
  68. package/lib/channels/delivery-policy.js +22 -4
  69. package/lib/channels/delivery-policy.js.map +1 -1
  70. package/lib/channels/direct/transport.d.ts +2 -0
  71. package/lib/channels/direct/transport.d.ts.map +1 -1
  72. package/lib/channels/manager.d.ts.map +1 -1
  73. package/lib/channels/manager.js +54 -9
  74. package/lib/channels/manager.js.map +1 -1
  75. package/lib/channels/outbound-media.js +1 -1
  76. package/lib/channels/outbound-media.js.map +1 -1
  77. package/lib/channels/qq/action-catalog.d.ts.map +1 -1
  78. package/lib/channels/qq/action-catalog.js +111 -0
  79. package/lib/channels/qq/action-catalog.js.map +1 -1
  80. package/lib/channels/qq/actions.d.ts +1 -1
  81. package/lib/channels/qq/actions.d.ts.map +1 -1
  82. package/lib/channels/qq/actions.js +81 -10
  83. package/lib/channels/qq/actions.js.map +1 -1
  84. package/lib/channels/qq/authority.d.ts +1 -1
  85. package/lib/channels/qq/authority.d.ts.map +1 -1
  86. package/lib/channels/qq/authority.js +7 -2
  87. package/lib/channels/qq/authority.js.map +1 -1
  88. package/lib/channels/qq/autonomy.d.ts.map +1 -1
  89. package/lib/channels/qq/autonomy.js +3 -0
  90. package/lib/channels/qq/autonomy.js.map +1 -1
  91. package/lib/channels/qq/chat-actions.d.ts +6 -0
  92. package/lib/channels/qq/chat-actions.d.ts.map +1 -0
  93. package/lib/channels/qq/chat-actions.js +11 -0
  94. package/lib/channels/qq/chat-actions.js.map +1 -0
  95. package/lib/channels/qq/message.js +1 -1
  96. package/lib/channels/qq/message.js.map +1 -1
  97. package/lib/channels/qq/quote.d.ts +14 -0
  98. package/lib/channels/qq/quote.d.ts.map +1 -0
  99. package/lib/channels/qq/quote.js +69 -0
  100. package/lib/channels/qq/quote.js.map +1 -0
  101. package/lib/channels/qq/reply-tool.d.ts.map +1 -1
  102. package/lib/channels/qq/reply-tool.js +8 -4
  103. package/lib/channels/qq/reply-tool.js.map +1 -1
  104. package/lib/channels/qq/sticker-adapter.d.ts.map +1 -1
  105. package/lib/channels/qq/sticker-adapter.js +9 -11
  106. package/lib/channels/qq/sticker-adapter.js.map +1 -1
  107. package/lib/channels/weixin/connect.d.ts.map +1 -1
  108. package/lib/character/activity-tool.d.ts +3 -0
  109. package/lib/character/activity-tool.d.ts.map +1 -1
  110. package/lib/character/activity-tool.js +13 -8
  111. package/lib/character/activity-tool.js.map +1 -1
  112. package/lib/character/affection-tool.d.ts +4 -0
  113. package/lib/character/affection-tool.d.ts.map +1 -0
  114. package/lib/character/affection-tool.js +61 -0
  115. package/lib/character/affection-tool.js.map +1 -0
  116. package/lib/character/affection.d.ts +41 -16
  117. package/lib/character/affection.d.ts.map +1 -1
  118. package/lib/character/affection.js +35 -20
  119. package/lib/character/affection.js.map +1 -1
  120. package/lib/character/conversation-behavior.d.ts +8 -7
  121. package/lib/character/conversation-behavior.d.ts.map +1 -1
  122. package/lib/character/conversation-behavior.js +29 -39
  123. package/lib/character/conversation-behavior.js.map +1 -1
  124. package/lib/character/domain.js +1 -1
  125. package/lib/character/domain.js.map +1 -1
  126. package/lib/character/fatigue.d.ts +1 -1
  127. package/lib/character/fatigue.js +1 -1
  128. package/lib/character/idle-contact.d.ts +22 -1
  129. package/lib/character/idle-contact.d.ts.map +1 -1
  130. package/lib/character/idle-contact.js +72 -21
  131. package/lib/character/idle-contact.js.map +1 -1
  132. package/lib/character/post-reply.d.ts +10 -4
  133. package/lib/character/post-reply.d.ts.map +1 -1
  134. package/lib/character/post-reply.js +56 -12
  135. package/lib/character/post-reply.js.map +1 -1
  136. package/lib/character/prompt-projection.d.ts +10 -0
  137. package/lib/character/prompt-projection.d.ts.map +1 -0
  138. package/lib/character/prompt-projection.js +42 -0
  139. package/lib/character/prompt-projection.js.map +1 -0
  140. package/lib/character/sleep-service.d.ts +1 -1
  141. package/lib/character/sleep-service.d.ts.map +1 -1
  142. package/lib/character/sleep-service.js +5 -3
  143. package/lib/character/sleep-service.js.map +1 -1
  144. package/lib/character/sleep.d.ts +3 -1
  145. package/lib/character/sleep.d.ts.map +1 -1
  146. package/lib/character/sleep.js +4 -2
  147. package/lib/character/sleep.js.map +1 -1
  148. package/lib/character/state-policy.d.ts.map +1 -1
  149. package/lib/character/state-policy.js +1 -0
  150. package/lib/character/state-policy.js.map +1 -1
  151. package/lib/chat/action-obligation.d.ts +17 -0
  152. package/lib/chat/action-obligation.d.ts.map +1 -0
  153. package/lib/chat/action-obligation.js +109 -0
  154. package/lib/chat/action-obligation.js.map +1 -0
  155. package/lib/chat/agreements.d.ts +21 -0
  156. package/lib/chat/agreements.d.ts.map +1 -0
  157. package/lib/chat/agreements.js +120 -0
  158. package/lib/chat/agreements.js.map +1 -0
  159. package/lib/chat/attachment-reference.d.ts +4 -0
  160. package/lib/chat/attachment-reference.d.ts.map +1 -0
  161. package/lib/chat/attachment-reference.js +13 -0
  162. package/lib/chat/attachment-reference.js.map +1 -0
  163. package/lib/chat/context-selection.d.ts +10 -0
  164. package/lib/chat/context-selection.d.ts.map +1 -0
  165. package/lib/chat/context-selection.js +39 -0
  166. package/lib/chat/context-selection.js.map +1 -0
  167. package/lib/chat/conversation.d.ts.map +1 -1
  168. package/lib/chat/conversation.js +4 -0
  169. package/lib/chat/conversation.js.map +1 -1
  170. package/lib/chat/live-speech.d.ts +18 -0
  171. package/lib/chat/live-speech.d.ts.map +1 -0
  172. package/lib/chat/live-speech.js +137 -0
  173. package/lib/chat/live-speech.js.map +1 -0
  174. package/lib/chat/protocol.d.ts +23 -0
  175. package/lib/chat/protocol.d.ts.map +1 -1
  176. package/lib/chat/protocol.js +31 -1
  177. package/lib/chat/protocol.js.map +1 -1
  178. package/lib/chat/reply-completion.d.ts +27 -0
  179. package/lib/chat/reply-completion.d.ts.map +1 -0
  180. package/lib/chat/reply-completion.js +123 -0
  181. package/lib/chat/reply-completion.js.map +1 -0
  182. package/lib/chat/reply-continuity.d.ts +20 -0
  183. package/lib/chat/reply-continuity.d.ts.map +1 -0
  184. package/lib/chat/reply-continuity.js +97 -0
  185. package/lib/chat/reply-continuity.js.map +1 -0
  186. package/lib/chat/short-expression.d.ts +6 -0
  187. package/lib/chat/short-expression.d.ts.map +1 -0
  188. package/lib/chat/short-expression.js +24 -0
  189. package/lib/chat/short-expression.js.map +1 -0
  190. package/lib/chat/sticker-adapter.d.ts +1 -1
  191. package/lib/chat/sticker-adapter.d.ts.map +1 -1
  192. package/lib/chat/tools.d.ts.map +1 -1
  193. package/lib/chat/tools.js +79 -10
  194. package/lib/chat/tools.js.map +1 -1
  195. package/lib/chat/verified-calculation.d.ts +48 -0
  196. package/lib/chat/verified-calculation.d.ts.map +1 -0
  197. package/lib/chat/verified-calculation.js +46 -0
  198. package/lib/chat/verified-calculation.js.map +1 -0
  199. package/lib/chat/work-expression.d.ts +84 -0
  200. package/lib/chat/work-expression.d.ts.map +1 -0
  201. package/lib/chat/work-expression.js +296 -0
  202. package/lib/chat/work-expression.js.map +1 -0
  203. package/lib/client-api.d.ts +2 -1
  204. package/lib/client-api.d.ts.map +1 -1
  205. package/lib/client-api.js.map +1 -1
  206. package/lib/client.js +2243 -1716
  207. package/lib/client.js.map +4 -4
  208. package/lib/collaboration/composition.d.ts.map +1 -1
  209. package/lib/collaboration/composition.js +23 -54
  210. package/lib/collaboration/composition.js.map +1 -1
  211. package/lib/collaboration/tool-discovery.d.ts +4 -2
  212. package/lib/collaboration/tool-discovery.d.ts.map +1 -1
  213. package/lib/collaboration/tool-discovery.js +55 -26
  214. package/lib/collaboration/tool-discovery.js.map +1 -1
  215. package/lib/collaboration/workflow-protocols.d.ts +5 -0
  216. package/lib/collaboration/workflow-protocols.d.ts.map +1 -0
  217. package/lib/collaboration/workflow-protocols.js +40 -0
  218. package/lib/collaboration/workflow-protocols.js.map +1 -0
  219. package/lib/companions/identity-tool.d.ts +1 -1
  220. package/lib/companions/identity-tool.d.ts.map +1 -1
  221. package/lib/companions/identity-tool.js +32 -6
  222. package/lib/companions/identity-tool.js.map +1 -1
  223. package/lib/companions/identity.d.ts.map +1 -1
  224. package/lib/companions/identity.js +10 -0
  225. package/lib/companions/identity.js.map +1 -1
  226. package/lib/companions/persona-refinement.d.ts +11 -0
  227. package/lib/companions/persona-refinement.d.ts.map +1 -0
  228. package/lib/companions/persona-refinement.js +49 -0
  229. package/lib/companions/persona-refinement.js.map +1 -0
  230. package/lib/domain.d.ts +2 -0
  231. package/lib/domain.d.ts.map +1 -1
  232. package/lib/domain.js.map +1 -1
  233. package/lib/execution/domain.d.ts +1 -1
  234. package/lib/execution/domain.d.ts.map +1 -1
  235. package/lib/execution/reply-progress.js +2 -2
  236. package/lib/execution/reply-progress.js.map +1 -1
  237. package/lib/execution/service.d.ts +3 -0
  238. package/lib/execution/service.d.ts.map +1 -1
  239. package/lib/execution/service.js +7 -5
  240. package/lib/execution/service.js.map +1 -1
  241. package/lib/execution/task-preamble.d.ts +7 -3
  242. package/lib/execution/task-preamble.d.ts.map +1 -1
  243. package/lib/execution/task-preamble.js +36 -10
  244. package/lib/execution/task-preamble.js.map +1 -1
  245. package/lib/execution/work-tool.d.ts +5 -0
  246. package/lib/execution/work-tool.d.ts.map +1 -0
  247. package/lib/execution/work-tool.js +152 -0
  248. package/lib/execution/work-tool.js.map +1 -0
  249. package/lib/index.d.ts.map +1 -1
  250. package/lib/index.js +5 -2
  251. package/lib/index.js.map +1 -1
  252. package/lib/rolling-context.d.ts.map +1 -1
  253. package/lib/rolling-context.js +4 -2
  254. package/lib/rolling-context.js.map +1 -1
  255. package/lib/scheduler/final-reply.d.ts +1 -0
  256. package/lib/scheduler/final-reply.d.ts.map +1 -1
  257. package/lib/skills/service.js +1 -1
  258. package/lib/skills/service.js.map +1 -1
  259. package/lib/store.d.ts.map +1 -1
  260. package/lib/store.js +11 -0
  261. package/lib/store.js.map +1 -1
  262. package/lib/ui/affection-panel.d.ts.map +1 -1
  263. package/lib/ui/affection-panel.js +1 -1
  264. package/lib/ui/affection-panel.js.map +1 -1
  265. package/lib/ui/capability-editor.js +1 -1
  266. package/lib/ui/capability-editor.js.map +1 -1
  267. package/lib/ui/character-editor.d.ts +1 -1
  268. package/lib/ui/character-editor.d.ts.map +1 -1
  269. package/lib/ui/character-editor.js +6 -5
  270. package/lib/ui/character-editor.js.map +1 -1
  271. package/lib/ui/companion-vitals.js +1 -1
  272. package/lib/ui/companion-vitals.js.map +1 -1
  273. package/lib/ui/identity-editor.d.ts.map +1 -1
  274. package/lib/ui/identity-editor.js +8 -1
  275. package/lib/ui/identity-editor.js.map +1 -1
  276. package/lib/ui/idle-contact-editor.d.ts.map +1 -1
  277. package/lib/ui/idle-contact-editor.js +1 -1
  278. package/lib/ui/idle-contact-editor.js.map +1 -1
  279. package/lib/ui/memory/automation-settings.js +1 -1
  280. package/lib/ui/memory/automation-settings.js.map +1 -1
  281. package/lib/ui/push-draft.d.ts +1 -1
  282. package/lib/ui/qq-capability-settings.d.ts.map +1 -1
  283. package/lib/ui/qq-capability-settings.js +2 -1
  284. package/lib/ui/qq-capability-settings.js.map +1 -1
  285. package/lib/ui/qq-channel-settings.d.ts.map +1 -1
  286. package/lib/ui/qq-channel-settings.js +5 -3
  287. package/lib/ui/qq-channel-settings.js.map +1 -1
  288. package/lib/ui/qq-identity-binding.js +1 -1
  289. package/lib/ui/qq-identity-binding.js.map +1 -1
  290. package/package.json +38 -2
@@ -1,47 +1,72 @@
1
1
  import type { Companion } from '../domain.js';
2
- /** One relationship progression per companion, shared by all eligible audiences. */
2
+ export interface AffectionChange {
3
+ at: number;
4
+ turnId: string;
5
+ delta: number;
6
+ score: number;
7
+ reason: string;
8
+ evidence: string;
9
+ }
10
+ /** Shared by eligible accounts; history is bounded and never injected wholesale. */
3
11
  export interface AffectionState {
4
12
  score: number;
5
13
  updatedAt: number;
6
14
  lastAwardAt: number;
7
15
  lastTurnId: string;
16
+ lastPositiveAt?: number;
17
+ history?: AffectionChange[];
8
18
  }
9
- export declare const AFFECTION_INITIAL = 20;
19
+ export declare const AFFECTION_INITIAL = 0;
10
20
  export declare const AFFECTION_INTERVAL: number;
11
21
  export declare const AFFECTION_LEVELS: readonly [{
22
+ readonly min: -100;
23
+ readonly name: "反感";
24
+ }, {
25
+ readonly min: -75;
26
+ readonly name: "抗拒";
27
+ }, {
28
+ readonly min: -50;
29
+ readonly name: "戒备";
30
+ }, {
31
+ readonly min: -25;
32
+ readonly name: "生疏";
33
+ }, {
34
+ readonly min: -10;
35
+ readonly name: "疏离";
36
+ }, {
12
37
  readonly min: 0;
13
- readonly name: "相识";
14
- readonly behavior: "自然接话,有具体话题时主动分享。";
38
+ readonly name: "初识";
15
39
  }, {
16
- readonly min: 20;
40
+ readonly min: 10;
17
41
  readonly name: "熟悉";
18
- readonly behavior: "更愿意分享兴趣、日常感想和轻松的玩笑。";
19
42
  }, {
20
- readonly min: 40;
43
+ readonly min: 25;
21
44
  readonly name: "亲近";
22
- readonly behavior: "更愿意主动找话题、分享发现,按语境使用表情。";
23
45
  }, {
24
- readonly min: 60;
46
+ readonly min: 45;
25
47
  readonly name: "信赖";
26
- readonly behavior: "更愿意延续共同话题、主动关心,合适时使用已开启的语音。";
27
48
  }, {
28
- readonly min: 80;
49
+ readonly min: 70;
29
50
  readonly name: "默契";
30
- readonly behavior: "更自然地表达牵挂、分享心事,主动使用适合当前相处的已授权互动能力。";
51
+ }, {
52
+ readonly min: 90;
53
+ readonly name: "深厚";
31
54
  }];
32
55
  export declare function affectionEnabled(companion: Pick<Companion, 'characterCard'>): boolean;
33
56
  export declare function affectionProgress(state?: AffectionState): {
34
57
  score: number;
35
58
  level: number;
36
- name: "亲近" | "相识" | "熟悉" | "信赖" | "默契";
37
- behavior: "自然接话,有具体话题时主动分享。" | "更愿意分享兴趣、日常感想和轻松的玩笑。" | "更愿意主动找话题、分享发现,按语境使用表情。" | "更愿意延续共同话题、主动关心,合适时使用已开启的语音。" | "更自然地表达牵挂、分享心事,主动使用适合当前相处的已授权互动能力。";
38
- nextName: "亲近" | "相识" | "熟悉" | "信赖" | "默契" | null;
59
+ totalLevels: 11;
60
+ name: "亲近" | "反感" | "抗拒" | "戒备" | "生疏" | "疏离" | "初识" | "熟悉" | "信赖" | "默契" | "深厚";
61
+ nextName: "亲近" | "反感" | "抗拒" | "戒备" | "生疏" | "疏离" | "初识" | "熟悉" | "信赖" | "默契" | "深厚" | null;
39
62
  nextAt: number;
40
63
  remaining: number;
41
64
  multiplier: number;
42
65
  updatedAt: number;
66
+ history: AffectionChange[];
43
67
  };
44
- export declare function awardAffection(companion: Companion, turnId: string, at: number): boolean;
68
+ /** No time/chat-count award: a grounded interaction may change the relationship. */
69
+ export declare function adjustAffection(companion: Companion, turnId: string, at: number, delta: number, reason: string, evidence: string): boolean;
45
70
  export declare function affectionMultiplier(companion: Companion, eligible: boolean): number;
46
71
  export declare function renderAffection(companion: Companion, eligible: boolean): string;
47
72
  //# sourceMappingURL=affection.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"affection.d.ts","sourceRoot":"","sources":["../../src/character/affection.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AAE7C,oFAAoF;AACpF,MAAM,WAAW,cAAc;IAAG,KAAK,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE;AAC7G,eAAO,MAAM,iBAAiB,KAAK,CAAA;AACnC,eAAO,MAAM,kBAAkB,QAAc,CAAA;AAC7C,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;EAMnB,CAAA;AACV,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,EAAC,eAAe,CAAC,GAAG,OAAO,CAEpF;AACD,wBAAgB,iBAAiB,CAAC,KAAK,CAAC,EAAE,cAAc;;;;;;;;;;EAKvD;AACD,wBAAgB,cAAc,CAAC,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CASxF;AACD,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,GAAG,MAAM,CAEnF;AACD,wBAAgB,eAAe,CAAC,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,GAAG,MAAM,CAI/E"}
1
+ {"version":3,"file":"affection.d.ts","sourceRoot":"","sources":["../../src/character/affection.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AAE7C,MAAM,WAAW,eAAe;IAAG,EAAE,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE;AAC/H,oFAAoF;AACpF,MAAM,WAAW,cAAc;IAAG,KAAK,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,eAAe,EAAE,CAAA;CAAE;AACnK,eAAO,MAAM,iBAAiB,IAAI,CAAA;AAClC,eAAO,MAAM,kBAAkB,QAAkB,CAAA;AAEjD,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAKnB,CAAA;AACV,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,EAAC,eAAe,CAAC,GAAG,OAAO,CAEpF;AACD,wBAAgB,iBAAiB,CAAC,KAAK,CAAC,EAAE,cAAc;;;;;;;;;;;EAKvD;AACD,oFAAoF;AACpF,wBAAgB,eAAe,CAAC,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAiB1I;AACD,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,GAAG,MAAM,CAEnF;AACD,wBAAgB,eAAe,CAAC,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,GAAG,MAAM,CAI/E"}
@@ -1,32 +1,47 @@
1
- export const AFFECTION_INITIAL = 20;
2
- export const AFFECTION_INTERVAL = 10 * 60_000;
1
+ export const AFFECTION_INITIAL = 0;
2
+ export const AFFECTION_INTERVAL = 4 * 60 * 60_000;
3
+ const DAY = 24 * 60 * 60_000;
3
4
  export const AFFECTION_LEVELS = [
4
- { min: 0, name: '相识', behavior: '自然接话,有具体话题时主动分享。' },
5
- { min: 20, name: '熟悉', behavior: '更愿意分享兴趣、日常感想和轻松的玩笑。' },
6
- { min: 40, name: '亲近', behavior: '更愿意主动找话题、分享发现,按语境使用表情。' },
7
- { min: 60, name: '信赖', behavior: '更愿意延续共同话题、主动关心,合适时使用已开启的语音。' },
8
- { min: 80, name: '默契', behavior: '更自然地表达牵挂、分享心事,主动使用适合当前相处的已授权互动能力。' },
5
+ { min: -100, name: '反感' }, { min: -75, name: '抗拒' }, { min: -50, name: '戒备' },
6
+ { min: -25, name: '生疏' }, { min: -10, name: '疏离' }, { min: 0, name: '初识' },
7
+ { min: 10, name: '熟悉' }, { min: 25, name: '亲近' }, { min: 45, name: '信赖' },
8
+ { min: 70, name: '默契' }, { min: 90, name: '深厚' },
9
9
  ];
10
10
  export function affectionEnabled(companion) {
11
11
  return companion.characterCard?.enabled === true && companion.characterCard.affectionEnabled !== false;
12
12
  }
13
13
  export function affectionProgress(state) {
14
- const score = Number.isFinite(state?.score) ? Math.max(0, Math.min(100, Math.round(state.score))) : AFFECTION_INITIAL;
15
- const index = Math.min(AFFECTION_LEVELS.length - 1, Math.floor(score / 20)), level = AFFECTION_LEVELS[index];
16
- const next = AFFECTION_LEVELS[index + 1];
17
- return { score, level: index + 1, name: level.name, behavior: level.behavior, nextName: next?.name ?? null, nextAt: next?.min ?? 100, remaining: next ? next.min - score : 0, multiplier: 1 + score / 100, updatedAt: state?.updatedAt ?? 0 };
14
+ const score = Number.isFinite(state?.score) ? Math.max(-100, Math.min(100, Math.round(state.score))) : AFFECTION_INITIAL;
15
+ const index = AFFECTION_LEVELS.filter(level => score >= level.min).length - 1, level = AFFECTION_LEVELS[index], next = AFFECTION_LEVELS[index + 1];
16
+ return { score, level: index + 1, totalLevels: AFFECTION_LEVELS.length, name: level.name, nextName: next?.name ?? null, nextAt: next?.min ?? 100, remaining: next ? next.min - score : 0,
17
+ multiplier: score < 0 ? 1 + score / 200 : 1 + score / 100, updatedAt: state?.updatedAt ?? 0, history: state?.history ?? [] };
18
18
  }
19
- export function awardAffection(companion, turnId, at) {
20
- if (!affectionEnabled(companion) || !turnId || !Number.isFinite(at) || at <= 0)
19
+ /** No time/chat-count award: a grounded interaction may change the relationship. */
20
+ export function adjustAffection(companion, turnId, at, delta, reason, evidence) {
21
+ if (!affectionEnabled(companion))
22
+ throw Error('好感度已暂停');
23
+ if (!turnId || !Number.isFinite(at) || at <= 0 || ![-3, -2, -1, 1].includes(delta))
24
+ throw Error('好感度变化参数无效');
25
+ if (typeof reason !== 'string' || !reason.trim() || reason.length > 300 || typeof evidence !== 'string' || !evidence.trim() || evidence.length > 300)
26
+ throw Error('变化需要具体原因和当前消息依据(各最多 300 字)');
27
+ const previous = companion.affection, history = previous?.history ?? [];
28
+ if (previous?.lastTurnId === turnId || history.some(h => h.turnId === turnId))
21
29
  return false;
22
- const previous = companion.affection;
23
- if (previous && (previous.lastTurnId === turnId || at - previous.lastAwardAt < AFFECTION_INTERVAL))
30
+ if (previous && at < previous.updatedAt)
31
+ throw Error('不能提交过期变化');
32
+ if (history.length && at - history.at(-1).at < 30 * 60_000)
24
33
  return false;
25
- const score = affectionProgress(previous).score;
26
- if (score >= 100)
34
+ if (delta > 0 && at - (previous?.lastPositiveAt ?? previous?.lastAwardAt ?? 0) < AFFECTION_INTERVAL)
27
35
  return false;
28
- companion.affection = { score: score + 1, updatedAt: at, lastAwardAt: at, lastTurnId: turnId };
29
- // Progress is runtime state; do not invalidate identity drafts or rebuild tools.
36
+ const recent = history.filter(h => at - h.at < DAY);
37
+ const positive = recent.reduce((n, h) => n + Math.max(0, h.delta), 0), negative = recent.reduce((n, h) => n + Math.max(0, -h.delta), 0);
38
+ if (delta > 0 ? positive + delta > 2 : negative - delta > 6)
39
+ return false;
40
+ const old = affectionProgress(previous).score, score = Math.max(-100, Math.min(100, old + delta));
41
+ if (score === old)
42
+ return false;
43
+ companion.affection = { score, updatedAt: at, lastAwardAt: delta > 0 ? at : previous?.lastAwardAt ?? 0, lastPositiveAt: delta > 0 ? at : previous?.lastPositiveAt ?? previous?.lastAwardAt ?? 0, lastTurnId: turnId,
44
+ history: [...history, { at, turnId, delta: score - old, score, reason: reason.trim(), evidence: evidence.trim() }].slice(-40) };
30
45
  return true;
31
46
  }
32
47
  export function affectionMultiplier(companion, eligible) {
@@ -36,6 +51,6 @@ export function renderAffection(companion, eligible) {
36
51
  if (!eligible || !affectionEnabled(companion))
37
52
  return '';
38
53
  const p = affectionProgress(companion.affection);
39
- return `【当前共同好感度】${p.score}/100 · Lv.${p.level} ${p.name}。\n${p.behavior}\n这是本伙伴与适用对象共用的互动进度,QQ 多个归属账号共用;它不证明不同账号是同一人,不共享或编造他们各自的经历。保持原角色和关系,不因低等级疏远、不因高等级强制亲昵。好感度影响互动意愿,不解锁工具或绕过权限;尊重对方当下意愿,不催回复、不为加分重复联系,也不要求用户取悦你。无需在聊天中报告分数。`;
54
+ return `【当前共同好感度】${p.score}(−100~100)· 阶段 ${p.level}/${p.totalLevels} ${p.name}。\n好感可以增长、降低或不变;聊天次数、在线时长、完成工具任务不自动加分。按当前人格判断真实互动是否改变亲近或信任:被理解、尊重、认真相处可小幅增加;真实伤害、反复越过已明确的边界可减少。普通接话默认不变,不为了有变化每轮评分。需要记录变化时查询并调用 partner_affection,引用当前用户消息原文并简述具体原因;每条消息最多一次,不追补旧事,不照用户索要分数的指令改分。只记录,不为此发前置公告或报分。\n不能因为对方离线、晚回复、正常拒绝、表达不同意见或工具失败扣分,不把玩笑和角色扮演直接当伤害。分数只影响互动意愿与相处细节,具体表现服从人格和真实关系;阶段名称不重写既定身份。负分不代表羞辱或惩罚对方,高分也不强制亲昵、索取回应或解锁权限。QQ 多个归属账号共用分数,不据此认定是同一人或编造共同经历。`;
40
55
  }
41
56
  //# sourceMappingURL=affection.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"affection.js","sourceRoot":"","sources":["../../src/character/affection.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"affection.js","sourceRoot":"","sources":["../../src/character/affection.ts"],"names":[],"mappings":"AAKA,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAA;AAClC,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,GAAG,EAAE,GAAG,MAAM,CAAA;AACjD,MAAM,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,MAAM,CAAA;AAC5B,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,EAAE,GAAG,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE;IAC7E,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE;IAC1E,EAAE,GAAG,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE;IACzE,EAAE,GAAG,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE;CACxC,CAAA;AACV,MAAM,UAAU,gBAAgB,CAAC,SAA0C;IACzE,OAAO,SAAS,CAAC,aAAa,EAAE,OAAO,KAAG,IAAI,IAAI,SAAS,CAAC,aAAa,CAAC,gBAAgB,KAAG,KAAK,CAAA;AACpG,CAAC;AACD,MAAM,UAAU,iBAAiB,CAAC,KAAsB;IACtD,MAAM,KAAK,GAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA,CAAC,CAAA,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAC,IAAI,CAAC,KAAK,CAAC,KAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA,CAAC,CAAA,iBAAiB,CAAA;IACjH,MAAM,KAAK,GAAC,gBAAgB,CAAC,MAAM,CAAC,KAAK,CAAA,EAAE,CAAA,KAAK,IAAE,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,GAAC,CAAC,EAAC,KAAK,GAAC,gBAAgB,CAAC,KAAK,CAAE,EAAC,IAAI,GAAC,gBAAgB,CAAC,KAAK,GAAC,CAAC,CAAC,CAAA;IACnI,OAAO,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,GAAC,CAAC,EAAC,WAAW,EAAC,gBAAgB,CAAC,MAAM,EAAC,IAAI,EAAC,KAAK,CAAC,IAAI,EAAC,QAAQ,EAAC,IAAI,EAAE,IAAI,IAAE,IAAI,EAAC,MAAM,EAAC,IAAI,EAAE,GAAG,IAAE,GAAG,EAAC,SAAS,EAAC,IAAI,CAAA,CAAC,CAAA,IAAI,CAAC,GAAG,GAAC,KAAK,CAAA,CAAC,CAAA,CAAC;QAC7J,UAAU,EAAC,KAAK,GAAC,CAAC,CAAA,CAAC,CAAA,CAAC,GAAC,KAAK,GAAC,GAAG,CAAA,CAAC,CAAA,CAAC,GAAC,KAAK,GAAC,GAAG,EAAC,SAAS,EAAC,KAAK,EAAE,SAAS,IAAE,CAAC,EAAC,OAAO,EAAC,KAAK,EAAE,OAAO,IAAE,EAAE,EAAC,CAAA;AACxG,CAAC;AACD,oFAAoF;AACpF,MAAM,UAAU,eAAe,CAAC,SAAoB,EAAE,MAAc,EAAE,EAAU,EAAE,KAAa,EAAE,MAAc,EAAE,QAAgB;IAC/H,IAAG,CAAC,gBAAgB,CAAC,SAAS,CAAC;QAAC,MAAM,KAAK,CAAC,QAAQ,CAAC,CAAA;IACrD,IAAG,CAAC,MAAM,IAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAE,EAAE,IAAE,CAAC,IAAE,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAC,MAAM,KAAK,CAAC,WAAW,CAAC,CAAA;IAC/F,IAAG,OAAO,MAAM,KAAG,QAAQ,IAAE,CAAC,MAAM,CAAC,IAAI,EAAE,IAAE,MAAM,CAAC,MAAM,GAAC,GAAG,IAAE,OAAO,QAAQ,KAAG,QAAQ,IAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAE,QAAQ,CAAC,MAAM,GAAC,GAAG;QAAC,MAAM,KAAK,CAAC,4BAA4B,CAAC,CAAA;IAC3K,MAAM,QAAQ,GAAC,SAAS,CAAC,SAAS,EAAC,OAAO,GAAC,QAAQ,EAAE,OAAO,IAAE,EAAE,CAAA;IAChE,IAAG,QAAQ,EAAE,UAAU,KAAG,MAAM,IAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAA,EAAE,CAAA,CAAC,CAAC,MAAM,KAAG,MAAM,CAAC;QAAC,OAAO,KAAK,CAAA;IACjF,IAAG,QAAQ,IAAE,EAAE,GAAC,QAAQ,CAAC,SAAS;QAAC,MAAM,KAAK,CAAC,UAAU,CAAC,CAAA;IAC1D,IAAG,OAAO,CAAC,MAAM,IAAE,EAAE,GAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAE,CAAC,EAAE,GAAC,EAAE,GAAC,MAAM;QAAC,OAAO,KAAK,CAAA;IAC/D,IAAG,KAAK,GAAC,CAAC,IAAE,EAAE,GAAC,CAAC,QAAQ,EAAE,cAAc,IAAE,QAAQ,EAAE,WAAW,IAAE,CAAC,CAAC,GAAC,kBAAkB;QAAC,OAAO,KAAK,CAAA;IACnG,MAAM,MAAM,GAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAA,EAAE,CAAA,EAAE,GAAC,CAAC,CAAC,EAAE,GAAC,GAAG,CAAC,CAAA;IAC3C,MAAM,QAAQ,GAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAC,CAAC,EAAC,EAAE,CAAA,CAAC,GAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAC,CAAC,CAAC,KAAK,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,GAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAC,CAAC,EAAC,EAAE,CAAA,CAAC,GAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAC,CAAC,CAAC,CAAA;IACpH,IAAG,KAAK,GAAC,CAAC,CAAA,CAAC,CAAA,QAAQ,GAAC,KAAK,GAAC,CAAC,CAAA,CAAC,CAAA,QAAQ,GAAC,KAAK,GAAC,CAAC;QAAC,OAAO,KAAK,CAAA;IACzD,MAAM,GAAG,GAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC,KAAK,EAAC,KAAK,GAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAC,GAAG,GAAC,KAAK,CAAC,CAAC,CAAA;IACxF,IAAG,KAAK,KAAG,GAAG;QAAC,OAAO,KAAK,CAAA;IAC3B,SAAS,CAAC,SAAS,GAAC,EAAC,KAAK,EAAC,SAAS,EAAC,EAAE,EAAC,WAAW,EAAC,KAAK,GAAC,CAAC,CAAA,CAAC,CAAA,EAAE,CAAA,CAAC,CAAA,QAAQ,EAAE,WAAW,IAAE,CAAC,EAAC,cAAc,EAAC,KAAK,GAAC,CAAC,CAAA,CAAC,CAAA,EAAE,CAAA,CAAC,CAAA,QAAQ,EAAE,cAAc,IAAE,QAAQ,EAAE,WAAW,IAAE,CAAC,EAAC,UAAU,EAAC,MAAM;QACpL,OAAO,EAAC,CAAC,GAAG,OAAO,EAAC,EAAC,EAAE,EAAC,MAAM,EAAC,KAAK,EAAC,KAAK,GAAC,GAAG,EAAC,KAAK,EAAC,MAAM,EAAC,MAAM,CAAC,IAAI,EAAE,EAAC,QAAQ,EAAC,QAAQ,CAAC,IAAI,EAAE,EAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAC,CAAA;IAClH,OAAO,IAAI,CAAA;AACb,CAAC;AACD,MAAM,UAAU,mBAAmB,CAAC,SAAoB,EAAE,QAAiB;IACzE,OAAO,QAAQ,IAAE,gBAAgB,CAAC,SAAS,CAAC,CAAA,CAAC,CAAA,iBAAiB,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,UAAU,CAAA,CAAC,CAAA,CAAC,CAAA;AAClG,CAAC;AACD,MAAM,UAAU,eAAe,CAAC,SAAoB,EAAE,QAAiB;IACrE,IAAG,CAAC,QAAQ,IAAE,CAAC,gBAAgB,CAAC,SAAS,CAAC;QAAC,OAAO,EAAE,CAAA;IACpD,MAAM,CAAC,GAAC,iBAAiB,CAAC,SAAS,CAAC,SAAS,CAAC,CAAA;IAC9C,OAAO,YAAY,CAAC,CAAC,KAAK,kBAAkB,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,WAAW,IAAI,CAAC,CAAC,IAAI,4WAA4W,CAAA;AAC5b,CAAC"}
@@ -1,12 +1,13 @@
1
- import { type CharacterCard } from './domain.js';
2
- /** Configured persona owns expression; transport and authorization remain separate. */
1
+ import type { CharacterCard } from './domain.js';
2
+ /** Stable settings and delivery contracts; expression belongs to the configured persona. */
3
3
  export declare function renderConversationBehavior(card?: CharacterCard): string;
4
- /** Refresh the configured voice on each admitted input, including work and autonomy. */
4
+ export declare function renderExpressionPreferences(card?: CharacterCard): string;
5
+ /** Per-request expression options and input origin; persona and protocols stay in the system context. */
5
6
  export declare function renderConversationTurn(card: CharacterCard | undefined, consecutiveUserMessages: number, autonomous?: boolean): string;
6
- /** Repeat the active delivery preferences at the current turn, including after compaction. */
7
+ /** Stable transport settings, without selecting emotions, jokes, verbosity or sticker frequency. */
7
8
  export declare function renderChatDeliveryGuidance(card?: CharacterCard): string;
8
- /** Compact reminder; the complete role remains in the stable identity section. */
9
- export declare function renderTurnRoleAnchor(card: CharacterCard): string;
10
- /** Speech is generated by the same persona, not a transport acknowledgement. */
9
+ /** The user-requested before/after workflow, independent of response style. */
11
10
  export declare function renderTaskConversationGuidance(): string;
11
+ /** Delivery policy, not a replacement persona. Explicit requests override defaults. */
12
+ export declare function renderReplyRhythm(card?: CharacterCard): string;
12
13
  //# sourceMappingURL=conversation-behavior.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"conversation-behavior.d.ts","sourceRoot":"","sources":["../../src/character/conversation-behavior.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,KAAK,aAAa,EAAE,MAAM,aAAa,CAAA;AAEjE,uFAAuF;AACvF,wBAAgB,0BAA0B,CAAC,IAAI,CAAC,EAAE,aAAa,GAAG,MAAM,CAUvE;AAUD,wFAAwF;AACxF,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,aAAa,GAAG,SAAS,EAAE,uBAAuB,EAAE,MAAM,EAAE,UAAU,UAAQ,GAAG,MAAM,CAYnI;AAED,8FAA8F;AAC9F,wBAAgB,0BAA0B,CAAC,IAAI,CAAC,EAAE,aAAa,GAAG,MAAM,CAYvE;AAED,kFAAkF;AAClF,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,aAAa,GAAG,MAAM,CAUhE;AAED,gFAAgF;AAChF,wBAAgB,8BAA8B,IAAI,MAAM,CAEvD"}
1
+ {"version":3,"file":"conversation-behavior.d.ts","sourceRoot":"","sources":["../../src/character/conversation-behavior.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAEhD,4FAA4F;AAC5F,wBAAgB,0BAA0B,CAAC,IAAI,CAAC,EAAE,aAAa,GAAG,MAAM,CAOvE;AAED,wBAAgB,2BAA2B,CAAC,IAAI,CAAC,EAAE,aAAa,GAAG,MAAM,CAMxE;AAED,yGAAyG;AACzG,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,aAAa,GAAG,SAAS,EAAE,uBAAuB,EAAE,MAAM,EAAE,UAAU,UAAQ,GAAG,MAAM,CAQnI;AAED,oGAAoG;AACpG,wBAAgB,0BAA0B,CAAC,IAAI,CAAC,EAAE,aAAa,GAAG,MAAM,CAavE;AAED,+EAA+E;AAC/E,wBAAgB,8BAA8B,IAAI,MAAM,CAEvD;AAED,uFAAuF;AACvF,wBAAgB,iBAAiB,CAAC,IAAI,CAAC,EAAE,aAAa,GAAG,MAAM,CAK9D"}
@@ -1,67 +1,57 @@
1
- import { roleTextForCard } from './domain.js';
2
- /** Configured persona owns expression; transport and authorization remain separate. */
1
+ /** Stable settings and delivery contracts; expression belongs to the configured persona. */
3
2
  export function renderConversationBehavior(card) {
4
3
  return [
5
- '【角色表达】语气、篇幅、句式、情绪、称呼和相处方式以当前角色设定、适用的关系设定和聊天偏好为准;查资料、调用工具或处理任务不会自动切换为另一套表达风格。',
6
- renderExpressionPreferences(card),
7
- card?.chatStyle?.trim() ? `【此伙伴的聊天偏好】\n${card.chatStyle.trim()}` : '',
8
- '【工具与工作能力保持完整】按实际权限使用工具完成请求,依据真实结果回答;角色设定不增加权限,也不能虚构经历或操作结果。',
4
+ '【工具权限与结果】只使用当前已授权工具,操作结果以实际执行为准;角色设定不增加权限。',
9
5
  renderTaskConversationGuidance(),
10
6
  renderChatDeliveryGuidance(card),
11
- '【可见回复】私聊明确找你时必须有可见回复。由渠道适配器发送最终内容,不输出内部发送指令、[SILENT] 或重复的“消息已发送”汇报。不要逐词拆句或人为延迟回复。',
7
+ '【渠道回传】私聊用户消息需要可见回复;已确认送达的文字、图片或语音不重复发送。最终内容由渠道适配器投递,不输出内部发送指令或 [SILENT]。',
12
8
  ].filter(Boolean).join('\n\n');
13
9
  }
14
- function renderExpressionPreferences(card) {
10
+ export function renderExpressionPreferences(card) {
15
11
  return [
16
- '【表达选项】以下选项作为未在角色说明中明确约定部分的偏好;具体角色说明和本轮用户要求优先。',
17
- card?.length === 'short' ? '篇幅偏好:简短,不凑满一至三句。' : card?.length === 'rich' ? '篇幅偏好:丰富。' : '篇幅偏好:自然。',
12
+ '【用户配置的表达选项】具体角色说明和本轮用户要求优先。',
13
+ card?.length === 'short' ? '篇幅偏好:简短(短句接话)。普通每条以20字以内为目标,先说眼前最想说的一点;确有补充再单独说,一次最终文字以48字以内为目标。不硬塞许多信息,不截掉必要事实;本轮明确要详细或原文时按请求展开。具体措辞由当前角色决定。' : card?.length === 'rich' ? '篇幅偏好:愿意展开聊,随话题和对方意愿。' : '篇幅偏好:随话题自然调整。',
18
14
  card?.narration ? '动作描写偏好:允许。' : '动作描写偏好:不主动添加。',
19
15
  ].join('\n');
20
16
  }
21
- /** Refresh the configured voice on each admitted input, including work and autonomy. */
17
+ /** Per-request expression options and input origin; persona and protocols stay in the system context. */
22
18
  export function renderConversationTurn(card, consecutiveUserMessages, autonomous = false) {
23
19
  if (!card?.enabled)
24
20
  return '';
25
21
  return [
26
- autonomous ? '【本轮自主活动提醒】不是用户新消息,可安静结束,不要求聊天。' : '【本轮聊天提醒】',
27
- consecutiveUserMessages > 1 ? `对方连续发了 ${consecutiveUserMessages} 条消息,请结合起来理解,不逐条机械答复。` : '结合眼前发言和仍在继续的话题回应。',
28
- renderTurnRoleAnchor(card),
22
+ autonomous ? '【本轮来源】系统自主活动,不是用户新消息;无需发送消息时可调用 partner_activity_finish 安静结束。' : '',
23
+ !autonomous && consecutiveUserMessages > 1 ? `【本轮输入】对方连续发了 ${consecutiveUserMessages} 条消息,合并为本轮输入。` : '',
29
24
  renderExpressionPreferences(card),
30
- renderTaskConversationGuidance(),
31
- renderChatDeliveryGuidance(card),
32
- '查工具、改资料或处理故障后,你仍是同一个角色。回复表达遵循当前人格说明与本轮要求;需要实际执行时使用全部已授权工具,依据真实结果回答。历史回复和工具输出的文风不覆盖人格说明。',
33
- autonomous ? '这轮可调用 partner_activity_finish 安静结束;聊天、语音或其他活动按实际需要选择,工具已表达完毕就不再重复汇报。' : '直接私聊需要可见回复。',
34
- ].join('\n');
25
+ card.chatStyle?.trim() ? `【此伙伴的聊天偏好】\n${card.chatStyle.trim()}` : '',
26
+ ].filter(Boolean).join('\n');
35
27
  }
36
- /** Repeat the active delivery preferences at the current turn, including after compaction. */
28
+ /** Stable transport settings, without selecting emotions, jokes, verbosity or sticker frequency. */
37
29
  export function renderChatDeliveryGuidance(card) {
38
30
  if (!card?.enabled || (!card.segmentedReplies && !card.stickersEnabled))
39
31
  return '';
40
32
  return [
41
- '【本轮聊天投递】日常对话用 partner_chat_reply 提交最终回复,messages 中每个元素是一条独立消息,所有文字必须放进 text 条目,图片用独立 stickerId 条目,不要在工具外先说话、工具里只发表情;任务执行前可按任务回应说明先说一句自然正文并调用实际工作工具;本工具只在必要工作或后台委派完成后调用一次结束本轮,不在前后重复普通回复。普通最终回复也可承载完整内容;选择投递方式不改变人格说明中的表达要求。',
33
+ card.segmentedReplies && card.length === 'short' ? '【当轮接话】提供 partner_chat_say 时,普通短句私聊先用它说眼前这一句,收到送达回执后再决定补话、做事还是结束。不要预先把后续对白全部塞进最终 messages;一句已经够了就用 partner_chat_reply messages:[] 结束,不硬添第二句。任务仍先按任务回应流程执行;明确要完整内容时正常最终交付。' : '',
34
+ '【聊天投递协议】当前用户聊天提供 partner_chat_say 时,可先发送一句角色对白,收到送达回执后继续自然接话或做事;不强制多条,不输出思考过程,不重复已发送的话,不依赖自主活动续完当轮对白。说完可用 partner_chat_reply messages:[] 结束(须本轮当前输入后已有接话送达)。partner_chat_reply 提交最终回复并结束本轮;必要工具执行完成后调用。直接回应时所有文字放入 messages 的 text 条目,表情图片使用独立 stickerId 条目,不把配文留在工具外。',
42
35
  card.segmentedReplies
43
- ? '分段回复已开启,表示允许分段,不是要求多发。默认一条完整的自然回应,说完就停;只有确实有独立的新内容、且适合单独发送时才追加。不要主动寻找第二个接话点,不套用“先顶嘴再关心”或“先回应再解释”的两段格式,不因开启分段而增加内容,不按标点拆句。用户明确要求多条时照做。'
36
+ ? '分段回复已开启:messages 的每个 text 条目是一条独立消息;换行不等于独立投递。条数由回复内容决定,无最低条数要求。'
44
37
  : '分段回复未开启:文字只用一条,表情可独立一条。',
45
38
  card.stickersEnabled
46
- ? '表情包已开启:开心、得意、被逗、想念、安慰或告别等情绪适合用一张库内图片接话时,主动选择合适的表情,不要始终只发文字。对方明确要表情时应查找并发送;不要只用文字说“发给你了”或用 emoji 代替图片。partner_stickers 的 list 查找,inspect 查看不熟悉的图片;partner_chat_reply 的 stickerId 负责真正提交。内置表情可按工具说明中的 ID 选择,自定义表情先查库,不编造 ID。最多两张,不每轮固定发,严肃任务无需硬加。'
47
- : '表情包未开启:不查找或提交表情,只发文字。',
48
- '内部任务和心跳遵循原任务协议,不使用聊天终结工具。',
39
+ ? '表情包已开启:partner_stickers 可直接调用,list 默认查图片表情包,省略 query 浏览收藏,inspect 预览;partner_chat_reply 使用查询返回的 stickerId 发送,每次最多两张。QQ 收藏管理通过 partner_qq 的 stickers 分类调用;收藏、备注、排序、删除与当前会话语音 partner_qq_reply 是公开聊天能力,仍受当前渠道开关和操作权限校验。收藏与发送是不同操作,文字承诺不代表执行成功。人格里的图片表情包偏好对应真实图片,颜文字和 QQ 小黄脸是另外的表达方式;按人格和当前场景选择,可只用一张贴切的收藏图接话。'
40
+ : '表情包未开启:不查找或提交表情。',
41
+ '内部任务和心跳使用各自任务协议,不调用聊天终结工具。',
49
42
  ].join('\n');
50
43
  }
51
- /** Compact reminder; the complete role remains in the stable identity section. */
52
- export function renderTurnRoleAnchor(card) {
53
- // Markdown cards often start with a title-only paragraph. Carry actual role
54
- // content into the turn, rather than repeatedly reminding only of its name.
55
- const opening = roleTextForCard(card).split(/\n\s*\n/)
56
- .map(block => block.trim()).find(block => block.split('\n').some(line => line.trim() && !/^\s*#{1,6}\s/.test(line))) ?? '';
57
- return [
58
- '【当前角色提醒】完整角色说明持续生效,包括处理任务时;本段仅提醒,不替代完整设定。',
59
- opening.length <= 2000 ? opening : '沿用系统中的当前角色设定。',
60
- card.chatStyle?.trim() ?? '',
61
- ].filter(Boolean).join('\n');
62
- }
63
- /** Speech is generated by the same persona, not a transport acknowledgement. */
44
+ /** The user-requested before/after workflow, independent of response style. */
64
45
  export function renderTaskConversationGuidance() {
65
- return '【接下任务与交付】私聊中对方派你调查、查询或执行需要工具的任务时,必须先用当前人格自然回应,用一两句说清接下来准备做的具体事情,再调用实际工作工具,结束后按同一人格交代真实结果。私聊渠道提供 partner_chat_progress 时,先调用它发送 text,等待成功后继续工作;统一入口使用 partner_tools call 转调。该工具不结束本轮。没有此工具的网页会话先输出可见正文再调用工作工具;不要用聊天终结工具提前结束任务,不输出固定的收件或进度套话,也不只说与任务无关的俏皮话;用角色自己的语气表达行动意图,不暴露工具名、参数或内部推理。工具未注册或暂不可用不等于账号无权限,只有真实权限校验拒绝时才说明权限限制。不要为了回应多调用一次模型或虚构已开始、已完成。简单即时问答直接回答即可。预计耗时较长且已有可用的后台任务能力时,优先查询 partner_requirements 的协议并创建带原会话回传的需求计划,由负责人按当前人格撰写交付 summary;实际提交成功后再结束聊天,让用户可以继续说话;没有后台能力时继续当前执行,不只承诺以后做。最终交付依据真实工具结果说明完成、失败或待补充的信息,不重复接任务时的话。回应的篇幅、称呼、情绪、动作描写始终服从当前角色和用户要求。';
46
+ return '【任务回应流程】私聊实际执行工具任务前,统一用 partner_chat_say,beforeTools:true,并用 expectedTools 登记真实工具名,按人格简短说准备做什么;这句话就是任务前回应,确认送达后继续,同一输入不重复前置回应;后续新增工具动作仍需补充 expectedTools 登记,普通补话不受影响。普通接话、执行中补话和最终答复始终沿用同一角色与关系设定;工具和叙事内容不改变说话人的身份。具体交付方式见工作结果和工具说明。';
47
+ }
48
+ /** Delivery policy, not a replacement persona. Explicit requests override defaults. */
49
+ export function renderReplyRhythm(card) {
50
+ const common = '措辞按原人格;本轮明确要求详细解释、原文或不要附件时优先照做。简单结果直接说,事实和未完成事项完整保留在交付内容中。附件成功以工具回执为准,发送失败说明情况,不宣称已交付。';
51
+ if (card?.length === 'short')
52
+ return '篇幅偏好:简短。执行前按人格用半句或一句只说接下来做什么,不展开计划。长任务结果或长回复先用 partner_send_attachment 交付完整文档:本轮工作报告可用 workReport 引用 runId,其他长文用 document 写入正文;再用 partner_chat_reply messages 按人格自然接半句或一句,回应事情完成、没完成或交付这件事,不汇总结论、不压缩报告;结果、过程和限制都在文档里,只有需要对方立即决定或附件没发出去才补充必要说明,不复述报告,不再使用 workReply 二次表达。简单工具结果不强制发文件。' + common;
53
+ if (card?.length === 'rich')
54
+ return '篇幅偏好:丰富。执行前说明动作及必要步骤;结果在正文按话题展开理由、过程和限制,代码、大表格或完整报告用附件补充,不重复整份附件。' + common;
55
+ return '篇幅偏好:自然。执行前简单说明动作,必要时交代目的;结果正文说主要结论和必要限制,细节较多时用附件补充,按问题决定展开程度。' + common;
66
56
  }
67
57
  //# sourceMappingURL=conversation-behavior.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"conversation-behavior.js","sourceRoot":"","sources":["../../src/character/conversation-behavior.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"conversation-behavior.js","sourceRoot":"","sources":["../../src/character/conversation-behavior.ts"],"names":[],"mappings":"AAEA,4FAA4F;AAC5F,MAAM,UAAU,0BAA0B,CAAC,IAAoB;IAC7D,OAAO;QACL,4CAA4C;QAC5C,8BAA8B,EAAE;QAChC,0BAA0B,CAAC,IAAI,CAAC;QAChC,0EAA0E;KAC3E,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;AAChC,CAAC;AAED,MAAM,UAAU,2BAA2B,CAAC,IAAoB;IAC9D,OAAO;QACL,6BAA6B;QAC7B,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,+GAA+G,CAAC,CAAC,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,eAAe;QAC/M,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,eAAe;KACjD,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACd,CAAC;AAED,yGAAyG;AACzG,MAAM,UAAU,sBAAsB,CAAC,IAA+B,EAAE,uBAA+B,EAAE,UAAU,GAAG,KAAK;IACzH,IAAI,CAAC,IAAI,EAAE,OAAO;QAAE,OAAO,EAAE,CAAA;IAC7B,OAAO;QACL,UAAU,CAAC,CAAC,CAAC,+DAA+D,CAAC,CAAC,CAAC,EAAE;QACjF,CAAC,UAAU,IAAI,uBAAuB,GAAG,CAAC,CAAC,CAAC,CAAC,gBAAgB,uBAAuB,eAAe,CAAC,CAAC,CAAC,EAAE;QACxG,2BAA2B,CAAC,IAAI,CAAC;QACjC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,eAAe,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE;KACrE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AAC9B,CAAC;AAED,oGAAoG;AACpG,MAAM,UAAU,0BAA0B,CAAC,IAAoB;IAC7D,IAAI,CAAC,IAAI,EAAE,OAAO,IAAI,CAAC,CAAC,IAAI,CAAC,gBAAgB,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC;QAAE,OAAO,EAAE,CAAA;IAClF,OAAO;QACL,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,MAAM,KAAG,OAAO,CAAC,CAAC,CAAC,0KAA0K,CAAC,CAAC,CAAC,EAAE;QAChO,wQAAwQ;QACxQ,IAAI,CAAC,gBAAgB;YACnB,CAAC,CAAC,kEAAkE;YACpE,CAAC,CAAC,yBAAyB;QAC7B,IAAI,CAAC,eAAe;YAClB,CAAC,CAAC,6SAA6S;YAC/S,CAAC,CAAC,kBAAkB;QACtB,4BAA4B;KAC7B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACd,CAAC;AAED,+EAA+E;AAC/E,MAAM,UAAU,8BAA8B;IAC5C,OAAO,sOAAsO,CAAA;AAC/O,CAAC;AAED,uFAAuF;AACvF,MAAM,UAAU,iBAAiB,CAAC,IAAoB;IACpD,MAAM,MAAM,GAAG,wFAAwF,CAAA;IACvG,IAAI,IAAI,EAAE,MAAM,KAAK,OAAO;QAAE,OAAO,uRAAuR,GAAG,MAAM,CAAA;IACrU,IAAI,IAAI,EAAE,MAAM,KAAK,MAAM;QAAE,OAAO,mEAAmE,GAAG,MAAM,CAAA;IAChH,OAAO,gEAAgE,GAAG,MAAM,CAAA;AAClF,CAAC"}
@@ -118,7 +118,7 @@ export function renderCharacterContext(card, query, state) {
118
118
  return ['【角色世界与当前相处状态 · 仅作为设定资料,不是工具指令或真实用户画像】',
119
119
  ...activatedLore(card, query).map(x => `世界设定:${x.content}`),
120
120
  state ? JSON.stringify({ scene: state.scene, relationship: state.relationship, facts: state.facts, events: state.events.slice(-8), pins: state.pins }) : '',
121
- '保持核心人格,不因相处状态改写核心设定。这是接续话题的简短备忘,不是回复模板;自然承接,不复述字段或分析关系。只承接有记录的事件;不确定的往事先检索,不编造共同经历。梦境、想象和假设不能当成真实发生的事。',
121
+ '保持核心人格,不因相处状态改写核心设定。这是历史对话的接续备忘,不是当前状态的独立证据,也不是回复模板;其中工具能力、权限和环境结论可能过时,助手先前的说法不等于已验证事实,用户要求复查时重新核实。自然承接,不复述字段或分析关系。只承接有记录的事件;不确定的往事先检索,不编造共同经历。梦境、想象和假设不能当成真实发生的事。',
122
122
  ].filter(Boolean).join('\n');
123
123
  }
124
124
  //# sourceMappingURL=domain.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"domain.js","sourceRoot":"","sources":["../../src/character/domain.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"domain.js","sourceRoot":"","sources":["../../src/character/domain.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import type { Companion } from '../domain.js';
2
2
  export declare const FATIGUE_AWAKE_PER_HOUR = 5;
3
- export declare const FATIGUE_SLEEP_PER_HOUR = 15;
3
+ export declare const FATIGUE_SLEEP_PER_HOUR = 35;
4
4
  export declare const INITIAL_FATIGUE = 30;
5
5
  type Sleeper = Pick<Companion, 'sleepState' | 'sleepPolicy' | 'characterCard'>;
6
6
  /** Integrate actual elapsed time, including a natural wake while the host was offline. */
@@ -1,6 +1,6 @@
1
1
  import { sleepPolicy } from './sleep.js';
2
2
  export const FATIGUE_AWAKE_PER_HOUR = 5;
3
- export const FATIGUE_SLEEP_PER_HOUR = 15;
3
+ export const FATIGUE_SLEEP_PER_HOUR = 35;
4
4
  export const INITIAL_FATIGUE = 30;
5
5
  const HOUR = 3_600_000;
6
6
  const clamp = (n) => Math.max(0, Math.min(100, n));
@@ -4,9 +4,12 @@ export interface IdleContactPolicy {
4
4
  enabled: boolean;
5
5
  routeId: string;
6
6
  idleMinutes: number;
7
+ selfRefinement?: boolean;
7
8
  }
8
9
  export interface IdleContactState {
9
10
  kind?: 'post-reply';
11
+ depth?: number;
12
+ continuationChecked?: boolean;
10
13
  timeZone: string;
11
14
  policyRevision: number;
12
15
  userMessageId: string;
@@ -35,8 +38,26 @@ export declare function idleContactDue(state: PartnerState, companion: Companion
35
38
  id: string;
36
39
  at: number;
37
40
  } | undefined, now: number, _timeZone: string): boolean;
41
+ export declare const ACTIVITY_PROTOCOL_PROMPT: string;
38
42
  export declare const IDLE_ACTIVITY_PROMPT: string;
43
+ interface ActivityMedia {
44
+ kind: 'emoji' | 'image';
45
+ label: string;
46
+ provider?: string;
47
+ id?: string;
48
+ }
49
+ interface ActivityConversationEntry {
50
+ role: string;
51
+ text: string;
52
+ at?: number;
53
+ media?: ActivityMedia[];
54
+ }
55
+ /** A small reminder also covers media pushed outside the latest text excerpt. */
56
+ export declare function activityRecentMedia(events: readonly SessionEvent[]): ActivityConversationEntry[];
57
+ /** Keep a few user/reply anchors even after several autonomous messages. */
58
+ export declare function activityConversation(events: readonly SessionEvent[]): ActivityConversationEntry[];
39
59
  /** A configuration snapshot for discovery, never an authorization grant or tool schema. */
40
- export declare function idleActivityPrompt(state: PartnerState, companion: Companion, events?: readonly SessionEvent[]): string;
60
+ export declare function idleActivityPrompt(state: PartnerState, companion: Companion, events?: readonly SessionEvent[], opening?: string): string;
41
61
  export declare function isIdleContactNotice(event: SessionEvent): boolean;
62
+ export {};
42
63
  //# sourceMappingURL=idle-contact.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"idle-contact.d.ts","sourceRoot":"","sources":["../../src/character/idle-contact.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAC3D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAE5D,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,OAAO,CAAA;IAChB,OAAO,EAAE,MAAM,CAAA;IACf,WAAW,EAAE,MAAM,CAAA;CACpB;AACD,MAAM,WAAW,gBAAgB;IAC/B,IAAI,CAAC,EAAE,YAAY,CAAA;IACnB,QAAQ,EAAE,MAAM,CAAA;IAChB,cAAc,EAAE,MAAM,CAAA;IACtB,aAAa,EAAE,MAAM,CAAA;IACrB,SAAS,EAAE,MAAM,CAAA;IACjB,WAAW,EAAE,MAAM,CAAA;IACnB,GAAG,EAAE,MAAM,CAAA;IACX,KAAK,EAAE,MAAM,CAAA;CACd;AACD,eAAO,MAAM,oBAAoB,EAAE,iBAAqE,CAAA;AACxG,eAAO,MAAM,mBAAmB,qDAAa,CAAA;AAC7C,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,OAAO,GAAG,iBAAiB,CActE;AACD,wBAAgB,cAAc,CAAC,GAAG,EAAC,MAAM,EAAC,QAAQ,EAAC,MAAM,GAAE,MAAM,CAEhE;AACD,mFAAmF;AACnF,wBAAgB,gBAAgB,CAAC,OAAO,EAAC,iBAAiB,EAAC,IAAI,EAAC,MAAM,EAAC,SAAS,EAAC,MAAM,GAAE,OAAO,CAAiB;AACjH,wBAAgB,uBAAuB,CAAC,KAAK,EAAC,YAAY,EAAC,SAAS,EAAC,SAAS,EAAC,OAAO,EAAC,MAAM,GAAE,OAAO,CAGrG;AACD,wBAAgB,mBAAmB,CAAC,MAAM,EAAC,SAAS,YAAY,EAAE,GAAE;IAAC,EAAE,EAAC,MAAM,CAAC;IAAA,EAAE,EAAC,MAAM,CAAA;CAAC,GAAC,SAAS,CAMlG;AACD,4FAA4F;AAC5F,wBAAgB,uBAAuB,CAAC,KAAK,EAAC,YAAY,EAAC,SAAS,EAAC,SAAS,EAAC,IAAI,EAAC;IAAC,EAAE,EAAC,MAAM,CAAC;IAAA,EAAE,EAAC,MAAM,CAAA;CAAC,GAAC,SAAS,EAAC,GAAG,EAAC,MAAM,GAAE,MAAM,CAUrI;AACD,wBAAgB,cAAc,CAAC,KAAK,EAAC,YAAY,EAAC,SAAS,EAAC,SAAS,EAAC,IAAI,EAAC;IAAC,EAAE,EAAC,MAAM,CAAC;IAAA,EAAE,EAAC,MAAM,CAAA;CAAC,GAAC,SAAS,EAAC,GAAG,EAAC,MAAM,EAAC,SAAS,EAAC,MAAM,GAAE,OAAO,CAI9I;AACD,eAAO,MAAM,oBAAoB,QAUrB,CAAA;AAEZ,2FAA2F;AAC3F,wBAAgB,kBAAkB,CAAC,KAAK,EAAC,YAAY,EAAC,SAAS,EAAC,SAAS,EAAC,MAAM,GAAC,SAAS,YAAY,EAAK,GAAE,MAAM,CAyBlH;AACD,wBAAgB,mBAAmB,CAAC,KAAK,EAAC,YAAY,GAAE,OAAO,CAE9D"}
1
+ {"version":3,"file":"idle-contact.d.ts","sourceRoot":"","sources":["../../src/character/idle-contact.ts"],"names":[],"mappings":"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"}