@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
@@ -2,12 +2,11 @@
2
2
  * Source 校验工具 — 从 memory/types.ts 提取的运行时函数
3
3
  *
4
4
  * 职责:
5
- * - inferSource:从文件路径自动推断 source 标签
6
- * - escapeLike:转义 SQL LIKE 通配符
5
+ * - escapeLike:转义 SQL LIKE 通配符(须配套 SQL 的 `ESCAPE '\'` 子句,否则转义失效)
7
6
  * - validateSource:校验 source 字段安全性和拼写
8
- * - levenshtein:简单编辑距离计算(仅用于短字符串 typo 检测)
7
+ * - levenshtein:简单编辑距离计算(输入限短字符串;本文件 :121 用于标签 typo 检测,另导出供 DedupManager 名称相似度复用)
9
8
  *
10
- * 设计原则(ADR-004):
9
+ * 设计原则:
11
10
  * - source 是开放字符串,新增来源无需改代码
12
11
  * - 校验仅做 typo 检测,不阻止写入(保持开放性)
13
12
  * - 安全边界(路径遍历、null 字节)必须拒绝
@@ -21,28 +20,12 @@ import { SOURCE_LABELS } from '../memory/types.js';
21
20
  */
22
21
  const KNOWN_SOURCES = new Set(Object.values(SOURCE_LABELS));
23
22
  /**
24
- * 从文件路径自动推断 source(目录映射 + frontmatter 覆盖)
23
+ * 转义 LIKE 通配符(`%` → `\%`、`_` → `\_`)
25
24
  *
26
- * @param filePath - 文件路径
27
- * @param frontmatterSource - frontmatter 中显式声明的 source(可选)
28
- * @returns source 字符串
29
- */
30
- export function inferSource(filePath, frontmatterSource) {
31
- // 优先:frontmatter 中显式声明的 source
32
- if (frontmatterSource)
33
- return frontmatterSource;
34
- // 回退:目录路径映射(使用路径分隔符匹配,避免 'other-personas/' 误匹配)
35
- if (/[\\/]personas[\\/]/.test(filePath))
36
- return SOURCE_LABELS.PERSONA;
37
- if (/[\\/]rules[\\/]/.test(filePath))
38
- return SOURCE_LABELS.RULE;
39
- if (/[\\/]skills[\\/]/.test(filePath))
40
- return SOURCE_LABELS.SKILL;
41
- // 默认:未知来源(SOURCE_LABELS.UNKNOWN 显式声明,避免字符串字面量分散)
42
- return SOURCE_LABELS.UNKNOWN;
43
- }
44
- /**
45
- * 转义 LIKE 通配符,防止注入
25
+ * ⚠️ 必须与 SQL 的 `ESCAPE '\'` 配套使用,即 `LIKE ? ESCAPE '\'`:
26
+ * 未写 ESCAPE 子句时反斜杠被当作普通字符,转义后的模式匹配不到任何含 `%`/`_` 的字面值,
27
+ * 查询静默返回空——比不转义更隐蔽(不转义是过度召回,漏转义是零召回)。
28
+ * 参数本身仍须用 `?` 占位绑定,转义只解决语义、不解决注入。
46
29
  *
47
30
  * @param str - 原始字符串
48
31
  * @returns 转义后的字符串
@@ -53,10 +36,11 @@ export function escapeLike(str) {
53
36
  /**
54
37
  * 截取字符串前 maxLen 字符后转义 LIKE 通配符
55
38
  *
56
- * 用于将用户输入 / insight 文本作为关键词搜索 SQLite LIKE 查询的输入。
57
- * 截断避免超长输入导致 LIKE 解析性能问题,转义防止通配符注入。
39
+ * 用于将用户输入 / round-summary 记忆文本作为关键词搜索 SQL LIKE 查询的输入。
40
+ * 截断避免超长输入导致 LIKE 解析性能问题,转义防止通配符被当作模式符。
41
+ * 同 `escapeLike`:SQL 侧必须写 `LIKE ? ESCAPE '\'`,否则转义后的模式查不到字面值。
58
42
  *
59
- * @param text - 原始文本(用户输入 / insight 内容)
43
+ * @param text - 原始文本(用户输入 / round-summary 内容)
60
44
  * @param maxLen - 最大截取长度,默认 50
61
45
  * @returns 截断 + 转义后的字符串
62
46
  */
