@zooique/memora 2.0.0 → 3.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 (588) hide show
  1. package/CHANGELOG.md +1028 -0
  2. package/README.en.md +305 -0
  3. package/README.md +303 -148
  4. package/config.example.json +43 -0
  5. package/dist/agent/agent.d.ts +438 -295
  6. package/dist/agent/agent.d.ts.map +1 -1
  7. package/dist/agent/agent.js +1368 -836
  8. package/dist/agent/agent.js.map +1 -1
  9. package/dist/agent/assembler.d.ts +117 -39
  10. package/dist/agent/assembler.d.ts.map +1 -1
  11. package/dist/agent/assembler.js +574 -71
  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 +229 -17
  18. package/dist/agent/builtinToolHandlers.d.ts.map +1 -1
  19. package/dist/agent/builtinToolHandlers.js +758 -70
  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 +139 -18
  30. package/dist/agent/constants.d.ts.map +1 -1
  31. package/dist/agent/constants.js +154 -18
  32. package/dist/agent/constants.js.map +1 -1
  33. package/dist/agent/contextManager.d.ts +126 -76
  34. package/dist/agent/contextManager.d.ts.map +1 -1
  35. package/dist/agent/contextManager.js +197 -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 +718 -253
  50. package/dist/agent/loop.d.ts.map +1 -1
  51. package/dist/agent/loop.js +2215 -648
  52. package/dist/agent/loop.js.map +1 -1
  53. package/dist/agent/managers/archiveCoordinator.d.ts +21 -74
  54. package/dist/agent/managers/archiveCoordinator.d.ts.map +1 -1
  55. package/dist/agent/managers/archiveCoordinator.js +32 -105
  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 +85 -0
  62. package/dist/agent/managers/dedupManager.d.ts.map +1 -0
  63. package/dist/agent/managers/dedupManager.js +248 -0
  64. package/dist/agent/managers/dedupManager.js.map +1 -0
  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 +21 -0
  74. package/dist/agent/managers/llmJudgeHelper.d.ts.map +1 -0
  75. package/dist/agent/managers/llmJudgeHelper.js +32 -0
  76. package/dist/agent/managers/llmJudgeHelper.js.map +1 -0
  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 +56 -192
  84. package/dist/agent/managers/memoryAdvisor.js.map +1 -1
  85. package/dist/agent/managers/memoryGovernance.d.ts +24 -0
  86. package/dist/agent/managers/memoryGovernance.d.ts.map +1 -0
  87. package/dist/agent/managers/memoryGovernance.js +46 -0
  88. package/dist/agent/managers/memoryGovernance.js.map +1 -0
  89. package/dist/agent/managers/memoryInspector.d.ts +59 -393
  90. package/dist/agent/managers/memoryInspector.d.ts.map +1 -1
  91. package/dist/agent/managers/memoryInspector.js +92 -736
  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 -63
  98. package/dist/agent/managers/sessionArchiver.d.ts.map +1 -1
  99. package/dist/agent/managers/sessionArchiver.js +83 -157
  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 +20 -0
  110. package/dist/agent/managers/streamAccumulator.d.ts.map +1 -0
  111. package/dist/agent/managers/streamAccumulator.js +15 -0
  112. package/dist/agent/managers/streamAccumulator.js.map +1 -0
  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 +12 -47
  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 +57 -87
  122. package/dist/agent/managers/workProjection.d.ts.map +1 -1
  123. package/dist/agent/managers/workProjection.js +166 -246
  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 +255 -9
  158. package/dist/agent/toolExecutor.d.ts.map +1 -1
  159. package/dist/agent/toolExecutor.js +956 -20
  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 +512 -162
  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 +59 -242
  198. package/dist/config/loader.d.ts.map +1 -1
  199. package/dist/config/loader.js +237 -194
  200. package/dist/config/loader.js.map +1 -1
  201. package/dist/index.d.ts +69 -74
  202. package/dist/index.d.ts.map +1 -1
  203. package/dist/index.js +93 -63
  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 +29 -25
  210. package/dist/llm/factory.d.ts.map +1 -1
  211. package/dist/llm/factory.js +34 -69
  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 +181 -129
  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 -29
  226. package/dist/logging/logger.d.ts.map +1 -1
  227. package/dist/logging/logger.js +43 -233
  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 +17 -0
  236. package/dist/memory/governance.d.ts.map +1 -0
  237. package/dist/memory/governance.js +17 -0
  238. package/dist/memory/governance.js.map +1 -0
  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 +26 -141
  252. package/dist/memory/inMemoryStorage.d.ts.map +1 -1
  253. package/dist/memory/inMemoryStorage.js +48 -187
  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 +7 -2
  260. package/dist/memory/lockManager.d.ts.map +1 -1
  261. package/dist/memory/lockManager.js +35 -11
  262. package/dist/memory/lockManager.js.map +1 -1
  263. package/dist/memory/projectManager.d.ts +30 -128
  264. package/dist/memory/projectManager.d.ts.map +1 -1
  265. package/dist/memory/projectManager.js +39 -171
  266. package/dist/memory/projectManager.js.map +1 -1
  267. package/dist/memory/projectRegistry.d.ts +22 -37
  268. package/dist/memory/projectRegistry.d.ts.map +1 -1
  269. package/dist/memory/projectRegistry.js +78 -85
  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 +18 -9
  284. package/dist/memory/sourceValidation.d.ts.map +1 -1
  285. package/dist/memory/sourceValidation.js +35 -29
  286. package/dist/memory/sourceValidation.js.map +1 -1
  287. package/dist/memory/storageInterface.d.ts +45 -126
  288. package/dist/memory/storageInterface.d.ts.map +1 -1
  289. package/dist/memory/types.d.ts +82 -168
  290. package/dist/memory/types.d.ts.map +1 -1
  291. package/dist/memory/types.js +116 -79
  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 +127 -56
  342. package/dist/skill/skillManager.d.ts.map +1 -1
  343. package/dist/skill/skillManager.js +318 -163
  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 -17
  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 +79 -0
  366. package/dist/utils/configResourceManager.d.ts.map +1 -0
  367. package/dist/utils/configResourceManager.js +150 -0
  368. package/dist/utils/configResourceManager.js.map +1 -0
  369. package/dist/utils/errors.d.ts +48 -56
  370. package/dist/utils/errors.d.ts.map +1 -1
  371. package/dist/utils/errors.js +60 -58
  372. package/dist/utils/errors.js.map +1 -1
  373. package/dist/utils/eventEmitter.d.ts +141 -63
  374. package/dist/utils/eventEmitter.d.ts.map +1 -1
  375. package/dist/utils/eventEmitter.js +50 -35
  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 +6 -5
  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 +34 -1
  396. package/dist/utils/math.d.ts.map +1 -1
  397. package/dist/utils/math.js +47 -14
  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 -29
  416. package/dist/utils/segmenter.d.ts.map +1 -1
  417. package/dist/utils/segmenter.js +230 -88
  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 +1175 -0
  458. package/docs/memora-/346/216/245/345/205/245/346/214/207/345/215/227.md +843 -0
  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 -83
  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 -47
  503. package/dist/agent/guardrail.d.ts.map +0 -1
  504. package/dist/agent/guardrail.js +0 -51
  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 -150
  509. package/dist/agent/managers/autoConfigRefiner.js.map +0 -1
  510. package/dist/agent/managers/configManager.d.ts +0 -125
  511. package/dist/agent/managers/configManager.d.ts.map +0 -1
  512. package/dist/agent/managers/configManager.js +0 -194
  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 -198
  519. package/dist/agent/managers/memoryDecayScheduler.d.ts.map +0 -1
  520. package/dist/agent/managers/memoryDecayScheduler.js +0 -349
  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 -81
  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 -67
  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 -54
  551. package/dist/memory/hybridMerge.d.ts.map +0 -1
  552. package/dist/memory/hybridMerge.js +0 -36
  553. package/dist/memory/hybridMerge.js.map +0 -1
  554. package/dist/memory/inMemoryRelationStore.d.ts +0 -51
  555. package/dist/memory/inMemoryRelationStore.d.ts.map +0 -1
  556. package/dist/memory/inMemoryRelationStore.js +0 -65
  557. package/dist/memory/inMemoryRelationStore.js.map +0 -1
  558. package/dist/memory/loader.d.ts +0 -49
  559. package/dist/memory/loader.d.ts.map +0 -1
  560. package/dist/memory/loader.js +0 -93
  561. package/dist/memory/loader.js.map +0 -1
  562. package/dist/memory/recall.d.ts +0 -66
  563. package/dist/memory/recall.d.ts.map +0 -1
  564. package/dist/memory/recall.js +0 -142
  565. package/dist/memory/recall.js.map +0 -1
  566. package/dist/memory/relationStore.d.ts +0 -78
  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 -50
  571. package/dist/memory/store.d.ts.map +0 -1
  572. package/dist/memory/store.js +0 -161
  573. package/dist/memory/store.js.map +0 -1
  574. package/dist/memory/userProfile.d.ts +0 -156
  575. package/dist/memory/userProfile.d.ts.map +0 -1
  576. package/dist/memory/userProfile.js +0 -320
  577. package/dist/memory/userProfile.js.map +0 -1
  578. package/dist/memory/vectorStore.d.ts +0 -185
  579. package/dist/memory/vectorStore.d.ts.map +0 -1
  580. package/dist/memory/vectorStore.js +0 -257
  581. package/dist/memory/vectorStore.js.map +0 -1
  582. package/dist/persona/personaManager.d.ts +0 -160
  583. package/dist/persona/personaManager.d.ts.map +0 -1
  584. package/dist/persona/personaManager.js +0 -414
  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
