@zooique/memora 2.0.0 → 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 -0
  3. package/README.md +303 -148
  4. package/config.example.json +43 -0
  5. package/dist/agent/agent.d.ts +438 -295
  6. package/dist/agent/agent.d.ts.map +1 -1
  7. package/dist/agent/agent.js +1368 -836
  8. package/dist/agent/agent.js.map +1 -1
  9. package/dist/agent/assembler.d.ts +117 -39
  10. package/dist/agent/assembler.d.ts.map +1 -1
  11. package/dist/agent/assembler.js +574 -71
  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 +229 -17
  18. package/dist/agent/builtinToolHandlers.d.ts.map +1 -1
  19. package/dist/agent/builtinToolHandlers.js +758 -70
  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 +139 -18
  30. package/dist/agent/constants.d.ts.map +1 -1
  31. package/dist/agent/constants.js +154 -18
  32. package/dist/agent/constants.js.map +1 -1
  33. package/dist/agent/contextManager.d.ts +126 -76
  34. package/dist/agent/contextManager.d.ts.map +1 -1
  35. package/dist/agent/contextManager.js +197 -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 +718 -253
  50. package/dist/agent/loop.d.ts.map +1 -1
  51. package/dist/agent/loop.js +2215 -648
  52. package/dist/agent/loop.js.map +1 -1
  53. package/dist/agent/managers/archiveCoordinator.d.ts +21 -74
  54. package/dist/agent/managers/archiveCoordinator.d.ts.map +1 -1
  55. package/dist/agent/managers/archiveCoordinator.js +32 -105
  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 +85 -0
  62. package/dist/agent/managers/dedupManager.d.ts.map +1 -0
  63. package/dist/agent/managers/dedupManager.js +248 -0
  64. package/dist/agent/managers/dedupManager.js.map +1 -0
  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 +21 -0
  74. package/dist/agent/managers/llmJudgeHelper.d.ts.map +1 -0
  75. package/dist/agent/managers/llmJudgeHelper.js +32 -0
  76. package/dist/agent/managers/llmJudgeHelper.js.map +1 -0
  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 +56 -192
  84. package/dist/agent/managers/memoryAdvisor.js.map +1 -1
  85. package/dist/agent/managers/memoryGovernance.d.ts +24 -0
  86. package/dist/agent/managers/memoryGovernance.d.ts.map +1 -0
  87. package/dist/agent/managers/memoryGovernance.js +46 -0
  88. package/dist/agent/managers/memoryGovernance.js.map +1 -0
  89. package/dist/agent/managers/memoryInspector.d.ts +59 -393
  90. package/dist/agent/managers/memoryInspector.d.ts.map +1 -1
  91. package/dist/agent/managers/memoryInspector.js +92 -736
  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 -63
  98. package/dist/agent/managers/sessionArchiver.d.ts.map +1 -1
  99. package/dist/agent/managers/sessionArchiver.js +83 -157
  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 +20 -0
  110. package/dist/agent/managers/streamAccumulator.d.ts.map +1 -0
  111. package/dist/agent/managers/streamAccumulator.js +15 -0
  112. package/dist/agent/managers/streamAccumulator.js.map +1 -0
  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 +12 -47
  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 +57 -87
  122. package/dist/agent/managers/workProjection.d.ts.map +1 -1
  123. package/dist/agent/managers/workProjection.js +166 -246
  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 +255 -9
  158. package/dist/agent/toolExecutor.d.ts.map +1 -1
  159. package/dist/agent/toolExecutor.js +956 -20
  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 +512 -162
  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 +59 -242
  198. package/dist/config/loader.d.ts.map +1 -1
  199. package/dist/config/loader.js +237 -194
  200. package/dist/config/loader.js.map +1 -1
  201. package/dist/index.d.ts +69 -74
  202. package/dist/index.d.ts.map +1 -1
  203. package/dist/index.js +93 -63
  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 +29 -25
  210. package/dist/llm/factory.d.ts.map +1 -1
  211. package/dist/llm/factory.js +34 -69
  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 +181 -129
  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 -29
  226. package/dist/logging/logger.d.ts.map +1 -1
  227. package/dist/logging/logger.js +43 -233
  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 +17 -0
  236. package/dist/memory/governance.d.ts.map +1 -0
  237. package/dist/memory/governance.js +17 -0
  238. package/dist/memory/governance.js.map +1 -0
  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 +26 -141
  252. package/dist/memory/inMemoryStorage.d.ts.map +1 -1
  253. package/dist/memory/inMemoryStorage.js +48 -187
  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 +7 -2
  260. package/dist/memory/lockManager.d.ts.map +1 -1
  261. package/dist/memory/lockManager.js +35 -11
  262. package/dist/memory/lockManager.js.map +1 -1
  263. package/dist/memory/projectManager.d.ts +30 -128
  264. package/dist/memory/projectManager.d.ts.map +1 -1
  265. package/dist/memory/projectManager.js +39 -171
  266. package/dist/memory/projectManager.js.map +1 -1
  267. package/dist/memory/projectRegistry.d.ts +22 -37
  268. package/dist/memory/projectRegistry.d.ts.map +1 -1
  269. package/dist/memory/projectRegistry.js +78 -85
  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 +18 -9
  284. package/dist/memory/sourceValidation.d.ts.map +1 -1
  285. package/dist/memory/sourceValidation.js +35 -29
  286. package/dist/memory/sourceValidation.js.map +1 -1
  287. package/dist/memory/storageInterface.d.ts +45 -126
  288. package/dist/memory/storageInterface.d.ts.map +1 -1
  289. package/dist/memory/types.d.ts +82 -168
  290. package/dist/memory/types.d.ts.map +1 -1
  291. package/dist/memory/types.js +116 -79
  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 +127 -56
  342. package/dist/skill/skillManager.d.ts.map +1 -1
  343. package/dist/skill/skillManager.js +318 -163
  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 -17
  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 +79 -0
  366. package/dist/utils/configResourceManager.d.ts.map +1 -0
  367. package/dist/utils/configResourceManager.js +150 -0
  368. package/dist/utils/configResourceManager.js.map +1 -0
  369. package/dist/utils/errors.d.ts +48 -56
  370. package/dist/utils/errors.d.ts.map +1 -1
  371. package/dist/utils/errors.js +60 -58
  372. package/dist/utils/errors.js.map +1 -1
  373. package/dist/utils/eventEmitter.d.ts +141 -63
  374. package/dist/utils/eventEmitter.d.ts.map +1 -1
  375. package/dist/utils/eventEmitter.js +50 -35
  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 +6 -5
  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 +34 -1
  396. package/dist/utils/math.d.ts.map +1 -1
  397. package/dist/utils/math.js +47 -14
  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 -29
  416. package/dist/utils/segmenter.d.ts.map +1 -1
  417. package/dist/utils/segmenter.js +230 -88
  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 +1175 -0
  458. package/docs/memora-/346/216/245/345/205/245/346/214/207/345/215/227.md +843 -0
  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 -83
  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 -47
  503. package/dist/agent/guardrail.d.ts.map +0 -1
  504. package/dist/agent/guardrail.js +0 -51
  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 -150
  509. package/dist/agent/managers/autoConfigRefiner.js.map +0 -1
  510. package/dist/agent/managers/configManager.d.ts +0 -125
  511. package/dist/agent/managers/configManager.d.ts.map +0 -1
  512. package/dist/agent/managers/configManager.js +0 -194
  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 -198
  519. package/dist/agent/managers/memoryDecayScheduler.d.ts.map +0 -1
  520. package/dist/agent/managers/memoryDecayScheduler.js +0 -349
  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 -81
  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 -67
  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 -54
  551. package/dist/memory/hybridMerge.d.ts.map +0 -1
  552. package/dist/memory/hybridMerge.js +0 -36
  553. package/dist/memory/hybridMerge.js.map +0 -1
  554. package/dist/memory/inMemoryRelationStore.d.ts +0 -51
  555. package/dist/memory/inMemoryRelationStore.d.ts.map +0 -1
  556. package/dist/memory/inMemoryRelationStore.js +0 -65
  557. package/dist/memory/inMemoryRelationStore.js.map +0 -1
  558. package/dist/memory/loader.d.ts +0 -49
  559. package/dist/memory/loader.d.ts.map +0 -1
  560. package/dist/memory/loader.js +0 -93
  561. package/dist/memory/loader.js.map +0 -1
  562. package/dist/memory/recall.d.ts +0 -66
  563. package/dist/memory/recall.d.ts.map +0 -1
  564. package/dist/memory/recall.js +0 -142
  565. package/dist/memory/recall.js.map +0 -1
  566. package/dist/memory/relationStore.d.ts +0 -78
  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 -50
  571. package/dist/memory/store.d.ts.map +0 -1
  572. package/dist/memory/store.js +0 -161
  573. package/dist/memory/store.js.map +0 -1
  574. package/dist/memory/userProfile.d.ts +0 -156
  575. package/dist/memory/userProfile.d.ts.map +0 -1
  576. package/dist/memory/userProfile.js +0 -320
  577. package/dist/memory/userProfile.js.map +0 -1
  578. package/dist/memory/vectorStore.d.ts +0 -185
  579. package/dist/memory/vectorStore.d.ts.map +0 -1
  580. package/dist/memory/vectorStore.js +0 -257
  581. package/dist/memory/vectorStore.js.map +0 -1
  582. package/dist/persona/personaManager.d.ts +0 -160
  583. package/dist/persona/personaManager.d.ts.map +0 -1
  584. package/dist/persona/personaManager.js +0 -414
  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 聚焦上下文窗口管理。
