@zooique/memora 2.0.3 → 3.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (588) hide show
  1. package/CHANGELOG.md +1037 -0
  2. package/README.en.md +305 -272
  3. package/README.md +303 -260
  4. package/config.example.json +43 -0
  5. package/dist/agent/agent.d.ts +376 -408
  6. package/dist/agent/agent.d.ts.map +1 -1
  7. package/dist/agent/agent.js +1166 -926
  8. package/dist/agent/agent.js.map +1 -1
  9. package/dist/agent/assembler.d.ts +105 -43
  10. package/dist/agent/assembler.d.ts.map +1 -1
  11. package/dist/agent/assembler.js +543 -75
  12. package/dist/agent/assembler.js.map +1 -1
  13. package/dist/agent/budget.d.ts +131 -0
  14. package/dist/agent/budget.d.ts.map +1 -0
  15. package/dist/agent/budget.js +128 -0
  16. package/dist/agent/budget.js.map +1 -0
  17. package/dist/agent/builtinToolHandlers.d.ts +225 -38
  18. package/dist/agent/builtinToolHandlers.d.ts.map +1 -1
  19. package/dist/agent/builtinToolHandlers.js +748 -132
  20. package/dist/agent/builtinToolHandlers.js.map +1 -1
  21. package/dist/agent/builtinTools.d.ts +198 -7
  22. package/dist/agent/builtinTools.d.ts.map +1 -1
  23. package/dist/agent/builtinTools.js +646 -14
  24. package/dist/agent/builtinTools.js.map +1 -1
  25. package/dist/agent/compaction.d.ts +93 -0
  26. package/dist/agent/compaction.d.ts.map +1 -0
  27. package/dist/agent/compaction.js +192 -0
  28. package/dist/agent/compaction.js.map +1 -0
  29. package/dist/agent/constants.d.ts +137 -20
  30. package/dist/agent/constants.d.ts.map +1 -1
  31. package/dist/agent/constants.js +152 -20
  32. package/dist/agent/constants.js.map +1 -1
  33. package/dist/agent/contextManager.d.ts +119 -77
  34. package/dist/agent/contextManager.d.ts.map +1 -1
  35. package/dist/agent/contextManager.js +192 -135
  36. package/dist/agent/contextManager.js.map +1 -1
  37. package/dist/agent/contextPreparer.d.ts +78 -0
  38. package/dist/agent/contextPreparer.d.ts.map +1 -0
  39. package/dist/agent/contextPreparer.js +128 -0
  40. package/dist/agent/contextPreparer.js.map +1 -0
  41. package/dist/agent/duplicateInterceptor.d.ts +67 -0
  42. package/dist/agent/duplicateInterceptor.d.ts.map +1 -0
  43. package/dist/agent/duplicateInterceptor.js +82 -0
  44. package/dist/agent/duplicateInterceptor.js.map +1 -0
  45. package/dist/agent/guardRail.d.ts +166 -0
  46. package/dist/agent/guardRail.d.ts.map +1 -0
  47. package/dist/agent/guardRail.js +333 -0
  48. package/dist/agent/guardRail.js.map +1 -0
  49. package/dist/agent/loop.d.ts +716 -295
  50. package/dist/agent/loop.d.ts.map +1 -1
  51. package/dist/agent/loop.js +2178 -664
  52. package/dist/agent/loop.js.map +1 -1
  53. package/dist/agent/managers/archiveCoordinator.d.ts +14 -171
  54. package/dist/agent/managers/archiveCoordinator.d.ts.map +1 -1
  55. package/dist/agent/managers/archiveCoordinator.js +19 -287
  56. package/dist/agent/managers/archiveCoordinator.js.map +1 -1
  57. package/dist/agent/managers/chatLockManager.d.ts +20 -88
  58. package/dist/agent/managers/chatLockManager.d.ts.map +1 -1
  59. package/dist/agent/managers/chatLockManager.js +31 -103
  60. package/dist/agent/managers/chatLockManager.js.map +1 -1
  61. package/dist/agent/managers/dedupManager.d.ts +31 -115
  62. package/dist/agent/managers/dedupManager.d.ts.map +1 -1
  63. package/dist/agent/managers/dedupManager.js +48 -136
  64. package/dist/agent/managers/dedupManager.js.map +1 -1
  65. package/dist/agent/managers/goalConsistencyChecker.d.ts +42 -0
  66. package/dist/agent/managers/goalConsistencyChecker.d.ts.map +1 -0
  67. package/dist/agent/managers/goalConsistencyChecker.js +178 -0
  68. package/dist/agent/managers/goalConsistencyChecker.js.map +1 -0
  69. package/dist/agent/managers/llmCaller.d.ts +124 -0
  70. package/dist/agent/managers/llmCaller.d.ts.map +1 -0
  71. package/dist/agent/managers/llmCaller.js +417 -0
  72. package/dist/agent/managers/llmCaller.js.map +1 -0
  73. package/dist/agent/managers/llmJudgeHelper.d.ts +8 -25
  74. package/dist/agent/managers/llmJudgeHelper.d.ts.map +1 -1
  75. package/dist/agent/managers/llmJudgeHelper.js +7 -24
  76. package/dist/agent/managers/llmJudgeHelper.js.map +1 -1
  77. package/dist/agent/managers/loopMetrics.d.ts +58 -0
  78. package/dist/agent/managers/loopMetrics.d.ts.map +1 -0
  79. package/dist/agent/managers/loopMetrics.js +68 -0
  80. package/dist/agent/managers/loopMetrics.js.map +1 -0
  81. package/dist/agent/managers/memoryAdvisor.d.ts +27 -120
  82. package/dist/agent/managers/memoryAdvisor.d.ts.map +1 -1
  83. package/dist/agent/managers/memoryAdvisor.js +85 -207
  84. package/dist/agent/managers/memoryAdvisor.js.map +1 -1
  85. package/dist/agent/managers/memoryGovernance.d.ts +10 -42
  86. package/dist/agent/managers/memoryGovernance.d.ts.map +1 -1
  87. package/dist/agent/managers/memoryGovernance.js +19 -36
  88. package/dist/agent/managers/memoryGovernance.js.map +1 -1
  89. package/dist/agent/managers/memoryInspector.d.ts +59 -268
  90. package/dist/agent/managers/memoryInspector.d.ts.map +1 -1
  91. package/dist/agent/managers/memoryInspector.js +91 -442
  92. package/dist/agent/managers/memoryInspector.js.map +1 -1
  93. package/dist/agent/managers/roundSummaryGenerator.d.ts +56 -0
  94. package/dist/agent/managers/roundSummaryGenerator.d.ts.map +1 -0
  95. package/dist/agent/managers/roundSummaryGenerator.js +201 -0
  96. package/dist/agent/managers/roundSummaryGenerator.js.map +1 -0
  97. package/dist/agent/managers/sessionArchiver.d.ts +19 -68
  98. package/dist/agent/managers/sessionArchiver.d.ts.map +1 -1
  99. package/dist/agent/managers/sessionArchiver.js +76 -147
  100. package/dist/agent/managers/sessionArchiver.js.map +1 -1
  101. package/dist/agent/managers/sessionManager.d.ts +286 -57
  102. package/dist/agent/managers/sessionManager.d.ts.map +1 -1
  103. package/dist/agent/managers/sessionManager.js +846 -85
  104. package/dist/agent/managers/sessionManager.js.map +1 -1
  105. package/dist/agent/managers/sessionNamer.d.ts +35 -0
  106. package/dist/agent/managers/sessionNamer.d.ts.map +1 -0
  107. package/dist/agent/managers/sessionNamer.js +104 -0
  108. package/dist/agent/managers/sessionNamer.js.map +1 -0
  109. package/dist/agent/managers/streamAccumulator.d.ts +8 -33
  110. package/dist/agent/managers/streamAccumulator.d.ts.map +1 -1
  111. package/dist/agent/managers/streamAccumulator.js +4 -29
  112. package/dist/agent/managers/streamAccumulator.js.map +1 -1
  113. package/dist/agent/managers/textPolishManager.d.ts +8 -44
  114. package/dist/agent/managers/textPolishManager.d.ts.map +1 -1
  115. package/dist/agent/managers/textPolishManager.js +9 -41
  116. package/dist/agent/managers/textPolishManager.js.map +1 -1
  117. package/dist/agent/managers/toolCallHelpers.d.ts +105 -0
  118. package/dist/agent/managers/toolCallHelpers.d.ts.map +1 -0
  119. package/dist/agent/managers/toolCallHelpers.js +161 -0
  120. package/dist/agent/managers/toolCallHelpers.js.map +1 -0
  121. package/dist/agent/managers/workProjection.d.ts +55 -100
  122. package/dist/agent/managers/workProjection.d.ts.map +1 -1
  123. package/dist/agent/managers/workProjection.js +164 -268
  124. package/dist/agent/managers/workProjection.js.map +1 -1
  125. package/dist/agent/messageHistory.d.ts +134 -84
  126. package/dist/agent/messageHistory.d.ts.map +1 -1
  127. package/dist/agent/messageHistory.js +419 -133
  128. package/dist/agent/messageHistory.js.map +1 -1
  129. package/dist/agent/needsPlanning.d.ts +28 -0
  130. package/dist/agent/needsPlanning.d.ts.map +1 -0
  131. package/dist/agent/needsPlanning.js +68 -0
  132. package/dist/agent/needsPlanning.js.map +1 -0
  133. package/dist/agent/seed/index.d.ts +11 -0
  134. package/dist/agent/seed/index.d.ts.map +1 -0
  135. package/dist/agent/seed/index.js +10 -0
  136. package/dist/agent/seed/index.js.map +1 -0
  137. package/dist/agent/seed/orchestrator.d.ts +83 -0
  138. package/dist/agent/seed/orchestrator.d.ts.map +1 -0
  139. package/dist/agent/seed/orchestrator.js +260 -0
  140. package/dist/agent/seed/orchestrator.js.map +1 -0
  141. package/dist/agent/seed/prepare.d.ts +49 -0
  142. package/dist/agent/seed/prepare.d.ts.map +1 -0
  143. package/dist/agent/seed/prepare.js +107 -0
  144. package/dist/agent/seed/prepare.js.map +1 -0
  145. package/dist/agent/seed/types.d.ts +115 -0
  146. package/dist/agent/seed/types.d.ts.map +1 -0
  147. package/dist/agent/seed/types.js +15 -0
  148. package/dist/agent/seed/types.js.map +1 -0
  149. package/dist/agent/sessionStateMachine.d.ts +78 -0
  150. package/dist/agent/sessionStateMachine.d.ts.map +1 -0
  151. package/dist/agent/sessionStateMachine.js +182 -0
  152. package/dist/agent/sessionStateMachine.js.map +1 -0
  153. package/dist/agent/taskTableRenderer.d.ts +51 -0
  154. package/dist/agent/taskTableRenderer.d.ts.map +1 -0
  155. package/dist/agent/taskTableRenderer.js +115 -0
  156. package/dist/agent/taskTableRenderer.js.map +1 -0
  157. package/dist/agent/toolExecutor.d.ts +236 -10
  158. package/dist/agent/toolExecutor.d.ts.map +1 -1
  159. package/dist/agent/toolExecutor.js +932 -21
  160. package/dist/agent/toolExecutor.js.map +1 -1
  161. package/dist/agent/toolLedger.d.ts +120 -0
  162. package/dist/agent/toolLedger.d.ts.map +1 -0
  163. package/dist/agent/toolLedger.js +149 -0
  164. package/dist/agent/toolLedger.js.map +1 -0
  165. package/dist/agent/toolResultCache.d.ts +134 -0
  166. package/dist/agent/toolResultCache.d.ts.map +1 -0
  167. package/dist/agent/toolResultCache.js +243 -0
  168. package/dist/agent/toolResultCache.js.map +1 -0
  169. package/dist/agent/toolResultOffload.d.ts +59 -0
  170. package/dist/agent/toolResultOffload.d.ts.map +1 -0
  171. package/dist/agent/toolResultOffload.js +70 -0
  172. package/dist/agent/toolResultOffload.js.map +1 -0
  173. package/dist/agent/toolRunner.d.ts +59 -0
  174. package/dist/agent/toolRunner.d.ts.map +1 -0
  175. package/dist/agent/toolRunner.js +147 -0
  176. package/dist/agent/toolRunner.js.map +1 -0
  177. package/dist/agent/tracer.d.ts +99 -107
  178. package/dist/agent/tracer.d.ts.map +1 -1
  179. package/dist/agent/tracer.js +24 -69
  180. package/dist/agent/tracer.js.map +1 -1
  181. package/dist/agent/types.d.ts +510 -169
  182. package/dist/agent/types.d.ts.map +1 -1
  183. package/dist/agent/types.js +2 -51
  184. package/dist/agent/types.js.map +1 -1
  185. package/dist/code-exec/codeExecutionProvider.d.ts +16 -0
  186. package/dist/code-exec/codeExecutionProvider.d.ts.map +1 -0
  187. package/dist/code-exec/codeExecutionProvider.js +57 -0
  188. package/dist/code-exec/codeExecutionProvider.js.map +1 -0
  189. package/dist/code-exec/types.d.ts +37 -0
  190. package/dist/code-exec/types.d.ts.map +1 -0
  191. package/dist/code-exec/types.js +12 -0
  192. package/dist/code-exec/types.js.map +1 -0
  193. package/dist/config/expandEnvVars.d.ts +22 -0
  194. package/dist/config/expandEnvVars.d.ts.map +1 -0
  195. package/dist/config/expandEnvVars.js +38 -0
  196. package/dist/config/expandEnvVars.js.map +1 -0
  197. package/dist/config/loader.d.ts +27 -98
  198. package/dist/config/loader.d.ts.map +1 -1
  199. package/dist/config/loader.js +110 -223
  200. package/dist/config/loader.js.map +1 -1
  201. package/dist/index.d.ts +67 -77
  202. package/dist/index.d.ts.map +1 -1
  203. package/dist/index.js +90 -69
  204. package/dist/index.js.map +1 -1
  205. package/dist/llm/abortSignal.d.ts +2 -3
  206. package/dist/llm/abortSignal.d.ts.map +1 -1
  207. package/dist/llm/abortSignal.js +2 -3
  208. package/dist/llm/abortSignal.js.map +1 -1
  209. package/dist/llm/factory.d.ts +22 -32
  210. package/dist/llm/factory.d.ts.map +1 -1
  211. package/dist/llm/factory.js +29 -46
  212. package/dist/llm/factory.js.map +1 -1
  213. package/dist/llm/openaiCompatible.d.ts +25 -40
  214. package/dist/llm/openaiCompatible.d.ts.map +1 -1
  215. package/dist/llm/openaiCompatible.js +179 -120
  216. package/dist/llm/openaiCompatible.js.map +1 -1
  217. package/dist/llm/provider.d.ts +29 -42
  218. package/dist/llm/provider.d.ts.map +1 -1
  219. package/dist/llm/provider.js +11 -10
  220. package/dist/llm/provider.js.map +1 -1
  221. package/dist/llm/types.d.ts +54 -11
  222. package/dist/llm/types.d.ts.map +1 -1
  223. package/dist/llm/types.js +0 -5
  224. package/dist/llm/types.js.map +1 -1
  225. package/dist/logging/logger.d.ts +8 -31
  226. package/dist/logging/logger.d.ts.map +1 -1
  227. package/dist/logging/logger.js +28 -215
  228. package/dist/logging/logger.js.map +1 -1
  229. package/dist/logging/loggerInterface.d.ts +9 -8
  230. package/dist/logging/loggerInterface.d.ts.map +1 -1
  231. package/dist/memory/gcService.d.ts +164 -0
  232. package/dist/memory/gcService.d.ts.map +1 -0
  233. package/dist/memory/gcService.js +215 -0
  234. package/dist/memory/gcService.js.map +1 -0
  235. package/dist/memory/governance.d.ts +11 -44
  236. package/dist/memory/governance.d.ts.map +1 -1
  237. package/dist/memory/governance.js +11 -64
  238. package/dist/memory/governance.js.map +1 -1
  239. package/dist/memory/inMemoryRoundStore.d.ts +124 -0
  240. package/dist/memory/inMemoryRoundStore.d.ts.map +1 -0
  241. package/dist/memory/inMemoryRoundStore.js +216 -0
  242. package/dist/memory/inMemoryRoundStore.js.map +1 -0
  243. package/dist/memory/inMemorySessionStore.d.ts +92 -0
  244. package/dist/memory/inMemorySessionStore.d.ts.map +1 -0
  245. package/dist/memory/inMemorySessionStore.js +219 -0
  246. package/dist/memory/inMemorySessionStore.js.map +1 -0
  247. package/dist/memory/inMemorySessionViewLoader.d.ts +89 -0
  248. package/dist/memory/inMemorySessionViewLoader.d.ts.map +1 -0
  249. package/dist/memory/inMemorySessionViewLoader.js +183 -0
  250. package/dist/memory/inMemorySessionViewLoader.js.map +1 -0
  251. package/dist/memory/inMemoryStorage.d.ts +25 -175
  252. package/dist/memory/inMemoryStorage.d.ts.map +1 -1
  253. package/dist/memory/inMemoryStorage.js +32 -221
  254. package/dist/memory/inMemoryStorage.js.map +1 -1
  255. package/dist/memory/keywordsTouch.d.ts +20 -0
  256. package/dist/memory/keywordsTouch.d.ts.map +1 -0
  257. package/dist/memory/keywordsTouch.js +25 -0
  258. package/dist/memory/keywordsTouch.js.map +1 -0
  259. package/dist/memory/lockManager.d.ts +2 -2
  260. package/dist/memory/lockManager.d.ts.map +1 -1
  261. package/dist/memory/lockManager.js +6 -8
  262. package/dist/memory/lockManager.js.map +1 -1
  263. package/dist/memory/projectManager.d.ts +30 -129
  264. package/dist/memory/projectManager.d.ts.map +1 -1
  265. package/dist/memory/projectManager.js +39 -189
  266. package/dist/memory/projectManager.js.map +1 -1
  267. package/dist/memory/projectRegistry.d.ts +14 -62
  268. package/dist/memory/projectRegistry.d.ts.map +1 -1
  269. package/dist/memory/projectRegistry.js +27 -111
  270. package/dist/memory/projectRegistry.js.map +1 -1
  271. package/dist/memory/roundStore.d.ts +629 -0
  272. package/dist/memory/roundStore.d.ts.map +1 -0
  273. package/dist/memory/roundStore.js +116 -0
  274. package/dist/memory/roundStore.js.map +1 -0
  275. package/dist/memory/sessionStore.d.ts +70 -61
  276. package/dist/memory/sessionStore.d.ts.map +1 -1
  277. package/dist/memory/sessionStore.js +23 -1
  278. package/dist/memory/sessionStore.js.map +1 -1
  279. package/dist/memory/sessionViewLoader.d.ts +141 -0
  280. package/dist/memory/sessionViewLoader.d.ts.map +1 -0
  281. package/dist/memory/sessionViewLoader.js +65 -0
  282. package/dist/memory/sessionViewLoader.js.map +1 -0
  283. package/dist/memory/sourceValidation.d.ts +10 -12
  284. package/dist/memory/sourceValidation.d.ts.map +1 -1
  285. package/dist/memory/sourceValidation.js +16 -32
  286. package/dist/memory/sourceValidation.js.map +1 -1
  287. package/dist/memory/storageInterface.d.ts +44 -150
  288. package/dist/memory/storageInterface.d.ts.map +1 -1
  289. package/dist/memory/types.d.ts +65 -164
  290. package/dist/memory/types.d.ts.map +1 -1
  291. package/dist/memory/types.js +81 -83
  292. package/dist/memory/types.js.map +1 -1
  293. package/dist/project-search/projectSearchProvider.d.ts +29 -0
  294. package/dist/project-search/projectSearchProvider.d.ts.map +1 -0
  295. package/dist/project-search/projectSearchProvider.js +57 -0
  296. package/dist/project-search/projectSearchProvider.js.map +1 -0
  297. package/dist/project-search/terms.d.ts +14 -0
  298. package/dist/project-search/terms.d.ts.map +1 -0
  299. package/dist/project-search/terms.js +68 -0
  300. package/dist/project-search/terms.js.map +1 -0
  301. package/dist/project-search/types.d.ts +139 -0
  302. package/dist/project-search/types.d.ts.map +1 -0
  303. package/dist/project-search/types.js +8 -0
  304. package/dist/project-search/types.js.map +1 -0
  305. package/dist/role-pack/capabilityMap.d.ts +28 -0
  306. package/dist/role-pack/capabilityMap.d.ts.map +1 -0
  307. package/dist/role-pack/capabilityMap.js +56 -0
  308. package/dist/role-pack/capabilityMap.js.map +1 -0
  309. package/dist/role-pack/constants.d.ts +21 -0
  310. package/dist/role-pack/constants.d.ts.map +1 -0
  311. package/dist/role-pack/constants.js +21 -0
  312. package/dist/role-pack/constants.js.map +1 -0
  313. package/dist/role-pack/rolePackManager.d.ts +269 -0
  314. package/dist/role-pack/rolePackManager.d.ts.map +1 -0
  315. package/dist/role-pack/rolePackManager.js +1082 -0
  316. package/dist/role-pack/rolePackManager.js.map +1 -0
  317. package/dist/role-pack/strategyKeys.d.ts +100 -0
  318. package/dist/role-pack/strategyKeys.d.ts.map +1 -0
  319. package/dist/role-pack/strategyKeys.js +184 -0
  320. package/dist/role-pack/strategyKeys.js.map +1 -0
  321. package/dist/role-pack/strategyResolver.d.ts +109 -0
  322. package/dist/role-pack/strategyResolver.d.ts.map +1 -0
  323. package/dist/role-pack/strategyResolver.js +304 -0
  324. package/dist/role-pack/strategyResolver.js.map +1 -0
  325. package/dist/role-pack/types.d.ts +237 -0
  326. package/dist/role-pack/types.d.ts.map +1 -0
  327. package/dist/role-pack/types.js +8 -0
  328. package/dist/role-pack/types.js.map +1 -0
  329. package/dist/role-pack/validator.d.ts +38 -0
  330. package/dist/role-pack/validator.d.ts.map +1 -0
  331. package/dist/role-pack/validator.js +436 -0
  332. package/dist/role-pack/validator.js.map +1 -0
  333. package/dist/security/pathGuard.d.ts +69 -72
  334. package/dist/security/pathGuard.d.ts.map +1 -1
  335. package/dist/security/pathGuard.js +151 -131
  336. package/dist/security/pathGuard.js.map +1 -1
  337. package/dist/skill/skillLayer3.d.ts +91 -0
  338. package/dist/skill/skillLayer3.d.ts.map +1 -0
  339. package/dist/skill/skillLayer3.js +104 -0
  340. package/dist/skill/skillLayer3.js.map +1 -0
  341. package/dist/skill/skillManager.d.ts +136 -19
  342. package/dist/skill/skillManager.d.ts.map +1 -1
  343. package/dist/skill/skillManager.js +312 -61
  344. package/dist/skill/skillManager.js.map +1 -1
  345. package/dist/skill/skillScriptRunner.d.ts +97 -0
  346. package/dist/skill/skillScriptRunner.d.ts.map +1 -0
  347. package/dist/skill/skillScriptRunner.js +271 -0
  348. package/dist/skill/skillScriptRunner.js.map +1 -0
  349. package/dist/skill/types.d.ts +73 -16
  350. package/dist/skill/types.d.ts.map +1 -1
  351. package/dist/skill/types.js +5 -1
  352. package/dist/skill/types.js.map +1 -1
  353. package/dist/utils/array.d.ts +5 -6
  354. package/dist/utils/array.d.ts.map +1 -1
  355. package/dist/utils/array.js +6 -6
  356. package/dist/utils/array.js.map +1 -1
  357. package/dist/utils/atomicWrite.d.ts +8 -0
  358. package/dist/utils/atomicWrite.d.ts.map +1 -0
  359. package/dist/utils/atomicWrite.js +31 -0
  360. package/dist/utils/atomicWrite.js.map +1 -0
  361. package/dist/utils/backgroundTask.d.ts +38 -0
  362. package/dist/utils/backgroundTask.d.ts.map +1 -0
  363. package/dist/utils/backgroundTask.js +117 -0
  364. package/dist/utils/backgroundTask.js.map +1 -0
  365. package/dist/utils/configResourceManager.d.ts +40 -72
  366. package/dist/utils/configResourceManager.d.ts.map +1 -1
  367. package/dist/utils/configResourceManager.js +78 -76
  368. package/dist/utils/configResourceManager.js.map +1 -1
  369. package/dist/utils/errors.d.ts +44 -69
  370. package/dist/utils/errors.d.ts.map +1 -1
  371. package/dist/utils/errors.js +54 -71
  372. package/dist/utils/errors.js.map +1 -1
  373. package/dist/utils/eventEmitter.d.ts +104 -103
  374. package/dist/utils/eventEmitter.d.ts.map +1 -1
  375. package/dist/utils/eventEmitter.js +37 -45
  376. package/dist/utils/eventEmitter.js.map +1 -1
  377. package/dist/utils/fileSafe.d.ts +20 -0
  378. package/dist/utils/fileSafe.d.ts.map +1 -0
  379. package/dist/utils/fileSafe.js +56 -0
  380. package/dist/utils/fileSafe.js.map +1 -0
  381. package/dist/utils/frontmatter.d.ts +2 -3
  382. package/dist/utils/frontmatter.d.ts.map +1 -1
  383. package/dist/utils/frontmatter.js +2 -3
  384. package/dist/utils/frontmatter.js.map +1 -1
  385. package/dist/utils/hash.d.ts +12 -0
  386. package/dist/utils/hash.d.ts.map +1 -0
  387. package/dist/utils/hash.js +27 -0
  388. package/dist/utils/hash.js.map +1 -0
  389. package/dist/utils/http.d.ts +17 -0
  390. package/dist/utils/http.d.ts.map +1 -0
  391. package/dist/utils/http.js +29 -0
  392. package/dist/utils/http.js.map +1 -0
  393. package/dist/utils/json.d.ts +1 -1
  394. package/dist/utils/json.js +1 -1
  395. package/dist/utils/math.d.ts +25 -3
  396. package/dist/utils/math.d.ts.map +1 -1
  397. package/dist/utils/math.js +32 -16
  398. package/dist/utils/math.js.map +1 -1
  399. package/dist/utils/objects.d.ts +2 -3
  400. package/dist/utils/objects.d.ts.map +1 -1
  401. package/dist/utils/objects.js +2 -3
  402. package/dist/utils/objects.js.map +1 -1
  403. package/dist/utils/recallDefaults.d.ts +16 -0
  404. package/dist/utils/recallDefaults.d.ts.map +1 -0
  405. package/dist/utils/recallDefaults.js +16 -0
  406. package/dist/utils/recallDefaults.js.map +1 -0
  407. package/dist/utils/safeTimer.d.ts +8 -36
  408. package/dist/utils/safeTimer.d.ts.map +1 -1
  409. package/dist/utils/safeTimer.js +9 -37
  410. package/dist/utils/safeTimer.js.map +1 -1
  411. package/dist/utils/scanner.d.ts +97 -17
  412. package/dist/utils/scanner.d.ts.map +1 -1
  413. package/dist/utils/scanner.js +269 -47
  414. package/dist/utils/scanner.js.map +1 -1
  415. package/dist/utils/segmenter.d.ts +20 -19
  416. package/dist/utils/segmenter.d.ts.map +1 -1
  417. package/dist/utils/segmenter.js +230 -97
  418. package/dist/utils/segmenter.js.map +1 -1
  419. package/dist/utils/strings.d.ts +15 -32
  420. package/dist/utils/strings.d.ts.map +1 -1
  421. package/dist/utils/strings.js +25 -44
  422. package/dist/utils/strings.js.map +1 -1
  423. package/dist/utils/time.d.ts +37 -0
  424. package/dist/utils/time.d.ts.map +1 -1
  425. package/dist/utils/time.js +56 -0
  426. package/dist/utils/time.js.map +1 -1
  427. package/dist/utils/toError.d.ts +13 -1
  428. package/dist/utils/toError.d.ts.map +1 -1
  429. package/dist/utils/toError.js +18 -1
  430. package/dist/utils/toError.js.map +1 -1
  431. package/dist/web-fetch/fetchWebFetchProvider.d.ts +14 -0
  432. package/dist/web-fetch/fetchWebFetchProvider.d.ts.map +1 -0
  433. package/dist/web-fetch/fetchWebFetchProvider.js +69 -0
  434. package/dist/web-fetch/fetchWebFetchProvider.js.map +1 -0
  435. package/dist/web-fetch/types.d.ts +30 -0
  436. package/dist/web-fetch/types.d.ts.map +1 -0
  437. package/dist/web-fetch/types.js +7 -0
  438. package/dist/web-fetch/types.js.map +1 -0
  439. package/dist/web-fetch/webFetchProvider.d.ts +10 -0
  440. package/dist/web-fetch/webFetchProvider.d.ts.map +1 -0
  441. package/dist/web-fetch/webFetchProvider.js +28 -0
  442. package/dist/web-fetch/webFetchProvider.js.map +1 -0
  443. package/dist/web-search/fetchWebSearchProvider.d.ts +27 -0
  444. package/dist/web-search/fetchWebSearchProvider.d.ts.map +1 -0
  445. package/dist/web-search/fetchWebSearchProvider.js +199 -0
  446. package/dist/web-search/fetchWebSearchProvider.js.map +1 -0
  447. package/dist/web-search/types.d.ts +46 -0
  448. package/dist/web-search/types.d.ts.map +1 -0
  449. package/dist/web-search/types.js +2 -0
  450. package/dist/{persona → web-search}/types.js.map +1 -1
  451. package/dist/web-search/webSearchProvider.d.ts +10 -0
  452. package/dist/web-search/webSearchProvider.d.ts.map +1 -0
  453. package/dist/web-search/webSearchProvider.js +30 -0
  454. package/dist/web-search/webSearchProvider.js.map +1 -0
  455. package/docs/architecture/role-pack-authoring-guide.md +243 -0
  456. package/docs/architecture/role-pack-spec.md +767 -0
  457. package/docs/memora-api-reference.md +416 -476
  458. package/docs/memora-/346/216/245/345/205/245/346/214/207/345/215/227.md +841 -806
  459. package/docs/role-pack-/345/274/200/346/224/276/351/224/256/346/214/207/345/215/227.md +148 -0
  460. package/package.json +105 -100
  461. package/role-packs/README.md +41 -0
  462. package/role-packs/memora/345/212/251/346/211/213/manifest.json +12 -0
  463. package/role-packs/memora/345/212/251/346/211/213/persona.md +12 -0
  464. package/role-packs/memora/345/212/251/346/211/213/rules.md +4 -0
  465. package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/manifest.json +44 -0
  466. package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/persona.md +46 -0
  467. package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/rules.md +15 -0
  468. package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/character-sheet.md +34 -0
  469. package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/core-extractor.md +37 -0
  470. package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/craft-review.md +69 -0
  471. package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/dialogue-craft.md +45 -0
  472. package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/emotion-wave.md +46 -0
  473. package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/empathy-craft.md +79 -0
  474. package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/foreshadow.md +29 -0
  475. package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/hotspot-mapping.md +121 -0
  476. package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/idea-lever.md +42 -0
  477. package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/logline-craft.md +47 -0
  478. package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/longform-guard.md +64 -0
  479. package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/need-finder.md +40 -0
  480. package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/outline-expand.md +46 -0
  481. package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/pacing-hook.md +34 -0
  482. package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/polish-method.md +113 -0
  483. package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/pov-discipline.md +79 -0
  484. package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/project-init/SKILL.md +112 -0
  485. package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/project-init/scripts/init-novel-project.mjs +441 -0
  486. package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/relationship-web.md +47 -0
  487. package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/scene-craft.md +46 -0
  488. package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/story-bible.md +60 -0
  489. package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/story-structure.md +36 -0
  490. package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/style-weaver.md +109 -0
  491. package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/three-layer-check.md +27 -0
  492. package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/world-builder.md +41 -0
  493. package/role-packs//347/231/275/350/257/235/346/226/271/346/241/210/350/256/276/350/256/241/345/270/210/manifest.json +48 -0
  494. package/role-packs//347/231/275/350/257/235/346/226/271/346/241/210/350/256/276/350/256/241/345/270/210/persona.md +73 -0
  495. package/role-packs//347/231/275/350/257/235/346/226/271/346/241/210/350/256/276/350/256/241/345/270/210/rules.md +19 -0
  496. package/role-packs//347/231/275/350/257/235/346/226/271/346/241/210/350/256/276/350/256/241/345/270/210/skills/api-doc-writer.md +40 -0
  497. package/role-packs//347/231/275/350/257/235/346/226/271/346/241/210/350/256/276/350/256/241/345/270/210/skills/doc-planner.md +42 -0
  498. package/role-packs//347/231/275/350/257/235/346/226/271/346/241/210/350/256/276/350/256/241/345/270/210/skills/nutrient-search.md +28 -0
  499. package/role-packs//347/231/275/350/257/235/346/226/271/346/241/210/350/256/276/350/256/241/345/270/210/skills/seed-finder.md +28 -0
  500. package/role-packs//347/231/275/350/257/235/346/226/271/346/241/210/350/256/276/350/256/241/345/270/210/skills/ssot-audit.md +34 -0
  501. package/role-packs//347/231/275/350/257/235/346/226/271/346/241/210/350/256/276/350/256/241/345/270/210/skills/style-guide.md +40 -0
  502. package/dist/agent/guardrail.d.ts +0 -49
  503. package/dist/agent/guardrail.d.ts.map +0 -1
  504. package/dist/agent/guardrail.js +0 -59
  505. package/dist/agent/guardrail.js.map +0 -1
  506. package/dist/agent/managers/autoConfigRefiner.d.ts +0 -39
  507. package/dist/agent/managers/autoConfigRefiner.d.ts.map +0 -1
  508. package/dist/agent/managers/autoConfigRefiner.js +0 -146
  509. package/dist/agent/managers/autoConfigRefiner.js.map +0 -1
  510. package/dist/agent/managers/configManager.d.ts +0 -209
  511. package/dist/agent/managers/configManager.d.ts.map +0 -1
  512. package/dist/agent/managers/configManager.js +0 -331
  513. package/dist/agent/managers/configManager.js.map +0 -1
  514. package/dist/agent/managers/insightExtractor.d.ts +0 -139
  515. package/dist/agent/managers/insightExtractor.d.ts.map +0 -1
  516. package/dist/agent/managers/insightExtractor.js +0 -401
  517. package/dist/agent/managers/insightExtractor.js.map +0 -1
  518. package/dist/agent/managers/memoryDecayScheduler.d.ts +0 -239
  519. package/dist/agent/managers/memoryDecayScheduler.d.ts.map +0 -1
  520. package/dist/agent/managers/memoryDecayScheduler.js +0 -413
  521. package/dist/agent/managers/memoryDecayScheduler.js.map +0 -1
  522. package/dist/agent/managers/relationBuilder.d.ts +0 -131
  523. package/dist/agent/managers/relationBuilder.d.ts.map +0 -1
  524. package/dist/agent/managers/relationBuilder.js +0 -192
  525. package/dist/agent/managers/relationBuilder.js.map +0 -1
  526. package/dist/agent/personaMatcher.d.ts +0 -29
  527. package/dist/agent/personaMatcher.d.ts.map +0 -1
  528. package/dist/agent/personaMatcher.js +0 -60
  529. package/dist/agent/personaMatcher.js.map +0 -1
  530. package/dist/agent/userFactExtractor.d.ts +0 -25
  531. package/dist/agent/userFactExtractor.d.ts.map +0 -1
  532. package/dist/agent/userFactExtractor.js +0 -88
  533. package/dist/agent/userFactExtractor.js.map +0 -1
  534. package/dist/eval/evalRunner.d.ts +0 -94
  535. package/dist/eval/evalRunner.d.ts.map +0 -1
  536. package/dist/eval/evalRunner.js +0 -141
  537. package/dist/eval/evalRunner.js.map +0 -1
  538. package/dist/eval/evalTypes.d.ts +0 -148
  539. package/dist/eval/evalTypes.d.ts.map +0 -1
  540. package/dist/eval/evalTypes.js +0 -118
  541. package/dist/eval/evalTypes.js.map +0 -1
  542. package/dist/eval/scenarios.d.ts +0 -33
  543. package/dist/eval/scenarios.d.ts.map +0 -1
  544. package/dist/eval/scenarios.js +0 -109
  545. package/dist/eval/scenarios.js.map +0 -1
  546. package/dist/llm/embedding.d.ts +0 -79
  547. package/dist/llm/embedding.d.ts.map +0 -1
  548. package/dist/llm/embedding.js +0 -184
  549. package/dist/llm/embedding.js.map +0 -1
  550. package/dist/memory/hybridMerge.d.ts +0 -50
  551. package/dist/memory/hybridMerge.d.ts.map +0 -1
  552. package/dist/memory/hybridMerge.js +0 -51
  553. package/dist/memory/hybridMerge.js.map +0 -1
  554. package/dist/memory/inMemoryRelationStore.d.ts +0 -58
  555. package/dist/memory/inMemoryRelationStore.d.ts.map +0 -1
  556. package/dist/memory/inMemoryRelationStore.js +0 -80
  557. package/dist/memory/inMemoryRelationStore.js.map +0 -1
  558. package/dist/memory/loader.d.ts +0 -51
  559. package/dist/memory/loader.d.ts.map +0 -1
  560. package/dist/memory/loader.js +0 -100
  561. package/dist/memory/loader.js.map +0 -1
  562. package/dist/memory/recall.d.ts +0 -82
  563. package/dist/memory/recall.d.ts.map +0 -1
  564. package/dist/memory/recall.js +0 -157
  565. package/dist/memory/recall.js.map +0 -1
  566. package/dist/memory/relationStore.d.ts +0 -95
  567. package/dist/memory/relationStore.d.ts.map +0 -1
  568. package/dist/memory/relationStore.js +0 -2
  569. package/dist/memory/relationStore.js.map +0 -1
  570. package/dist/memory/store.d.ts +0 -71
  571. package/dist/memory/store.d.ts.map +0 -1
  572. package/dist/memory/store.js +0 -199
  573. package/dist/memory/store.js.map +0 -1
  574. package/dist/memory/userProfile.d.ts +0 -180
  575. package/dist/memory/userProfile.d.ts.map +0 -1
  576. package/dist/memory/userProfile.js +0 -381
  577. package/dist/memory/userProfile.js.map +0 -1
  578. package/dist/memory/vectorStore.d.ts +0 -179
  579. package/dist/memory/vectorStore.d.ts.map +0 -1
  580. package/dist/memory/vectorStore.js +0 -284
  581. package/dist/memory/vectorStore.js.map +0 -1
  582. package/dist/persona/personaManager.d.ts +0 -109
  583. package/dist/persona/personaManager.d.ts.map +0 -1
  584. package/dist/persona/personaManager.js +0 -315
  585. package/dist/persona/personaManager.js.map +0 -1
  586. package/dist/persona/types.d.ts +0 -32
  587. package/dist/persona/types.d.ts.map +0 -1
  588. package/dist/persona/types.js +0 -5
