@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
@@ -7,6 +7,8 @@
7
7
  * 3. 关键消息提取(extractKeyMessages)—— 按重要性权重贪心选取
8
8
  * 4. 上下文摘要生成(generateContextSummary)—— LLM 生成"遗忘补偿"
9
9
  * 5. 摘要缓存管理(getOrCreateSummary)—— 缓存 TTL + 过期重生成
10
+ * 6. 软上限判定(shouldInjectSoftLimitWrapup)—— 摘要层饱和注入收尾信号(自 AgentLoop 迁入)
11
+ * 7. 压力预警(shouldInjectContextPressureHint)—— 容量到线但摘要健康的前一级提示
10
12
  *
11
13
  * 设计理由:AgentLoop 1151 行超阈值,上下文管理是独立职责,
12
14
  * 拆分后 AgentLoop 聚焦对话循环,ContextManager 聚焦上下文窗口管理。
@@ -18,6 +20,10 @@ import { LOOP_CONSTANTS } from '../agent/constants.js';
18
20
  import { logger } from '../logging/logger.js';
19
21
  import { NOOP_TRACER, TRACE_SPANS } from '../agent/tracer.js';
20
22
  import { isAbortError } from '../utils/errors.js';
23
+ /** 软上限摘要化判定标记:第一级替换产物文案前缀(compaction.ts ReplaceRoundsStrategy) */
24
+ export const SOFT_LIMIT_SUMMARY_MARKER_ROUND = 'Round summary · roundId:';
25
+ /** 软上限摘要化判定标记:第二级压缩产物文案前缀(loop.compressContext) */
26
+ export const SOFT_LIMIT_SUMMARY_MARKER_COMPRESS = 'Compressed context';
21
27
  /**
22
28
  * 判断字符是否为 CJK 字符(中文适配)
23
29
  *
@@ -63,6 +69,45 @@ function countCjkAndOther(str) {
63
69
  }
64
70
  return { cjkChars, otherChars };
65
71
  }
72
+ /**
73
+ * 估算消息序列 token 数(CJK 感知,零状态纯函数)。
74
+ *
75
+ * 单一真理源:先累计全部字符、最后一次向上取整——与逐条取整再求和**不等价**
76
+ * (后者系统性高估)。运行时(`ContextManager.estimateTokens` / contextPreparer
77
+ * 各层计量)与宿主历史会话占用重算共用本函数,两端口径不漂移。
78
+ *
79
+ * @param messages 待估算的消息序列(content 计入,toolCalls 序列化后计入)
80
+ * @returns token 数(按 CJK/其他字符分轨估算后向上取整)
81
+ */
82
+ export function estimateTokensMessages(messages) {
83
+ let cjkChars = 0;
84
+ let otherChars = 0;
85
+ for (const m of messages) {
86
+ const contentCounts = countCjkAndOther(m.content);
87
+ cjkChars += contentCounts.cjkChars;
88
+ otherChars += contentCounts.otherChars;
89
+ if (m.toolCalls) {
90
+ const toolCallsCounts = countCjkAndOther(JSON.stringify(m.toolCalls));
91
+ cjkChars += toolCallsCounts.cjkChars;
92
+ otherChars += toolCallsCounts.otherChars;
93
+ }
94
+ }
95
+ return Math.ceil(cjkChars / LOOP_CONSTANTS.CJK_CHARS_PER_TOKEN + otherChars / LOOP_CONSTANTS.CHARS_PER_TOKEN);
96
+ }
97
+ /**
98
+ * 估算单段文本 token 数(CJK 感知,零状态纯函数)。
99
+ *
100
+ * 供「单段文本」场景使用(如宿主对一条记忆正文的独立计量)。
101
+ * 计量**消息序列**须用 `estimateTokensMessages`:本函数逐条调用再求和会放大
102
+ * 取整误差,与本函数同口径但结果不等价。
103
+ *
104
+ * @param text 待估算文本
105
+ * @returns token 数(按 CJK/其他字符分轨估算后向上取整)
106
+ */
107
+ export function estimateTokensText(text) {
108
+ const { cjkChars, otherChars } = countCjkAndOther(text);
109
+ return Math.ceil(cjkChars / LOOP_CONSTANTS.CJK_CHARS_PER_TOKEN + otherChars / LOOP_CONSTANTS.CHARS_PER_TOKEN);
110
+ }
66
111
  /**
67
112
  * 上下文窗口管理器
68
113
  *
@@ -70,154 +115,185 @@ function countCjkAndOther(str) {
70
115
  * 从 AgentLoop 提取,保持无状态设计(不持有 messages 引用)。
71
116
  */
