@cicctencent/agent-core 0.1.1 → 0.1.4

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 (441) hide show
  1. package/README.md +14 -927
  2. package/dist/cjs/agent/engine.d.ts.map +1 -0
  3. package/dist/cjs/agent/engine.js +766 -0
  4. package/dist/cjs/agent/engine.js.map +1 -0
  5. package/dist/cjs/agent/history-manager.d.ts.map +1 -0
  6. package/dist/cjs/agent/history-manager.js +271 -0
  7. package/dist/cjs/agent/history-manager.js.map +1 -0
  8. package/dist/cjs/agent/llm-caller.d.ts.map +1 -0
  9. package/dist/cjs/agent/llm-caller.js +307 -0
  10. package/dist/cjs/agent/llm-caller.js.map +1 -0
  11. package/dist/cjs/agent/tool-executor.d.ts.map +1 -0
  12. package/dist/cjs/agent/tool-executor.js +568 -0
  13. package/dist/cjs/agent/tool-executor.js.map +1 -0
  14. package/dist/cjs/agent/types.d.ts.map +1 -0
  15. package/dist/cjs/agent/types.js +6 -0
  16. package/dist/cjs/agent/types.js.map +1 -0
  17. package/dist/cjs/agent/workflow.d.ts.map +1 -0
  18. package/dist/cjs/agent/workflow.js +262 -0
  19. package/dist/cjs/agent/workflow.js.map +1 -0
  20. package/dist/cjs/context/collector.d.ts.map +1 -0
  21. package/dist/cjs/context/collector.js +94 -0
  22. package/dist/cjs/context/collector.js.map +1 -0
  23. package/dist/cjs/context/manager.d.ts.map +1 -0
  24. package/dist/cjs/context/manager.js +36 -0
  25. package/dist/cjs/context/manager.js.map +1 -0
  26. package/dist/cjs/context/types.d.ts.map +1 -0
  27. package/dist/cjs/context/types.js +6 -0
  28. package/dist/cjs/context/types.js.map +1 -0
  29. package/dist/cjs/hooks/types.d.ts.map +1 -0
  30. package/dist/cjs/hooks/types.js +6 -0
  31. package/dist/cjs/hooks/types.js.map +1 -0
  32. package/dist/{index.d.ts → cjs/index.d.ts} +1 -0
  33. package/dist/cjs/index.d.ts.map +1 -0
  34. package/dist/cjs/index.js +98 -0
  35. package/dist/cjs/index.js.map +1 -0
  36. package/dist/cjs/llm/anthropic-provider.d.ts.map +1 -0
  37. package/dist/cjs/llm/anthropic-provider.js +356 -0
  38. package/dist/cjs/llm/anthropic-provider.js.map +1 -0
  39. package/dist/cjs/llm/factory.d.ts.map +1 -0
  40. package/dist/cjs/llm/factory.js +34 -0
  41. package/dist/cjs/llm/factory.js.map +1 -0
  42. package/dist/cjs/llm/ollama-provider.d.ts.map +1 -0
  43. package/dist/cjs/llm/ollama-provider.js +34 -0
  44. package/dist/cjs/llm/ollama-provider.js.map +1 -0
  45. package/dist/cjs/llm/openai-provider.d.ts.map +1 -0
  46. package/dist/cjs/llm/openai-provider.js +186 -0
  47. package/dist/cjs/llm/openai-provider.js.map +1 -0
  48. package/dist/cjs/llm/provider.d.ts.map +1 -0
  49. package/dist/cjs/llm/provider.js +18 -0
  50. package/dist/cjs/llm/provider.js.map +1 -0
  51. package/dist/cjs/llm/types.d.ts.map +1 -0
  52. package/dist/cjs/llm/types.js +6 -0
  53. package/dist/cjs/llm/types.js.map +1 -0
  54. package/dist/cjs/mcp/base-client.d.ts.map +1 -0
  55. package/dist/cjs/mcp/base-client.js +112 -0
  56. package/dist/cjs/mcp/base-client.js.map +1 -0
  57. package/dist/cjs/mcp/client.d.ts.map +1 -0
  58. package/dist/cjs/mcp/client.js +76 -0
  59. package/dist/cjs/mcp/client.js.map +1 -0
  60. package/dist/cjs/mcp/factory.d.ts.map +1 -0
  61. package/dist/cjs/mcp/factory.js +43 -0
  62. package/dist/cjs/mcp/factory.js.map +1 -0
  63. package/dist/cjs/mcp/http-client.d.ts.map +1 -0
  64. package/dist/cjs/mcp/http-client.js +142 -0
  65. package/dist/cjs/mcp/http-client.js.map +1 -0
  66. package/dist/cjs/mcp/proxy-agent.d.ts.map +1 -0
  67. package/dist/cjs/mcp/proxy-agent.js +195 -0
  68. package/dist/cjs/mcp/proxy-agent.js.map +1 -0
  69. package/dist/cjs/mcp/stdio-client.d.ts.map +1 -0
  70. package/dist/cjs/mcp/stdio-client.js +95 -0
  71. package/dist/cjs/mcp/stdio-client.js.map +1 -0
  72. package/dist/cjs/mcp/types.d.ts.map +1 -0
  73. package/dist/cjs/mcp/types.js +6 -0
  74. package/dist/cjs/mcp/types.js.map +1 -0
  75. package/dist/cjs/memory/checkpoint.d.ts.map +1 -0
  76. package/dist/cjs/memory/checkpoint.js +160 -0
  77. package/dist/cjs/memory/checkpoint.js.map +1 -0
  78. package/dist/cjs/memory/extractor.d.ts.map +1 -0
  79. package/dist/cjs/memory/extractor.js +121 -0
  80. package/dist/cjs/memory/extractor.js.map +1 -0
  81. package/dist/cjs/memory/persona.d.ts.map +1 -0
  82. package/dist/cjs/memory/persona.js +79 -0
  83. package/dist/cjs/memory/persona.js.map +1 -0
  84. package/dist/cjs/memory/pipeline.d.ts.map +1 -0
  85. package/dist/cjs/memory/pipeline.js +148 -0
  86. package/dist/cjs/memory/pipeline.js.map +1 -0
  87. package/dist/cjs/memory/prompts.d.ts.map +1 -0
  88. package/dist/cjs/memory/prompts.js +70 -0
  89. package/dist/cjs/memory/prompts.js.map +1 -0
  90. package/dist/cjs/memory/recall.d.ts.map +1 -0
  91. package/dist/cjs/memory/recall.js +164 -0
  92. package/dist/cjs/memory/recall.js.map +1 -0
  93. package/dist/cjs/memory/scene.d.ts.map +1 -0
  94. package/dist/cjs/memory/scene.js +101 -0
  95. package/dist/cjs/memory/scene.js.map +1 -0
  96. package/dist/cjs/memory/types.d.ts.map +1 -0
  97. package/dist/cjs/memory/types.js +6 -0
  98. package/dist/cjs/memory/types.js.map +1 -0
  99. package/dist/cjs/middleware/types.d.ts.map +1 -0
  100. package/dist/cjs/middleware/types.js +6 -0
  101. package/dist/cjs/middleware/types.js.map +1 -0
  102. package/dist/cjs/package.json +3 -0
  103. package/dist/cjs/sandbox/types.d.ts.map +1 -0
  104. package/dist/cjs/sandbox/types.js +128 -0
  105. package/dist/cjs/sandbox/types.js.map +1 -0
  106. package/dist/{security → cjs/security}/guard.d.ts +1 -6
  107. package/dist/cjs/security/guard.d.ts.map +1 -0
  108. package/dist/cjs/security/guard.js +291 -0
  109. package/dist/cjs/security/guard.js.map +1 -0
  110. package/dist/{security → cjs/security}/types.d.ts +6 -2
  111. package/dist/cjs/security/types.d.ts.map +1 -0
  112. package/dist/cjs/security/types.js +6 -0
  113. package/dist/cjs/security/types.js.map +1 -0
  114. package/dist/cjs/skill/manager.d.ts.map +1 -0
  115. package/dist/cjs/skill/manager.js +413 -0
  116. package/dist/cjs/skill/manager.js.map +1 -0
  117. package/dist/cjs/skill/router.d.ts.map +1 -0
  118. package/dist/cjs/skill/router.js +139 -0
  119. package/dist/cjs/skill/router.js.map +1 -0
  120. package/dist/cjs/skill/types.d.ts.map +1 -0
  121. package/dist/cjs/skill/types.js +6 -0
  122. package/dist/cjs/skill/types.js.map +1 -0
  123. package/dist/cjs/tool/delegate.d.ts.map +1 -0
  124. package/dist/cjs/tool/delegate.js +78 -0
  125. package/dist/cjs/tool/delegate.js.map +1 -0
  126. package/dist/cjs/tool/registry.d.ts +49 -0
  127. package/dist/cjs/tool/registry.d.ts.map +1 -0
  128. package/dist/cjs/tool/registry.js +87 -0
  129. package/dist/cjs/tool/registry.js.map +1 -0
  130. package/dist/cjs/tool/types.d.ts.map +1 -0
  131. package/dist/cjs/tool/types.js +6 -0
  132. package/dist/cjs/tool/types.js.map +1 -0
  133. package/dist/cjs/types.d.ts.map +1 -0
  134. package/dist/cjs/types.js +6 -0
  135. package/dist/cjs/types.js.map +1 -0
  136. package/dist/cjs/utils/token-counter.d.ts.map +1 -0
  137. package/dist/cjs/utils/token-counter.js +104 -0
  138. package/dist/cjs/utils/token-counter.js.map +1 -0
  139. package/dist/esm/agent/engine.d.ts +113 -0
  140. package/dist/esm/agent/engine.d.ts.map +1 -0
  141. package/dist/esm/agent/engine.js +762 -0
  142. package/dist/esm/agent/engine.js.map +1 -0
  143. package/dist/esm/agent/history-manager.d.ts +78 -0
  144. package/dist/esm/agent/history-manager.d.ts.map +1 -0
  145. package/dist/esm/agent/history-manager.js +267 -0
  146. package/dist/esm/agent/history-manager.js.map +1 -0
  147. package/dist/esm/agent/llm-caller.d.ts +58 -0
  148. package/dist/esm/agent/llm-caller.d.ts.map +1 -0
  149. package/dist/esm/agent/llm-caller.js +303 -0
  150. package/dist/esm/agent/llm-caller.js.map +1 -0
  151. package/dist/esm/agent/tool-executor.d.ts +95 -0
  152. package/dist/esm/agent/tool-executor.d.ts.map +1 -0
  153. package/dist/esm/agent/tool-executor.js +564 -0
  154. package/dist/esm/agent/tool-executor.js.map +1 -0
  155. package/dist/esm/agent/types.d.ts +128 -0
  156. package/dist/esm/agent/types.d.ts.map +1 -0
  157. package/dist/esm/agent/types.js +5 -0
  158. package/dist/esm/agent/types.js.map +1 -0
  159. package/dist/esm/agent/workflow.d.ts +74 -0
  160. package/dist/esm/agent/workflow.d.ts.map +1 -0
  161. package/dist/esm/agent/workflow.js +248 -0
  162. package/dist/esm/agent/workflow.js.map +1 -0
  163. package/dist/esm/context/collector.d.ts +12 -0
  164. package/dist/esm/context/collector.d.ts.map +1 -0
  165. package/dist/esm/context/collector.js +57 -0
  166. package/dist/esm/context/collector.js.map +1 -0
  167. package/dist/esm/context/manager.d.ts +16 -0
  168. package/dist/esm/context/manager.d.ts.map +1 -0
  169. package/dist/esm/context/manager.js +32 -0
  170. package/dist/esm/context/manager.js.map +1 -0
  171. package/dist/esm/context/types.d.ts +39 -0
  172. package/dist/esm/context/types.d.ts.map +1 -0
  173. package/dist/esm/context/types.js +5 -0
  174. package/dist/esm/context/types.js.map +1 -0
  175. package/dist/esm/hooks/types.d.ts +47 -0
  176. package/dist/esm/hooks/types.d.ts.map +1 -0
  177. package/dist/esm/hooks/types.js +5 -0
  178. package/dist/esm/hooks/types.js.map +1 -0
  179. package/{src/index.ts → dist/esm/index.d.ts} +16 -140
  180. package/dist/esm/index.d.ts.map +1 -0
  181. package/dist/esm/index.js +39 -0
  182. package/dist/esm/index.js.map +1 -0
  183. package/dist/esm/llm/anthropic-provider.d.ts +28 -0
  184. package/dist/esm/llm/anthropic-provider.d.ts.map +1 -0
  185. package/dist/esm/llm/anthropic-provider.js +352 -0
  186. package/dist/esm/llm/anthropic-provider.js.map +1 -0
  187. package/{src/llm/factory.ts → dist/esm/llm/factory.d.ts} +3 -18
  188. package/dist/esm/llm/factory.d.ts.map +1 -0
  189. package/dist/esm/llm/factory.js +30 -0
  190. package/dist/esm/llm/factory.js.map +1 -0
  191. package/dist/esm/llm/ollama-provider.d.ts +13 -0
  192. package/dist/esm/llm/ollama-provider.d.ts.map +1 -0
  193. package/dist/esm/llm/ollama-provider.js +30 -0
  194. package/dist/esm/llm/ollama-provider.js.map +1 -0
  195. package/dist/esm/llm/openai-provider.d.ts +18 -0
  196. package/dist/esm/llm/openai-provider.d.ts.map +1 -0
  197. package/dist/esm/llm/openai-provider.js +182 -0
  198. package/dist/esm/llm/openai-provider.js.map +1 -0
  199. package/{src/llm/provider.ts → dist/esm/llm/provider.d.ts} +1 -9
  200. package/dist/esm/llm/provider.d.ts.map +1 -0
  201. package/dist/esm/llm/provider.js +10 -0
  202. package/dist/esm/llm/provider.js.map +1 -0
  203. package/dist/esm/llm/types.d.ts +78 -0
  204. package/dist/esm/llm/types.d.ts.map +1 -0
  205. package/dist/esm/llm/types.js +5 -0
  206. package/dist/esm/llm/types.js.map +1 -0
  207. package/dist/esm/mcp/base-client.d.ts +50 -0
  208. package/dist/esm/mcp/base-client.d.ts.map +1 -0
  209. package/dist/esm/mcp/base-client.js +108 -0
  210. package/dist/esm/mcp/base-client.js.map +1 -0
  211. package/dist/esm/mcp/client.d.ts +27 -0
  212. package/dist/esm/mcp/client.d.ts.map +1 -0
  213. package/dist/esm/mcp/client.js +70 -0
  214. package/dist/esm/mcp/client.js.map +1 -0
  215. package/dist/esm/mcp/factory.d.ts +16 -0
  216. package/dist/esm/mcp/factory.d.ts.map +1 -0
  217. package/dist/esm/mcp/factory.js +39 -0
  218. package/dist/esm/mcp/factory.js.map +1 -0
  219. package/dist/esm/mcp/http-client.d.ts +24 -0
  220. package/dist/esm/mcp/http-client.d.ts.map +1 -0
  221. package/dist/esm/mcp/http-client.js +138 -0
  222. package/dist/esm/mcp/http-client.js.map +1 -0
  223. package/dist/esm/mcp/proxy-agent.d.ts +49 -0
  224. package/dist/esm/mcp/proxy-agent.d.ts.map +1 -0
  225. package/dist/esm/mcp/proxy-agent.js +187 -0
  226. package/dist/esm/mcp/proxy-agent.js.map +1 -0
  227. package/dist/esm/mcp/stdio-client.d.ts +16 -0
  228. package/dist/esm/mcp/stdio-client.d.ts.map +1 -0
  229. package/dist/esm/mcp/stdio-client.js +91 -0
  230. package/dist/esm/mcp/stdio-client.js.map +1 -0
  231. package/dist/esm/mcp/types.d.ts +60 -0
  232. package/dist/esm/mcp/types.d.ts.map +1 -0
  233. package/dist/esm/mcp/types.js +5 -0
  234. package/dist/esm/mcp/types.js.map +1 -0
  235. package/dist/esm/memory/checkpoint.d.ts +62 -0
  236. package/dist/esm/memory/checkpoint.d.ts.map +1 -0
  237. package/dist/esm/memory/checkpoint.js +121 -0
  238. package/dist/esm/memory/checkpoint.js.map +1 -0
  239. package/dist/esm/memory/extractor.d.ts +59 -0
  240. package/dist/esm/memory/extractor.d.ts.map +1 -0
  241. package/dist/esm/memory/extractor.js +117 -0
  242. package/dist/esm/memory/extractor.js.map +1 -0
  243. package/dist/esm/memory/persona.d.ts +38 -0
  244. package/dist/esm/memory/persona.d.ts.map +1 -0
  245. package/dist/esm/memory/persona.js +75 -0
  246. package/dist/esm/memory/persona.js.map +1 -0
  247. package/dist/esm/memory/pipeline.d.ts +50 -0
  248. package/dist/esm/memory/pipeline.d.ts.map +1 -0
  249. package/dist/esm/memory/pipeline.js +144 -0
  250. package/dist/esm/memory/pipeline.js.map +1 -0
  251. package/dist/esm/memory/prompts.d.ts +9 -0
  252. package/dist/esm/memory/prompts.d.ts.map +1 -0
  253. package/{src/memory/prompts.ts → dist/esm/memory/prompts.js} +6 -13
  254. package/dist/esm/memory/prompts.js.map +1 -0
  255. package/dist/esm/memory/recall.d.ts +66 -0
  256. package/dist/esm/memory/recall.d.ts.map +1 -0
  257. package/dist/esm/memory/recall.js +159 -0
  258. package/dist/esm/memory/recall.js.map +1 -0
  259. package/dist/esm/memory/scene.d.ts +49 -0
  260. package/dist/esm/memory/scene.d.ts.map +1 -0
  261. package/dist/esm/memory/scene.js +97 -0
  262. package/dist/esm/memory/scene.js.map +1 -0
  263. package/dist/esm/memory/types.d.ts +43 -0
  264. package/dist/esm/memory/types.d.ts.map +1 -0
  265. package/dist/esm/memory/types.js +5 -0
  266. package/dist/esm/memory/types.js.map +1 -0
  267. package/dist/esm/middleware/types.d.ts +52 -0
  268. package/dist/esm/middleware/types.d.ts.map +1 -0
  269. package/dist/esm/middleware/types.js +5 -0
  270. package/dist/esm/middleware/types.js.map +1 -0
  271. package/dist/esm/package.json +3 -0
  272. package/dist/esm/sandbox/types.d.ts +59 -0
  273. package/dist/esm/sandbox/types.d.ts.map +1 -0
  274. package/dist/esm/sandbox/types.js +125 -0
  275. package/dist/esm/sandbox/types.js.map +1 -0
  276. package/dist/esm/security/guard.d.ts +36 -0
  277. package/dist/esm/security/guard.d.ts.map +1 -0
  278. package/dist/esm/security/guard.js +287 -0
  279. package/dist/esm/security/guard.js.map +1 -0
  280. package/dist/esm/security/types.d.ts +40 -0
  281. package/dist/esm/security/types.d.ts.map +1 -0
  282. package/dist/esm/security/types.js +5 -0
  283. package/dist/esm/security/types.js.map +1 -0
  284. package/dist/esm/skill/manager.d.ts +95 -0
  285. package/dist/esm/skill/manager.d.ts.map +1 -0
  286. package/dist/esm/skill/manager.js +376 -0
  287. package/dist/esm/skill/manager.js.map +1 -0
  288. package/dist/esm/skill/router.d.ts +26 -0
  289. package/dist/esm/skill/router.d.ts.map +1 -0
  290. package/dist/esm/skill/router.js +135 -0
  291. package/dist/esm/skill/router.js.map +1 -0
  292. package/dist/esm/skill/types.d.ts +55 -0
  293. package/dist/esm/skill/types.d.ts.map +1 -0
  294. package/dist/esm/skill/types.js +5 -0
  295. package/dist/esm/skill/types.js.map +1 -0
  296. package/dist/esm/tool/delegate.d.ts +34 -0
  297. package/dist/esm/tool/delegate.d.ts.map +1 -0
  298. package/dist/esm/tool/delegate.js +75 -0
  299. package/dist/esm/tool/delegate.js.map +1 -0
  300. package/dist/esm/tool/registry.d.ts +49 -0
  301. package/dist/esm/tool/registry.d.ts.map +1 -0
  302. package/dist/esm/tool/registry.js +83 -0
  303. package/dist/esm/tool/registry.js.map +1 -0
  304. package/dist/esm/tool/types.d.ts +101 -0
  305. package/dist/esm/tool/types.d.ts.map +1 -0
  306. package/dist/esm/tool/types.js +5 -0
  307. package/dist/esm/tool/types.js.map +1 -0
  308. package/dist/esm/types.d.ts +150 -0
  309. package/dist/esm/types.d.ts.map +1 -0
  310. package/dist/esm/types.js +5 -0
  311. package/dist/esm/types.js.map +1 -0
  312. package/dist/esm/utils/token-counter.d.ts +22 -0
  313. package/dist/esm/utils/token-counter.d.ts.map +1 -0
  314. package/dist/esm/utils/token-counter.js +99 -0
  315. package/dist/esm/utils/token-counter.js.map +1 -0
  316. package/package.json +16 -10
  317. package/dist/agent/engine.d.ts.map +0 -1
  318. package/dist/agent/history-manager.d.ts.map +0 -1
  319. package/dist/agent/llm-caller.d.ts.map +0 -1
  320. package/dist/agent/tool-executor.d.ts.map +0 -1
  321. package/dist/agent/types.d.ts.map +0 -1
  322. package/dist/agent/workflow.d.ts.map +0 -1
  323. package/dist/context/collector.d.ts.map +0 -1
  324. package/dist/context/manager.d.ts.map +0 -1
  325. package/dist/context/types.d.ts.map +0 -1
  326. package/dist/hooks/types.d.ts.map +0 -1
  327. package/dist/index.d.ts.map +0 -1
  328. package/dist/llm/anthropic-provider.d.ts.map +0 -1
  329. package/dist/llm/factory.d.ts.map +0 -1
  330. package/dist/llm/ollama-provider.d.ts.map +0 -1
  331. package/dist/llm/openai-provider.d.ts.map +0 -1
  332. package/dist/llm/provider.d.ts.map +0 -1
  333. package/dist/llm/types.d.ts.map +0 -1
  334. package/dist/mcp/base-client.d.ts.map +0 -1
  335. package/dist/mcp/client.d.ts.map +0 -1
  336. package/dist/mcp/factory.d.ts.map +0 -1
  337. package/dist/mcp/http-client.d.ts.map +0 -1
  338. package/dist/mcp/proxy-agent.d.ts.map +0 -1
  339. package/dist/mcp/stdio-client.d.ts.map +0 -1
  340. package/dist/mcp/types.d.ts.map +0 -1
  341. package/dist/memory/checkpoint.d.ts.map +0 -1
  342. package/dist/memory/extractor.d.ts.map +0 -1
  343. package/dist/memory/persona.d.ts.map +0 -1
  344. package/dist/memory/pipeline.d.ts.map +0 -1
  345. package/dist/memory/prompts.d.ts.map +0 -1
  346. package/dist/memory/recall.d.ts.map +0 -1
  347. package/dist/memory/scene.d.ts.map +0 -1
  348. package/dist/memory/types.d.ts.map +0 -1
  349. package/dist/middleware/types.d.ts.map +0 -1
  350. package/dist/sandbox/types.d.ts.map +0 -1
  351. package/dist/security/guard.d.ts.map +0 -1
  352. package/dist/security/types.d.ts.map +0 -1
  353. package/dist/skill/manager.d.ts.map +0 -1
  354. package/dist/skill/router.d.ts.map +0 -1
  355. package/dist/skill/types.d.ts.map +0 -1
  356. package/dist/tool/delegate.d.ts.map +0 -1
  357. package/dist/tool/registry.d.ts +0 -24
  358. package/dist/tool/registry.d.ts.map +0 -1
  359. package/dist/tool/types.d.ts.map +0 -1
  360. package/dist/types.d.ts.map +0 -1
  361. package/dist/utils/token-counter.d.ts.map +0 -1
  362. package/src/agent/engine.ts +0 -875
  363. package/src/agent/history-manager.ts +0 -323
  364. package/src/agent/llm-caller.ts +0 -383
  365. package/src/agent/tool-executor.ts +0 -713
  366. package/src/agent/types.ts +0 -136
  367. package/src/agent/workflow.ts +0 -339
  368. package/src/context/collector.ts +0 -59
  369. package/src/context/manager.ts +0 -40
  370. package/src/context/types.ts +0 -51
  371. package/src/hooks/types.ts +0 -77
  372. package/src/llm/anthropic-provider.ts +0 -412
  373. package/src/llm/ollama-provider.ts +0 -39
  374. package/src/llm/openai-provider.ts +0 -200
  375. package/src/llm/types.ts +0 -91
  376. package/src/mcp/base-client.ts +0 -159
  377. package/src/mcp/client.ts +0 -81
  378. package/src/mcp/factory.ts +0 -45
  379. package/src/mcp/http-client.ts +0 -149
  380. package/src/mcp/proxy-agent.ts +0 -227
  381. package/src/mcp/stdio-client.ts +0 -104
  382. package/src/mcp/types.ts +0 -65
  383. package/src/memory/checkpoint.ts +0 -146
  384. package/src/memory/extractor.ts +0 -164
  385. package/src/memory/persona.ts +0 -106
  386. package/src/memory/pipeline.ts +0 -192
  387. package/src/memory/recall.ts +0 -217
  388. package/src/memory/scene.ts +0 -137
  389. package/src/memory/types.ts +0 -54
  390. package/src/middleware/types.ts +0 -62
  391. package/src/sandbox/types.ts +0 -185
  392. package/src/security/guard.ts +0 -249
  393. package/src/security/types.ts +0 -46
  394. package/src/skill/manager.ts +0 -420
  395. package/src/skill/router.ts +0 -158
  396. package/src/skill/types.ts +0 -67
  397. package/src/tool/delegate.ts +0 -105
  398. package/src/tool/registry.ts +0 -64
  399. package/src/tool/types.ts +0 -124
  400. package/src/types.ts +0 -188
  401. package/src/utils/token-counter.ts +0 -108
  402. /package/dist/{agent → cjs/agent}/engine.d.ts +0 -0
  403. /package/dist/{agent → cjs/agent}/history-manager.d.ts +0 -0
  404. /package/dist/{agent → cjs/agent}/llm-caller.d.ts +0 -0
  405. /package/dist/{agent → cjs/agent}/tool-executor.d.ts +0 -0
  406. /package/dist/{agent → cjs/agent}/types.d.ts +0 -0
  407. /package/dist/{agent → cjs/agent}/workflow.d.ts +0 -0
  408. /package/dist/{context → cjs/context}/collector.d.ts +0 -0
  409. /package/dist/{context → cjs/context}/manager.d.ts +0 -0
  410. /package/dist/{context → cjs/context}/types.d.ts +0 -0
  411. /package/dist/{hooks → cjs/hooks}/types.d.ts +0 -0
  412. /package/dist/{llm → cjs/llm}/anthropic-provider.d.ts +0 -0
  413. /package/dist/{llm → cjs/llm}/factory.d.ts +0 -0
  414. /package/dist/{llm → cjs/llm}/ollama-provider.d.ts +0 -0
  415. /package/dist/{llm → cjs/llm}/openai-provider.d.ts +0 -0
  416. /package/dist/{llm → cjs/llm}/provider.d.ts +0 -0
  417. /package/dist/{llm → cjs/llm}/types.d.ts +0 -0
  418. /package/dist/{mcp → cjs/mcp}/base-client.d.ts +0 -0
  419. /package/dist/{mcp → cjs/mcp}/client.d.ts +0 -0
  420. /package/dist/{mcp → cjs/mcp}/factory.d.ts +0 -0
  421. /package/dist/{mcp → cjs/mcp}/http-client.d.ts +0 -0
  422. /package/dist/{mcp → cjs/mcp}/proxy-agent.d.ts +0 -0
  423. /package/dist/{mcp → cjs/mcp}/stdio-client.d.ts +0 -0
  424. /package/dist/{mcp → cjs/mcp}/types.d.ts +0 -0
  425. /package/dist/{memory → cjs/memory}/checkpoint.d.ts +0 -0
  426. /package/dist/{memory → cjs/memory}/extractor.d.ts +0 -0
  427. /package/dist/{memory → cjs/memory}/persona.d.ts +0 -0
  428. /package/dist/{memory → cjs/memory}/pipeline.d.ts +0 -0
  429. /package/dist/{memory → cjs/memory}/prompts.d.ts +0 -0
  430. /package/dist/{memory → cjs/memory}/recall.d.ts +0 -0
  431. /package/dist/{memory → cjs/memory}/scene.d.ts +0 -0
  432. /package/dist/{memory → cjs/memory}/types.d.ts +0 -0
  433. /package/dist/{middleware → cjs/middleware}/types.d.ts +0 -0
  434. /package/dist/{sandbox → cjs/sandbox}/types.d.ts +0 -0
  435. /package/dist/{skill → cjs/skill}/manager.d.ts +0 -0
  436. /package/dist/{skill → cjs/skill}/router.d.ts +0 -0
  437. /package/dist/{skill → cjs/skill}/types.d.ts +0 -0
  438. /package/dist/{tool → cjs/tool}/delegate.d.ts +0 -0
  439. /package/dist/{tool → cjs/tool}/types.d.ts +0 -0
  440. /package/dist/{types.d.ts → cjs/types.d.ts} +0 -0
  441. /package/dist/{utils → cjs/utils}/token-counter.d.ts +0 -0