@@ -0,0 +1,183 @@
1
+ /**
2
+ * 内存会话视图加载器 — ISessionViewLoader 的内存版实现
3
+ *
4
+ * 职责:将 Session(Round ID 列表)+ RoundStore(物理存储)组合成完整视图
5
+ *
6
+ * 使用场景:
7
+ * - 宿主生产:宿主封装本类并注入文件系统存储(VS Code 宿主 WorkspaceSessionViewLoader
8
+ * 即委托本类,入口 extension.ts → sessionViewLoader.ts:delegate)
9
+ * - 测试环境(零依赖)
10
+ * - 开发调试
11
+ */
12
+ // 会话显示名回退单一真理源(displayName→autoName),sessionId 兜底留在调用端
13
+ import { getSessionDisplayName } from '../memory/sessionStore.js';
14
+ import { flattenRoundsToMessages, truncateRoundsUpTo, countMessagesInRounds, } from '../memory/sessionViewLoader.js';
15
+ /**
16
+ * 内存会话视图加载器
17
+ *
18
+ * 实现策略:
19
+ * 1. 从 SessionStore 获取 SessionMeta(含 roundIds)
20
+ * 2. 从 RoundStore 批量加载所有 Round
21
+ * 3. 展开为扁平消息列表
22
+ * 4. 支持截断操作(分叉场景)
23
+ */
24
+ export class InMemorySessionViewLoader {
25
+ roundStore;
26
+ sessionStore;
27
+ constructor(roundStore, sessionStore) {
28
+ this.roundStore = roundStore;
29
+ this.sessionStore = sessionStore;
30
+ }
31
+ /**
32
+ * 加载会话的完整对话视图
33
+ *
34
+ * 流程:
35
+ * 1. 获取 SessionMeta(含 roundIds 列表)
36
+ * 2. 从 RoundStore 批量加载所有 Round
37
+ * 3. 展开为扁平消息列表
38
+ *
39
+ * @param sessionId - 会话 ID
40
+ * @returns 完整会话视图
41
+ * @throws Error 会话不存在时抛出
42
+ */
43
+ loadView(sessionId) {
44
+ // 1. 获取会话元数据
45
+ const meta = this.getSessionMeta(sessionId);
46
+ if (!meta) {
47
+ throw new Error(`会话不存在: ${sessionId}`);
48
+ }
49
+ // 2. 获取 Round ID 列表
50
+ const roundIds = this.getRoundIds(sessionId);
51
+ // 3. 批量加载 Round
52
+ const rounds = this.roundStore.getByIds(roundIds);
53
+ // 4. 展开为扁平消息列表
54
+ const messages = flattenRoundsToMessages(rounds);
55
+ return {
56
+ sessionId,
57
+ meta,
58
+ rounds,
59
+ messages,
60
+ };
61
+ }
62
+ /**
63
+ * 加载会话的简化摘要(用于历史列表等轻量场景)
64
+ *
65
+ * @param sessionId - 会话 ID
66
+ * @returns 会话摘要,不存在返回 null
67
+ */
68
+ loadSummary(sessionId) {
69
+ // 获取会话元数据
70
+ const meta = this.getSessionMeta(sessionId);
71
+ if (!meta)
72
+ return null;
73
+ // 获取 Round ID 列表
74
+ const roundIds = this.getRoundIds(sessionId);
75
+ // 加载最后一个 Round(用于预览)
76
+ const lastRoundId = roundIds[roundIds.length - 1];
77
+ let lastMessagePreview;
78
+ if (lastRoundId) {
79
+ const lastRound = this.roundStore.getById(lastRoundId);
80
+ if (lastRound) {
81
+ // 取 AI 消息的前 50 个字符作为预览
82
+ if (lastRound.assistantMessage) {
83
+ lastMessagePreview = lastRound.assistantMessage.content.slice(0, 50);
84
+ if (lastRound.assistantMessage.content.length > 50) {
85
+ lastMessagePreview += '...';
86
+ }
87
+ }
88
+ }
89
+ }
90
+ // 计算标题(SSOT 显示名回退 displayName→autoName,sessionId 作最后兜底)
91
+ const title = getSessionDisplayName(meta) || sessionId;
92
+ return {
93
+ sessionId,
94
+ title,
95
+ roundCount: roundIds.length,
96
+ updatedAt: meta.updatedAt,
97
+ lastMessagePreview,
98
+ };
99
+ }
100
+ /**
101
+ * 批量加载多个会话的摘要
102
+ *
103
+ * @param sessionIds - 会话 ID 数组
104
+ * @returns 会话摘要数组
105
+ */
106
+ loadBatchSummaries(sessionIds) {
107
+ const summaries = [];
108
+ for (const sessionId of sessionIds) {
109
+ const summary = this.loadSummary(sessionId);
110
+ if (summary) {
111
+ summaries.push(summary);
112
+ }
113
+ }
114
+ // 按 updatedAt 降序排列
115
+ summaries.sort((a, b) => {
116
+ return b.updatedAt > a.updatedAt ? 1 : b.updatedAt < a.updatedAt ? -1 : 0;
117
+ });
118
+ return summaries;
119
+ }
120
+ /**
121
+ * 获取会话的消息数量
122
+ *
123
+ * 不加载完整 Round 数据,仅统计消息数
124
+ *
125
+ * @param sessionId - 会话 ID
126
+ * @returns 消息数量(User + AI)
127
+ */
128
+ getMessageCount(sessionId) {
129
+ const meta = this.getSessionMeta(sessionId);
130
+ if (!meta)
131
+ return 0;
132
+ return meta.messageCount;
133
+ }
134
+ /**
135
+ * 从指定 Round 位置截断会话视图
136
+ *
137
+ * 用途:分叉操作时获取分叉点之前的对话
138
+ *
139
+ * @param sessionId - 会话 ID
140
+ * @param upToRoundId - 截断到哪个 Round(包含)
141
+ * @returns 截断后的会话视图
142
+ */
143
+ loadViewUpTo(sessionId, upToRoundId) {
144
+ // 1. 获取完整视图
145
+ const fullView = this.loadView(sessionId);
146
+ // 2. 截断 Round 列表
147
+ const truncatedRounds = truncateRoundsUpTo(fullView.rounds, upToRoundId);
148
+ // 3. 重新展开消息列表
149
+ const messages = flattenRoundsToMessages(truncatedRounds);
150
+ // 4. 更新元数据中的消息数
151
+ const updatedMeta = {
152
+ ...fullView.meta,
153
+ messageCount: countMessagesInRounds(truncatedRounds),
154
+ };
155
+ return {
156
+ sessionId,
157
+ meta: updatedMeta,
158
+ rounds: truncatedRounds,
159
+ messages,
160
+ };
161
+ }
162
+ // ─── 私有辅助方法 ─────────────────────────────────────
163
+ /**
164
+ * 获取会话元数据
165
+ *
166
+ * 直接走 sessionStore.getSessionMeta——ISessionStore 接口**必选**方法(sessionStore.ts 契约),
167
+ * 宿主与内核实现均齐备。返回浅拷贝防外部改 meta 污染存储。
168
+ */
169
+ getSessionMeta(sessionId) {
170
+ const meta = this.sessionStore.getSessionMeta(sessionId);
171
+ return meta ? { ...meta } : null;
172
+ }
173
+ /**
174
+ * 获取会话的 Round ID 列表(SSOT:唯一真源为 sessionStore.getRoundIds)
175
+ *
176
+ * SessionMeta 已回归纯展示 DTO(无 roundIds 字段),轮次一律经真源方法读取。
177
+ * 接口契约保证返回 string[](非空数组也可能),直接展开即可,无需存在性判断。
178
+ */
179
+ getRoundIds(sessionId) {
180
+ return [...this.sessionStore.getRoundIds(sessionId)];
181
+ }
182
+ }
183
+ //# sourceMappingURL=inMemorySessionViewLoader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inMemorySessionViewLoader.js","sourceRoot":"","sources":["../../src/memory/inMemorySessionViewLoader.ts"],"names":[],"mappings":"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"}
@@ -1,207 +1,57 @@
1
1
  /**
2
- * 内存存储实现 — IMemoryStorage 的纯 JS 内存实现
3
- *
4
- * 零依赖、零 IO,适用于:
5
- * - 单元测试(不需要 better-sqlite3,不需要文件系统)
6
- * - 宿主项目注入前的临时占位
7
- * - 沙箱/演示环境
8
- *
9
- * 注意:此实现不持久化,进程退出后数据丢失。
10
- * ⚠️ 仅限测试/开发使用,生产环境请注入 SqliteStorage(宿主项目提供)。
2
+ * 内存存储实现 — IMemoryStorage 的纯 JS 内存版。
3
+ * 零依赖零 IO,用于单元测试、宿主注入前的临时占位、沙箱。不持久化(进程退出即丢失),
4
+ * 仅限测试/开发;生产由宿主注入持久化实现(当前 vscode 宿主为 WorkspaceStorage,JSON 文件落地)。
11
5
  */
