@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 +1 @@
1
- {"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../src/llm/provider.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE/C,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,QAAQ,GAAG,MAAM,GAAG,WAAW,GAAG,MAAM,CAAC;IAC/C,OAAO,EAAE,MAAM,CAAC;IAEhB,SAAS,CAAC,EAAE,KAAK,CAAC;QAChB,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,EAAE,UAAU,CAAC;QACjB,QAAQ,EAAE;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,SAAS,EAAE,MAAM,CAAA;SAAE,CAAC;KAC/C,CAAC,CAAC;IAEH,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,KAAK,CAAC,EAAE,KAAK,CAAC;QACZ,IAAI,EAAE,UAAU,CAAC;QACjB,QAAQ,EAAE;YACR,IAAI,EAAE,MAAM,CAAC;YACb,WAAW,EAAE,MAAM,CAAC;YACpB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;SACrC,CAAC;KACH,CAAC,CAAC;IACH;;;;;;OAMG;IACH,eAAe,CAAC,EAAE;QAChB,IAAI,EAAE,aAAa,CAAC;QACpB,WAAW,EAAE;YACX,IAAI,EAAE,MAAM,CAAC;YACb,MAAM,EAAE,OAAO,CAAC;YAChB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;SACjC,CAAC;KACH,CAAC;IACF;;;;;;OAMG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB;;;;;OAKG;IACH,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;GAGG;AACH,8BAAsB,WAAW;IAC/B,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAE/B;;;;;;;;;OASG;IACH,QAAQ,CAAC,wBAAwB,EAAE,OAAO,CAAS;IAEnD;;;OAGG;IACH,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,IAAI,CAAC,EAAE,WAAW,GAAG,aAAa,CAAC,QAAQ,CAAC;CAChF"}
1
+ {"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../src/llm/provider.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE/C,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,QAAQ,GAAG,MAAM,GAAG,WAAW,GAAG,MAAM,CAAC;IAC/C,OAAO,EAAE,MAAM,CAAC;IAChB;;;;;OAKG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,KAAK,CAAC;QAChB,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,EAAE,UAAU,CAAC;QACjB,QAAQ,EAAE;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,SAAS,EAAE,MAAM,CAAA;SAAE,CAAC;KAC/C,CAAC,CAAC;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,KAAK,CAAC,EAAE,KAAK,CAAC;QACZ,IAAI,EAAE,UAAU,CAAC;QACjB,QAAQ,EAAE;YACR,IAAI,EAAE,MAAM,CAAC;YACb,WAAW,EAAE,MAAM,CAAC;YACpB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;SACrC,CAAC;KACH,CAAC,CAAC;IACH;;;;;OAKG;IACH,eAAe,CAAC,EAAE;QAChB,IAAI,EAAE,aAAa,CAAC;QACpB,WAAW,EAAE;YACX,IAAI,EAAE,MAAM,CAAC;YACb,MAAM,EAAE,OAAO,CAAC;YAChB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;SACjC,CAAC;KACH,CAAC;IACF,qDAAqD;IACrD,gBAAgB,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;IAC7C,qDAAqD;IACrD,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,kEAAkE;IAClE,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,0CAA0C;AAC1C,8BAAsB,WAAW;IAC/B,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAE/B;;;;;;;;;;;OAWG;IACH,QAAQ,CAAC,mBAAmB,EAAE,OAAO,CAAQ;IAE7C,yEAAyE;IACzE,QAAQ,CAAC,wBAAwB,EAAE,OAAO,CAAS;IAEnD,qCAAqC;IACrC,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,IAAI,CAAC,EAAE,WAAW,GAAG,aAAa,CAAC,QAAQ,CAAC;CAChF"}
@@ -1,18 +1,19 @@
1
- /**
2
- * LLM Provider 抽象类
3
- * 实现类需实现 chat() 流式方法
4
- */
1
+ /** LLM Provider 抽象类:实现类需实现 chat() 流式方法 */
5
2
  export class LlmProvider {
6
3
  /**
7
- * 是否支持结构化输出(response_format json_schema)
4
+ * 是否支持原生工具调用(OpenAI Function Calling 的 tools 协议)。
8
5
  *
9
- * 默认 false,子类可覆盖。用于非 tool_call 场景的结构化输出约束
10
- * (如归档摘要强制 JSON、配置建议提取等)。调用方在构造 ChatOptions
11
- * 时显式传入 response_format,Provider 应将其透传到请求 body。
6
+ * 与 supportsStructuredOutput 互斥(response_format 不能与 tools 同时使用,OpenAI 协议限制):
7
+ * - 支持 tools → loop 走原生工具通道(列工具 + 传 tools 参数)。
8
+ * - 支持 structured → loop 传 response_format(JSON mode 回落)。
9
+ * - 两者皆 false → 无工具能力,loop 收起工具清单并显式告知(可观测,不静默)。
12
10
  *
13
- * 注意:response_format 不能与 tools 同时使用(OpenAI 协议限制),
14
- * tool_calls 走独立的 SSE delta 流式协议,无需此约束。
11
+ * 默认 **true**(存量行为):云 LLM 绝大多数支持原生 FC(有工具集就传 tools,与历史一致)。
12
+ * 本地运行时(Ollama/LM Studio 等)是否支持原生 FC 无法从 baseUrl 推断,须在宿主配置时
13
+ * 显式置 false(互斥双能力位)。
15
14
  */
15
+ supportsToolCalling = true;
16
+ /** 是否支持结构化输出(默认 false)。注意:response_format 不能与 tools 同时使用(OpenAI 协议限制) */
16
17
  supportsStructuredOutput = false;
17
18
  }