72
117
  export class ContextManager {
73
- /** 上下文窗口 token 上限(readonly,构造时传入) */
118
+ // 组合 root 统一注入为字段,类内不承担 Provider 选址逻辑。
119
+ // 非 readonly:模型热切换(Agent.setContextWindow)后经 setMaxContextTokens 更新,
120
+ // 截断阈值 / 软上限 / 召回注入警戒线随新窗口同步重算。
74
121
  maxContextTokens;
75
- /** LLM Provider(用于 generateContextSummary) */
76
122
  provider;
77
- /** 截断占位消息文案函数 */
123
+ providerRouter;
78
124
  contextTruncatedFn;
79
- /** 可观测性 Tracer(用于 generateContextSummary span 埋点,默认 NOOP) */
80
125
  tracer;
81
- /** 上下文摘要缓存(首次截断后生成,后续截断复用) */
82
126
  contextSummary = null;
83
- /** 摘要缓存生成时的消息数量,用于判断缓存是否过期 */
84
127
  contextSummaryMsgCount = 0;
85
- /** 截断次数统计(truncateMessages 实际触发截断 +1,供 getMetrics 读取) */
86
128
  _truncationCount = 0;
87
- /** 截断事件回调(宿主可注入以通知用户) */
88
129
  onContextTruncated;
130
+ roundSummaryLoader;
131
+ minRecentRounds;
89
132
  constructor(opts) {
90
133
  this.maxContextTokens = opts.maxContextTokens;
91
134
  this.provider = opts.provider;
135
+ this.providerRouter = opts.providerRouter;
92
136
  this.contextTruncatedFn = opts.contextTruncatedFn;
93
137
  this.onContextTruncated = opts.onContextTruncated;
94
- // 未注入 tracer 时降级为 NOOP_TRACER(零开销)
138
+ this.roundSummaryLoader = opts.roundSummaryLoader;
139
+ this.minRecentRounds = Math.max(0, Math.floor(opts.minRecentRounds ?? 0));
95
140
  this.tracer = opts.tracer ?? NOOP_TRACER;
96
141
  }
97
- /** 截断次数(供 AgentLoop.getMetrics 读取) */
98
- get truncationCount() {
99
- return this._truncationCount;
100
- }
101
142
  /**
102
- * 估算消息数组的 token 数(CJK 中文适配)
143
+ * 运行时更新上下文窗口上限(token)
103
144
  *
104
- * 区分 CJK 与非 CJK 字符分别估算:
105
- * - CJK 字符(中文/日文/韩文):cjkChars / CJK_CHARS_PER_TOKEN(1.5)
106
- * - 非 CJK 字符(英文/数字/符号):otherChars / CHARS_PER_TOKEN(3)
107
- * 统一字符估算会严重低估中文(4 字符 ≈ 1.3 token,实际约 4-8 token)。
145
+ * 截断判定 / 软上限 / 召回注入警戒线均内读本字段,更新即刻生效。
108
146
  *
109
- * toolCalls 的 JSON 序列化字符数也计入(同样区分 CJK/非 CJK)。
110
- *
111
- * @param messages 消息数组
112
- * @returns 估算的 token 数
147
+ * @param tokens 新窗口 token 数
113
148
  */
114
- estimateTokens(messages) {
115
- let cjkChars = 0;
116
- let otherChars = 0;
117
- for (const m of messages) {
118
- // 消息内容:区分 CJK 与非 CJK 字符
119
- const contentCounts = countCjkAndOther(m.content);
120
- cjkChars += contentCounts.cjkChars;
121
- otherChars += contentCounts.otherChars;
122
- // toolCalls 的 JSON 序列化字符数(同样区分 CJK/非 CJK)
123
- if (m.toolCalls) {
124
- const toolCallsCounts = countCjkAndOther(JSON.stringify(m.toolCalls));
125
- cjkChars += toolCallsCounts.cjkChars;
126
- otherChars += toolCallsCounts.otherChars;
127
- }
128
- }
129
- // CJK 与非 CJK 分别按各自密度估算后求和
130
- return Math.ceil(cjkChars / LOOP_CONSTANTS.CJK_CHARS_PER_TOKEN +
131
- otherChars / LOOP_CONSTANTS.CHARS_PER_TOKEN);
149
+ setMaxContextTokens(tokens) {
150
+ this.maxContextTokens = tokens;
151
+ }
152
+ get truncationCount() {
153
+ return this._truncationCount;
132
154
  }
133
155
  /**
134
- * 检查是否需要截断(token 超阈值 + 消息数 > 3)
156
+ * 估算消息 token 数。
135
157
  *
136
- * @param messages 消息数组
137
- * @returns 是否需要截断
158
+ * CJK(中/日/韩)与其它字符密度不同需分开估算:
159
+ * 统一按 3 字符/token 会严重低估中文(实际约 1.5 字符/token)。
160
+ * toolCalls 序列化字符同样计入。
138
161
  */
162
+ estimateTokens(messages) {
163
+ return estimateTokensMessages(messages);
164
+ }
165
+ /** token 超阈值且消息数 > 3(避免单条消息触发截断)时才需要截断 */
139
166
  shouldTruncate(messages) {
140
167
  return this.estimateTokens(messages) > this.maxContextTokens && messages.length > 3;
141
168
  }
142
169
  /**
143
- * 截断消息数组以适配上下文窗口
170
+ * 软上限判定:上下文逼近容量上限(≥ 缓冲阈值)且摘要层 token 占比过高时,注入收尾信号让 LLM 收敛。
171
+ * 从 AgentLoop._shouldInjectSoftLimitWrapup 迁入(与 estimateTokens/maxContextTokens 同属上下文预算层)。
144
172
  *
145
- * 策略:保留下方、裁中间、提取关键消息。
146
- * - messages[0](system prompt)始终保留(这是 Agent 的"灵魂")
147
- * - 从尾部向前取最近的消息对(user + assistant + tool),直到估算 token 接近上限
148
- * - 从被裁剪的消息中按重要性权重提取关键用户消息,插入到 placeholder 之前
149
- * - 头部被裁剪的消息替换为一条摘要占位消息
173
+ * 精确检测摘要层 token 占用(替代原"存在标记即触发"的近似判断):
174
+ * - 过滤出标记为摘要的消息(Round summary / Compressed context)
175
+ * - 计算摘要层 token 占用
176
+ * - 当摘要层 token ≥ maxContextTokens × SUMMARY_LAYER_TOKEN_RATIO 时判定为"摘要层达容量上限"
150
177
  *
151
- * 重要性权重:user 消息 > tool 结果 > assistant 回复
152
- * 被裁剪的用户消息中,内容较长的(信息量大)优先保留
178
+ * @param messages 当前工作记忆(读型判定,不修改)
179
+ * @returns 是否应注入软上限收尾信号
180
+ */
181
+ shouldInjectSoftLimitWrapup(messages) {
182
+ // 容量阈值:上下文逼近 maxContextTokens 警戒线(≥ CONTEXT_TOKENS_BUFFER_RATIO)
183
+ const currentTokens = this.estimateTokens(messages);
184
+ if (currentTokens < this.maxContextTokens * LOOP_CONSTANTS.CONTEXT_TOKENS_BUFFER_RATIO) {
185
+ return false;
186
+ }
187
+ // 精确检测:计算摘要层 token 占用(仅统计标记为摘要的消息)
188
+ const summaryMessages = messages.filter((m) => m.content.includes(SOFT_LIMIT_SUMMARY_MARKER_ROUND) ||
189
+ m.content.includes(SOFT_LIMIT_SUMMARY_MARKER_COMPRESS));
190
+ if (summaryMessages.length === 0) {
191
+ return false;
192
+ }
193
+ // 摘要层 token 占容量阈值比例(≥ SUMMARY_LAYER_TOKEN_RATIO = 30%)
194
+ const summaryTokens = this.estimateTokens(summaryMessages);
195
+ return summaryTokens >= this.maxContextTokens * LOOP_CONSTANTS.SUMMARY_LAYER_TOKEN_RATIO;
196
+ }
197
+ /**
198
+ * 上下文压力预警判定:容量表达警戒线(≥ CONTEXT_TOKENS_BUFFER_RATIO)但
199
+ * 摘要层未饱和(低于 SUMMARY_LAYER_TOKEN_RATIO)时 → 可注入温和提示(压缩/收敛引导)。
200
+ *
201
+ * 与 shouldInjectSoftLimitWrapup 互补——同一容量闸的两级:
202
+ * 摘要层饱和 → shouldInjectSoftLimitWrapup(收尾信号)
203
+ * 容量到线但摘要健康 → shouldInjectContextPressureHint(软上限的前一级预警)
153
204
  *
154
- * 如果 system prompt 本身就超过 maxContextTokens,不做截断(让 LLM API 报错,
155
- * 开发者需要缩减 bootstrapMemories 或 toolDefinitions)。
205
+ * @param messages 当前工作记忆(读型判定,不修改)
206
+ * @returns 是否应注入上下文空间预警提示
207
+ */
208
+ shouldInjectContextPressureHint(messages) {
209
+ // 容量阈值:上下文逼警戒线(≥ CONTEXT_TOKENS_BUFFER_RATIO)
210
+ const currentTokens = this.estimateTokens(messages);
211
+ if (currentTokens < this.maxContextTokens * LOOP_CONSTANTS.CONTEXT_TOKENS_BUFFER_RATIO) {
212
+ return false;
213
+ }
214
+ // 摘要层已达饱和 → 归软上限收尾路径,不重复预警(避免与收尾信号叠加)
215
+ if (this.shouldInjectSoftLimitWrapup(messages)) {
216
+ return false;
217
+ }
218
+ return true;
219
+ }
220
+ /**
221
+ * 截断消息数组以适配上下文窗口。
156
222
  *
157
- * @param messages 完整消息数组
158
- * @param summary 可选的上下文摘要(注入到 system prompt 和 placeholder 之间)
159
- * @returns 截断后的消息数组(可能是原数组引用,无修改时)
223
+ * 策略:保留下方(最近)、裁中间、头部折叠成占位消息。
224
+ * - messages[0](system prompt)始终保留;
225
+ * - 从被裁剪段按重要性(user > tool > assistant)提取关键消息;
226
+ * - 若 system prompt 本身已超窗口则不截断(配置问题,交由 LLM API 报错)。
160
227
  */
161
228
  truncateMessages(messages, summary) {
162
229
  const estimated = this.estimateTokens(messages);
163
230
  if (estimated <= this.maxContextTokens || messages.length <= 3) {
164
- return messages; // 未超阈值,无需截断
231
+ return messages;
165
232
  }
166
- // system prompt 单独保留
167
233
  const systemMsg = messages[0];
168
234
  if (!systemMsg || systemMsg.role !== 'system') {
169
- return messages; // 异常:没有 system prompt,不截断
235
+ return messages;
170
236
  }
171
237
  const systemTokens = this.estimateTokens([systemMsg]);
172
238
  if (systemTokens >= this.maxContextTokens) {
173
- // system prompt 本身就超了——这是配置问题,不应该截断
174
239
  logger.warn({ systemTokens, maxContextTokens: this.maxContextTokens }, 'system prompt 已超过上下文窗口上限,请缩减 bootstrapMemories 或 toolDefinitions');
175
240
  return messages;
176
241
  }
177
- // 剩余可用 token 数(留 10% 缓冲给 LLM 响应)
242
+ // 留 10% 缓冲给 LLM 响应
178
243
  const availableTokens = Math.floor(this.maxContextTokens * LOOP_CONSTANTS.CONTEXT_TOKENS_BUFFER_RATIO) - systemTokens;
179
- // 从尾部向前收集消息(最近的最重要)
244
+ // 从尾部向前收集最近消息(tail 区);cutIndex 记录裁剪起始
180
245
  const tail = [];
181
246
  let tailTokens = 0;
182
- let cutIndex = messages.length; // 被裁剪区域的起始索引
247
+ let cutIndex = messages.length;
248
+ // 强制保留最近 minRecentRounds 轮原始对话,不被摘要替代(0=不强制)
249
+ let forcedTailCount = 0;
250
+ if (this.minRecentRounds > 0) {
251
+ let userSeen = 0;
252
+ for (let i = messages.length - 1; i >= 1; i--) {
253
+ const msg = messages[i];
254
+ if (!msg)
255
+ break;
256
+ if (msg.role === 'user')
257
+ userSeen++;
258
+ if (userSeen > this.minRecentRounds)
259
+ break;
260
+ forcedTailCount++;
261
+ }
262
+ }
183
263
  for (let i = messages.length - 1; i >= 1; i--) {
184
- // QC-17 移除非空断言:循环条件保证索引有效,null 检查兜底
185
264
  const msg = messages[i];
186
265
  if (!msg)
187
266
  break;
188
267
  const msgTokens = this.estimateTokens([msg]);
189
- if (tailTokens + msgTokens > availableTokens) {
190
- cutIndex = i + 1; // cutIndex 是第一条被保留的尾部消息
191
- break; // 再加这条就超了
268
+ // 强制保留区不计入 token 上限;超出该区才按 token 截断
269
+ const inForced = tail.length < forcedTailCount;
270
+ if (!inForced && tailTokens + msgTokens > availableTokens) {
271
+ cutIndex = i + 1;
272
+ break;
192
273
  }
193
- tail.unshift(msg); // 保持顺序:从尾部取,但插入时保持时间顺序
274
+ tail.unshift(msg);
194
275
  tailTokens += msgTokens;
195
276
  cutIndex = i;
196
277
  }
197
- // 计算被裁剪的消息
198
- const skipped = cutIndex - 1; // -1 是 system prompt
278
+ // 去掉 system prompt(-1);裁剪数为 0 说明全部保留
279
+ const skipped = cutIndex - 1;
199
280
  if (skipped <= 0) {
200
- return messages; // 全部保留
281
+ return messages;
201
282
  }
202
- // 截断次数统计:确实发生了截断(skipped > 0)
203
283
  this._truncationCount++;
204
- // 通知宿主上下文被截断(如��回调)
205
284
  this.onContextTruncated?.(skipped, tail.length);
206
- // 从被裁剪的消息中按重要性提取关键消息
207
- // 重要性权重:user > tool > assistant;内容较长的用户消息优先
285
+ // 从被裁剪段按重要性提取关键消息(保留信息量最高的用户输入)
208
286
  const cutMessages = messages.slice(1, cutIndex);
209
287
  const keyMessages = this.extractKeyMessages(cutMessages, availableTokens - tailTokens);
210
- // 构造一条占位消息,让 LLM 知道有历史被裁剪了
288
+ // 占位消息:告知 LLM 有历史被裁剪
211
289
  const placeholder = {
212
290
  role: 'system',
213
291
  content: this.contextTruncatedFn(skipped, tail.length),
214
292
  };
215
293
  const truncated = [systemMsg];
216
- // 如果有摘要,插入到 system prompt 和 placeholder 之间
217
294
  if (summary) {
218
295
  truncated.push({ role: 'system', content: summary });
219
296
  }
220
- // 插入从被裁剪区域提取的关键消息
221
297
  truncated.push(...keyMessages);
222
298
  truncated.push(placeholder);
223
299
  truncated.push(...tail);
@@ -233,37 +309,24 @@ export class ContextManager {
233
309
  return truncated;
234
310
  }
235
311
  /**
236
- * 从被裁剪的消息中按重要性提取关键消息
237
- *
238
- * 重要性权重:
239
- * - user 消息:权重 3(用户输入信息量最高)
240
- * - tool 消息:权重 2(工具结果有参考价值)
241
- * - assistant 消息:权重 1(助手回复可从上下文推断)
242
- *
243
- * 贪心选取:按权重降序 + 内容长度降序排列,逐条选取直到 token 用完。
244
- * 最终按原始顺序返回(保持时间线一致性)。
245
- *
246
- * @param cutMessages 被裁剪的消息数组
247
- * @param availableTokens 可用 token 数
248
- * @returns 提取的关键消息数组(按原始顺序)
312
+ * 从被裁剪段按重要性贪心选取关键消息,保留信息量最高的用户输入。
313
+ * 权重:user=3 > tool=2 > assistant=1,同级按内容长度;最后恢复原始顺序。
249
314
  */
250
315
  extractKeyMessages(cutMessages, availableTokens) {
251
316
  if (availableTokens <= 0 || cutMessages.length === 0)
252
317
  return [];
253
- // 计算每条消息的权重和 token 数
254
318
  const weighted = cutMessages.map((msg, index) => ({
255
319
  msg,
256
- index, // 原始顺序索引
320
+ index, // 原始顺序索引(最终恢复用)
257
321
  weight: this.messageImportance(msg),
258
322
  tokens: this.estimateTokens([msg]),
259
323
  }));
260
- // 按权重降序 + 内容长度降序排列
261
324
  weighted.sort((a, b) => {
262
325
  if (b.weight !== a.weight)
263
326
  return b.weight - a.weight;
264
327
  return b.msg.content.length - a.msg.content.length;
265
328
  });
266
- // 贪心选取,直到 token 用完
329
+ // 贪心选取直到 token 用完
267
330
  const selected = [];
268
331
  let usedTokens = 0;
269
332
  for (const item of weighted) {
@@ -272,16 +335,11 @@ export class ContextManager {
272
335
  selected.push(item);
273
336
  usedTokens += item.tokens;
274
337
  }
275
- // 恢复原始顺序(保持时间线一致性)
338
+ // 恢复原始顺序,保持时间线一致
276
339
  selected.sort((a, b) => a.index - b.index);
277
340
  return selected.map((item) => item.msg);
278
341
  }
279
- /**
280
- * 评估单条消息的重要性权重
281
- *
282
- * @param msg 消息
283
- * @returns 权重值(user=3, tool=2, assistant=1)
284
- */
342
+ /** 消息重要性权重:user>tool>assistant */
285
343
  messageImportance(msg) {
286
344
  if (msg.role === 'user')
287
345
  return 3;
@@ -290,60 +348,63 @@ export class ContextManager {
290
348
  return 1;
291
349
  }
292
350
  /**
293
- * 获取或创建上下文摘要(带缓存管理)
351
+ * 作废摘要缓存
294
352
  *
295
- * 缓存 TTL:消息数增长超过 SUMMARY_CACHE_TTL_MSGS 时缓存过期,需重新生成。
296
- * 首次调用时生成摘要并缓存,后续调用复用缓存直到过期。
353
+ * 缓存过期靠 `messages.length - contextSummaryMsgCount > TTL` 这个**单向**数值判断,
354
+ * 只覆盖「消息增长」。当消息集合被整体替换(`AgentLoop.restoreHistory` 恢复检查点)
355
+ * 且新历史更短时,差值为负 → 陈旧摘要永不过期,会把上一段会话的摘要注入新上下文。
297
356
  *
298
- * signal 参数让摘要生成可被用户取消中断,
299
- * 避免摘要 LLM 调用卡住时 generator 永久挂起(与 executeToolCalls 同源问题)。
357
+ * 修法不是把条件改成 `Math.abs`:truncateMessages 的正常裁剪同样让消息变少,
358
+ * 而那时摘要恰恰更该保留(它描述的就是被裁掉的历史)。真理源是「消息集合是否被替换」
359
+ * 这一事实,故由替换方显式作废,而非从长度差反推。
360
+ */
361
+ resetSummary() {
362
+ this.contextSummary = null;
363
+ this.contextSummaryMsgCount = 0;
364
+ }
365
+ /**
366
+ * 获取或创建上下文摘要(带缓存)。
300
367
  *
301
- * @param messages 当前消息数组(用于生成摘要和判断缓存过期)
302
- * @param signal 可选的 AbortSignal,中断摘要生成
303
- * @returns 摘要字符串(失败/中断时返回空字符串,降级为无摘要)
368
+ * 缓存 TTL:消息数增长超 SUMMARY_CACHE_TTL_MSGS 即过期重生成。
369
+ * signal 使摘要 LLM 可被中断,避免其卡住时挂起调用方。
304
370
  */
305
371
  async getOrCreateSummary(messages, signal) {
306
- // 检查缓存是否有效
307
372
  const summaryExpired = this.contextSummary !== null &&
308
373
  messages.length - this.contextSummaryMsgCount > LOOP_CONSTANTS.SUMMARY_CACHE_TTL_MSGS;
309
374
  if (this.contextSummary && !summaryExpired) {
310
375
  return this.contextSummary;
311
376
  }
312
- // 生成新摘要(传入 signal 支持中断)
313
377
  const summary = await this.generateContextSummary(messages, signal);
314
378
  this.contextSummary = summary;
315
379
  this.contextSummaryMsgCount = messages.length;
316
380
  return summary;
317
381
  }
318
382
  /**
319
- * 生成上下文摘要(enableContextSummary 时调用)
320
- *
321
- * 在首次截断时,提取即将被裁剪的消息中最近几条用户/助手对话,
322
- * 调用 provider 生成一句摘要,作为"遗忘补偿"注入到 system prompt 中。
323
- *
324
- * 通过 tracer span 埋点(TRACE_SPANS.CONTEXT_SUMMARY),
325
- * 让宿主监控面板能观察截断频率、摘要生成耗时与失败率。
383
+ * 生成上下文摘要:把被裁剪段压缩成"遗忘补偿"注入 system prompt。
326
384
  *
327
- * signal 参数传入 provider.chat 的 ChatOptions,
328
- * 让 fetch 请求和 SSE 流读取都能被 abort 中断;
329
- * for await 循环中也检查 signal.aborted 提前退出。
330
- *
331
- * @param messages 当前消息数组
332
- * @param signal 可选的 AbortSignal
333
- * @returns 摘要字符串(失败/中断时返回空字符串,降级为无摘要)
385
+ * 策略:
386
+ * - 优先复用已存的 round-summary(每轮后台生成的零成本产物),仅无已存摘要才调 LLM;
387
+ * - 走 providerRouter 的 'summary' 路由(轻量模型),未配置则回退主 provider;
388
+ * - abort 或失败一律降级为空串返回,不影响主流程。
334
389
  */
335
390
  async generateContextSummary(messages, signal) {
336
- // 启动 CONTEXT_SUMMARY span,记录摘要生成的耗时与异常
337
391
  const summarySpan = this.tracer.startSpan(TRACE_SPANS.CONTEXT_SUMMARY, {
338
392
  messageCount: messages.length,
339
393
  summarizingMessages: Math.min(messages.length - 1, LOOP_CONSTANTS.SUMMARY_MSG_COUNT),
340
394
  });
341
395
  try {
342
- // signal 已 abort 时直接返回空,不发起 LLM 调用
343
396
  if (signal?.aborted) {
344
397
  summarySpan.setAttribute('aborted', true);
345
398
  return '';
346
399
  }
400
+ if (this.roundSummaryLoader) {
401
+ const existing = this.roundSummaryLoader();
402
+ if (existing) {
403
+ summarySpan.setAttribute('source', 'round-summary');
404
+ logger.debug('上下文截断复用已存 round-summary,跳过 LLM 摘要生成');
405
+ return existing;
406
+ }
407
+ }
347
408
  const messagesToSummarize = messages.slice(1);
348
409
  const recentMessages = messagesToSummarize
349
410
  .filter((m) => m.role === 'user' || (m.role === 'assistant' && typeof m.content === 'string'))
@@ -354,8 +415,8 @@ export class ContextManager {
354
415
  summarySpan.setAttribute('skipped', true);
355
416
  return '';
356
417
  }
357
- // 将 signal 注入 ChatOptions,让 provider 的 fetch/SSE 能被 abort 中断
358
- const stream = this.provider.chat([
418
+ const summaryProvider = this.providerRouter ? this.providerRouter('summary') : this.provider;
419
+ const stream = summaryProvider.chat([
359
420
  {
360
421
  role: 'system',
361
422
  content: 'Summarize the following conversation excerpt in 1-2 sentences. Focus on key facts, decisions, and user preferences. Be concise.',
@@ -368,7 +429,6 @@ export class ContextManager {
368
429
  });
369
430
  let summary = '';
370
431
  for await (const chunk of stream) {
371
- // 流读取过程中检查 abort,提前退出(provider 收到 abort 会抛 AbortError 进入 catch)
372
432
  if (signal?.aborted) {
373
433
  summarySpan.setAttribute('aborted', true);
374
434
  break;
@@ -376,7 +436,6 @@ export class ContextManager {
376
436
  if (chunk.content)
377
437
  summary += chunk.content;
378
438
  }
379
- // 被中断时返回空字符串(降级为无摘要),不缓存
380
439
  if (signal?.aborted) {
381
440
  return '';
382
441
  }
@@ -385,19 +444,17 @@ export class ContextManager {
385
444
  return `[Context summary of earlier conversation]\n${summary}`;
386
445
  }
387
446
  catch (err) {
388
- // AbortError 是用户主动取消,降级为无摘要,不当作错误
447
+ // AbortError 是用户主动取消,降级为无摘要而非错误
389
448
  if (isAbortError(err)) {
390
449
  summarySpan.setAttribute('aborted', true);
391
450
  logger.debug('上下文摘要生成被中断,降级为无摘要');
392
451
  return '';
393
452
  }
394
- // 记录异常到 span(不中断 span,标记错误状态)
395
453
  summarySpan.recordException(err instanceof Error ? err : new Error(String(err)));
396
454
  logger.warn({ err }, '上下文摘要生成失败,降级为无摘要');
397
455
  return '';
398
456
  }
399
457
  finally {
400
- // 无论成功/失败都结束 span
401
458
  summarySpan.end();
402
459
  }
403
460
  }
@@ -1 +1 @@
1
- {"version":3,"file":"contextManager.js","sourceRoot":"","sources":["../../src/agent/contextManager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"contextManager.js","sourceRoot":"","sources":["../../src/agent/contextManager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,78 @@
1
+ /**
2
+ * Agent 输入增强管线 — 外部输入 → 上下文装配
3
+ *
4
+ * 职责:
5
+ * - assembleContext:上下文装配(预算派生 + 对话层注入 + 占用快照)。
6
+ * 每轮无自动记忆召回(memory-tool-recall-design §3/§4),检索由 LLM 经 search_memories 工具主动触发。
7
+ * - 角色包只能手动切换,无 autoMatch / LLM 语义兜底(无角色自动匹配)
8
+ *
9
+ * 设计原则:
10
+ * - 只依赖 Agent 注入的稳定能力(deps),不反向依赖 Agent 私有状态(与 AgentHooks 同构)
11
+ * - 管线逻辑单一真理源:对话层注入/占用快照随管线走
12
+ * - Agent 门面保留编排骨架(thinking 阶段 yield 与调用点),叶子逻辑在此唯一实现
13
+ * - 事件发射(inputTooLarge)经 emit 回调由 Agent 承接
14
+ */
15
+ import type { AgentLoop } from '../agent/loop.js';
16
+ import type { RolePackManager } from '../role-pack/rolePackManager.js';
17
+ import type { IMemoryStorage } from '../memory/storageInterface.js';
18
+ import type { UIMessages } from '../agent/types.js';
19
+ import { type AgentEventName } from '../utils/eventEmitter.js';
20
+ import type { ITracer } from '../agent/tracer.js';
21
+ /**
22
+ * 输入增强管线的依赖注入接口(Agent 稳定能力的窄面)
23
+ *
24
+ * 边界:只传 Agent 的稳定能力(组件引用 / 配置 / 事件发射),
25
+ * 不传可变私有状态。
26
+ */
27
+ export interface ContextPreparerDeps {
28
+ /** AgentLoop(最近对话注入 + 召回互斥排除集派生) */
29
+ loop: AgentLoop;
30
+ /** 角色包管理器(策略来源;可为空) */
31
+ rolePackManager: RolePackManager | null;
32
+ /** 懒取项目记忆索引(requirePctx.index 等价物,避免持有可变 ProjectContext 引用) */
33
+ getIndex: () => IMemoryStorage;
34
+ /** 宿主可观测性 / 存储 / 文案配置 */
35
+ config: {
36
+ /** 可观测性 Tracer(可选,缺省 Noop) */
37
+ tracer: ITracer | null;
38
+ /** 界面文案(最近对话 / 用户 / 助手标签) */
39
+ messages: UIMessages | undefined;
40
+ /** 上下文窗口容量(token):唯一真理源 = 宿主在构造内核前经 resolveContextWindow(window) 解析注入的单一数字(per-LLM 窗口,缺失回退默认 120K)。内核预算路径只消费单一数字,不认 provider/用户双层来源 */
41
+ maxContextTokens: number;
42
+ };
43
+ /** 事件发射(桥接到 Agent 强类型 emit) */
44
+ emit: (event: AgentEventName, data: unknown) => void;
45
+ }
46
+ /**
47
+ * 输入增强管线协调器
48
+ *
49
+ * 承载 chat() 回答前的输入增强:记忆召回 + 固定轮次注入。Agent.prepareChatContext
50
+ * 保留编排骨架,本类唯一实现叶子逻辑。
51
+ */
52
+ export declare class ContextPreparer {
53
+ /** 依赖注入集合(Agent 稳定能力窄面) */
54
+ private readonly deps;
55
+ constructor(deps: ContextPreparerDeps);
56
+ /**
57
+ * 运行时更新上下文窗口上限(token)
58
+ *
59
+ * 模型热切换(Agent.setContextWindow)后调用:deps.config.maxContextTokens 为装配期
60
+ * 值拷贝,须显式同步——否则每轮 prepare 的预算派生(computeContextBudget)与占用快照
61
+ * (recordOccupancy 的 totalTokens / outputReserve / free)仍用旧窗口。
62
+ *
63
+ * @param tokens 新窗口 token 数
64
+ */
65
+ setMaxContextTokens(tokens: number): void;
66
+ /**
67
+ * 上下文装配(纯上下文装配,无自动召回)
68
+ *
69
+ * 记忆检索由 LLM 经 search_memories 工具主动触发(builtinToolHandlers.searchMemories),
70
+ * 本方法不代模型猜测"此刻需要什么记忆",只做纯**上下文装配**:预算派生 + roundId 互斥 +
71
+ * 对话层注入 + 上下文占用快照,不返回任何自动召回的注入记忆。
72
+ * 对话层注入恒走 hybrid(最近对话摘要注入),无 fixed/query 分支。
73
+ *
74
+ * @param input 用户输入(仅作顶级锚点预算估算,不再作为召回 query)
75
+ */
76
+ assembleContext(input: string): Promise<void>;
77
+ }
78
+ //# sourceMappingURL=contextPreparer.d.ts.map