@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
@@ -1,26 +1,35 @@
1
1
  /**
2
- * 项目管理器 — 多项目生命周期编排(单 Agent 模型)。
3
- * 职责:项目初始化编排(关旧项目→加锁→加载资源→构建上下文)、Agent 级资源管理
4
- * (memora.db 全局共享不随切换重建)、两层记忆加载。注册表/锁文件委托专职模块 ProjectRegistry / LockManager。
5
- * 原则:memora.db 只有一个(Agent 级);项目切换不重建库,只更新安全守卫+重扫项目规则;
6
- * 项目级 .memora/ 仅存放 rules 与 skills(无 memora.db)。
2
+ * 项目管理器 — 单个项目的生命周期编排(单 Agent 模型)。
3
+ * 职责:项目初始化编排(加锁 → 确保 Agent 级存储 → 构建上下文)、关闭与锁释放。
4
+ * 边界(2026-10-18 定案):一个 Agent 绑定一个项目;**多项目由宿主创建多个 Agent 实例**,
5
+ * 内核既不提供单实例内切换、也不维护跨项目名单(历史 `switchProject` / `projects.json`
6
+ * 注册表整链已随 PR-SWITCH-1 删除)。项目名只从路径推断,内核不落任何跨项目状态。
7
7
  */
8
- import { resolve, join } from 'node:path';
8
+ import { resolve } from 'node:path';
9
9
  import { mkdir } from 'node:fs/promises';
10
10
  import { InMemoryStorage } from '../memory/inMemoryStorage.js';
11
11
  import { logger } from '../logging/logger.js';
12
12
  import { expandHome } from '../utils/path.js';
13
- import { ProjectRegistry } from '../memory/projectRegistry.js';
14
13
  import { LockManager } from '../memory/lockManager.js';
14
+ /**
15
+ * 从路径推断项目名称(取最后一段目录名,无法推断返回 'unnamed')。
16
+ * 原为 ProjectRegistry 静态方法,注册表整链删除后摘为本模块级纯函数——项目名是
17
+ * `ProjectContext.projectName` 的唯一来源,推断逻辑不该随注册表一起消失。
18
+ */
19
+ function inferProjectName(projectPath) {
20
+ const parts = projectPath.replace(/[/\\]+$/, '').split(/[/\\]/);
21
+ return parts[parts.length - 1] || 'unnamed';
22
+ }
15
23
  // ─── 类 ──────────────────────────────────────────────────
16
24
  /**
17
- * 项目管理器:管理多项目生命周期——初始化当前项目(加锁+加载两层配置)、
18
- * 切换到新项目(解锁旧+锁新)、退出清理锁文件。注册表/锁文件委托专职模块,本类聚焦编排。
25
+ * 项目管理器:**单个**项目的生命周期编排——初始化(加锁 → 确保存储 → 构建上下文)、
26
+ * 关闭与锁释放。一个 Agent 绑定一个项目(2026-10-18 形态定案),因此本类**不持跨项目状态**:
27
+ * 无切换入口、无注册表、无项目名单。多项目由宿主各建一个 Agent 实例。
19
28
  */
