luckytri 1.0.4 → 1.0.6

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 (156) hide show
  1. package/LICENSE +21 -21
  2. package/README.en.md +2 -0
  3. package/README.md +2 -0
  4. package/docs/en/CHANGELOG.md +20 -13
  5. package/docs/en/guide.md +7 -5
  6. package/docs/en/her-life.md +2 -2
  7. package/docs/en/webui.md +1 -1
  8. package/docs/zh/CHANGELOG.md +20 -13
  9. package/docs/zh/guide.md +7 -5
  10. package/docs/zh/her-life.md +2 -2
  11. package/docs/zh/webui.md +1 -1
  12. package/package.json +2 -1
  13. package/public/app/assets/ChatsPage-CFMVozoG.css +1 -0
  14. package/public/app/assets/{ChatsPage-CshdtTzV.js → ChatsPage-DCYMkJ91.js} +2 -2
  15. package/public/app/assets/{Empty-C7yzOBzy.js → Empty-CLyZkxR5.js} +1 -1
  16. package/public/app/assets/{Empty-DmUB2-Bk.css → Empty-DIobYG3x.css} +1 -1
  17. package/public/app/assets/{Field-BjFv4Rfn.js → Field-BpaRwLI_.js} +1 -1
  18. package/public/app/assets/{HeartPage-eqo6ru16.js → HeartPage-BIOMTiwr.js} +1 -1
  19. package/public/app/assets/HeartPage-C-2jvgzF.css +1 -0
  20. package/public/app/assets/{LifePage-CN8GE5NK.js → LifePage-BCgM4JkR.js} +1 -1
  21. package/public/app/assets/LifePage-CG1OHbRK.css +1 -0
  22. package/public/app/assets/MemoryPage-C_Bu4rfb.css +1 -0
  23. package/public/app/assets/{MemoryPage-CCpMN4Wg.js → MemoryPage-vShvRqMt.js} +1 -1
  24. package/public/app/assets/NaturePage-CPZlImT0.css +1 -0
  25. package/public/app/assets/{NaturePage-C0JqdBTR.js → NaturePage-Cy9ptr4G.js} +2 -2
  26. package/public/app/assets/PeoplePage-3RRUITDz.css +1 -0
  27. package/public/app/assets/{PeoplePage-BXGBbO4u.js → PeoplePage-CUZekB2E.js} +1 -1
  28. package/public/app/assets/{PluginsPage-Dksp5AV5.js → PluginsPage-1RM4rmJP.js} +1 -1
  29. package/public/app/assets/{SystemPage-BenIyTvk.css → SystemPage-BI2CB5Ig.css} +1 -1
  30. package/public/app/assets/{SystemPage-Cd7aa8eE.js → SystemPage-BeT5TmIV.js} +1 -1
  31. package/public/app/assets/TimePage-C-guwPk2.css +1 -0
  32. package/public/app/assets/{TimePage-Bs_zImb4.js → TimePage-taTmPMM8.js} +2 -2
  33. package/public/app/assets/{index-BHZcHUMh.css → index-DY5AM0Hz.css} +1 -1
  34. package/public/app/assets/{index-CyRtYxP3.js → index-DdYwC5ZU.js} +3 -3
  35. package/public/app/assets/{knowledge-BJOIyuJo.js → knowledge-DJmfu2KN.js} +1 -1
  36. package/public/app/assets/{media-Bwtx8blz.js → media-BEtnE0Gv.js} +1 -1
  37. package/public/app/assets/{mind-DtTVrW6Z.js → mind-Dtiw0-QK.js} +1 -1
  38. package/public/app/index.html +6 -5
  39. package/public/guide.en.html +11 -3
  40. package/public/guide.html +6 -3
  41. package/public/tutorial.en.md +2 -0
  42. package/public/tutorial.md +2 -0
  43. package/scripts/import-data.js +128 -128
  44. package/scripts/proxy-config.js +167 -167
  45. package/scripts/service-supervisor.js +50 -0
  46. package/scripts/start-server.js +71 -16
  47. package/scripts/update-instance.js +201 -201
  48. package/server/channels/adapters.js +27 -27
  49. package/server/channels/onebot/adapter.js +288 -288
  50. package/server/channels/qqbot/adapter.js +253 -253
  51. package/server/channels/qqbot/api.js +199 -199
  52. package/server/channels/qqbot/credentials.js +11 -11
  53. package/server/channels/qqbot/gateway.js +274 -274
  54. package/server/channels/qqbot/index.js +389 -389
  55. package/server/channels/segments.js +40 -40
  56. package/server/channels/session-key.js +153 -153
  57. package/server/channels/state.js +42 -42
  58. package/server/core/api.js +564 -564
  59. package/server/core/context-builder.js +288 -288
  60. package/server/core/context-compactor.js +454 -454
  61. package/server/core/conversation-cues.js +325 -325
  62. package/server/core/conversation-manager.js +87 -87
  63. package/server/core/feedback.js +8 -8
  64. package/server/core/group-style.js +72 -72
  65. package/server/core/initiative-context.js +66 -66
  66. package/server/core/input-budget.js +32 -32
  67. package/server/core/local-demo.js +98 -98
  68. package/server/core/message-manager.js +118 -118
  69. package/server/core/message-scheduler.js +78 -78
  70. package/server/core/model-json.js +190 -190
  71. package/server/core/model-presets.js +900 -900
  72. package/server/core/name-call.js +29 -29
  73. package/server/core/network.js +157 -157
  74. package/server/core/person-name.js +22 -22
  75. package/server/core/persona-manager.js +2 -1
  76. package/server/core/reply-delivery.js +404 -403
  77. package/server/core/reply-target-resolver.js +50 -50
  78. package/server/core/response-generator.js +50 -50
  79. package/server/core/response-validator.js +14 -2
  80. package/server/core/retired-prompts.js +51 -51
  81. package/server/core/sessions.js +109 -109
  82. package/server/core/speaker-names.js +92 -92
  83. package/server/core/topic-tracker.js +65 -65
  84. package/server/http.js +18 -18
  85. package/server/i18n/decisions.js +209 -206
  86. package/server/i18n/errors.js +4 -0
  87. package/server/i18n/index.js +144 -144
  88. package/server/i18n/models.js +111 -111
  89. package/server/knowledge/api.js +342 -342
  90. package/server/knowledge/embedding-profile.js +114 -114
  91. package/server/knowledge/index.js +13 -13
  92. package/server/knowledge/retrieval.js +93 -93
  93. package/server/knowledge/schema.js +158 -158
  94. package/server/knowledge/vector-index.js +90 -90
  95. package/server/mind/affect.js +265 -265
  96. package/server/mind/attention.js +200 -200
  97. package/server/mind/bonds.js +565 -565
  98. package/server/mind/clock.js +83 -83
  99. package/server/mind/continuity.js +562 -562
  100. package/server/mind/conversation-origin.js +175 -175
  101. package/server/mind/days.js +210 -210
  102. package/server/mind/evidence-read.js +45 -45
  103. package/server/mind/faces.js +373 -373
  104. package/server/mind/guard.js +60 -60
  105. package/server/mind/initiative.js +338 -338
  106. package/server/mind/life/activities.js +21 -21
  107. package/server/mind/life/context.js +330 -323
  108. package/server/mind/life/diary.js +20 -0
  109. package/server/mind/life/growth.js +261 -254
  110. package/server/mind/life/index.js +10 -2
  111. package/server/mind/life/presence.js +305 -305
  112. package/server/mind/meetings.js +1069 -1069
  113. package/server/mind/memory-policy.js +48 -48
  114. package/server/mind/memory.js +888 -888
  115. package/server/mind/nature.js +358 -358
  116. package/server/mind/novelty.js +19 -19
  117. package/server/mind/periods.js +118 -118
  118. package/server/mind/reading.js +120 -120
  119. package/server/mind/relationship-context.js +71 -0
  120. package/server/mind/relationships.js +390 -279
  121. package/server/mind/salience.js +201 -201
  122. package/server/mind/schema.js +567 -567
  123. package/server/mind/self.js +484 -484
  124. package/server/mind/thoughts.js +274 -274
  125. package/server/mind/time/agenda.js +242 -242
  126. package/server/mind/time/api.js +200 -200
  127. package/server/mind/time/attention.js +34 -34
  128. package/server/mind/time/delivery-links.js +130 -130
  129. package/server/mind/time/model-material.js +77 -77
  130. package/server/mind/time/presentation.js +51 -51
  131. package/server/mind/time/schedule.js +83 -83
  132. package/server/mind/time/schema.js +84 -84
  133. package/server/mind/time/search.js +383 -383
  134. package/server/mind/time/sharing.js +472 -472
  135. package/server/mind/time/task-links.js +311 -311
  136. package/server/mind/time/works.js +432 -432
  137. package/server/mind/traits.js +191 -191
  138. package/server/mind/view.js +9 -1
  139. package/server/runtime/installation.js +116 -116
  140. package/server/runtime/update-execution.js +2 -1
  141. package/server/runtime/update-manager.js +140 -140
  142. package/server/storage/data-package.js +298 -298
  143. package/server/storage/data-transfer-api.js +50 -50
  144. package/server/storage/data-transfer-worker.js +18 -18
  145. package/server/storage/data-transfer.js +416 -416
  146. package/server/studio/display-names.js +139 -139
  147. package/server/studio/management.js +102 -102
  148. package/server/studio/updates.js +144 -144
  149. package/server/version.js +10 -10
  150. package/public/app/assets/ChatsPage-DfyPCS9N.css +0 -1
  151. package/public/app/assets/HeartPage-Bft9wZp5.css +0 -1
  152. package/public/app/assets/LifePage-BUi5euBF.css +0 -1
  153. package/public/app/assets/MemoryPage-cZvXfkXb.css +0 -1
  154. package/public/app/assets/NaturePage-CHkpb5NK.css +0 -1
  155. package/public/app/assets/PeoplePage-BTU0H1pM.css +0 -1
  156. package/public/app/assets/TimePage-BOms_n4I.css +0 -1