12
6
  import type { IMemoryStorage } from '../memory/storageInterface.js';
13
7
  import type { Memory } from '../memory/types.js';
14
8
  /**
15
- * 内存存储实现
16
- *
17
- * 使用 Map 存储记忆,核心操作 O(1)~O(log n)。
18
- * 优化:维护 source→count 增量缓存,stats()/sourceHealth() 无需全量遍历。
9
+ * 内存存储:Map 存储,核心操作 O(1)~O(log n)。
10
+ * 维护 source→count 增量缓存,stats()/sourceHealth() 无需全量遍历。
19
11
  */
20
12
  export declare class InMemoryStorage implements IMemoryStorage {
21
13
  /** 记忆存储(id → Memory) */
22
14
  private memories;
23
- /** source→count 增量缓存(upsert/delete 时维护,getAllSources 时直接读取) */
15
+ /** source→count 增量缓存(upsert/delete 时维护,getAllSources 直接读取) */
24
16
  private sourceCountCache;
25
17
  /**
26
- * 插入或更新记忆
27
- *
28
- * 自动校验 source 字段,对疑似 typo 发出警告日志。
29
- * 增量维护 sourceCountCache(仅统计活跃记忆):
30
- * - 新增活跃记忆:source 计数 +1
31
- * - 更新同 source 同活跃态:计数不变
32
- * - 更新换 source:旧 source -1、新 source +1
33
- * 软删除状态转换维护:
34
- * - 活跃 → 软删除:source 计数 -1
35
- * - 软删除 → 活跃:source 计数 +1
36
- *
37
- * 软删除校验:
38
- * 若 existing 已软删除(deletedAt !== undefined)且 newMemory 为活跃态
39
- * (deletedAt === undefined),抛出错误阻止"通过 upsert 复活软删除记忆"。
40
- * 调用方必须先显式 restore(id) 恢复记忆后再 upsert。
41
- * 例外:newMemory 显式带 deletedAt(如测试场景篡改 deletedAt)允许通过,
42
- * 因为此时调用方明确意图是覆盖软删除状态而非"复活"。
43
- *
44
- * 采用 delta 方式:先扣除 existing 的活跃贡献,再加回 newMemory 的活跃贡献。
45
- * 该方式可统一处理 source 变更 + 软删除状态变更的所有组合,避免分支爆炸。
18
+ * upsert:校验 source + 软删除复活拦截 + delta 维护 sourceCountCache。
19
+ * 增量按 source/软删态加减活跃计数;软删除记忆不能经 upsert 静默复活(须先 restore)。
46
20
  */
47
21
  upsert(memory: Memory): void;
48
- /**
49
- * 软删除记忆
50
- *
51
- * 写入 deletedAt 时间戳,不物理移除 Map 条目。
52
- * - 召回/搜索/列表/统计自动过滤已软删除的记忆
53
- * - 可通过 restore(id) 恢复
54
- * - 回收站保留期过后由 purgeExpired(before) 物理清理
55
- *
56
- * 对已软删除的记忆调用为 no-op。
57
- * 增量维护 sourceCountCache:软删除时对应 source 减 1。
58
- */
22
+ /** 软删除:写 deletedAt 标记不物理移除;可 restore 恢复,过期由 purgeExpired 清理 */
59
23
  delete(id: string): void;
60
- /**
61
- * 恢复软删除的记忆
62
- *
63
- * 清除 deletedAt 字段,使记忆重新出现在召回/搜索/列表中。
64
- * 对活跃记忆调用为 no-op。
65
- * 增量维护 sourceCountCache:恢复时对应 source 加 1。
66
- */
24
+ /** 恢复软删除:清除 deletedAt 使记忆重回召回/搜索/列表;活跃态调用为 no-op */
67
25
  restore(id: string): void;
68
- /**
69
- * 物理删除记忆
70
- *
71
- * 从 Map 中彻底移除,不可恢复。
72
- * 用于回收站的"彻底删除"操作,或测试环境的强制清理。
73
- *
74
- * 注意:若记忆为活跃态(未软删除),purge 也会减 1 计数,
75
- * 但正常流程应先软删除再 purge,此时计数已在 delete() 中扣除。
76
- */
26
+ /** 物理删除:从 Map 彻底移除不可恢复;活跃态亦扣减计数(正常流程先 delete 已扣) */
77
27
  purge(id: string): void;
78
- /**
79
- * 列出回收站中的软删除记忆
80
- *
81
- * 按 deletedAt 降序(最近删除的在前),便于回收站 UI 展示。
82
- * 返回浅拷贝,避免调用方修改污染存储内部对象。
83
- *
84
- * @param limit - 返回数量上限。`limit <= 0` 或 `undefined` 表示不设上限(返回全部);
85
- * 正整数 N 表示返回最近 N 条。默认 undefined(全部)。
86
- * @returns 软删除记忆列表(副本)
87
- */
28
+ /** 列出软删除记忆,按 deletedAt 降序;limit<=0 或 undefined 表示不设上限(返回全部) */
88
29
  listDeleted(limit?: number): Memory[];
89
- /**
90
- * 按 ID 获取单条软删除记忆
91
- *
92
- * 用于 restore/purge 操作前的存在性校验,避免 listDeleted 默认 50 上限
93
- * 导致回收站超量时操作失效。
94
- *
95
- * @param id 记忆唯一标识
96
- * @returns 软删除记忆(浅拷贝),不存在或未软删除时返回 null
97
- */
30
+ /** 按 ID 取单条软删除记忆(浅拷贝);不存在或未软删除返回 null */
98
31
  getDeletedById(id: string): Memory | null;
99
- /**
100
- * 清理过期的软删除记忆
101
- *
102
- * 物理删除所有 deletedAt 早于 before 的记忆。
103
- * 由宿主项目的定时器调用(默认 30 天保留期)。
104
- *
105
- * @param before - 时间阈值,deletedAt 早于此值的记忆将被物理删除
106
- * @returns 被清理的记忆数量
107
- */
32
+ /** 物理删除 deletedAt 早于 before 的软删除记忆,返回清理数量(宿主定时器默认 30 天保留期调用) */
108
33
  purgeExpired(before: Date): number;
109
- /**
110
- * 按 ID 获取单条活跃记忆(已软删除的返回 null)
111
- *
112
- * 返回浅拷贝,避免调用方修改污染存储内部对象(接口契约:读取隔离)
113
- */
34
+ /** 按 ID 取活跃记忆(浅拷贝,软删除返回 null,读取隔离契约) */
114
35
  getById(id: string): Memory | null;
115
- /**
116
- * 按来源标签获取活跃记忆(自动过滤已软删除的)
117
- *
118
- * 返回浅拷贝数组,避免调用方修改污染存储内部对象。
119
- *
120
- * @param source - 来源标签(如 'persona'、'rule'、'insight')
121
- * @returns 该来源的所有活跃记忆(副本),按 score 降序排列
122
- */
36
+ /** 按 source 取活跃记忆(浅拷贝,自动过滤软删除,accessedAt 降序) */
123
37
  getBySource(source: string): Memory[];
124
- /**
125
- * 文本搜索活跃记忆(自动过滤已软删除的,内存版)
126
- *
127
- * 使用 segmentText() 规范分词,与 SqliteStorage 行为一致。
128
- * 搜索 content 和 name 字段,按 score 降序排列。
129
- *
130
- * @param query - 搜索查询文本
131
- * @param limit - 返回数量上限(默认 10)
132
- * @returns 匹配的活跃记忆列表
133
- */
38
+ /** 文本搜索活跃记忆(segmentLower 与 SqliteStorage/keywordsTouch 一致),accessedAt 降序,limit 默认 10 */
134
39
  search(query: string, limit?: number): Memory[];
135
- /**
136
- * 排序 + 截断 + 浅拷贝三件套
137
- *
138
- * 消除 search() 内 3 次重复的 .sort(byScoreDesc).slice(0, limit).map((m) => ({ ...m })) 模式
139
- * (ADR-017 枝叶层 2 次提取原则,3 次重复已超阈值)。
140
- *
141
- * @param memories 待处理的记忆数组
142
- * @param limit 返回数量上限
143
- * @returns 排序截断后的浅拷贝记忆数组
144
- */
40
+ /** 排序 + 截断 + 浅拷贝,消除 search 内重复的 pattern */
145
41
  private sortCopyLimit;
146
- /**
147
- * 统计活跃记忆总数(不含已软删除的)
148
- *
149
- * 优化:直接累加 sourceCountCache 的所有值,O(sources) 复杂度。
150
- * 因 sourceCountCache 仅维护活跃记忆计数,求和即为活跃总数。
151
- */
42
+ /** 活跃记忆总数:累加 sourceCountCache(仅维护活跃计数) */
152
43
  count(): number;
153
- /**
154
- * 按来源标签统计记忆数量
155
- *
156
- * 优化:直接读取 sourceCountCache,O(1) 复杂度
157
- * (getAllSources 为 O(sources),因需拷贝 Map,二者复杂度不同)
158
- * 原实现 O(n) 遍历所有记忆,与增量缓存设计不一致
159
- */
44
+ /** 按 source 统计活跃数量,O(1) 读 sourceCountCache */
160
45
  countBySource(source: string): number;
161
- /**
162
- * 衰减指定来源的活跃记忆 score(跳过已软删除的)
163
- *
164
- * 遍历所有匹配 source 的活跃记忆,按时间衰减。
165
- * 生产环境宿主(SqliteStorage)应重写为 SQL UPDATE 批量操作。
166
- */
167
- decayScores(sources: string[], now: Date): number;
168
- /**
169
- * 原子增加记忆 score(MIND2-L3:消除 boost read-modify-write 并发冲突)
170
- *
171
- * score = clamp(score + delta, DECAY_FLOOR, SCORE_CEILING),同时更新 accessedAt。
172
- * JS 单线程下与同步 storage 调用天然原子。
173
- *
174
- * @param id 记忆 ID
175
- * @param delta 增量(正数 boost,负数可降级)
176
- * @param now 当前时间(ISO 8601)
177
- * @returns 记忆不存在/软删除时返回 false,成功返回 true
178
- */
179
- incrementScore(id: string, delta: number, now: string): boolean;
180
- /**
181
- * 原子设置记忆 score 绝对值(MIND2-L3:消除 demote spread 旧快照覆盖其他字段)
182
- *
183
- * 直接设置 score = newScore,不 clamp(调用方负责传合法值)。同时更新 accessedAt。
184
- *
185
- * @param id 记忆 ID
186
- * @param newScore 新 score 绝对值
187
- * @param now 当前时间(ISO 8601)
188
- * @returns 记忆不存在/软删除时返回 false,成功返回 true
189
- */
190
- setScore(id: string, newScore: number, now: string): boolean;
191
- /**
192
- * 获取所有 source 标签及其记忆数量
193
- *
194
- * 优化:直接读取增量维护的 sourceCountCache。
195
- * 复杂度为 O(sources)(拷贝 Map),相比全量遍历 O(n) 仍有显著优化。
196
- */
46
+ /** 刷新 accessedAt(score 退役后的唯一写位);不存在/软删返回 false */
47
+ touch(id: string, now: string): boolean;
48
+ /** 全部 source 及活跃计数(拷贝 Map,O(sources)) */
197
49
  getAllSources(): Map<string, number>;
198
- /**
199
- * 关闭(内存实现无需关闭)
200
- */
50
+ /** 关闭即丢弃全部记忆(终结操作不可逆);勿在会话暂停/检查点恢复等状态层动作调用 */
201
51
  close(): void;
202
52
  /** source 计数 +1 */
203
53
  private incrementSourceCount;
204
- /** source 计数 -1(减至 0 时移除键) */
54
+ /** source 计数 -1(减至 0 移除键) */
205
55
  private decrementSourceCount;
206
56
  }