@@ -131,7 +115,7 @@ export function validateSource(source) {
131
115
  /**
132
116
  * 简单 Levenshtein 距离计算(仅用于短字符串,不做优化)
133
117
  *
134
- * 导出供 MemoryInspector 等模块复用(语义去重场景的名称相似度判断)。
118
+ * 同文件 :121 用于标签 typo 检测;另导出供 DedupManager(语义去重场景的名称相似度)复用。
135
119
  */
136
120
  export function levenshtein(a, b) {
137
121
  if (a.length === 0)
@@ -141,13 +125,13 @@ export function levenshtein(a, b) {
141
125
  const matrix = [];
142
126
  for (let i = 0; i <= b.length; i++)
143
127
  matrix[i] = [i];
144
- // QC-17 移除非空断言:提取局部变量并 null 检查
128
+ // 移除非空断言:提取局部变量并 null 检查
145
129
  const row0 = matrix[0];
146
130
  if (row0)
147
131
  for (let j = 0; j <= a.length; j++)
148
132
  row0[j] = j;
149
133
  for (let i = 1; i <= b.length; i++) {
150
- // QC-17 移除非空断言:提取局部变量,用 ?? 0 兜底(初始化保证值存在)
134
+ // 移除非空断言:提取局部变量,用 ?? 0 兜底(初始化保证值存在)
151
135
  const rowI = matrix[i];
152
136
  const rowPrev = matrix[i - 1];
153
137
  if (!rowI || !rowPrev)
@@ -157,7 +141,7 @@ export function levenshtein(a, b) {
157
141
  rowI[j] = Math.min((rowPrev[j] ?? 0) + 1, (rowI[j - 1] ?? 0) + 1, (rowPrev[j - 1] ?? 0) + cost);
158
142
  }
159
143
  }
160
- // QC-17 移除非空断言:使用可选链 + 空值合并兜底
144
+ // 移除非空断言:使用可选链 + 空值合并兜底
161
145
  return matrix[b.length]?.[a.length] ?? 0;
162
146
  }
163
147
  //# sourceMappingURL=sourceValidation.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"sourceValidation.js","sourceRoot":"","sources":["../../src/memory/sourceValidation.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sourceValidation.js","sourceRoot":"","sources":["../../src/memory/sourceValidation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAWlD;;;;;GAKG;AACH,MAAM,aAAa,GAAgB,IAAI,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC;AAEzE;;;;;;;;;;GAUG;AACH,MAAM,UAAU,UAAU,CAAC,GAAW;IACpC,OAAO,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;AACtC,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,iBAAiB,CAAC,IAAY,EAAE,MAAM,GAAG,EAAE;IACzD,OAAO,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;AAC3C,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,cAAc,CAAC,MAAc;IAK3C,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC1C,OAAO;YACL,KAAK,EAAE,KAAK;YACZ,QAAQ,EAAE,OAAO;YACjB,OAAO,EAAE,uBAAuB,MAAM,CAAC,MAAM,CAAC,EAAE;SACjD,CAAC;IACJ,CAAC;IAED,IAAI,MAAM,CAAC,IAAI,EAAE,KAAK,MAAM,EAAE,CAAC;QAC7B,OAAO;YACL,KAAK,EAAE,KAAK;YACZ,QAAQ,EAAE,OAAO;YACjB,OAAO,EAAE,kBAAkB,MAAM,GAAG;SACrC,CAAC;IACJ,CAAC;IAED,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QAC1B,OAAO;YACL,KAAK,EAAE,KAAK;YACZ,QAAQ,EAAE,OAAO;YACjB,OAAO,EAAE,sBAAsB,MAAM,GAAG;SACzC,CAAC;IACJ,CAAC;IAED,oDAAoD;IACpD,2CAA2C;IAC3C,IAAI,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QAClD,OAAO;YACL,KAAK,EAAE,KAAK;YACZ,QAAQ,EAAE,OAAO;YACjB,OAAO,EAAE,6BAA6B,MAAM,GAAG;SAChD,CAAC;IACJ,CAAC;IAED,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QAC1B,OAAO;YACL,KAAK,EAAE,KAAK;YACZ,QAAQ,EAAE,OAAO;YACjB,OAAO,EAAE,qBAAqB;SAC/B,CAAC;IACJ,CAAC;IAED,qCAAqC;IACrC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;QAC/B,MAAM,UAAU,GAAG,CAAC,GAAG,aAAa,CAAC,CAAC,IAAI,CACxC,CAAC,KAAK,EAAE,EAAE,CAAC,WAAW,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,MAAM,KAAK,KAAK,CAC/D,CAAC;QACF,IAAI,UAAU,EAAE,CAAC;YACf,OAAO;gBACL,KAAK,EAAE,IAAI;gBACX,QAAQ,EAAE,MAAM;gBAChB,OAAO,EAAE,WAAW,MAAM,UAAU,UAAU,gBAAgB,CAAC,GAAG,aAAa,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;aAC/F,CAAC;QACJ,CAAC;IACH,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;AACzB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,WAAW,CAAC,CAAS,EAAE,CAAS;IAC9C,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,CAAC,CAAC,MAAM,CAAC;IACpC,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,CAAC,CAAC,MAAM,CAAC;IAEpC,MAAM,MAAM,GAAe,EAAE,CAAC;IAC9B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE;QAAE,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACpD,yBAAyB;IACzB,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IACvB,IAAI,IAAI;QAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE;YAAE,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IAE1D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACnC,oCAAoC;QACpC,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QACvB,MAAM,OAAO,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAC9B,IAAI,CAAC,IAAI,IAAI,CAAC,OAAO;YAAE,SAAS;QAChC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACnC,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC3C,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAChB,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,EACrB,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,EACtB,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAC7B,CAAC;QACJ,CAAC;IACH,CAAC;IAED,wBAAwB;IACxB,OAAO,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAC3C,CAAC"}
@@ -1,198 +1,92 @@
1
1
  /**
2
2
  * 记忆存储接口 — Memora 内核与具体数据库实现的解耦边界
3
3
  *
4
- * 设计目标:
5
- * - Memora 内核(agent/ + memory/ + persona/ + skill/)不依赖任何具体数据库
6
- * - 宿主项目(如泊文 Electron 主进程)持有 better-sqlite3 实例,实现此接口后注入 Agent
7
- * - 测试环境可使用 InMemoryStorage(零依赖、零 IO)
8
- * - 不注入时 Agent 内部使用 InMemoryStorage 作为 fallback(数据重启后丢失)
9
- *
10
- * 分层约束(ADR-002 v0.7):
11
- * 泊文宿主 → 持有 better-sqlite3,实现 IMemoryStorage,注入 Agent
12
- * Memora 内核 → 纯业务逻辑,仅依赖此接口(零 native 依赖)
13
- *
14
- * 方法签名保持同步语义(与 better-sqlite3 一致),
15
- * 调用方已有的 `await` 调用仍然安全(await 同步值 = 立即返回)。
16
- *
17
- * 软删除语义:
18
- * - delete(id) 为软删除,写入 deletedAt,不物理移除
19
- * - 所有查询方法(getById/getBySource/search/count/countBySource/decayScores/getAllSources)
20
- * 自动过滤 deletedAt != undefined 的记忆
21
- * - restore(id) 恢复软删除记忆,purge(id) 物理删除
22
- * - listDeleted(limit) 列出回收站,purgeExpired(before) 清理过期回收站
23
- * - 详见 ADR-004 v2.1 软删除扩展
4
+ * 内核(agent/ + memory/ + persona/ + skill/)不依赖具体数据库:宿主(如泊文 Electron
5
+ * 主进程)持有 better-sqlite3 实例并实现此接口注入 Agent;测试用 InMemoryStorage;不注入时
6
+ * Agent 内部用 InMemoryStorage 作 fallback(重启后数据丢失)。方法保持同步语义,调用方已有
7
+ * await 调用仍安全。软删除语义:delete 写入 deletedAt,查询类方法自动过滤已删除记忆,
8
+ * restore 恢复,purge 物理删,listDeleted/purgeExpired 管理回收站。
24
9
  */
25
10
  import type { Memory } from '../memory/types.js';
26
11
  /**
27
- * 记忆存储接口
12
+ * 记忆存储接口 — 所有方法同步(对齐 better-sqlite3),可后续新增 IAsyncMemoryStorage 支持异步后端。
28
13
  *
29
- * 所有方法均为同步(与 better-sqlite3 API 对齐),
30
- * 调用方已有的 `await` 调用仍然安全(await 同步值 = 立即返回)。
31
- * 未来如需支持异步存储后端(如 IndexedDB),可新增 IAsyncMemoryStorage 接口。
14
+ * ⚠️ 契约隐含假设(宿主实现须知):同步语义要求单次调用低延迟。JSON 文件落地实现(如 vscode 宿主
15
+ * workspaceStorage)在记忆量增长时,upsert 等写路径会触发全量 `JSON.stringify` 重写,
16
+ * 1 万条规模即达 MB 级单次同步 I/O,会阻塞事件循环。因此:**生产由宿主注入持久化实现**——当前
17
+ * vscode 宿主为 JSON 文件(WorkspaceStorage,小规模够用);记忆量增长时建议宿主评估更优存储
18
+ * (如 better-sqlite3,同步语义与本接口对齐);InMemoryStorage 仅用于测试与未注入时 fallback。
32
19
  */
33
20
  export interface IMemoryStorage {
34
21
  /**
35
- * 插入或更新记忆
36
- *
37
- * source 字段为开放字符串,无校验限制
22
+ * 插入或更新记忆;source 为开放字符串可自定义,但写入须经 validateSource 统一校验
23
+ *(内核 inMemoryStorage 与宿主 workspaceStorage 均接入 block/warn 分级拦截)。
24
+ * 契约:整对象覆盖、无 CAS 乐观锁——单 Agent 设计假设;
25
+ * 多 Agent 并发写同会话需扩展版本字段/条件更新,内核当前不承诺并发一致性。
38
26
  */
39
27
  upsert(memory: Memory): void;
40
28
  /**
41
- * 删除记忆(软删除)
42
- *
43
- * 语义为"移入回收站":写入 deletedAt 时间戳,不物理移除。
44
- * - 召回/搜索/列表/统计自动过滤已软删除的记忆
45
- * - 可通过 restore(id) 恢复
46
- * - 回收站保留期过后由 purgeExpired(before) 物理清理
47
- *
48
- * 对已软删除的记忆调用为 no-op。
49
- *
50
- * @param id - 记忆 ID
29
+ * 软删除(移入回收站):写入 deletedAt,不物理移除;对已软删除的记忆为 no-op。
30
+ * 召回/搜索/列表/统计自动过滤,可 restore 恢复,回收站保留期满由 purgeExpired 物理清理
51
31
  */
52
32
  delete(id: string): void;
53
- /**
54
- * 恢复软删除的记忆
55
- *
56
- * 将 deletedAt 字段清除,使记忆重新出现在召回/搜索/列表中。
57
- * 对活跃记忆调用为 no-op。
58
- *
59
- * @param id - 记忆 ID
60
- */
33
+ /** 恢复软删除记忆(清除 deletedAt);对活跃记忆为 no-op */
61
34
  restore(id: string): void;
62
- /**
63
- * 物理删除记忆
64
- *
65
- * 从存储中彻底移除,不可恢复。
66
- * 用于回收站的"彻底删除"操作,或测试环境的强制清理。
67
- *
68
- * @param id - 记忆 ID
69
- */
35
+ /** 物理删除,不可恢复;用于回收站彻底删除或测试强制清理 */
70
36
  purge(id: string): void;
71
37
  /**
72
- * 列出回收站中的软删除记忆
73
- *
74
- * 按 deletedAt 降序(最近删除的在前),便于回收站 UI 展示。
75
- *
76
- * @param limit - 返回数量上限。`limit <= 0` 或 `undefined` 表示不设上限(返回全部);
77
- * 正整数 N 表示返回最近 N 条。默认 undefined(全部)。
38
+ * 列出回收站软删除记忆,按 deletedAt 降序(最近删除在前)
39
+ * @param limit - 上限;<=0 或 undefined 表示全部,正整数 N 表示最近 N 条
78
40
  * @returns 软删除记忆列表(浅拷贝)
79
41
  */
80
42
  listDeleted(limit?: number): Memory[];
81
43
  /**
82
- * 按 ID 获取单条软删除记忆
83
- *
84
- * 用于 restore/purge 操作前的存在性校验,避免 listDeleted() 默认 50 上限
85
- * 导致回收站超量时第 51 条之后的记忆无法 restore/purge。
86
- *
87
- * @param id - 记忆 ID
44
+ * 按 ID 获取单条软删除记忆;用于 restore/purge 前的存在性校验,
45
+ * 单条精确查询,免去拉取整个回收站列表做 O(n) 扫描
88
46
  * @returns 软删除记忆(浅拷贝),不存在或未软删除时返回 null
89
47
  */
90
48
  getDeletedById(id: string): Memory | null;
91
49
  /**
92
- * 清理过期的软删除记忆
93
- *
94
- * 物理删除所有 deletedAt 早于 before 的记忆。
95
- * 由宿主项目的定时器调用(默认 30 天保留期)。
96
- *
97
- * @param before - 时间阈值,deletedAt 早于此值的记忆将被物理删除
50
+ * 物理删除所有 deletedAt 早于 before 的记忆;由宿主治理入口显式调用
51
+ * (命令 memora.cleanupMemories / 设置面板「清理过期」)。内核不持定时器,
52
+ * 回收站保留期策略(天数)归宿主决定
98
53
  * @returns 被清理的记忆数量
99
54
  */
100
55
  purgeExpired(before: Date): number;
101
- /**
102
- * 按 ID 获取单条活跃记忆
103
- *
104
- * 已软删除的记忆(deletedAt != undefined)返回 null。
105
- * 如需获取软删除记忆,请使用 listDeleted()。
106
- */
56
+ /** 按 ID 获取单条活跃记忆;已软删除的返回 null(软删除记忆用 listDeleted) */
107
57
  getById(id: string): Memory | null;
108
- /**
109
- * 按来源标签获取活跃记忆(自动过滤已软删除的)
110
- *
111
- * @param source - 来源标签(如 'persona'、'rule'、'insight')
112
- * @returns 该来源的所有活跃记忆
113
- */
58
+ /** 按来源标签获取活跃记忆(自动过滤已软删除的) */
114
59
  getBySource(source: string): Memory[];
115
60
  /**
116
- * 关键词搜索活跃记忆(自动过滤已软删除的)
117
- *
118
- * 搜索逻辑(宿主实现):
119
- * 1. 从 query 中提取关键词(推荐使用 Intl.Segmenter 分词 + 停用词过滤)
120
- * 2. 用 LIKE 关键词匹配 content 和 name 字段
121
- * 3. 按 score 降序排列
122
- * 4. 返回 top N 结果
123
- *
124
- * InMemoryStorage 使用 segmentText() 规范分词 + includes 匹配(与 SqliteStorage 行为一致)。
125
- *
126
- * @param query - 搜索查询文本
127
- * @param limit - 返回数量上限(默认 10)
128
- * @returns 匹配的活跃记忆列表
61
+ * 关键词搜索活跃记忆。宿主实现:Intl.Segmenter 分词 + 停用词过滤,
62
+ * LIKE 匹配 content/name,按 accessedAt 降序(最近使用优先)返回 top N。
63
+ * SQL 后端配合 `escapeLike()` 转义后,必须写成 `LIKE ? ESCAPE '\'`——
64
+ * 缺 ESCAPE 子句则转义后的模式匹配不到含 `%`/`_` 的字面值,查询静默返回空。
65
+ * InMemoryStorage 用 segmentText() 分词 + includes 匹配(无 SQL 转义语义)
66
+ * @param limit - 返回上限(默认 10)
129
67
  */
130
68
  search(query: string, limit?: number): Memory[];
131
69
  /**
132
- * 统计活跃记忆总数(不含已软删除的)
133
- *
134
- * 比 search('', largeLimit).length 更高效,避免全量加载数据。
135
- * 宿主实现应使用 COUNT(*) WHERE deleted_at IS NULL。
70
+ * 统计活跃记忆总数;比 search('', largeLimit).length 高效,宿主用 COUNT(*) WHERE deleted_at IS NULL
136
71
  */
137
72
  count(): number;
138
- /**
139
- * 按来源标签统计活跃记忆数量(不含已软删除的)
140
- *
141
- * 比 getBySource(source).length 更高效,避免全量加载对象。
142
- * 宿主实现应使用 COUNT(*) WHERE source = ? AND deleted_at IS NULL。
143
- */
73
+ /** 按来源统计活跃记忆数量(高效版,宿主用 COUNT(*) GROUP BY) */
144
74
  countBySource(source: string): number;
145
75
  /**
146
- * 衰减指定来源的活跃记忆 score(自然遗忘机制,跳过已软删除的)
147
- *
148
- * 长时间未访问的记忆 score 逐渐降低。
149
- * 宿主实现(SqliteStorage)可用一条 SQL UPDATE 批量完成,
150
- * 避免内核逐条全量加载。
151
- *
152
- * @param sources - 要衰减的来源标签列表(如 ['insight', 'profile'])
153
- * @param now - 当前时间
154
- * @returns 受影响的记忆数量
155
- */
156
- decayScores(sources: string[], now: Date): number;
157
- /**
158
- * 原子增加记忆 score(MIND2-L3:消除 boost 路径 read-modify-write 并发冲突)
159
- *
160
- * score = clamp(score + delta, DECAY_FLOOR, SCORE_CEILING),同时更新 accessedAt 为 now。
161
- * 与 decayScores 同模式:宿主实现用一条 SQL UPDATE 完成原子操作,避免读回内存。
162
- *
163
- * @param id 记忆 ID
164
- * @param delta 增量(正数 boost,负数可降级)
165
- * @param now 当前时间(ISO 8601,用于更新 accessedAt)
166
- * @returns 记忆不存在/软删除时返回 false,成功返回 true
167
- */
168
- incrementScore(id: string, delta: number, now: string): boolean;
169
- /**
170
- * 原子设置记忆 score 绝对值(MIND2-L3:消除 demote 路径 spread 旧快照覆盖其他字段)
171
- *
172
- * 直接设置 score = newScore,不 clamp(调用方负责传合法值)。同时更新 accessedAt 为 now。
173
- * 用于 demoteMemory / demoteOutdatedMemory 等设绝对值场景,避免 spread 旧快照覆盖 content 等字段。
174
- *
175
- * @param id 记忆 ID
176
- * @param newScore 新 score 绝对值
177
- * @param now 当前时间(ISO 8601,用于更新 accessedAt)
76
+ * 刷新记忆 accessedAt(使用轨迹唯一写位)。
77
+ * 召回命中 / 工具命中经此「被想起即刷新」;toSetting 不 +score/delta,无 clamp 语义。
178
78
  * @returns 记忆不存在/软删除时返回 false,成功返回 true
179
79
  */
180
- setScore(id: string, newScore: number, now: string): boolean;
80
+ touch(id: string, now: string): boolean;
181
81
  /**
182
- * 获取所有 source 标签及其活跃记忆数量(不含已软删除的)
183
- *
184
- * 优化:替代 stats()/sourceHealth() 中的全量 search + 逐条遍历,
185
- * 宿主实现应使用 SQL `SELECT source, COUNT(*) FROM memories WHERE deleted_at IS NULL GROUP BY source`,
186
- * InMemoryStorage 维护增量更新的 source→count 缓存。
187
- *
188
- * @returns source 标签到数量的映射(如 { persona: 3, insight: 12, ... })
82
+ * 获取所有 source 标签及活跃记忆数量;替代 stats()/sourceHealth() 的全量遍历,
83
+ * 宿主用 SQL GROUP BY source,InMemoryStorage 维护增量 source→count 缓存
189
84
  */
190
85
  getAllSources(): Map<string, number>;
191
86
  /**
192
- * 关闭存储连接(可选)
193
- *
194
- * 宿主注入的实现可能不需要关闭(如共享数据库连接),
195
- * 所以此方法是可选的。
87
+ * 可选:终结操作,调用后本实例不得再读写。落盘实现断开连接但数据保留;
88
+ * InMemoryStorage 则丢弃全部记忆(内存即存储介质,不释放就是泄漏)。
89
+ * 不可当作可逆的「暂停」——会话暂停/检查点恢复不得触碰,否则连带清空资源层记忆
196
90
  */
197
91
  close?(): void;
198
92
  }
@@ -1 +1 @@
1
- {"version":3,"file":"storageInterface.d.ts","sourceRoot":"","sources":["../../src/memory/storageInterface.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAEhD;;;;;;GAMG;AACH,MAAM,WAAW,cAAc;IAC7B;;;;OAIG;IACH,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAE7B;;;;;;;;;;;OAWG;IACH,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IAEzB;;;;;;;OAOG;IACH,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IAE1B;;;;;;;OAOG;IACH,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IAExB;;;;;;;;OAQG;IACH,WAAW,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAEtC;;;;;;;;OAQG;IACH,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IAE1C;;;;;;;;OAQG;IACH,YAAY,CAAC,MAAM,EAAE,IAAI,GAAG,MAAM,CAAC;IAEnC;;;;;OAKG;IACH,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IAEnC;;;;;OAKG;IACH,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAEtC;;;;;;;;;;;;;;OAcG;IACH,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAEhD;;;;;OAKG;IACH,KAAK,IAAI,MAAM,CAAC;IAEhB;;;;;OAKG;IACH,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;IAEtC;;;;;;;;;;OAUG;IACH,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,IAAI,GAAG,MAAM,CAAC;IAElD;;;;;;;;;;OAUG;IACH,cAAc,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;IAEhE;;;;;;;;;;OAUG;IACH,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;IAE7D;;;;;;;;OAQG;IACH,aAAa,IAAI,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAErC;;;;;OAKG;IACH,KAAK,CAAC,IAAI,IAAI,CAAC;CAChB"}
1
+ {"version":3,"file":"storageInterface.d.ts","sourceRoot":"","sources":["../../src/memory/storageInterface.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAEhD;;;;;;;;GAQG;AACH,MAAM,WAAW,cAAc;IAC7B;;;;;OAKG;IACH,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAE7B;;;OAGG;IACH,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IAEzB,yCAAyC;IACzC,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IAE1B,iCAAiC;IACjC,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IAExB;;;;OAIG;IACH,WAAW,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAEtC;;;;OAIG;IACH,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IAE1C;;;;;OAKG;IACH,YAAY,CAAC,MAAM,EAAE,IAAI,GAAG,MAAM,CAAC;IAEnC,qDAAqD;IACrD,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IAEnC,6BAA6B;IAC7B,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAEtC;;;;;;;OAOG;IACH,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAEhD;;OAEG;IACH,KAAK,IAAI,MAAM,CAAC;IAEhB,6CAA6C;IAC7C,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;IAEtC;;;;OAIG;IACH,KAAK,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;IAExC;;;OAGG;IACH,aAAa,IAAI,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAErC;;;;OAIG;IACH,KAAK,CAAC,IAAI,IAAI,CAAC;CAChB"}
@@ -1,18 +1,18 @@
1
1
  /**
2
- * 记忆类型定义 — 基元驱动模型
3
- *
4
- * 设计哲学:万物皆是记忆,用 source 开放字符串替代封闭枚举
5
- * 详见 ADR-004 · 记忆统一模型
2
+ * 记忆类型定义 — 基元驱动模型:记忆即轮次摘要(memory-as-summary),source 以开放字符串承载溯源标签(替代封闭枚举)
6
3
  */
7
4
  /**
8
- * 记忆基元接口
9
- *
10
- * 8 个核心字段(v2.1 软删除扩展),无封闭枚举
11
- * - 7 个基础字段:id/content/source/name/createdAt/accessedAt/score
12
- * - 1 个可选字段:deletedAt(软删除时间,undefined 表示活跃记忆)
5
+ * 消息角色:统一 agent/types.ts 的 ChatMessage 与 sessionStore.ts 的 SessionMessage
6
+ * 含 tool 角色,用于 LLM 工具调用消息的持久化
7
+ */
8
+ export type MessageRole = 'system' | 'user' | 'assistant' | 'tool';
9
+ /**
10
+ * 记忆基元接口:id/content/source/name/createdAt/accessedAt 6 个基础字段
11
+ * + deletedAt 可选(软删除)
12
+ * 检索为纯关键词单通道,无持久化排序分字段,使用轨迹唯一事实源为 accessedAt
13
13
  */
14
14
  export interface Memory {
15
- /** 唯一标识(source:name,如 'rule:core'、'insight:1718083200000') */
15
+ /** 唯一标识,格式 source:name,如 'rule:core'、'round-summary:session:r1' */
16
16
  id: string;
17
17
  /** 记忆内容(Markdown 文本) */
18
18
  content: string;
@@ -24,182 +24,83 @@ export interface Memory {
24
24
  createdAt: string;
25
25
  /** 最后访问时间(每次召回时刷新) */
26
26
  accessedAt: string;
27
- /** 权重(0-1,召回时用于排序) */
28
- score: number;
29
- /** 软删除时间(ISO 8601,可选;非 undefined 表示已软删除,回收站保留 30 天后自动物理清理) */
27
+ /** 软删除时间;非 undefined 表示已删除,回收站保留 30 天后物理清理 */
30
28
  deletedAt?: string;
31
29
  /**
32
- * 可选:配置文件 frontmatter 的额外元数据
33
- *
34
- * 仅在写入配置文件时使用(FileStore.write 合并到 frontmatter)。
35
- * SQLite index 不存储此字段(运行时检索不需要)。
36
- * 典型场景:persona 的 keywords/description,供 PersonaManager 加载时解析。
30
+ * 额外的键值对元数据(可选透传字段,内核侧无生产写入方)。
31
+ * ⚠️ 不承载 round-summary 的溯源/分类字段——summaryType/sessionName/roundId 已提升为顶层
32
+ * 持久化字段(metadata 不在存储契约的保证范围内,而分层分轨/会话优先须跨会话生效,见 supersededBy 同款先例)。
37
33
  */
38
34
  metadata?: Record<string, string>;
35
+ /**
36
+ * round-summary 摘要类型(preference/fact/decision/intent/general)。
37
+ * 顶层持久化字段:metadata 不在存储契约的保证范围内,
38
+ * 而分轨召回须跨会话可靠读取,故提升为顶层列。仅 round-summary 有意义。
39
+ */
40
+ summaryType?: SummaryType;
41
+ /** round-summary 归属会话标识(${date}-${session})。顶层持久化字段,供会话内/外分层召回。仅 round-summary 有意义 */
42
+ sessionName?: string;
43
+ /** round-summary 归属轮次标识。顶层持久化字段,供互斥轮次排除与 traceSummary 回溯。仅 round-summary 有意义 */
44
+ roundId?: string;
45
+ /** 摘要是否已被人工修改,可能与原始对话不一致;仅 round-summary 有意义 */
46
+ isModified?: boolean;
47
+ /**
48
+ * 写路径取代标记:非 undefined 表示已被更新的摘要覆盖,召回时确定性过滤;
49
+ * 值为取代它的新摘要 id,本条保留以便 traceSummary 回溯。设计为顶层持久化字段而非
50
+ * metadata(宿主不持久化 metadata,而 superseded 须跨会话生效)
51
+ */
52
+ supersededBy?: string;
39
53
  }
40
- /** 默认记忆权重(parseMemory 的默认值行为) */
41
- export declare const DEFAULT_MEMORY_SCORE = 0.5;
42
54
  /**
43
- * 记忆解析器 — 验证原始数据并转换为 Memory 类型
55
+ * round-summary 摘要类型取值集合(单一真源:运行时校验与类型声明均从此派生)。
56
+ * 新增取值只改此处——若类型与运行时校验集双写,类型扩展会静默漏掉校验集,
57
+ * 导致新类型摘要被兜底为 'general'(行为漂移无编译报错)。
58
+ */
59
+ export declare const SUMMARY_TYPES: readonly ["preference", "fact", "decision", "intent", "general"];
60
+ /**
61
+ * round-summary 记忆的摘要类型,摘要生成时由 LLM 自动判断,无独立分类器
62
+ */
63
+ export type SummaryType = (typeof SUMMARY_TYPES)[number];
64
+ /**
65
+ * 记忆解析器 — 验证原始数据并转换为 Memory
66
+ * 校验:非空对象、字段类型、ISO 8601 日期
44
67
  *
45
- * 提供与原 MemorySchema.parse() 等效的运行时验证能力:
46
- * - 非空对象检查
47
- * - 字段类型验证(string/number)
48
- * - ISO 8601 日期格式验证
49
- * - score 范围检查(0-1)
50
- * - 默认值填充(score = 0.5)
68
+ * **白名单构造**:返回值只含 Memory 接口声明的字段,源对象上的任何未知字段(如旧档残留的
69
+ * `score`)一律剥离——宿主读旧档经此函数即完成数据层清洗,无需另写迁移脚本。
51
70
  *
52
71
  * @param raw - 原始数据(通常来自 JSON 解析或数据库查询)
53
- * @returns 验证通过的 Memory 对象
72
+ * @returns 验证通过的 Memory 对象(仅白名单字段,未知字段已剥离)
54
73
  * @throws Error 当数据不符合 Memory 接口定义时
55
74
  */
56
75
  export declare function parseMemory(raw: unknown): Memory;
57
76
  /**
58
- * 兼容性别名 — 保持原有测试代码 (MemorySchema.parse(...)) 无需修改
59
- */
60
- export declare const MemorySchema: {
61
- parse: typeof parseMemory;
62
- };
63
- /**
64
- * 泊文当前使用的 source 标签约定
77
+ * 当前使用的 source 标签约定;source 是开放字符串,新增来源无需改代码,存储时指定即可
65
78
  *
66
- * 注意:source 是开放字符串,新增来源无需改代码
67
- * 只需在存储时指定 source 字符串即可
79
+ * persona / rule / skill / work-projection 为残留兼容标签:对应内容不归记忆库管理
80
+ * (角色包内容由角色包管理,作品投影落项目目录 projections/),标签保留用于
81
+ * typo 检测(sourceValidation.ts:KNOWN_SOURCES 集合)与存量行/外部导入识别;
82
+ * 它们不出现在 GOVERNANCE_SOURCES 中(治理系统只治理实际写入记忆库的 source)。
68
83
  */
69
84
  export declare const SOURCE_LABELS: {
70
- /** 角色人格(agent-config/personas/*.md) */
85
+ /** 角色人格(角色包 content/persona.md)— 残留兼容标签,不写入记忆库 */
71
86
  readonly PERSONA: "persona";
72
- /** 创作规则(agent-config/rules/*.md + .memora/rules/*.md) */
87
+ /** 创作规则(角色包 content/rules.md + .memora/rules/*.md)— 残留兼容标签,不写入记忆库 */
73
88
  readonly RULE: "rule";
74
- /** 技能定义(agent-config/skills/*.md) */
89
+ /** 技能定义(角色包 skills/ 目录)— 残留兼容标签,不写入记忆库 */
75
90
  readonly SKILL: "skill";
76
- /** 对话洞察(每轮问答结束后 LLM 提取) */
77
- readonly INSIGHT: "insight";
78
- /** 用户画像(每轮问答中 LLM 实时提取) */
79
- readonly PROFILE: "profile";
80
- /** 作品投影(Agent 读取用户作品时生成的概要) */
91
+ /** 作品投影(读取用户作品时生成的概要)— 残留兼容标签,作品落项目目录 projections/ */
81
92
  readonly WORK_PROJECTION: "work-projection";
82
- /** 内容护栏规则(configDir/rules/guardrails/ 下的规则文件) */
83
- readonly GUARDRAIL: "guardrail";
84
- /** 未知来源(inferSource 兜底值,文件路径未匹配已知目录时的默认标签) */
93
+ /** 轮次摘要(每轮对话后生成的溯源式摘要,记忆即摘要) */
94
+ readonly ROUND_SUMMARY: "round-summary";
95
+ /** 未知来源(未被已知标签覆盖时的兜底值) */
85
96
  readonly UNKNOWN: "unknown";
86
97
  };
87
98
  /**
88
- * 记忆关系基元 — 独立于 Memory 7 字段的侧车数据结构
89
- *
90
- * 设计原则(ADR-014):
91
- * - 不侵入 Memory 类型,与 Memory 平行存在
92
- * - 关系类型是开放字符串(非枚举),宿主可自由扩展
93
- * - 存储有向(sourceId → targetId),查询时按 direction 参数过滤
94
- *
95
- * 预设关系类型建议值(非强制):
96
- * - 'contradicts':矛盾(双向对称)
97
- * - 'supports':支持(有向)
98
- * - 'follows':时间先后(有向)
99
- * - 'refines':细化/演化(有向)
100
- * - 'caused':因果(有向)
101
- * - 'related':泛相关(双向对称)
99
+ * round-summary 记忆的规范 ID:`{source}:{sessionName}:{roundId}`。
100
+ * 读写/过滤侧一律经本函数构造,禁止散落 `round-summary:` 字面量——
101
+ * 溯源标签变更只需同步 SOURCE_LABELS,此处自动跟随。
102
102
  */
103
- export interface MemoryRelation {
104
- /** 关系起点(Memory.id) */
105
- sourceId: string;
106
- /** 关系终点(Memory.id) */
107
- targetId: string;
108
- /** 关系类型(开放字符串,非枚举) */
109
- type: string;
110
- /** 关系强度 0-1(LLM 四档:0.0/0.3/0.7/1.0,代码默认 0.5 兜底) */
111
- weight: number;
112
- /** 创建时间(ISO 8601) */
113
- createdAt: string;
114
- }
115
- /**
116
- * 关系查询方向
117
- * - 'outgoing':只查 sourceId = memoryId 的关系(冲突检测用)
118
- * - 'incoming':只查 targetId = memoryId 的关系
119
- * - 'both':合并两个方向并去重(可视化/召回增强用,默认)
120
- */
121
- export type RelationDirection = 'outgoing' | 'incoming' | 'both';
122
- /**
123
- * weight 四档离散值常量(LLM 输出约束)
124
- *
125
- * 设计理由(ADR-014 §4):
126
- * - 离散值比连续浮点稳定,LLM 输出可预测
127
- * - 0.5 兜底避免 LLM 失败时关系数据缺失
128
- */
129
- export declare const RELATION_WEIGHTS: {
130
- /** 几乎无关(LLM 明确判断无关系) */
131
- readonly NONE: 0;
132
- /** 弱相关(关系存在但强度低) */
133
- readonly WEAK: 0.3;
134
- /** 未判断(代码默认兜底,LLM 失败或未输出时) */
135
- readonly UNDEFINED: 0.5;
136
- /** 强相关(关系明确且强度高) */
137
- readonly STRONG: 0.7;
138
- /** 确定关系(矛盾/等价等强关系) */
139
- readonly CERTAIN: 1;
140
- };
141
- /**
142
- * 预设关系类型建议值(非枚举,仅作约定)
143
- *
144
- * 注意:type 是开放字符串,新增关系类型无需改代码
145
- * 只需在存储时指定 type 字符串即可
146
- */
147
- export declare const RELATION_TYPES: {
148
- /** 矛盾(双向对称) */
149
- readonly CONTRADICTS: "contradicts";
150
- /** 支持(有向) */
151
- readonly SUPPORTS: "supports";
152
- /** 时间先后(有向) */
153
- readonly FOLLOWS: "follows";
154
- /** 细化/演化(有向) */
155
- readonly REFINES: "refines";
156
- /** 因果(有向) */
157
- readonly CAUSED: "caused";
158
- /** 泛相关(双向对称) */
159
- readonly RELATED: "related";
160
- };
161
- /**
162
- * 关系路径节点 — 路径追溯查询结果
163
- *
164
- * 独立于 Memory 和 MemoryRelation,仅作为查询结果投影类型存在。
165
- * 不侵入 Memory 7 字段基元(ADR-004),不扩展 MemoryRelation 侧车结构(ADR-014)。
166
- *
167
- * 用于宿主 UI 展示记忆的演化脉络(如 insight-a → refines → insight-b → follows → insight-c)
168
- */
169
- export interface RelationPath {
170
- /** 当前节点记忆 ID */
171
- memoryId: string;
172
- /** 当前节点记忆名称(用于 UI 展示) */
173
- memoryName: string;
174
- /** 当前节点记忆来源标签(用于 UI 颜色区分) */
175
- memorySource: string;
176
- /** 与上一节点的关系类型(起点节点此字段为 null) */
177
- relationType: string | null;
178
- /** 与上一节点的关系权重(起点节点此字段为 null) */
179
- relationWeight: number | null;
180
- /** 距离起点的步数(起点为 0,每跳一步 +1) */
181
- depth: number;
182
- }
183
- /**
184
- * 关系邻居 — 直接关联的记忆查询结果
185
- *
186
- * 独立于 Memory 和 MemoryRelation,仅作为查询结果投影类型存在。
187
- * 用于宿主 UI 展示某记忆的直接关联记忆(如冲突记忆、支持记忆、后续记忆等)
188
- */
189
- export interface RelationNeighbor {
190
- /** 邻居记忆 ID */
191
- memoryId: string;
192
- /** 邻居记忆名称 */
193
- memoryName: string;
194
- /** 邻居记忆来源标签 */
195
- memorySource: string;
196
- /** 邻居记忆权重(0-1,用于 UI 节点大小) */
197
- memoryScore: number;
198
- /** 关系类型 */
199
- relationType: string;
200
- /** 关系权重 */
201
- relationWeight: number;
202
- /** 关系方向:'incoming'(邻居是 sourceId)或 'outgoing'(邻居是 targetId) */
203
- direction: 'incoming' | 'outgoing';
204
- }
103
+ export declare function roundSummaryMemoryId(sessionName: string, roundId: string): string;
104
+ /** 会话级前缀(定位某会话的全部摘要记忆),与 roundSummaryMemoryId 同源 */
105
+ export declare function roundSummarySessionPrefix(sessionName: string): string;
205
106
  //# sourceMappingURL=types.d.ts.map