18
19
  //# sourceMappingURL=provider.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"provider.js","sourceRoot":"","sources":["../../src/llm/provider.ts"],"names":[],"mappings":"AAsEA;;;GAGG;AACH,MAAM,OAAgB,WAAW;IAG/B;;;;;;;;;OASG;IACM,wBAAwB,GAAY,KAAK,CAAC;CAOpD"}
1
+ {"version":3,"file":"provider.js","sourceRoot":"","sources":["../../src/llm/provider.ts"],"names":[],"mappings":"AA0DA,0CAA0C;AAC1C,MAAM,OAAgB,WAAW;IAG/B;;;;;;;;;;;OAWG;IACM,mBAAmB,GAAY,IAAI,CAAC;IAE7C,yEAAyE;IAChE,wBAAwB,GAAY,KAAK,CAAC;CAIpD"}
@@ -1,11 +1,5 @@
1
- /**
2
- * LLM 适配层类型定义
3
- *
4
- * 详见 ADR-003 · LLM 适配层使用 OpenAI Chat Completions 兼容协议
5
- */
6
- /**
7
- * 工具调用描述
8
- */
1
+ /** LLM 适配层类型定义(OpenAI Chat Completions 兼容协议) */
2
+ import type { LlmProvider } from '../llm/provider.js';
9
3
  export interface ToolCall {
10
4
  id: string;
11
5
  type: 'function';
@@ -14,12 +8,61 @@ export interface ToolCall {
14
8
  arguments: string;
15
9
  };
16
10
  }
17
- /**
18
- * LLM 响应块
19
- */
20
11
  export interface LlmChunk {
21
12
  content?: string;
22
13
  toolCalls?: ToolCall[];
23
14
  finishReason?: 'stop' | 'tool_calls' | 'length' | 'error';
15
+ /**
16
+ * 模型思考内容增量片段(对应协议 `delta.reasoning_content`,deepseek 等思考模型)。
17
+ * 与 content 同为增量语义(消费侧自行累积);仅供 UI 折叠展示,**不进正文/记忆**(CoT 防护)。
18
+ * 非思考模型恒 undefined,自然降级。命名用 thought 而非 reasoning/thinking:与多模型路由任务
19
+ * 类型 `TaskType='reasoning'` 语义分离,也避开 ProcessEvent 既有 `type:'thinking'` 相位事件。
20
+ */
21
+ thought?: string;
22
+ /**
23
+ * 流式工具意图预告:tool_call 的 name 在流式 delta 中**成形即上报**,
24
+ * 无需等到 finish_reason='tool_calls'。写文件等大参数工具的参数生成段可能长达数十秒,
25
+ * 此字段让 UI 提前渲染「准备中」工具行,消除事件真空期。瞬态展示轨,不落盘。
26
+ * 非 tool_calls 流 / 非 OpenAI 兼容 provider 恒 undefined,自然降级。
27
+ */
28
+ partialToolCall?: {
29
+ id: string;
30
+ name: string;
31
+ };
32
+ /** 实际 API 用量统计(仅在流结束时的最终 chunk 携带,部分 Provider 不支持) */
33
+ usage?: {
34
+ /** 输入 token 数(prompt_tokens) */
35
+ inputTokens: number;
36
+ /** 输出 token 数(completion_tokens) */
37
+ outputTokens: number;
38
+ /** 总 token 数(total_tokens) */
39
+ totalTokens?: number;
40
+ };
41
+ }
42
+ /** 单个 Provider 配置(providers 映射表的值);内核仅透传 provider 字段,不做路由决策 */
43
+ export interface ProviderEntryConfig {
44
+ /** 标识(仅用于日志,不影响路由) */
45
+ provider: string;
46
+ model: string;
47
+ /** API 基础 URL(可选——内核不做预设回退,缺失时工厂会报错) */
48
+ baseUrl?: string;
49
+ /** API 密钥(可选,从环境变量读取。本地 LLM 如 Ollama 可为空字符串) */
50
+ apiKey?: string;
51
+ /** temperature,未配置时回退到全局 llm.temperature */
52
+ temperature?: number;
53
+ /** 上下文窗口(token),未配置时回退到 memory.maxContextTokens */
54
+ contextWindow?: number;
55
+ /**
56
+ * 是否支持原生工具调用(OpenAI Function Calling tools 协议)。
57
+ * 本地运行时(Ollama/LM Studio 等)是否支持原生 FC 无法从 baseUrl 推断,搬到配置显式声明。
58
+ * 与 supportsStructuredOutput 互斥(response_format 不能与 tools 同用)。
59
+ */
60
+ supportsToolCalling?: boolean;
61
+ /** 是否支持结构化输出(response_format / JSON mode) */
62
+ supportsStructuredOutput?: boolean;
24
63
  }
