@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,182 +1,83 @@
1
- import { FileStore } from '../memory/store.js';
2
1
  import type { IMemoryStorage } from '../memory/storageInterface.js';
3
- import type { LoadResult } from '../memory/loader.js';
4
2
  import type { SecurityGuard } from '../security/pathGuard.js';
5
3
  import { type Memory } from '../memory/types.js';
6
4
  import { type ProjectEntry } from '../memory/projectRegistry.js';
7
- /**
8
- * 项目上下文:打开一个项目后产出的一组组件
9
- * 与 DomainContext 类似,但增加了项目级别的信息
10
- */
5
+ /** 项目上下文:打开一个项目后产出的一组组件(含项目级信息) */
11
6
  export interface ProjectContext {
12
7
  /** 项目根目录的绝对路径 */
13
8
  projectPath: string;
14
- /** 项目名称(从注册表读取,或取目录名) */
9
+ /** 项目名称(注册表读取或取目录名) */
15
10
  projectName: string;
16
11
  /** .memora/ 目录的绝对路径 */
17
12
  memoraDir: string;
18
- /** Agent 级 memora.db 路径(全局共享,非项目级) */
19
- dbPath: string;
20
- /** 文件存储 */
21
- fileStore: FileStore;
22
- /** SQLite 索引(通过 IMemoryStorage 接口访问) */
13
+ /** 记忆存储(经 IMemoryStorage 接口访问) */
23
14
  index: IMemoryStorage;
24
- /** 安全守卫(可空,由 Agent 层注入工厂函数创建) */
15
+ /** 安全守卫(可空,由 Agent 层注入工厂创建) */
25
16
  security: SecurityGuard | null;
26
- /** 启动时加载的必召记忆 */
17
+ /** 启动必召记忆(设定记忆唯一归角色包内容层,恒为空数组) */
27
18
  bootstrapMemories: Memory[];
28
- /** 加载结果 */
29
- loadResult: LoadResult;
30
19
  }
31
- /**
32
- * ProjectManager 构造选项
33
- */
20
+ /** ProjectManager 构造选项 */
34
21
  export interface ProjectManagerOptions {
35
- /** Agent 级数据目录(memora.db 所在目录) */
22
+ /** Agent 级数据目录(宿主传入;内核不假设其下的文件形态) */
36
23
  dataDir: string;
37
- /** 外部注入的存储实例(可选,不传则内部创建 InMemoryStorage 兜底) */
24
+ /** 外部注入存储实例(可选,不传则内部 InMemoryStorage 兜底) */
38
25
  storage?: IMemoryStorage;
39
- /** 注册表目录(可选,默认与 dataDir 相同) */
26
+ /** 注册表目录(可选,缺省同 dataDir;跨项目按名解析需要多项目共用一份注册表) */
40
27
  registryDir?: string;
41
28
  /**
42
- * SecurityGuard 工厂函数(由 Agent 层注入,解除 memory→security 反向依赖)
43
- *
44
- * 在项目切换时调用,传入项目路径、.memora/ 目录、Agent 级配置目录和数据目录,
45
- * 返回一个配置好的 SecurityGuard 实例。
46
- * 不提供时 ProjectContext.security 为 null(宿主需自行处理安全校验)。
29
+ * SecurityGuard 工厂函数(Agent 层注入,解除 memory→security 反向依赖)。
30
+ * 项目切换时调用;不提供则 ProjectContext.security 为 null。
47
31
  */
48
32
  createSecurityGuard?: (projectPath: string, memoraDir: string, configDir?: string, agentDataDir?: string) => SecurityGuard;
49
33
  }
50
34
  /**
51
- * 项目管理器
52
- *
53
- * 管理多项目的生命周期:
54
- * 1. 初始化当前项目(加锁 + 加载两层配置)
55
- * 2. /project <name> 切换到新项目(解锁旧项目 + 加锁新项目)
56
- * 3. 退出时清理锁文件
57
- *
58
- * 注册表/锁文件实现委托给 ProjectRegistry / LockManager,
59
- * 本类聚焦生命周期编排。
35
+ * 项目管理器:管理多项目生命周期——初始化当前项目(加锁+加载两层配置)、
36
+ * 切换到新项目(解锁旧+锁新)、退出清理锁文件。注册表/锁文件委托专职模块,本类聚焦编排。
60
37
  */
