@zooique/memora 2.0.3 → 3.0.1

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 (588) hide show
  1. package/CHANGELOG.md +1037 -0
  2. package/README.en.md +305 -272
  3. package/README.md +303 -260
  4. package/config.example.json +43 -0
  5. package/dist/agent/agent.d.ts +376 -408
  6. package/dist/agent/agent.d.ts.map +1 -1
  7. package/dist/agent/agent.js +1166 -926
  8. package/dist/agent/agent.js.map +1 -1
  9. package/dist/agent/assembler.d.ts +105 -43
  10. package/dist/agent/assembler.d.ts.map +1 -1
  11. package/dist/agent/assembler.js +543 -75
  12. package/dist/agent/assembler.js.map +1 -1
  13. package/dist/agent/budget.d.ts +131 -0
  14. package/dist/agent/budget.d.ts.map +1 -0
  15. package/dist/agent/budget.js +128 -0
  16. package/dist/agent/budget.js.map +1 -0
  17. package/dist/agent/builtinToolHandlers.d.ts +225 -38
  18. package/dist/agent/builtinToolHandlers.d.ts.map +1 -1
  19. package/dist/agent/builtinToolHandlers.js +748 -132
  20. package/dist/agent/builtinToolHandlers.js.map +1 -1
  21. package/dist/agent/builtinTools.d.ts +198 -7
  22. package/dist/agent/builtinTools.d.ts.map +1 -1
  23. package/dist/agent/builtinTools.js +646 -14
  24. package/dist/agent/builtinTools.js.map +1 -1
  25. package/dist/agent/compaction.d.ts +93 -0
  26. package/dist/agent/compaction.d.ts.map +1 -0
  27. package/dist/agent/compaction.js +192 -0
  28. package/dist/agent/compaction.js.map +1 -0
  29. package/dist/agent/constants.d.ts +137 -20
  30. package/dist/agent/constants.d.ts.map +1 -1
  31. package/dist/agent/constants.js +152 -20
  32. package/dist/agent/constants.js.map +1 -1
  33. package/dist/agent/contextManager.d.ts +119 -77
  34. package/dist/agent/contextManager.d.ts.map +1 -1
  35. package/dist/agent/contextManager.js +192 -135
  36. package/dist/agent/contextManager.js.map +1 -1
  37. package/dist/agent/contextPreparer.d.ts +78 -0
  38. package/dist/agent/contextPreparer.d.ts.map +1 -0
  39. package/dist/agent/contextPreparer.js +128 -0
  40. package/dist/agent/contextPreparer.js.map +1 -0
  41. package/dist/agent/duplicateInterceptor.d.ts +67 -0
  42. package/dist/agent/duplicateInterceptor.d.ts.map +1 -0
  43. package/dist/agent/duplicateInterceptor.js +82 -0
  44. package/dist/agent/duplicateInterceptor.js.map +1 -0
  45. package/dist/agent/guardRail.d.ts +166 -0
  46. package/dist/agent/guardRail.d.ts.map +1 -0
  47. package/dist/agent/guardRail.js +333 -0
  48. package/dist/agent/guardRail.js.map +1 -0
  49. package/dist/agent/loop.d.ts +716 -295
  50. package/dist/agent/loop.d.ts.map +1 -1
  51. package/dist/agent/loop.js +2178 -664
  52. package/dist/agent/loop.js.map +1 -1
  53. package/dist/agent/managers/archiveCoordinator.d.ts +14 -171
  54. package/dist/agent/managers/archiveCoordinator.d.ts.map +1 -1
  55. package/dist/agent/managers/archiveCoordinator.js +19 -287
  56. package/dist/agent/managers/archiveCoordinator.js.map +1 -1
  57. package/dist/agent/managers/chatLockManager.d.ts +20 -88
  58. package/dist/agent/managers/chatLockManager.d.ts.map +1 -1
  59. package/dist/agent/managers/chatLockManager.js +31 -103
  60. package/dist/agent/managers/chatLockManager.js.map +1 -1
  61. package/dist/agent/managers/dedupManager.d.ts +31 -115
  62. package/dist/agent/managers/dedupManager.d.ts.map +1 -1
  63. package/dist/agent/managers/dedupManager.js +48 -136
  64. package/dist/agent/managers/dedupManager.js.map +1 -1
  65. package/dist/agent/managers/goalConsistencyChecker.d.ts +42 -0
  66. package/dist/agent/managers/goalConsistencyChecker.d.ts.map +1 -0
  67. package/dist/agent/managers/goalConsistencyChecker.js +178 -0
  68. package/dist/agent/managers/goalConsistencyChecker.js.map +1 -0
  69. package/dist/agent/managers/llmCaller.d.ts +124 -0
  70. package/dist/agent/managers/llmCaller.d.ts.map +1 -0
  71. package/dist/agent/managers/llmCaller.js +417 -0
  72. package/dist/agent/managers/llmCaller.js.map +1 -0
  73. package/dist/agent/managers/llmJudgeHelper.d.ts +8 -25
  74. package/dist/agent/managers/llmJudgeHelper.d.ts.map +1 -1
  75. package/dist/agent/managers/llmJudgeHelper.js +7 -24
  76. package/dist/agent/managers/llmJudgeHelper.js.map +1 -1
  77. package/dist/agent/managers/loopMetrics.d.ts +58 -0
  78. package/dist/agent/managers/loopMetrics.d.ts.map +1 -0
  79. package/dist/agent/managers/loopMetrics.js +68 -0
  80. package/dist/agent/managers/loopMetrics.js.map +1 -0
  81. package/dist/agent/managers/memoryAdvisor.d.ts +27 -120
  82. package/dist/agent/managers/memoryAdvisor.d.ts.map +1 -1
  83. package/dist/agent/managers/memoryAdvisor.js +85 -207
  84. package/dist/agent/managers/memoryAdvisor.js.map +1 -1
  85. package/dist/agent/managers/memoryGovernance.d.ts +10 -42
  86. package/dist/agent/managers/memoryGovernance.d.ts.map +1 -1
  87. package/dist/agent/managers/memoryGovernance.js +19 -36
  88. package/dist/agent/managers/memoryGovernance.js.map +1 -1
  89. package/dist/agent/managers/memoryInspector.d.ts +59 -268
  90. package/dist/agent/managers/memoryInspector.d.ts.map +1 -1
  91. package/dist/agent/managers/memoryInspector.js +91 -442
  92. package/dist/agent/managers/memoryInspector.js.map +1 -1
  93. package/dist/agent/managers/roundSummaryGenerator.d.ts +56 -0
  94. package/dist/agent/managers/roundSummaryGenerator.d.ts.map +1 -0
  95. package/dist/agent/managers/roundSummaryGenerator.js +201 -0
  96. package/dist/agent/managers/roundSummaryGenerator.js.map +1 -0
  97. package/dist/agent/managers/sessionArchiver.d.ts +19 -68
  98. package/dist/agent/managers/sessionArchiver.d.ts.map +1 -1
  99. package/dist/agent/managers/sessionArchiver.js +76 -147
  100. package/dist/agent/managers/sessionArchiver.js.map +1 -1
  101. package/dist/agent/managers/sessionManager.d.ts +286 -57
  102. package/dist/agent/managers/sessionManager.d.ts.map +1 -1
  103. package/dist/agent/managers/sessionManager.js +846 -85
  104. package/dist/agent/managers/sessionManager.js.map +1 -1
  105. package/dist/agent/managers/sessionNamer.d.ts +35 -0
  106. package/dist/agent/managers/sessionNamer.d.ts.map +1 -0
  107. package/dist/agent/managers/sessionNamer.js +104 -0
  108. package/dist/agent/managers/sessionNamer.js.map +1 -0
  109. package/dist/agent/managers/streamAccumulator.d.ts +8 -33
  110. package/dist/agent/managers/streamAccumulator.d.ts.map +1 -1
  111. package/dist/agent/managers/streamAccumulator.js +4 -29
  112. package/dist/agent/managers/streamAccumulator.js.map +1 -1
  113. package/dist/agent/managers/textPolishManager.d.ts +8 -44
  114. package/dist/agent/managers/textPolishManager.d.ts.map +1 -1
  115. package/dist/agent/managers/textPolishManager.js +9 -41
  116. package/dist/agent/managers/textPolishManager.js.map +1 -1
  117. package/dist/agent/managers/toolCallHelpers.d.ts +105 -0
  118. package/dist/agent/managers/toolCallHelpers.d.ts.map +1 -0
  119. package/dist/agent/managers/toolCallHelpers.js +161 -0
  120. package/dist/agent/managers/toolCallHelpers.js.map +1 -0
  121. package/dist/agent/managers/workProjection.d.ts +55 -100
  122. package/dist/agent/managers/workProjection.d.ts.map +1 -1
  123. package/dist/agent/managers/workProjection.js +164 -268
  124. package/dist/agent/managers/workProjection.js.map +1 -1
  125. package/dist/agent/messageHistory.d.ts +134 -84
  126. package/dist/agent/messageHistory.d.ts.map +1 -1
  127. package/dist/agent/messageHistory.js +419 -133
  128. package/dist/agent/messageHistory.js.map +1 -1
  129. package/dist/agent/needsPlanning.d.ts +28 -0
  130. package/dist/agent/needsPlanning.d.ts.map +1 -0
  131. package/dist/agent/needsPlanning.js +68 -0
  132. package/dist/agent/needsPlanning.js.map +1 -0
  133. package/dist/agent/seed/index.d.ts +11 -0
  134. package/dist/agent/seed/index.d.ts.map +1 -0
  135. package/dist/agent/seed/index.js +10 -0
  136. package/dist/agent/seed/index.js.map +1 -0
  137. package/dist/agent/seed/orchestrator.d.ts +83 -0
  138. package/dist/agent/seed/orchestrator.d.ts.map +1 -0
  139. package/dist/agent/seed/orchestrator.js +260 -0
  140. package/dist/agent/seed/orchestrator.js.map +1 -0
  141. package/dist/agent/seed/prepare.d.ts +49 -0
  142. package/dist/agent/seed/prepare.d.ts.map +1 -0
  143. package/dist/agent/seed/prepare.js +107 -0
  144. package/dist/agent/seed/prepare.js.map +1 -0
  145. package/dist/agent/seed/types.d.ts +115 -0
  146. package/dist/agent/seed/types.d.ts.map +1 -0
  147. package/dist/agent/seed/types.js +15 -0
  148. package/dist/agent/seed/types.js.map +1 -0
  149. package/dist/agent/sessionStateMachine.d.ts +78 -0
  150. package/dist/agent/sessionStateMachine.d.ts.map +1 -0
  151. package/dist/agent/sessionStateMachine.js +182 -0
  152. package/dist/agent/sessionStateMachine.js.map +1 -0
  153. package/dist/agent/taskTableRenderer.d.ts +51 -0
  154. package/dist/agent/taskTableRenderer.d.ts.map +1 -0
  155. package/dist/agent/taskTableRenderer.js +115 -0
  156. package/dist/agent/taskTableRenderer.js.map +1 -0
  157. package/dist/agent/toolExecutor.d.ts +236 -10
  158. package/dist/agent/toolExecutor.d.ts.map +1 -1
  159. package/dist/agent/toolExecutor.js +932 -21
  160. package/dist/agent/toolExecutor.js.map +1 -1
  161. package/dist/agent/toolLedger.d.ts +120 -0
  162. package/dist/agent/toolLedger.d.ts.map +1 -0
  163. package/dist/agent/toolLedger.js +149 -0
  164. package/dist/agent/toolLedger.js.map +1 -0
  165. package/dist/agent/toolResultCache.d.ts +134 -0
  166. package/dist/agent/toolResultCache.d.ts.map +1 -0
  167. package/dist/agent/toolResultCache.js +243 -0
  168. package/dist/agent/toolResultCache.js.map +1 -0
  169. package/dist/agent/toolResultOffload.d.ts +59 -0
  170. package/dist/agent/toolResultOffload.d.ts.map +1 -0
  171. package/dist/agent/toolResultOffload.js +70 -0
  172. package/dist/agent/toolResultOffload.js.map +1 -0
  173. package/dist/agent/toolRunner.d.ts +59 -0
  174. package/dist/agent/toolRunner.d.ts.map +1 -0
  175. package/dist/agent/toolRunner.js +147 -0
  176. package/dist/agent/toolRunner.js.map +1 -0
  177. package/dist/agent/tracer.d.ts +99 -107
  178. package/dist/agent/tracer.d.ts.map +1 -1
  179. package/dist/agent/tracer.js +24 -69
  180. package/dist/agent/tracer.js.map +1 -1
  181. package/dist/agent/types.d.ts +510 -169
  182. package/dist/agent/types.d.ts.map +1 -1
  183. package/dist/agent/types.js +2 -51
  184. package/dist/agent/types.js.map +1 -1
  185. package/dist/code-exec/codeExecutionProvider.d.ts +16 -0
  186. package/dist/code-exec/codeExecutionProvider.d.ts.map +1 -0
  187. package/dist/code-exec/codeExecutionProvider.js +57 -0
  188. package/dist/code-exec/codeExecutionProvider.js.map +1 -0
  189. package/dist/code-exec/types.d.ts +37 -0
  190. package/dist/code-exec/types.d.ts.map +1 -0
  191. package/dist/code-exec/types.js +12 -0
  192. package/dist/code-exec/types.js.map +1 -0
  193. package/dist/config/expandEnvVars.d.ts +22 -0
  194. package/dist/config/expandEnvVars.d.ts.map +1 -0
  195. package/dist/config/expandEnvVars.js +38 -0
  196. package/dist/config/expandEnvVars.js.map +1 -0
  197. package/dist/config/loader.d.ts +27 -98
  198. package/dist/config/loader.d.ts.map +1 -1
  199. package/dist/config/loader.js +110 -223
  200. package/dist/config/loader.js.map +1 -1
  201. package/dist/index.d.ts +67 -77
  202. package/dist/index.d.ts.map +1 -1
  203. package/dist/index.js +90 -69
  204. package/dist/index.js.map +1 -1
  205. package/dist/llm/abortSignal.d.ts +2 -3
  206. package/dist/llm/abortSignal.d.ts.map +1 -1
  207. package/dist/llm/abortSignal.js +2 -3
  208. package/dist/llm/abortSignal.js.map +1 -1
  209. package/dist/llm/factory.d.ts +22 -32
  210. package/dist/llm/factory.d.ts.map +1 -1
  211. package/dist/llm/factory.js +29 -46
  212. package/dist/llm/factory.js.map +1 -1
  213. package/dist/llm/openaiCompatible.d.ts +25 -40
  214. package/dist/llm/openaiCompatible.d.ts.map +1 -1
  215. package/dist/llm/openaiCompatible.js +179 -120
  216. package/dist/llm/openaiCompatible.js.map +1 -1
  217. package/dist/llm/provider.d.ts +29 -42
  218. package/dist/llm/provider.d.ts.map +1 -1
  219. package/dist/llm/provider.js +11 -10
  220. package/dist/llm/provider.js.map +1 -1
  221. package/dist/llm/types.d.ts +54 -11
  222. package/dist/llm/types.d.ts.map +1 -1
  223. package/dist/llm/types.js +0 -5
  224. package/dist/llm/types.js.map +1 -1
  225. package/dist/logging/logger.d.ts +8 -31
  226. package/dist/logging/logger.d.ts.map +1 -1
  227. package/dist/logging/logger.js +28 -215
  228. package/dist/logging/logger.js.map +1 -1
  229. package/dist/logging/loggerInterface.d.ts +9 -8
  230. package/dist/logging/loggerInterface.d.ts.map +1 -1
  231. package/dist/memory/gcService.d.ts +164 -0
  232. package/dist/memory/gcService.d.ts.map +1 -0
  233. package/dist/memory/gcService.js +215 -0
  234. package/dist/memory/gcService.js.map +1 -0
  235. package/dist/memory/governance.d.ts +11 -44
  236. package/dist/memory/governance.d.ts.map +1 -1
  237. package/dist/memory/governance.js +11 -64
  238. package/dist/memory/governance.js.map +1 -1
  239. package/dist/memory/inMemoryRoundStore.d.ts +124 -0
  240. package/dist/memory/inMemoryRoundStore.d.ts.map +1 -0
  241. package/dist/memory/inMemoryRoundStore.js +216 -0
  242. package/dist/memory/inMemoryRoundStore.js.map +1 -0
  243. package/dist/memory/inMemorySessionStore.d.ts +92 -0
  244. package/dist/memory/inMemorySessionStore.d.ts.map +1 -0
  245. package/dist/memory/inMemorySessionStore.js +219 -0
  246. package/dist/memory/inMemorySessionStore.js.map +1 -0
  247. package/dist/memory/inMemorySessionViewLoader.d.ts +89 -0
  248. package/dist/memory/inMemorySessionViewLoader.d.ts.map +1 -0
  249. package/dist/memory/inMemorySessionViewLoader.js +183 -0
  250. package/dist/memory/inMemorySessionViewLoader.js.map +1 -0
  251. package/dist/memory/inMemoryStorage.d.ts +25 -175
  252. package/dist/memory/inMemoryStorage.d.ts.map +1 -1
  253. package/dist/memory/inMemoryStorage.js +32 -221
  254. package/dist/memory/inMemoryStorage.js.map +1 -1
  255. package/dist/memory/keywordsTouch.d.ts +20 -0
  256. package/dist/memory/keywordsTouch.d.ts.map +1 -0
  257. package/dist/memory/keywordsTouch.js +25 -0
  258. package/dist/memory/keywordsTouch.js.map +1 -0
  259. package/dist/memory/lockManager.d.ts +2 -2
  260. package/dist/memory/lockManager.d.ts.map +1 -1
  261. package/dist/memory/lockManager.js +6 -8
  262. package/dist/memory/lockManager.js.map +1 -1
  263. package/dist/memory/projectManager.d.ts +30 -129
  264. package/dist/memory/projectManager.d.ts.map +1 -1
  265. package/dist/memory/projectManager.js +39 -189
  266. package/dist/memory/projectManager.js.map +1 -1
  267. package/dist/memory/projectRegistry.d.ts +14 -62
  268. package/dist/memory/projectRegistry.d.ts.map +1 -1
  269. package/dist/memory/projectRegistry.js +27 -111
  270. package/dist/memory/projectRegistry.js.map +1 -1
  271. package/dist/memory/roundStore.d.ts +629 -0
  272. package/dist/memory/roundStore.d.ts.map +1 -0
  273. package/dist/memory/roundStore.js +116 -0
  274. package/dist/memory/roundStore.js.map +1 -0
  275. package/dist/memory/sessionStore.d.ts +70 -61
  276. package/dist/memory/sessionStore.d.ts.map +1 -1
  277. package/dist/memory/sessionStore.js +23 -1
  278. package/dist/memory/sessionStore.js.map +1 -1
  279. package/dist/memory/sessionViewLoader.d.ts +141 -0
  280. package/dist/memory/sessionViewLoader.d.ts.map +1 -0
  281. package/dist/memory/sessionViewLoader.js +65 -0
  282. package/dist/memory/sessionViewLoader.js.map +1 -0
  283. package/dist/memory/sourceValidation.d.ts +10 -12
  284. package/dist/memory/sourceValidation.d.ts.map +1 -1
  285. package/dist/memory/sourceValidation.js +16 -32
  286. package/dist/memory/sourceValidation.js.map +1 -1
  287. package/dist/memory/storageInterface.d.ts +44 -150
  288. package/dist/memory/storageInterface.d.ts.map +1 -1
  289. package/dist/memory/types.d.ts +65 -164
  290. package/dist/memory/types.d.ts.map +1 -1
  291. package/dist/memory/types.js +81 -83
  292. package/dist/memory/types.js.map +1 -1
  293. package/dist/project-search/projectSearchProvider.d.ts +29 -0
  294. package/dist/project-search/projectSearchProvider.d.ts.map +1 -0
  295. package/dist/project-search/projectSearchProvider.js +57 -0
  296. package/dist/project-search/projectSearchProvider.js.map +1 -0
  297. package/dist/project-search/terms.d.ts +14 -0
  298. package/dist/project-search/terms.d.ts.map +1 -0
  299. package/dist/project-search/terms.js +68 -0
  300. package/dist/project-search/terms.js.map +1 -0
  301. package/dist/project-search/types.d.ts +139 -0
  302. package/dist/project-search/types.d.ts.map +1 -0
  303. package/dist/project-search/types.js +8 -0
  304. package/dist/project-search/types.js.map +1 -0
  305. package/dist/role-pack/capabilityMap.d.ts +28 -0
  306. package/dist/role-pack/capabilityMap.d.ts.map +1 -0
  307. package/dist/role-pack/capabilityMap.js +56 -0
  308. package/dist/role-pack/capabilityMap.js.map +1 -0
  309. package/dist/role-pack/constants.d.ts +21 -0
  310. package/dist/role-pack/constants.d.ts.map +1 -0
  311. package/dist/role-pack/constants.js +21 -0
  312. package/dist/role-pack/constants.js.map +1 -0
  313. package/dist/role-pack/rolePackManager.d.ts +269 -0
  314. package/dist/role-pack/rolePackManager.d.ts.map +1 -0
  315. package/dist/role-pack/rolePackManager.js +1082 -0
  316. package/dist/role-pack/rolePackManager.js.map +1 -0
  317. package/dist/role-pack/strategyKeys.d.ts +100 -0
  318. package/dist/role-pack/strategyKeys.d.ts.map +1 -0
  319. package/dist/role-pack/strategyKeys.js +184 -0
  320. package/dist/role-pack/strategyKeys.js.map +1 -0
  321. package/dist/role-pack/strategyResolver.d.ts +109 -0
  322. package/dist/role-pack/strategyResolver.d.ts.map +1 -0
  323. package/dist/role-pack/strategyResolver.js +304 -0
  324. package/dist/role-pack/strategyResolver.js.map +1 -0
  325. package/dist/role-pack/types.d.ts +237 -0
  326. package/dist/role-pack/types.d.ts.map +1 -0
  327. package/dist/role-pack/types.js +8 -0
  328. package/dist/role-pack/types.js.map +1 -0
  329. package/dist/role-pack/validator.d.ts +38 -0
  330. package/dist/role-pack/validator.d.ts.map +1 -0
  331. package/dist/role-pack/validator.js +436 -0
  332. package/dist/role-pack/validator.js.map +1 -0
  333. package/dist/security/pathGuard.d.ts +69 -72
  334. package/dist/security/pathGuard.d.ts.map +1 -1
  335. package/dist/security/pathGuard.js +151 -131
  336. package/dist/security/pathGuard.js.map +1 -1
  337. package/dist/skill/skillLayer3.d.ts +91 -0
  338. package/dist/skill/skillLayer3.d.ts.map +1 -0
  339. package/dist/skill/skillLayer3.js +104 -0
  340. package/dist/skill/skillLayer3.js.map +1 -0
  341. package/dist/skill/skillManager.d.ts +136 -19
  342. package/dist/skill/skillManager.d.ts.map +1 -1
  343. package/dist/skill/skillManager.js +312 -61
  344. package/dist/skill/skillManager.js.map +1 -1
  345. package/dist/skill/skillScriptRunner.d.ts +97 -0
  346. package/dist/skill/skillScriptRunner.d.ts.map +1 -0
  347. package/dist/skill/skillScriptRunner.js +271 -0
  348. package/dist/skill/skillScriptRunner.js.map +1 -0
  349. package/dist/skill/types.d.ts +73 -16
  350. package/dist/skill/types.d.ts.map +1 -1
  351. package/dist/skill/types.js +5 -1
  352. package/dist/skill/types.js.map +1 -1
  353. package/dist/utils/array.d.ts +5 -6
  354. package/dist/utils/array.d.ts.map +1 -1
  355. package/dist/utils/array.js +6 -6
  356. package/dist/utils/array.js.map +1 -1
  357. package/dist/utils/atomicWrite.d.ts +8 -0
  358. package/dist/utils/atomicWrite.d.ts.map +1 -0
  359. package/dist/utils/atomicWrite.js +31 -0
  360. package/dist/utils/atomicWrite.js.map +1 -0
  361. package/dist/utils/backgroundTask.d.ts +38 -0
  362. package/dist/utils/backgroundTask.d.ts.map +1 -0
  363. package/dist/utils/backgroundTask.js +117 -0
  364. package/dist/utils/backgroundTask.js.map +1 -0
  365. package/dist/utils/configResourceManager.d.ts +40 -72
  366. package/dist/utils/configResourceManager.d.ts.map +1 -1
  367. package/dist/utils/configResourceManager.js +78 -76
  368. package/dist/utils/configResourceManager.js.map +1 -1
  369. package/dist/utils/errors.d.ts +44 -69
  370. package/dist/utils/errors.d.ts.map +1 -1
  371. package/dist/utils/errors.js +54 -71
  372. package/dist/utils/errors.js.map +1 -1
  373. package/dist/utils/eventEmitter.d.ts +104 -103
  374. package/dist/utils/eventEmitter.d.ts.map +1 -1
  375. package/dist/utils/eventEmitter.js +37 -45
  376. package/dist/utils/eventEmitter.js.map +1 -1
  377. package/dist/utils/fileSafe.d.ts +20 -0
  378. package/dist/utils/fileSafe.d.ts.map +1 -0
  379. package/dist/utils/fileSafe.js +56 -0
  380. package/dist/utils/fileSafe.js.map +1 -0
  381. package/dist/utils/frontmatter.d.ts +2 -3
  382. package/dist/utils/frontmatter.d.ts.map +1 -1
  383. package/dist/utils/frontmatter.js +2 -3
  384. package/dist/utils/frontmatter.js.map +1 -1
  385. package/dist/utils/hash.d.ts +12 -0
  386. package/dist/utils/hash.d.ts.map +1 -0
  387. package/dist/utils/hash.js +27 -0
  388. package/dist/utils/hash.js.map +1 -0
  389. package/dist/utils/http.d.ts +17 -0
  390. package/dist/utils/http.d.ts.map +1 -0
  391. package/dist/utils/http.js +29 -0
  392. package/dist/utils/http.js.map +1 -0
  393. package/dist/utils/json.d.ts +1 -1
  394. package/dist/utils/json.js +1 -1
  395. package/dist/utils/math.d.ts +25 -3
  396. package/dist/utils/math.d.ts.map +1 -1
  397. package/dist/utils/math.js +32 -16
  398. package/dist/utils/math.js.map +1 -1
  399. package/dist/utils/objects.d.ts +2 -3
  400. package/dist/utils/objects.d.ts.map +1 -1
  401. package/dist/utils/objects.js +2 -3
  402. package/dist/utils/objects.js.map +1 -1
  403. package/dist/utils/recallDefaults.d.ts +16 -0
  404. package/dist/utils/recallDefaults.d.ts.map +1 -0
  405. package/dist/utils/recallDefaults.js +16 -0
  406. package/dist/utils/recallDefaults.js.map +1 -0
  407. package/dist/utils/safeTimer.d.ts +8 -36
  408. package/dist/utils/safeTimer.d.ts.map +1 -1
  409. package/dist/utils/safeTimer.js +9 -37
  410. package/dist/utils/safeTimer.js.map +1 -1
  411. package/dist/utils/scanner.d.ts +97 -17
  412. package/dist/utils/scanner.d.ts.map +1 -1
  413. package/dist/utils/scanner.js +269 -47
  414. package/dist/utils/scanner.js.map +1 -1
  415. package/dist/utils/segmenter.d.ts +20 -19
  416. package/dist/utils/segmenter.d.ts.map +1 -1
  417. package/dist/utils/segmenter.js +230 -97
  418. package/dist/utils/segmenter.js.map +1 -1
  419. package/dist/utils/strings.d.ts +15 -32
  420. package/dist/utils/strings.d.ts.map +1 -1
  421. package/dist/utils/strings.js +25 -44
  422. package/dist/utils/strings.js.map +1 -1
  423. package/dist/utils/time.d.ts +37 -0
  424. package/dist/utils/time.d.ts.map +1 -1
  425. package/dist/utils/time.js +56 -0
  426. package/dist/utils/time.js.map +1 -1
  427. package/dist/utils/toError.d.ts +13 -1
  428. package/dist/utils/toError.d.ts.map +1 -1
  429. package/dist/utils/toError.js +18 -1
  430. package/dist/utils/toError.js.map +1 -1
  431. package/dist/web-fetch/fetchWebFetchProvider.d.ts +14 -0
  432. package/dist/web-fetch/fetchWebFetchProvider.d.ts.map +1 -0
  433. package/dist/web-fetch/fetchWebFetchProvider.js +69 -0
  434. package/dist/web-fetch/fetchWebFetchProvider.js.map +1 -0
  435. package/dist/web-fetch/types.d.ts +30 -0
  436. package/dist/web-fetch/types.d.ts.map +1 -0
  437. package/dist/web-fetch/types.js +7 -0
  438. package/dist/web-fetch/types.js.map +1 -0
  439. package/dist/web-fetch/webFetchProvider.d.ts +10 -0
  440. package/dist/web-fetch/webFetchProvider.d.ts.map +1 -0
  441. package/dist/web-fetch/webFetchProvider.js +28 -0
  442. package/dist/web-fetch/webFetchProvider.js.map +1 -0
  443. package/dist/web-search/fetchWebSearchProvider.d.ts +27 -0
  444. package/dist/web-search/fetchWebSearchProvider.d.ts.map +1 -0
  445. package/dist/web-search/fetchWebSearchProvider.js +199 -0
  446. package/dist/web-search/fetchWebSearchProvider.js.map +1 -0
  447. package/dist/web-search/types.d.ts +46 -0
  448. package/dist/web-search/types.d.ts.map +1 -0
  449. package/dist/web-search/types.js +2 -0
  450. package/dist/{persona → web-search}/types.js.map +1 -1
  451. package/dist/web-search/webSearchProvider.d.ts +10 -0
  452. package/dist/web-search/webSearchProvider.d.ts.map +1 -0
  453. package/dist/web-search/webSearchProvider.js +30 -0
  454. package/dist/web-search/webSearchProvider.js.map +1 -0
  455. package/docs/architecture/role-pack-authoring-guide.md +243 -0
  456. package/docs/architecture/role-pack-spec.md +767 -0
  457. package/docs/memora-api-reference.md +416 -476
  458. package/docs/memora-/346/216/245/345/205/245/346/214/207/345/215/227.md +841 -806
  459. package/docs/role-pack-/345/274/200/346/224/276/351/224/256/346/214/207/345/215/227.md +148 -0
  460. package/package.json +105 -100
  461. package/role-packs/README.md +41 -0
  462. package/role-packs/memora/345/212/251/346/211/213/manifest.json +12 -0
  463. package/role-packs/memora/345/212/251/346/211/213/persona.md +12 -0
  464. package/role-packs/memora/345/212/251/346/211/213/rules.md +4 -0
  465. package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/manifest.json +44 -0
  466. package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/persona.md +46 -0
  467. package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/rules.md +15 -0
  468. package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/character-sheet.md +34 -0
  469. package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/core-extractor.md +37 -0
  470. package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/craft-review.md +69 -0
  471. package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/dialogue-craft.md +45 -0
  472. package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/emotion-wave.md +46 -0
  473. package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/empathy-craft.md +79 -0
  474. package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/foreshadow.md +29 -0
  475. package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/hotspot-mapping.md +121 -0
  476. package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/idea-lever.md +42 -0
  477. package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/logline-craft.md +47 -0
  478. package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/longform-guard.md +64 -0
  479. package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/need-finder.md +40 -0
  480. package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/outline-expand.md +46 -0
  481. package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/pacing-hook.md +34 -0
  482. package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/polish-method.md +113 -0
  483. package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/pov-discipline.md +79 -0
  484. package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/project-init/SKILL.md +112 -0
  485. 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 +441 -0
  486. package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/relationship-web.md +47 -0
  487. package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/scene-craft.md +46 -0
  488. package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/story-bible.md +60 -0
  489. package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/story-structure.md +36 -0
  490. package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/style-weaver.md +109 -0
  491. package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/three-layer-check.md +27 -0
  492. package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/world-builder.md +41 -0
  493. 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 +48 -0
  494. package/role-packs//347/231/275/350/257/235/346/226/271/346/241/210/350/256/276/350/256/241/345/270/210/persona.md +73 -0
  495. package/role-packs//347/231/275/350/257/235/346/226/271/346/241/210/350/256/276/350/256/241/345/270/210/rules.md +19 -0
  496. package/role-packs//347/231/275/350/257/235/346/226/271/346/241/210/350/256/276/350/256/241/345/270/210/skills/api-doc-writer.md +40 -0
  497. package/role-packs//347/231/275/350/257/235/346/226/271/346/241/210/350/256/276/350/256/241/345/270/210/skills/doc-planner.md +42 -0
  498. package/role-packs//347/231/275/350/257/235/346/226/271/346/241/210/350/256/276/350/256/241/345/270/210/skills/nutrient-search.md +28 -0
  499. package/role-packs//347/231/275/350/257/235/346/226/271/346/241/210/350/256/276/350/256/241/345/270/210/skills/seed-finder.md +28 -0
  500. package/role-packs//347/231/275/350/257/235/346/226/271/346/241/210/350/256/276/350/256/241/345/270/210/skills/ssot-audit.md +34 -0
  501. package/role-packs//347/231/275/350/257/235/346/226/271/346/241/210/350/256/276/350/256/241/345/270/210/skills/style-guide.md +40 -0
  502. package/dist/agent/guardrail.d.ts +0 -49
  503. package/dist/agent/guardrail.d.ts.map +0 -1
  504. package/dist/agent/guardrail.js +0 -59
  505. package/dist/agent/guardrail.js.map +0 -1
  506. package/dist/agent/managers/autoConfigRefiner.d.ts +0 -39
  507. package/dist/agent/managers/autoConfigRefiner.d.ts.map +0 -1
  508. package/dist/agent/managers/autoConfigRefiner.js +0 -146
  509. package/dist/agent/managers/autoConfigRefiner.js.map +0 -1
  510. package/dist/agent/managers/configManager.d.ts +0 -209
  511. package/dist/agent/managers/configManager.d.ts.map +0 -1
  512. package/dist/agent/managers/configManager.js +0 -331
  513. package/dist/agent/managers/configManager.js.map +0 -1
  514. package/dist/agent/managers/insightExtractor.d.ts +0 -139
  515. package/dist/agent/managers/insightExtractor.d.ts.map +0 -1
  516. package/dist/agent/managers/insightExtractor.js +0 -401
  517. package/dist/agent/managers/insightExtractor.js.map +0 -1
  518. package/dist/agent/managers/memoryDecayScheduler.d.ts +0 -239
  519. package/dist/agent/managers/memoryDecayScheduler.d.ts.map +0 -1
  520. package/dist/agent/managers/memoryDecayScheduler.js +0 -413
  521. package/dist/agent/managers/memoryDecayScheduler.js.map +0 -1
  522. package/dist/agent/managers/relationBuilder.d.ts +0 -131
  523. package/dist/agent/managers/relationBuilder.d.ts.map +0 -1
  524. package/dist/agent/managers/relationBuilder.js +0 -192
  525. package/dist/agent/managers/relationBuilder.js.map +0 -1
  526. package/dist/agent/personaMatcher.d.ts +0 -29
  527. package/dist/agent/personaMatcher.d.ts.map +0 -1
  528. package/dist/agent/personaMatcher.js +0 -60
  529. package/dist/agent/personaMatcher.js.map +0 -1
  530. package/dist/agent/userFactExtractor.d.ts +0 -25
  531. package/dist/agent/userFactExtractor.d.ts.map +0 -1
  532. package/dist/agent/userFactExtractor.js +0 -88
  533. package/dist/agent/userFactExtractor.js.map +0 -1
  534. package/dist/eval/evalRunner.d.ts +0 -94
  535. package/dist/eval/evalRunner.d.ts.map +0 -1
  536. package/dist/eval/evalRunner.js +0 -141
  537. package/dist/eval/evalRunner.js.map +0 -1
  538. package/dist/eval/evalTypes.d.ts +0 -148
  539. package/dist/eval/evalTypes.d.ts.map +0 -1
  540. package/dist/eval/evalTypes.js +0 -118
  541. package/dist/eval/evalTypes.js.map +0 -1
  542. package/dist/eval/scenarios.d.ts +0 -33
  543. package/dist/eval/scenarios.d.ts.map +0 -1
  544. package/dist/eval/scenarios.js +0 -109
  545. package/dist/eval/scenarios.js.map +0 -1
  546. package/dist/llm/embedding.d.ts +0 -79
  547. package/dist/llm/embedding.d.ts.map +0 -1
  548. package/dist/llm/embedding.js +0 -184
  549. package/dist/llm/embedding.js.map +0 -1
  550. package/dist/memory/hybridMerge.d.ts +0 -50
  551. package/dist/memory/hybridMerge.d.ts.map +0 -1
  552. package/dist/memory/hybridMerge.js +0 -51
  553. package/dist/memory/hybridMerge.js.map +0 -1
  554. package/dist/memory/inMemoryRelationStore.d.ts +0 -58
  555. package/dist/memory/inMemoryRelationStore.d.ts.map +0 -1
  556. package/dist/memory/inMemoryRelationStore.js +0 -80
  557. package/dist/memory/inMemoryRelationStore.js.map +0 -1
  558. package/dist/memory/loader.d.ts +0 -51
  559. package/dist/memory/loader.d.ts.map +0 -1
  560. package/dist/memory/loader.js +0 -100
  561. package/dist/memory/loader.js.map +0 -1
  562. package/dist/memory/recall.d.ts +0 -82
  563. package/dist/memory/recall.d.ts.map +0 -1
  564. package/dist/memory/recall.js +0 -157
  565. package/dist/memory/recall.js.map +0 -1
  566. package/dist/memory/relationStore.d.ts +0 -95
  567. package/dist/memory/relationStore.d.ts.map +0 -1
  568. package/dist/memory/relationStore.js +0 -2
  569. package/dist/memory/relationStore.js.map +0 -1
  570. package/dist/memory/store.d.ts +0 -71
  571. package/dist/memory/store.d.ts.map +0 -1
  572. package/dist/memory/store.js +0 -199
  573. package/dist/memory/store.js.map +0 -1
  574. package/dist/memory/userProfile.d.ts +0 -180
  575. package/dist/memory/userProfile.d.ts.map +0 -1
  576. package/dist/memory/userProfile.js +0 -381
  577. package/dist/memory/userProfile.js.map +0 -1
  578. package/dist/memory/vectorStore.d.ts +0 -179
  579. package/dist/memory/vectorStore.d.ts.map +0 -1
  580. package/dist/memory/vectorStore.js +0 -284
  581. package/dist/memory/vectorStore.js.map +0 -1
  582. package/dist/persona/personaManager.d.ts +0 -109
  583. package/dist/persona/personaManager.d.ts.map +0 -1
  584. package/dist/persona/personaManager.js +0 -315
  585. package/dist/persona/personaManager.js.map +0 -1
  586. package/dist/persona/types.d.ts +0 -32
  587. package/dist/persona/types.d.ts.map +0 -1
  588. package/dist/persona/types.js +0 -5
