@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
@@ -2,37 +2,52 @@
2
2
  * OpenAI Chat Completions 兼容实现
3
3
  *
4
4
  * 适用于:DeepSeek / 豆包 / 通义 / Ollama / 任何兼容 OpenAI 协议的 API
5
- * 详见 ADR-003
6
5
  */
7
6
  import { LlmProvider } from '../llm/provider.js';
8
- import { llmError, networkError, configError, toError } from '../utils/errors.js';
7
+ import { llmError, networkError, configError, isAbortError, isTimeoutError, } from '../utils/errors.js';
8
+ import { toError } from '../utils/toError.js';
9
9
  import { logger } from '../logging/logger.js';
10
10
  import { mergeAbortSignals } from '../llm/abortSignal.js';
11
+ /** 错误响应体截断长度(字符数):统一 4 处 errorText.slice(0,200) 的常量,避免魔法数字 */
12
+ const MAX_ERROR_BODY_LEN = 200;
13
+ // ─── LLM 请求参数边界(外部注入防失控) ─────────────────
14
+ /** timeoutMs 上限:5 分钟,防配置超大值导致请求等待失控(下限不设,测试/调试用小值模拟超时) */
15
+ const MAX_TIMEOUT_MS = 300_000;
11
16
  /**
12
- * 错误响应体截断长度(字符数)。
13
- *
14
- * handleResponseError 中 4 处 errorText.slice(0, 200) 的统一常量,
15
- * 避免魔法数字散落,便于后续调整截断策略。
17
+ * 归一化 maxTokens:仅做**形态防御**——正整数才透传(向下取整),零/负/非数值返回 undefined
18
+ * (不传,让服务端默认)。
19
+ * **上限不裁决**(有意为之,勿加回):真实上限由模型/服务端决定,超限值原样透传、由服务端
20
+ * 可见报错——本地任何一层静默丢弃都会造出「UI 显示值 ≠ 真实生效值」的坑(同一裁决见
21
+ * contextWindow:宿主护栏是输入边界的唯一可见裁决点,内核只防形态)。
16
22
  */
17
- const MAX_ERROR_BODY_LEN = 200;
23
+ function normalizeMaxTokens(value) {
24
+ if (typeof value !== 'number' || !Number.isFinite(value))
25
+ return undefined;
26
+ if (value < 1)
27
+ return undefined;
28
+ return Math.floor(value);
29
+ }
18
30
  /**
19
- * chunk 级读超时区分首 chunk 与 chunk 间(reasoning 模型适配)
20
- *
21
- * 背景:reasoning 模型(DeepSeek-R1/o1/QwQ 等)首 chunk 前需完成思维链推理,
22
- * 可能耗时 30-90s;chunk 间正常停顿 < 10s,但复杂推理节点可能短暂停顿。
23
- *
24
- * 策略:
25
- * - 首 chunk 超时 120s:与请求级超时一致,给 reasoning 模型足够思考时间
26
- * - chunk 间超时 60s:首 chunk 已到说明连接正常,60s 足以覆盖正常停顿
27
- *
28
- * 判定依据:firstChunkReceived 标志位区分两种阶段
31
+ * 归一化 timeoutMs:合法(≤MAX_TIMEOUT_MS 且 >0)返回原值,越界/非法回退默认。
32
+ * 防超大值等待失控;不设下限以保留测试用小超时值。
29
33
  */
30
- const FIRST_CHUNK_TIMEOUT_MS = 120_000;
31
- const INTER_CHUNK_TIMEOUT_MS = 60_000;
34
+ function normalizeTimeoutMs(value, fallback) {
35
+ if (typeof value !== 'number' || !Number.isFinite(value))
36
+ return fallback;
37
+ if (value <= 0 || value > MAX_TIMEOUT_MS)
38
+ return fallback;
39
+ return value;
40
+ }
32
41
  /**
33
- * 通用 OpenAI 兼容 Provider
34
- * 通过 baseUrl 适配不同厂商
42
+ * chunk 级读超时区分首 chunk 与 chunk 间(reasoning 适配):
43
+ * 首 chunk 前可能思考 30-90s(DeepSeek-R1/o1/QwQ 等)→ 120s;连接正常后停顿 <10s → 60s
35
44
  */