61
38
  export declare class ProjectManager {
62
- /** Agent 级数据目录(memora.db 所在目录) */
39
+ /** Agent 级数据目录(宿主传入;内核不假设其下的文件形态) */
63
40
  private readonly agentDataDir;
64
41
  /** Agent 级存储实例(全局共享,不随项目切换重建) */
65
42
  private agentIndex;
66
43
  /** 当前打开的项目路径 */
67
44
  private currentProjectPath;
68
- /** 外部注入的存储实例(可选,不传则内部创建 InMemoryStorage 兜底) */
45
+ /** 外部注入存储实例(不传则内部 InMemoryStorage 兜底) */
69
46
  private externalStorage;
70
- /** SecurityGuard 工厂函数(由 Agent 层注入) */
47
+ /** SecurityGuard 工厂函数(Agent 层注入) */
71
48
  private readonly createSecurityGuard?;
72
- /** 项目注册表(专职管理 projects.json) */
49
+ /** 项目注册表(专职 projects.json) */
73
50
  private readonly registry;
74
- /** 锁文件管理器(专职管理 .memora/.lock) */
51
+ /** 锁文件管理器(专职 .memora/.lock) */
75
52
  private readonly lockManager;
76
- /** 当前项目级记忆在共享 index 中的 ID 集合(closeProject 时撤销,修复跨项目隔离泄漏) */
77
- private currentProjectMemoryIds;
78
53
  constructor(options: ProjectManagerOptions);
79
54
  /**
80
- * 确保 Agent 级资源已初始化(存储实例)
81
- * 存储实例在整个 Agent 生命周期内共享,不随项目切换重建
82
- *
83
- * 如果构造时注入了外部存储实例,直接使用;
84
- * 否则内部创建 InMemoryStorage(非持久化兜底,仅开发/测试用)。
55
+ * 确保 Agent 级资源(存储实例)已初始化,生命周期内共享不随项目切换重建。
56
+ * 构造注入的外部实例直接用,否则内部 InMemoryStorage(非持久化,仅开发/测试)。
85
57
  */
86
58
  private ensureAgentResources;
87
59
  /**
88
- * 初始化指定项目
89
- *
90
- * 两层记忆加载:
91
- * 1) 项目级:扫描 projectPath/.memora/rules/ + skills/
92
- * 2) Agent 级:扫描 configDir 下的所有配置(rules/skills/personas/tools)
93
- *
94
- * 全局规则不再由内核硬编码路径,宿主可通过 configDir 统一管理。
95
- *
96
- * memora.db 是 Agent 级共享资源,不随项目切换重建。
97
- *
98
- * 主体编排(关闭旧项目 + 锁 + 错误回滚)+ loadAllResources(两层加载)
99
- * + buildProjectContext(上下文构建)三个子方法分工。
100
- *
101
- * @param projectPath 项目根目录
102
- * @param projectName 项目名称(可选,默认取目录名)
103
- * @param configDir Agent 级配置目录(personas/rules/skills/tools)
60
+ * 初始化项目:关闭旧项目→取项目级锁→确保共享存储→构建上下文。
61
+ * 任一步失败释放锁并重置状态,防锁文件残留导致下次启动检测失败。
104
62
  */
105
63
  initProject(projectPath: string, projectName?: string, configDir?: string): Promise<ProjectContext>;
106
64
  /**
107
- * 加载两层记忆资源
108
- *
109
- * 职责:确保 Agent 级存储 + 扫描项目级 + 扫描 Agent 级配置,合并加载结果。
110
- *
111
- * @param memoraDir 项目 .memora/ 目录
112
- * @param configDir Agent 级配置目录(可选)
113
- * @returns index 存储实例 + loadResult 合并加载结果 + projectFileStore 项目级 FileStore
114
- */
115
- private loadAllResources;
116
- /**
117
- * 构建项目上下文
118
- *
119
- * 职责:bootstrap 过滤 + 安全守卫创建 + 项目注册 + 日志 + 返回上下文。
120
- *
121
- * @param projectPath 项目根目录
122
- * @param projectName 项目名称(可选,默认取目录名)
123
- * @param memoraDir 项目 .memora/ 目录
124
- * @param index 存储实例
125
- * @param projectFileStore 项目级 FileStore
126
- * @param loadResult 加载结果
127
- * @param configDir Agent 级配置目录(用于安全守卫创建)
128
- * @returns 完整的项目上下文
65
+ * 构建项目上下文:bootstrap 过滤(恒为空,设定记忆归角色包层)+ 安全守卫创建 + 项目注册 + 日志。
129
66
  */
130
67
  private buildProjectContext;
131
- /**
132
- * 关闭当前项目
133
- * 释放锁文件,但不关闭 Agent 级数据库(memora.db 是共享的)
134
- */
68
+ /** 关闭当前项目:释放锁/清状态,但不关 Agent 级 DB(共享,Agent 生命周期内持久存在) */
135
69
  closeProject(): Promise<void>;
136
- /**
137
- * 完全关闭:释放项目锁 + 关闭 Agent 级数据库
138
- * 应在 Agent 整体关闭时调用(而非项目切换时)
139
- */
70
+ /** 完全关闭:释放项目锁 + 关闭 Agent 级数据库(应在 Agent 整体关闭而非项目切换时调用) */
140
71
  shutdown(): Promise<void>;
141
- /**
142
- * 列出已注册的项目(IX-02:统一为 getter 风格,与 persona/skill 一致)
143
- *
144
- * 委托给 ProjectRegistry。
145
- */
72
+ /** 列出已注册项目(委托 ProjectRegistry) */
146
73
  get list(): ProjectEntry[];
147
- /**
148
- * 列出已注册的项目
149
- *
150
- * v1.0 公共 API(CHANGELOG 迁移路径:`agent.listProjects()` → `agent.projects.listProjects()`)。
151
- * 与 `.list` getter 等价,保留方法形式以兼容 0.3 迁移路径。
152
- */
153
- listProjects(): ProjectEntry[];
154
- /**
155
- * 注册项目到注册表
156
- *
157
- * 委托给 ProjectRegistry。
158
- *
159
- * @param projectPath 项目根目录
160
- * @param name 项目名称
161
- */
74
+ /** 注册项目(委托 ProjectRegistry) */
162
75
  registerProject(projectPath: string, name: string): void;
163
- /**
164
- * 从注册表移除项目
165
- *
166
- * 委托给 ProjectRegistry。
167
- *
168
- * @param projectPath 项目根目录
169
- */
76
+ /** 移除项目(委托 ProjectRegistry) */
170
77
  unregisterProject(projectPath: string): void;
171
- /**
172
- * 获取当前项目路径
173
- */
78
+ /** 当前项目路径 */
174
79
  get currentProject(): string | null;
175
- /**
176
- * 解析项目的 .memora/ 目录路径
177
- * 每个项目有独立的 .memora/ 目录(在项目根目录下)
178
- * 这与 config.memory.dataDir(用户级默认目录)不同
179
- */
80
+ /** 解析项目 .memora/ 目录(项目根目录下,区别于用户级 dataDir) */
180
81
  private resolveMemoraDir;
181
82
  }