64
+ /** LLM 任务类型:按任务复杂度路由到不同 Provider/模型(simple/reasoning/code/summary) */
65
+ export type TaskType = 'simple' | 'reasoning' | 'code' | 'summary';
66
+ /** Provider 路由选择器:按任务类型返回 Provider;不配置路由时所有任务类型复用同一 Provider */
67
+ export type ProviderRouter = (taskType: TaskType) => LlmProvider;
25
68
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/llm/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,UAAU,CAAC;IACjB,QAAQ,EAAE;QACR,IAAI,EAAE,MAAM,CAAC;QACb,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,QAAQ,EAAE,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,GAAG,YAAY,GAAG,QAAQ,GAAG,OAAO,CAAC;CAC3D"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/llm/types.ts"],"names":[],"mappings":"AAAA,gDAAgD;AAChD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAErD,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,UAAU,CAAC;IACjB,QAAQ,EAAE;QACR,IAAI,EAAE,MAAM,CAAC;QACb,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;CACH;AAED,MAAM,WAAW,QAAQ;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,QAAQ,EAAE,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,GAAG,YAAY,GAAG,QAAQ,GAAG,OAAO,CAAC;IAC1D;;;;;OAKG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;;OAKG;IACH,eAAe,CAAC,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IAC/C,sDAAsD;IACtD,KAAK,CAAC,EAAE;QACN,gCAAgC;QAChC,WAAW,EAAE,MAAM,CAAC;QACpB,oCAAoC;QACpC,YAAY,EAAE,MAAM,CAAC;QACrB,8BAA8B;QAC9B,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,CAAC;CACH;AAID,+DAA+D;AAC/D,MAAM,WAAW,mBAAmB;IAClC,sBAAsB;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,wCAAwC;IACxC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,gDAAgD;IAChD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,4CAA4C;IAC5C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,mDAAmD;IACnD,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;;;OAIG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,6CAA6C;IAC7C,wBAAwB,CAAC,EAAE,OAAO,CAAC;CACpC;AAED,sEAAsE;AACtE,MAAM,MAAM,QAAQ,GAAG,QAAQ,GAAG,WAAW,GAAG,MAAM,GAAG,SAAS,CAAC;AAEnE,gEAAgE;AAChE,MAAM,MAAM,cAAc,GAAG,CAAC,QAAQ,EAAE,QAAQ,KAAK,WAAW,CAAC"}
package/dist/llm/types.js CHANGED
@@ -1,7 +1,2 @@
1
- /**
2
- * LLM 适配层类型定义
3
- *
4
- * 详见 ADR-003 · LLM 适配层使用 OpenAI Chat Completions 兼容协议
5
- */
6
1
  export {};
7
2
  //# sourceMappingURL=types.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/llm/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/llm/types.ts"],"names":[],"mappings":""}
@@ -1,42 +1,19 @@
1
1
  /**
2
2
  * 结构化日志 — 全局单例 + 可替换 ILogger
3
- *
4
- * 内核 Node.js 专属 + 零第三方依赖(ADR-002 v0.9):
5
- * - node:path/node:fs 是 Node.js 内置模块,静态 import(合法依赖)
6
- * - pino 为可选 peerDependency,通过动态 import 加载(未安装时降级 console)
7
- * 宿主可注入自定义 logger(setLogger),完全绕过 pino。
8
- *
9
- * 降级策略:
10
- * 1. pino 可用 → 双流输出(stderr + 文件日志)
11
- * 2. pino 不可用 → console 零依赖 fallback(仅 stderr)
12
- * 3. 宿主注入 → 优先使用宿主实现
13
- *
14
- * 使用方式:
15
- * import { logger } from '../logging/logger.js';
16
- * logger.info({ key: val }, 'message');
17
- *
18
- * 注入自定义 logger:
19
- * import { setLogger } from '../logging/logger.js';
20
- * setLogger(myCustomLogger);
3
+ * 零第三方依赖、零 fs 副作用:默认 console fallback(写 stderr);宿主经 setLogger() 注入自定义实现。
4
+ * 内核只持有日志「接口」职责——不加载任何三方日志库,不决定日志落盘位置(通道/落盘归宿主)。
21
5
  */