@@ -1,198 +0,0 @@
1
- /**
2
- * 记忆衰减调度器(从 agent.ts 拆分)
3
- *
4
- * 职责:
5
- * 1. 定期执行记忆 score 衰减(体现"自然遗忘")
6
- * 2. 衰减指标统计(执行次数 / 累计衰减记忆数 / 上次衰减时间)
7
- * 3. 衰减可观测性(Tracer Span 埋点)
8
- * 4. 衰减完成事件发射(decayCompleted)
9
- * 5. L2 时效性评估(可选,backgroundProvider + index 注入后启用)
10
- *
11
- * 设计理由:
12
- * agent.ts 原承担 15+ 职责,记忆衰减是独立的生命周期职责,
13
- * 拆分后 Agent 聚焦对话编排,MemoryDecayScheduler 聚焦记忆自然遗忘。
14
- *
15
- * 衰减范围:
16
- * - insight(洞察记忆)
17
- * - profile(用户画像记忆)
18
- * - work-projection(作品投影)
19
- * 不衰减 persona/rule/skill(配置型记忆不应衰减)
20
- *
21
- * L2 时效性评估(可选增强):
22
- * - 衰减后扫描低分记忆(score < TIMELINESS_LOW_SCORE_THRESHOLD)
23
- * - 调用 LLM 判断是否"已过时"(如过时的技术栈、已变更的偏好)
24
- * - 过时则进一步降级(score → TIMELINESS_OUTDATED_SCORE)
25
- * - backgroundProvider / index 未注入时静默跳过(向后兼容)
26
- *
27
- * 自然生长原则:
28
- * - 不持有 storage 引用(start 时注入,stop 时释放)
29
- * - 通过回调发射事件(不继承 TypedEventEmitter,避免与 Agent 事件系统耦合)
30
- * - 指标统计内聚(getMetrics 返回快照,Agent.getMetrics 直接合并)
31
- */
32
- import { type ITracer } from '../../agent/tracer.js';
33
- import type { LlmProvider } from '../../llm/provider.js';
34
- import type { IMemoryStorage } from '../../memory/storageInterface.js';
35
- /** 衰减完成的回调类型(Agent 注入 emit('decayCompleted', ...)) */
36
- export type DecayCompletedCallback = (payload: {
37
- decayedCount: number;
38
- }) => void;
39
- /** MemoryDecayScheduler 构造选项 */
40
- export interface MemoryDecaySchedulerOptions {
41
- /** 可观测性 Tracer(未注入时降级为 NOOP_TRACER) */
42
- readonly tracer?: ITracer;
43
- /** 衰减完成事件发射回调(Agent 注入 this.emit.bind(this, 'decayCompleted')) */
44
- readonly onDecayCompleted: DecayCompletedCallback;
45
- /** 后台 LLM Provider(可选,用于 L2 时效性评估,未注入时跳过) */
46
- readonly backgroundProvider?: LlmProvider | null;
47
- /** 完整记忆存储(可选,用于 L2 读取低分记忆和降级,未注入时跳过) */
48
- readonly index?: IMemoryStorage | null;
49
- }
50
- /** 单条记忆的时效性判断结果 */
51
- export interface TimelinessVerdict {
52
- /** 记忆 ID */
53
- memoryId: string;
54
- /** 是否已过时(true → 降级到 TIMELINESS_OUTDATED_SCORE) */
55
- isOutdated: boolean;
56
- /** LLM 判断理由 */
57
- reason: string;
58
- }
59
- /** 时效性评估报告(evaluateTimeliness 返回值) */
60
- export interface TimelinessReport {
61
- /** 扫描的低分记忆总数 */
62
- scannedCount: number;
63
- /** LLM 判定为过时并执行降级的记忆数 */
64
- outdatedCount: number;
65
- /** 被降级的记忆 ID 列表 */
66
- demotedIds: string[];
67
- /** 跳过原因(LLM 不可用 / 无低分记忆 / LLM 失败降级) */
68
- skippedReason?: string;
69
- }
70
- /** 衰减指标快照(供 Agent.getMetrics 合并) */
71
- export interface DecayMetrics {
72
- /** 衰减执行次数(每次 runOnce 实际执行 +1) */
73
- readonly runCount: number;
74
- /** 累计衰减记忆数(score 被调低的记忆条数总和) */
75
- readonly totalDecayedCount: number;
76
- /** 上次衰减时间(ISO 8601,null 表示从未执行过) */
77
- readonly lastRunAt: string | null;
78
- }
79
- /**
80
- * 记忆衰减调度器
81
- *
82
- * 使用方式:
83
- * const scheduler = new MemoryDecayScheduler({ tracer, onDecayCompleted });
84
- * scheduler.start(storage, intervalMs); // 启动定时衰减
85
- * scheduler.runOnce(); // 立即执行一次衰减
86
- * scheduler.stop(); // 停止定时衰减
87
- * scheduler.getMetrics(); // 获取衰减指标快照
88
- */
89
- export declare class MemoryDecayScheduler {
90
- /** 可观测性 Tracer(默认 NOOP,零开销) */
91
- private readonly tracer;
92
- /** 衰减完成事件发射回调 */
93
- private readonly onDecayCompleted;
94
- /** 后台 LLM Provider(可选,用于 L2 时效性评估,未注入时跳过) */
95
- private readonly backgroundProvider;
96
- /** 完整记忆存储(可选,用于 L2 读取低分记忆和降级,未注入时跳过) */
97
- private readonly index;
98
- /** 衰减定时器(null 表示未启动) */
99
- private decayTimer;
100
- /** 衰减目标存储(start 时注入,stop 时释放) */
101
- private storage;
102
- /** 衰减执行次数(每次 runOnce 实际执行 +1) */
103
- private metricDecayRunCount;
104
- /** 累计衰减记忆数(score 被调低的记忆条数总和) */
105
- private metricTotalDecayedCount;
106
- /** 上次衰减时间(ISO 8601,null 表示从未执行过) */
107
- private metricLastDecayAt;
108
- constructor(opts: MemoryDecaySchedulerOptions);
109
- /**
110
- * 启动定期衰减
111
- *
112
- * @param storage 衰减目标存储(IMemoryStorage.decayScores)
113
- * @param intervalMs 衰减间隔(毫秒,通常为 1 小时)
114
- */
115
- start(storage: IMemoryStorageLike, intervalMs: number): void;
116
- /**
117
- * 停止定期衰减,释放资源
118
- *
119
- * 清理定时器和 storage 引用,防止 close 后回调触发。
120
- */
121
- stop(): void;
122
- /**
123
- * 执行一次记忆衰减
124
- *
125
- * 对 insight/profile/work-projection 记忆执行 score 衰减,
126
- * 长期未访问的记忆 score 逐渐降低,体现"自然遗忘"。
127
- * 不影响 persona/rule/skill(这些是配置型记忆,不应衰减)。
128
- *
129
- * 衰减逻辑委派给 IMemoryStorage.decayScores(),
130
- * 宿主(SqliteStorage)可用一条 SQL UPDATE 批量完成,避免 O(n) 全量加载。
131
- */
132
- runOnce(): void;
133
- /**
134
- * 获取衰减指标快照
135
- *
136
- * 供 Agent.getMetrics() 合并到完整 AgentMetrics 中。
137
- */
138
- getMetrics(): DecayMetrics;
139
- /**
140
- * 时效性评估:扫描低分记忆,调用 LLM 判断是否已过时
141
- *
142
- * 流程:
143
- * 1. 从 insight/profile/work-projection 加载低分记忆(score < 0.3)
144
- * 2. 对每条低分记忆(上限 20 条),调用 LLM 判断是否"已过时"
145
- * 3. 过时则进一步降级(score → 0.05,接近物理删除阈值但保留可恢复性)
146
- * 4. 返回评估报告
147
- *
148
- * 使用场景:
149
- * - 衰减后调用(onDecayCompleted 回调中),对低分记忆做 LLM 二次评估
150
- * - 宿主定时任务定期调用(如每天一次)
151
- * - 用户手动触发(记忆管理面板的"清理过时记忆"按钮)
152
- *
153
- * 安全设计:
154
- * - 不物理删除——仅降级 score,保留可恢复性
155
- * - LLM 失败降级——返回已处理的报告,不阻塞调用方
156
- * - 单条 LLM 失败不阻塞后续评估
157
- * - backgroundProvider / index 未注入时静默跳过(向后兼容)
158
- *
159
- * @param signal 可选的 AbortSignal(取消正在进行的 LLM 评估)
160
- * @returns 评估报告
161
- */
162
- evaluateTimeliness(signal?: AbortSignal): Promise<TimelinessReport>;
163
- /**
164
- * 调用 LLM 判断单条记忆的时效性
165
- *
166
- * 使用结构化 JSON 输出(isOutdated + reason),
167
- * 参照 SessionArchiver.generateSummary 的 parseLlmJson 模式。
168
- *
169
- * LLM 失败时抛出异常(由 evaluateTimeliness 捕获并降级跳过此条)。
170
- *
171
- * @param memory 待评估的记忆
172
- * @param signal 可选的 AbortSignal
173
- * @returns LLM 判断结果
174
- */
175
- private judgeTimeliness;
176
- /**
177
- * 降级过时记忆(score → TIMELINESS_OUTDATED_SCORE)
178
- *
179
- * 安全设计:
180
- * - 不物理删除,仅降低 score,保留可恢复性
181
- * - 通过 upsert 覆盖原记忆(保持 id/source/name/createdAt 不变)
182
- * - 更新 accessedAt,标记最近被处理过
183
- *
184
- * @param memory 待降级的过时记忆
185
- */
186
- private demoteOutdatedMemory;
187
- }
188
- /**
189
- * IMemoryStorage 的衰减子接口(接口隔离原则)
190
- *
191
- * MemoryDecayScheduler 只需要 decayScores 方法,不需要完整 IMemoryStorage。
192
- * 使用结构子接口便于测试 mock,同时避免对完整接口的过度耦合。
193
- */
194
- export interface IMemoryStorageLike {
195
- /** 对指定 source 的记忆执行 score 衰减,返回被衰减的记忆条数 */
196
- decayScores(sources: readonly string[], now: Date): number;
197
- }
198
- //# sourceMappingURL=memoryDecayScheduler.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"memoryDecayScheduler.d.ts","sourceRoot":"","sources":["../../../src/agent/managers/memoryDecayScheduler.ts"],"names":[],"mappings":"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"}
@@ -1,349 +0,0 @@
1
- /**
2
- * 记忆衰减调度器(从 agent.ts 拆分)
3
- *
4
- * 职责:
5
- * 1. 定期执行记忆 score 衰减(体现"自然遗忘")
6
- * 2. 衰减指标统计(执行次数 / 累计衰减记忆数 / 上次衰减时间)
7
- * 3. 衰减可观测性(Tracer Span 埋点)
8
- * 4. 衰减完成事件发射(decayCompleted)
9
- * 5. L2 时效性评估(可选,backgroundProvider + index 注入后启用)
10
- *
11
- * 设计理由:
12
- * agent.ts 原承担 15+ 职责,记忆衰减是独立的生命周期职责,
13
- * 拆分后 Agent 聚焦对话编排,MemoryDecayScheduler 聚焦记忆自然遗忘。
14
- *
15
- * 衰减范围:
16
- * - insight(洞察记忆)
17
- * - profile(用户画像记忆)
18
- * - work-projection(作品投影)
19
- * 不衰减 persona/rule/skill(配置型记忆不应衰减)
20
- *
21
- * L2 时效性评估(可选增强):
22
- * - 衰减后扫描低分记忆(score < TIMELINESS_LOW_SCORE_THRESHOLD)
23
- * - 调用 LLM 判断是否"已过时"(如过时的技术栈、已变更的偏好)
24
- * - 过时则进一步降级(score → TIMELINESS_OUTDATED_SCORE)
25
- * - backgroundProvider / index 未注入时静默跳过(向后兼容)
26
- *
27
- * 自然生长原则:
28
- * - 不持有 storage 引用(start 时注入,stop 时释放)
29
- * - 通过回调发射事件(不继承 TypedEventEmitter,避免与 Agent 事件系统耦合)
30
- * - 指标统计内聚(getMetrics 返回快照,Agent.getMetrics 直接合并)
31
- */
32
- import { safeSetInterval, clearSafeInterval } from '../../utils/safeTimer.js';
33
- import { logger } from '../../logging/logger.js';
34
- import { toError } from '../../utils/errors.js';
35
- import { nowIso } from '../../utils/time.js';
36
- import { SOURCE_LABELS } from '../../memory/types.js';
37
- import { NOOP_TRACER, TRACE_SPANS } from '../../agent/tracer.js';
38
- // parseLlmJson 用于解析 LLM 时效性判断结果(与 SessionArchiver 同模式)
39
- import { parseLlmJson } from '../../utils/json.js';
40
- import { truncate } from '../../utils/strings.js';
41
- // ─── L2 时效性评估常量 ────────────────────────────────────
42
- /** 参与时效性评估的 source 标签(与衰减范围一致) */
43
- const TIMELINESS_SOURCES = [SOURCE_LABELS.INSIGHT, SOURCE_LABELS.PROFILE, SOURCE_LABELS.WORK_PROJECTION];
44
- /** 低分记忆阈值(score 低于此值的记忆进入 LLM 时效性评估) */
45
- const TIMELINESS_LOW_SCORE_THRESHOLD = 0.3;
46
- /** 单次时效性评估的记忆条数上限(控制 LLM 调用量) */
47
- const TIMELINESS_EVALUATE_LIMIT = 20;
48
- /** LLM 时效性判断超时(ms) */
49
- const TIMELINESS_TIMEOUT_MS = 15_000;
50
- /** 被判定为过时的记忆降级到此 score(接近物理删除阈值,但保留可恢复性) */
51
- const TIMELINESS_OUTDATED_SCORE = 0.05;
52
- /** 候选记忆内容预览长度(截断后送入 LLM) */
53
- const TIMELINESS_CONTENT_PREVIEW_LEN = 200;
54
- /**
55
- * 记忆衰减调度器
56
- *
57
- * 使用方式:
58
- * const scheduler = new MemoryDecayScheduler({ tracer, onDecayCompleted });
59
- * scheduler.start(storage, intervalMs); // 启动定时衰减
60
- * scheduler.runOnce(); // 立即执行一次衰减
61
- * scheduler.stop(); // 停止定时衰减
62
- * scheduler.getMetrics(); // 获取衰减指标快照
63
- */
64
- export class MemoryDecayScheduler {
65
- /** 可观测性 Tracer(默认 NOOP,零开销) */
66
- tracer;
67
- /** 衰减完成事件发射回调 */
68
- onDecayCompleted;
69
- /** 后台 LLM Provider(可选,用于 L2 时效性评估,未注入时跳过) */
70
- backgroundProvider;
71
- /** 完整记忆存储(可选,用于 L2 读取低分记忆和降级,未注入时跳过) */
72
- index;
73
- /** 衰减定时器(null 表示未启动) */
74
- decayTimer = null;
75
- /** 衰减目标存储(start 时注入,stop 时释放) */
76
- storage = null;
77
- // ─── 衰减指标统计字段 ──────────────────────────────────
78
- /** 衰减执行次数(每次 runOnce 实际执行 +1) */
79
- metricDecayRunCount = 0;
80
- /** 累计衰减记忆数(score 被调低的记忆条数总和) */
81
- metricTotalDecayedCount = 0;
82
- /** 上次衰减时间(ISO 8601,null 表示从未执行过) */
83
- metricLastDecayAt = null;
84
- constructor(opts) {
85
- this.tracer = opts.tracer ?? NOOP_TRACER;
86
- this.onDecayCompleted = opts.onDecayCompleted;
87
- // L2 可选依赖:未注入时 evaluateTimeliness 静默跳过
88
- this.backgroundProvider = opts.backgroundProvider ?? null;
89
- this.index = opts.index ?? null;
90
- }
91
- /**
92
- * 启动定期衰减
93
- *
94
- * @param storage 衰减目标存储(IMemoryStorage.decayScores)
95
- * @param intervalMs 衰减间隔(毫秒,通常为 1 小时)
96
- */
97
- start(storage, intervalMs) {
98
- this.storage = storage;
99
- // 立即执行一次首次衰减
100
- this.runOnce();
101
- // 注册定期衰减
102
- this.decayTimer = safeSetInterval(() => this.runOnce(), intervalMs);
103
- }
104
- /**
105
- * 停止定期衰减,释放资源
106
- *
107
- * 清理定时器和 storage 引用,防止 close 后回调触发。
108
- */
109
- stop() {
110
- if (this.decayTimer) {
111
- clearSafeInterval(this.decayTimer);
112
- this.decayTimer = null;
113
- }
114
- this.storage = null;
115
- }
116
- /**
117
- * 执行一次记忆衰减
118
- *
119
- * 对 insight/profile/work-projection 记忆执行 score 衰减,
120
- * 长期未访问的记忆 score 逐渐降低,体现"自然遗忘"。
121
- * 不影响 persona/rule/skill(这些是配置型记忆,不应衰减)。
122
- *
123
- * 衰减逻辑委派给 IMemoryStorage.decayScores(),
124
- * 宿主(SqliteStorage)可用一条 SQL UPDATE 批量完成,避免 O(n) 全量加载。
125
- */
126
- runOnce() {
127
- if (!this.storage)
128
- return;
129
- // 衰减 Span:记录衰减执行过程,补全衰减可观测性缺口
130
- const decaySpan = this.tracer.startSpan(TRACE_SPANS.DECAY);
131
- try {
132
- const sources = [SOURCE_LABELS.INSIGHT, SOURCE_LABELS.PROFILE, SOURCE_LABELS.WORK_PROJECTION];
133
- const decayedCount = this.storage.decayScores(sources, new Date());
134
- logger.debug({ decayedCount }, '记忆衰减完成');
135
- // 衰减指标统计:累计执行次数和衰减记忆数
136
- this.metricDecayRunCount++;
137
- this.metricTotalDecayedCount += decayedCount;
138
- this.metricLastDecayAt = nowIso();
139
- decaySpan.setAttribute('decayedCount', decayedCount);
140
- decaySpan.setAttribute('totalRuns', this.metricDecayRunCount);
141
- this.onDecayCompleted({ decayedCount });
142
- }
143
- catch (err) {
144
- logger.warn({ err }, '记忆衰减异常,跳过本轮');
145
- decaySpan.recordException(toError(err));
146
- }
147
- finally {
148
- decaySpan.end();
149
- }
150
- }
151
- /**
152
- * 获取衰减指标快照
153
- *
154
- * 供 Agent.getMetrics() 合并到完整 AgentMetrics 中。
155
- */
156
- getMetrics() {
157
- return {
158
- runCount: this.metricDecayRunCount,
159
- totalDecayedCount: this.metricTotalDecayedCount,
160
- lastRunAt: this.metricLastDecayAt,
161
- };
162
- }
163
- // ─── L2 时效性评估(可选,backgroundProvider + index 注入后启用) ───
164
- /**
165
- * 时效性评估:扫描低分记忆,调用 LLM 判断是否已过时
166
- *
167
- * 流程:
168
- * 1. 从 insight/profile/work-projection 加载低分记忆(score < 0.3)
169
- * 2. 对每条低分记忆(上限 20 条),调用 LLM 判断是否"已过时"
170
- * 3. 过时则进一步降级(score → 0.05,接近物理删除阈值但保留可恢复性)
171
- * 4. 返回评估报告
172
- *
173
- * 使用场景:
174
- * - 衰减后调用(onDecayCompleted 回调中),对低分记忆做 LLM 二次评估
175
- * - 宿主定时任务定期调用(如每天一次)
176
- * - 用户手动触发(记忆管理面板的"清理过时记忆"按钮)
177
- *
178
- * 安全设计:
179
- * - 不物理删除——仅降级 score,保留可恢复性
180
- * - LLM 失败降级——返回已处理的报告,不阻塞调用方
181
- * - 单条 LLM 失败不阻塞后续评估
182
- * - backgroundProvider / index 未注入时静默跳过(向后兼容)
183
- *
184
- * @param signal 可选的 AbortSignal(取消正在进行的 LLM 评估)
185
- * @returns 评估报告
186
- */
187
- async evaluateTimeliness(signal) {
188
- // 可选依赖未注入时静默降级(向后兼容)
189
- if (!this.backgroundProvider || !this.index) {
190
- return {
191
- scannedCount: 0,
192
- outdatedCount: 0,
193
- demotedIds: [],
194
- skippedReason: 'backgroundProvider 或 index 未注入',
195
- };
196
- }
197
- // ── 步骤 1:加载低分记忆 ──
198
- const lowScoreMemories = [];
199
- for (const source of TIMELINESS_SOURCES) {
200
- const memories = this.index.getBySource(source);
201
- // 筛选低分记忆(score 低于阈值)
202
- lowScoreMemories.push(...memories.filter((m) => m.score < TIMELINESS_LOW_SCORE_THRESHOLD));
203
- }
204
- if (lowScoreMemories.length === 0) {
205
- return {
206
- scannedCount: 0,
207
- outdatedCount: 0,
208
- demotedIds: [],
209
- skippedReason: '无低分记忆需评估',
210
- };
211
- }
212
- // 按 score 升序排列(最低分优先评估),取前 20 条
213
- lowScoreMemories.sort((a, b) => a.score - b.score);
214
- const limited = lowScoreMemories.slice(0, TIMELINESS_EVALUATE_LIMIT);
215
- // ── 步骤 2:逐条调用 LLM 判断时效性 ──
216
- const demotedIds = [];
217
- let outdatedCount = 0;
218
- for (const memory of limited) {
219
- try {
220
- const verdict = await this.judgeTimeliness(memory, signal);
221
- if (verdict.isOutdated) {
222
- this.demoteOutdatedMemory(memory);
223
- demotedIds.push(memory.id);
224
- outdatedCount++;
225
- logger.info({ memoryId: memory.id, reason: verdict.reason }, '时效性评估:降级过时记忆');
226
- }
227
- }
228
- catch (err) {
229
- // 单条 LLM 判断失败不阻塞后续评估
230
- logger.warn({ err, memoryId: memory.id }, '时效性评估:LLM 判断失败,跳过此条');
231
- }
232
- }
233
- return {
234
- scannedCount: limited.length,
235
- outdatedCount,
236
- demotedIds,
237
- };
238
- }
239
- /**
240
- * 调用 LLM 判断单条记忆的时效性
241
- *
242
- * 使用结构化 JSON 输出(isOutdated + reason),
243
- * 参照 SessionArchiver.generateSummary 的 parseLlmJson 模式。
244
- *
245
- * LLM 失败时抛出异常(由 evaluateTimeliness 捕获并降级跳过此条)。
246
- *
247
- * @param memory 待评估的记忆
248
- * @param signal 可选的 AbortSignal
249
- * @returns LLM 判断结果
250
- */
251
- async judgeTimeliness(memory, signal) {
252
- const messages = buildTimelinessMessages(memory);
253
- let llmResponse = '';
254
- // 流式累积模式(与 TextPolishManager / SessionArchiver 一致)
255
- for await (const chunk of this.backgroundProvider.chat(messages, {
256
- maxTokens: 200,
257
- temperature: 0,
258
- timeoutMs: TIMELINESS_TIMEOUT_MS,
259
- signal,
260
- })) {
261
- if (chunk.content)
262
- llmResponse += chunk.content;
263
- }
264
- // 解析 LLM 响应(JSON 格式)
265
- const parsed = parseLlmJson(llmResponse.trim());
266
- if (!parsed) {
267
- throw new Error('LLM 时效性判断返回非法 JSON');
268
- }
269
- return {
270
- memoryId: memory.id,
271
- isOutdated: parsed.isOutdated === true,
272
- reason: typeof parsed.reason === 'string' ? parsed.reason : '(LLM 未提供理由)',
273
- };
274
- }
275
- /**
276
- * 降级过时记忆(score → TIMELINESS_OUTDATED_SCORE)
277
- *
278
- * 安全设计:
279
- * - 不物理删除,仅降低 score,保留可恢复性
280
- * - 通过 upsert 覆盖原记忆(保持 id/source/name/createdAt 不变)
281
- * - 更新 accessedAt,标记最近被处理过
282
- *
283
- * @param memory 待降级的过时记忆
284
- */
285
- demoteOutdatedMemory(memory) {
286
- const demoted = {
287
- ...memory,
288
- score: TIMELINESS_OUTDATED_SCORE,
289
- accessedAt: nowIso(),
290
- };
291
- this.index.upsert(demoted);
292
- }
293
- }
294
- // ─── L2 时效性评估 Prompt 模板(模块级函数,与 buildDedupMessages 同模式) ───
295
- /**
296
- * 构建时效性判断的 LLM 消息
297
- *
298
- * 设计要点:
299
- * - system 消息定义判断规则(过时 = 信息已失效/不再适用)
300
- * - user 消息携带记忆内容和元数据(source/score/createdAt)
301
- * - 要求输出结构化 JSON(isOutdated + reason)
302
- * - few-shot 示例降低 LLM 误判率
303
- *
304
- * @param memory 待评估的记忆
305
- * @returns system + user 消息数组
306
- */
307
- function buildTimelinessMessages(memory) {
308
- const content = memory.content.length > TIMELINESS_CONTENT_PREVIEW_LEN
309
- ? truncate(memory.content, TIMELINESS_CONTENT_PREVIEW_LEN, '…[截断]')
310
- : memory.content;
311
- return [
312
- {
313
- role: 'system',
314
- content: `你是记忆时效性评估助手。判断给定的记忆是否已过时(信息已失效或不再适用)。
315
-
316
- 判断规则:
317
- - 已过时 = 信息明确失效(如旧版本号、已废弃的 API、已变更的偏好)
318
- - 未过时 = 信息仍然有效(如通用编程原则、长期偏好、历史事件记录)
319
- - 不确定时倾向"未过时"(避免误删有效记忆)
320
-
321
- 输出 JSON 格式:
322
- {
323
- "isOutdated": true/false,
324
- "reason": "判断理由(简短说明)"
325
- }
326
-
327
- 示例:
328
- 输入: "用户使用 React 16 进行开发"(createdAt: 2020-01-01)
329
- 输出: {"isOutdated": true, "reason": "React 16 已是旧版本,当前普遍使用 React 18+"}
330
-
331
- 输入: "用户偏好函数式编程风格"
332
- 输出: {"isOutdated": false, "reason": "编程风格偏好通常是长期的"}`,
333
- },
334
- {
335
- role: 'user',
336
- content: `请判断以下记忆是否已过时:
337
-
338
- 记忆详情:
339
- - 名称:${memory.name}
340
- - 来源:${memory.source}
341
- - 当前 score:${memory.score}(低分,可能因长期未访问而衰减)
342
- - 创建时间:${memory.createdAt}
343
- - 内容:${content}
344
-
345
- 请输出 JSON 判断结果。`,
346
- },
347
- ];
348
- }
349
- //# sourceMappingURL=memoryDecayScheduler.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"memoryDecayScheduler.js","sourceRoot":"","sources":["../../../src/agent/managers/memoryDecayScheduler.ts"],"names":[],"mappings":"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"}