@zooique/memora 3.0.1 → 5.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (282) hide show
  1. package/CHANGELOG.md +161 -1033
  2. package/README.en.md +46 -39
  3. package/README.md +40 -35
  4. package/config.example.json +1 -8
  5. package/dist/agent/agent.d.ts +88 -80
  6. package/dist/agent/agent.d.ts.map +1 -1
  7. package/dist/agent/agent.js +272 -221
  8. package/dist/agent/agent.js.map +1 -1
  9. package/dist/agent/assembler.d.ts +22 -21
  10. package/dist/agent/assembler.d.ts.map +1 -1
  11. package/dist/agent/assembler.js +120 -46
  12. package/dist/agent/assembler.js.map +1 -1
  13. package/dist/agent/backgroundTasks.d.ts +194 -0
  14. package/dist/agent/backgroundTasks.d.ts.map +1 -0
  15. package/dist/agent/backgroundTasks.js +314 -0
  16. package/dist/agent/backgroundTasks.js.map +1 -0
  17. package/dist/agent/budget.d.ts +23 -5
  18. package/dist/agent/budget.d.ts.map +1 -1
  19. package/dist/agent/budget.js +8 -2
  20. package/dist/agent/budget.js.map +1 -1
  21. package/dist/agent/builtinToolHandlers.d.ts +29 -9
  22. package/dist/agent/builtinToolHandlers.d.ts.map +1 -1
  23. package/dist/agent/builtinToolHandlers.js +53 -13
  24. package/dist/agent/builtinToolHandlers.js.map +1 -1
  25. package/dist/agent/builtinTools.d.ts +15 -1
  26. package/dist/agent/builtinTools.d.ts.map +1 -1
  27. package/dist/agent/builtinTools.js +111 -30
  28. package/dist/agent/builtinTools.js.map +1 -1
  29. package/dist/agent/constants.d.ts +31 -6
  30. package/dist/agent/constants.d.ts.map +1 -1
  31. package/dist/agent/constants.js +38 -8
  32. package/dist/agent/constants.js.map +1 -1
  33. package/dist/agent/contextManager.d.ts +8 -0
  34. package/dist/agent/contextManager.d.ts.map +1 -1
  35. package/dist/agent/contextManager.js +45 -3
  36. package/dist/agent/contextManager.js.map +1 -1
  37. package/dist/agent/contextPreparer.d.ts +1 -1
  38. package/dist/agent/contextPreparer.d.ts.map +1 -1
  39. package/dist/agent/contextPreparer.js +15 -10
  40. package/dist/agent/contextPreparer.js.map +1 -1
  41. package/dist/agent/guardRail.d.ts +12 -1
  42. package/dist/agent/guardRail.d.ts.map +1 -1
  43. package/dist/agent/guardRail.js +37 -2
  44. package/dist/agent/guardRail.js.map +1 -1
  45. package/dist/agent/loop.d.ts +319 -34
  46. package/dist/agent/loop.d.ts.map +1 -1
  47. package/dist/agent/loop.js +713 -110
  48. package/dist/agent/loop.js.map +1 -1
  49. package/dist/agent/managers/archiveCoordinator.d.ts +19 -4
  50. package/dist/agent/managers/archiveCoordinator.d.ts.map +1 -1
  51. package/dist/agent/managers/archiveCoordinator.js +25 -4
  52. package/dist/agent/managers/archiveCoordinator.js.map +1 -1
  53. package/dist/agent/managers/chatLockManager.d.ts +3 -9
  54. package/dist/agent/managers/chatLockManager.d.ts.map +1 -1
  55. package/dist/agent/managers/chatLockManager.js +7 -25
  56. package/dist/agent/managers/chatLockManager.js.map +1 -1
  57. package/dist/agent/managers/llmCaller.d.ts.map +1 -1
  58. package/dist/agent/managers/llmCaller.js +27 -1
  59. package/dist/agent/managers/llmCaller.js.map +1 -1
  60. package/dist/agent/managers/loopMetrics.d.ts +14 -0
  61. package/dist/agent/managers/loopMetrics.d.ts.map +1 -1
  62. package/dist/agent/managers/loopMetrics.js +15 -0
  63. package/dist/agent/managers/loopMetrics.js.map +1 -1
  64. package/dist/agent/managers/memoryInspector.d.ts +13 -15
  65. package/dist/agent/managers/memoryInspector.d.ts.map +1 -1
  66. package/dist/agent/managers/memoryInspector.js +38 -49
  67. package/dist/agent/managers/memoryInspector.js.map +1 -1
  68. package/dist/agent/managers/roundSummaryGenerator.d.ts +31 -1
  69. package/dist/agent/managers/roundSummaryGenerator.d.ts.map +1 -1
  70. package/dist/agent/managers/roundSummaryGenerator.js +81 -6
  71. package/dist/agent/managers/roundSummaryGenerator.js.map +1 -1
  72. package/dist/agent/managers/sessionArchiver.d.ts +35 -3
  73. package/dist/agent/managers/sessionArchiver.d.ts.map +1 -1
  74. package/dist/agent/managers/sessionArchiver.js +34 -3
  75. package/dist/agent/managers/sessionArchiver.js.map +1 -1
  76. package/dist/agent/managers/sessionManager.d.ts +21 -88
  77. package/dist/agent/managers/sessionManager.d.ts.map +1 -1
  78. package/dist/agent/managers/sessionManager.js +94 -278
  79. package/dist/agent/managers/sessionManager.js.map +1 -1
  80. package/dist/agent/managers/toolCallHelpers.d.ts +109 -28
  81. package/dist/agent/managers/toolCallHelpers.d.ts.map +1 -1
  82. package/dist/agent/managers/toolCallHelpers.js +93 -37
  83. package/dist/agent/managers/toolCallHelpers.js.map +1 -1
  84. package/dist/agent/messageHistory.d.ts.map +1 -1
  85. package/dist/agent/messageHistory.js +9 -5
  86. package/dist/agent/messageHistory.js.map +1 -1
  87. package/dist/agent/seed/orchestrator.d.ts +12 -1
  88. package/dist/agent/seed/orchestrator.d.ts.map +1 -1
  89. package/dist/agent/seed/orchestrator.js +15 -4
  90. package/dist/agent/seed/orchestrator.js.map +1 -1
  91. package/dist/agent/seed/prepare.d.ts.map +1 -1
  92. package/dist/agent/seed/prepare.js +9 -4
  93. package/dist/agent/seed/prepare.js.map +1 -1
  94. package/dist/agent/seed/types.d.ts +11 -4
  95. package/dist/agent/seed/types.d.ts.map +1 -1
  96. package/dist/agent/seed/types.js +2 -2
  97. package/dist/agent/textSanitize.d.ts +36 -0
  98. package/dist/agent/textSanitize.d.ts.map +1 -0
  99. package/dist/agent/textSanitize.js +55 -0
  100. package/dist/agent/textSanitize.js.map +1 -0
  101. package/dist/agent/toolExecutor.d.ts +97 -26
  102. package/dist/agent/toolExecutor.d.ts.map +1 -1
  103. package/dist/agent/toolExecutor.js +444 -78
  104. package/dist/agent/toolExecutor.js.map +1 -1
  105. package/dist/agent/toolLedger.d.ts +93 -41
  106. package/dist/agent/toolLedger.d.ts.map +1 -1
  107. package/dist/agent/toolLedger.js +114 -42
  108. package/dist/agent/toolLedger.js.map +1 -1
  109. package/dist/agent/toolResultCache.js +1 -1
  110. package/dist/agent/toolResultOffload.d.ts +8 -0
  111. package/dist/agent/toolResultOffload.d.ts.map +1 -1
  112. package/dist/agent/toolResultOffload.js +10 -3
  113. package/dist/agent/toolResultOffload.js.map +1 -1
  114. package/dist/agent/toolRunner.d.ts +16 -7
  115. package/dist/agent/toolRunner.d.ts.map +1 -1
  116. package/dist/agent/toolRunner.js +74 -29
  117. package/dist/agent/toolRunner.js.map +1 -1
  118. package/dist/agent/tracer.d.ts +13 -1
  119. package/dist/agent/tracer.d.ts.map +1 -1
  120. package/dist/agent/types.d.ts +74 -30
  121. package/dist/agent/types.d.ts.map +1 -1
  122. package/dist/code-exec/types.d.ts +9 -0
  123. package/dist/code-exec/types.d.ts.map +1 -1
  124. package/dist/index.d.ts +28 -41
  125. package/dist/index.d.ts.map +1 -1
  126. package/dist/index.js +65 -54
  127. package/dist/index.js.map +1 -1
  128. package/dist/logging/logger.d.ts +4 -1
  129. package/dist/logging/logger.d.ts.map +1 -1
  130. package/dist/logging/logger.js +5 -2
  131. package/dist/logging/logger.js.map +1 -1
  132. package/dist/memory/gcService.d.ts.map +1 -1
  133. package/dist/memory/gcService.js +3 -5
  134. package/dist/memory/gcService.js.map +1 -1
  135. package/dist/memory/inMemorySessionStore.d.ts +2 -2
  136. package/dist/memory/inMemorySessionStore.js +2 -2
  137. package/dist/memory/inMemoryStorage.d.ts +4 -3
  138. package/dist/memory/inMemoryStorage.d.ts.map +1 -1
  139. package/dist/memory/inMemoryStorage.js +2 -2
  140. package/dist/memory/inMemoryStorage.js.map +1 -1
  141. package/dist/memory/nodeSqliteStorage.d.ts +17 -0
  142. package/dist/memory/nodeSqliteStorage.d.ts.map +1 -0
  143. package/dist/memory/nodeSqliteStorage.js +393 -0
  144. package/dist/memory/nodeSqliteStorage.js.map +1 -0
  145. package/dist/memory/projectManager.d.ts +10 -20
  146. package/dist/memory/projectManager.d.ts.map +1 -1
  147. package/dist/memory/projectManager.js +27 -41
  148. package/dist/memory/projectManager.js.map +1 -1
  149. package/dist/memory/roundStore.d.ts +143 -82
  150. package/dist/memory/roundStore.d.ts.map +1 -1
  151. package/dist/memory/roundStore.js +4 -15
  152. package/dist/memory/roundStore.js.map +1 -1
  153. package/dist/memory/roundSummaryLookup.d.ts +26 -0
  154. package/dist/memory/roundSummaryLookup.d.ts.map +1 -0
  155. package/dist/memory/roundSummaryLookup.js +19 -0
  156. package/dist/memory/roundSummaryLookup.js.map +1 -0
  157. package/dist/memory/sessionStore.d.ts +19 -2
  158. package/dist/memory/sessionStore.d.ts.map +1 -1
  159. package/dist/memory/sessionStore.js.map +1 -1
  160. package/dist/memory/sourceValidation.d.ts +2 -13
  161. package/dist/memory/sourceValidation.d.ts.map +1 -1
  162. package/dist/memory/sourceValidation.js +5 -16
  163. package/dist/memory/sourceValidation.js.map +1 -1
  164. package/dist/memory/storageInterface.d.ts +26 -16
  165. package/dist/memory/storageInterface.d.ts.map +1 -1
  166. package/dist/memory/supersedeResolve.d.ts +39 -0
  167. package/dist/memory/supersedeResolve.d.ts.map +1 -0
  168. package/dist/memory/supersedeResolve.js +16 -0
  169. package/dist/memory/supersedeResolve.js.map +1 -0
  170. package/dist/memory/types.d.ts +10 -2
  171. package/dist/memory/types.d.ts.map +1 -1
  172. package/dist/memory/types.js +6 -1
  173. package/dist/memory/types.js.map +1 -1
  174. package/dist/role-pack/rolePackManager.d.ts +74 -33
  175. package/dist/role-pack/rolePackManager.d.ts.map +1 -1
  176. package/dist/role-pack/rolePackManager.js +112 -53
  177. package/dist/role-pack/rolePackManager.js.map +1 -1
  178. package/dist/role-pack/strategyKeys.d.ts +44 -0
  179. package/dist/role-pack/strategyKeys.d.ts.map +1 -1
  180. package/dist/role-pack/strategyKeys.js +55 -0
  181. package/dist/role-pack/strategyKeys.js.map +1 -1
  182. package/dist/role-pack/strategyResolver.d.ts +6 -1
  183. package/dist/role-pack/strategyResolver.d.ts.map +1 -1
  184. package/dist/role-pack/strategyResolver.js +20 -2
  185. package/dist/role-pack/strategyResolver.js.map +1 -1
  186. package/dist/role-pack/types.d.ts +5 -1
  187. package/dist/role-pack/types.d.ts.map +1 -1
  188. package/dist/security/confirmEntries.d.ts +44 -0
  189. package/dist/security/confirmEntries.d.ts.map +1 -0
  190. package/dist/security/confirmEntries.js +59 -0
  191. package/dist/security/confirmEntries.js.map +1 -0
  192. package/dist/security/pathGuard.d.ts +42 -6
  193. package/dist/security/pathGuard.d.ts.map +1 -1
  194. package/dist/security/pathGuard.js +126 -5
  195. package/dist/security/pathGuard.js.map +1 -1
  196. package/dist/skill/skillScriptRunner.d.ts +147 -15
  197. package/dist/skill/skillScriptRunner.d.ts.map +1 -1
  198. package/dist/skill/skillScriptRunner.js +479 -68
  199. package/dist/skill/skillScriptRunner.js.map +1 -1
  200. package/dist/utils/backgroundTask.d.ts +56 -34
  201. package/dist/utils/backgroundTask.d.ts.map +1 -1
  202. package/dist/utils/backgroundTask.js +130 -99
  203. package/dist/utils/backgroundTask.js.map +1 -1
  204. package/dist/utils/configResourceManager.d.ts +6 -2
  205. package/dist/utils/configResourceManager.d.ts.map +1 -1
  206. package/dist/utils/configResourceManager.js +8 -2
  207. package/dist/utils/configResourceManager.js.map +1 -1
  208. package/dist/utils/errors.d.ts +12 -2
  209. package/dist/utils/errors.d.ts.map +1 -1
  210. package/dist/utils/errors.js +12 -2
  211. package/dist/utils/errors.js.map +1 -1
  212. package/dist/utils/eventEmitter.d.ts +76 -23
  213. package/dist/utils/eventEmitter.d.ts.map +1 -1
  214. package/dist/utils/eventEmitter.js +23 -3
  215. package/dist/utils/eventEmitter.js.map +1 -1
  216. package/dist/utils/time.d.ts +8 -5
  217. package/dist/utils/time.d.ts.map +1 -1
  218. package/dist/utils/time.js +8 -5
  219. package/dist/utils/time.js.map +1 -1
  220. package/dist/utils/toError.d.ts +1 -1
  221. package/dist/utils/toError.js +1 -1
  222. package/dist/web-fetch/loginWall.d.ts +39 -0
  223. package/dist/web-fetch/loginWall.d.ts.map +1 -0
  224. package/dist/web-fetch/loginWall.js +78 -0
  225. package/dist/web-fetch/loginWall.js.map +1 -0
  226. package/dist/web-fetch/types.d.ts +8 -0
  227. package/dist/web-fetch/types.d.ts.map +1 -1
  228. package/dist/web-fetch/webFetchProvider.d.ts.map +1 -1
  229. package/dist/web-fetch/webFetchProvider.js +3 -1
  230. package/dist/web-fetch/webFetchProvider.js.map +1 -1
  231. package/dist/web-search/fetchWebSearchProvider.js +28 -23
  232. package/dist/web-search/fetchWebSearchProvider.js.map +1 -1
  233. package/docs/architecture/role-pack-authoring-guide.md +3 -1
  234. package/docs/architecture/role-pack-spec.md +2 -1
  235. package/docs/memora-api-reference.md +1349 -1175
  236. package/docs/memora-/345/215/207/347/272/247/346/214/207/345/215/227-4.x-/345/210/260-5.0.0.md +385 -0
  237. package/docs/memora-/346/216/245/345/205/245/346/214/207/345/215/227.md +91 -52
  238. package/docs/role-pack-/345/274/200/346/224/276/351/224/256/346/214/207/345/215/227.md +148 -148
  239. package/package.json +9 -4
  240. package/role-packs/README.md +41 -40
  241. package/role-packs/memora/345/212/251/346/211/213/rules.md +4 -4
  242. package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/manifest.json +1 -0
  243. package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/persona.md +1 -1
  244. package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/rules.md +1 -0
  245. package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/emotion-wave.md +1 -1
  246. package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/foreshadow.md +1 -1
  247. package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/outline-expand.md +32 -5
  248. package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/project-init/scripts/init-novel-project.mjs +10 -6
  249. package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/story-bible.md +3 -1
  250. package/role-packs//347/231/275/350/257/235/346/226/271/346/241/210/350/256/276/350/256/241/345/270/210/manifest.json +1 -0
  251. package/dist/agent/managers/dedupManager.d.ts +0 -85
  252. package/dist/agent/managers/dedupManager.d.ts.map +0 -1
  253. package/dist/agent/managers/dedupManager.js +0 -248
  254. package/dist/agent/managers/dedupManager.js.map +0 -1
  255. package/dist/agent/managers/goalConsistencyChecker.d.ts +0 -42
  256. package/dist/agent/managers/goalConsistencyChecker.d.ts.map +0 -1
  257. package/dist/agent/managers/goalConsistencyChecker.js +0 -178
  258. package/dist/agent/managers/goalConsistencyChecker.js.map +0 -1
  259. package/dist/agent/managers/llmJudgeHelper.d.ts +0 -21
  260. package/dist/agent/managers/llmJudgeHelper.d.ts.map +0 -1
  261. package/dist/agent/managers/llmJudgeHelper.js +0 -32
  262. package/dist/agent/managers/llmJudgeHelper.js.map +0 -1
  263. package/dist/agent/managers/memoryAdvisor.d.ts +0 -105
  264. package/dist/agent/managers/memoryAdvisor.d.ts.map +0 -1
  265. package/dist/agent/managers/memoryAdvisor.js +0 -322
  266. package/dist/agent/managers/memoryAdvisor.js.map +0 -1
  267. package/dist/agent/managers/memoryGovernance.d.ts +0 -24
  268. package/dist/agent/managers/memoryGovernance.d.ts.map +0 -1
  269. package/dist/agent/managers/memoryGovernance.js +0 -46
  270. package/dist/agent/managers/memoryGovernance.js.map +0 -1
  271. package/dist/memory/governance.d.ts +0 -17
  272. package/dist/memory/governance.d.ts.map +0 -1
  273. package/dist/memory/governance.js +0 -17
  274. package/dist/memory/governance.js.map +0 -1
  275. package/dist/memory/projectRegistry.d.ts +0 -47
  276. package/dist/memory/projectRegistry.d.ts.map +0 -1
  277. package/dist/memory/projectRegistry.js +0 -151
  278. package/dist/memory/projectRegistry.js.map +0 -1
  279. package/dist/utils/recallDefaults.d.ts +0 -16
  280. package/dist/utils/recallDefaults.d.ts.map +0 -1
  281. package/dist/utils/recallDefaults.js +0 -16
  282. package/dist/utils/recallDefaults.js.map +0 -1
