@zooique/memora 2.0.3 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (588) hide show
  1. package/CHANGELOG.md +1028 -0
  2. package/README.en.md +305 -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
@@ -1,179 +0,0 @@
1
- import type { EmbeddingOptions } from '../llm/embedding.js';
2
- /**
3
- * 嵌入服务接口
4
- * 向量存储依赖此接口生成文本嵌入向量
5
- *
6
- * batchEmbed 返回向量数组,顺序与输入一致。
7
- * EmbeddingProvider(llm/embedding.ts)满足此接口(结构子类型)。
8
- *
9
- * 韧性补齐:embed/batchEmbed 接受 EmbeddingOptions(signal + timeoutMs),
10
- * 宿主在用户取消对话时可透传 AbortSignal 中断 embedding 请求。
11
- */
12
- export interface EmbeddingService {
13
- embed(text: string, options?: EmbeddingOptions): Promise<number[]>;
14
- batchEmbed(texts: string[], options?: EmbeddingOptions): Promise<Array<{
15
- text: string;
16
- vector: number[];
17
- }>>;
18
- }
19
- /**
20
- * 向量存储接口(依赖倒置)
21
- *
22
- * 抽出接口让宿主可注入自定义实现(如 SqliteVectorStore / LanceDBVectorStore),
23
- * 内核消费者(recall.ts / memoryInspector.ts / agent.ts)只依赖此接口,
24
- * 不耦合具体持久化方式(JSON / SQLite / 外部向量库)。
25
- *
26
- * 与 IMemoryStorage / IMemoryRelationStore / ILogger / ITracer 同属
27
- * 内核六大注入接口,遵循 ADR-002 存储层抽象原则。
28
- *
29
- * 内核内置实现:JsonVectorStore(JSON 文件持久化,单用户本地场景)。
30
- */
31
- export interface IVectorStore {
32
- /** 从持久化介质加载向量索引(冷启动) */
33
- load(): Promise<void>;
34
- /** 持久化向量索引到介质 */
35
- save(): Promise<void>;
36
- /**
37
- * 为文本生成向量并存储
38
- * @param id 记忆 ID
39
- * @param text 待嵌入的文本
40
- * @param options embedding 调用选项(signal 外部取消 + timeoutMs 超时)
41
- */
42
- upsert(id: string, text: string, options?: EmbeddingOptions): Promise<void>;
43
- /**
44
- * 批量嵌入并存储
45
- * @param items ID + 文本对
46
- * @param options embedding 调用选项(signal 外部取消 + timeoutMs 超时)
47
- */
48
- batchUpsert(items: Array<{
49
- id: string;
50
- text: string;
51
- }>, options?: EmbeddingOptions): Promise<void>;
52
- /**
53
- * 删除向量并立即持久化
54
- *
55
- * 与 upsert(标记 dirty 由调用方 save)不同,delete 是低频操作,
56
- * 立即 save 可防止崩溃后已删除向量在下次冷启动复活(FIX-P0-9)。
57
- *
58
- * @param id 待删除的记忆 ID
59
- */
60
- delete(id: string): Promise<void>;
61
- /**
62
- * 语义搜索:基于查询文本的向量,返回 topK 最相似的 ID
63
- * @param query 查询文本
64
- * @param topK 返回数量上限
65
- * @param minSimilarity 最低相似度阈值(0~1)
66
- * @param options embedding 调用选项(signal 外部取消 + timeoutMs 超时)
67
- * @returns ID + 相似度 对的数组,按相似度降序排列
68
- */
69
- search(query: string, topK?: number, minSimilarity?: number, options?: EmbeddingOptions): Promise<Array<{
70
- id: string;
71
- similarity: number;
72
- }>>;
73
- /** 获取存储的向量数量 */
74
- readonly size: number;
75
- }
76
- /**
77
- * JSON 持久化向量存储(IVectorStore 内核内置实现)
78
- *
79
- * 纯 JS 实现,内存中维护向量索引,定期持久化到 JSON 文件
80
- * 适用于单用户本地场景(5k 条记录以内)
81
- *
82
- * 依赖 EmbeddingService 接口(依赖倒置,与 llm/ 层解耦)
83
- * 实现 IVectorStore 接口,宿主可替换为其他实现(如 SqliteVectorStore)
84
- */
85
- export declare class JsonVectorStore implements IVectorStore {
86
- private readonly storePath;
87
- private readonly embeddingProvider;
88
- /** 内存中的向量索引 */
89
- private entries;
90
- /** 向量维度(由第一个插入的向量决定) */
91
- private dimension;
92
- /** 是否有未持久化的变更 */
93
- private dirty;
94
- /**
95
- * 串行化 save 调用的 Promise 链
96
- *
97
- * 防止并发 save 互相覆盖:每个 save 等待前一个完成后再执行。
98
- * 无并发时为 null,有并发时为正在执行的 Promise。
99
- */
100
- private savePromise;
101
- constructor(storePath: string, embeddingProvider: EmbeddingService);
102
- /**
103
- * 从 JSON 文件加载向量索引(冷启动)
104
- *
105
- * 加固:增加 schema 校验,损坏文件视为"从空开始"
106
- * 防止部分写入 / 手动编辑错误 / 版本不匹配的文件污染内存索引
107
- */
108
- load(): Promise<void>;
109
- /**
110
- * 将损坏的向量索引文件备份为 .corrupt.<timestamp>,便于人工恢复或 re-embed,
111
- * 避免 load 直接「从空开始」导致原始损坏数据被静默覆盖、不可逆丢失。
112
- */
113
- private backupCorrupt;
114
- /**
115
- * 持久化向量索引到 JSON 文件
116
- *
117
- * 加固:串行化并发 save,防止互相覆盖丢失数据。
118
- * 调用方可在并发场景下安全地多次调用 save,每次都会等待前一次完成。
119
- *
120
- * @returns 等待所有挂起 save 完成的 Promise
121
- */
122
- save(): Promise<void>;
123
- /**
124
- * 实际执行持久化的内部方法
125
- *
126
- * 由 save() 串行化调度,外部不应直接调用
127
- */
128
- private doSave;
129
- /**
130
- * 为文本生成向量并存储
131
- *
132
- * 加固:维度一致性校验,防止维度错位导致 cosineSimilarity 计算崩溃
133
- *
134
- * @param id 记忆 ID
135
- * @param text 待嵌入的文本
136
- * @param options embedding 调用选项(signal 外部取消 + timeoutMs 超时)
137
- * @throws {MemoraError} 当 embedding 返回的向量维度与已存维度不一致时抛出 configError
138
- */
139
- upsert(id: string, text: string, options?: EmbeddingOptions): Promise<void>;
140
- /**
141
- * 批量嵌入并存储
142
- *
143
- * 加固:维度一致性校验,与 upsert 同契约
144
- *
145
- * @param items ID + 文本对
146
- * @param options embedding 调用选项(signal 外部取消 + timeoutMs 超时)
147
- * @throws {MemoraError} 当 embedding 返回的向量维度与已存维度不一致时抛出 configError
148
- */
149
- batchUpsert(items: Array<{
150
- id: string;
151
- text: string;
152
- }>, options?: EmbeddingOptions): Promise<void>;
153
- /**
154
- * 删除向量并立即持久化
155
- *
156
- * FIX-P0-9:原实现仅标记 dirty=true 不 save,崩溃时已删除向量会在下次冷启动复活。
157
- * 现改为 async + 立即 save(与 upsert 不对称合理——delete 是低频操作,立即持久化代价可控)。
158
- *
159
- * @param id 待删除的记忆 ID
160
- */
161
- delete(id: string): Promise<void>;
162
- /**
163
- * 语义搜索:基于查询文本的向量,返回 topK 最相似的 ID
164
- * @param query 查询文本
165
- * @param topK 返回数量上限
166
- * @param minSimilarity 最低相似度阈值(0~1)
167
- * @param options embedding 调用选项(signal 外部取消 + timeoutMs 超时)
168
- * @returns ID + 相似度 对的数组,按相似度降序排列
169
- */
170
- search(query: string, topK?: number, minSimilarity?: number, options?: EmbeddingOptions): Promise<Array<{
171
- id: string;
172
- similarity: number;
173
- }>>;
174
- /**
175
- * 获取存储的向量数量
176
- */
177
- get size(): number;
178
- }
179
- //# sourceMappingURL=vectorStore.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"vectorStore.d.ts","sourceRoot":"","sources":["../../src/memory/vectorStore.ts"],"names":[],"mappings":"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"}
@@ -1,284 +0,0 @@
1
- /**
2
- * 向量存储 — 纯 JS 实现,内存 + JSON 持久化
3
- *
4
- * 语义检索的向量索引层:
5
- * - 存储记忆 ID → 向量的映射
6
- * - 支持余弦相似度搜索(topK)
7
- * - 持久化到 JSON 文件(冷启动时加载)
8
- *
9
- * 设计原则:
10
- * - 0 新 npm 依赖(不引入 sqlite-vec / LanceDB 等外部向量库)
11
- * - 单用户本地场景,5k 条记录内纯 JS 余弦相似度 < 10ms
12
- * - 向量维度由 embedding 模型决定,存储层不关心
13
- *
14
- * 加固点:
15
- * - load() 增加 schema 校验(防止损坏文件污染内存索引)
16
- * - upsert/batchUpsert 增加维度一致性校验(防止维度错位导致相似度计算崩溃)
17
- * - save() 串行化(防止并发 save 互相覆盖丢失数据)
18
- * - delete() 立即 save(FIX-P0-9:防止崩溃后已删除向量复活)
19
- *
20
- * 详见 ADR-002 · 存储层抽象(向量检索备选方案)
21
- * 详见 ADR-013 · 记忆归档三步价值过滤
22
- */
23
- import { readFile, writeFile, mkdir, rename } from 'node:fs/promises';
24
- import { dirname } from 'node:path';
25
- import { logger } from '../logging/logger.js';
26
- import { configError } from '../utils/errors.js';
27
- import { cosineSimilarity } from '../utils/math.js';
28
- /**
29
- * 校验持久化文件是否符合 VectorStoreFile schema
30
- *
31
- * 防止损坏文件 / 旧版格式 / 手动编辑错误污染内存索引。
32
- * 校验项:
33
- * - 顶层为对象
34
- * - version === 1(未来版本需迁移逻辑)
35
- * - dimension 为非负整数
36
- * - entries 为数组,每个条目含字符串 id 和数字数组 vector
37
- * - 所有 vector 长度等于 dimension
38
- *
39
- * @param data 已 JSON.parse 的对象
40
- * @returns true 表示通过校验
41
- */
42
- function isValidVectorStoreFile(data) {
43
- if (typeof data !== 'object' || data === null)
44
- return false;
45
- const obj = data;
46
- if (obj.version !== 1)
47
- return false;
48
- if (typeof obj.dimension !== 'number' || !Number.isInteger(obj.dimension) || obj.dimension < 0) {
49
- return false;
50
- }
51
- if (!Array.isArray(obj.entries))
52
- return false;
53
- for (const entry of obj.entries) {
54
- if (typeof entry !== 'object' || entry === null)
55
- return false;
56
- const e = entry;
57
- if (typeof e.id !== 'string' || e.id.length === 0)
58
- return false;
59
- if (!Array.isArray(e.vector))
60
- return false;
61
- if (!e.vector.every((v) => typeof v === 'number' && Number.isFinite(v)))
62
- return false;
63
- if (e.vector.length !== obj.dimension)
64
- return false;
65
- }
66
- return true;
67
- }
68
- /**
69
- * JSON 持久化向量存储(IVectorStore 内核内置实现)
70
- *
71
- * 纯 JS 实现,内存中维护向量索引,定期持久化到 JSON 文件
72
- * 适用于单用户本地场景(5k 条记录以内)
73
- *
74
- * 依赖 EmbeddingService 接口(依赖倒置,与 llm/ 层解耦)
75
- * 实现 IVectorStore 接口,宿主可替换为其他实现(如 SqliteVectorStore)
76
- */
77
- export class JsonVectorStore {
78
- storePath;
79
- embeddingProvider;
80
- /** 内存中的向量索引 */
81
- entries = new Map();
82
- /** 向量维度(由第一个插入的向量决定) */
83
- dimension = 0;
84
- /** 是否有未持久化的变更 */
85
- dirty = false;
86
- /**
87
- * 串行化 save 调用的 Promise 链
88
- *
89
- * 防止并发 save 互相覆盖:每个 save 等待前一个完成后再执行。
90
- * 无并发时为 null,有并发时为正在执行的 Promise。
91
- */
92
- savePromise = null;
93
- constructor(storePath, embeddingProvider) {
94
- this.storePath = storePath;
95
- this.embeddingProvider = embeddingProvider;
96
- }
97
- /**
98
- * 从 JSON 文件加载向量索引(冷启动)
99
- *
100
- * 加固:增加 schema 校验,损坏文件视为"从空开始"
101
- * 防止部分写入 / 手动编辑错误 / 版本不匹配的文件污染内存索引
102
- */
103
- async load() {
104
- let content;
105
- try {
106
- content = await readFile(this.storePath, 'utf-8');
107
- }
108
- catch {
109
- // 文件不存在,从空开始(正常冷启动路径)
110
- logger.info({ path: this.storePath }, '向量索引文件不存在,从空开始');
111
- return;
112
- }
113
- try {
114
- const data = JSON.parse(content);
115
- // schema 校验:损坏 / 格式错误的文件视为"从空开始",但先备份以免数据不可逆丢失
116
- if (!isValidVectorStoreFile(data)) {
117
- await this.backupCorrupt();
118
- logger.warn({ path: this.storePath }, '向量索引文件格式无效,已从空开始并备份损坏文件');
119
- return;
120
- }
121
- this.dimension = data.dimension;
122
- this.entries.clear();
123
- for (const entry of data.entries) {
124
- this.entries.set(entry.id, entry.vector);
125
- }
126
- this.dirty = false;
127
- logger.info({ count: this.entries.size, dimension: this.dimension }, '向量索引加载完成');
128
- }
129
- catch {
130
- // JSON 解析失败(文件半写 / 手动损坏),从空开始并备份
131
- await this.backupCorrupt();
132
- logger.warn({ path: this.storePath }, '向量索引文件解析失败,已从空开始并备份损坏文件');
133
- }
134
- }
135
- /**
136
- * 将损坏的向量索引文件备份为 .corrupt.<timestamp>,便于人工恢复或 re-embed,
137
- * 避免 load 直接「从空开始」导致原始损坏数据被静默覆盖、不可逆丢失。
138
- */
139
- async backupCorrupt() {
140
- try {
141
- await rename(this.storePath, `${this.storePath}.corrupt.${Date.now()}`);
142
- }
143
- catch (err) {
144
- logger.warn({ err, path: this.storePath }, '备份损坏向量索引文件失败(不影响从空开始)');
145
- }
146
- }
147
- /**
148
- * 持久化向量索引到 JSON 文件
149
- *
150
- * 加固:串行化并发 save,防止互相覆盖丢失数据。
151
- * 调用方可在并发场景下安全地多次调用 save,每次都会等待前一次完成。
152
- *
153
- * @returns 等待所有挂起 save 完成的 Promise
154
- */
155
- async save() {
156
- // 串行化:将本次 save 追加到既有链尾(或开启新链),确保多个 save 严格顺序执行。
157
- // 仅当本节点仍是链尾(未被更新的 save 取代)时才在完成后清空引用,
158
- // 避免旧实现「.finally 直接置 null」把仍在飞行的后续 save 链引用截断,导致并发写。
159
- const p = (this.savePromise ?? Promise.resolve()).then(() => this.doSave());
160
- this.savePromise = p;
161
- p.finally(() => {
162
- if (this.savePromise === p)
163
- this.savePromise = null;
164
- });
165
- return p;
166
- }
167
- /**
168
- * 实际执行持久化的内部方法
169
- *
170
- * 由 save() 串行化调度,外部不应直接调用
171
- */
172
- async doSave() {
173
- if (!this.dirty)
174
- return;
175
- const data = {
176
- version: 1,
177
- dimension: this.dimension,
178
- entries: Array.from(this.entries.entries()).map(([id, vector]) => ({ id, vector })),
179
- };
180
- await mkdir(dirname(this.storePath), { recursive: true });
181
- // M9 修复:先写临时文件再原子 rename,避免写一半崩溃导致 vectors.json 损坏、
182
- // 下次加载 isValidVectorStoreFile 失败而整库向量静默清空(向量索引昂贵且只能重算)。
183
- const tmpPath = `${this.storePath}.tmp`;
184
- await writeFile(tmpPath, JSON.stringify(data), 'utf-8');
185
- await rename(tmpPath, this.storePath);
186
- this.dirty = false;
187
- logger.info({ count: this.entries.size }, '向量索引持久化完成');
188
- }
189
- /**
190
- * 为文本生成向量并存储
191
- *
192
- * 加固:维度一致性校验,防止维度错位导致 cosineSimilarity 计算崩溃
193
- *
194
- * @param id 记忆 ID
195
- * @param text 待嵌入的文本
196
- * @param options embedding 调用选项(signal 外部取消 + timeoutMs 超时)
197
- * @throws {MemoraError} 当 embedding 返回的向量维度与已存维度不一致时抛出 configError
198
- */
199
- async upsert(id, text, options) {
200
- const vector = await this.embeddingProvider.embed(text, options);
201
- if (this.dimension === 0) {
202
- this.dimension = vector.length;
203
- }
204
- else if (vector.length !== this.dimension) {
205
- // 维度不一致会破坏 cosineSimilarity 计算(长度不匹配返回 0)
206
- // 此处主动报错,让调用方感知模型切换或配置错误
207
- // G-1:统一 MemoraError 体系,提供中文标题 + 排查建议
208
- throw configError('向量维度不一致', `期望 ${this.dimension},实际 ${vector.length}(id=${id})。可能是 embedding 模型切换导致。`, ['清空 vectors.json 后重试', '检查 embedding 模型是否切换']);
209
- }
210
- this.entries.set(id, vector);
211
- this.dirty = true;
212
- }
213
- /**
214
- * 批量嵌入并存储
215
- *
216
- * 加固:维度一致性校验,与 upsert 同契约
217
- *
218
- * @param items ID + 文本对
219
- * @param options embedding 调用选项(signal 外部取消 + timeoutMs 超时)
220
- * @throws {MemoraError} 当 embedding 返回的向量维度与已存维度不一致时抛出 configError
221
- */
222
- async batchUpsert(items, options) {
223
- const texts = items.map((item) => item.text);
224
- const results = await this.embeddingProvider.batchEmbed(texts, options);
225
- for (let i = 0; i < items.length; i++) {
226
- const result = results[i];
227
- const item = items[i];
228
- if (!result || !item)
229
- continue;
230
- if (this.dimension === 0) {
231
- this.dimension = result.vector.length;
232
- }
233
- else if (result.vector.length !== this.dimension) {
234
- // 维度不一致会破坏 cosineSimilarity 计算
235
- // G-1:统一 MemoraError 体系,提供中文标题 + 排查建议
236
- throw configError('批量插入向量维度不一致', `期望 ${this.dimension},实际 ${result.vector.length}(id=${item.id})`, ['清空 vectors.json 后重试', '检查 embedding 模型是否切换']);
237
- }
238
- this.entries.set(item.id, result.vector);
239
- }
240
- this.dirty = true;
241
- }
242
- /**
243
- * 删除向量并立即持久化
244
- *
245
- * FIX-P0-9:原实现仅标记 dirty=true 不 save,崩溃时已删除向量会在下次冷启动复活。
246
- * 现改为 async + 立即 save(与 upsert 不对称合理——delete 是低频操作,立即持久化代价可控)。
247
- *
248
- * @param id 待删除的记忆 ID
249
- */
250
- async delete(id) {
251
- this.entries.delete(id);
252
- this.dirty = true;
253
- // 立即持久化,串行化由 save() 内部 savePromise 链保证
254
- await this.save();
255
- }
256
- /**
257
- * 语义搜索:基于查询文本的向量,返回 topK 最相似的 ID
258
- * @param query 查询文本
259
- * @param topK 返回数量上限
260
- * @param minSimilarity 最低相似度阈值(0~1)
261
- * @param options embedding 调用选项(signal 外部取消 + timeoutMs 超时)
262
- * @returns ID + 相似度 对的数组,按相似度降序排列
263
- */
264
- async search(query, topK = 5, minSimilarity = 0.3, options) {
265
- const queryVector = await this.embeddingProvider.embed(query, options);
266
- const scored = [];
267
- for (const [id, vector] of this.entries) {
268
- const similarity = cosineSimilarity(queryVector, vector);
269
- if (similarity >= minSimilarity) {
270
- scored.push({ id, similarity });
271
- }
272
- }
273
- // 按相似度降序排列,取 topK
274
- scored.sort((a, b) => b.similarity - a.similarity);
275
- return scored.slice(0, topK);
276
- }
277
- /**
278
- * 获取存储的向量数量
279
- */
280
- get size() {
281
- return this.entries.size;
282
- }
283
- }
284
- //# sourceMappingURL=vectorStore.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"vectorStore.js","sourceRoot":"","sources":["../../src/memory/vectorStore.ts"],"names":[],"mappings":"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"}
@@ -1,109 +0,0 @@
1
- import { ConfigResourceManager } from '../utils/configResourceManager.js';
2
- import type { Persona, PersonaMode } from '../persona/types.js';
3
- import type { ScannedMarkdownEntry } from '../utils/scanner.js';
4
- /**
5
- * 角色管理器
6
- */
7
- export declare class PersonaManager extends ConfigResourceManager<Persona, string> {
8
- /** 当前激活的角色 */
9
- private activePersona;
10
- /** 激活模式 */
11
- private mode;
12
- /** 角色切换时间戳列表(用于时间窗口缓冲) */
13
- private switchTimestamps;
14
- /** 缓冲区开关(30s 内 5 次切换后锁定) */
15
- private switchLocked;
16
- /** 锁定恢复计时器 */
17
- private unlockTimer;
18
- /** 锁定自动恢复时间戳(ms epoch) */
19
- private unlockAt;
20
- /** 时间窗口:30 秒 */
21
- private static readonly SWITCH_WINDOW_MS;
22
- /** 窗口内最大切换次数:5 次 */
23
- private static readonly MAX_SWITCHES_IN_WINDOW;
24
- /** 锁定后自动恢复时间:2 分钟 */
25
- private static readonly AUTO_UNLOCK_MS;
26
- /**
27
- * @param configDir 配置目录(角色文件在 <configDir>/personas/ 下)
28
- */
29
- constructor(configDir?: string);
30
- /**
31
- * 启动时加载:扫描目录 + 激活指定角色
32
- *
33
- * @param activePersona 要激活的角色名(可选,不传则使用第一个找到的角色)
34
- * @returns 激活角色的 system prompt 段
35
- */
36
- load(activePersona?: string): Promise<string>;
37
- /**
38
- * 重载角色:清空内存缓存 + 重新扫描 + 保持当前激活角色
39
- */
40
- reload(): Promise<number>;
41
- /**
42
- * load() 完成后选择激活角色
43
- *
44
- * @param _items 已加载的角色列表
45
- * @param activeName 指定的激活角色名(options 参数)
46
- */
47
- protected onAfterLoad(_items: Persona[], activeName?: string): void;
48
- /** 当前激活的角色名 */
49
- get activeName(): string;
50
- /** 获取当前激活角色对象 */
51
- getActive(): Persona | null;
52
- /** 获取角色列表(委托基类) */
53
- get list(): Persona[];
54
- /**
55
- * 切换角色(带时间窗口缓冲)
56
- *
57
- * @param name 角色名
58
- * @returns 新角色的 system prompt 段
59
- * @throws MemoraError 如果角色不存在
60
- */
61
- switchPersona(name: string): string;
62
- /**
63
- * 根据用户输入自动匹配最合适的角色(关键词高置信度匹配)
64
- *
65
- * @param userInput 用户输入文本
66
- * @returns 匹配的角色名,无匹配返回 null
67
- */
68
- autoMatch(userInput: string): string | null;
69
- /**
70
- * 检查是否满足自动匹配的前置条件
71
- */
72
- canAutoMatch(): boolean;
73
- /** 设置激活模式 */
74
- setMode(mode: PersonaMode): void;
75
- /** 获取角色切换锁定状态 */
76
- getSwitchLockStatus(): {
77
- locked: boolean;
78
- unlockAt: number | null;
79
- };
80
- /** 获取当前激活模式 */
81
- get currentMode(): PersonaMode;
82
- /**
83
- * 清理定时器资源(Agent.close() 时调用)
84
- */
85
- close(): void;
86
- /**
87
- * 删除角色
88
- *
89
- * 若删除的是激活角色,自动回退到列表第一个或默认角色。
90
- *
91
- * @param name 角色名
92
- * @returns true 删除成功;false 角色不存在
93
- */
94
- deletePersona(name: string): boolean;
95
- /**
96
- * 构建 system prompt 中的角色段
97
- */
98
- buildSystemPrompt(name?: string): string;
99
- protected createEntry(entry: ScannedMarkdownEntry): Persona;
100
- /**
101
- * 记录一次角色切换(时间窗口缓冲)
102
- */
103
- private recordSwitch;
104
- /**
105
- * 创建默认角色
106
- */
107
- private createDefaultPersona;
108
- }
109
- //# sourceMappingURL=personaManager.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"personaManager.d.ts","sourceRoot":"","sources":["../../src/persona/personaManager.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AACzE,OAAO,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAE/D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAyB/D;;GAEG;AACH,qBAAa,cAAe,SAAQ,qBAAqB,CAAC,OAAO,EAAE,MAAM,CAAC;IACxE,cAAc;IACd,OAAO,CAAC,aAAa,CAAwB;IAC7C,WAAW;IACX,OAAO,CAAC,IAAI,CAAuB;IACnC,0BAA0B;IAC1B,OAAO,CAAC,gBAAgB,CAAgB;IACxC,4BAA4B;IAC5B,OAAO,CAAC,YAAY,CAAS;IAC7B,cAAc;IACd,OAAO,CAAC,WAAW,CAA8C;IACjE,0BAA0B;IAC1B,OAAO,CAAC,QAAQ,CAAuB;IAEvC,gBAAgB;IAChB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,gBAAgB,CAAU;IAClD,oBAAoB;IACpB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,sBAAsB,CAAK;IACnD,qBAAqB;IACrB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAW;IAEjD;;OAEG;gBACS,SAAS,CAAC,EAAE,MAAM;IAM9B;;;;;OAKG;IACG,IAAI,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAMnD;;OAEG;IACG,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC;IA6B/B;;;;;OAKG;IACH,SAAS,CAAC,WAAW,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI;IAwBnE,eAAe;IACf,IAAI,UAAU,IAAI,MAAM,CAEvB;IAED,iBAAiB;IACjB,SAAS,IAAI,OAAO,GAAG,IAAI;IAI3B,mBAAmB;IACnB,IAAI,IAAI,IAAI,OAAO,EAAE,CAEpB;IAED;;;;;;OAMG;IACH,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAwBnC;;;;;OAKG;IACH,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAe3C;;OAEG;IACH,YAAY,IAAI,OAAO;IAIvB,aAAa;IACb,OAAO,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI;IAUhC,iBAAiB;IACjB,mBAAmB,IAAI;QAAE,MAAM,EAAE,OAAO,CAAC;QAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE;IAInE,eAAe;IACf,IAAI,WAAW,IAAI,WAAW,CAE7B;IAED;;OAEG;IACH,KAAK,IAAI,IAAI;IAUb;;;;;;;OAOG;IACH,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAqBpC;;OAEG;IACH,iBAAiB,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM;IAUxC,SAAS,CAAC,WAAW,CAAC,KAAK,EAAE,oBAAoB,GAAG,OAAO;IAe3D;;OAEG;IACH,OAAO,CAAC,YAAY;IAqBpB;;OAEG;IACH,OAAO,CAAC,oBAAoB;CAU7B"}