@@ -0,0 +1,164 @@
1
+ /**
2
+ * 垃圾回收服务 —— 清理孤立的问答闭环和关联摘要
3
+ *
4
+ * 设计理念:
5
+ * - 基于引用计数的自动清理机制
6
+ * - 只清理 refCount === 0 且超龄的 Round(不分状态:pending/error 崩溃残留同样可回收)
7
+ * - 同时清理关联的记忆摘要(round-summary)
8
+ * - 支持定时执行和手动触发
9
+ *
10
+ * 触发时机:
11
+ * 1. 会话删除时,减少引用计数后检查
12
+ * 2. 定时任务(如每天一次)自动执行(启动时立即执行一次清存量孤儿)
13
+ * 3. 宿主手动触发(run() 公开入口)
14
+ */
15
+ import type { IRoundStore } from '../memory/roundStore.js';
16
+ import type { IMemoryStorage } from '../memory/storageInterface.js';
17
+ /**
18
+ * GC 配置选项
19
+ */
20
+ export interface GCConfig {
21
+ /**
22
+ * 最小存活时间(毫秒)
23
+ *
24
+ * 避免清理正在使用的 Round:
25
+ * - Round 创建后短时间内可能还在被引用
26
+ * - 默认 5 分钟
27
+ */
28
+ minAgeMs: number;
29
+ /**
30
+ * 批处理大小
31
+ *
32
+ * 避免单次清理过多导致性能问题
33
+ * - 默认 100
34
+ */
35
+ batchSize: number;
36
+ /**
37
+ * 是否清理关联的记忆摘要
38
+ *
39
+ * - true:删除 Round 时同时删除 round-summary 记忆
40
+ * - false:只删除 Round,保留摘要(可能导致孤立摘要)
41
+ * - 默认 true(推荐)
42
+ */
43
+ cleanUpMemory: boolean;
44
+ /**
45
+ * 是否记录详细日志
46
+ *
47
+ * - 默认 false(生产环境避免日志爆炸)
48
+ */
49
+ verbose: boolean;
50
+ /**
51
+ * 忙碌检查回调(可选)
52
+ *
53
+ * 定时 GC 在对话进行中(chatLock busy / 长任务执行中)延迟执行,
54
+ * 避免进行中 pending Round 被误清(minAgeMs 判龄对长任务不可靠)。
55
+ * 返回 true = 当前忙,跳过本次 GC。
56
+ */
57
+ shouldSkip?: () => boolean;
58
+ }
59
+ /**
60
+ * GC 结果统计
61
+ */
62
+ export interface GCResult {
63
+ /** 扫描的 Round 总数 */
64
+ scanned: number;
65
+ /** 发现的孤立 Round 数 */
66
+ orphaned: number;
67
+ /** 成功删除的 Round 数 */
68
+ deleted: number;
69
+ /** 因引用计数导致删除失败的数量 */
70
+ failedDueToRefCount: number;
71
+ /** 清理的记忆摘要数量 */
72
+ memoryCleaned: number;
73
+ /** 实际执行的时间(毫秒) */
74
+ elapsedMs: number;
75
+ }
76
+ /**
77
+ * 垃圾回收服务
78
+ *
79
+ * 使用方式:
80
+ * ```typescript
81
+ * const gc = new GCService(roundStore, memoryStorage);
82
+ *
83
+ * // 手动触发
84
+ * const result = gc.run();
85
+ *
86
+ * // 配置定时任务
87
+ * gc.startPeriodic(60 * 60 * 1000); // 每小时执行一次
88
+ * gc.stopPeriodic();
89
+ * ```
90
+ */
91
+ export declare class GCService {
92
+ private readonly roundStore;
93
+ private readonly memoryStorage;
94
+ private readonly config;
95
+ private timer;
96
+ constructor(roundStore: IRoundStore, memoryStorage: IMemoryStorage, config?: Partial<GCConfig>);
97
+ /**
98
+ * 执行垃圾回收
99
+ *
100
+ * 流程:
101
+ * 1. 忙碌检查(可选 shouldSkip):对话进行中(长任务执行)跳过本次,
102
+ * minAgeMs 判龄对多轮长任务不可靠,防止进行中 pending Round 被误清
103
+ * 2. 列出所有孤立的 Round(refCount === 0 且超龄,不分状态)
104
+ * 3. 分批删除孤立 Round
105
+ * 4. 同时清理关联的记忆摘要(purge 硬删除,不进回收站)
106
+ *
107
+ * @returns GC 结果统计
108
+ */
109
+ run(): GCResult;
110
+ /**
111
+ * 清理 Round 关联的记忆摘要
112
+ *
113
+ * 摘要记忆的**规范 ID** 为 `round-summary:{sessionName}:{roundId}`(由
114
+ * roundSummaryGenerator 构造,含会话段)——Round 侧**不持有反向指针**,
115
+ * 故此处按 `roundId` 顶层字段反查,覆盖全部会话命名空间。
116
+ *
117
+ * 系统治理删除走 purge 物理删除(不进回收站——孤儿摘要是系统清理产物,
118
+ * 非用户主动删除的数据)。
119
+ *
120
+ * @param round - 要清理的 Round
121
+ */
122
+ private cleanUpRoundSummary;
123
+ /**
124
+ * 物理删除摘要(round-summary 随 Round 引用归零联动清理)
125
+ *
126
+ * @param summaryId - 摘要记忆 ID
127
+ */
128
+ private purgeSummary;
129
+ /**
130
+ * 启动定时 GC
131
+ *
132
+ * VSCode 窗口生命周期通常远小于定时周期 → 启动时立即执行一次(run),
133
+ * 先清存量孤儿,再按周期续跑。
134
+ *
135
+ * @param intervalMs - 执行间隔(毫秒)
136
+ */
137
+ startPeriodic(intervalMs: number): void;
138
+ /**
139
+ * 停止定时 GC
140
+ */
141
+ stopPeriodic(): void;
142
+ /**
143
+ * 获取当前配置
144
+ *
145
+ * @returns GC 配置
146
+ */
147
+ getConfig(): Readonly<GCConfig>;
148
+ /**
149
+ * 更新配置
150
+ *
151
+ * @param partial - 部分配置更新
152
+ */
153
+ updateConfig(partial: Partial<GCConfig>): void;
154
+ }
155
+ /**
156
+ * 创建默认 GC 服务的工厂函数
157
+ *
158
+ * @param roundStore - 问答闭环存储
159
+ * @param memoryStorage - 记忆存储
160
+ * @param shouldSkip - 忙碌检查回调(可选:对话进行中跳过本次)
161
+ * @returns GC 服务实例
162
+ */
163
+ export declare function createDefaultGCService(roundStore: IRoundStore, memoryStorage: IMemoryStorage, shouldSkip?: () => boolean): GCService;
164
+ //# sourceMappingURL=gcService.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gcService.d.ts","sourceRoot":"","sources":["../../src/memory/gcService.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAS,MAAM,wBAAwB,CAAC;AACjE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAInE;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB;;;;;;OAMG;IACH,QAAQ,EAAE,MAAM,CAAC;IAEjB;;;;;OAKG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB;;;;;;OAMG;IACH,aAAa,EAAE,OAAO,CAAC;IAEvB;;;;OAIG;IACH,OAAO,EAAE,OAAO,CAAC;IAEjB;;;;;;OAMG;IACH,UAAU,CAAC,EAAE,MAAM,OAAO,CAAC;CAC5B;AAED;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,mBAAmB;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,oBAAoB;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,oBAAoB;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,qBAAqB;IACrB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,gBAAgB;IAChB,aAAa,EAAE,MAAM,CAAC;IACtB,kBAAkB;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;;;;;;;;;;;;;GAcG;AACH,qBAAa,SAAS;IACpB,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAc;IACzC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAiB;IAC/C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAW;IAClC,OAAO,CAAC,KAAK,CAA+C;gBAEhD,UAAU,EAAE,WAAW,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC;IAY9F;;;;;;;;;;;OAWG;IACH,GAAG,IAAI,QAAQ;IAsEf;;;;;;;;;;;OAWG;IACH,OAAO,CAAC,mBAAmB;IAU3B;;;;OAIG;IACH,OAAO,CAAC,YAAY;IAKpB;;;;;;;OAOG;IACH,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAgBvC;;OAEG;IACH,YAAY,IAAI,IAAI;IAQpB;;;;OAIG;IACH,SAAS,IAAI,QAAQ,CAAC,QAAQ,CAAC;IAI/B;;;;OAIG;IACH,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,QAAQ,CAAC,GAAG,IAAI;CAG/C;AAED;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,CACpC,UAAU,EAAE,WAAW,EACvB,aAAa,EAAE,cAAc,EAC7B,UAAU,CAAC,EAAE,MAAM,OAAO,GACzB,SAAS,CAQX"}
@@ -0,0 +1,215 @@
1
+ /**
2
+ * 垃圾回收服务 —— 清理孤立的问答闭环和关联摘要
3
+ *
4
+ * 设计理念:
5
+ * - 基于引用计数的自动清理机制
6
+ * - 只清理 refCount === 0 且超龄的 Round(不分状态:pending/error 崩溃残留同样可回收)
7
+ * - 同时清理关联的记忆摘要(round-summary)
8
+ * - 支持定时执行和手动触发
9
+ *
10
+ * 触发时机:
11
+ * 1. 会话删除时,减少引用计数后检查
12
+ * 2. 定时任务(如每天一次)自动执行(启动时立即执行一次清存量孤儿)
13
+ * 3. 宿主手动触发(run() 公开入口)
14
+ */
15
+ import { logger } from '../logging/logger.js';
16
+ import { SOURCE_LABELS } from '../memory/types.js';
17
+ /**
18
+ * 垃圾回收服务
19
+ *
20
+ * 使用方式:
21
+ * ```typescript
22
+ * const gc = new GCService(roundStore, memoryStorage);
23
+ *
24
+ * // 手动触发
25
+ * const result = gc.run();
26
+ *
27
+ * // 配置定时任务
28
+ * gc.startPeriodic(60 * 60 * 1000); // 每小时执行一次
29
+ * gc.stopPeriodic();
30
+ * ```
31
+ */
32
+ export class GCService {
33
+ roundStore;
34
+ memoryStorage;
35
+ config;
36
+ timer = null;
37
+ constructor(roundStore, memoryStorage, config) {
38
+ this.roundStore = roundStore;
39
+ this.memoryStorage = memoryStorage;
40
+ this.config = {
41
+ minAgeMs: config?.minAgeMs ?? 5 * 60 * 1000, // 5 分钟
42
+ batchSize: config?.batchSize ?? 100,
43
+ cleanUpMemory: config?.cleanUpMemory ?? true,
44
+ verbose: config?.verbose ?? false,
45
+ shouldSkip: config?.shouldSkip,
46
+ };
47
+ }
48
+ /**
49
+ * 执行垃圾回收
50
+ *
51
+ * 流程:
52
+ * 1. 忙碌检查(可选 shouldSkip):对话进行中(长任务执行)跳过本次,
53
+ * minAgeMs 判龄对多轮长任务不可靠,防止进行中 pending Round 被误清
54
+ * 2. 列出所有孤立的 Round(refCount === 0 且超龄,不分状态)
55
+ * 3. 分批删除孤立 Round
56
+ * 4. 同时清理关联的记忆摘要(purge 硬删除,不进回收站)
57
+ *
58
+ * @returns GC 结果统计
59
+ */
60
+ run() {
61
+ const startTime = Date.now();
62
+ const result = {
63
+ scanned: 0,
64
+ orphaned: 0,
65
+ deleted: 0,
66
+ failedDueToRefCount: 0,
67
+ memoryCleaned: 0,
68
+ elapsedMs: 0,
69
+ };
70
+ // 忙碌检查:对话进行中跳过本次(定时/手动触发均生效)
71
+ if (this.config.shouldSkip?.()) {
72
+ logger.debug('GC: 对话进行中(shouldSkip),跳过本次执行');
73
+ result.elapsedMs = Date.now() - startTime;
74
+ return result;
75
+ }
76
+ try {
77
+ // 1. 获取所有孤立的 Round
78
+ // listOrphaned 可能是可选方法,需要检查
79
+ const listOrphanedFn = this.roundStore.listOrphaned;
80
+ const orphanedRounds = listOrphanedFn
81
+ ? listOrphanedFn.call(this.roundStore, this.config.minAgeMs)
82
+ : [];
83
+ result.scanned = this.roundStore.listAll().length;
84
+ result.orphaned = orphanedRounds.length;
85
+ if (this.config.verbose) {
86
+ logger.info({ total: result.scanned, orphaned: result.orphaned }, 'GC: 发现孤立问答闭环');
87
+ }
88
+ if (orphanedRounds.length === 0) {
89
+ result.elapsedMs = Date.now() - startTime;
90
+ return result;
91
+ }
92
+ // 2. 分批删除
93
+ for (let i = 0; i < orphanedRounds.length; i += this.config.batchSize) {
94
+ const batch = orphanedRounds.slice(i, i + this.config.batchSize);
95
+ for (const round of batch) {
96
+ // 删除 Round
97
+ const deleted = this.roundStore.delete(round.id);
98
+ if (deleted) {
99
+ result.deleted++;
100
+ // 同时清理关联的记忆摘要
101
+ if (this.config.cleanUpMemory) {
102
+ this.cleanUpRoundSummary(round);
103
+ result.memoryCleaned++;
104
+ }
105
+ }
106
+ else {
107
+ result.failedDueToRefCount++;
108
+ }
109
+ }
110
+ }
111
+ if (this.config.verbose) {
112
+ logger.info({ result: { ...result } }, 'GC: 完成');
113
+ }
114
+ }
115
+ catch (error) {
116
+ logger.error({ error }, 'GC: 执行失败');
117
+ }
118
+ result.elapsedMs = Date.now() - startTime;
119
+ return result;
120
+ }
121
+ /**
122
+ * 清理 Round 关联的记忆摘要
123
+ *
124
+ * 摘要记忆的**规范 ID** 为 `round-summary:{sessionName}:{roundId}`(由
125
+ * roundSummaryGenerator 构造,含会话段)——Round 侧**不持有反向指针**,
126
+ * 故此处按 `roundId` 顶层字段反查,覆盖全部会话命名空间。
127
+ *
128
+ * 系统治理删除走 purge 物理删除(不进回收站——孤儿摘要是系统清理产物,
129
+ * 非用户主动删除的数据)。
130
+ *
131
+ * @param round - 要清理的 Round
132
+ */
133
+ cleanUpRoundSummary(round) {
134
+ // 按 roundId 顶层字段反查全部会话命名空间的两段式摘要
135
+ const roundSummaries = this.memoryStorage
136
+ .getBySource(SOURCE_LABELS.ROUND_SUMMARY)
137
+ .filter((m) => m.roundId === round.id);
138
+ for (const summary of roundSummaries) {
139
+ this.purgeSummary(summary.id);
140
+ }
141
+ }
142
+ /**
143
+ * 物理删除摘要(round-summary 随 Round 引用归零联动清理)
144
+ *
145
+ * @param summaryId - 摘要记忆 ID
146
+ */
147
+ purgeSummary(summaryId) {
148
+ // purge = 物理删除(不可恢复),孤儿摘要是系统治理决定,不进用户回收站
149
+ this.memoryStorage.purge(summaryId);
150
+ }
151
+ /**
152
+ * 启动定时 GC
153
+ *
154
+ * VSCode 窗口生命周期通常远小于定时周期 → 启动时立即执行一次(run),
155
+ * 先清存量孤儿,再按周期续跑。
156
+ *
157
+ * @param intervalMs - 执行间隔(毫秒)
158
+ */
159
+ startPeriodic(intervalMs) {
160
+ if (this.timer) {
161
+ logger.warn('GC: 定时任务已启动,忽略重复调用');
162
+ return;
163
+ }
164
+ // 启动即执行一次:窗口生命周期内可能等不到首个周期,先清存量孤儿
165
+ this.run();
166
+ this.timer = setInterval(() => {
167
+ this.run();
168
+ }, intervalMs);
169
+ logger.info({ intervalMs }, 'GC: 定时任务已启动');
170
+ }
171
+ /**
172
+ * 停止定时 GC
173
+ */
174
+ stopPeriodic() {
175
+ if (this.timer) {
176
+ clearInterval(this.timer);
177
+ this.timer = null;
178
+ logger.info('GC: 定时任务已停止');
179
+ }
180
+ }
181
+ /**
182
+ * 获取当前配置
183
+ *
184
+ * @returns GC 配置
185
+ */
186
+ getConfig() {
187
+ return { ...this.config };
188
+ }
189
+ /**
190
+ * 更新配置
191
+ *
192
+ * @param partial - 部分配置更新
193
+ */
194
+ updateConfig(partial) {
195
+ Object.assign(this.config, partial);
196
+ }
197
+ }
198
+ /**
199
+ * 创建默认 GC 服务的工厂函数
200
+ *
201
+ * @param roundStore - 问答闭环存储
202
+ * @param memoryStorage - 记忆存储
203
+ * @param shouldSkip - 忙碌检查回调(可选:对话进行中跳过本次)
204
+ * @returns GC 服务实例
205
+ */
206
+ export function createDefaultGCService(roundStore, memoryStorage, shouldSkip) {
207
+ return new GCService(roundStore, memoryStorage, {
208
+ minAgeMs: 5 * 60 * 1000, // 5 分钟最小存活时间
209
+ batchSize: 100,
210
+ cleanUpMemory: true,
211
+ verbose: false,
212
+ shouldSkip,
213
+ });
214
+ }
215
+ //# sourceMappingURL=gcService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gcService.js","sourceRoot":"","sources":["../../src/memory/gcService.ts"],"names":[],"mappings":"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"}
@@ -1,50 +1,17 @@
1
1
  /**
2
- * LLM 治理源列表 — 参与去重 / 冲突检测 / 时效性评估 / 衰减的 source 集合
2
+ * 记忆治理共享常量 — 治理源列表。
3
+ * 排序单归语义分:使用轨迹唯一事实源为 accessedAt,无 score 写位/排序/clamp 位。
4
+ * 纯常量模块(零依赖,仅类型 import),被 agent/managers 多模块消费,符合 agent → memory 单向依赖。
3
5
  *
4
- * 不含配置型记忆(persona / rule / skill),这些是启动时加载的永驻记忆,
5
- * 不参与运行时治理。如未来扩展治理范围,仅需修改此数组。
6
+ * 治理模型:supersede(写时取代);无衰减——
7
+ * 摘要是事实记录无"过时"语义,记忆有效性由 superseded 写时取代判定,
8
+ * 低频记忆经相关性排序自然后移退出召回面,无"沉底/自然遗忘归档"语义。
6
9
  */