22
6
  import type { ILogger } from '../logging/loggerInterface.js';
23
7
  /**
24
- * 全局日志访问器
25
- *
26
- * 20+ 个内核模块统一通过此变量输出日志。
27
- * 首次访问任一方法时懒触发 pino 升级(确保 import 零 fs 副作用)。
28
- * 宿主注入自定义 logger 后,所有模块自动使用新实现。
8
+ * 全局日志访问器:20+ 内核模块统一经此输出;每个方法为对当前 `_logger` 的**普通委托闭包**,
9
+ * 宿主注入/复位后所有持有者自动切换到新实现(函数身份稳定,外部可将 `logger.info` 直接作回调传递)。
29
10
  */
30
11
  export declare const logger: ILogger;
31
12
  /**
32
- * 替换全局日志实现
33
- *
34
- * 宿主项目在 Agent 初始化前调用此函数注入自定义 logger。
35
- * 传入 undefined 则恢复为默认(pino 或 console fallback)。
36
- *
37
- * 注意:此函数修改全局状态。在单 Agent 模型下(ADR-011),
38
- * 同一进程只有一个 Agent 实例,不会冲突。若同一进程创建多个
39
- * Agent 实例并分别注入 logger,后者会覆盖前者——此时会输出警告。
13
+ * 替换全局日志实现:宿主在 Agent 初始化前调用注入自定义 logger;传入 undefined 恢复默认。
14
+ * 注入即成为内核**唯一**日志出口:同时桥接 utils 层(`loggerHolder`),
15
+ * 使 scanner / eventEmitter / rolePackManager 等 utils 侧模块也走注入实现(而非停留在 console fallback)。
16
+ * 修改全局状态:单 Agent 模型下不会冲突;若多处注入,后者覆盖前者并输出警告。
40
17
  */
41
18
  export declare function setLogger(newLogger: ILogger | undefined): void;
42
19
  //# sourceMappingURL=logger.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/logging/logger.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,OAAO,KAAK,EAAE,OAAO,EAAS,MAAM,8BAA8B,CAAC;AA6QnE;;;;;;GAMG;AACH,eAAO,MAAM,MAAM,EAAE,OAiBpB,CAAC;AAEF;;;;;;;;;GASG;AACH,wBAAgB,SAAS,CAAC,SAAS,EAAE,OAAO,GAAG,SAAS,GAAG,IAAI,CAmB9D"}