207
57
  //# sourceMappingURL=inMemoryStorage.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"inMemoryStorage.d.ts","sourceRoot":"","sources":["../../src/memory/inMemoryStorage.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAUhD;;;;;GAKG;AACH,qBAAa,eAAgB,YAAW,cAAc;IACpD,wBAAwB;IACxB,OAAO,CAAC,QAAQ,CAAkC;IAElD,+DAA+D;IAC/D,OAAO,CAAC,gBAAgB,CAAkC;IAE1D;;;;;;;;;;;;;;;;;;;;;OAqBG;IACH,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IA2C5B;;;;;;;;;;OAUG;IACH,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAWxB;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAWzB;;;;;;;;OAQG;IACH,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAUvB;;;;;;;;;OASG;IACH,WAAW,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE;IAYrC;;;;;;;;OAQG;IACH,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAOzC;;;;;;;;OAQG;IACH,YAAY,CAAC,MAAM,EAAE,IAAI,GAAG,MAAM;IAalC;;;;OAIG;IACH,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAOlC;;;;;;;OAOG;IACH,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE;IAOrC;;;;;;;;;OASG;IACH,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,SAAK,GAAG,MAAM,EAAE;IA2B3C;;;;;;;;;OASG;IACH,OAAO,CAAC,aAAa;IAOrB;;;;;OAKG;IACH,KAAK,IAAI,MAAM;IAMf;;;;;;OAMG;IACH,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;IAIrC;;;;;OAKG;IACH,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,IAAI,GAAG,MAAM;IAajD;;;;;;;;;;OAUG;IACH,cAAc,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO;IAU/D;;;;;;;;;OASG;IACH,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO;IAQ5D;;;;;OAKG;IACH,aAAa,IAAI,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC;IAIpC;;OAEG;IACH,KAAK,IAAI,IAAI;IAQb,mBAAmB;IACnB,OAAO,CAAC,oBAAoB;IAI5B,8BAA8B;IAC9B,OAAO,CAAC,oBAAoB;CAS7B"}