7
- export declare const GOVERNANCE_SOURCES: readonly string[];
8
10
  /**
9
- * score 提升量 — "越常用越重要"语义统一
10
- *
11
- * 消费者:
12
- * - recall.ts boostScore:召回时触发(被动)
13
- * - memoryInspector.writeBoost:用户主动采纳时触发(主动)
14
- */
15
- export declare const BOOST_INCREMENT = 0.05;
16
- /**
17
- * score 上限 — 防止 boost 超过 1.0
18
- *
19
- * 消费者:recall.ts / memoryInspector.ts
11
+ * 治理源列表:实际写入记忆库的 source 才参与去重 / 冲突治理。
12
+ * 当前记忆库唯一自动轨 = round-summary(摘要即记忆本体,见 memory-as-summary.md),
13
+ * 其治理由 superseded 写时取代承担,不入本数组;content 历史残留 source 无生产写入路径。
14
+ * 空列表时 dedup/冲突检测空转(测试可显式注入治理源)。
20
15
  */
21
- export declare const SCORE_CEILING = 1;
22
- /**
23
- * score 下限 — 衰减/demote 的底线(MIND2-L3:incrementScore clamp 下限)
24
- *
25
- * 消费者:
26
- * - recall.ts applyDecayToMemory(衰减下限)
27
- * - InMemoryStorage / SqliteStorage incrementScore(clamp 下限)
28
- */
29
- export declare const DECAY_FLOOR = 0.1;
30
- /**
31
- * 衰减:未访问天数阈值(天)— 超过此天数才开始衰减
32
- *
33
- * 消费者:
34
- * - recall.ts applyDecayToMemory(内存衰减判断)
35
- * - SqliteStorage.decayScores(SQL 衰减 WHERE 条件)
36
- *
37
- * 修改时必须同步两处(v2 神木回天:消除跨层重复硬编码)
38
- */
39
- export declare const DECAY_AGE_DAYS = 7;
40
- /**
41
- * 衰减:每过一个周期 score 降低量
42
- *
43
- * 消费者:
44
- * - recall.ts applyDecayToMemory(内存衰减计算)
45
- * - SqliteStorage.decayScores(SQL 衰减 SET 计算)
46
- *
47
- * 修改时必须同步两处(v2 神木回天:消除跨层重复硬编码)
48
- */
49
- export declare const DECAY_AMOUNT = 0.02;
16
+ export declare const GOVERNANCE_SOURCES: readonly string[];
50
17
  //# sourceMappingURL=governance.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"governance.d.ts","sourceRoot":"","sources":["../../src/memory/governance.ts"],"names":[],"mappings":"AAiBA;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB,EAAE,SAAS,MAAM,EAI/C,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,eAAe,OAAO,CAAC;AAEpC;;;;GAIG;AACH,eAAO,MAAM,aAAa,IAAM,CAAC;AAEjC;;;;;;GAMG;AACH,eAAO,MAAM,WAAW,MAAM,CAAC;AAE/B;;;;;;;;GAQG;AACH,eAAO,MAAM,cAAc,IAAI,CAAC;AAEhC;;;;;;;;GAQG;AACH,eAAO,MAAM,YAAY,OAAO,CAAC"}