45
+ const FIRST_CHUNK_TIMEOUT_MS = 120_000;
46
+ const INTER_CHUNK_TIMEOUT_MS = 60_000;
47
+ /** 有效 SSE 事件停滞超时:即便有字节持续到达(keep-alive/代理心跳),只要长时间无 `data:` 事件,
48
+ * 也判超时——补 chunk 级超时(按 read 重置)对「有字节无进展」的真空区,防止连接半挂永久等待。 */
49
+ const EVENT_STALL_TIMEOUT_MS = 120_000;
50
+ /** 通用 OpenAI 兼容 Provider:通过 baseUrl 适配不同厂商 */
36
51
  export class OpenAICompatibleProvider extends LlmProvider {
37
52
  config;
38
53
  name;
@@ -40,39 +55,51 @@ export class OpenAICompatibleProvider extends LlmProvider {
40
55
  super();
41
56
  this.config = config;
42
57
  this.name = name;
58
+ this._setCapabilities(config);
59
+ }
60
+ /**
61
+ * 能力位赋值(内置为只读,外部不可改):默认 true 保留存量云 LLM「有工具集即走原生 FC」行为,
62
+ * 本地运行时(Ollama/LM Studio 等)无原生 FC 须在宿主配置时显式置 false。
63
+ * @param config 构造时的能力位声明(undefined → 回落默认)
64
+ */
65
+ _setCapabilities(config) {
66
+ this.supportsToolCalling =
67
+ config.supportsToolCalling ?? true;
68
+ this.supportsStructuredOutput =
69
+ config.supportsStructuredOutput ?? false;
43
70
  }
44
71
  /** 默认请求超时:120 秒 */
45
72
  static DEFAULT_TIMEOUT_MS = 120_000;
73
+ /** tool_call id 兜底的自增序列:id 缺失时给出**跨批唯一**的占位——
74
+ * 本批内下标 `call_${idx}` 会让同一 turn 的两次迭代各产 `call_0`,
75
+ * 服务端按 tool_call_id 配对时错位。实例级自增,杜绝模块级全局态(架构约束)。 */
76
+ toolCallIdSeq = 0;
46
77
  async *chat(messages, opts = {}) {
47
78
  const url = `${this.config.baseUrl}/chat/completions`;
48
79
  const model = opts.model ?? this.config.defaultModel;
49
- // 请求超时控制:默认 120s,可通过 opts.timeoutMs 覆盖
50
- const timeoutMs = opts.timeoutMs ?? OpenAICompatibleProvider.DEFAULT_TIMEOUT_MS;
80
+ // 请求超时控制:默认 120s,可通过 opts.timeoutMs 覆盖(越界回退默认,防超大值等待失控)
81
+ const timeoutMs = normalizeTimeoutMs(opts.timeoutMs, OpenAICompatibleProvider.DEFAULT_TIMEOUT_MS);
82
+ // maxTokens 形态归一:正整数透传(零/负/非数值忽略,让服务端默认);上限不裁决(超限原样发,服务端可见报错)
83
+ const maxTokens = normalizeMaxTokens(opts.maxTokens);
51
84
  const body = {
52
85
  model,
53
86
  messages: this.formatMessages(messages),
54
- temperature: opts.temperature ?? 0.7,
87
+ // temperature 透传:未配置时省略该字段,由 LLM 服务端应用其默认值
88
+ temperature: opts.temperature,
55
89
  stream: true,
56
90
  };
57
91
  if (opts.tools)
58
92
  body['tools'] = opts.tools;
59
- if (opts.maxTokens)
60
- body['max_tokens'] = opts.maxTokens;
61
- // 结构化输出约束:透传 response_format 到请求 body
62
- // 供未来非 tool_call 场景使用(如归档摘要强制 JSON、配置建议提取)
63
- // 注意:不能与 tools 同时使用(OpenAI 协议限制),调用方需自行保证互斥
93
+ if (maxTokens !== undefined)
94
+ body['max_tokens'] = maxTokens;
95
+ // 透传 response_format;不能与 tools 同时使用(OpenAI 协议限制),调用方保证互斥
64
96
  if (opts.response_format)
65
97
  body['response_format'] = opts.response_format;
66
- // 校验 API Key(缺失时给友好提示,不暴露 undefined 报错)
67
- if (!this.config.apiKey) {
68
- throw configError('API Key 未配置', `provider: ${this.name},baseUrl: ${this.config.baseUrl}`, [
69
- '检查 ~/.memora/config.json 的 llm.apiKey 字段',
70
- '确认已设置环境变量 MEMORA_LLM_API_KEY',
71
- '查看文档:config.example.json',
72
- ]);
73
- }
74
- // 合并 AbortSignal:外部取消信号 + 超时信号(mergeAbortSignals 集中维护,ADR-017 枝叶层 2 次提取)
75
- // 确保用户取消和请求超时都能中断 fetch 和流读取
98
+ // 透传推理深度(reasoning_effort):loop 在 multiStepReasoning='manual' 时设置 'low'
99
+ // 实现快速回答,必须转达给 provider 才生效(只声明+消费而不转达 = 契约断裂)
100
+ if (opts.reasoning_effort)
101
+ body['reasoning_effort'] = opts.reasoning_effort;
102
+ // 合并外部取消 + 超时信号,确保用户取消和请求超时都能中断 fetch 和流读取
76
103
  const abort = mergeAbortSignals(opts.signal, timeoutMs, 'LLM 请求超时');
77
104
  let response;
78
105
  try {
@@ -89,8 +116,8 @@ export class OpenAICompatibleProvider extends LlmProvider {
89
116
  catch (err) {
90
117
  abort.dispose();
91
118
  const e = toError(err);
92
- // 区分超时错误和网络错误
93
- if (e.name === 'AbortError' || e.name === 'TimeoutError') {
119
+ // 区分超时错误和网络错误(复用 errors.ts 探测器 SSOT,避免手写 name 判断双源漂移)
120
+ if (isAbortError(e) || isTimeoutError(e)) {
94
121
  throw networkError('LLM 请求超时', `${this.config.baseUrl} 请求超过 ${timeoutMs / 1000}s 未响应`, [
95
122
  '检查网络连接稳定性',
96
123
  '如频繁超时,考虑切换 provider 或在 config.json 调整 timeoutMs',
@@ -103,11 +130,8 @@ export class OpenAICompatibleProvider extends LlmProvider {
103
130
  '如使用 VPN/代理,检查代理设置',
104
131
  ], e);
105
132
  }
106
- // fetch 成功后保留 optsSignal 监听:用户在 SSE 流式阶段取消时,
107
- // 仍需通过 mergeAbortSignals 内部的 onOptsAbort 触发 abort 中断 reader.read()。
108
- // 注意:{ once: true } 仅在 optsSignal 自身 abort 时移除监听器;
109
- // 正常完成或异常路径必须显式 dispose(),否则监听器常驻泄漏。
110
- // 下方外层 try-finally 统一调用 abort.dispose(),覆盖所有抛错路径。
133
+ // fetch 成功后保留 optsSignal 监听,使用户在 SSE 阶段取消也能中断 reader.read();
134
+ // 正常完成/异常路径须显式 dispose(),否则监听器常驻泄漏(外层 try-finally 统一调用)
111
135
  try {
112
136
  if (!response.ok) {
113
137
  await this.handleResponseError(response);
@@ -118,23 +142,18 @@ export class OpenAICompatibleProvider extends LlmProvider {
118
142
  '如持续出现,联系厂商',
119
143
  ]);
120
144
  }
121
- // fetch 成功且响应正常:清除请求级总超时
122
- // SSE 阶段由 chunk 级超时(FIRST_CHUNK_TIMEOUT_MS / INTER_CHUNK_TIMEOUT_MS)独立保护
123
- // 若保留总超时,长文生成(>timeoutMs)会被错误中断
145
+ // fetch 成功后清除请求级总超时,SSE 阶段由 chunk 级超时独立保护,否则长文生成(>timeoutMs)会被错误中断
124
146
  abort.clearTimer();
125
147
  try {
126
- // 将 abort.signal 传入 SSE 解析器,使超时/取消能中断流读取
127
148
  yield* this.parseSseStream(response.body, abort.signal);
128
149
  }
129
150
  catch (err) {
130
- // SSE 解析异常时也要 cancel stream(Node 24 + undici 同上)
151
+ // SSE 解析异常时也 cancel stream 释放底层连接
131
152
  await this.safeCancelBody(response);
132
- // DOMException(AbortError/TimeoutError)是 LLM 中断协议:
133
- // 上游 AgentLoop/contextManager/agent.ts 按 err.name === 'AbortError' 识别,
134
- // 必须原样传播,不能包装为 MemoraError(否则中断协议失效)
153
+ // DOMException(AbortError/TimeoutError)是 LLM 中断协议,按 err.name==='AbortError' 识别,须原样传播不能包装为 MemoraError
135
154
  if (err instanceof DOMException)
136
155
  throw err;
137
- // 其他未知流读取异常统一包装为 MemoraError(避免裸 throw 逃逸非 MemoraError)
156
+ // 其他未知流异常统一包装为 MemoraError,避免裸 throw 逃逸非 MemoraError
138
157
  throw networkError('LLM 流读取异常', toError(err).message, ['稍后重试', '如持续出现,检查网络稳定性或切换 provider'], toError(err));
139
158
  }
140
159
  }
@@ -143,18 +162,14 @@ export class OpenAICompatibleProvider extends LlmProvider {
143
162
  abort.dispose();
144
163
  }
145
164
  }
146
- /**
147
- * 处理 HTTP 错误响应
148
- *
149
- * 消费并释放 body,根据状态码抛出相应的错误类型。
150
- */
165
+ /** 处理 HTTP 错误响应:消费并释放 body,按状态码抛相应错误类型 */
151
166
  async handleResponseError(response) {
152
167
  const errorText = await response.text().catch(() => '<无法读取响应体>');
153
168
  await this.safeCancelBody(response);
154
169
  const status = response.status;
155
170
  if (status === 401 || status === 403) {
156
171
  throw configError('LLM API Key 无效', `HTTP ${status}:${errorText.slice(0, MAX_ERROR_BODY_LEN)}`, [
157
- '检查 API Key 是否正确(注意 ${MEMORA_LLM_API_KEY} 占位符是否已展开)',
172
+ '检查 API Key 是否正确(注意 ${MEMORA_API_KEY} 占位符是否已展开)',
158
173
  '确认 Key 未过期',
159
174
  '如使用 DeepSeek/豆包,确认 Key 来自对应平台',
160
175
  ]);
@@ -178,14 +193,7 @@ export class OpenAICompatibleProvider extends LlmProvider {
178
193
  '可在 config.json 切换 provider 兜底',
179
194
  ]);
180
195
  }
181
- /**
182
- * 安全取消 response.body
183
- *
184
- * 在 SSE 异常和 HTTP 错误处理路径中均需 cancel response.body 释放底层连接,
185
- * cancel 本身失败不应阻塞后续错误抛出,仅 debug 记录。
186
- *
187
- * @param response - HTTP 响应对象
188
- */
196
+ /** 安全取消 response.body:cancel 失败不阻塞后续错误抛出,仅 debug 记录 */
189
197
  async safeCancelBody(response) {
190
198
  try {
191
199
  await response.body?.cancel();
@@ -195,12 +203,8 @@ export class OpenAICompatibleProvider extends LlmProvider {
195
203
  }
196
204
  }
197
205
  /**
198
- * 格式化消息为 OpenAI 协议格式
199
- *
200
- * 关键兼容性处理:
201
- * - assistant 消息带 tool_calls 时,若 content 为空字符串,转为 null
202
- * (部分 LLM provider 对空字符串 content 处理异常,导致请求挂起或报错)
203
- * - tool 消息必须包含 tool_call_id 关联对应的工具调用
206
+ * 格式化消息为 OpenAI 协议格式:assistant 带 tool_calls 时 content 空串转 null
207
+ * (部分 provider 对空串 content 处理异常);tool 消息须带 tool_call_id
204
208
  */
205
209
  formatMessages(messages) {
206
210
  return messages.map((m) => {
@@ -210,8 +214,7 @@ export class OpenAICompatibleProvider extends LlmProvider {
210
214
  if (m.role === 'assistant' && m.toolCalls) {
211
215
  return {
212
216
  role: 'assistant',
213
- // OpenAI 协议:有 tool_calls 时 content 应为 null(而非空字符串),
214
- // 空字符串会导致部分 provider 请求异常或无响应
217
+ // OpenAI 协议:有 tool_calls 时 content 应为 null(空串会致部分 provider 请求异常)
215
218
  content: m.content && m.content.length > 0 ? m.content : null,
216
219
  tool_calls: m.toolCalls,
217
220
  };
@@ -220,60 +223,82 @@ export class OpenAICompatibleProvider extends LlmProvider {
220
223
  });
221
224
  }
222
225
  /**
223
- * 解析 SSE 流
224
- * OpenAI 协议:data: {...}\n\n
225
- *
226
- * 支持解析 tool_calls delta(流式工具调用):
227
- * OpenAI 协议中 tool_calls 以 delta 形式分片传输,
228
- * 需要跨 chunk 累积 function.name 和 function.arguments,
229
- * 在 finish_reason='tool_calls' 或流结束时输出完整的 toolCalls。
230
- *
231
- * @param body - SSE 响应流
232
- * @param signal - 中止信号(超时/用户取消),中断 reader.read() 等待
226
+ * 解析 SSE 流(data: {...}\n\n)。tool_calls 以 delta 分片传输,
227
+ * 需跨 chunk 累积 name/arguments,在 finish_reason='tool_calls' 或流结束时输出完整 toolCalls
233
228
  */
234
229
  async *parseSseStream(body, signal) {
235
230
  const reader = body.getReader();
236
231
  const decoder = new TextDecoder();
237
232
  let buffer = '';
238
- // 流式 tool_calls 累积器:按 index 分片累积 name + arguments
239
- // OpenAI 协议:同一个 tool_call 的 name/arguments 可能跨多个 delta 分片到达
233
+ // 流式 tool_calls 累积器:同一 tool_call 的 name/arguments 可能跨多个 delta 分片到达
240
234
  const toolCallAccumulators = new Map();
241
- // chunk 级读超时区分首 chunk 与 chunk 间
242
- // reader.read() 阻塞时若无超时,连接半挂(NAT/代理/服务端慢响应不关 TCP)会永久等待
243
- // 采用 setTimeout + reader.cancel:超时则 cancel reader 让 read() reject 退出
235
+ // 已发射过「工具意图预告」的累积器 idx:同一工具只提前上报一次,防 delta 风暴。
236
+ // 必须是本生成器局部变量——随流结束/中断自然回收,防跨请求泄漏。
237
+ const emittedPendingIndexes = new Set();
238
+ // chunk 级读超时:无超时则连接半挂(NAT/代理不关 TCP)会永久等待;
239
+ // 区分首 chunk(reasoning 思考数十秒,120s)与 chunk 间(连接已正常,60s);
240
+ // 另有有效事件停滞监视(收到任意 data: 行即重置),补 chunk 超时漏掉的
241
+ // 「服务端持续发 keep-alive 字节但无进展」真空区。
244
242
  //
245
- // 区分首 chunk 与 chunk 间(reasoning 模型适配):
246
- // - 首 chunk 前 LLM 可能思考数十秒(reasoning 模型),用 FIRST_CHUNK_TIMEOUT_MS(120s)
247
- // - 首 chunk 到达后连接已正常,chunk 间停顿用 INTER_CHUNK_TIMEOUT_MS(60s)
243
+ // ⚠️ **超时必须经竞速闸 reject,不得用 `reader.cancel()` 表达——本看门狗成立的前提,勿回改**:
244
+ // `reader.cancel(reason)` 的语义是「关闭流并让**挂起的 read() 以 `{done:true}` 收尾**」,
245
+ // reason **不会**出现在任何抛出物上(WHATWG 规范行为;Node 22 / undici 实测:cancel 后
246
+ // read 产 `{done:true}`;对照 `AbortController.abort(reason)` 才会让 read reject reason)。
247
+ // 若把 cancel 当作「让 read 抛错」→ 超时被读成「流正常结束且零产出」→ 落「空响应重试」
248
+ // 通道 → **超时被静默吞成重试**(坑)。真机故障实证(`round-1789462982489`):
249
+ // 中断源在 reasoning 结束后停摆,60s(chunk 间)+120s+120s
250
+ // (两次重试首 chunk)三段超时全被吞成静默重试,期间**零 UI 事件**(tokenOut 恒 0),
251
+ // 用户干等 5 分 5 秒后手动取消。
252
+ // 故看门狗只负责「以真超时驳回当前读」;底层连接的释放仍由 finally 的 reader.cancel() 负责。
253
+ /** 看门狗已到期的超时(竞速闸未挂起时的落账处:下一轮读之前立即抛,账面不丢) */
254
+ let overdueTimeout = null;
255
+ /** 竞速闸的驳回句柄(仅在一次读的存活期内非空) */
256
+ let pendingReadReject = null;
257
+ /** 看门狗统一出口:以真超时驳回当前读;两读之间到期则记账,由循环顶部补抛 */
258
+ const failCurrentRead = (reason) => {
259
+ overdueTimeout ??= new DOMException(reason, 'TimeoutError');
260
+ pendingReadReject?.(overdueTimeout);
261
+ };
262
+ let stallTimer = null;
263
+ const stallReset = () => {
264
+ if (stallTimer)
265
+ clearTimeout(stallTimer);
266
+ stallTimer = setTimeout(() => {
267
+ failCurrentRead('LLM 流长时间无有效事件(有字节但无 data 事件)');
268
+ }, EVENT_STALL_TIMEOUT_MS);
269
+ };
270
+ // 进入流读取即启动停滞监视(首事件前的“有字节无事件”同样覆盖)
271
+ stallReset();
248
272
  let firstChunkReceived = false;
249
273
  try {
250
274
  while (true) {
251
- // 检查中止信号:超时或用户取消时立即退出
252
- // 注意:此处刻意抛 DOMException 而非 MemoraError——
253
- // AbortError 是 LLM 中断协议,上游(AgentLoop/contextManager/agent.ts)按
254
- // err.name === 'AbortError' 识别用户取消/超时,包装为 MemoraError 会破坏协议
275
+ // 检查中止信号:刻意抛 DOMException(AbortError)而非 MemoraError——它是 LLM 中断协议,上游按 err.name==='AbortError' 识别
255
276
  if (signal?.aborted) {
256
277
  throw new DOMException('LLM 流读取被中止', signal.reason?.name ?? 'AbortError');
257
278
  }
258
- // chunk 级读超时:根据是否收到首 chunk 选择不同超时阈值
259
- // reader.cancel() 会让 pending 的 reader.read() 抛 AbortError(DOMException)
260
- const chunkTimeoutMs = firstChunkReceived
261
- ? INTER_CHUNK_TIMEOUT_MS
262
- : FIRST_CHUNK_TIMEOUT_MS;
279
+ // 两读之间到期的超时不丢账:读之前先补抛
280
+ if (overdueTimeout)
281
+ throw overdueTimeout;
282
+ // 根据是否收到首 chunk 选不同超时阈值(到期经 failCurrentRead 驳回当前读,见上方注释)
283
+ const chunkTimeoutMs = firstChunkReceived ? INTER_CHUNK_TIMEOUT_MS : FIRST_CHUNK_TIMEOUT_MS;
263
284
  const chunkTimer = setTimeout(() => {
264
- // cancel 失败也不影响(reader 可能已 done 或被其他路径 cancel),记日志便于排查偶发连接泄漏
265
- const reason = firstChunkReceived ? 'LLM chunk 间读取超时' : 'LLM 首 chunk 读取超时';
266
- reader.cancel(new DOMException(reason, 'TimeoutError')).catch((err) => {
267
- logger.debug({ err: toError(err).message }, 'reader.cancel 失败(超时清理路径)');
268
- });
285
+ failCurrentRead(firstChunkReceived ? 'LLM chunk 间读取超时' : 'LLM 首 chunk 读取超时');
269
286
  }, chunkTimeoutMs);
287
+ // 超时竞速闸:read 与超时赛跑。超时先到 → 本读以真超时 reject;被落空的 read 仍挂起,
288
+ // 待 finally 释放连接时自然收尾,其无人观察的 resolve 无副作用。
289
+ const timeoutGate = new Promise((_, reject) => {
290
+ pendingReadReject = reject;
291
+ });
292
+ // 兜底观察者:闸被「已被真实数据抢先的读」落空时,其拒绝不得变成无人处理的拒绝
293
+ void timeoutGate.catch(() => undefined);
270
294
  let readResult;
271
295
  try {
272
- readResult = await reader.read();
296
+ readResult = await Promise.race([reader.read(), timeoutGate]);
273
297
  }
274
298
  finally {
275
- // read 完成(无论成功/失败)都清理 chunk timer,避免泄漏
299
+ // read 完成(无论成功/失败)都清理 chunk timer 与竞速闸句柄,避免泄漏
276
300
  clearTimeout(chunkTimer);
301
+ pendingReadReject = null;
277
302
  }
278
303
  const { done, value } = readResult;
279
304
  if (done)
@@ -289,6 +314,8 @@ export class OpenAICompatibleProvider extends LlmProvider {
289
314
  const trimmed = line.trim();
290
315
  if (!trimmed.startsWith('data:'))
291
316
  continue;
317
+ // 有效事件停滞重置:收到 data 行即代表服务端仍在推进(即便内容暂无可输出)
318
+ stallReset();
292
319
  const data = trimmed.slice(5).trim();
293
320
  if (data === '[DONE]') {
294
321
  // 流结束:输出累积的 tool_calls(如果有)
@@ -299,14 +326,32 @@ export class OpenAICompatibleProvider extends LlmProvider {
299
326
  }
300
327
  try {
301
328
  const json = JSON.parse(data);
329
+ // 提取 usage 数据(部分 Provider 在流式响应末尾携带 token 用量统计)
330
+ const usage = json.usage
331
+ ? {
332
+ inputTokens: json.usage.prompt_tokens ?? 0,
333
+ outputTokens: json.usage.completion_tokens ?? 0,
334
+ totalTokens: json.usage.total_tokens,
335
+ }
336
+ : undefined;
302
337
  const choice = json.choices?.[0];
303
- if (!choice)
338
+ // 纯 usage 事件(末尾统计块,choices 为空数组):单独 yield,跳过 choices 处理
339
+ if (!choice) {
340
+ if (usage)
341
+ yield { usage };
304
342
  continue;
343
+ }
305
344
  const chunk = {};
306
- // delta.content 可能为 null(tool_calls 场景),!= null 排除 null/undefined
307
- // 空字符串在流式中极少出现,但不影响语义,保持原有 truthy 检查即可
345
+ // usage 与 choices 并存时合并到同一 chunk(单出口,防同事件双 yield 致 content 重复)
346
+ if (usage)
347
+ chunk.usage = usage;
348
+ // delta.content 可能为 null(tool_calls 场景),truthy 检查即可
308
349
  if (choice.delta?.content)
309
350
  chunk.content = choice.delta.content;
351
+ // 模型思考(协议字段 reasoning_content → LlmChunk.thought):增量透传,与 content 并列
352
+ // 增量语义:消费侧自行累积。thought 命名避开路由 TaskType='reasoning' 与相位 'thinking'。
353
+ if (choice.delta?.reasoning_content)
354
+ chunk.thought = choice.delta.reasoning_content;
310
355
  // 累积 tool_calls delta
311
356
  if (choice.delta?.tool_calls) {
312
357
  for (const tc of choice.delta.tool_calls) {
@@ -319,6 +364,17 @@ export class OpenAICompatibleProvider extends LlmProvider {
319
364
  if (tc.function?.arguments)
320
365
  acc.arguments += tc.function.arguments;
321
366
  toolCallAccumulators.set(idx, acc);
367
+ // 工具意图预告:name 首次由空变非空即上报,不必等 finish_reason——
368
+ // 写文件等大参数工具的参数生成段可能数十秒,UI 需提前显示「准备中」工具行。
369
+ // 每 idx 只发一次(emittedPendingIndexes 去重防风暴);id 缺失时按与最终构建
370
+ // 同一规则合成并**写回 acc.id**(acc.id || `call_${seq}`),保证 finish_reason
371
+ // 时 buildToolCallsFromAccumulators 复用同一 id,宿主侧可按 id 配对升级。
372
+ if (acc.name && !emittedPendingIndexes.has(idx)) {
373
+ emittedPendingIndexes.add(idx);
374
+ if (!acc.id)
375
+ acc.id = `call_${this.toolCallIdSeq++}`;
376
+ chunk.partialToolCall = { id: acc.id, name: acc.name };
377
+ }
322
378
  }
323
379
  }
324
380
  // finish_reason='tool_calls' 时输出完整的 toolCalls
@@ -327,8 +383,7 @@ export class OpenAICompatibleProvider extends LlmProvider {
327
383
  toolCallAccumulators.clear();
328
384
  }
329
385
  else if (choice.finish_reason && toolCallAccumulators.size > 0) {
330
- // finish_reason 为 stop/length 等非 tool_calls 值时,清空累积器防止污染下一次调用
331
- // (某些模型可能在 stop 时残留不完整的 tool_calls 碎片)
386
+ // 非 tool_calls 的 finish_reason(stop/length 等)时清空累积器,防残留碎片污染下一次调用
332
387
  toolCallAccumulators.clear();
333
388
  }
334
389
  if (choice.finish_reason) {
@@ -343,36 +398,33 @@ export class OpenAICompatibleProvider extends LlmProvider {
343
398
  }
344
399
  }
345
400
  finally {
346
- // reader.cancel() 彻底释放底层 TCP 连接(releaseLock 仅释放锁不取消流,
347
- // 无法避免 generator 提前 break 时底层连接悬挂;也是 CallLlmWithRetry
348
- // 无 finally 触发 abort 时的兜底)
349
- // 已 done/cancel 的 reader 调 cancel 是 no-op,安全
401
+ // 清理事件停滞监视(流已结束,不再需要 stall 兜底)
402
+ if (stallTimer)
403
+ clearTimeout(stallTimer);
404
+ // reader.cancel() 彻底释放底层 TCP 连接(releaseLock 仅释放锁不取消流,防止 break 时连接悬挂);已 done 的 cancel 是 no-op
350
405
  try {
351
406
  await reader.cancel();
352
407
  }
353
408
  catch (err) {
354
- // cancel 失败不阻塞,reader 会被 GC 回收;记日志便于排查偶发连接泄漏
409
+ // cancel 失败不阻塞,reader 会被 GC 回收;记日志排查偶发连接泄漏
355
410
  logger.debug({ err: toError(err).message }, 'reader.cancel 失败(finally 清理路径)');
356
411
  }
357
412
  }
358
413
  }
359
- /**
360
- * 从累积器构建完整的 toolCalls 数组(用于 finish_reason='tool_calls' 场景)
361
- */
414
+ /** 从累积器构建完整 toolCalls 数组(finish_reason='tool_calls' 场景)。
415
+ * id 缺失时兜底为 `call_<toolCallIdSeq++>`(跨批唯一),不因两次迭代都缺 id 而产出重复 id。 */
362
416
  buildToolCallsFromAccumulators(accs) {
363
417
  const calls = [];
364
- for (const [idx, acc] of accs) {
418
+ for (const [, acc] of accs) {
365
419
  calls.push({
366
- id: acc.id || `call_${idx}`,
420
+ id: acc.id || `call_${this.toolCallIdSeq++}`,
367
421
  type: 'function',
368
422
  function: { name: acc.name, arguments: acc.arguments },
369
423
  });
370
424
  }
371
425
  return calls;
372
426
  }
373
- /**
374
- * 从累积器构建 LlmChunk(用于流结束时的兜底输出)
375
- */
427
+ /** 从累积器构建 LlmChunk(流结束时的兜底输出) */
376
428
  buildToolCallsChunk(accs) {
377
429
  return {
378
430
  toolCalls: this.buildToolCallsFromAccumulators(accs),
@@ -1 +1 @@
1
- {"version":3,"file":"openaiCompatible.js","sourceRoot":"","sources":["../../src/llm/openaiCompatible.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"openaiCompatible.js","sourceRoot":"","sources":["../../src/llm/openaiCompatible.ts"],"names":[],"mappings":"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"}