182
83
  //# sourceMappingURL=projectManager.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"projectManager.d.ts","sourceRoot":"","sources":["../../src/memory/projectManager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"projectManager.d.ts","sourceRoot":"","sources":["../../src/memory/projectManager.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAG7D,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAmB,KAAK,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAKjF,mCAAmC;AACnC,MAAM,WAAW,cAAc;IAC7B,iBAAiB;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,uBAAuB;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,uBAAuB;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,kCAAkC;IAClC,KAAK,EAAE,cAAc,CAAC;IACtB,+BAA+B;IAC/B,QAAQ,EAAE,aAAa,GAAG,IAAI,CAAC;IAC/B,kCAAkC;IAClC,iBAAiB,EAAE,MAAM,EAAE,CAAC;CAC7B;AAED,0BAA0B;AAC1B,MAAM,WAAW,qBAAqB;IACpC,qCAAqC;IACrC,OAAO,EAAE,MAAM,CAAC;IAChB,4CAA4C;IAC5C,OAAO,CAAC,EAAE,cAAc,CAAC;IACzB,gDAAgD;IAChD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;OAGG;IACH,mBAAmB,CAAC,EAAE,CACpB,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,EACjB,SAAS,CAAC,EAAE,MAAM,EAClB,YAAY,CAAC,EAAE,MAAM,KAClB,aAAa,CAAC;CACpB;AAID;;;GAGG;AACH,qBAAa,cAAc;IACzB,qCAAqC;IACrC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;IACtC,iCAAiC;IACjC,OAAO,CAAC,UAAU,CAA+B;IACjD,gBAAgB;IAChB,OAAO,CAAC,kBAAkB,CAAuB;IACjD,yCAAyC;IACzC,OAAO,CAAC,eAAe,CAAwB;IAC/C,oCAAoC;IACpC,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAC,CAKlB;IACnB,8BAA8B;IAC9B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAkB;IAC3C,+BAA+B;IAC/B,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAc;gBAE9B,OAAO,EAAE,qBAAqB;IAe1C;;;OAGG;YACW,oBAAoB;IAiBlC;;;OAGG;IACG,WAAW,CACf,WAAW,EAAE,MAAM,EACnB,WAAW,CAAC,EAAE,MAAM,EACpB,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,cAAc,CAAC;IA0B1B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAuC3B,wDAAwD;IAClD,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAKnC,yDAAyD;IACnD,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAc/B,kCAAkC;IAClC,IAAI,IAAI,IAAI,YAAY,EAAE,CAEzB;IAED,+BAA+B;IAC/B,eAAe,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI;IAIxD,+BAA+B;IAC/B,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI;IAI5C,aAAa;IACb,IAAI,cAAc,IAAI,MAAM,GAAG,IAAI,CAElC;IAED,8CAA8C;IAC9C,OAAO,CAAC,gBAAgB;CAGzB"}