1
+ {"version":3,"file":"governance.d.ts","sourceRoot":"","sources":["../../src/memory/governance.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB,EAAE,SAAS,MAAM,EAAO,CAAC"}
@@ -1,70 +1,17 @@
1
1
  /**
2
- * 记忆治理共享常量 — LLM 治理源列表 + score 提升量/上限的统一真理源
2
+ * 记忆治理共享常量 — 治理源列表。
3
+ * 排序单归语义分:使用轨迹唯一事实源为 accessedAt,无 score 写位/排序/clamp 位。
4
+ * 纯常量模块(零依赖,仅类型 import),被 agent/managers 多模块消费,符合 agent → memory 单向依赖。
3
5
  *
4
- * 设计原因:memoryInspector / memoryAdvisor / memoryDecayScheduler 三个治理模块
5
- * 各自维护同一份 `[INSIGHT, PROFILE, WORK_PROJECTION]` 列表,存在 5 处独立维护。
6
- * 提取到共享模块后,未来调整治理范围只需改 1 处(v2 年轮审判 REPEAT-1 闭环)。
7
- *
8
- * 同时收纳 score 提升量/上限常量(recall.ts 召回 boost + memoryInspector 采纳反哺 boost),
9
- * 消除 2 处重复(v2 年轮审判 REPEAT-2 闭环)。
10
- *
11
- * 依赖方向:memory/governance.ts 是纯常量模块(零依赖,仅类型 import),
12
- * 被 agent/managers/ 多个模块消费,符合 agent → memory 单向依赖原则。
13
- *
14
- * 详见 ADR-004(记忆统一模型):所有 source 都是开放字符串,治理范围由本文件集中维护。
15
- */
16
- import { SOURCE_LABELS } from '../memory/types.js';
17
- /**
18
- * LLM 治理源列表 — 参与去重 / 冲突检测 / 时效性评估 / 衰减的 source 集合
19
- *
20
- * 不含配置型记忆(persona / rule / skill),这些是启动时加载的永驻记忆,
21
- * 不参与运行时治理。如未来扩展治理范围,仅需修改此数组。
6
+ * 治理模型:supersede(写时取代);无衰减——
7
+ * 摘要是事实记录无"过时"语义,记忆有效性由 superseded 写时取代判定,
8
+ * 低频记忆经相关性排序自然后移退出召回面,无"沉底/自然遗忘归档"语义。
22
9
  */
23
- export const GOVERNANCE_SOURCES = [
24
- SOURCE_LABELS.INSIGHT,
25
- SOURCE_LABELS.PROFILE,
26
- SOURCE_LABELS.WORK_PROJECTION,
27
- ];
28
10
  /**
29
- * score 提升量 — "越常用越重要"语义统一
30
- *
31
- * 消费者:
32
- * - recall.ts boostScore:召回时触发(被动)
33
- * - memoryInspector.writeBoost:用户主动采纳时触发(主动)
34
- */
35
- export const BOOST_INCREMENT = 0.05;
36
- /**
37
- * score 上限 — 防止 boost 超过 1.0
38
- *
39
- * 消费者:recall.ts / memoryInspector.ts
40
- */
41
- export const SCORE_CEILING = 1.0;
42
- /**
43
- * score 下限 — 衰减/demote 的底线(MIND2-L3:incrementScore clamp 下限)
44
- *
45
- * 消费者:
46
- * - recall.ts applyDecayToMemory(衰减下限)
47
- * - InMemoryStorage / SqliteStorage incrementScore(clamp 下限)
48
- */
49
- export const DECAY_FLOOR = 0.1;
50
- /**
51
- * 衰减:未访问天数阈值(天)— 超过此天数才开始衰减
52
- *
53
- * 消费者:
54
- * - recall.ts applyDecayToMemory(内存衰减判断)
55
- * - SqliteStorage.decayScores(SQL 衰减 WHERE 条件)
56
- *
57
- * 修改时必须同步两处(v2 神木回天:消除跨层重复硬编码)
58
- */
59
- export const DECAY_AGE_DAYS = 7;
60
- /**
61
- * 衰减:每过一个周期 score 降低量
62
- *
63
- * 消费者:
64
- * - recall.ts applyDecayToMemory(内存衰减计算)
65
- * - SqliteStorage.decayScores(SQL 衰减 SET 计算)
66
- *
67
- * 修改时必须同步两处(v2 神木回天:消除跨层重复硬编码)
11
+ * 治理源列表:实际写入记忆库的 source 才参与去重 / 冲突治理。
12
+ * 当前记忆库唯一自动轨 = round-summary(摘要即记忆本体,见 memory-as-summary.md),
13
+ * 其治理由 superseded 写时取代承担,不入本数组;content 历史残留 source 无生产写入路径。
14
+ * 空列表时 dedup/冲突检测空转(测试可显式注入治理源)。
68
15
  */
69
- export const DECAY_AMOUNT = 0.02;
16
+ export const GOVERNANCE_SOURCES = [];
70
17
  //# sourceMappingURL=governance.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"governance.js","sourceRoot":"","sources":["../../src/memory/governance.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAElD;;;;;GAKG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAsB;IACnD,aAAa,CAAC,OAAO;IACrB,aAAa,CAAC,OAAO;IACrB,aAAa,CAAC,eAAe;CAC9B,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,IAAI,CAAC;AAEpC;;;;GAIG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,GAAG,CAAC;AAEjC;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,GAAG,CAAC;AAE/B;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAC;AAEhC;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,IAAI,CAAC"}
1
+ {"version":3,"file":"governance.js","sourceRoot":"","sources":["../../src/memory/governance.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH;;;;;GAKG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAsB,EAAE,CAAC"}
@@ -0,0 +1,124 @@
1
+ /**
2
+ * 内存问答闭环存储实现 — IRoundStore 的纯 JS 内存版
3
+ *
4
+ * 设计理念:
5
+ * - 零依赖零 IO,用于单元测试、临时占位
6
+ * - 不持久化(进程退出即丢失),仅限测试/开发
7
+ * - 生产由宿主注入持久化实现(FileRoundStore 或宿主自选后端)
8
+ */
9
+ import type { Round, RoundStatus, IRoundStore } from '../memory/roundStore.js';
10
+ /**
11
+ * 内存问答闭环存储
12
+ *
13
+ * 核心实现:
14
+ * - Map 存储(id → Round)
15
+ * - 引用计数内置于 Round.refCount
16
+ * - 支持批量获取(getByIds)
17
+ * - 支持按状态筛选(listByStatus)
18
+ * - 支持孤立检查(listOrphaned)
19
+ */
20
+ export declare class InMemoryRoundStore implements IRoundStore {
21
+ /** Round 存储(id → Round) */
22
+ private rounds;
23
+ /**
24
+ * 存储问答闭环(新增或更新)
25
+ *
26
+ * @param round - 问答闭环对象
27
+ */
28
+ save(round: Round): void;
29
+ /**
30
+ * 按 ID 获取问答闭环
31
+ *
32
+ * @param roundId - 全局唯一 Round ID
33
+ * @returns Round 对象,不存在返回 null
34
+ */
35
+ getById(roundId: string): Round | null;
36
+ /**
37
+ * 批量获取问答闭环
38
+ *
39
+ * 不存在的 ID 会被跳过,不报错
40
+ *
41
+ * @param roundIds - Round ID 数组
42
+ * @returns Round 对象数组(按输入顺序,跳过不存在的)
43
+ */
44
+ getByIds(roundIds: string[]): Round[];
45
+ /**
46
+ * 列出所有问答闭环
47
+ *
48
+ * ⚠️ 生产环境慎用:全量遍历可能性能开销大
49
+ *
50
+ * @returns 所有 Round 数组(浅拷贝)
51
+ */
52
+ listAll(): Round[];
53
+ /**
54
+ * 增加引用计数
55
+ *
56
+ * 分叉时调用:新会话引用同一个 Round
57
+ *
58
+ * @param roundId - 需要增加引用的 Round ID
59
+ */
60
+ incrementRef(roundId: string): void;
61
+ /**
62
+ * 减少引用计数
63
+ *
64
+ * 删除会话时调用
65
+ * 引用计数不会降到 0 以下
66
+ *
67
+ * @param roundId - 需要减少引用的 Round ID
68
+ */
69
+ decrementRef(roundId: string): void;
70
+ /**
71
+ * 删除问答闭环(物理删除,不可恢复)
72
+ *
73
+ * 前置条件:refCount === 0
74
+ *
75
+ * @param roundId - 要删除的 Round ID
76
+ * @returns 是否删除成功(refCount > 0 时返回 false)
77
+ */
78
+ delete(roundId: string): boolean;
79
+ /**
80
+ * 按状态列出问答闭环
81
+ *
82
+ * @param status - Round 状态筛选
83
+ * @returns 符合条件的 Round 数组
84
+ */
85
+ listByStatus(status: RoundStatus): Round[];
86
+ /**
87
+ * 获取孤立的问答闭环列表(refCount === 0)
88
+ *
89
+ * 用于 GC 服务批量清理
90
+ *
91
+ * @param minAgeMs - 最小存活时间(毫秒),避免清理正在使用的 Round
92
+ * @returns 孤立 Round 数组
93
+ */
94
+ listOrphaned(minAgeMs?: number): Round[];
95
+ /**
96
+ * 列出指定日期最近未完成(pending/error)的崩溃残留轮(step 原子落盘)。
97
+ *
98
+ * 崩溃发生在 appendAssistant 前时,该轮 refCount=0、未登记会话、orphan 但可能有已落盘
99
+ * processEvents(step 检查点)。宿主重启后经此口「找到」中断轮,再调收场方法
100
+ * (MessageHistory.appendInterrupted)**升级为正常 stop turn**(非半成品草稿)。
101
+ * 只读、不改写、不登记会话;升级完成(complete + refCount>0)前为打捞窗口内中间态,
102
+ * 超龄仍未升级的中断轮由 GC 回收(默认 24h 存活保护覆盖打捞窗口,不误回收)。
103
+ *
104
+ * @param date - YYYY-MM-DD,按 createdAt 前缀匹配(ISO 头 10 位)
105
+ * @param limit - 最多条数,按 createdAt 降序(最新在前);缺省不截断
106
+ * @returns 中断残留 Round 数组(倒序)
107
+ */
108
+ listInterruptedRecent(date: string, limit?: number): Round[];
109
+ /**
110
+ * 获取存储中的 Round 数量
111
+ *
112
+ * 用于监控和测试
113
+ *
114
+ * @returns Round 总数
115
+ */
116
+ size(): number;
117
+ /**
118
+ * 清空存储(测试用)
119
+ *
120
+ * ⚠️ 不可逆操作,仅用于测试
121
+ */
122
+ clear(): void;
123
+ }
124
+ //# sourceMappingURL=inMemoryRoundStore.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inMemoryRoundStore.d.ts","sourceRoot":"","sources":["../../src/memory/inMemoryRoundStore.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAG9E;;;;;;;;;GASG;AACH,qBAAa,kBAAmB,YAAW,WAAW;IACpD,2BAA2B;IAC3B,OAAO,CAAC,MAAM,CAAiC;IAE/C;;;;OAIG;IACH,IAAI,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI;IAKxB;;;;;OAKG;IACH,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,KAAK,GAAG,IAAI;IAMtC;;;;;;;OAOG;IACH,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,KAAK,EAAE;IAWrC;;;;;;OAMG;IACH,OAAO,IAAI,KAAK,EAAE;IAIlB;;;;;;OAMG;IACH,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAUnC;;;;;;;OAOG;IACH,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAYnC;;;;;;;OAOG;IACH,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAchC;;;;;OAKG;IACH,YAAY,CAAC,MAAM,EAAE,WAAW,GAAG,KAAK,EAAE;IAM1C;;;;;;;OAOG;IACH,YAAY,CAAC,QAAQ,GAAE,MAAU,GAAG,KAAK,EAAE;IAsB3C;;;;;;;;;;;;OAYG;IACH,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,KAAK,EAAE;IAmB5D;;;;;;OAMG;IACH,IAAI,IAAI,MAAM;IAId;;;;OAIG;IACH,KAAK,IAAI,IAAI;CAGd"}