@@ -17,6 +19,11 @@
17
19
  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';
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';
20
27
  /**
21
28
  * 判断字符是否为 CJK 字符(中文适配)
22
29
  *
@@ -62,6 +69,45 @@ function countCjkAndOther(str) {
62
69
  }
63
70
  return { cjkChars, otherChars };
64
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
+ }
65
111
  /**
66
112
  * 上下文窗口管理器
67
113
  *
@@ -69,149 +115,185 @@ function countCjkAndOther(str) {
69
115
  * 从 AgentLoop 提取,保持无状态设计(不持有 messages 引用)。
70
116
  */
71
117
  export class ContextManager {
72
- /** 上下文窗口 token 上限(readonly,构造时传入) */
118
+ // 组合 root 统一注入为字段,类内不承担 Provider 选址逻辑。
119
+ // 非 readonly:模型热切换(Agent.setContextWindow)后经 setMaxContextTokens 更新,
120
+ // 截断阈值 / 软上限 / 召回注入警戒线随新窗口同步重算。
73
121
  maxContextTokens;
74
- /** LLM Provider(用于 generateContextSummary) */
75
122
  provider;
76
- /** 截断占位消息文案函数 */
123
+ providerRouter;
77
124
  contextTruncatedFn;
78
- /** 可观测性 Tracer(用于 generateContextSummary span 埋点,默认 NOOP) */
79
125
  tracer;
80
- /** 上下文摘要缓存(首次截断后生成,后续截断复用) */
81
126
  contextSummary = null;
82
- /** 摘要缓存生成时的消息数量,用于判断缓存是否过期 */
83
127
  contextSummaryMsgCount = 0;
84
- /** 截断次数统计(truncateMessages 实际触发截断 +1,供 getMetrics 读取) */
85
128
  _truncationCount = 0;
129
+ onContextTruncated;
130
+ roundSummaryLoader;
131
+ minRecentRounds;
86
132
  constructor(opts) {
87
133
  this.maxContextTokens = opts.maxContextTokens;
88
134
  this.provider = opts.provider;
135
+ this.providerRouter = opts.providerRouter;
89
136
  this.contextTruncatedFn = opts.contextTruncatedFn;
90
- // 未注入 tracer 时降级为 NOOP_TRACER(零开销)
137
+ this.onContextTruncated = opts.onContextTruncated;
138
+ this.roundSummaryLoader = opts.roundSummaryLoader;
139
+ this.minRecentRounds = Math.max(0, Math.floor(opts.minRecentRounds ?? 0));
91
140
  this.tracer = opts.tracer ?? NOOP_TRACER;
92
141
  }
93
- /** 截断次数(供 AgentLoop.getMetrics 读取) */
94
- get truncationCount() {
95
- return this._truncationCount;
96
- }
97
142
  /**
98
- * 估算消息数组的 token 数(CJK 中文适配)
143
+ * 运行时更新上下文窗口上限(token)
99
144
  *
100
- * 区分 CJK 与非 CJK 字符分别估算:
101
- * - CJK 字符(中文/日文/韩文):cjkChars / CJK_CHARS_PER_TOKEN(1.5)
102
- * - 非 CJK 字符(英文/数字/符号):otherChars / CHARS_PER_TOKEN(3)
103
- * 统一字符估算会严重低估中文(4 字符 ≈ 1.3 token,实际约 4-8 token)。
145
+ * 截断判定 / 软上限 / 召回注入警戒线均内读本字段,更新即刻生效。
104
146
  *
105
- * toolCalls 的 JSON 序列化字符数也计入(同样区分 CJK/非 CJK)。
106
- *
107
- * @param messages 消息数组
108
- * @returns 估算的 token 数
147
+ * @param tokens 新窗口 token 数
109
148
  */
110
- estimateTokens(messages) {
111
- let cjkChars = 0;
112
- let otherChars = 0;
113
- for (const m of messages) {
114
- // 消息内容:区分 CJK 与非 CJK 字符
115
- const contentCounts = countCjkAndOther(m.content);
116
- cjkChars += contentCounts.cjkChars;
117
- otherChars += contentCounts.otherChars;
118
- // toolCalls 的 JSON 序列化字符数(同样区分 CJK/非 CJK)
119
- if (m.toolCalls) {
120
- const toolCallsCounts = countCjkAndOther(JSON.stringify(m.toolCalls));
121
- cjkChars += toolCallsCounts.cjkChars;
122
- otherChars += toolCallsCounts.otherChars;
123
- }
124
- }
125
- // CJK 与非 CJK 分别按各自密度估算后求和
126
- return Math.ceil(cjkChars / LOOP_CONSTANTS.CJK_CHARS_PER_TOKEN +
127
- otherChars / LOOP_CONSTANTS.CHARS_PER_TOKEN);
149
+ setMaxContextTokens(tokens) {
150
+ this.maxContextTokens = tokens;
151
+ }
152
+ get truncationCount() {
153
+ return this._truncationCount;
128
154
  }
129
155
  /**
130
- * 检查是否需要截断(token 超阈值 + 消息数 > 3)
156
+ * 估算消息 token 数。
131
157
  *
132
- * @param messages 消息数组
133
- * @returns 是否需要截断
158
+ * CJK(中/日/韩)与其它字符密度不同需分开估算:
159
+ * 统一按 3 字符/token 会严重低估中文(实际约 1.5 字符/token)。
160
+ * toolCalls 序列化字符同样计入。
134
161
  */
162
+ estimateTokens(messages) {
163
+ return estimateTokensMessages(messages);
164
+ }
165
+ /** token 超阈值且消息数 > 3(避免单条消息触发截断)时才需要截断 */
135
166
  shouldTruncate(messages) {
136
167
  return this.estimateTokens(messages) > this.maxContextTokens && messages.length > 3;
137
168
  }
138
169
  /**
139
- * 截断消息数组以适配上下文窗口
170
+ * 软上限判定:上下文逼近容量上限(≥ 缓冲阈值)且摘要层 token 占比过高时,注入收尾信号让 LLM 收敛。
171
+ * 从 AgentLoop._shouldInjectSoftLimitWrapup 迁入(与 estimateTokens/maxContextTokens 同属上下文预算层)。
140
172
  *
141
- * 策略:保留下方、裁中间、提取关键消息。
142
- * - messages[0](system prompt)始终保留(这是 Agent 的"灵魂")
143
- * - 从尾部向前取最近的消息对(user + assistant + tool),直到估算 token 接近上限
144
- * - 从被裁剪的消息中按重要性权重提取关键用户消息,插入到 placeholder 之前
145
- * - 头部被裁剪的消息替换为一条摘要占位消息
173
+ * 精确检测摘要层 token 占用(替代原"存在标记即触发"的近似判断):
174
+ * - 过滤出标记为摘要的消息(Round summary / Compressed context)
175
+ * - 计算摘要层 token 占用
176
+ * - 当摘要层 token ≥ maxContextTokens × SUMMARY_LAYER_TOKEN_RATIO 时判定为"摘要层达容量上限"
146
177
  *
147
- * 重要性权重:user 消息 > tool 结果 > assistant 回复
148
- * 被裁剪的用户消息中,内容较长的(信息量大)优先保留
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(软上限的前一级预警)
149
204
  *
150
- * 如果 system prompt 本身就超过 maxContextTokens,不做截断(让 LLM API 报错,
151
- * 开发者需要缩减 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
+ * 截断消息数组以适配上下文窗口。
152
222
  *
153
- * @param messages 完整消息数组
154
- * @param summary 可选的上下文摘要(注入到 system prompt 和 placeholder 之间)
155
- * @returns 截断后的消息数组(可能是原数组引用,无修改时)
223
+ * 策略:保留下方(最近)、裁中间、头部折叠成占位消息。
224
+ * - messages[0](system prompt)始终保留;
225
+ * - 从被裁剪段按重要性(user > tool > assistant)提取关键消息;
226
+ * - 若 system prompt 本身已超窗口则不截断(配置问题,交由 LLM API 报错)。
156
227
  */
157
228
  truncateMessages(messages, summary) {
158
229
  const estimated = this.estimateTokens(messages);
159
230
  if (estimated <= this.maxContextTokens || messages.length <= 3) {
160
- return messages; // 未超阈值,无需截断
231
+ return messages;
161
232
  }
162
- // system prompt 单独保留
163
233
  const systemMsg = messages[0];
164
234
  if (!systemMsg || systemMsg.role !== 'system') {
165
- return messages; // 异常:没有 system prompt,不截断
235
+ return messages;
166
236
  }
167
237
  const systemTokens = this.estimateTokens([systemMsg]);
168
238
  if (systemTokens >= this.maxContextTokens) {
169
- // system prompt 本身就超了——这是配置问题,不应该截断
170
239
  logger.warn({ systemTokens, maxContextTokens: this.maxContextTokens }, 'system prompt 已超过上下文窗口上限,请缩减 bootstrapMemories 或 toolDefinitions');
171
240
  return messages;
172
241
  }
173
- // 剩余可用 token 数(留 10% 缓冲给 LLM 响应)
242
+ // 留 10% 缓冲给 LLM 响应
174
243
  const availableTokens = Math.floor(this.maxContextTokens * LOOP_CONSTANTS.CONTEXT_TOKENS_BUFFER_RATIO) - systemTokens;
175
- // 从尾部向前收集消息(最近的最重要)
244
+ // 从尾部向前收集最近消息(tail 区);cutIndex 记录裁剪起始
176
245
  const tail = [];
177
246
  let tailTokens = 0;
178
- 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
+ }
179
263
  for (let i = messages.length - 1; i >= 1; i--) {
180
- // QC-17 移除非空断言:循环条件保证索引有效,null 检查兜底
181
264
  const msg = messages[i];
182
265
  if (!msg)
183
266
  break;
184
267
  const msgTokens = this.estimateTokens([msg]);
185
- if (tailTokens + msgTokens > availableTokens) {
186
- cutIndex = i + 1; // cutIndex 是第一条被保留的尾部消息
187
- break; // 再加这条就超了
268
+ // 强制保留区不计入 token 上限;超出该区才按 token 截断
269
+ const inForced = tail.length < forcedTailCount;
270
+ if (!inForced && tailTokens + msgTokens > availableTokens) {
271
+ cutIndex = i + 1;
272
+ break;
188
273
  }
189
- tail.unshift(msg); // 保持顺序:从尾部取,但插入时保持时间顺序
274
+ tail.unshift(msg);
190
275
  tailTokens += msgTokens;
191
276
  cutIndex = i;
192
277
  }
193
- // 计算被裁剪的消息
194
- const skipped = cutIndex - 1; // -1 是 system prompt
278
+ // 去掉 system prompt(-1);裁剪数为 0 说明全部保留
279
+ const skipped = cutIndex - 1;
195
280
  if (skipped <= 0) {
196
- return messages; // 全部保留
281
+ return messages;
197
282
  }
198
- // 截断次数统计:确实发生了截断(skipped > 0)
199
283
  this._truncationCount++;
200
- // 从被裁剪的消息中按重要性提取关键消息
201
- // 重要性权重:user > tool > assistant;内容较长的用户消息优先
284
+ this.onContextTruncated?.(skipped, tail.length);
285
+ // 从被裁剪段按重要性提取关键消息(保留信息量最高的用户输入)
202
286
  const cutMessages = messages.slice(1, cutIndex);
203
287
  const keyMessages = this.extractKeyMessages(cutMessages, availableTokens - tailTokens);
204
- // 构造一条占位消息,让 LLM 知道有历史被裁剪了
288
+ // 占位消息:告知 LLM 有历史被裁剪
205
289
  const placeholder = {
206
290
  role: 'system',
207
291
  content: this.contextTruncatedFn(skipped, tail.length),
208
292
  };
209
293
  const truncated = [systemMsg];
210
- // 如果有摘要,插入到 system prompt 和 placeholder 之间
211
294
  if (summary) {
212
295
  truncated.push({ role: 'system', content: summary });
213
296
  }
214
- // 插入从被裁剪区域提取的关键消息
215
297
  truncated.push(...keyMessages);
216
298
  truncated.push(placeholder);
217
299
  truncated.push(...tail);
@@ -227,37 +309,24 @@ export class ContextManager {
227
309
  return truncated;
228
310
  }
229
311
  /**
230
- * 从被裁剪的消息中按重要性提取关键消息
231
- *
232
- * 重要性权重:
233
- * - user 消息:权重 3(用户输入信息量最高)
234
- * - tool 消息:权重 2(工具结果有参考价值)
235
- * - assistant 消息:权重 1(助手回复可从上下文推断)
236
- *
237
- * 贪心选取:按权重降序 + 内容长度降序排列,逐条选取直到 token 用完。
238
- * 最终按原始顺序返回(保持时间线一致性)。
239
- *
240
- * @param cutMessages 被裁剪的消息数组
241
- * @param availableTokens 可用 token 数
242
- * @returns 提取的关键消息数组(按原始顺序)
312
+ * 从被裁剪段按重要性贪心选取关键消息,保留信息量最高的用户输入。
313
+ * 权重:user=3 > tool=2 > assistant=1,同级按内容长度;最后恢复原始顺序。
243
314
  */
244
315
  extractKeyMessages(cutMessages, availableTokens) {
245
316
  if (availableTokens <= 0 || cutMessages.length === 0)
246
317
  return [];
247
- // 计算每条消息的权重和 token 数
248
318
  const weighted = cutMessages.map((msg, index) => ({
249
319
  msg,
250
- index, // 原始顺序索引
320
+ index, // 原始顺序索引(最终恢复用)
251
321
  weight: this.messageImportance(msg),
252
322
  tokens: this.estimateTokens([msg]),
253
323
  }));
254
- // 按权重降序 + 内容长度降序排列
255
324
  weighted.sort((a, b) => {
256
325
  if (b.weight !== a.weight)
257
326
  return b.weight - a.weight;
258
327
  return b.msg.content.length - a.msg.content.length;
259
328
  });
260
- // 贪心选取,直到 token 用完
329
+ // 贪心选取直到 token 用完
261
330
  const selected = [];
262
331
  let usedTokens = 0;
263
332
  for (const item of weighted) {
@@ -266,16 +335,11 @@ export class ContextManager {
266
335
  selected.push(item);
267
336
  usedTokens += item.tokens;
268
337
  }
269
- // 恢复原始顺序(保持时间线一致性)
338
+ // 恢复原始顺序,保持时间线一致
270
339
  selected.sort((a, b) => a.index - b.index);
271
340
  return selected.map((item) => item.msg);
272
341
  }
273
- /**
274
- * 评估单条消息的重要性权重
275
- *
276
- * @param msg 消息
277
- * @returns 权重值(user=3, tool=2, assistant=1)
278
- */
342
+ /** 消息重要性权重:user>tool>assistant */
279
343
  messageImportance(msg) {
280
344
  if (msg.role === 'user')
281
345
  return 3;
@@ -284,60 +348,63 @@ export class ContextManager {
284
348
  return 1;
285
349
  }
286
350
  /**
287
- * 获取或创建上下文摘要(带缓存管理)
351
+ * 作废摘要缓存
288
352
  *
289
- * 缓存 TTL:消息数增长超过 SUMMARY_CACHE_TTL_MSGS 时缓存过期,需重新生成。
290
- * 首次调用时生成摘要并缓存,后续调用复用缓存直到过期。
353
+ * 缓存过期靠 `messages.length - contextSummaryMsgCount > TTL` 这个**单向**数值判断,
354
+ * 只覆盖「消息增长」。当消息集合被整体替换(`AgentLoop.restoreHistory` 恢复检查点)
355
+ * 且新历史更短时,差值为负 → 陈旧摘要永不过期,会把上一段会话的摘要注入新上下文。
291
356
  *
292
- * signal 参数让摘要生成可被用户取消中断,
293
- * 避免摘要 LLM 调用卡住时 generator 永久挂起(与 executeToolCalls 同源问题)。
357
+ * 修法不是把条件改成 `Math.abs`:truncateMessages 的正常裁剪同样让消息变少,
358
+ * 而那时摘要恰恰更该保留(它描述的就是被裁掉的历史)。真理源是「消息集合是否被替换」
359
+ * 这一事实,故由替换方显式作废,而非从长度差反推。
360
+ */
361
+ resetSummary() {
362
+ this.contextSummary = null;
363
+ this.contextSummaryMsgCount = 0;
364
+ }
365
+ /**
366
+ * 获取或创建上下文摘要(带缓存)。
294
367
  *
295
- * @param messages 当前消息数组(用于生成摘要和判断缓存过期)
296
- * @param signal 可选的 AbortSignal,中断摘要生成
297
- * @returns 摘要字符串(失败/中断时返回空字符串,降级为无摘要)
368
+ * 缓存 TTL:消息数增长超 SUMMARY_CACHE_TTL_MSGS 即过期重生成。
369
+ * signal 使摘要 LLM 可被中断,避免其卡住时挂起调用方。
298
370
  */
299
371
  async getOrCreateSummary(messages, signal) {
300
- // 检查缓存是否有效
301
372
  const summaryExpired = this.contextSummary !== null &&
302
373
  messages.length - this.contextSummaryMsgCount > LOOP_CONSTANTS.SUMMARY_CACHE_TTL_MSGS;
303
374
  if (this.contextSummary && !summaryExpired) {
304
375
  return this.contextSummary;
305
376
  }
306
- // 生成新摘要(传入 signal 支持中断)
307
377
  const summary = await this.generateContextSummary(messages, signal);
308
378
  this.contextSummary = summary;
309
379
  this.contextSummaryMsgCount = messages.length;
310
380
  return summary;
311
381
  }
312
382
  /**
313
- * 生成上下文摘要(enableContextSummary 时调用)
314
- *
315
- * 在首次截断时,提取即将被裁剪的消息中最近几条用户/助手对话,
316
- * 调用 provider 生成一句摘要,作为"遗忘补偿"注入到 system prompt 中。
317
- *
318
- * 通过 tracer span 埋点(TRACE_SPANS.CONTEXT_SUMMARY),
319
- * 让宿主监控面板能观察截断频率、摘要生成耗时与失败率。
383
+ * 生成上下文摘要:把被裁剪段压缩成"遗忘补偿"注入 system prompt。
320
384
  *
321
- * signal 参数传入 provider.chat 的 ChatOptions,
322
- * 让 fetch 请求和 SSE 流读取都能被 abort 中断;
323
- * for await 循环中也检查 signal.aborted 提前退出。
324
- *
325
- * @param messages 当前消息数组
326
- * @param signal 可选的 AbortSignal
327
- * @returns 摘要字符串(失败/中断时返回空字符串,降级为无摘要)
385
+ * 策略:
386
+ * - 优先复用已存的 round-summary(每轮后台生成的零成本产物),仅无已存摘要才调 LLM;
387
+ * - 走 providerRouter 的 'summary' 路由(轻量模型),未配置则回退主 provider;
388
+ * - abort 或失败一律降级为空串返回,不影响主流程。
328
389
  */
329
390
  async generateContextSummary(messages, signal) {
330
- // 启动 CONTEXT_SUMMARY span,记录摘要生成的耗时与异常
331
391
  const summarySpan = this.tracer.startSpan(TRACE_SPANS.CONTEXT_SUMMARY, {
332
392
  messageCount: messages.length,
333
393
  summarizingMessages: Math.min(messages.length - 1, LOOP_CONSTANTS.SUMMARY_MSG_COUNT),
334
394
  });
335
395
  try {
336
- // signal 已 abort 时直接返回空,不发起 LLM 调用
337
396
  if (signal?.aborted) {
338
397
  summarySpan.setAttribute('aborted', true);
339
398
  return '';
340
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
+ }
341
408
  const messagesToSummarize = messages.slice(1);
342
409
  const recentMessages = messagesToSummarize
343
410
  .filter((m) => m.role === 'user' || (m.role === 'assistant' && typeof m.content === 'string'))
@@ -348,8 +415,8 @@ export class ContextManager {
348
415
  summarySpan.setAttribute('skipped', true);
349
416
  return '';
350
417
  }
351
- // 将 signal 注入 ChatOptions,让 provider 的 fetch/SSE 能被 abort 中断
352
- const stream = this.provider.chat([
418
+ const summaryProvider = this.providerRouter ? this.providerRouter('summary') : this.provider;
419
+ const stream = summaryProvider.chat([
353
420
  {
354
421
  role: 'system',
355
422
  content: 'Summarize the following conversation excerpt in 1-2 sentences. Focus on key facts, decisions, and user preferences. Be concise.',
@@ -362,7 +429,6 @@ export class ContextManager {
362
429
  });
363
430
  let summary = '';
364
431
  for await (const chunk of stream) {
365
- // 流读取过程中检查 abort,提前退出(provider 收到 abort 会抛 AbortError 进入 catch)
366
432
  if (signal?.aborted) {
367
433
  summarySpan.setAttribute('aborted', true);
368
434
  break;
@@ -370,7 +436,6 @@ export class ContextManager {
370
436
  if (chunk.content)
371
437
  summary += chunk.content;
372
438
  }
373
- // 被中断时返回空字符串(降级为无摘要),不缓存
374
439
  if (signal?.aborted) {
375
440
  return '';
376
441
  }
@@ -379,20 +444,17 @@ export class ContextManager {
379
444
  return `[Context summary of earlier conversation]\n${summary}`;
380
445
  }
381
446
  catch (err) {
382
- // AbortError 是用户主动取消,降级为无摘要,不当作错误
383
- const isAbort = err instanceof Error && err.name === 'AbortError';
384
- if (isAbort) {
447
+ // AbortError 是用户主动取消,降级为无摘要而非错误
448
+ if (isAbortError(err)) {
385
449
  summarySpan.setAttribute('aborted', true);
386
450
  logger.debug('上下文摘要生成被中断,降级为无摘要');
387
451
  return '';
388
452
  }
389
- // 记录异常到 span(不中断 span,标记错误状态)
390
453
  summarySpan.recordException(err instanceof Error ? err : new Error(String(err)));
391
454
  logger.warn({ err }, '上下文摘要生成失败,降级为无摘要');
392
455
  return '';
393
456
  }
394
457
  finally {
395
- // 无论成功/失败都结束 span
396
458
  summarySpan.end();
397
459
  }
398
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