@@ -1,93 +1,62 @@
1
1
  /**
2
- * 项目管理器 — 多项目生命周期编排(瘦身后)
3
- *
4
- * 核心职责(聚焦编排):
5
- * - 项目初始化编排(关闭旧项目 → 加锁 → 加载资源 → 构建上下文)
6
- * - Agent 级资源管理(memora.db 全局共享,不随项目切换重建)
7
- * - 两层记忆加载:项目级(projectPath/.memora/)→ Agent 级(configDir)
8
- * - 项目切换(只更新 projectPath + security + 重新加载项目 rules/skills)
9
- *
10
- * 已拆分至专职模块(1.0 接口稳定化):
11
- * - ProjectRegistry(src/memory/projectRegistry.ts):注册表读写 + 条目管理
12
- * - LockManager(src/memory/lockManager.ts):锁文件获取/释放 + 残留锁检测
13
- *
14
- * 设计原则(单 Agent 模型):
15
- * - memora.db 只有一个(Agent 级),所有项目共享同一记忆数据库
16
- * - 项目切换不重建数据库,只更新安全守卫 + 重新扫描项目规则
17
- * - 项目级 .memora/ 仅存放 rules/ 和 skills/(无 memora.db)
18
- *
19
- * 详见 ADR-008 · 目录结构按"职责分层"
2
+ * 项目管理器 — 多项目生命周期编排(单 Agent 模型)。
3
+ * 职责:项目初始化编排(关旧项目→加锁→加载资源→构建上下文)、Agent 级资源管理
4
+ * (memora.db 全局共享不随切换重建)、两层记忆加载。注册表/锁文件委托专职模块 ProjectRegistry / LockManager。
5
+ * 原则:memora.db 只有一个(Agent 级);项目切换不重建库,只更新安全守卫+重扫项目规则;
6
+ * 项目级 .memora/ 仅存放 rules 与 skills(无 memora.db)。
20
7
  */
21
8
  import { resolve, join } from 'node:path';
22
9
  import { mkdir } from 'node:fs/promises';
23
- import { FileStore } from '../memory/store.js';
24
10
  import { InMemoryStorage } from '../memory/inMemoryStorage.js';
25
- import { MemoryLoader } from '../memory/loader.js';
26
11
  import { logger } from '../logging/logger.js';
27
12
  import { expandHome } from '../utils/path.js';
28
- import { SOURCE_LABELS } from '../memory/types.js';
29
13
  import { ProjectRegistry } from '../memory/projectRegistry.js';
30
14
  import { LockManager } from '../memory/lockManager.js';
31
15
  // ─── 类 ──────────────────────────────────────────────────