@@ -0,0 +1,79 @@
1
+ "use strict";
2
+ // ============================================================
3
+ // PersonaGenerator — L3 用户画像生成器
4
+ // ============================================================
5
+ // 基于 L2 场景块生成/增量更新用户画像(L3 Persona),
6
+ // 画像以 markdown 格式存储,注入 prompt 时提供用户全貌
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.PersonaGenerator = void 0;
9
+ const prompts_ts_1 = require("./prompts.js");
10
+ /**
11
+ * L3 用户画像生成器
12
+ *
13
+ * 工作流程:
14
+ * 1. 接收 L2 场景块列表
15
+ * 2. 通过 LLM 从场景中提炼稳定用户特征
16
+ * 3. 增量更新画像(保留已有内容,仅修改受影响的部分)
17
+ */
18
+ class PersonaGenerator {
19
+ llmProvider;
20
+ timeoutMs;
21
+ constructor(opts) {
22
+ this.llmProvider = opts.llmProvider;
23
+ this.timeoutMs = opts.timeoutMs ?? 30000;
24
+ }
25
+ /**
26
+ * 生成或更新用户画像
27
+ * @param scenes L2 场景块列表
28
+ * @param existingPersona 已有画像(markdown 文本,用于增量更新)
29
+ * @returns 更新后的画像 markdown
30
+ */
31
+ async generate(scenes, existingPersona = '') {
32
+ if (scenes.length === 0 && !existingPersona)
33
+ return '';
34
+ const userPrompt = this.buildUserPrompt(scenes, existingPersona);
35
+ try {
36
+ return await this.callLLM(userPrompt);
37
+ }
38
+ catch (err) {
39
+ console.warn(`[PersonaGenerator] Generation failed: ${err?.message || err}`);
40
+ return existingPersona;
41
+ }
42
+ }
43
+ buildUserPrompt(scenes, existingPersona) {
44
+ let prompt = '';
45
+ if (scenes.length > 0) {
46
+ const scenesText = scenes
47
+ .map(s => `### ${s.title}\n${s.description}\nAtoms: ${s.atomIds.length}`)
48
+ .join('\n\n');
49
+ prompt += `**Scenario blocks:**\n${scenesText}\n\n`;
50
+ }
51
+ if (existingPersona) {
52
+ prompt += `**Existing persona (update incrementally, preserve unaffected sections):**\n${existingPersona}\n\n`;
53
+ prompt += `Update the persona based on the new scenario blocks above. Preserve sections not affected by new data.`;
54
+ }
55
+ else {
56
+ prompt += `Generate a user persona based on the scenario blocks above. Use markdown with clear section headers.`;
57
+ }
58
+ return prompt;
59
+ }
60
+ async callLLM(userPrompt) {
61
+ const messages = [
62
+ { role: 'system', content: prompts_ts_1.PERSONA_GENERATION_SYSTEM_PROMPT },
63
+ { role: 'user', content: userPrompt },
64
+ ];
65
+ const chunks = [];
66
+ const stream = this.llmProvider.chatStream({
67
+ messages,
68
+ abortSignal: AbortSignal.timeout(this.timeoutMs),
69
+ });
70
+ for await (const chunk of stream) {
71
+ if (chunk.delta.content) {
72
+ chunks.push(chunk.delta.content);
73
+ }
74
+ }
75
+ return chunks.join('').trim();
76
+ }
77
+ }
78
+ exports.PersonaGenerator = PersonaGenerator;
79
+ //# sourceMappingURL=persona.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"persona.js","sourceRoot":"","sources":["../../../src/memory/persona.ts"],"names":[],"mappings":";AAAA,+DAA+D;AAC/D,gCAAgC;AAChC,+DAA+D;AAC/D,oCAAoC;AACpC,sCAAsC;;;AAItC,6CAAgE;AAkBhE;;;;;;;GAOG;AACH,MAAa,gBAAgB;IACnB,WAAW,CAAc;IACzB,SAAS,CAAS;IAE1B,YAAY,IAA6B;QACvC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;QACpC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,KAAK,CAAC;IAC3C,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,QAAQ,CACZ,MAAoB,EACpB,kBAA0B,EAAE;QAE5B,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,eAAe;YAAE,OAAO,EAAE,CAAC;QAEvD,MAAM,UAAU,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;QAEjE,IAAI,CAAC;YACH,OAAO,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QACxC,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,OAAO,CAAC,IAAI,CAAC,yCAAyC,GAAG,EAAE,OAAO,IAAI,GAAG,EAAE,CAAC,CAAC;YAC7E,OAAO,eAAe,CAAC;QACzB,CAAC;IACH,CAAC;IAEO,eAAe,CAAC,MAAoB,EAAE,eAAuB;QACnE,IAAI,MAAM,GAAG,EAAE,CAAC;QAEhB,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtB,MAAM,UAAU,GAAG,MAAM;iBACtB,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,WAAW,YAAY,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;iBACxE,IAAI,CAAC,MAAM,CAAC,CAAC;YAChB,MAAM,IAAI,yBAAyB,UAAU,MAAM,CAAC;QACtD,CAAC;QAED,IAAI,eAAe,EAAE,CAAC;YACpB,MAAM,IAAI,+EAA+E,eAAe,MAAM,CAAC;YAC/G,MAAM,IAAI,wGAAwG,CAAC;QACrH,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,sGAAsG,CAAC;QACnH,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAEO,KAAK,CAAC,OAAO,CAAC,UAAkB;QACtC,MAAM,QAAQ,GAAc;YAC1B,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,6CAAgC,EAAE;YAC7D,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE;SACtC,CAAC;QAEF,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC;YACzC,QAAQ;YACR,WAAW,EAAE,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC;SACjD,CAAC,CAAC;QAEH,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YACjC,IAAI,KAAK,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;gBACxB,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YACnC,CAAC;QACH,CAAC;QAED,OAAO,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IAChC,CAAC;CACF;AAvED,4CAuEC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pipeline.d.ts","sourceRoot":"","sources":["../../../src/memory/pipeline.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,KAAK,EAA4B,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAE9E,OAAO,EAAmB,KAAK,UAAU,EAAE,MAAM,YAAY,CAAC;AAG9D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAE3C,WAAW;AACX,MAAM,WAAW,eAAe;IAC9B,WAAW,EAAE,WAAW,CAAC;IACzB,uCAAuC;IACvC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,+BAA+B;IAC/B,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,aAAa;AACb,MAAM,WAAW,cAAc;IAC7B,qBAAqB;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,kBAAkB;IAClB,WAAW,EAAE,OAAO,CAAC;IACrB,oBAAoB;IACpB,WAAW,EAAE,OAAO,CAAC;IACrB,sBAAsB;IACtB,SAAS,CAAC,EAAE,UAAU,EAAE,CAAC;IACzB,sBAAsB;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;;;;;;;;GASG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,WAAW,CAAS;gBAEhB,IAAI,EAAE,eAAe;IAMjC;;;;;;OAMG;IACG,GAAG,CACP,QAAQ,EAAE,OAAO,EAAE,EACnB,SAAS,EAAE,MAAM,EACjB,aAAa,EAAE,iBAAiB,GAC/B,OAAO,CAAC,cAAc,CAAC;CAwH3B"}
@@ -0,0 +1,148 @@
1
+ "use strict";
2
+ // ============================================================
3
+ // MemoryPipeline — L1→L2→L3 记忆管道调度器
4
+ // ============================================================
5
+ // 调度记忆层级的渐进式提炼:
6
+ // L1 (原子事实) → L2 (场景聚合) → L3 (用户画像)
7
+ // 在对话结束后 fire-and-forget 触发
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.MemoryPipeline = void 0;
10
+ const extractor_ts_1 = require("./extractor.js");
11
+ const scene_ts_1 = require("./scene.js");
12
+ const persona_ts_1 = require("./persona.js");
13
+ const checkpoint_ts_1 = require("./checkpoint.js");
14
+ /**
15
+ * 记忆管道调度器
16
+ *
17
+ * 调度策略:
18
+ * 1. 每次对话结束:提取 L1 原子事实
19
+ * 2. L1 累积达到阈值:触发 L2 场景聚合
20
+ * 3. L2 累积达到阈值:触发 L3 画像生成
21
+ *
22
+ * 所有操作均为 fire-and-forget,不阻塞对话响应
23
+ */
24
+ class MemoryPipeline {
25
+ llmProvider;
26
+ l2Threshold;
27
+ l3Threshold;
28
+ constructor(opts) {
29
+ this.llmProvider = opts.llmProvider;
30
+ this.l2Threshold = opts.l2Threshold ?? 5;
31
+ this.l3Threshold = opts.l3Threshold ?? 3;
32
+ }
33
+ /**
34
+ * 执行完整管道(L1 提取 → 条件触发 L2 → 条件触发 L3)
35
+ *
36
+ * @param messages 对话消息
37
+ * @param sessionId 会话 ID
38
+ * @param memoryService MemoryService 实例(延迟导入避免循环依赖)
39
+ */
40
+ async run(messages, sessionId, memoryService) {
41
+ const result = {
42
+ l1Extracted: 0,
43
+ l2Triggered: false,
44
+ l3Triggered: false,
45
+ };
46
+ // === Phase 1: L1 提取 ===
47
+ const existingKeys = memoryService.getKeys();
48
+ const extractor = new extractor_ts_1.MemoryExtractor({ llmProvider: this.llmProvider });
49
+ const facts = await extractor.extract(messages, sessionId, existingKeys);
50
+ // 写入 L1 条目
51
+ for (const fact of facts) {
52
+ memoryService.save(fact.key, fact.content, fact.category, fact.importance, {
53
+ memoryLayer: 'L1',
54
+ sourceSessionId: sessionId,
55
+ sourceTimestamp: new Date().toISOString(),
56
+ });
57
+ }
58
+ result.l1Extracted = facts.length;
59
+ if (facts.length === 0)
60
+ return result;
61
+ console.log(`[Pipeline] L1: extracted ${facts.length} facts from session ${sessionId}`);
62
+ // === Phase 2: 条件触发 L2 聚合 ===
63
+ const l1Entries = memoryService.getAllEntries('L1');
64
+ const l1Count = l1Entries.length;
65
+ const checkpoint = (0, checkpoint_ts_1.getMemoryCheckpoint)();
66
+ if (checkpoint.shouldTriggerL2(l1Count, this.l2Threshold)) {
67
+ try {
68
+ const existingL2 = memoryService.getAllEntries('L2');
69
+ const existingScenes = existingL2.map(e => ({
70
+ sceneId: e.sceneId || e.key,
71
+ title: e.key,
72
+ description: e.content,
73
+ atomIds: e.sourceIds || [],
74
+ }));
75
+ const aggregator = new scene_ts_1.SceneAggregator({ llmProvider: this.llmProvider });
76
+ const atoms = l1Entries.map(e => ({
77
+ id: e.id,
78
+ key: e.key,
79
+ content: e.content,
80
+ category: e.category,
81
+ }));
82
+ const scenes = await aggregator.aggregate(atoms, existingScenes);
83
+ result.l2Triggered = true;
84
+ result.newScenes = scenes;
85
+ // 写入 L2 条目(upsert by sceneId)
86
+ for (const scene of scenes) {
87
+ memoryService.save(scene.sceneId, `${scene.title}\n${scene.description}`, 'scene', 4, {
88
+ memoryLayer: 'L2',
89
+ sceneId: scene.sceneId,
90
+ sourceLayer: 'L1',
91
+ sourceIds: scene.atomIds,
92
+ });
93
+ }
94
+ // 回填 L1 条目的 sceneId
95
+ for (const scene of scenes) {
96
+ for (const atomId of scene.atomIds) {
97
+ const entry = l1Entries.find(e => e.id === atomId);
98
+ if (entry && entry.sceneId !== scene.sceneId) {
99
+ memoryService.save(entry.key, entry.content, entry.category, entry.importance, {
100
+ memoryLayer: 'L1',
101
+ sceneId: scene.sceneId,
102
+ });
103
+ }
104
+ }
105
+ }
106
+ console.log(`[Pipeline] L2: aggregated ${scenes.length} scenes from ${l1Count} atoms`);
107
+ // 更新检查点
108
+ checkpoint.updateL2(l1Count);
109
+ }
110
+ catch (err) {
111
+ console.warn(`[Pipeline] L2 aggregation failed:`, err?.message);
112
+ }
113
+ }
114
+ // === Phase 3: 条件触发 L3 画像 ===
115
+ const l2Entries = memoryService.getAllEntries('L2');
116
+ if (checkpoint.shouldTriggerL3(l2Entries.length, this.l3Threshold)) {
117
+ try {
118
+ const existingL3 = memoryService.getAllEntries('L3');
119
+ const existingPersona = existingL3.length > 0 ? existingL3[0].content : '';
120
+ const generator = new persona_ts_1.PersonaGenerator({ llmProvider: this.llmProvider });
121
+ const scenes = l2Entries.map(e => ({
122
+ sceneId: e.sceneId || e.key,
123
+ title: e.key,
124
+ description: e.content,
125
+ atomIds: e.sourceIds || [],
126
+ }));
127
+ const persona = await generator.generate(scenes, existingPersona);
128
+ result.l3Triggered = true;
129
+ result.newPersona = persona;
130
+ if (persona) {
131
+ memoryService.save('user_persona', persona, 'persona', 5, {
132
+ memoryLayer: 'L3',
133
+ sourceLayer: 'L2',
134
+ sourceIds: l2Entries.map(e => e.id),
135
+ });
136
+ console.log(`[Pipeline] L3: persona updated (${persona.length} chars)`);
137
+ checkpoint.updateL3(l2Entries.length);
138
+ }
139
+ }
140
+ catch (err) {
141
+ console.warn(`[Pipeline] L3 generation failed:`, err?.message);
142
+ }
143
+ }
144
+ return result;
145
+ }
146
+ }
147
+ exports.MemoryPipeline = MemoryPipeline;
148
+ //# sourceMappingURL=pipeline.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pipeline.js","sourceRoot":"","sources":["../../../src/memory/pipeline.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompts.d.ts","sourceRoot":"","sources":["../../../src/memory/prompts.ts"],"names":[],"mappings":"AAIA,0BAA0B;AAC1B,eAAO,MAAM,wBAAwB,wlCAqBiB,CAAC;AAEvD,eAAe;AACf,wBAAgB,yBAAyB,CACvC,eAAe,EAAE,MAAM,EACvB,YAAY,EAAE,MAAM,EAAE,GACrB,MAAM,CASR;AAED,8BAA8B;AAC9B,eAAO,MAAM,+BAA+B,gqBAgB1C,CAAC;AAEH,8BAA8B;AAC9B,eAAO,MAAM,gCAAgC,6jBASA,CAAC"}
@@ -0,0 +1,70 @@
1
+ "use strict";
2
+ // ============================================================
3
+ // Memory Extraction Prompt Templates
4
+ // ============================================================
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.PERSONA_GENERATION_SYSTEM_PROMPT = exports.SCENE_AGGREGATION_SYSTEM_PROMPT = exports.EXTRACTION_SYSTEM_PROMPT = void 0;
7
+ exports.buildExtractionUserPrompt = buildExtractionUserPrompt;
8
+ /** 原子事实提取 Prompt(系统提示) */
9
+ exports.EXTRACTION_SYSTEM_PROMPT = `You are a memory extraction engine. Analyze the conversation and extract persistent, reusable facts.
10
+
11
+ **Rules:**
12
+ - Only extract OBJECTIVE, PERSISTENT facts that will be useful in future conversations
13
+ - Extract: user preferences, project knowledge, technical stack, learned patterns, important decisions
14
+ - DO NOT extract: one-off task details (e.g. "fix bug X"), temporary state, debugging logs
15
+ - Each fact must be atomic (one discrete piece of knowledge)
16
+ - Use concise, declarative language
17
+ - Prefer updating existing keys over creating duplicates
18
+
19
+ **Categories:**
20
+ - user_preference: User's working habits, tool preferences, coding style
21
+ - project_knowledge: Project architecture, tech stack, conventions
22
+ - learned_fact: New knowledge gained during the conversation
23
+
24
+ **Output format (strict JSON array):**
25
+ [
26
+ { "key": "snake_case_key", "content": "Brief factual statement", "category": "user_preference|project_knowledge|learned_fact", "importance": 1-5 }
27
+ ]
28
+
29
+ If no extractable facts exist, output an empty array: []
30
+ Do not add explanations or markdown outside the JSON.`;
31
+ /** 构建提取用户提示 */
32
+ function buildExtractionUserPrompt(messagesSummary, existingKeys) {
33
+ const keysSection = existingKeys.length > 0
34
+ ? `**Existing memory keys (avoid duplicates, update if needed):**\n${existingKeys.map(k => `- ${k}`).join('\n')}\n\n`
35
+ : '';
36
+ return `${keysSection}**Conversation to analyze:**
37
+ ${messagesSummary}
38
+
39
+ Extract persistent facts from the above conversation. Output ONLY a JSON array.`;
40
+ }
41
+ /** 场景聚合 Prompt(Phase 4 L2) */
42
+ exports.SCENE_AGGREGATION_SYSTEM_PROMPT = `You are a memory organizer. Group related atomic facts into thematic scenario blocks.
43
+
44
+ **Rules:**
45
+ - Each scenario should have a clear title and description
46
+ - Group facts by topic/project/domain (e.g. "连接器功能开发", "项目架构决策")
47
+ - Max 15 scenarios total. Merge or archive old scenarios if needed.
48
+ - A fact can belong to only one scenario
49
+
50
+ **Output format (strict JSON array):**
51
+ [
52
+ {
53
+ "sceneId": "snake_case_id",
54
+ "title": "场景标题",
55
+ "description": "场景描述(1-2句)",
56
+ "atomIds": ["atom_id_1", "atom_id_2"]
57
+ }
58
+ ]`;
59
+ /** 画像生成 Prompt(Phase 4 L3) */
60
+ exports.PERSONA_GENERATION_SYSTEM_PROMPT = `You are a user profiling engine. Based on the scenario blocks provided, generate or incrementally update a user persona.
61
+
62
+ **Rules:**
63
+ - Focus on stable, enduring traits: working style, technical preferences, communication patterns
64
+ - Use clear section headers (## 技术偏好, ## 工作风格, ## 项目背景, etc.)
65
+ - Keep the persona concise (max 800 words)
66
+ - When updating: preserve existing content, only modify sections affected by new scenarios
67
+
68
+ **Output format: Markdown**
69
+ Write the persona directly as markdown text.`;
70
+ //# sourceMappingURL=prompts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompts.js","sourceRoot":"","sources":["../../../src/memory/prompts.ts"],"names":[],"mappings":";AAAA,+DAA+D;AAC/D,qCAAqC;AACrC,+DAA+D;;;AA2B/D,8DAYC;AArCD,0BAA0B;AACb,QAAA,wBAAwB,GAAG;;;;;;;;;;;;;;;;;;;;;sDAqBc,CAAC;AAEvD,eAAe;AACf,SAAgB,yBAAyB,CACvC,eAAuB,EACvB,YAAsB;IAEtB,MAAM,WAAW,GAAG,YAAY,CAAC,MAAM,GAAG,CAAC;QACzC,CAAC,CAAC,mEAAmE,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM;QACrH,CAAC,CAAC,EAAE,CAAC;IAEP,OAAO,GAAG,WAAW;EACrB,eAAe;;gFAE+D,CAAC;AACjF,CAAC;AAED,8BAA8B;AACjB,QAAA,+BAA+B,GAAG;;;;;;;;;;;;;;;;EAgB7C,CAAC;AAEH,8BAA8B;AACjB,QAAA,gCAAgC,GAAG;;;;;;;;;6CASH,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"recall.d.ts","sourceRoot":"","sources":["../../../src/memory/recall.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE3D,WAAW;AACX,MAAM,WAAW,YAAY;IAC3B,sBAAsB;IACtB,OAAO,EAAE,iBAAiB,EAAE,CAAC;IAC7B,WAAW;IACX,QAAQ,EAAE,OAAO,CAAC;IAClB,aAAa;IACb,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,eAAe;AACf,MAAM,WAAW,iBAAkB,SAAQ,WAAW;IACpD,gBAAgB;IAChB,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,WAAW;AACX,MAAM,WAAW,aAAa;IAC5B,kBAAkB;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,uBAAuB;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc;IACd,MAAM,CAAC,EAAE,WAAW,EAAE,CAAC;CACxB;AAED;;;;;;;;;GASG;AACH,qBAAa,kBAAkB;IAE7B;;OAEG;IACG,MAAM,CACV,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,WAAW,EAAE,EAC1B,OAAO,GAAE,aAAkB,GAC1B,OAAO,CAAC,YAAY,CAAC;YAWV,WAAW;IAgDzB;;;OAGG;IACH,OAAO,CAAC,YAAY;IA0BpB;;;OAGG;IACH,OAAO,CAAC,mBAAmB;IAkB3B;;;OAGG;IACH,OAAO,CAAC,WAAW;IAuBnB;;;OAGG;IACH,OAAO,CAAC,mBAAmB;CAS5B;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,CASlE"}
@@ -0,0 +1,164 @@
1
+ "use strict";
2
+ // ============================================================
3
+ // MemoryRecallEngine — 智能记忆召回引擎(带超时保护)
4
+ // ============================================================
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.MemoryRecallEngine = void 0;
7
+ exports.formatRecallForPrompt = formatRecallForPrompt;
8
+ /**
9
+ * 智能记忆召回引擎
10
+ *
11
+ * 召回策略(优先级排序):
12
+ * 1. 关键词匹配:userText 分词后与 key/content 做模糊匹配
13
+ * 2. 重要性加权:importance 高的记忆权重更大
14
+ * 3. 时效性衰减:近期更新的记忆优先(updatedAt 越新分数越高)
15
+ *
16
+ * 超时保护:超过 timeoutMs 立即返回空结果,不阻塞对话
17
+ */
18
+ class MemoryRecallEngine {
19
+ /**
20
+ * 召回相关记忆(带超时保护)
21
+ */
22
+ async recall(userText, allMemories, options = {}) {
23
+ const timeoutMs = options.timeoutMs ?? 3000;
24
+ return Promise.race([
25
+ this.recallInner(userText, allMemories, options),
26
+ new Promise((resolve) => setTimeout(() => resolve({ entries: [], timedOut: true, strategy: 'timeout' }), timeoutMs)),
27
+ ]);
28
+ }
29
+ async recallInner(userText, allMemories, options) {
30
+ const maxResults = options.maxResults ?? 5;
31
+ const layers = options.layers;
32
+ // 层级过滤
33
+ let candidates = layers
34
+ ? allMemories.filter(e => layers.includes(e.memoryLayer))
35
+ : allMemories;
36
+ if (candidates.length === 0) {
37
+ return { entries: [], timedOut: false, strategy: 'empty' };
38
+ }
39
+ // 提取查询关键词(简单分词:空格 + 标点切分,过滤短词)
40
+ const queryTerms = this.extractTerms(userText);
41
+ // 构建 IDF 映射表(TF-IDF 加权)
42
+ const idfMap = this.buildIDFMap(queryTerms, candidates);
43
+ // 对每条记忆计算分数
44
+ const scored = candidates.map(entry => {
45
+ const keywordScore = this.computeKeywordScore(entry, queryTerms, idfMap);
46
+ const importanceScore = (entry.importance || 3) / 5; // 0.2 ~ 1.0
47
+ const recencyScore = this.computeRecencyScore(entry.updatedAt); // 0.0 ~ 1.0
48
+ // 加权合成
49
+ const relevanceScore = keywordScore * 0.6 + importanceScore * 0.2 + recencyScore * 0.2;
50
+ return { ...entry, relevanceScore };
51
+ });
52
+ // 过滤低分(阈值 0.05)并排序
53
+ const filtered = scored
54
+ .filter(e => e.relevanceScore > 0.05)
55
+ .sort((a, b) => b.relevanceScore - a.relevanceScore)
56
+ .slice(0, maxResults);
57
+ return {
58
+ entries: filtered,
59
+ timedOut: false,
60
+ strategy: filtered.length > 0 ? 'keyword+importance+recency' : 'no_match',
61
+ };
62
+ }
63
+ /**
64
+ * 提取查询词项(简单分词)
65
+ * 支持中英文混合:英文按空格,中文按字
66
+ */
67
+ extractTerms(text) {
68
+ if (!text)
69
+ return [];
70
+ // 英文:小写 + 按空格/标点切分
71
+ const englishTerms = text
72
+ .toLowerCase()
73
+ .split(/[\s,.!?;:,。!?;:]+/)
74
+ .filter(t => t.length >= 2);
75
+ // 中文:提取连续中文片段,再按 2-gram 切分
76
+ const chineseSegments = text.match(/[\u4e00-\u9fff]{2,}/g) || [];
77
+ const chineseTerms = [];
78
+ for (const seg of chineseSegments) {
79
+ for (let i = 0; i < seg.length - 1; i++) {
80
+ chineseTerms.push(seg.slice(i, i + 2));
81
+ }
82
+ if (seg.length >= 3) {
83
+ for (let i = 0; i < seg.length - 2; i++) {
84
+ chineseTerms.push(seg.slice(i, i + 3));
85
+ }
86
+ }
87
+ }
88
+ return [...new Set([...englishTerms, ...chineseTerms])];
89
+ }
90
+ /**
91
+ * 计算关键词匹配分数(TF-IDF 加权)
92
+ * 稀有词(出现在少量记忆中)获得更高权重,常见词权重降低
93
+ */
94
+ computeKeywordScore(entry, terms, idfMap) {
95
+ if (terms.length === 0)
96
+ return 0;
97
+ const text = `${entry.key} ${entry.content} ${entry.category}`.toLowerCase();
98
+ let weightedScore = 0;
99
+ let totalWeight = 0;
100
+ for (const term of terms) {
101
+ if (text.includes(term.toLowerCase())) {
102
+ const idf = idfMap?.get(term) ?? 1.0;
103
+ weightedScore += idf;
104
+ }
105
+ totalWeight += idfMap?.get(term) ?? 1.0;
106
+ }
107
+ return totalWeight > 0 ? weightedScore / totalWeight : 0;
108
+ }
109
+ /**
110
+ * 构建 IDF 映射表:term → IDF 分数
111
+ * IDF = log(N / df),N=总文档数,df=包含该 term 的文档数
112
+ */
113
+ buildIDFMap(terms, candidates) {
114
+ const N = candidates.length;
115
+ if (N === 0)
116
+ return new Map();
117
+ const df = new Map();
118
+ for (const term of terms) {
119
+ let count = 0;
120
+ const lowerTerm = term.toLowerCase();
121
+ for (const entry of candidates) {
122
+ const text = `${entry.key} ${entry.content} ${entry.category}`.toLowerCase();
123
+ if (text.includes(lowerTerm))
124
+ count++;
125
+ }
126
+ df.set(term, count);
127
+ }
128
+ const idf = new Map();
129
+ for (const [term, count] of df) {
130
+ // 加 1 平滑避免除零
131
+ idf.set(term, Math.log((N + 1) / (count + 1)) + 1);
132
+ }
133
+ return idf;
134
+ }
135
+ /**
136
+ * 计算时效性分数(0-1)
137
+ * 24 小时内的记忆得 1.0,30 天前的记忆得 ~0.1
138
+ */
139
+ computeRecencyScore(updatedAt) {
140
+ const age = Date.now() - new Date(updatedAt).getTime();
141
+ const dayMs = 24 * 60 * 60 * 1000;
142
+ if (age < dayMs)
143
+ return 1.0; // 24 小时内
144
+ if (age < 7 * dayMs)
145
+ return 0.8; // 7 天内
146
+ if (age < 30 * dayMs)
147
+ return 0.5; // 30 天内
148
+ return 0.2; // 超过 30 天
149
+ }
150
+ }
151
+ exports.MemoryRecallEngine = MemoryRecallEngine;
152
+ /**
153
+ * 将召回结果格式化为可注入 system prompt 的文本
154
+ */
155
+ function formatRecallForPrompt(result) {
156
+ if (result.entries.length === 0)
157
+ return '';
158
+ const lines = result.entries.map(e => {
159
+ const score = e.relevanceScore.toFixed(2);
160
+ return `- [${e.category}] ${e.key}: ${e.content}(相关度: ${score})`;
161
+ });
162
+ return `## Long-term Memory (auto-recalled, ${result.entries.length} entries)\n${lines.join('\n')}`;
163
+ }
164
+ //# sourceMappingURL=recall.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"recall.js","sourceRoot":"","sources":["../../../src/memory/recall.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scene.d.ts","sourceRoot":"","sources":["../../../src/memory/scene.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAInD,cAAc;AACd,MAAM,WAAW,UAAU;IACzB,wBAAwB;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW;IACX,KAAK,EAAE,MAAM,CAAC;IACd,WAAW;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,oBAAoB;IACpB,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,YAAY;AACZ,MAAM,WAAW,sBAAsB;IACrC,WAAW,EAAE,WAAW,CAAC;IACzB,kBAAkB;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,sBAAsB;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;GAOG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,SAAS,CAAS;gBAEd,IAAI,EAAE,sBAAsB;IAMxC;;;;OAIG;IACG,SAAS,CACb,KAAK,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC,EAC5E,cAAc,GAAE,UAAU,EAAO,GAChC,OAAO,CAAC,UAAU,EAAE,CAAC;IAcxB,OAAO,CAAC,eAAe;YAqBT,OAAO;IAqBrB,OAAO,CAAC,WAAW;CAsBpB"}
@@ -0,0 +1,101 @@
1
+ "use strict";
2
+ // ============================================================
3
+ // SceneAggregator — L2 场景聚合器
4
+ // ============================================================
5
+ // 将 L1 原子事实聚合为主题场景块(L2 Scene),
6
+ // 便于召回时按主题整体命中,提升上下文注入效率
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.SceneAggregator = void 0;
9
+ const prompts_ts_1 = require("./prompts.js");
10
+ /**
11
+ * L2 场景聚合器
12
+ *
13
+ * 工作流程:
14
+ * 1. 收集所有 L1 原子事实
15
+ * 2. 通过 LLM 将相关事实分组为场景块
16
+ * 3. 输出 SceneBlock[],供 MemoryService 更新 L2 条目
17
+ */
18
+ class SceneAggregator {
19
+ llmProvider;
20
+ maxScenes;
21
+ timeoutMs;
22
+ constructor(opts) {
23
+ this.llmProvider = opts.llmProvider;
24
+ this.maxScenes = opts.maxScenes ?? 15;
25
+ this.timeoutMs = opts.timeoutMs ?? 30000;
26
+ }
27
+ /**
28
+ * 聚合原子事实为场景块
29
+ * @param atoms L1 原子事实列表(key + content + id)
30
+ * @param existingScenes 已有场景(用于增量更新)
31
+ */
32
+ async aggregate(atoms, existingScenes = []) {
33
+ if (atoms.length === 0)
34
+ return existingScenes;
35
+ const userPrompt = this.buildUserPrompt(atoms, existingScenes);
36
+ try {
37
+ const raw = await this.callLLM(userPrompt);
38
+ return this.parseScenes(raw);
39
+ }
40
+ catch (err) {
41
+ console.warn(`[SceneAggregator] Aggregation failed: ${err?.message || err}`);
42
+ return existingScenes;
43
+ }
44
+ }
45
+ buildUserPrompt(atoms, existingScenes) {
46
+ const atomsText = atoms
47
+ .map(a => `- [${a.id}] (${a.category}) ${a.key}: ${a.content}`)
48
+ .join('\n');
49
+ let prompt = `**Atomic facts to organize:**\n${atomsText}\n`;
50
+ if (existingScenes.length > 0) {
51
+ const scenesText = existingScenes
52
+ .map(s => `- ${s.sceneId}: ${s.title} (${s.atomIds.length} atoms)`)
53
+ .join('\n');
54
+ prompt += `\n**Existing scenes (merge/update as needed):**\n${scenesText}\n`;
55
+ }
56
+ prompt += `\nGroup these facts into at most ${this.maxScenes} thematic scenarios. Output ONLY a JSON array.`;
57
+ return prompt;
58
+ }
59
+ async callLLM(userPrompt) {
60
+ const messages = [
61
+ { role: 'system', content: prompts_ts_1.SCENE_AGGREGATION_SYSTEM_PROMPT },
62
+ { role: 'user', content: userPrompt },
63
+ ];
64
+ const chunks = [];
65
+ const stream = this.llmProvider.chatStream({
66
+ messages,
67
+ abortSignal: AbortSignal.timeout(this.timeoutMs),
68
+ });
69
+ for await (const chunk of stream) {
70
+ if (chunk.delta.content) {
71
+ chunks.push(chunk.delta.content);
72
+ }
73
+ }
74
+ return chunks.join('');
75
+ }
76
+ parseScenes(raw) {
77
+ const jsonMatch = raw.match(/\[[\s\S]*\]/);
78
+ if (!jsonMatch)
79
+ return [];
80
+ try {
81
+ const parsed = JSON.parse(jsonMatch[0]);
82
+ if (!Array.isArray(parsed))
83
+ return [];
84
+ return parsed
85
+ .filter((item) => item.sceneId && item.title)
86
+ .slice(0, this.maxScenes)
87
+ .map((item) => ({
88
+ sceneId: String(item.sceneId).replace(/[^a-z0-9_]/g, '_').toLowerCase(),
89
+ title: String(item.title),
90
+ description: String(item.description || ''),
91
+ atomIds: Array.isArray(item.atomIds) ? item.atomIds.map(String) : [],
92
+ }));
93
+ }
94
+ catch {
95
+ console.warn('[SceneAggregator] Failed to parse LLM output');
96
+ return [];
97
+ }
98
+ }
99
+ }
100
+ exports.SceneAggregator = SceneAggregator;
101
+ //# sourceMappingURL=scene.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scene.js","sourceRoot":"","sources":["../../../src/memory/scene.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/memory/types.ts"],"names":[],"mappings":"AAIA,WAAW;AACX,MAAM,MAAM,WAAW,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAEpD,wDAAwD;AACxD,MAAM,WAAW,WAAW;IAC1B,sBAAsB;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,yFAAyF;IACzF,QAAQ,EAAE,MAAM,CAAC;IACjB,qBAAqB;IACrB,GAAG,EAAE,MAAM,CAAC;IACZ,WAAW;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,oBAAoB;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,oBAAoB;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,sBAAsB;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,gDAAgD;IAChD,WAAW,EAAE,WAAW,CAAC;IACzB,uBAAuB;IACvB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,qBAAqB;IACrB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,sBAAsB;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,+CAA+C;IAC/C,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,wBAAwB;IACxB,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,sBAAsB;IACtB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;CACtB;AAED;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC,OAAO,IAAI,MAAM,EAAE,CAAC;IACpB,aAAa,CAAC,KAAK,CAAC,EAAE,WAAW,GAAG,WAAW,EAAE,CAAC;IAClD,IAAI,CACF,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,EAClB,MAAM,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,aAAa,GAAG,iBAAiB,GAAG,iBAAiB,GAAG,SAAS,GAAG,aAAa,GAAG,WAAW,CAAC,CAAC,GACnI,WAAW,CAAC;CAChB"}
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ // ============================================================
3
+ // Memory 模块类型定义(独立于上层 MemoryService 实现)
4
+ // ============================================================
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/memory/types.ts"],"names":[],"mappings":";AAAA,+DAA+D;AAC/D,wCAAwC;AACxC,+DAA+D"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/middleware/types.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAIjE;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC,YAAY;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,mBAAmB;IACnB,QAAQ,EAAE,aAAa,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC,CAAC;IAClE,eAAe;IACf,SAAS,EAAE,MAAM,CAAC;CACnB;AAID;;;;;;;;GAQG;AACH,MAAM,WAAW,UAAU;IACzB,qBAAqB;IACrB,IAAI,EAAE,MAAM,CAAC;IAEb;;;OAGG;IACH,MAAM,CAAC,CAAC,GAAG,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE/C;;;OAGG;IACH,KAAK,CAAC,CAAC,GAAG,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE9C;;;OAGG;IACH,YAAY,CAAC,CAAC,GAAG,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC;IAE5D;;;OAGG;IACH,WAAW,CAAC,CAAC,GAAG,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC;CAC5D"}
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ // ============================================================
3
+ // Middleware — 中间件管道类型定义
4
+ // ============================================================
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ //# sourceMappingURL=types.js.map