1
+ {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/logging/logger.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,EAAE,OAAO,EAAS,MAAM,8BAA8B,CAAC;AAoFnE;;;GAGG;AACH,eAAO,MAAM,MAAM,EAAE,OAKpB,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,SAAS,EAAE,OAAO,GAAG,SAAS,GAAG,IAAI,CAgB9D"}
@@ -1,37 +1,12 @@
1
- import { toError } from '../utils/toError.js';
2
- // 桥接 utils 层 loggerHolder:utils 运行时不依赖 logging/,
3
- // 由本模块在加载和 setLogger 时反向注入 logger 实例。
1
+ // 反向注入 utils 层 loggerHolder:utils 运行时不依赖 logging/,由本模块桥接 logger 实例
4
2
  import { setLogger as setUtilsLogger } from '../utils/loggerHolder.js';
5
- // Node.js 内置模块静态 import(ADR-002 v0.9:Node.js 内置模块是合法依赖)
6
- import { resolve } from 'node:path';
7
- import { mkdirSync, createWriteStream, statSync, truncateSync } from 'node:fs';
8
- import { expandHome } from '../utils/path.js';
9
- /**
10
- * 从 unknown 值提取错误消息(复用零依赖的 toError,避免类型断言)
11
- */
12
- function errMsg(err) {
13
- return toError(err).message;
14
- }
15
- /** 日志级别(从环境变量读取,默认 info) */
3
+ /** 日志级别(环境变量,默认 info) */
16
4
  const level = process.env['MEMORA_LOG_LEVEL'] ?? 'info';
17
- /** 敏感键模式(匹配时值被替换为 [REDACTED]) */
5
+ /** 敏感键名匹配(命中时值被替换为 [REDACTED]) */
18
6
  const SENSITIVE_KEY_PATTERN = /api[_-]?key|token|password|secret|authorization|credential/i;
19
7
  /**
20
- * pino redact 路径配置(与 console fallback 的 SENSITIVE_KEY_PATTERN 保持一致)
21
- *
22
- * 支持嵌套对象脱敏:`*.apiKey` 匹配任意层级的 apiKey 字段
23
- */
24
- const PINO_REDACT_PATHS = [
25
- 'apiKey', 'token', 'password', 'secret', 'authorization', 'credential',
26
- '*.apiKey', '*.token', '*.password', '*.secret',
27
- '*.authorization', '*.credential',
28
- '*.*.apiKey', '*.*.token', '*.*.password', '*.*.secret',
29
- ];
30
- /**
31
- * 对象脱敏:深拷贝对象并将敏感键的值替换为 [REDACTED]
32
- *
33
- * 仅用于 console fallback logger 的 JSON.stringify 路径,
34
- * 防止 API Key 等敏感数据泄漏到 stderr。
8
+ * 对象脱敏:深拷贝并将敏感键值替换为 [REDACTED]
9
+ * 单一脱敏实现:console fallback 输出对象前统一经此脱敏(任意嵌套层级 + 变体 + 大小写不敏感)。
35
10
  */
36
11
  function redactSensitiveKeys(obj) {
37
12
  const redacted = {};
@@ -48,11 +23,7 @@ function redactSensitiveKeys(obj) {
48
23
  }
49
24
  return redacted;
50
25
  }
51
- /** 是否生产环境 */
52
- const isProd = process.env['NODE_ENV'] === 'production';
53
- /** 是否启用文件日志 */
54
- const fileEnabled = process.env['MEMORA_LOG_FILE'] !== '0';
55
- /** 日志级别优先级(用于 console fallback 的级别过滤) */
26
+ /** 日志级别优先级(console fallback 级别过滤用) */
56
27
  const LEVEL_PRIORITY = {
57
28
  trace: 0,
58
29
  debug: 1,
@@ -66,12 +37,7 @@ const LEVEL_PRIORITY = {
66
37
  function shouldLog(targetLevel) {
67
38
  return (LEVEL_PRIORITY[targetLevel] ?? 2) >= (LEVEL_PRIORITY[level] ?? 2);
68
39
  }
69
- /**
70
- * Console 零依赖 fallback logger
71
- *
72
- * pino 不可用时使用。仅输出到 stderr,不写文件。
73
- * 满足 ILogger 接口,所有内核模块透明使用。
74
- */
40
+ /** Console 零依赖 fallback logger:仅 stderr,满足 ILogger 接口 */
75
41
  function createConsoleLogger() {
76
42
  return {
77
43
  info: createConsoleLogFn('info'),
@@ -82,215 +48,62 @@ function createConsoleLogger() {
82
48
  }
83
49
  /**
84
50
  * 创建 console fallback 单级别日志方法
85
- *
86
- * 消除 createConsoleLogger 内 4 处 info/warn/error/debug 方法的同构实现
87
- * (ADR-017 枝叶层 2 次提取原则,4 次重复已超阈值)。
88
- *
89
- * 共享逻辑:
90
- * 1. shouldLog 级别过滤
91
- * 2. 提取 text(字符串直传,对象取 msg 参数)
92
- * 3. 区分字符串/对象输出(对象路径调用 redactSensitiveKeys 脱敏)
93
- *
94
- * @param targetLevel 日志级别('info' | 'warn' | 'error' | 'debug')
95
- * @returns LogFn 兼容的日志方法
51
+ * 消除 4 处 info/warn/error/debug 方法同构实现;共享:shouldLog 过滤、文本提取、对象路径脱敏。
96
52
  */
97
53
  function createConsoleLogFn(targetLevel) {
98
- // 级别前缀(与原实现保持一致,便于日志检索过滤)
99
54
  const prefix = `[${targetLevel.toUpperCase()}]`;
100
55
  return (objOrMsg, msg) => {
101
- // 级别过滤:低于当前级别则静默返回
102
56
  if (!shouldLog(targetLevel))
103
57
  return;
104
- // 提取文本:字符串入参直接使用,对象入参取 msg 参数
105
- const text = typeof objOrMsg === 'string' ? objOrMsg : msg ?? '';
58
+ const text = typeof objOrMsg === 'string' ? objOrMsg : (msg ?? '');
106
59
  if (typeof objOrMsg === 'object') {
107
- // 对象路径:脱敏后 JSON 序列化输出(防止 API Key 等敏感数据泄漏到 stderr)
60
+ // 对象路径:脱敏后 JSON 序列化,防敏感数据泄漏
108
61
  console.error(`${prefix} ${text}`, JSON.stringify(redactSensitiveKeys(objOrMsg)));
109
62
  }
110
63
  else {
111
- // 字符串路径:仅输出前缀 + 文本
112
64
  console.error(`${prefix} ${text}`);
113
65
  }
114
66
  };
115
67
  }
116
68
  /**
117
- * pino → ILogger 包装器
118
- *
119
- * pino 通过动态 import 加载,实例类型未知。
120
- * 包装器显式提取 4 个日志方法,避免 as unknown as ILogger 双重断言。
121
- *
122
- * @param pinoInst pino 实例(动态导入)
123
- * @returns ILogger 兼容对象
124
- */
125
- function wrapPinoAsLogger(pinoInst) {
126
- return {
127
- info: pinoInst.info.bind(pinoInst),
128
- warn: pinoInst.warn.bind(pinoInst),
129
- error: pinoInst.error.bind(pinoInst),
130
- debug: pinoInst.debug.bind(pinoInst),
131
- };
132
- }
133
- /**
134
- * 尝试创建 Pino logger
135
- *
136
- * pino 为可选 peerDependency,通过动态 import 加载。
137
- * 加载失败(宿主未安装 pino)则回退到 console logger。
138
- *
139
- * @returns Pino logger 实例,或 null(pino 不可用)
140
- */
141
- async function tryCreatePinoLogger() {
142
- try {
143
- // pino 为可选 peerDependency,必须动态 import(未安装时降级 console)
144
- // node:path/node:fs 已在文件顶部静态 import(ADR-002 v0.9:Node.js 内置模块是合法依赖)
145
- const pino = (await import('pino')).default;
146
- // 日志目录由宿主通过 MEMORA_DATA_DIR 环境变量注入;未设置时跳过文件日志
147
- const dataDir = process.env['MEMORA_DATA_DIR'];
148
- const resolvedDataDir = dataDir ? resolve(expandHome(dataDir)) : null;
149
- // pino.StreamEntry 类型在 pino 未安装时不可用,用内联类型
150
- const streams = [];
151
- // stderr 流(开发环境友好显示)
152
- if (!isProd) {
153
- streams.push({ level: 'info', stream: process.stderr });
154
- }
155
- // 文件流(结构化 JSON,方便后续分析)
156
- // 日志轮转保护——超过 10MB 时截断重写,防止长期运行生成巨大文件
157
- if (fileEnabled && resolvedDataDir) {
158
- try {
159
- const logsDir = resolve(resolvedDataDir, 'logs');
160
- mkdirSync(logsDir, { recursive: true });
161
- const logFilePath = resolve(logsDir, 'memora.log');
162
- // 检查文件大小,超过 10MB 时截断
163
- const LOG_MAX_BYTES = 10 * 1024 * 1024; // 10MB
164
- try {
165
- const stat = statSync(logFilePath);
166
- if (stat.size > LOG_MAX_BYTES) {
167
- truncateSync(logFilePath, 0);
168
- process.stderr.write(`[memora] 日志文件超过 10MB,已截断:${logFilePath}\n`);
169
- }
170
- }
171
- catch (err) {
172
- // 文件不存在或无法 stat,正常——首次写入
173
- if (process.env['MEMORA_DEBUG'])
174
- process.stderr.write(`[memora] stat 日志文件失败:${errMsg(err)}\n`);
175
- }
176
- streams.push({
177
- level: 'info',
178
- stream: createWriteStream(logFilePath, { flags: 'a' }),
179
- });
180
- }
181
- catch (err) {
182
- process.stderr.write(`[memora] 日志文件创建失败:${errMsg(err)}\n`);
183
- }
184
- }
185
- if (streams.length === 0) {
186
- // 通过包装器适配 ILogger 接口,避免 as unknown as ILogger 双重断言
187
- // SEC-AUDIT: 配置 redact 防止敏感信息写入日志文件
188
- return wrapPinoAsLogger(pino({ level, redact: PINO_REDACT_PATHS }));
189
- }
190
- // 通过包装器适配 ILogger 接口
191
- // SEC-AUDIT: 配置 redact 防止敏感信息写入日志文件
192
- return wrapPinoAsLogger(pino({ level, redact: PINO_REDACT_PATHS }, pino.multistream(streams)));
193
- }
194
- catch (err) {
195
- // pino 未安装,回退到 console logger
196
- if (process.env['MEMORA_DEBUG'])
197
- process.stderr.write(`[memora] pino 加载失败:${errMsg(err)}\n`);
198
- return null;
199
- }
200
- }
201
- /**
202
- * 全局日志单例
203
- *
204
- * 初始化为 console fallback(同步可用,零 fs 副作用)。
205
- * 首次日志调用时懒触发 pino 升级(确保模块 import 零 fs 副作用)。
206
- * 宿主通过 setLogger() 注入后自动替换,并跳过 pino 升级。
69
+ * 全局日志单例:初始为 console fallback(同步可用,零 fs 副作用)。
70
+ * 宿主经 setLogger() 注入后替换;未注入时保持 console fallback。
207
71
  */
208
72
  let _logger = createConsoleLogger();
209
- /** 标记 _logger 是否已被宿主注入(用于 setLogger 覆盖检测 + pino 升级跳过) */
73
+ /** 是否已被宿主注入(setLogger 覆盖告警判定) */
210
74
  let _loggerInjected = false;
211
- /** pino 升级是否已启动(确保只触发一次,避免重复 fs 操作) */
212
- let _pinoUpgradeStarted = false;
213
- // 同步初始化 utils 层 logger 桥接(确保 utils 在 pino 异步加载前就有 console fallback)
75
+ // 同步初始化 utils 层 logger 桥接(确保 utils 始终持有日志实现,默认即 console fallback)
214
76
  setUtilsLogger(_logger);
215
77
  /**
216
- * 懒触发 pino 升级
217
- *
218
- * 在首次日志调用时触发,确保模块 import 零 fs 副作用。
219
- * - 宿主已注入 logger 时跳过升级(_loggerInjected 守卫)
220
- * - 升级启动后不再重复触发(_pinoUpgradeStarted 守卫)
221
- * - 竞态守卫:then 回调内再次检查 _loggerInjected,避免覆盖宿主在升级期间注入的 logger
222
- */
223
- function maybeUpgradeToPino() {
224
- if (_pinoUpgradeStarted || _loggerInjected)
225
- return;
226
- _pinoUpgradeStarted = true;
227
- void tryCreatePinoLogger().then((pinoLogger) => {
228
- // 守卫:升级期间宿主可能已通过 setLogger 注入自定义 logger
229
- if (_loggerInjected) {
230
- setUtilsLogger(_logger);
231
- return;
232
- }
233
- if (pinoLogger) {
234
- _logger = pinoLogger;
235
- _logger.info({ level, prod: isProd, fileEnabled }, 'logger 启动(pino)');
236
- }
237
- else {
238
- _logger.info({ level, prod: isProd }, 'logger 启动(console fallback,pino 未安装)');
239
- }
240
- // 桥接注入到 utils 层(utils 运行时不依赖 logging/)
241
- setUtilsLogger(_logger);
242
- });
243
- }
244
- /**
245
- * 全局日志访问器
246
- *
247
- * 20+ 个内核模块统一通过此变量输出日志。
248
- * 首次访问任一方法时懒触发 pino 升级(确保 import 零 fs 副作用)。
249
- * 宿主注入自定义 logger 后,所有模块自动使用新实现。
78
+ * 全局日志访问器:20+ 内核模块统一经此输出;每个方法为对当前 `_logger` 的**普通委托闭包**,
79
+ * 宿主注入/复位后所有持有者自动切换到新实现(函数身份稳定,外部可将 `logger.info` 直接作回调传递)。
250
80
  */
251
81
  export const logger = {
252
- get info() {
253
- maybeUpgradeToPino();
254
- return _logger.info.bind(_logger);
255
- },
256
- get warn() {
257
- maybeUpgradeToPino();
258
- return _logger.warn.bind(_logger);
259
- },
260
- get error() {
261
- maybeUpgradeToPino();
262
- return _logger.error.bind(_logger);
263
- },
264
- get debug() {
265
- maybeUpgradeToPino();
266
- return _logger.debug.bind(_logger);
267
- },
82
+ info: (...args) => _logger.info(...args),
83
+ warn: (...args) => _logger.warn(...args),
84
+ error: (...args) => _logger.error(...args),
85
+ debug: (...args) => _logger.debug(...args),
268
86
  };
269
87
  /**
270
- * 替换全局日志实现
271
- *
272
- * 宿主项目在 Agent 初始化前调用此函数注入自定义 logger。
273
- * 传入 undefined 则恢复为默认(pino 或 console fallback)。
274
- *
275
- * 注意:此函数修改全局状态。在单 Agent 模型下(ADR-011),
276
- * 同一进程只有一个 Agent 实例,不会冲突。若同一进程创建多个
277
- * Agent 实例并分别注入 logger,后者会覆盖前者——此时会输出警告。
88
+ * 替换全局日志实现:宿主在 Agent 初始化前调用注入自定义 logger;传入 undefined 恢复默认。
89
+ * 注入即成为内核**唯一**日志出口:同时桥接 utils 层(`loggerHolder`),
90
+ * 使 scanner / eventEmitter / rolePackManager 等 utils 侧模块也走注入实现(而非停留在 console fallback)。
91
+ * 修改全局状态:单 Agent 模型下不会冲突;若多处注入,后者覆盖前者并输出警告。
278
92
  */
279
93
  export function setLogger(newLogger) {
280
94
  if (newLogger) {
281
- // 检测覆盖:如果当前 logger 已被宿主注入,且新 logger 不是同一个,说明有多处注入
95
+ // 检测覆盖:当前已被宿主注入且新实例不同,说明有多处注入
282
96
  if (_loggerInjected && _logger !== newLogger) {
283
97
  _logger.warn('setLogger 覆盖了已有的自定义 logger(单 Agent 模型下不应出现此情况)');
284
98
  }
285
99
  _loggerInjected = true;
286
100
  _logger = newLogger;
101
+ // 注入即唯一出口:同步桥接 utils 层,否则 utils 侧仍持有旧 console fallback
102
+ setUtilsLogger(_logger);
287
103
  }
288
104
  else {
289
- // 恢复默认:同步恢复到 console fallback
290
- // pino 升级不主动触发——等下次日志调用时由 maybeUpgradeToPino() 懒触发
291
- // 这样 setLogger(undefined) 零 fs 副作用,与模块加载时一致
105
+ // 恢复默认:回到内置 console fallback,并重新桥接 utils 层
292
106
  _loggerInjected = false;
293
- _pinoUpgradeStarted = false; // 允许下次日志调用时重新触发升级
294
107
  _logger = createConsoleLogger();
295
108
  setUtilsLogger(_logger);
296
109
  }
@@ -1 +1 @@
1
- {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/logging/logger.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/logging/logger.ts"],"names":[],"mappings":"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"}
@@ -2,27 +2,28 @@
2
2
  * 日志接口 — Memora 内核与日志实现的解耦边界
3
3
  *
4
4
  * 设计目标:
5
- * - 宿主项目可注入自定义日志实现(如 Electron 的 winston/pino 实例)
6
- * - 不注入时使用默认 PinoLogger(零配置)
7
- * - 21 个内核模块通过全局单例 `logger` 访问,无需每次传参
5
+ * - 宿主项目可注入自定义日志实现(如宿主日志框架实例 / console 包装 / 测试 mock)
6
+ * - 不注入时使用内核内置 console fallback(写 stderr,零配置、零第三方依赖)
7
+ * - 20+ 内核模块通过全局单例 `logger` 访问,无需每次传参
8
8
  *
9
- * 日志级别语义(与 pino 对齐):
9
+ * 日志级别语义:
10
10
  * - debug:调试信息(默认不输出)
11
11
  * - info:正常运行信息
12
12
  * - warn:非致命警告
13
13
  * - error:错误(含堆栈信息)
14
14
  *
15
- * 签名兼容 pino:支持 `logger.info('msg')` 和 `logger.info({ ctx }, 'msg')`
15
+ * 双形态签名:支持 `logger.info('msg')` 和 `logger.info({ ctx }, 'msg')`
16
16
  */
17
17
  export type LogFn = (objOrMsg: Record<string, unknown> | string, msg?: string) => void;
18
18
  /**
19
19
  * 日志接口
20
20
  *
21
- * 方法签名与 pino 兼容,实现者可以是:
22
- * - pino 实例(默认)
21
+ * 接口只约定「首参对象 + 可选消息」的双形态签名,实现者可以是:
22
+ * - 宿主日志框架实例(经适配器包装)
23
23
  * - console 包装
24
- * - 自定义日志框架
25
24
  * - 测试 mock
25
+ *
26
+ * 默认实现为内核内置 console fallback(写 stderr);内核不加载任何第三方日志库。
26
27
  */
27
28
  export interface ILogger {
28
29
  info: LogFn;
@@ -1 +1 @@
1
- {"version":3,"file":"loggerInterface.d.ts","sourceRoot":"","sources":["../../src/logging/loggerInterface.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,MAAM,MAAM,KAAK,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;AAEvF;;;;;;;;GAQG;AACH,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,KAAK,CAAC;IACZ,IAAI,EAAE,KAAK,CAAC;IACZ,KAAK,EAAE,KAAK,CAAC;IACb,KAAK,EAAE,KAAK,CAAC;CACd"}
1
+ {"version":3,"file":"loggerInterface.d.ts","sourceRoot":"","sources":["../../src/logging/loggerInterface.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,MAAM,MAAM,KAAK,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;AAEvF;;;;;;;;;GASG;AACH,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,KAAK,CAAC;IACZ,IAAI,EAAE,KAAK,CAAC;IACZ,KAAK,EAAE,KAAK,CAAC;IACb,KAAK,EAAE,KAAK,CAAC;CACd"}