1
+ {"version":3,"file":"inMemoryStorage.d.ts","sourceRoot":"","sources":["../../src/memory/inMemoryStorage.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAQhD;;;GAGG;AACH,qBAAa,eAAgB,YAAW,cAAc;IACpD,wBAAwB;IACxB,OAAO,CAAC,QAAQ,CAAkC;IAClD,8DAA8D;IAC9D,OAAO,CAAC,gBAAgB,CAAkC;IAE1D;;;OAGG;IACH,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAqC5B,+DAA+D;IAC/D,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAQxB,oDAAoD;IACpD,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAQzB,oDAAoD;IACpD,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IASvB,+DAA+D;IAC/D,WAAW,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE;IAUrC,yCAAyC;IACzC,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAMzC,gEAAgE;IAChE,YAAY,CAAC,MAAM,EAAE,IAAI,GAAG,MAAM;IAYlC,wCAAwC;IACxC,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAMlC,gDAAgD;IAChD,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE;IAOrC,wFAAwF;IACxF,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,SAAK,GAAG,MAAM,EAAE;IAoB3C,2CAA2C;IAC3C,OAAO,CAAC,aAAa;IAOrB,0CAA0C;IAC1C,KAAK,IAAI,MAAM;IAMf,8CAA8C;IAC9C,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;IAIrC,mDAAmD;IACnD,KAAK,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO;IAOvC,yCAAyC;IACzC,aAAa,IAAI,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC;IAIpC,8CAA8C;IAC9C,KAAK,IAAI,IAAI;IAKb,mBAAmB;IACnB,OAAO,CAAC,oBAAoB;IAI5B,6BAA6B;IAC7B,OAAO,CAAC,oBAAoB;CAS7B"}