@@ -0,0 +1,19 @@
1
+ import { SOURCE_LABELS } from '../memory/types.js';
2
+ /**
3
+ * 按 roundId 集合反查活跃 round-summary(覆盖全部会话命名空间的两段式 ID)
4
+ *
5
+ * 两段式摘要 ID `round-summary:{sessionName}:{roundId}` 含会话段,同轮可能被多会话
6
+ * 引用 —— 故按顶层 roundId 字段寻址,不解析 ID 字符串。
7
+ *
8
+ * @param storage 记忆库(两条路径各自持有,本函数只读不写)
9
+ * @param roundIds 目标轮次 ID 集合(单轮场景传单元素集合)
10
+ * @returns 命中的活跃摘要(仅内存活跃面;软删摘要不在其中,语义见 IMemoryStorage.getBySource)
11
+ */
12
+ export function findRoundSummaries(storage, roundIds) {
13
+ if (roundIds.size === 0)
14
+ return [];
15
+ return storage
16
+ .getBySource(SOURCE_LABELS.ROUND_SUMMARY)
17
+ .filter((m) => m.roundId !== undefined && roundIds.has(m.roundId));
18
+ }
19
+ //# sourceMappingURL=roundSummaryLookup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"roundSummaryLookup.js","sourceRoot":"","sources":["../../src/memory/roundSummaryLookup.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAElD;;;;;;;;;GASG;AACH,MAAM,UAAU,kBAAkB,CAChC,OAAuB,EACvB,QAA6B;IAE7B,IAAI,QAAQ,CAAC,IAAI,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IACnC,OAAO,OAAO;SACX,WAAW,CAAC,aAAa,CAAC,aAAa,CAAC;SACxC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,SAAS,IAAI,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;AACvE,CAAC"}
@@ -32,8 +32,8 @@ export interface ISessionStore {
32
32
  /**
33
33
  * 列出全部会话标题元数据,**必须按 updatedAt 降序**(最近活跃在前)。
34
34
  *
35
- * 排序方向是本接口契约的一部分,不是各实现自由:`SessionManager.restoreMostRecentSession`
36
- * 视 `[0]` 为「最近活跃会话」的唯一真理源;升序实现会让「恢复最近会话」恢复成最旧会话。
35
+ * 排序方向是本接口契约的一部分,不是各实现自由:宿主(chatPanel 构造器)视 `[0]` 为
36
+ * 「最近活跃会话」的唯一真理源(打开面板时定位初始会话);升序实现会让初始定位落到最旧会话。
37
37
  */
38
38
  listSessionMetas(): SessionMeta[];
39
39
  /** 追加 Round ID 到会话 */
@@ -68,6 +68,23 @@ export interface SessionMeta {
68
68
  updatedAt: string;
69
69
  /** 会话消息条数(命名信号与列表展示) */
70
70
  messageCount: number;
71
+ /**
72
+ * 上次**实际完成归档**时的消息数快照(防重判据的落盘副本,2026-10-19 起)。
73
+ *
74
+ * ⚠️ 与上方 `messageCount` **语义不同、不可复用**:
75
+ * - `messageCount` = 会话**当前**消息总数(列表展示 / 命名信号,随对话增长);
76
+ * - 本字段 = **上次归档那一刻**的消息数(防重用,只在归档写入成功后更新)。
77
+ *
78
+ * 为何要落盘:`SessionArchiver` 的内存快照(`Map`)随进程销毁清零,重启后首次触发会
79
+ * 对「内容未变、早归档过」的会话**重复烧一次 LLM**——手动归档入口(manual 模式「移入
80
+ * 留存区」)落地后这条路径变成用户可见的重复开销,故判据须跨进程存活。
81
+ *
82
+ * 判据可靠性:对话记录 append-only(单条消息不删)⇒ 本值等于当前消息数 = 内容未变。
83
+ * 缺省 `undefined`(老数据 / 从未归档)= 无归档记录 ⇒ **不跳过**(自然降级,不多不少一次)。
84
+ *
85
+ * 单点:`SessionArchiver` 唯一写入与读取(`getSessionMeta` 读、`updateSessionMeta` 写)。
86
+ */
87
+ archivedMessageCount?: number;
71
88
  /** 创建时间(ISO 8601) */
72
89
  createdAt?: string;
73
90
  }
@@ -1 +1 @@
1
- {"version":3,"file":"sessionStore.d.ts","sourceRoot":"","sources":["../../src/memory/sessionStore.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAErD;;;;;;;GAOG;AACH,MAAM,WAAW,aAAa;IAE5B;;;;;;;;;;;OAWG;IACH,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,cAAc,EAAE,CAAC;IAG9D,mCAAmC;IACnC,YAAY,IAAI,MAAM,EAAE,CAAC;IACzB,gCAAgC;IAChC,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS,CAAC;IAC3D,oEAAoE;IACpE,eAAe,CAAC,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACzD,oDAAoD;IACpD,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC;IACvE;;;;;OAKG;IACH,gBAAgB,IAAI,WAAW,EAAE,CAAC;IAGlC,sBAAsB;IACtB,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACxD,+BAA+B;IAC/B,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IAC5D,wBAAwB;IACxB,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IACzC,qCAAqC;IACrC,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IACzD,eAAe;IACf,aAAa,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI,CAAC;IACvC,6BAA6B;IAC7B,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;CACxC;AAED;;;GAGG;AACH,MAAM,WAAW,WAAW;IAC1B,qDAAqD;IACrD,SAAS,EAAE,MAAM,CAAC;IAGlB,mDAAmD;IACnD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,4CAA4C;IAC5C,WAAW,CAAC,EAAE,MAAM,CAAC;IAGrB,4CAA4C;IAC5C,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,0CAA0C;IAC1C,OAAO,CAAC,EAAE,MAAM,CAAC;IAGjB,gCAAgC;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,wBAAwB;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,qBAAqB;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,WAAW,GAAG,SAAS,GAAG,MAAM,CAS3E;AAED,gCAAgC;AAChC,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,WAAW,GAAG,SAAS,GAAG,MAAM,CAIxE;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,4CAA4C;IAC5C,IAAI,EAAE,WAAW,CAAC;IAClB,WAAW;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,oBAAoB;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,gDAAgD;IAChD,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB"}
1
+ {"version":3,"file":"sessionStore.d.ts","sourceRoot":"","sources":["../../src/memory/sessionStore.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAErD;;;;;;;GAOG;AACH,MAAM,WAAW,aAAa;IAE5B;;;;;;;;;;;OAWG;IACH,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,cAAc,EAAE,CAAC;IAG9D,mCAAmC;IACnC,YAAY,IAAI,MAAM,EAAE,CAAC;IACzB,gCAAgC;IAChC,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS,CAAC;IAC3D,oEAAoE;IACpE,eAAe,CAAC,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACzD,oDAAoD;IACpD,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC;IACvE;;;;;OAKG;IACH,gBAAgB,IAAI,WAAW,EAAE,CAAC;IAGlC,sBAAsB;IACtB,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACxD,+BAA+B;IAC/B,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IAC5D,wBAAwB;IACxB,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IACzC,qCAAqC;IACrC,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IACzD,eAAe;IACf,aAAa,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI,CAAC;IACvC,6BAA6B;IAC7B,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;CACxC;AAED;;;GAGG;AACH,MAAM,WAAW,WAAW;IAC1B,qDAAqD;IACrD,SAAS,EAAE,MAAM,CAAC;IAGlB,mDAAmD;IACnD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,4CAA4C;IAC5C,WAAW,CAAC,EAAE,MAAM,CAAC;IAGrB,4CAA4C;IAC5C,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,0CAA0C;IAC1C,OAAO,CAAC,EAAE,MAAM,CAAC;IAGjB,gCAAgC;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,wBAAwB;IACxB,YAAY,EAAE,MAAM,CAAC;IAGrB;;;;;;;;;;;;;;;OAeG;IACH,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAE9B,qBAAqB;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,WAAW,GAAG,SAAS,GAAG,MAAM,CAS3E;AAED,gCAAgC;AAChC,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,WAAW,GAAG,SAAS,GAAG,MAAM,CAIxE;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,4CAA4C;IAC5C,IAAI,EAAE,WAAW,CAAC;IAClB,WAAW;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,oBAAoB;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,gDAAgD;IAChD,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB"}
@@ -1 +1 @@
1
- {"version":3,"file":"sessionStore.js","sourceRoot":"","sources":["../../src/memory/sessionStore.ts"],"names":[],"mappings":"AAuFA;;GAEG;AACH,MAAM,UAAU,qBAAqB,CAAC,IAA6B;IACjE,IAAI,CAAC,IAAI;QAAE,OAAO,EAAE,CAAC;IACrB,wBAAwB;IACxB,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC;IAC7C,IAAI,WAAW;QAAE,OAAO,WAAW,CAAC;IACpC,wBAAwB;IACxB,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC;IACvC,IAAI,QAAQ;QAAE,OAAO,QAAQ,CAAC;IAC9B,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,gCAAgC;AAChC,MAAM,UAAU,kBAAkB,CAAC,IAA6B;IAC9D,IAAI,CAAC,IAAI;QAAE,OAAO,EAAE,CAAC;IACrB,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC;IACvC,OAAO,QAAQ,IAAI,EAAE,CAAC;AACxB,CAAC"}
1
+ {"version":3,"file":"sessionStore.js","sourceRoot":"","sources":["../../src/memory/sessionStore.ts"],"names":[],"mappings":"AA2GA;;GAEG;AACH,MAAM,UAAU,qBAAqB,CAAC,IAA6B;IACjE,IAAI,CAAC,IAAI;QAAE,OAAO,EAAE,CAAC;IACrB,wBAAwB;IACxB,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC;IAC7C,IAAI,WAAW;QAAE,OAAO,WAAW,CAAC;IACpC,wBAAwB;IACxB,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC;IACvC,IAAI,QAAQ;QAAE,OAAO,QAAQ,CAAC;IAC9B,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,gCAAgC;AAChC,MAAM,UAAU,kBAAkB,CAAC,IAA6B;IAC9D,IAAI,CAAC,IAAI;QAAE,OAAO,EAAE,CAAC;IACrB,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC;IACvC,OAAO,QAAQ,IAAI,EAAE,CAAC;AACxB,CAAC"}
@@ -18,18 +18,6 @@ export type SourceValidationSeverity = 'block' | 'warn';
18
18
  * @returns 转义后的字符串
19
19
  */
20
20
  export declare function escapeLike(str: string): string;
21
- /**
22
- * 截取字符串前 maxLen 字符后转义 LIKE 通配符
23
- *
24
- * 用于将用户输入 / round-summary 记忆文本作为关键词搜索 SQL LIKE 查询的输入。
25
- * 截断避免超长输入导致 LIKE 解析性能问题,转义防止通配符被当作模式符。
26
- * 同 `escapeLike`:SQL 侧必须写 `LIKE ? ESCAPE '\'`,否则转义后的模式查不到字面值。
27
- *
28
- * @param text - 原始文本(用户输入 / round-summary 内容)
29
- * @param maxLen - 最大截取长度,默认 50
30
- * @returns 截断 + 转义后的字符串
31
- */
32
- export declare function escapeLikeSnippet(text: string, maxLen?: number): string;
33
21
  /**
34
22
  * 校验 source 字段是否为已知标签
35
23
  *
@@ -52,7 +40,8 @@ export declare function validateSource(source: string): {
52
40
  /**
53
41
  * 简单 Levenshtein 距离计算(仅用于短字符串,不做优化)
54
42
  *
55
- * 同文件 :121 用于标签 typo 检测;另导出供 DedupManager(语义去重场景的名称相似度)复用。
43
+ * 供本文件 `validateSource` 的标签 typo 检测使用(同文件上方)。历史上另供 `DedupManager`
44
+ * 做名称相似度复用,该类已随 GOVERNANCE-SRC-1(2026-10-18)整链退役。
56
45
  */
57
46
  export declare function levenshtein(a: string, b: string): number;
58
47
  //# sourceMappingURL=sourceValidation.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"sourceValidation.d.ts","sourceRoot":"","sources":["../../src/memory/sourceValidation.ts"],"names":[],"mappings":"AAeA;;;;;;GAMG;AACH,MAAM,MAAM,wBAAwB,GAAG,OAAO,GAAG,MAAM,CAAC;AAUxD;;;;;;;;;;GAUG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAE9C;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,SAAK,GAAG,MAAM,CAEnE;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG;IAC9C,KAAK,EAAE,OAAO,CAAC;IACf,QAAQ,CAAC,EAAE,wBAAwB,CAAC;IACpC,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CA0DA;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CA2BxD"}
1
+ {"version":3,"file":"sourceValidation.d.ts","sourceRoot":"","sources":["../../src/memory/sourceValidation.ts"],"names":[],"mappings":"AAiBA;;;;;;GAMG;AACH,MAAM,MAAM,wBAAwB,GAAG,OAAO,GAAG,MAAM,CAAC;AAUxD;;;;;;;;;;GAUG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAE9C;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG;IAC9C,KAAK,EAAE,OAAO,CAAC;IACf,QAAQ,CAAC,EAAE,wBAAwB,CAAC;IACpC,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CA0DA;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CA2BxD"}
@@ -4,7 +4,9 @@
4
4
  * 职责:
5
5
  * - escapeLike:转义 SQL LIKE 通配符(须配套 SQL 的 `ESCAPE '\'` 子句,否则转义失效)
6
6
  * - validateSource:校验 source 字段安全性和拼写
7
- * - levenshtein:简单编辑距离计算(输入限短字符串;本文件 :121 用于标签 typo 检测,另导出供 DedupManager 名称相似度复用)
7
+ * - levenshtein:简单编辑距离计算(输入限短字符串;供本文件 `validateSource` 做标签 typo 检测)。
8
+ * 曾另供 `DedupManager`(名称相似度)复用,该类已随 GOVERNANCE-SRC-1(2026-10-18)整链退役,
9
+ * 现仅余 `validateSource` 一个生产消费方 + 自身单测。
8
10
  *
9
11
  * 设计原则:
10
12
  * - source 是开放字符串,新增来源无需改代码
@@ -33,20 +35,6 @@ const KNOWN_SOURCES = new Set(Object.values(SOURCE_LABELS));
33
35
  export function escapeLike(str) {
34
36
  return str.replace(/[%_]/g, '\\$&');
35
37
  }
36
- /**
37
- * 截取字符串前 maxLen 字符后转义 LIKE 通配符
38
- *
39
- * 用于将用户输入 / round-summary 记忆文本作为关键词搜索 SQL LIKE 查询的输入。
40
- * 截断避免超长输入导致 LIKE 解析性能问题,转义防止通配符被当作模式符。
41
- * 同 `escapeLike`:SQL 侧必须写 `LIKE ? ESCAPE '\'`,否则转义后的模式查不到字面值。
42
- *
43
- * @param text - 原始文本(用户输入 / round-summary 内容)
44
- * @param maxLen - 最大截取长度,默认 50
45
- * @returns 截断 + 转义后的字符串
46
- */
47
- export function escapeLikeSnippet(text, maxLen = 50) {
48
- return escapeLike(text.slice(0, maxLen));
49
- }
50
38
  /**
51
39
  * 校验 source 字段是否为已知标签
52
40
  *
@@ -115,7 +103,8 @@ export function validateSource(source) {
115
103
  /**
116
104
  * 简单 Levenshtein 距离计算(仅用于短字符串,不做优化)
117
105
  *
118
- * 同文件 :121 用于标签 typo 检测;另导出供 DedupManager(语义去重场景的名称相似度)复用。
106
+ * 供本文件 `validateSource` 的标签 typo 检测使用(同文件上方)。历史上另供 `DedupManager`
107
+ * 做名称相似度复用,该类已随 GOVERNANCE-SRC-1(2026-10-18)整链退役。
119
108
  */
120
109
  export function levenshtein(a, b) {
121
110
  if (a.length === 0)
@@ -1 +1 @@
1
- {"version":3,"file":"sourceValidation.js","sourceRoot":"","sources":["../../src/memory/sourceValidation.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sourceValidation.js","sourceRoot":"","sources":["../../src/memory/sourceValidation.ts"],"names":[],"mappings":"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"}
@@ -1,33 +1,34 @@
1
1
  /**
2
2
  * 记忆存储接口 — Memora 内核与具体数据库实现的解耦边界
3
3
  *
4
- * 内核(agent/ + memory/ + persona/ + skill/)不依赖具体数据库:宿主(如泊文 Electron
5
- * 主进程)持有 better-sqlite3 实例并实现此接口注入 Agent;测试用 InMemoryStorage;不注入时
6
- * Agent 内部用 InMemoryStorage 作 fallback(重启后数据丢失)。方法保持同步语义,调用方已有
7
- * await 调用仍安全。软删除语义:delete 写入 deletedAt,查询类方法自动过滤已删除记忆,
4
+ * 内核业务模块不依赖具体数据库:宿主实现此接口注入 Agent(vscode 宿主默认直接用内核
5
+ * `createNodeSqliteStorage()`;SQLite 不可用时**仅当尚未迁移**才降级旧 JSON,已有 `.db`
6
+ * 则响亮失败——见宿主 `memoryStorage.ts`「禁数据分叉」);测试用 InMemoryStorage;
7
+ * 不注入时 Agent 内部用 InMemoryStorage 作 fallback(重启后数据丢失)。方法保持同步语义,
8
+ * 调用方已有 await 调用仍安全。软删除语义:delete 写入 deletedAt,查询类方法自动过滤已删除记忆,
8
9
  * restore 恢复,purge 物理删,listDeleted/purgeExpired 管理回收站。
9
10
  */
10
11
  import type { Memory } from '../memory/types.js';
11
12
  /**
12
- * 记忆存储接口 — 所有方法同步(对齐 better-sqlite3),可后续新增 IAsyncMemoryStorage 支持异步后端。
13
+ * 记忆存储接口 — 所有方法同步(对齐 node:sqlite 同步 API),可后续新增 IAsyncMemoryStorage 支持异步后端。
13
14
  *
14
- * ⚠️ 契约隐含假设(宿主实现须知):同步语义要求单次调用低延迟。JSON 文件落地实现(如 vscode 宿主
15
- * workspaceStorage)在记忆量增长时,upsert 等写路径会触发全量 `JSON.stringify` 重写,
16
- * 1 万条规模即达 MB 级单次同步 I/O,会阻塞事件循环。因此:**生产由宿主注入持久化实现**——当前
17
- * vscode 宿主为 JSON 文件(WorkspaceStorage,小规模够用);记忆量增长时建议宿主评估更优存储
18
- * (如 better-sqlite3,同步语义与本接口对齐);InMemoryStorage 仅用于测试与未注入时 fallback。
15
+ * ⚠️ 契约隐含假设(宿主实现须知):同步语义要求单次调用低延迟。5.0.0 起内核自带
16
+ * `createNodeSqliteStorage()`(node:sqlite 内建模块延迟加载,零三方依赖,WAL)——宿主优先用它,
17
+ * 不必自引三方驱动。JSON 全量重写实现(记忆量增长时 upsert 触发全量 `JSON.stringify`,1 万条
18
+ * 规模即达 MB 级单次同步 I/O,会阻塞事件循环)自 5.0.0 起降为「环境不支持 SQLite **且
19
+ * 尚未迁移**」时的降级档,不再是默认形态(已迁移后不可用 = 响亮失败,禁真源分叉)。
19
20
  */
20
21
  export interface IMemoryStorage {
21
22
  /**
22
23
  * 插入或更新记忆;source 为开放字符串可自定义,但写入须经 validateSource 统一校验
23
- *(内核 inMemoryStorage 与宿主 workspaceStorage 均接入 block/warn 分级拦截)。
24
+ *(内核 inMemoryStorage 与宿主 JSON 降级实现 WorkspaceStorage 均接入 block/warn 分级拦截)。
24
25
  * 契约:整对象覆盖、无 CAS 乐观锁——单 Agent 设计假设;
25
26
  * 多 Agent 并发写同会话需扩展版本字段/条件更新,内核当前不承诺并发一致性。
26
27
  */
27
28
  upsert(memory: Memory): void;
28
29
  /**
29
30
  * 软删除(移入回收站):写入 deletedAt,不物理移除;对已软删除的记忆为 no-op。
30
- * 召回/搜索/列表/统计自动过滤,可 restore 恢复,回收站保留期满由 purgeExpired 物理清理
31
+ * 召回/搜索/列表/统计自动过滤,可 restore 恢复;回收站保留期归宿主策略,物理清理由宿主入口显式触发(purgeExpired)
31
32
  */
32
33
  delete(id: string): void;
33
34
  /** 恢复软删除记忆(清除 deletedAt);对活跃记忆为 no-op */
@@ -60,9 +61,10 @@ export interface IMemoryStorage {
60
61
  /**
61
62
  * 关键词搜索活跃记忆。宿主实现:Intl.Segmenter 分词 + 停用词过滤,
62
63
  * LIKE 匹配 content/name,按 accessedAt 降序(最近使用优先)返回 top N。
63
- * SQL 后端配合 `escapeLike()` 转义后,必须写成 `LIKE ? ESCAPE '\'`——
64
- * 缺 ESCAPE 子句则转义后的模式匹配不到含 `%`/`_` 的字面值,查询静默返回空。
65
- * InMemoryStorage 用 segmentText() 分词 + includes 匹配(无 SQL 转义语义)
64
+ * SQL 后端须自行转义 LIKE 通配符(`%` → `\%`、`_` → `\_`)后写成
65
+ * `LIKE ? ESCAPE '\'`——缺 ESCAPE 子句则转义后的模式匹配不到含 `%`/`_` 的字面值,
66
+ * 查询静默返回空(内核自带 SQLite 实现即按此规则,见 nodeSqliteStorage)。
67
+ * InMemoryStorage 用分词 + includes 匹配(无 SQL 转义语义)
66
68
  * @param limit - 返回上限(默认 10)
67
69
  */
68
70
  search(query: string, limit?: number): Memory[];
@@ -79,7 +81,7 @@ export interface IMemoryStorage {
79
81
  */
80
82
  touch(id: string, now: string): boolean;
81
83
  /**
82
- * 获取所有 source 标签及活跃记忆数量;替代 stats()/sourceHealth() 的全量遍历,
84
+ * 获取所有 source 标签及活跃记忆数量;供 MemoryInspector.stats() 一次取来源分布,
83
85
  * 宿主用 SQL GROUP BY source,InMemoryStorage 维护增量 source→count 缓存
84
86
  */
85
87
  getAllSources(): Map<string, number>;
@@ -90,4 +92,12 @@ export interface IMemoryStorage {
90
92
  */
91
93
  close?(): void;
92
94
  }
95
+ /**
96
+ * 只读存储视图 —— `IMemoryStorage` 的**读方法子集**(`Pick` 派生,与接口同步、不会漂移)。
97
+ *
98
+ * 用途:只读宿主(如 memora-mcp 的 `readOnlyFileStore`)需要「读记忆」但不该有能力写——把只读保证
99
+ * **由结构表达**(外部拿不到写方法),而不是靠「约定不乱调」。
100
+ * 实现侧(`createNodeSqliteStorage(path, { readOnly: true })`)返回的正是本视图对应的对象。
101
+ */
102
+ export type ReadOnlyMemoryStorage = Pick<IMemoryStorage, 'getById' | 'getBySource' | 'search' | 'count' | 'countBySource' | 'getAllSources' | 'listDeleted' | 'getDeletedById' | 'close'>;
93
103
  //# sourceMappingURL=storageInterface.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"storageInterface.d.ts","sourceRoot":"","sources":["../../src/memory/storageInterface.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAEhD;;;;;;;;GAQG;AACH,MAAM,WAAW,cAAc;IAC7B;;;;;OAKG;IACH,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAE7B;;;OAGG;IACH,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IAEzB,yCAAyC;IACzC,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IAE1B,iCAAiC;IACjC,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IAExB;;;;OAIG;IACH,WAAW,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAEtC;;;;OAIG;IACH,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IAE1C;;;;;OAKG;IACH,YAAY,CAAC,MAAM,EAAE,IAAI,GAAG,MAAM,CAAC;IAEnC,qDAAqD;IACrD,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IAEnC,6BAA6B;IAC7B,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAEtC;;;;;;;OAOG;IACH,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAEhD;;OAEG;IACH,KAAK,IAAI,MAAM,CAAC;IAEhB,6CAA6C;IAC7C,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;IAEtC;;;;OAIG;IACH,KAAK,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;IAExC;;;OAGG;IACH,aAAa,IAAI,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAErC;;;;OAIG;IACH,KAAK,CAAC,IAAI,IAAI,CAAC;CAChB"}
1
+ {"version":3,"file":"storageInterface.d.ts","sourceRoot":"","sources":["../../src/memory/storageInterface.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAEhD;;;;;;;;GAQG;AACH,MAAM,WAAW,cAAc;IAC7B;;;;;OAKG;IACH,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAE7B;;;OAGG;IACH,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IAEzB,yCAAyC;IACzC,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IAE1B,iCAAiC;IACjC,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IAExB;;;;OAIG;IACH,WAAW,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAEtC;;;;OAIG;IACH,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IAE1C;;;;;OAKG;IACH,YAAY,CAAC,MAAM,EAAE,IAAI,GAAG,MAAM,CAAC;IAEnC,qDAAqD;IACrD,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IAEnC,6BAA6B;IAC7B,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAEtC;;;;;;;;OAQG;IACH,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAEhD;;OAEG;IACH,KAAK,IAAI,MAAM,CAAC;IAEhB,6CAA6C;IAC7C,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;IAEtC;;;;OAIG;IACH,KAAK,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;IAExC;;;OAGG;IACH,aAAa,IAAI,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAErC;;;;OAIG;IACH,KAAK,CAAC,IAAI,IAAI,CAAC;CAChB;AAED;;;;;;GAMG;AACH,MAAM,MAAM,qBAAqB,GAAG,IAAI,CACtC,cAAc,EACZ,SAAS,GACT,aAAa,GACb,QAAQ,GACR,OAAO,GACP,eAAe,GACf,eAAe,GACf,aAAa,GACb,gBAAgB,GAChB,OAAO,CACV,CAAC"}
@@ -0,0 +1,39 @@
1
+ /**
2
+ * 取代状态判定 —— supersede 悬空指针的消费侧单一判据。
3
+ *
4
+ * 背景(写时取代模型,见 roundSummaryGenerator / ADR-021):
5
+ * - 同 session 内新摘要生成时,若与近窗口旧摘要主题重叠(加权 Jaccard ≥ 阈值),
6
+ * 给旧摘要打 `supersededBy = 新摘要.id`(软指针,非删除,保留可回溯)。
7
+ * - 消费侧(内核召回过滤 searchByKeyword、取代候选 getSessionCandidates、宿主治理展示)
8
+ * 据此把「被取代者」视为非当前版本。
9
+ *
10
+ * 缺口(设计边界):`supersededBy` 指向的「替代物摘要」可能被移除——GC purge、宿主软删/
11
+ * 物理删/过期清理、去重降级,任一路径都会使旧摘要的指针悬空。此时旧摘要既被消费侧过滤、
12
+ * 又无「当前版本」可取 → 有效记忆静默不可召回。
13
+ *
14
+ * 修法(SSOT):悬空指针的本质是「指向不存在/非活跃的记忆」。把这一判定收口成单一判据,
15
+ * 所有消费 supersededBy 的位置统一经此判定——与「谁、用哪条路径移除了替代物」完全解耦:
16
+ * 任一移除入口(含未来的新入口)都自动覆盖,无需在每个移除点补收敛逻辑(避免「漏接一处
17
+ * 即漏一类」)。判据语义:
18
+ * - 指针指向现存且活跃的记忆 → 真取代(隐藏旧、显新)。
19
+ * - 指针悬空(目标被移除或软删) → 视为未取代(旧摘要回退为当前版本,可召回、可再被取代)。
20
+ *
21
+ * 单端口原则:只读经 `getById` 契约暴露的存在性(不写入、不引入新机制)。
22
+ */
23
+ import type { Memory } from '../memory/types.js';
24
+ /**
25
+ * 记忆是否被「现存且活跃」的摘要取代。
26
+ *
27
+ * 仅当 `supersededBy` 非空且其目标当前存在且活跃时返回 `true`;指针悬空(目标已移除/软删)
28
+ * 返回 `false`(该记忆回退为当前版本)。
29
+ *
30
+ * @param memory 待判定的记忆(只需 `supersededBy` 字段,兼容内核 `Memory` 与宿主 DTO 输入)
31
+ * @param lookup 存在性查询(`IMemoryStorage` 与内核 `MemoryInspector` 均满足 `{ getById }`)
32
+ * @returns 是否被现存活跃摘要取代
33
+ */
34
+ export declare function hasActiveSuperseder(memory: {
35
+ supersededBy?: string;
36
+ }, lookup: {
37
+ getById(id: string): Memory | null;
38
+ }): boolean;
39
+ //# sourceMappingURL=supersedeResolve.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"supersedeResolve.d.ts","sourceRoot":"","sources":["../../src/memory/supersedeResolve.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAEhD;;;;;;;;;GASG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE;IAAE,YAAY,CAAC,EAAE,MAAM,CAAA;CAAE,EACjC,MAAM,EAAE;IAAE,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAA;CAAE,GAC7C,OAAO,CAGT"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * 记忆是否被「现存且活跃」的摘要取代。
3
+ *
4
+ * 仅当 `supersededBy` 非空且其目标当前存在且活跃时返回 `true`;指针悬空(目标已移除/软删)
5
+ * 返回 `false`(该记忆回退为当前版本)。
6
+ *
7
+ * @param memory 待判定的记忆(只需 `supersededBy` 字段,兼容内核 `Memory` 与宿主 DTO 输入)
8
+ * @param lookup 存在性查询(`IMemoryStorage` 与内核 `MemoryInspector` 均满足 `{ getById }`)
9
+ * @returns 是否被现存活跃摘要取代
10
+ */
11
+ export function hasActiveSuperseder(memory, lookup) {
12
+ if (memory.supersededBy === undefined)
13
+ return false;
14
+ return lookup.getById(memory.supersededBy) !== null;
15
+ }
16
+ //# sourceMappingURL=supersedeResolve.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"supersedeResolve.js","sourceRoot":"","sources":["../../src/memory/supersedeResolve.ts"],"names":[],"mappings":"AAwBA;;;;;;;;;GASG;AACH,MAAM,UAAU,mBAAmB,CACjC,MAAiC,EACjC,MAA8C;IAE9C,IAAI,MAAM,CAAC,YAAY,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC;IACpD,OAAO,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,KAAK,IAAI,CAAC;AACtD,CAAC"}
@@ -24,7 +24,7 @@ export interface Memory {
24
24
  createdAt: string;
25
25
  /** 最后访问时间(每次召回时刷新) */
26
26
  accessedAt: string;
27
- /** 软删除时间;非 undefined 表示已删除,回收站保留 30 天后物理清理 */
27
+ /** 软删除时间;非 undefined 表示已删除。回收站**不自动清理**:保留期由宿主策略决定(当前宿主为 30 天),物理清理须显式调用 `purgeExpired` */
28
28
  deletedAt?: string;
29
29
  /**
30
30
  * 额外的键值对元数据(可选透传字段,内核侧无生产写入方)。
@@ -50,6 +50,13 @@ export interface Memory {
50
50
  * metadata(宿主不持久化 metadata,而 superseded 须跨会话生效)
51
51
  */
52
52
  supersededBy?: string;
53
+ /**
54
+ * 摘要原料指纹:sha256(输入原文 + 分隔符 + 助手回复原文),生成摘要时计算并随条目落盘。
55
+ * 供写路径前置精确去重(generate 入口比对,原料全等 → 跳过生成,不调 LLM)。
56
+ * 顶层持久化字段(同 supersededBy 先例):去重须跨会话生效,metadata 不在存储契约内。
57
+ * 仅 round-summary 有意义;存量条目无此字段(不参与匹配,只管新增)。
58
+ */
59
+ materialFingerprint?: string;
53
60
  }
54
61
  /**
55
62
  * round-summary 摘要类型取值集合(单一真源:运行时校验与类型声明均从此派生)。
@@ -79,7 +86,8 @@ export declare function parseMemory(raw: unknown): Memory;
79
86
  * persona / rule / skill / work-projection 为残留兼容标签:对应内容不归记忆库管理
80
87
  * (角色包内容由角色包管理,作品投影落项目目录 projections/),标签保留用于
81
88
  * typo 检测(sourceValidation.ts:KNOWN_SOURCES 集合)与存量行/外部导入识别;
82
- * 它们不出现在 GOVERNANCE_SOURCES 中(治理系统只治理实际写入记忆库的 source)。
89
+ * 它们不出现在「治理取样列表」中(治理系统只治理实际写入记忆库的 source)。原 `GOVERNANCE_SOURCES`
90
+ * 常量已随 GOVERNANCE-SRC-1(2026-10-18)整链退役;该约定仍成立——写时取代只对实际写入的记忆生效。
83
91
  */
84
92
  export declare const SOURCE_LABELS: {
85
93
  /** 角色人格(角色包 content/persona.md)— 残留兼容标签,不写入记忆库 */
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/memory/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAOH;;;GAGG;AACH,MAAM,MAAM,WAAW,GAAG,QAAQ,GAAG,MAAM,GAAG,WAAW,GAAG,MAAM,CAAC;AAInE;;;;GAIG;AACH,MAAM,WAAW,MAAM;IACrB,mEAAmE;IACnE,EAAE,EAAE,MAAM,CAAC;IACX,wBAAwB;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,sBAAsB;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,qBAAqB;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,qBAAqB;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,sBAAsB;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,8CAA8C;IAC9C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAClC;;;;OAIG;IACH,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,sFAAsF;IACtF,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gFAAgF;IAChF,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,gDAAgD;IAChD,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;;;GAIG;AACH,eAAO,MAAM,aAAa,kEAAmE,CAAC;AAE9F;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC;AAEzD;;;;;;;;;;GAUG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,CAmGhD;AAID;;;;;;;GAOG;AACH,eAAO,MAAM,aAAa;IACxB,kDAAkD;;IAElD,qEAAqE;;IAErE,0CAA0C;;IAE1C,sDAAsD;;IAEtD,gCAAgC;;IAEhC,0BAA0B;;CAElB,CAAC;AAIX;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAEjF;AAED,oDAAoD;AACpD,wBAAgB,yBAAyB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAErE"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/memory/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAOH;;;GAGG;AACH,MAAM,MAAM,WAAW,GAAG,QAAQ,GAAG,MAAM,GAAG,WAAW,GAAG,MAAM,CAAC;AAInE;;;;GAIG;AACH,MAAM,WAAW,MAAM;IACrB,mEAAmE;IACnE,EAAE,EAAE,MAAM,CAAC;IACX,wBAAwB;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,sBAAsB;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,qBAAqB;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,qBAAqB;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,sBAAsB;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,2FAA2F;IAC3F,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAClC;;;;OAIG;IACH,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,sFAAsF;IACtF,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gFAAgF;IAChF,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,gDAAgD;IAChD,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;;;OAKG;IACH,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED;;;;GAIG;AACH,eAAO,MAAM,aAAa,kEAAmE,CAAC;AAE9F;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC;AAEzD;;;;;;;;;;GAUG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,CA2GhD;AAID;;;;;;;;GAQG;AACH,eAAO,MAAM,aAAa;IACxB,kDAAkD;;IAElD,qEAAqE;;IAErE,0CAA0C;;IAE1C,sDAAsD;;IAEtD,gCAAgC;;IAEhC,0BAA0B;;CAElB,CAAC;AAIX;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAEjF;AAED,oDAAoD;AACpD,wBAAgB,yBAAyB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAErE"}
@@ -78,6 +78,9 @@ export function parseMemory(raw) {
78
78
  if (obj.supersededBy !== undefined && typeof obj.supersededBy !== 'string') {
79
79
  throw configError('Memory 解析失败', `supersededBy 必须是字符串(当前为 ${typeof obj.supersededBy})`, ['检查数据源中 supersededBy 字段的类型']);
80
80
  }
81
+ if (obj.materialFingerprint !== undefined && typeof obj.materialFingerprint !== 'string') {
82
+ throw configError('Memory 解析失败', `materialFingerprint 必须是字符串(当前为 ${typeof obj.materialFingerprint})`, ['检查数据源中 materialFingerprint 字段的类型']);
83
+ }
81
84
  return {
82
85
  id: obj.id,
83
86
  content: obj.content,
@@ -92,6 +95,7 @@ export function parseMemory(raw) {
92
95
  roundId: obj.roundId,
93
96
  isModified: obj.isModified,
94
97
  supersededBy: obj.supersededBy,
98
+ materialFingerprint: obj.materialFingerprint,
95
99
  };
96
100
  }
97
101
  // ─── source 标签约定(非枚举,仅为当前使用的约定) ──────
@@ -101,7 +105,8 @@ export function parseMemory(raw) {
101
105
  * persona / rule / skill / work-projection 为残留兼容标签:对应内容不归记忆库管理
102
106
  * (角色包内容由角色包管理,作品投影落项目目录 projections/),标签保留用于
103
107
  * typo 检测(sourceValidation.ts:KNOWN_SOURCES 集合)与存量行/外部导入识别;
104
- * 它们不出现在 GOVERNANCE_SOURCES 中(治理系统只治理实际写入记忆库的 source)。
108
+ * 它们不出现在「治理取样列表」中(治理系统只治理实际写入记忆库的 source)。原 `GOVERNANCE_SOURCES`
109
+ * 常量已随 GOVERNANCE-SRC-1(2026-10-18)整链退役;该约定仍成立——写时取代只对实际写入的记忆生效。
105
110
  */
106
111
  export const SOURCE_LABELS = {
107
112
  /** 角色人格(角色包 content/persona.md)— 残留兼容标签,不写入记忆库 */
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/memory/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/memory/types.ts"],"names":[],"mappings":"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"}
@@ -60,20 +60,21 @@ export declare class RolePackManager extends ConfigResourceManager<RolePack> {
60
60
  /**
61
61
  * 获取当前 activePack 作为组长的队伍(供宿主 UI 消费的只读快照)。
62
62
  * SSOT 出口:宿主拿 team 数据的唯一公共方法,不绕过内核直接读 globalState。
63
- * 内部成员名单走 activeTeamMembers 截断(会议消费端约束超限部分不参与),
64
- * 保证宿主看到的参与名单与内核会议实际消费一致。
63
+ * 内部成员名单走 activeTeamMembers 截断 + 缺员过滤(会议消费端约束:超限不参与、
64
+ * 缺员不可参会),保证宿主看到的参与名单与内核会议实际消费一致。
65
65
  *
66
- * @returns 队伍快照(组长 + 截断后的组员);activePack 非组长或无队伍时返回 null
66
+ * @returns 队伍快照(组长 + 有效组员);activePack 非组长或无队伍时返回 null
67
67
  */
68
68
  getActiveTeam(): RolePackTeam | null;
69
69
  /**
70
- * 按组长名取队伍快照(run_team_meeting 等任意组解析入口,SSOT 与 getActiveTeam 同截断口径)。
70
+ * 按组长名取队伍快照(run_team_meeting 等任意组解析入口,SSOT 与 getActiveTeam 同口径)。
71
71
  *
72
72
  * 与 getActiveTeam 的区别:不依赖当前激活角色,显式按组名称解析(组名 = 组长的角色包名)。
73
- * 组员名单同样经 MAX_TEAM_MEMBERS 截断(队长 1 + 组员 ≤ 4 = 5 人组,超出部分不参与会议)。
73
+ * 组员名单同样经 MAX_TEAM_MEMBERS 截断 + 缺员过滤(同 effectiveMembers 单一实现,
74
+ * 会议任务项不为已卸载角色包建空转发言项)。
74
75
  *
75
76
  * @param group 组名(= 组长的角色包名)
76
- * @returns 队伍快照(组长 + 截断后的组员);未找到该组时返回 null
77
+ * @returns 队伍快照(组长 + 有效组员);未找到该组时返回 null
77
78
  */
78
79
  getTeam(group: string): RolePackTeam | null;
79
80
  /**
@@ -90,13 +91,23 @@ export declare class RolePackManager extends ConfigResourceManager<RolePack> {
90
91
  get roundAssemblyPerspective(): string | null;
91
92
  /**
92
93
  * 会议组员的**唯一消费入口**(SSOT 收口):当前激活角色作为组长时的会议组员名单,超限截断至
93
- * `MAX_TEAM_MEMBERS` 名。
94
+ * `MAX_TEAM_MEMBERS` 名 + 缺员过滤(名单输出 = 实际可参会者)。
94
95
  *
95
- * 截断只发生在消费端——`rolePackTeams` 存储保持原样(超限数据不裁切,用户可自行修正),
96
- * 因此「超限仅影响会议、不影响日常」的语义成立。所有会议消费点(装配角色解析 / 上下文块 /
97
- * 会议任务项)必须走本 getter,禁止直连 `team.members`,否则「超出部分不参与会议」即成假契约。
96
+ * 截断与缺员过滤只发生在消费端——`rolePackTeams` 存储保持原样(超限数据不裁切、幽灵组员
97
+ * 不摘除,宿主读期检测标注,用户可自行修正),因此「受损仅影响会议、不静默改用户数据」
98
+ * 的语义成立。所有会议消费点(装配角色解析 / 上下文块 / 会议任务项)必须走本 getter,
99
+ * 禁止直连 `team.members`,否则「超出部分不参与会议 / 缺员不可参会」即成假契约。
98
100
  */
99
101
  private get activeTeamMembers();
102
+ /**
103
+ * 有效参会名单(单一实现,消费端视图):截断至 `MAX_TEAM_MEMBERS` 后过滤缺员组员。
104
+ *
105
+ * 缺员 = 组员引用的角色包已卸载(内置包收紧无删除事件 / 用户包目录被清理等),
106
+ * 该组员不可参会,从名单输出中剔除(buildMeetingPlanSkeleton 不为其建发言项)。
107
+ * 存储不裁切——幽灵引用的「提示用户清理/修复」由宿主读期检测承担,内核只保证
108
+ * 「输出即实际参会」这一个消费语义(与 resolveRoundAssemblyRole 的缺员跳过兜底同口径)。
109
+ */
110
+ private effectiveMembers;
100
111
  /**
101
112
  * 会议机制:解析本轮表层装配角色(范围校验前置,防 LLM 幻觉角色名)。
102
113
  * rolePack 必须 ∈ {组长(activePack)} ∪ {组员};越界 → 忽略该覆盖 + warning 返回 null;
@@ -116,34 +127,14 @@ export declare class RolePackManager extends ConfigResourceManager<RolePack> {
116
127
  * 仅当 activePack 是某个组的组长且名单非空时产出;非组长返回空串(不注入)。
117
128
  *
118
129
  * 文案正文在模块级 buildTeamContextBlockText(纯函数,供 how 单源守卫直测;本方法只做前置守卫)。
119
- * 文案指挥 LLM 用 `task_table_write` 自主建表(确定性骨架预置见 tryBuildMeetingPlan,
120
- * 二者互补:骨架补首轮确定性,文案约束 LLM 后续走 task_table 单通道):
130
+ * 文案指挥 LLM 用 `task_table_write` 自主建表(确定性骨架预置见模块级纯函数
131
+ * buildMeetingPlanSkeleton,由 seed/prepare.ts 直调,二者互补:骨架补首轮确定性,
132
+ * 文案约束 LLM 后续走 task_table 单通道):
121
133
  * 明确组员发言任务项需声明 `rolePack` 以触发表层装配切换,汇总任务项不声明回到组长视角;
122
134
  * 并显式禁止用 write_file 模拟任务表(write_file 写 `.memora/task-table.md`
123
135
  * 伪建表会绕过 PlanItem 通道,导致顶部任务板不渲染)。
124
136
  */
125
137
  buildTeamContextBlock(): string;
126
- /**
127
- * 会议机制:确定性骨架预置(SSOT 单一入口,「最小受控起点」半反转——
128
- * 骨架确定性预置、内容与推进交 LLM,与 buildTeamContextBlock 文案互补)。
129
- *
130
- * 用户消息含「小组会议」**且** activePack 是某组组长 → 程序化预置占位骨架:
131
- * 组长开场项(无 rolePack = 默认组长视角)+ 组员各一项(`rolePack=成员`,触发表层装配硬切换)
132
- * + 汇总项尾(无 rolePack = 组长视角)。不固化发言内容与推进顺序,推进交 LLM;
133
- * LLM 可经 task_table_write 追加额外任务项(骨架以 append 扩项,不锁死多轮交互)。
134
- * 不引入会议引擎:任务项执行靠任务表每轮注入(assembler.getTaskTable)驱动 LLM 按项标记 done/blocked,
135
- * 装配视角逐项切换(getTaskTable → applyActivePlanItemAssembly → applyActivePlanItemAssemblyIfChanged)。
136
- *
137
- * 主题取自「小组会议」后文(冒号/逗号/空格分隔均可),为空则任务项仅标「发言/汇总」由 LLM 见用户消息展开。
138
- * 无 keyword / activePack 非组长 / 组名单空 → 返回 null(不触发,回落普通闭环)。
139
- *
140
- * @param input 用户输入
141
- * @returns 预置骨架任务项(description + 可选 rolePack);不触发返回 null
142
- */
143
- tryBuildMeetingPlan(input: string): Array<{
144
- description: string;
145
- rolePack?: string;
146
- }> | null;
147
138
  /**
148
139
  * 启动加载:扫描含 manifest.json 的角色包文件夹(覆盖基类 loadItems——基类只支持单文件扫描,生命周期其余仍复用基类)。
149
140
  * 默认激活路径 = §4.1 单链:activePack(宿主注入)→ 兜底包(builtinFallbackRole ?? BUILTIN_FALLBACK_PACK)。
@@ -265,5 +256,55 @@ export declare class RolePackManager extends ConfigResourceManager<RolePack> {
265
256
  * @returns 加载的角色包数量
266
257
  */
267
258
  loadExtraDir(dir: string): Promise<number>;
259
+ /**
260
+ * 重扫用户角色包目录并与内存池对账(角色视图「刷新」按钮的唯一内核落点)。
261
+ *
262
+ * 语义 = 摘除全部运行时注入项 → 重新 loadExtraDir → 净差对账 + 激活态悬空兜底:
263
+ * - runtimeNames 记账即用户注入名单(本类 registerRuntimeItem 唯一调用点在 loadExtraDir);
264
+ * - 对账结果取**净差**(对用户诚实):同名重注入 = 磁盘版替换(updated),不算新增/移除;
265
+ * 只有真消失(目录已删 / 改名旧名)才进 removed,全新名字才计入 added;
266
+ * - 内置包不参与对账(磁盘真理源 = dist,构建期同步,运行中恒定);
267
+ * - 原激活包被摘除(目录删除 / 改名)时走 §4.1 单链兜底(activateFallback,与 reload
268
+ * 激活包被删同源同判据,不自造第二套回退规则),经 setActivePackName 触发
269
+ * onActiveChanged(宿主同步 UI,属真实激活变更)。
270
+ *
271
+ * @returns added 净新增数;removed 真消失的包名;updated 同名重注入(内容生效)的包名;
272
+ * activeFallback 激活是否发生悬空兜底
273
+ */
274
+ resyncUserPacks(dir: string): Promise<{
275
+ added: number;
276
+ removed: string[];
277
+ updated: string[];
278
+ activeFallback: boolean;
279
+ }>;
268
280
  }
281
+ /**
282
+ * 会议机制:确定性骨架预置(「最小受控起点」半反转——骨架确定性预置、内容与推进交 LLM,
283
+ * 与 buildTeamContextBlock 文案互补)。
284
+ *
285
+ * 用户消息含「小组会议」**且** activePack 是某组组长 → 程序化预置占位骨架:
286
+ * 组长开场项(无 rolePack = 默认组长视角)+ 组员各一项(`rolePack=成员`,触发表层装配硬切换)
287
+ * + 汇总项尾(无 rolePack = 组长视角)。不固化发言内容与推进顺序,推进交 LLM;
288
+ * LLM 可经 task_table_write 追加额外任务项(骨架以 append 扩项,不锁死多轮交互)。
289
+ * 不引入会议引擎:任务项执行靠任务表每轮注入(assembler.getTaskTable)驱动 LLM 按项标记 done/blocked,
290
+ * 装配视角逐项切换(getTaskTable → applyActivePlanItemAssembly → applyActivePlanItemAssemblyIfChanged)。
291
+ *
292
+ * 主题取自「小组会议」后文(冒号/逗号/空格分隔均可),为空则任务项仅标「发言/汇总」由 LLM 见用户消息展开。
293
+ * 无 keyword / 组名单空 → 返回 null(不触发,回落普通闭环)。
294
+ *
295
+ * **形态沿革**:原为 RolePackManager.tryBuildMeetingPlan 类方法,2026-10-17 PUB-API-PRUNE-2
296
+ * 摘为模块级纯函数——宿主零消费 + 手册零承诺的内部机制,挂类成员即公开面泄漏。
297
+ * 摘类后由 seed/prepare.ts 直调,组长/组员数据经 getActiveTeam()(公开 SSOT 出口)取,
298
+ * 「activePack 非组长」守卫随 getActiveTeam() 返回 null 由调用方承担,语义与原方法一致。
299
+ * 本函数经模块 export 供同包 prepare.ts 使用,**不经 index.ts 挂公共面**。
300
+ *
301
+ * @param leader 组长角色包名(= activePackName)
302
+ * @param members 有效组员名单(getActiveTeam 已做截断 + 缺员过滤)
303
+ * @param input 用户输入
304
+ * @returns 预置骨架任务项(description + 可选 rolePack);不触发返回 null
305
+ */
306
+ export declare function buildMeetingPlanSkeleton(leader: string, members: readonly string[], input: string): Array<{
307
+ description: string;
308
+ rolePack?: string;
309
+ }> | null;
269
310
  //# sourceMappingURL=rolePackManager.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"rolePackManager.d.ts","sourceRoot":"","sources":["../../src/role-pack/rolePackManager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"rolePackManager.d.ts","sourceRoot":"","sources":["../../src/role-pack/rolePackManager.ts"],"names":[],"mappings":"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"}