32
16
  /**
33
- * 项目管理器
34
- *
35
- * 管理多项目的生命周期:
36
- * 1. 初始化当前项目(加锁 + 加载两层配置)
37
- * 2. /project <name> 切换到新项目(解锁旧项目 + 加锁新项目)
38
- * 3. 退出时清理锁文件
39
- *
40
- * 注册表/锁文件实现委托给 ProjectRegistry / LockManager,
41
- * 本类聚焦生命周期编排。
17
+ * 项目管理器:管理多项目生命周期——初始化当前项目(加锁+加载两层配置)、
18
+ * 切换到新项目(解锁旧+锁新)、退出清理锁文件。注册表/锁文件委托专职模块,本类聚焦编排。
42
19
  */
43
20
  export class ProjectManager {
44
- /** Agent 级数据目录(memora.db 所在目录) */
21
+ /** Agent 级数据目录(宿主传入;内核不假设其下的文件形态) */
45
22
  agentDataDir;
46
23
  /** Agent 级存储实例(全局共享,不随项目切换重建) */
47
24
  agentIndex = null;
48
25
  /** 当前打开的项目路径 */
49
26
  currentProjectPath = null;
50
- /** 外部注入的存储实例(可选,不传则内部创建 InMemoryStorage 兜底) */
27
+ /** 外部注入存储实例(不传则内部 InMemoryStorage 兜底) */
51
28
  externalStorage;
52
- /** SecurityGuard 工厂函数(由 Agent 层注入) */
29
+ /** SecurityGuard 工厂函数(Agent 层注入) */
53
30
  createSecurityGuard;
54
- /** 项目注册表(专职管理 projects.json) */
31
+ /** 项目注册表(专职 projects.json) */
55
32
  registry;
56
- /** 锁文件管理器(专职管理 .memora/.lock) */
33
+ /** 锁文件管理器(专职 .memora/.lock) */
57
34
  lockManager;
58
- /** 当前项目级记忆在共享 index 中的 ID 集合(closeProject 时撤销,修复跨项目隔离泄漏) */
59
- currentProjectMemoryIds = new Set();
60
35
  constructor(options) {
61
36
  const { dataDir, storage, registryDir, createSecurityGuard } = options;
62
37
  const memoraHome = resolve(expandHome(dataDir));
63
38
  this.agentDataDir = memoraHome;
64
- // 注册表目录:优先使用宿主指定的用户级路径,避免每项目重复存储
39
+ // 注册表目录:显式指定时用之(典型为用户级路径,使注册表跨项目共享);
40
+ // 缺省随 dataDir——此时注册表能否跨项目取决于调用方传的 dataDir 是共享还是项目级,
41
+ // 内核不做假设:项目级 dataDir 下每个项目只注册自身,按名切换不成立(switchProject 已加守卫)。
65
42
  const registryHome = registryDir ? resolve(expandHome(registryDir)) : memoraHome;
66
- // 保存外部注入的存储实例(宿主项目注入时使用)
67
43
  this.externalStorage = storage ?? null;
68
- // 保存 SecurityGuard 工厂函数
69
44
  this.createSecurityGuard = createSecurityGuard;
70
- // 委托注册表/锁文件管理给专职模块
45
+ // 注册表/锁文件委托专职模块
71
46
  this.registry = new ProjectRegistry(join(registryHome, 'projects.json'));
72
47
  this.lockManager = new LockManager();
73
48
  }
74
49
  /**
75
- * 确保 Agent 级资源已初始化(存储实例)
76
- * 存储实例在整个 Agent 生命周期内共享,不随项目切换重建
77
- *
78
- * 如果构造时注入了外部存储实例,直接使用;
79
- * 否则内部创建 InMemoryStorage(非持久化兜底,仅开发/测试用)。
50
+ * 确保 Agent 级资源(存储实例)已初始化,生命周期内共享不随项目切换重建。
51
+ * 构造注入的外部实例直接用,否则内部 InMemoryStorage(非持久化,仅开发/测试)。
80
52
  */
81
53
  async ensureAgentResources() {
82
54
  if (!this.agentIndex) {
83
55
  await mkdir(this.agentDataDir, { recursive: true });
84
- // 优先使用外部注入的存储实例
85
56
  if (this.externalStorage) {
86
57
  this.agentIndex = this.externalStorage;
87
58
  }
88
59
  else {
89
- // 兜底:InMemoryStorage(非持久化,不依赖 native 模块)
90
- // 生产环境应由宿主注入持久化实现(如 SqliteStorage)
91
60
  logger.warn({ hasStorage: false }, '未注入持久化存储实现,Agent 将使用 InMemoryStorage(数据重启后丢失)');
92
61
  this.agentIndex = new InMemoryStorage();
93
62
  }
@@ -95,42 +64,27 @@ export class ProjectManager {
95
64
  return { index: this.agentIndex };
96
65
  }
97
66
  /**
98
- * 初始化指定项目
99
- *
100
- * 两层记忆加载:
101
- * 1) 项目级:扫描 projectPath/.memora/rules/ + skills/
102
- * 2) Agent 级:扫描 configDir 下的所有配置(rules/skills/personas/tools)
103
- *
104
- * 全局规则不再由内核硬编码路径,宿主可通过 configDir 统一管理。
105
- *
106
- * memora.db 是 Agent 级共享资源,不随项目切换重建。
107
- *
108
- * 主体编排(关闭旧项目 + 锁 + 错误回滚)+ loadAllResources(两层加载)
109
- * + buildProjectContext(上下文构建)三个子方法分工。
110
- *
111
- * @param projectPath 项目根目录
112
- * @param projectName 项目名称(可选,默认取目录名)
113
- * @param configDir Agent 级配置目录(personas/rules/skills/tools)
67
+ * 初始化项目:关闭旧项目→取项目级锁→确保共享存储→构建上下文。
68
+ * 任一步失败释放锁并重置状态,防锁文件残留导致下次启动检测失败。
114
69
  */
115
70
  async initProject(projectPath, projectName, configDir) {
116
- // 1) 关闭旧项目(释放旧项目锁,但不关 Agent 级 DB)
71
+ // 1) 关闭旧项目(释放旧锁,不关 Agent 级 DB)
117
72
  if (this.currentProjectPath) {
118
73
  await this.closeProject();
119
74
  }
120
- // 2) 解析 memoraDir + 获取项目级锁(委托给 LockManager)
75
+ // 2) 解析 memoraDir + 获取项目级锁(委托 LockManager)
121
76
  const memoraDir = this.resolveMemoraDir(projectPath);
122
77
  await this.lockManager.acquire(memoraDir);
123
78
  this.currentProjectPath = projectPath;
124
- // 后续步骤失败时释放锁并重置状态,避免锁文件残留导致下次启动检测失败
125
79
  try {
126
- // 3) 确保项目目录 + 加载两层资源
80
+ // 3) 确保项目目录 + Agent 级共享存储
127
81
  await mkdir(memoraDir, { recursive: true });
128
- const { index, loadResult, projectFileStore } = await this.loadAllResources(memoraDir, configDir);
82
+ const { index } = await this.ensureAgentResources();
129
83
  // 4) 构建并返回项目上下文
130
- return this.buildProjectContext(projectPath, projectName, memoraDir, index, projectFileStore, loadResult, configDir);
84
+ return this.buildProjectContext(projectPath, projectName, memoraDir, index, configDir);
131
85
  }
132
86
  catch (err) {
133
- // 后续步骤失败时释放锁并重置状态,避免锁文件残留导致下次启动检测失败
87
+ // 失败时释放锁并重置状态,防锁文件残留
134
88
  await this.lockManager.release().catch((releaseErr) => {
135
89
  logger.warn({ err: releaseErr }, '释放项目锁失败');
136
90
  });
@@ -139,111 +93,39 @@ export class ProjectManager {
139
93
  }
140
94
  }
141
95
  /**
142
- * 加载两层记忆资源
143
- *
144
- * 职责:确保 Agent 级存储 + 扫描项目级 + 扫描 Agent 级配置,合并加载结果。
145
- *
146
- * @param memoraDir 项目 .memora/ 目录
147
- * @param configDir Agent 级配置目录(可选)
148
- * @returns index 存储实例 + loadResult 合并加载结果 + projectFileStore 项目级 FileStore
96
+ * 构建项目上下文:bootstrap 过滤(恒为空,设定记忆归角色包层)+ 安全守卫创建 + 项目注册 + 日志。
149
97
  */
150
- async loadAllResources(memoraDir, configDir) {
151
- // Agent 级共享资源(memora.db 只有一个)
152
- const { index } = await this.ensureAgentResources();
153
- // 合并加载结果(两层扫描汇总)
154
- const loadResult = { loaded: 0, skipped: 0, errors: [] };
155
- // 1) 项目级 FileStore:扫描 projectPath/.memora/ 下的 rules/ + skills/
156
- const projectFileStore = new FileStore(memoraDir);
157
- const projectLoader = new MemoryLoader(projectFileStore, index);
158
- const projectResult = await projectLoader.loadAllToIndex();
159
- loadResult.loaded += projectResult.loaded;
160
- loadResult.skipped += projectResult.skipped;
161
- loadResult.errors.push(...projectResult.errors);
162
- // 记录本项目级记忆 ID,供 closeProject 撤销(修复跨项目隔离泄漏)
163
- this.currentProjectMemoryIds = new Set(projectResult.loadedIds ?? []);
164
- // 2) Agent 级 FileStore:扫描 configDir 下的所有配置(rules/skills/personas/tools)
165
- if (configDir) {
166
- const configFileStore = new FileStore(configDir);
167
- const configLoader = new MemoryLoader(configFileStore, index);
168
- const configResult = await configLoader.loadAllToIndex();
169
- loadResult.loaded += configResult.loaded;
170
- loadResult.skipped += configResult.skipped;
171
- loadResult.errors.push(...configResult.errors);
172
- }
173
- return { index, loadResult, projectFileStore };
174
- }
175
- /**
176
- * 构建项目上下文
177
- *
178
- * 职责:bootstrap 过滤 + 安全守卫创建 + 项目注册 + 日志 + 返回上下文。
179
- *
180
- * @param projectPath 项目根目录
181
- * @param projectName 项目名称(可选,默认取目录名)
182
- * @param memoraDir 项目 .memora/ 目录
183
- * @param index 存储实例
184
- * @param projectFileStore 项目级 FileStore
185
- * @param loadResult 加载结果
186
- * @param configDir Agent 级配置目录(用于安全守卫创建)
187
- * @returns 完整的项目上下文
188
- */
189
- buildProjectContext(projectPath, projectName, memoraDir, index, projectFileStore, loadResult, configDir) {
190
- // bootstrap 过滤:仅 Rule(跳过 Persona 由 PersonaManager 管理,跳过 Skill 由 matchAndInjectSkill 动态注入)
191
- const rules = index.getBySource(SOURCE_LABELS.RULE);
192
- const bootstrapMemories = [...rules];
193
- // 安全守卫由 Agent 层注入的工厂函数创建,解除 memory→security 反向依赖
98
+ buildProjectContext(projectPath, projectName, memoraDir, index, configDir) {
99
+ // 设定记忆唯一归角色包内容层,由 assembler 角色包路径接管,恒为空数组
100
+ const bootstrapMemories = [];
101
+ // 安全守卫由 Agent 层注入工厂创建,解除 memory→security 反向依赖
194
102
  const security = this.createSecurityGuard
195
103
  ? this.createSecurityGuard(projectPath, memoraDir, configDir, this.agentDataDir)
196
104
  : null;
197
- // 注册到项目表(委托给 ProjectRegistry)
105
+ // 注册到项目表(委托 ProjectRegistry)
198
106
  const name = projectName || ProjectRegistry.inferProjectName(projectPath);
199
107
  this.registry.register(projectPath, name);
200
108
  logger.info({
201
109
  projectPath,
202
110
  projectName: name,
203
111
  memoraDir,
204
- loaded: loadResult.loaded,
205
112
  bootstrapCount: bootstrapMemories.length,
206
113
  }, '项目初始化完成');
207
114
  return {
208
115
  projectPath,
209
116
  projectName: name,
210
117
  memoraDir,
211
- dbPath: join(this.agentDataDir, 'memora.db'),
212
- fileStore: projectFileStore,
213
118
  index,
214
119
  security,
215
120
  bootstrapMemories,
216
- loadResult,
217
121
  };
218
122
  }
219
- /**
220
- * 关闭当前项目
221
- * 释放锁文件,但不关闭 Agent 级数据库(memora.db 是共享的)
222
- */
123
+ /** 关闭当前项目:释放锁/清状态,但不关 Agent 级 DB(共享,Agent 生命周期内持久存在) */
223
124
  async closeProject() {
224
- // S2 修复:撤销当前项目级记忆,防止跨项目隔离泄漏。
225
- // 项目级 rules/skills/personas 由 loadAllResources 写入共享 index(只 add 不 evict),
226
- // 若不撤销,切换项目后旧项目规则仍注入新项目 system prompt 与召回结果。
227
- // 项目文件仍在磁盘,重新打开同一项目时会重新 upsert 恢复(软删除不影响文件本体)。
228
- if (this.agentIndex) {
229
- for (const id of this.currentProjectMemoryIds) {
230
- try {
231
- this.agentIndex.delete(id);
232
- }
233
- catch (err) {
234
- logger.warn({ err, id }, '撤销项目级记忆失败(软删除)');
235
- }
236
- }
237
- }
238
- this.currentProjectMemoryIds.clear();
239
- // Agent 级 index/sessionStore 不关闭——它们是共享的,在整个 Agent 生命周期内持久存在
240
125
  await this.lockManager.release();
241
126
  this.currentProjectPath = null;
242
127
  }
243
- /**
244
- * 完全关闭:释放项目锁 + 关闭 Agent 级数据库
245
- * 应在 Agent 整体关闭时调用(而非项目切换时)
246
- */
128
+ /** 完全关闭:释放项目锁 + 关闭 Agent 级数据库(应在 Agent 整体关闭而非项目切换时调用) */
247
129
  async shutdown() {
248
130
  if (this.currentProjectPath) {
249
131
  await this.closeProject();
@@ -258,55 +140,23 @@ export class ProjectManager {
258
140
  this.agentIndex = null;
259
141
  }
260
142
  }
261
- /**
262
- * 列出已注册的项目(IX-02:统一为 getter 风格,与 persona/skill 一致)
263
- *
264
- * 委托给 ProjectRegistry。
265
- */
143
+ /** 列出已注册项目(委托 ProjectRegistry) */
266
144
  get list() {
267
145
  return this.registry.list;
268
146
  }
269
- /**
270
- * 列出已注册的项目
271
- *
272
- * v1.0 公共 API(CHANGELOG 迁移路径:`agent.listProjects()` → `agent.projects.listProjects()`)。
273
- * 与 `.list` getter 等价,保留方法形式以兼容 0.3 迁移路径。
274
- */
275
- listProjects() {
276
- return this.registry.list;
277
- }
278
- /**
279
- * 注册项目到注册表
280
- *
281
- * 委托给 ProjectRegistry。
282
- *
283
- * @param projectPath 项目根目录
284
- * @param name 项目名称
285
- */
147
+ /** 注册项目(委托 ProjectRegistry) */
286
148
  registerProject(projectPath, name) {
287
149
  this.registry.register(projectPath, name);
288
150
  }
289
- /**
290
- * 从注册表移除项目
291
- *
292
- * 委托给 ProjectRegistry。
293
- *
294
- * @param projectPath 项目根目录
295
- */
151
+ /** 移除项目(委托 ProjectRegistry) */
296
152
  unregisterProject(projectPath) {
297
153
  this.registry.unregister(projectPath);
298
154
  }
299
- /**
300
- * 获取当前项目路径
301
- */
155
+ /** 当前项目路径 */
302
156
  get currentProject() {
303
157
  return this.currentProjectPath;
304
158
  }
305
- /**
306
- * 解析项目的 .memora/ 目录路径
307
- * 每个项目有独立的 .memora/ 目录(在项目根目录下)
308
- * 这与 config.memory.dataDir(用户级默认目录)不同
309
- */
159
+ /** 解析项目 .memora/ 目录(项目根目录下,区别于用户级 dataDir) */
310
160
  resolveMemoraDir(projectPath) {
311
161
  return resolve(projectPath, '.memora');
312
162
  }
@@ -1 +1 @@
1
- {"version":3,"file":"projectManager.js","sourceRoot":"","sources":["../../src/memory/projectManager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"projectManager.js","sourceRoot":"","sources":["../../src/memory/projectManager.ts"],"names":[],"mappings":"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"}