20
29
  export class ProjectManager {
21
30
  /** Agent 级数据目录(宿主传入;内核不假设其下的文件形态) */
22
31
  agentDataDir;
23
- /** Agent 级存储实例(全局共享,不随项目切换重建) */
32
+ /** Agent 级存储实例(实例内唯一,init 后不再重建) */
24
33
  agentIndex = null;
25
34
  /** 当前打开的项目路径 */
26
35
  currentProjectPath = null;
@@ -28,26 +37,17 @@ export class ProjectManager {
28
37
  externalStorage;
29
38
  /** SecurityGuard 工厂函数(Agent 层注入) */
30
39
  createSecurityGuard;
31
- /** 项目注册表(专职 projects.json) */
32
- registry;
33
40
  /** 锁文件管理器(专职 .memora/.lock) */
34
41
  lockManager;
35
42
  constructor(options) {
36
- const { dataDir, storage, registryDir, createSecurityGuard } = options;
37
- const memoraHome = resolve(expandHome(dataDir));
38
- this.agentDataDir = memoraHome;
39
- // 注册表目录:显式指定时用之(典型为用户级路径,使注册表跨项目共享);
40
- // 缺省随 dataDir——此时注册表能否跨项目取决于调用方传的 dataDir 是共享还是项目级,
41
- // 内核不做假设:项目级 dataDir 下每个项目只注册自身,按名切换不成立(switchProject 已加守卫)。
42
- const registryHome = registryDir ? resolve(expandHome(registryDir)) : memoraHome;
43
+ const { dataDir, storage, createSecurityGuard } = options;
44
+ this.agentDataDir = resolve(expandHome(dataDir));
43
45
  this.externalStorage = storage ?? null;
44
46
  this.createSecurityGuard = createSecurityGuard;
45
- // 注册表/锁文件委托专职模块
46
- this.registry = new ProjectRegistry(join(registryHome, 'projects.json'));
47
47
  this.lockManager = new LockManager();
48
48
  }
49
49
  /**
50
- * 确保 Agent 级资源(存储实例)已初始化,生命周期内共享不随项目切换重建。
50
+ * 确保 Agent 级资源(存储实例)已初始化,Agent 实例生命周期内保持同一实例。
51
51
  * 构造注入的外部实例直接用,否则内部 InMemoryStorage(非持久化,仅开发/测试)。
52
52
  */
53
53
  async ensureAgentResources() {
@@ -64,11 +64,11 @@ export class ProjectManager {
64
64
  return { index: this.agentIndex };
65
65
  }
66
66
  /**
67
- * 初始化项目:关闭旧项目→取项目级锁→确保共享存储→构建上下文。
67
+ * 初始化项目:防重入释放旧锁→取项目级锁→确保存储→构建上下文。
68
68
  * 任一步失败释放锁并重置状态,防锁文件残留导致下次启动检测失败。
69
69
  */
70
70
  async initProject(projectPath, projectName, configDir) {
71
- // 1) 关闭旧项目(释放旧锁,不关 Agent 级 DB)
71
+ // 1) 防重入:本实例已打开过项目则先释放旧锁(不关 Agent 级 DB)
72
72
  if (this.currentProjectPath) {
73
73
  await this.closeProject();
74
74
  }
@@ -93,7 +93,7 @@ export class ProjectManager {
93
93
  }
94
94
  }
95
95
  /**
96
- * 构建项目上下文:bootstrap 过滤(恒为空,设定记忆归角色包层)+ 安全守卫创建 + 项目注册 + 日志。
96
+ * 构建项目上下文:bootstrap 过滤(恒为空,设定记忆归角色包层)+ 安全守卫创建 + 名称推断 + 日志。
97
97
  */
98
98
  buildProjectContext(projectPath, projectName, memoraDir, index, configDir) {
99
99
  // 设定记忆唯一归角色包内容层,由 assembler 角色包路径接管,恒为空数组
@@ -102,9 +102,7 @@ export class ProjectManager {
102
102
  const security = this.createSecurityGuard
103
103
  ? this.createSecurityGuard(projectPath, memoraDir, configDir, this.agentDataDir)
104
104
  : null;
105
- // 注册到项目表(委托 ProjectRegistry)
106
- const name = projectName || ProjectRegistry.inferProjectName(projectPath);
107
- this.registry.register(projectPath, name);
105
+ const name = projectName || inferProjectName(projectPath);
108
106
  logger.info({
109
107
  projectPath,
110
108
  projectName: name,
@@ -125,7 +123,7 @@ export class ProjectManager {
125
123
  await this.lockManager.release();
126
124
  this.currentProjectPath = null;
127
125
  }
128
- /** 完全关闭:释放项目锁 + 关闭 Agent 级数据库(应在 Agent 整体关闭而非项目切换时调用) */
126
+ /** 完全关闭:释放项目锁 + 关闭 Agent 级数据库(由 `Agent.close()` 调用) */
129
127
  async shutdown() {
130
128
  if (this.currentProjectPath) {
131
129
  await this.closeProject();
@@ -140,18 +138,6 @@ export class ProjectManager {
140
138
  this.agentIndex = null;
141
139
  }
142
140
  }
143
- /** 列出已注册项目(委托 ProjectRegistry) */
144
- get list() {
145
- return this.registry.list;
146
- }
147
- /** 注册项目(委托 ProjectRegistry) */
148
- registerProject(projectPath, name) {
149
- this.registry.register(projectPath, name);
150
- }
151
- /** 移除项目(委托 ProjectRegistry) */
152
- unregisterProject(projectPath) {
153
- this.registry.unregister(projectPath);
154
- }
155
141
  /** 当前项目路径 */
156
142
  get currentProject() {
157
143
  return this.currentProjectPath;
@@ -1 +1 @@
1
- {"version":3,"file":"projectManager.js","sourceRoot":"","sources":["../../src/memory/projectManager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"projectManager.js","sourceRoot":"","sources":["../../src/memory/projectManager.ts"],"names":[],"mappings":"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"}
@@ -1,42 +1,27 @@
1
1
  /**
2
2
  * 问答闭环(Round)存储接口 —— Memora 会话管理的 SSOT
3
3
  *
4
- * 设计理念:
5
- * - 问答闭环(Round)是独立的、全局唯一的实体
6
- * - 会话(Session)只是问答闭环 ID 的有序列表
7
- * - 分叉只是复制 ID 列表(指针复制),不复制数据
8
- *
9
- * 核心优势:
10
- * 1. 保持记忆系统的真理源设定(每个 roundId 对应唯一摘要)
11
- * 2. 保持会话的独立性(所有会话在存储层平等)
12
- * 3. 简洁的分叉实现(只需操作 ID 列表)
4
+ * 设计:Round 是独立全局唯一实体;Session 只是 roundId 的有序列表;
5
+ * 分叉只复制 ID 列表(指针复制,不复制数据)⇒ 每个 roundId 恒对应唯一摘要、
6
+ * 所有会话在存储层平等。
13
7
  */
14
8
  import type { MessageRole } from '../memory/types.js';
15
9
  import type { AbortStopReason, LlmErrorCategory } from '../agent/types.js';
16
10
  /**
17
- * 问答闭环消息:与 LLM Message 兼容,包含持久化所需的时间戳信息
18
- *
19
- * 对齐现有结构:
20
- * - Message.role('user' | 'assistant' | 'tool' | 'system')
21
- * - Message.content(消息内容)
22
- * - Message.roundId(轮次标识,此处由 Round 本身承载)
11
+ * 问答闭环消息:与 LLM Message 兼容,额外带持久化所需时间戳。
12
+ * roundId 不在此处——由所属 Round 本身承载。
23
13
  */
24
14
  export interface RoundMessage {
25
15
  /** 消息唯一标识(格式:msg-{uuid}) */
26
16
  id: string;
27
- /** 消息角色 */
28
17
  role: MessageRole;
29
- /** 消息内容 */
30
18
  content: string;
31
19
  /** 时间戳(ISO 8601,持久化用) */
32
20
  timestamp: string;
33
21
  /** 消息来源名称(可选,对齐 LLM Message.name) */
34
22
  name?: string;
35
- /** Token 用量统计(可选) */
36
23
  tokenUsage?: {
37
- /** 输入 token 数 */
38
24
  input: number;
39
- /** 输出 token 数 */
40
25
  output: number;
41
26
  };
42
27
  }
@@ -156,7 +141,13 @@ export interface ProcessMetricsPayload {
156
141
  durationMs: number;
157
142
  /** 输入 token 用量(估算口径:每次 LLM 调用请求消息 `estimateTokens` 的**全程累计**,非服务端 usage 实测值;实测值在 actualInputTokens,宿主取证面未消费) */
158
143
  tokenIn: number;
159
- /** 输出 token 用量(估算口径:各次 LLM 调用**正文**(fullContent)估算的全程累计——**不含 thinking、不含工具轮叙述**(二者不拼入 fullContent,见 llmCaller),推理模型下远小于真实输出预算消耗,勿据它判断「截断是否该发生」;判断输出压力用 maxTokens(生效值)+ truncationRecoveryCount + thinkingChars 佐证) */
144
+ /**
145
+ * 输出 token 用量(估算口径:各次 LLM 调用**正文**(fullContent)估算的全程累计——
146
+ * **不含 thinking、工具轮叙述与工具调用参数**(三者都不进 fullContent)。
147
+ * 工具密集轮因此**系统性低估**(真机 round-1791449684099:工具参数 9,216 字符 / 44 次调用,
148
+ * 落盘 tokenOut=646 ≈ 仅最终答复)。这是**有意口径,勿"修"成含参数**(历史数字将不可比),
149
+ * 读它时按「答复正文量」理解;判断输出压力用 maxTokens + truncationRecoveryCount + thinkingChars 佐证。
150
+ */
160
151
  tokenOut: number;
161
152
  /** 工具调用失败次数 */
162
153
  toolFailureCount: number;
@@ -191,13 +182,7 @@ export interface ProcessMetricsPayload {
191
182
  *
192
183
  * 由宿主在 consumeFlow 旁路从 AgentChunk / 主机事件派生,流结束时附到 Round.processEvents
193
184
  * 一次性落盘;重放时按 seq 有序重建 UI(运行时与重放共用同一渲染数据源)。
194
- *
195
- * 事件类型全量:
196
- * - meta:每轮首条,该轮回答身份
197
- * - thinking / memory_added / tool_start / tool_result:过程明细
198
- * - self_review / text_self_review:自审查过程与输出
199
- * - aborted:中断标记
200
- * - metrics:每轮末条,执行汇总
185
+ * 成员清单即下方联合类型(meta 首条 / metrics 末条,中间为过程明细与终态标记)。
201
186
  */
202
187
  export type ProcessEvent = {
203
188
  type: 'meta';
@@ -219,6 +204,7 @@ export type ProcessEvent = {
219
204
  id: string;
220
205
  name: string;
221
206
  source: string;
207
+ /** 正文(5.0.0 起可选:老数据无) */ content?: string;
222
208
  };
223
209
  }
224
210
  /**
@@ -244,7 +230,7 @@ export type ProcessEvent = {
244
230
  name: string;
245
231
  ok: boolean;
246
232
  summary?: string;
247
- /** 策略拦截:ok=false + blocked=true = 被确定性拒绝未执行(如搜索达硬上限) */
233
+ /** 主动挡下(B4 口径):ok=false + blocked=true = 被我们拦下未执行(护栏/执行层闸门/旁路拒绝) */
248
234
  blocked?: boolean;
249
235
  };
250
236
  }
@@ -274,14 +260,11 @@ export type ProcessEvent = {
274
260
  };
275
261
  }
276
262
  /**
277
- * 模型思考内容流:reasoning_content 增量累积结果。
278
- * 仅供重放重建「思考」折叠块;展示轨承载,正文轨/记忆轨不消费(CoT 防护)。命名用 thought——
279
- * 区别于上方既有 `type:'thinking'`(phase 相位事件)与多模型路由任务 `TaskType='reasoning'`,
280
- * 三者语义分离,避免同 union 判别式重复与跨层双义。
281
- * payload.content 超长由宿主落盘前截断(MAX_THOUGHT_PAYLOAD_LENGTH,SSOT 常量单点定义于 chatPanel)。
282
- * payload.stepIndex = 本条思考所属 step(一次 LLM 调用 + 可选工具执行)的轮内序号
283
- * (内核 loop 打标、随内容同源落盘),「一个 step 一个思考折叠块」的归桶键;
284
- * 缺省(旧数据)由展示层回落整轮单桶。
263
+ * 模型思考内容流(reasoning_content 累积):仅用于重放重建「思考」折叠块,
264
+ * 正文轨/记忆轨不消费(CoT 防护)。命名 `thought` 以别于同 union 的 `thinking`
265
+ * (phase 相位事件)与 `TaskType='reasoning'`,三者语义分离。
266
+ * content 超长由宿主落盘前截断(常量单点定义于 chatPanel);stepIndex = 所属 step 轮内序号,
267
+ * 「一个 step 一个思考块」的归桶键,缺省(旧数据)由展示层回落整轮单桶。
285
268
  */
286
269
  | {
287
270
  type: 'thought';
@@ -293,8 +276,7 @@ export type ProcessEvent = {
293
276
  };
294
277
  }
295
278
  /**
296
- * 任务项级折叠边界:active 任务项推进时由 loop 产,
297
- * 宿主落盘此事件把后续 narrate/tool/问答归到对应任务项分组。无任务表不产。
279
+ * 任务项级折叠边界:active 任务项推进时由 loop 产出,把后续 narrate/tool/问答归到该任务项分组。
298
280
  */
299
281
  | {
300
282
  type: 'plan_item_boundary';
@@ -304,6 +286,36 @@ export type ProcessEvent = {
304
286
  planItemId?: string;
305
287
  title?: string;
306
288
  };
289
+ }
290
+ /**
291
+ * 任务表收尾快照:turn 收尾清空运行时任务表**之前**拍的全量终态;清空前拍 = 中断轮同样拍到。
292
+ *
293
+ * 为什么必须有它:任务表是 turn 内瞬态(收尾即清 + 宿主推空看板),本快照是重放恢复
294
+ * 「任务项完成态」的唯一数据来源;存量历史轮无此事件 = 不显示状态图标(诚实降级,不伪造)。
295
+ */
296
+ | {
297
+ type: 'plan_snapshot';
298
+ seq: number;
299
+ ts: string;
300
+ payload: {
301
+ items: {
302
+ planItemId: string;
303
+ status: 'pending' | 'active' | 'done' | 'blocked';
304
+ }[];
305
+ };
306
+ }
307
+ /**
308
+ * 后台任务收尾报告:turn 终态对存活后台进程**脱管**(不杀,跨轮存活)后由内核产出,
309
+ * 无存活进程则不产。中断硬关闭路径下上屏 chunk 被丢弃,但 LLM 历史的 system 消息已由
310
+ * 内核写入(双通道)——本事件承载「上屏通道」的重放真相源。
311
+ */
312
+ | {
313
+ type: 'background_report';
314
+ seq: number;
315
+ ts: string;
316
+ payload: {
317
+ content: string;
318
+ };
307
319
  } | {
308
320
  type: 'aborted';
309
321
  seq: number;
@@ -314,15 +326,13 @@ export type ProcessEvent = {
314
326
  };
315
327
  }
316
328
  /**
317
- * 流式错误(重放可见性):失败轮在**实时流**里已有 `AgentChunk.error`(宿主据此即时弹
318
- * 提示条),但该 chunk **不落 processEvents** → 回看历史时原因丢失、只剩 generic「对话已中断」,
319
- * 用户无法回答「这轮为什么没答完」。本变体把 error 落进重放轨,宿主桥接点 =
320
- * `chatPanel.consumeFlow` 的 `error` 分支。
329
+ * 流式错误(重放可见性):实时流的 `AgentChunk.error` **不落 processEvents** ⇒ 回看历史时
330
+ * 原因丢失、只剩「对话已中断」。本变体把 error 落进重放轨(宿主桥接 = `chatPanel.consumeFlow`
331
+ * 的 `error` 分支)。
321
332
  *
322
- * 与 `aborted` 的分工(**禁互相承载**,见 `agent/types.ts` 的 `AbortStopReason` 注释):`aborted`
323
- * 由 AbortSignal 触因产生(用户停止 / 锁超时),答「谁让它停的」;本变体答「出了什么错」。
324
- * 二者在 failed 路径互斥(`signal.aborted === false` 才抛错),故不构成同轮双写。
325
- * `category` 与 `AgentChunk.error.category` **同源**(`LlmErrorCategory`)——展示面文案映射共用一份。
333
+ * 与 `aborted` 分工(**禁互相承载**):`aborted` 答「谁让它停的」(AbortSignal 触因),
334
+ * 本变体答「出了什么错」;二者在 failed 路径互斥,不构成同轮双写。
335
+ * `category` 与 `AgentChunk.error.category` **同源**(`LlmErrorCategory`)。
326
336
  */
327
337
  | {
328
338
  type: 'error';
@@ -342,7 +352,7 @@ export type ProcessEvent = {
342
352
  * 裁决证据事件(悬案取证轨,Round.evidence 元素)
343
353
  *
344
354
  * 定位:给「带伤悬案」提供跨会话可回溯的个案证据(回显命中 = 模型规避还是防重误拦、
345
- * 空响应是否偏爱会议轮),消费方是人工/抽样裁决,不是 UI 重放——
355
+ * 空响应是否偏爱会议轮、搜索 query 与结果面的归因对齐),消费方是人工/抽样裁决,不是 UI 重放——
346
356
  * 故不进 processEvents(宿主 UI 过程轨),由内核单点追加到在途 Round,
347
357
  * 宿主整对象 JSON 持久化天然携带。
348
358
  *
@@ -417,27 +427,94 @@ export type RoundEvidenceEvent = {
417
427
  */
418
428
  [dedupField: string]: string | number | undefined;
419
429
  };
430
+ } | {
431
+ /**
432
+ * web_search 执行结果留痕(SEARCH-QUALITY-1 P1-1:「搜不准」归因取证)
433
+ *
434
+ * 定位:结果质量争议的第一现场不在结果页,在 **query 本身**——旧台账只留「搜到什么」,
435
+ * 没留「搜的是什么」,归因只能猜。本变体把 query/endpoint/count/titles 落进取证轨,
436
+ * 复现争议时可直接对齐「模型问了什么 ⇄ 引擎回了什么」,裁决软引导/端点选择/解析缺陷。
437
+ * 零结果(count=0)同样留痕——「没搜到」与「搜到了但不对」是同级的归因现场。
438
+ */
439
+ type: 'web_search_result';
440
+ /** 事件时刻(ISO 8601) */
441
+ ts: string;
442
+ /** 事件时刻是否会议轮(判据见类型注释) */
443
+ meetingRound: boolean;
444
+ payload: {
445
+ /**
446
+ * 本次搜索的工具调用唯一 ID(= tool_start.payload.toolCallId)。
447
+ *
448
+ * 宿主渲染重放时据此把证据**唯一配对**回对应的 web_search 工具行,
449
+ * 替代旧的「按 query 文本猜 + 行序消费」启发式(同 query 多次搜索 / 被硬拦
450
+ * 的搜索会张冠李戴)。**可选**:旧持久化轮次的证据无此字段,缺失时宿主回退
451
+ * query 游标启发式(保不带伤——历史轮不因此丢证据渲染)。
452
+ */
453
+ toolCallId?: string;
454
+ /** LLM 实际发出的查询串(归因第一现场) */
455
+ query: string;
456
+ /** 实际服务的搜索后端(降级分型证据;提供方未打标时缺省) */
457
+ endpoint?: string;
458
+ /** 结果条数(0 = 零结果搜索) */
459
+ count: number;
460
+ /** 结果标题(净化 + 截断后):定位「搜到了什么」的最小证据面(全量计数看 count) */
461
+ titles: string[];
462
+ };
463
+ } | {
464
+ /**
465
+ * search_memories 命中明细留痕(MEM-EVENT-3:重放可重建的落盘副本)
466
+ *
467
+ * 定位:`memoryRecalled` 是**实时专属**事件(不进 processEvents),宿主重放历史轮时无数据源,
468
+ * 命中明细整块消失——用户回看时「这次到底参考了哪几条记忆」永久不可考。本变体把
469
+ * 同一份明细写进取证轨(Round.evidence 随轮落盘),与 web_search_result 同一条通道、
470
+ * 同一处置:**实时面照旧走事件(即时可见),落盘面走证据(可回看)**,二者同源一次发射。
471
+ *
472
+ * 与 `memoryRecalled` 载荷的差异(刻意,不是漏项):`count` 保留原值(发射时命中条数),
473
+ * `hits` 全量(不截断——条数上限真源仍是 parseLimit 的 50,不另立证据侧常量)。
474
+ *
475
+ * ⚠ 未命中(hits 为空)不进本轨:内核 `memoryRecalled` 本身只在有命中时发射,
476
+ * 证据轨不为「查了但没查到」造第二条路径(查询行为已在 tool_start/tool_result 可见)。
477
+ */
478
+ type: 'memory_hits';
479
+ /** 事件时刻(ISO 8601) */
480
+ ts: string;
481
+ /** 事件时刻是否会议轮(判据见类型注释) */
482
+ meetingRound: boolean;
483
+ payload: {
484
+ /**
485
+ * 本次召回的 tool_call 唯一 ID(= tool_start.payload.toolCallId)。
486
+ *
487
+ * 宿主重放时据此把命中明细**唯一配对**回对应的 search_memories 工具行。
488
+ * **可选**:旧内核(4.1.x 首版)不发该字段,缺失时宿主走轮次级兜底落位
489
+ * (保不带伤——历史轮不因缺配对键而丢明细)。
490
+ */
491
+ toolCallId?: string;
492
+ /** LLM 实际发出的检索词(与 web_search 的 query 同语义:归因第一现场) */
493
+ query: string;
494
+ /** 发射时命中条数(= hits.length,保留原字段供纯计数消费方) */
495
+ count: number;
496
+ /** 命中明细(记忆 id 全局唯一,兼宿主反馈寻址键);contentPreview 可选 = 跨 dist 契约(4.x 载荷无) */
497
+ hits: {
498
+ id: string;
499
+ name: string;
500
+ source: string;
501
+ contentPreview?: string;
502
+ }[];
503
+ };
420
504
  };
421
505
  /**
422
506
  * 问答闭环(Round)
423
507
  *
424
- * 设计约束:
425
- * 1. 全局唯一 ID:一个 roundId 在物理存储中只对应一个问答闭环
426
- * 2. 包含一轮完整的 User + AI 对话
427
- * 3. 独立于会话存储,可被多个会话引用(分叉场景)
428
- * 4. Append-only 设计:完成后不可修改,如需"修改"则创建新 Round
508
+ * 设计约束:全局唯一 ID、包含一轮完整 User+AI 对话、独立于会话存储(可被多会话引用)、
509
+ * **Append-only**(完成后不可修改,需"修改"则建新 Round)。
429
510
  */
430
511
  export interface Round {
431
512
  /**
432
513
  * 全局唯一 ID(格式:round-{uuid})
433
514
  *
434
- * 唯一性保证:
435
- * - 物理存储层唯一标识
436
- * - 记忆溯源的唯一锚点(Memory.roundId 指向此字段)
437
- * - 分叉操作的唯一引用
515
+ * 同时是记忆溯源的唯一锚点(`Memory.roundId` 指向此字段)与分叉操作的唯一引用。
438
516
  */
439
517
  id: string;
440
- /** 用户消息 */
441
518
  userMessage: RoundMessage;
442
519
  /** AI 消息(pending 状态时可能为空) */
443
520
  assistantMessage?: RoundMessage;
@@ -465,27 +542,20 @@ export interface Round {
465
542
  * (零冗余:仅在 appendAssistant 重写已存在 assistantMessage 时产生)。
466
543
  */
467
544
  assistantLog?: RoundMessage[];
468
- /** 问答闭环状态 */
469
545
  status: RoundStatus;
470
546
  /** 创建时间(ISO 8601) */
471
547
  createdAt: string;
472
548
  /** 完成时间(ISO 8601,仅 complete 状态有值) */
473
549
  completedAt?: string;
474
550
  /**
475
- * 引用计数(被多少个会话引用)
476
- *
477
- * 用途:
478
- * - 分叉时增加引用(新会话引用同一个 Round)
479
- * - 删除会话时减少引用
480
- * - 引用计数为 0 时可被 GC 清理
551
+ * 引用计数(被多少个会话引用):分叉 +1、删除会话 −1、**归零即可被 GC 清理**。
481
552
  */
482
553
  refCount: number;
483
554
  /**
484
555
  * 过程事件(每轮 UI 状态重建真相源,可选)
485
556
  *
486
557
  * 与 assistantMessage 同在闭环完成时刻定型(Write-once),存储于同一 Round 文件——
487
- * 删 round 即删事件、分叉即共享、截断即覆盖(v1.5 单文件内聚,见
488
- * process-event-log-replay-design.md §3.4)。缺省仅因 pending/error 轮无过程数据。
558
+ * 删 round 即删事件、分叉即共享、截断即覆盖。缺省仅因 pending/error 轮无过程数据。
489
559
  */
490
560
  processEvents?: ProcessEvent[];
491
561
  }
@@ -571,17 +641,12 @@ export interface IRoundStore {
571
641
  * 列出指定日期最近未完成(pending/error)的崩溃残留轮(step 原子落盘)。
572
642
  *
573
643
  * 用途:崩溃残留轮升级前的**只读中转**——崩溃发生在 appendAssistant 完成前时,该轮
574
- * refCount=0、未登记进会话 roundIds,宿主无法从会话列表发现;但其过程已由 step 原子
575
- * 检查点落盘到 pending Round。宿主重启后经此口查回,「找到」后由宿主调用收场方法
576
- * (MessageHistory.appendInterrupted)**升级为正常 stop turn** 并登记入会话。
644
+ * refCount=0、未登记进会话 roundIds(宿主无法从会话列表发现),但过程已由 step 检查点
645
+ * 落盘;宿主重启后经此口查回,再调 `MessageHistory.appendInterrupted` 升级为正常 stop turn。
577
646
  *
578
- * 语义约束(SSOT):
579
- * - **只读查询**,不登记会话、不改写 Round、不改变 appendAssistant 完成语义;
580
- * 升级登记是独立的「收场」动作(§一·五:中断轮 = 正常 stop turn,非半成品草稿)。
581
- * - **不污染正式会话 roundIds**——升级登记完成(complete + refCount>0)前,中断轮
582
- * 仍是无引用中间态,本接口只处理该短暂窗口的「找到」。
583
- * - 中断轮超龄后仍由 GC sweepOrphans 正常回收(refCount=0 孤儿),本接口不改变其生命周期;
584
- * 打捞窗口落在启动后的升级动作内(早于 24h 存活保护),不构成误回收。
647
+ * 语义约束(SSOT):① **只读**——不登记会话、不改写 Round、不改变 appendAssistant 完成语义;
648
+ * ② **不污染正式会话 roundIds**(升级登记完成前中断轮仍是无引用中间态);
649
+ * ③ 不改变生命周期——超龄仍由 GC sweepOrphans 按 refCount=0 孤儿回收,打捞窗口早于存活保护。
585
650
  *
586
651
  * @param date - YYYY-MM-DD,按 createdAt 的前缀匹配(ISO 日期头 10 位)
587
652
  * @param limit - 最多返回条数,按 createdAt 降序(最新在前);缺省不截断
@@ -589,11 +654,7 @@ export interface IRoundStore {
589
654
  */
590
655
  listInterruptedRecent?(date: string, limit?: number): Round[];
591
656
  }
592
- /**
593
- * 生成 Round ID(格式:round-{uuid})
594
- *
595
- * 使用 crypto.randomUUID() 保证全局唯一性
596
- */
657
+ /** 生成 Round ID(格式:round-{uuid}) */
597
658
  export declare function generateRoundId(): string;
598
659
  /**
599
660
  * 生成消息 ID(格式:msg-{uuid})
@@ -1 +1 @@
1
- {"version":3,"file":"roundStore.d.ts","sourceRoot":"","sources":["../../src/memory/roundStore.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"roundStore.d.ts","sourceRoot":"","sources":["../../src/memory/roundStore.ts"],"names":[],"mappings":"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"}
@@ -1,15 +1,9 @@
1
1
  /**
2
2
  * 问答闭环(Round)存储接口 —— Memora 会话管理的 SSOT
3
3
  *
4
- * 设计理念:
5
- * - 问答闭环(Round)是独立的、全局唯一的实体
6
- * - 会话(Session)只是问答闭环 ID 的有序列表
7
- * - 分叉只是复制 ID 列表(指针复制),不复制数据
8
- *
9
- * 核心优势:
10
- * 1. 保持记忆系统的真理源设定(每个 roundId 对应唯一摘要)
11
- * 2. 保持会话的独立性(所有会话在存储层平等)
12
- * 3. 简洁的分叉实现(只需操作 ID 列表)
4
+ * 设计:Round 是独立全局唯一实体;Session 只是 roundId 的有序列表;
5
+ * 分叉只复制 ID 列表(指针复制,不复制数据)⇒ 每个 roundId 恒对应唯一摘要、
6
+ * 所有会话在存储层平等。
13
7
  */
14
8
  /**
15
9
  * 轮是否「已收场」(终态)——**判据单一收口点(SSOT)**。
@@ -34,13 +28,8 @@ export function isRoundSettled(status) {
34
28
  return status === 'complete' || status === 'interrupted';
35
29
  }
36
30
  // ─── 辅助函数 ───────────────────────────────────────────
37
- /**
38
- * 生成 Round ID(格式:round-{uuid})
39
- *
40
- * 使用 crypto.randomUUID() 保证全局唯一性
41
- */
31
+ /** 生成 Round ID(格式:round-{uuid}) */
42
32
  export function generateRoundId() {
43
- // 使用 crypto.randomUUID()(Node.js 19+ / 现代浏览器支持)
44
33
  if (typeof crypto !== 'undefined' && crypto.randomUUID) {
45
34
  return `round-${crypto.randomUUID()}`;
46
35
  }
@@ -1 +1 @@
1
- {"version":3,"file":"roundStore.js","sourceRoot":"","sources":["../../src/memory/roundStore.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AA6GH;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,cAAc,CAAC,MAAmB;IAChD,OAAO,MAAM,KAAK,UAAU,IAAI,MAAM,KAAK,aAAa,CAAC;AAC3D,CAAC;AAicD,uDAAuD;AAEvD;;;;GAIG;AACH,MAAM,UAAU,eAAe;IAC7B,gDAAgD;IAChD,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;QACvD,OAAO,SAAS,MAAM,CAAC,UAAU,EAAE,EAAE,CAAC;IACxC,CAAC;IACD,iBAAiB;IACjB,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IAC1C,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACvD,OAAO,SAAS,SAAS,GAAG,MAAM,EAAE,CAAC;AACvC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB;IAC/B,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;QACvD,OAAO,OAAO,MAAM,CAAC,UAAU,EAAE,EAAE,CAAC;IACtC,CAAC;IACD,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IAC1C,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACvD,OAAO,OAAO,SAAS,GAAG,MAAM,EAAE,CAAC;AACrC,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,kBAAkB,CAAC,WAAmB;IACpD,MAAM,EAAE,GAAG,eAAe,EAAE,CAAC;IAC7B,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAErC,OAAO;QACL,EAAE;QACF,WAAW,EAAE;YACX,EAAE,EAAE,iBAAiB,EAAE;YACvB,IAAI,EAAE,MAAM;YACZ,OAAO,EAAE,WAAW;YACpB,SAAS,EAAE,GAAG;SACf;QACD,MAAM,EAAE,SAAS;QACjB,SAAS,EAAE,GAAG;QACd,QAAQ,EAAE,CAAC;KACZ,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,aAAa,CAC3B,KAAY,EACZ,gBAAwB,EACxB,UAA8C;IAE9C,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAErC,OAAO;QACL,GAAG,KAAK;QACR,gBAAgB,EAAE;YAChB,EAAE,EAAE,iBAAiB,EAAE;YACvB,IAAI,EAAE,WAAW;YACjB,OAAO,EAAE,gBAAgB;YACzB,SAAS,EAAE,GAAG;YACd,UAAU;SACX;QACD,MAAM,EAAE,UAAU;QAClB,WAAW,EAAE,GAAG;KACjB,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"roundStore.js","sourceRoot":"","sources":["../../src/memory/roundStore.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAoGH;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,cAAc,CAAC,MAAmB;IAChD,OAAO,MAAM,KAAK,UAAU,IAAI,MAAM,KAAK,aAAa,CAAC;AAC3D,CAAC;AA6gBD,uDAAuD;AAEvD,mCAAmC;AACnC,MAAM,UAAU,eAAe;IAC7B,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;QACvD,OAAO,SAAS,MAAM,CAAC,UAAU,EAAE,EAAE,CAAC;IACxC,CAAC;IACD,iBAAiB;IACjB,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IAC1C,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACvD,OAAO,SAAS,SAAS,GAAG,MAAM,EAAE,CAAC;AACvC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB;IAC/B,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;QACvD,OAAO,OAAO,MAAM,CAAC,UAAU,EAAE,EAAE,CAAC;IACtC,CAAC;IACD,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IAC1C,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACvD,OAAO,OAAO,SAAS,GAAG,MAAM,EAAE,CAAC;AACrC,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,kBAAkB,CAAC,WAAmB;IACpD,MAAM,EAAE,GAAG,eAAe,EAAE,CAAC;IAC7B,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAErC,OAAO;QACL,EAAE;QACF,WAAW,EAAE;YACX,EAAE,EAAE,iBAAiB,EAAE;YACvB,IAAI,EAAE,MAAM;YACZ,OAAO,EAAE,WAAW;YACpB,SAAS,EAAE,GAAG;SACf;QACD,MAAM,EAAE,SAAS;QACjB,SAAS,EAAE,GAAG;QACd,QAAQ,EAAE,CAAC;KACZ,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,aAAa,CAC3B,KAAY,EACZ,gBAAwB,EACxB,UAA8C;IAE9C,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAErC,OAAO;QACL,GAAG,KAAK;QACR,gBAAgB,EAAE;YAChB,EAAE,EAAE,iBAAiB,EAAE;YACvB,IAAI,EAAE,WAAW;YACjB,OAAO,EAAE,gBAAgB;YACzB,SAAS,EAAE,GAAG;YACd,UAAU;SACX;QACD,MAAM,EAAE,UAAU;QAClB,WAAW,EAAE,GAAG;KACjB,CAAC;AACJ,CAAC"}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * round-summary 派生寻址 —— 按 roundId 反查派生摘要(单一真理源)
3
+ *
4
+ * 定案(memory-as-summary.md §5.1):Round 是物理唯一真理源,round-summary 按
5
+ * `roundId` 顶层字段溯源,Round 侧不持有反向指针 ⇒「Round 退出 → 派生摘要处置」
6
+ * 的**选择集**只在本文件定义一次,两条消费路径共用:
7
+ * - 宿主联动(删会话/回溯截断/孤儿清扫)→ MemoryInspector.softDeleteRoundSummaries(软删 + 脱钩溯源,可恢复)
8
+ * - 内核 GC(孤儿轮引用归零)→ GCService.cleanUpRoundSummary(物理 purge,系统治理决定)
9
+ * ⚠️ 只共用「选哪些」;「怎么处置」(软删 vs purge)分叉是有意语义,勿折叠(见 §5.1 删除规则表)。
10
+ *
11
+ * 依赖方向:本文件在 memory/ 层,仅类型 import,agent/managers 与 memory 内部均可单向消费。
12
+ */
13
+ import type { IMemoryStorage } from '../memory/storageInterface.js';
14
+ import type { Memory } from '../memory/types.js';
15
+ /**
16
+ * 按 roundId 集合反查活跃 round-summary(覆盖全部会话命名空间的两段式 ID)
17
+ *
18
+ * 两段式摘要 ID `round-summary:{sessionName}:{roundId}` 含会话段,同轮可能被多会话
19
+ * 引用 —— 故按顶层 roundId 字段寻址,不解析 ID 字符串。
20
+ *
21
+ * @param storage 记忆库(两条路径各自持有,本函数只读不写)
22
+ * @param roundIds 目标轮次 ID 集合(单轮场景传单元素集合)
23
+ * @returns 命中的活跃摘要(仅内存活跃面;软删摘要不在其中,语义见 IMemoryStorage.getBySource)
24
+ */
25
+ export declare function findRoundSummaries(storage: IMemoryStorage, roundIds: ReadonlySet<string>): Memory[];
26
+ //# sourceMappingURL=roundSummaryLookup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"roundSummaryLookup.d.ts","sourceRoot":"","sources":["../../src/memory/roundSummaryLookup.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAGhD;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,cAAc,EACvB,QAAQ,EAAE,WAAW,CAAC,MAAM,CAAC,GAC5B,MAAM,EAAE,CAKV"}