@@ -1,83 +1,83 @@
1
- import { localClock } from "../core/conversation-cues.js";
2
-
3
- export const JUST_NOW = 5 * 60000;
4
-
5
- export function elapsedLabel(time, now, zone = "Asia/Shanghai") {
6
- const age = Math.max(0, now - time);
7
- if (age < JUST_NOW) return "刚才";
8
- const day = localClock(time, zone).local.slice(0, 10);
9
- const today = localClock(now, zone).local.slice(0, 10);
10
- if (day === today) return "今天早些时候";
11
- if (day === localClock(now - 86400000, zone).local.slice(0, 10))
12
- return "昨天";
13
- return age < 7 * 86400000 ? "好几天前" : "很久以前";
14
- }
15
-
16
- // Coarse distance in time, the way a person would say it.
17
- export function agoLabel(ms) {
18
- const days = Math.floor(Math.max(0, ms) / 86400000);
19
- if (days < 1) return "今天";
20
- if (days < 2) return "昨天";
21
- if (days < 7) return `${days} 天前`;
22
- if (days < 30) return `${Math.floor(days / 7)} 周前`;
23
- if (days < 365) return `${Math.floor(days / 30)} 个月前`;
24
- return `${Math.floor(days / 365)} 年前`;
25
- }
26
-
27
- export function topicWeight(
28
- time,
29
- now,
30
- { importance = 0, mentions = 1, open = false } = {},
31
- ) {
32
- const halfLife = (open ? 48 : 6) * 3600000 * (1 + Math.min(1, importance));
33
- return Math.min(
34
- 1,
35
- Math.pow(0.5, Math.max(0, now - time) / halfLife) *
36
- (1 + Math.min(3, mentions - 1) * 0.1),
37
- );
38
- }
39
-
40
- export function timePhase(lastTime, now) {
41
- if (!lastTime)
42
- return {
43
- key: "unfamiliar",
44
- label: "还未相遇",
45
- description: "还没有真实聊天,时间暂时没有可以延续的落点。",
46
- };
47
- const age = Math.max(0, now - lastTime);
48
- if (age < 30 * 60000)
49
- return {
50
- key: "present",
51
- label: "仍在对话里",
52
- description: "刚才的语气和话题仍然清晰,适合自然接着聊。",
53
- };
54
- if (age < 3 * 3600000)
55
- return {
56
- key: "afterglow",
57
- label: "留有余韵",
58
- description: "聊天刚安静下来,刚才没说完的事还会留在注意里。",
59
- };
60
- if (age < 12 * 3600000)
61
- return {
62
- key: "settled",
63
- label: "各自生活",
64
- description: "注意力已经离开即时对话,但重要的事仍可能被想起。",
65
- };
66
- if (age < 2 * 86400000)
67
- return {
68
- key: "quiet",
69
- label: "安静了一阵",
70
- description: "旧话题正在降温,未完成的事情比普通闲聊更容易被想起。",
71
- };
72
- if (age < 7 * 86400000)
73
- return {
74
- key: "remembering",
75
- label: "偶尔想起",
76
- description: "相隔已有几天,熟悉感还在,但重新开口需要具体缘由。",
77
- };
78
- return {
79
- key: "reunion",
80
- label: "等待重逢",
81
- description: "已经隔了很久,旧事只保留为背景,新的消息会成为新的相遇。",
82
- };
83
- }
1
+ import { localClock } from "../core/conversation-cues.js";
2
+
3
+ export const JUST_NOW = 5 * 60000;
4
+
5
+ export function elapsedLabel(time, now, zone = "Asia/Shanghai") {
6
+ const age = Math.max(0, now - time);
7
+ if (age < JUST_NOW) return "刚才";
8
+ const day = localClock(time, zone).local.slice(0, 10);
9
+ const today = localClock(now, zone).local.slice(0, 10);
10
+ if (day === today) return "今天早些时候";
11
+ if (day === localClock(now - 86400000, zone).local.slice(0, 10))
12
+ return "昨天";
13
+ return age < 7 * 86400000 ? "好几天前" : "很久以前";
14
+ }
15
+
16
+ // Coarse distance in time, the way a person would say it.
17
+ export function agoLabel(ms) {
18
+ const days = Math.floor(Math.max(0, ms) / 86400000);
19
+ if (days < 1) return "今天";
20
+ if (days < 2) return "昨天";
21
+ if (days < 7) return `${days} 天前`;
22
+ if (days < 30) return `${Math.floor(days / 7)} 周前`;
23
+ if (days < 365) return `${Math.floor(days / 30)} 个月前`;
24
+ return `${Math.floor(days / 365)} 年前`;
25
+ }
26
+
27
+ export function topicWeight(
28
+ time,
29
+ now,
30
+ { importance = 0, mentions = 1, open = false } = {},
31
+ ) {
32
+ const halfLife = (open ? 48 : 6) * 3600000 * (1 + Math.min(1, importance));
33
+ return Math.min(
34
+ 1,
35
+ Math.pow(0.5, Math.max(0, now - time) / halfLife) *
36
+ (1 + Math.min(3, mentions - 1) * 0.1),
37
+ );
38
+ }
39
+
40
+ export function timePhase(lastTime, now) {
41
+ if (!lastTime)
42
+ return {
43
+ key: "unfamiliar",
44
+ label: "还未相遇",
45
+ description: "还没有真实聊天,时间暂时没有可以延续的落点。",
46
+ };
47
+ const age = Math.max(0, now - lastTime);
48
+ if (age < 30 * 60000)
49
+ return {
50
+ key: "present",
51
+ label: "仍在对话里",
52
+ description: "刚才的语气和话题仍然清晰,适合自然接着聊。",
53
+ };
54
+ if (age < 3 * 3600000)
55
+ return {
56
+ key: "afterglow",
57
+ label: "留有余韵",
58
+ description: "聊天刚安静下来,刚才没说完的事还会留在注意里。",
59
+ };
60
+ if (age < 12 * 3600000)
61
+ return {
62
+ key: "settled",
63
+ label: "各自生活",
64
+ description: "注意力已经离开即时对话,但重要的事仍可能被想起。",
65
+ };
66
+ if (age < 2 * 86400000)
67
+ return {
68
+ key: "quiet",
69
+ label: "安静了一阵",
70
+ description: "旧话题正在降温,未完成的事情比普通闲聊更容易被想起。",
71
+ };
72
+ if (age < 7 * 86400000)
73
+ return {
74
+ key: "remembering",
75
+ label: "偶尔想起",
76
+ description: "相隔已有几天,熟悉感还在,但重新开口需要具体缘由。",
77
+ };
78
+ return {
79
+ key: "reunion",
80
+ label: "等待重逢",
81
+ description: "已经隔了很久,旧事只保留为背景,新的消息会成为新的相遇。",
82
+ };
83
+ }