@mcp-abap-adt/llm-agent-server 12.0.2 → 12.0.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 (555) hide show
  1. package/dist/agent.d.ts +1 -1
  2. package/dist/agent.d.ts.map +1 -1
  3. package/dist/agent.js +1 -1
  4. package/dist/agent.js.map +1 -1
  5. package/dist/generated/version.d.ts +1 -1
  6. package/dist/generated/version.js +1 -1
  7. package/dist/index.d.ts +1 -64
  8. package/dist/index.d.ts.map +1 -1
  9. package/dist/index.js +1 -61
  10. package/dist/index.js.map +1 -1
  11. package/dist/smart-agent/cli.js +1 -2
  12. package/dist/smart-agent/cli.js.map +1 -1
  13. package/dist/smart-agent/pipeline.d.ts +1 -1
  14. package/dist/smart-agent/pipeline.d.ts.map +1 -1
  15. package/dist/smart-agent/server.d.ts +1 -1
  16. package/dist/smart-agent/server.d.ts.map +1 -1
  17. package/dist/smart-agent/smart-server.d.ts +2 -3
  18. package/dist/smart-agent/smart-server.d.ts.map +1 -1
  19. package/dist/smart-agent/smart-server.js +11 -18
  20. package/dist/smart-agent/smart-server.js.map +1 -1
  21. package/dist/smoke-adapters.js +2 -4
  22. package/dist/smoke-adapters.js.map +1 -1
  23. package/package.json +15 -15
  24. package/dist/agents/anthropic-agent.d.ts +0 -33
  25. package/dist/agents/anthropic-agent.d.ts.map +0 -1
  26. package/dist/agents/anthropic-agent.js +0 -138
  27. package/dist/agents/anthropic-agent.js.map +0 -1
  28. package/dist/agents/base.d.ts +0 -90
  29. package/dist/agents/base.d.ts.map +0 -1
  30. package/dist/agents/base.js +0 -107
  31. package/dist/agents/base.js.map +0 -1
  32. package/dist/agents/deepseek-agent.d.ts +0 -31
  33. package/dist/agents/deepseek-agent.d.ts.map +0 -1
  34. package/dist/agents/deepseek-agent.js +0 -121
  35. package/dist/agents/deepseek-agent.js.map +0 -1
  36. package/dist/agents/index.d.ts +0 -10
  37. package/dist/agents/index.d.ts.map +0 -1
  38. package/dist/agents/index.js +0 -10
  39. package/dist/agents/index.js.map +0 -1
  40. package/dist/agents/openai-agent.d.ts +0 -32
  41. package/dist/agents/openai-agent.d.ts.map +0 -1
  42. package/dist/agents/openai-agent.js +0 -122
  43. package/dist/agents/openai-agent.js.map +0 -1
  44. package/dist/agents/prompt-based-agent.d.ts +0 -28
  45. package/dist/agents/prompt-based-agent.d.ts.map +0 -1
  46. package/dist/agents/prompt-based-agent.js +0 -67
  47. package/dist/agents/prompt-based-agent.js.map +0 -1
  48. package/dist/agents/sap-core-ai-agent.d.ts +0 -41
  49. package/dist/agents/sap-core-ai-agent.d.ts.map +0 -1
  50. package/dist/agents/sap-core-ai-agent.js +0 -151
  51. package/dist/agents/sap-core-ai-agent.js.map +0 -1
  52. package/dist/cli.d.ts +0 -53
  53. package/dist/cli.d.ts.map +0 -1
  54. package/dist/cli.js +0 -338
  55. package/dist/cli.js.map +0 -1
  56. package/dist/llm-providers/anthropic.d.ts +0 -25
  57. package/dist/llm-providers/anthropic.d.ts.map +0 -1
  58. package/dist/llm-providers/anthropic.js +0 -202
  59. package/dist/llm-providers/anthropic.js.map +0 -1
  60. package/dist/llm-providers/base.d.ts +0 -33
  61. package/dist/llm-providers/base.d.ts.map +0 -1
  62. package/dist/llm-providers/base.js +0 -18
  63. package/dist/llm-providers/base.js.map +0 -1
  64. package/dist/llm-providers/deepseek.d.ts +0 -24
  65. package/dist/llm-providers/deepseek.d.ts.map +0 -1
  66. package/dist/llm-providers/deepseek.js +0 -60
  67. package/dist/llm-providers/deepseek.js.map +0 -1
  68. package/dist/llm-providers/index.d.ts +0 -13
  69. package/dist/llm-providers/index.d.ts.map +0 -1
  70. package/dist/llm-providers/index.js +0 -15
  71. package/dist/llm-providers/index.js.map +0 -1
  72. package/dist/llm-providers/openai.d.ts +0 -34
  73. package/dist/llm-providers/openai.d.ts.map +0 -1
  74. package/dist/llm-providers/openai.js +0 -193
  75. package/dist/llm-providers/openai.js.map +0 -1
  76. package/dist/llm-providers/sap-core-ai.d.ts +0 -90
  77. package/dist/llm-providers/sap-core-ai.d.ts.map +0 -1
  78. package/dist/llm-providers/sap-core-ai.js +0 -394
  79. package/dist/llm-providers/sap-core-ai.js.map +0 -1
  80. package/dist/mcp/client.d.ts +0 -133
  81. package/dist/mcp/client.d.ts.map +0 -1
  82. package/dist/mcp/client.js +0 -314
  83. package/dist/mcp/client.js.map +0 -1
  84. package/dist/smart-agent/adapters/cline-client-adapter.d.ts +0 -18
  85. package/dist/smart-agent/adapters/cline-client-adapter.d.ts.map +0 -1
  86. package/dist/smart-agent/adapters/cline-client-adapter.js +0 -21
  87. package/dist/smart-agent/adapters/cline-client-adapter.js.map +0 -1
  88. package/dist/smart-agent/adapters/index.d.ts +0 -4
  89. package/dist/smart-agent/adapters/index.d.ts.map +0 -1
  90. package/dist/smart-agent/adapters/index.js +0 -4
  91. package/dist/smart-agent/adapters/index.js.map +0 -1
  92. package/dist/smart-agent/adapters/llm-adapter.d.ts +0 -39
  93. package/dist/smart-agent/adapters/llm-adapter.d.ts.map +0 -1
  94. package/dist/smart-agent/adapters/llm-adapter.js +0 -345
  95. package/dist/smart-agent/adapters/llm-adapter.js.map +0 -1
  96. package/dist/smart-agent/adapters/llm-provider-bridge.d.ts +0 -31
  97. package/dist/smart-agent/adapters/llm-provider-bridge.d.ts.map +0 -1
  98. package/dist/smart-agent/adapters/llm-provider-bridge.js +0 -122
  99. package/dist/smart-agent/adapters/llm-provider-bridge.js.map +0 -1
  100. package/dist/smart-agent/adapters/mcp-client-adapter.d.ts +0 -16
  101. package/dist/smart-agent/adapters/mcp-client-adapter.d.ts.map +0 -1
  102. package/dist/smart-agent/adapters/mcp-client-adapter.js +0 -95
  103. package/dist/smart-agent/adapters/mcp-client-adapter.js.map +0 -1
  104. package/dist/smart-agent/adapters/non-streaming-llm.d.ts +0 -18
  105. package/dist/smart-agent/adapters/non-streaming-llm.d.ts.map +0 -1
  106. package/dist/smart-agent/adapters/non-streaming-llm.js +0 -44
  107. package/dist/smart-agent/adapters/non-streaming-llm.js.map +0 -1
  108. package/dist/smart-agent/agent.d.ts +0 -227
  109. package/dist/smart-agent/agent.d.ts.map +0 -1
  110. package/dist/smart-agent/agent.js +0 -1534
  111. package/dist/smart-agent/agent.js.map +0 -1
  112. package/dist/smart-agent/api-adapters/anthropic-adapter.d.ts +0 -10
  113. package/dist/smart-agent/api-adapters/anthropic-adapter.d.ts.map +0 -1
  114. package/dist/smart-agent/api-adapters/anthropic-adapter.js +0 -356
  115. package/dist/smart-agent/api-adapters/anthropic-adapter.js.map +0 -1
  116. package/dist/smart-agent/api-adapters/index.d.ts +0 -3
  117. package/dist/smart-agent/api-adapters/index.d.ts.map +0 -1
  118. package/dist/smart-agent/api-adapters/index.js +0 -3
  119. package/dist/smart-agent/api-adapters/index.js.map +0 -1
  120. package/dist/smart-agent/api-adapters/openai-adapter.d.ts +0 -10
  121. package/dist/smart-agent/api-adapters/openai-adapter.d.ts.map +0 -1
  122. package/dist/smart-agent/api-adapters/openai-adapter.js +0 -277
  123. package/dist/smart-agent/api-adapters/openai-adapter.js.map +0 -1
  124. package/dist/smart-agent/builder.d.ts +0 -276
  125. package/dist/smart-agent/builder.d.ts.map +0 -1
  126. package/dist/smart-agent/builder.js +0 -950
  127. package/dist/smart-agent/builder.js.map +0 -1
  128. package/dist/smart-agent/cache/index.d.ts +0 -4
  129. package/dist/smart-agent/cache/index.d.ts.map +0 -1
  130. package/dist/smart-agent/cache/index.js +0 -3
  131. package/dist/smart-agent/cache/index.js.map +0 -1
  132. package/dist/smart-agent/cache/noop-tool-cache.d.ts +0 -7
  133. package/dist/smart-agent/cache/noop-tool-cache.d.ts.map +0 -1
  134. package/dist/smart-agent/cache/noop-tool-cache.js +0 -8
  135. package/dist/smart-agent/cache/noop-tool-cache.js.map +0 -1
  136. package/dist/smart-agent/cache/tool-cache.d.ts +0 -14
  137. package/dist/smart-agent/cache/tool-cache.d.ts.map +0 -1
  138. package/dist/smart-agent/cache/tool-cache.js +0 -32
  139. package/dist/smart-agent/cache/tool-cache.js.map +0 -1
  140. package/dist/smart-agent/cache/types.d.ts +0 -7
  141. package/dist/smart-agent/cache/types.d.ts.map +0 -1
  142. package/dist/smart-agent/cache/types.js +0 -2
  143. package/dist/smart-agent/cache/types.js.map +0 -1
  144. package/dist/smart-agent/classifier/index.d.ts +0 -3
  145. package/dist/smart-agent/classifier/index.d.ts.map +0 -1
  146. package/dist/smart-agent/classifier/index.js +0 -2
  147. package/dist/smart-agent/classifier/index.js.map +0 -1
  148. package/dist/smart-agent/classifier/llm-classifier.d.ts +0 -20
  149. package/dist/smart-agent/classifier/llm-classifier.d.ts.map +0 -1
  150. package/dist/smart-agent/classifier/llm-classifier.js +0 -128
  151. package/dist/smart-agent/classifier/llm-classifier.js.map +0 -1
  152. package/dist/smart-agent/config/config-watcher.d.ts +0 -54
  153. package/dist/smart-agent/config/config-watcher.d.ts.map +0 -1
  154. package/dist/smart-agent/config/config-watcher.js +0 -107
  155. package/dist/smart-agent/config/config-watcher.js.map +0 -1
  156. package/dist/smart-agent/config/index.d.ts +0 -2
  157. package/dist/smart-agent/config/index.d.ts.map +0 -1
  158. package/dist/smart-agent/config/index.js +0 -2
  159. package/dist/smart-agent/config/index.js.map +0 -1
  160. package/dist/smart-agent/context/context-assembler.d.ts +0 -49
  161. package/dist/smart-agent/context/context-assembler.d.ts.map +0 -1
  162. package/dist/smart-agent/context/context-assembler.js +0 -184
  163. package/dist/smart-agent/context/context-assembler.js.map +0 -1
  164. package/dist/smart-agent/context/index.d.ts +0 -3
  165. package/dist/smart-agent/context/index.d.ts.map +0 -1
  166. package/dist/smart-agent/context/index.js +0 -2
  167. package/dist/smart-agent/context/index.js.map +0 -1
  168. package/dist/smart-agent/embedder-factories.d.ts +0 -14
  169. package/dist/smart-agent/embedder-factories.d.ts.map +0 -1
  170. package/dist/smart-agent/embedder-factories.js +0 -61
  171. package/dist/smart-agent/embedder-factories.js.map +0 -1
  172. package/dist/smart-agent/health/health-checker.d.ts +0 -21
  173. package/dist/smart-agent/health/health-checker.d.ts.map +0 -1
  174. package/dist/smart-agent/health/health-checker.js +0 -52
  175. package/dist/smart-agent/health/health-checker.js.map +0 -1
  176. package/dist/smart-agent/health/index.d.ts +0 -3
  177. package/dist/smart-agent/health/index.d.ts.map +0 -1
  178. package/dist/smart-agent/health/index.js +0 -2
  179. package/dist/smart-agent/health/index.js.map +0 -1
  180. package/dist/smart-agent/health/types.d.ts +0 -25
  181. package/dist/smart-agent/health/types.d.ts.map +0 -1
  182. package/dist/smart-agent/health/types.js +0 -2
  183. package/dist/smart-agent/health/types.js.map +0 -1
  184. package/dist/smart-agent/history/history-memory.d.ts +0 -12
  185. package/dist/smart-agent/history/history-memory.d.ts.map +0 -1
  186. package/dist/smart-agent/history/history-memory.js +0 -26
  187. package/dist/smart-agent/history/history-memory.js.map +0 -1
  188. package/dist/smart-agent/history/history-summarizer.d.ts +0 -10
  189. package/dist/smart-agent/history/history-summarizer.d.ts.map +0 -1
  190. package/dist/smart-agent/history/history-summarizer.js +0 -27
  191. package/dist/smart-agent/history/history-summarizer.js.map +0 -1
  192. package/dist/smart-agent/history/index.d.ts +0 -3
  193. package/dist/smart-agent/history/index.d.ts.map +0 -1
  194. package/dist/smart-agent/history/index.js +0 -3
  195. package/dist/smart-agent/history/index.js.map +0 -1
  196. package/dist/smart-agent/interfaces/api-adapter.d.ts +0 -36
  197. package/dist/smart-agent/interfaces/api-adapter.d.ts.map +0 -1
  198. package/dist/smart-agent/interfaces/api-adapter.js +0 -9
  199. package/dist/smart-agent/interfaces/api-adapter.js.map +0 -1
  200. package/dist/smart-agent/interfaces/client-adapter.d.ts +0 -23
  201. package/dist/smart-agent/interfaces/client-adapter.d.ts.map +0 -1
  202. package/dist/smart-agent/interfaces/client-adapter.js +0 -10
  203. package/dist/smart-agent/interfaces/client-adapter.js.map +0 -1
  204. package/dist/smart-agent/interfaces/mcp-connection-strategy.d.ts +0 -26
  205. package/dist/smart-agent/interfaces/mcp-connection-strategy.d.ts.map +0 -1
  206. package/dist/smart-agent/interfaces/mcp-connection-strategy.js +0 -2
  207. package/dist/smart-agent/interfaces/mcp-connection-strategy.js.map +0 -1
  208. package/dist/smart-agent/interfaces/model-resolver.d.ts +0 -9
  209. package/dist/smart-agent/interfaces/model-resolver.d.ts.map +0 -1
  210. package/dist/smart-agent/interfaces/model-resolver.js +0 -2
  211. package/dist/smart-agent/interfaces/model-resolver.js.map +0 -1
  212. package/dist/smart-agent/interfaces/pipeline.d.ts +0 -123
  213. package/dist/smart-agent/interfaces/pipeline.d.ts.map +0 -1
  214. package/dist/smart-agent/interfaces/pipeline.js +0 -13
  215. package/dist/smart-agent/interfaces/pipeline.js.map +0 -1
  216. package/dist/smart-agent/logger/console-logger.d.ts +0 -7
  217. package/dist/smart-agent/logger/console-logger.d.ts.map +0 -1
  218. package/dist/smart-agent/logger/console-logger.js +0 -12
  219. package/dist/smart-agent/logger/console-logger.js.map +0 -1
  220. package/dist/smart-agent/logger/default-request-logger.d.ts +0 -17
  221. package/dist/smart-agent/logger/default-request-logger.d.ts.map +0 -1
  222. package/dist/smart-agent/logger/default-request-logger.js +0 -86
  223. package/dist/smart-agent/logger/default-request-logger.js.map +0 -1
  224. package/dist/smart-agent/logger/index.d.ts +0 -3
  225. package/dist/smart-agent/logger/index.d.ts.map +0 -1
  226. package/dist/smart-agent/logger/index.js +0 -2
  227. package/dist/smart-agent/logger/index.js.map +0 -1
  228. package/dist/smart-agent/logger/noop-request-logger.d.ts +0 -11
  229. package/dist/smart-agent/logger/noop-request-logger.d.ts.map +0 -1
  230. package/dist/smart-agent/logger/noop-request-logger.js +0 -20
  231. package/dist/smart-agent/logger/noop-request-logger.js.map +0 -1
  232. package/dist/smart-agent/logger/session-logger.d.ts +0 -10
  233. package/dist/smart-agent/logger/session-logger.d.ts.map +0 -1
  234. package/dist/smart-agent/logger/session-logger.js +0 -40
  235. package/dist/smart-agent/logger/session-logger.js.map +0 -1
  236. package/dist/smart-agent/logger/types.d.ts +0 -63
  237. package/dist/smart-agent/logger/types.d.ts.map +0 -1
  238. package/dist/smart-agent/logger/types.js +0 -2
  239. package/dist/smart-agent/logger/types.js.map +0 -1
  240. package/dist/smart-agent/mcp-client-factory.d.ts +0 -3
  241. package/dist/smart-agent/mcp-client-factory.d.ts.map +0 -1
  242. package/dist/smart-agent/mcp-client-factory.js +0 -21
  243. package/dist/smart-agent/mcp-client-factory.js.map +0 -1
  244. package/dist/smart-agent/metrics/in-memory-metrics.d.ts +0 -58
  245. package/dist/smart-agent/metrics/in-memory-metrics.d.ts.map +0 -1
  246. package/dist/smart-agent/metrics/in-memory-metrics.js +0 -78
  247. package/dist/smart-agent/metrics/in-memory-metrics.js.map +0 -1
  248. package/dist/smart-agent/metrics/index.d.ts +0 -4
  249. package/dist/smart-agent/metrics/index.d.ts.map +0 -1
  250. package/dist/smart-agent/metrics/index.js +0 -3
  251. package/dist/smart-agent/metrics/index.js.map +0 -1
  252. package/dist/smart-agent/metrics/noop-metrics.d.ts +0 -17
  253. package/dist/smart-agent/metrics/noop-metrics.d.ts.map +0 -1
  254. package/dist/smart-agent/metrics/noop-metrics.js +0 -22
  255. package/dist/smart-agent/metrics/noop-metrics.js.map +0 -1
  256. package/dist/smart-agent/metrics/types.d.ts +0 -36
  257. package/dist/smart-agent/metrics/types.d.ts.map +0 -1
  258. package/dist/smart-agent/metrics/types.js +0 -9
  259. package/dist/smart-agent/metrics/types.js.map +0 -1
  260. package/dist/smart-agent/otel/index.d.ts +0 -2
  261. package/dist/smart-agent/otel/index.d.ts.map +0 -1
  262. package/dist/smart-agent/otel/index.js +0 -2
  263. package/dist/smart-agent/otel/index.js.map +0 -1
  264. package/dist/smart-agent/otel/otel-tracer-adapter.d.ts +0 -15
  265. package/dist/smart-agent/otel/otel-tracer-adapter.d.ts.map +0 -1
  266. package/dist/smart-agent/otel/otel-tracer-adapter.js +0 -62
  267. package/dist/smart-agent/otel/otel-tracer-adapter.js.map +0 -1
  268. package/dist/smart-agent/pipeline/condition-evaluator.d.ts +0 -35
  269. package/dist/smart-agent/pipeline/condition-evaluator.d.ts.map +0 -1
  270. package/dist/smart-agent/pipeline/condition-evaluator.js +0 -143
  271. package/dist/smart-agent/pipeline/condition-evaluator.js.map +0 -1
  272. package/dist/smart-agent/pipeline/context.d.ts +0 -119
  273. package/dist/smart-agent/pipeline/context.d.ts.map +0 -1
  274. package/dist/smart-agent/pipeline/context.js +0 -19
  275. package/dist/smart-agent/pipeline/context.js.map +0 -1
  276. package/dist/smart-agent/pipeline/default-pipeline.d.ts +0 -69
  277. package/dist/smart-agent/pipeline/default-pipeline.d.ts.map +0 -1
  278. package/dist/smart-agent/pipeline/default-pipeline.js +0 -276
  279. package/dist/smart-agent/pipeline/default-pipeline.js.map +0 -1
  280. package/dist/smart-agent/pipeline/executor.d.ts +0 -54
  281. package/dist/smart-agent/pipeline/executor.d.ts.map +0 -1
  282. package/dist/smart-agent/pipeline/executor.js +0 -133
  283. package/dist/smart-agent/pipeline/executor.js.map +0 -1
  284. package/dist/smart-agent/pipeline/handlers/assemble.d.ts +0 -16
  285. package/dist/smart-agent/pipeline/handlers/assemble.d.ts.map +0 -1
  286. package/dist/smart-agent/pipeline/handlers/assemble.js +0 -72
  287. package/dist/smart-agent/pipeline/handlers/assemble.js.map +0 -1
  288. package/dist/smart-agent/pipeline/handlers/build-tool-query.d.ts +0 -30
  289. package/dist/smart-agent/pipeline/handlers/build-tool-query.d.ts.map +0 -1
  290. package/dist/smart-agent/pipeline/handlers/build-tool-query.js +0 -80
  291. package/dist/smart-agent/pipeline/handlers/build-tool-query.js.map +0 -1
  292. package/dist/smart-agent/pipeline/handlers/classify.d.ts +0 -21
  293. package/dist/smart-agent/pipeline/handlers/classify.d.ts.map +0 -1
  294. package/dist/smart-agent/pipeline/handlers/classify.js +0 -60
  295. package/dist/smart-agent/pipeline/handlers/classify.js.map +0 -1
  296. package/dist/smart-agent/pipeline/handlers/expand.d.ts +0 -16
  297. package/dist/smart-agent/pipeline/handlers/expand.d.ts.map +0 -1
  298. package/dist/smart-agent/pipeline/handlers/expand.js +0 -24
  299. package/dist/smart-agent/pipeline/handlers/expand.js.map +0 -1
  300. package/dist/smart-agent/pipeline/handlers/history-upsert.d.ts +0 -29
  301. package/dist/smart-agent/pipeline/handlers/history-upsert.d.ts.map +0 -1
  302. package/dist/smart-agent/pipeline/handlers/history-upsert.js +0 -75
  303. package/dist/smart-agent/pipeline/handlers/history-upsert.js.map +0 -1
  304. package/dist/smart-agent/pipeline/handlers/index.d.ts +0 -31
  305. package/dist/smart-agent/pipeline/handlers/index.d.ts.map +0 -1
  306. package/dist/smart-agent/pipeline/handlers/index.js +0 -44
  307. package/dist/smart-agent/pipeline/handlers/index.js.map +0 -1
  308. package/dist/smart-agent/pipeline/handlers/rag-query.d.ts +0 -27
  309. package/dist/smart-agent/pipeline/handlers/rag-query.d.ts.map +0 -1
  310. package/dist/smart-agent/pipeline/handlers/rag-query.js +0 -117
  311. package/dist/smart-agent/pipeline/handlers/rag-query.js.map +0 -1
  312. package/dist/smart-agent/pipeline/handlers/rerank.d.ts +0 -16
  313. package/dist/smart-agent/pipeline/handlers/rerank.d.ts.map +0 -1
  314. package/dist/smart-agent/pipeline/handlers/rerank.js +0 -27
  315. package/dist/smart-agent/pipeline/handlers/rerank.js.map +0 -1
  316. package/dist/smart-agent/pipeline/handlers/skill-select.d.ts +0 -18
  317. package/dist/smart-agent/pipeline/handlers/skill-select.d.ts.map +0 -1
  318. package/dist/smart-agent/pipeline/handlers/skill-select.js +0 -88
  319. package/dist/smart-agent/pipeline/handlers/skill-select.js.map +0 -1
  320. package/dist/smart-agent/pipeline/handlers/summarize.d.ts +0 -17
  321. package/dist/smart-agent/pipeline/handlers/summarize.d.ts.map +0 -1
  322. package/dist/smart-agent/pipeline/handlers/summarize.js +0 -56
  323. package/dist/smart-agent/pipeline/handlers/summarize.js.map +0 -1
  324. package/dist/smart-agent/pipeline/handlers/tool-loop.d.ts +0 -32
  325. package/dist/smart-agent/pipeline/handlers/tool-loop.d.ts.map +0 -1
  326. package/dist/smart-agent/pipeline/handlers/tool-loop.js +0 -734
  327. package/dist/smart-agent/pipeline/handlers/tool-loop.js.map +0 -1
  328. package/dist/smart-agent/pipeline/handlers/tool-select.d.ts +0 -21
  329. package/dist/smart-agent/pipeline/handlers/tool-select.d.ts.map +0 -1
  330. package/dist/smart-agent/pipeline/handlers/tool-select.js +0 -109
  331. package/dist/smart-agent/pipeline/handlers/tool-select.js.map +0 -1
  332. package/dist/smart-agent/pipeline/handlers/translate.d.ts +0 -17
  333. package/dist/smart-agent/pipeline/handlers/translate.d.ts.map +0 -1
  334. package/dist/smart-agent/pipeline/handlers/translate.js +0 -42
  335. package/dist/smart-agent/pipeline/handlers/translate.js.map +0 -1
  336. package/dist/smart-agent/pipeline/index.d.ts +0 -14
  337. package/dist/smart-agent/pipeline/index.d.ts.map +0 -1
  338. package/dist/smart-agent/pipeline/index.js +0 -16
  339. package/dist/smart-agent/pipeline/index.js.map +0 -1
  340. package/dist/smart-agent/pipeline/stage-handler.d.ts +0 -36
  341. package/dist/smart-agent/pipeline/stage-handler.d.ts.map +0 -1
  342. package/dist/smart-agent/pipeline/stage-handler.js +0 -24
  343. package/dist/smart-agent/pipeline/stage-handler.js.map +0 -1
  344. package/dist/smart-agent/pipeline/types.d.ts +0 -116
  345. package/dist/smart-agent/pipeline/types.d.ts.map +0 -1
  346. package/dist/smart-agent/pipeline/types.js +0 -54
  347. package/dist/smart-agent/pipeline/types.js.map +0 -1
  348. package/dist/smart-agent/plugins/index.d.ts +0 -4
  349. package/dist/smart-agent/plugins/index.d.ts.map +0 -1
  350. package/dist/smart-agent/plugins/index.js +0 -3
  351. package/dist/smart-agent/plugins/index.js.map +0 -1
  352. package/dist/smart-agent/plugins/loader.d.ts +0 -67
  353. package/dist/smart-agent/plugins/loader.d.ts.map +0 -1
  354. package/dist/smart-agent/plugins/loader.js +0 -114
  355. package/dist/smart-agent/plugins/loader.js.map +0 -1
  356. package/dist/smart-agent/plugins/types.d.ts +0 -162
  357. package/dist/smart-agent/plugins/types.d.ts.map +0 -1
  358. package/dist/smart-agent/plugins/types.js +0 -136
  359. package/dist/smart-agent/plugins/types.js.map +0 -1
  360. package/dist/smart-agent/policy/fallback-llm-call-strategy.d.ts +0 -16
  361. package/dist/smart-agent/policy/fallback-llm-call-strategy.d.ts.map +0 -1
  362. package/dist/smart-agent/policy/fallback-llm-call-strategy.js +0 -66
  363. package/dist/smart-agent/policy/fallback-llm-call-strategy.js.map +0 -1
  364. package/dist/smart-agent/policy/heuristic-injection-detector.d.ts +0 -5
  365. package/dist/smart-agent/policy/heuristic-injection-detector.d.ts.map +0 -1
  366. package/dist/smart-agent/policy/heuristic-injection-detector.js +0 -36
  367. package/dist/smart-agent/policy/heuristic-injection-detector.js.map +0 -1
  368. package/dist/smart-agent/policy/index.d.ts +0 -6
  369. package/dist/smart-agent/policy/index.d.ts.map +0 -1
  370. package/dist/smart-agent/policy/index.js +0 -5
  371. package/dist/smart-agent/policy/index.js.map +0 -1
  372. package/dist/smart-agent/policy/mixed-tool-call-handler.d.ts +0 -15
  373. package/dist/smart-agent/policy/mixed-tool-call-handler.d.ts.map +0 -1
  374. package/dist/smart-agent/policy/mixed-tool-call-handler.js +0 -49
  375. package/dist/smart-agent/policy/mixed-tool-call-handler.js.map +0 -1
  376. package/dist/smart-agent/policy/non-streaming-llm-call-strategy.d.ts +0 -6
  377. package/dist/smart-agent/policy/non-streaming-llm-call-strategy.d.ts.map +0 -1
  378. package/dist/smart-agent/policy/non-streaming-llm-call-strategy.js +0 -21
  379. package/dist/smart-agent/policy/non-streaming-llm-call-strategy.js.map +0 -1
  380. package/dist/smart-agent/policy/pending-tool-results-registry.d.ts +0 -25
  381. package/dist/smart-agent/policy/pending-tool-results-registry.d.ts.map +0 -1
  382. package/dist/smart-agent/policy/pending-tool-results-registry.js +0 -50
  383. package/dist/smart-agent/policy/pending-tool-results-registry.js.map +0 -1
  384. package/dist/smart-agent/policy/streaming-llm-call-strategy.d.ts +0 -6
  385. package/dist/smart-agent/policy/streaming-llm-call-strategy.d.ts.map +0 -1
  386. package/dist/smart-agent/policy/streaming-llm-call-strategy.js +0 -7
  387. package/dist/smart-agent/policy/streaming-llm-call-strategy.js.map +0 -1
  388. package/dist/smart-agent/policy/tool-availability-registry.d.ts +0 -21
  389. package/dist/smart-agent/policy/tool-availability-registry.d.ts.map +0 -1
  390. package/dist/smart-agent/policy/tool-availability-registry.js +0 -77
  391. package/dist/smart-agent/policy/tool-availability-registry.js.map +0 -1
  392. package/dist/smart-agent/policy/tool-policy-guard.d.ts +0 -8
  393. package/dist/smart-agent/policy/tool-policy-guard.d.ts.map +0 -1
  394. package/dist/smart-agent/policy/tool-policy-guard.js +0 -40
  395. package/dist/smart-agent/policy/tool-policy-guard.js.map +0 -1
  396. package/dist/smart-agent/policy/types.d.ts +0 -51
  397. package/dist/smart-agent/policy/types.d.ts.map +0 -1
  398. package/dist/smart-agent/policy/types.js +0 -17
  399. package/dist/smart-agent/policy/types.js.map +0 -1
  400. package/dist/smart-agent/providers.d.ts +0 -124
  401. package/dist/smart-agent/providers.d.ts.map +0 -1
  402. package/dist/smart-agent/providers.js +0 -276
  403. package/dist/smart-agent/providers.js.map +0 -1
  404. package/dist/smart-agent/rag-factories.d.ts +0 -31
  405. package/dist/smart-agent/rag-factories.d.ts.map +0 -1
  406. package/dist/smart-agent/rag-factories.js +0 -53
  407. package/dist/smart-agent/rag-factories.js.map +0 -1
  408. package/dist/smart-agent/reranker/index.d.ts +0 -4
  409. package/dist/smart-agent/reranker/index.d.ts.map +0 -1
  410. package/dist/smart-agent/reranker/index.js +0 -3
  411. package/dist/smart-agent/reranker/index.js.map +0 -1
  412. package/dist/smart-agent/reranker/llm-reranker.d.ts +0 -10
  413. package/dist/smart-agent/reranker/llm-reranker.d.ts.map +0 -1
  414. package/dist/smart-agent/reranker/llm-reranker.js +0 -55
  415. package/dist/smart-agent/reranker/llm-reranker.js.map +0 -1
  416. package/dist/smart-agent/reranker/noop-reranker.d.ts +0 -6
  417. package/dist/smart-agent/reranker/noop-reranker.d.ts.map +0 -1
  418. package/dist/smart-agent/reranker/noop-reranker.js +0 -6
  419. package/dist/smart-agent/reranker/noop-reranker.js.map +0 -1
  420. package/dist/smart-agent/reranker/types.d.ts +0 -5
  421. package/dist/smart-agent/reranker/types.d.ts.map +0 -1
  422. package/dist/smart-agent/reranker/types.js +0 -2
  423. package/dist/smart-agent/reranker/types.js.map +0 -1
  424. package/dist/smart-agent/resilience/circuit-breaker-embedder.d.ts +0 -16
  425. package/dist/smart-agent/resilience/circuit-breaker-embedder.d.ts.map +0 -1
  426. package/dist/smart-agent/resilience/circuit-breaker-embedder.js +0 -47
  427. package/dist/smart-agent/resilience/circuit-breaker-embedder.js.map +0 -1
  428. package/dist/smart-agent/resilience/circuit-breaker-llm.d.ts +0 -19
  429. package/dist/smart-agent/resilience/circuit-breaker-llm.d.ts.map +0 -1
  430. package/dist/smart-agent/resilience/circuit-breaker-llm.js +0 -72
  431. package/dist/smart-agent/resilience/circuit-breaker-llm.js.map +0 -1
  432. package/dist/smart-agent/resilience/circuit-breaker.d.ts +0 -36
  433. package/dist/smart-agent/resilience/circuit-breaker.d.ts.map +0 -1
  434. package/dist/smart-agent/resilience/circuit-breaker.js +0 -60
  435. package/dist/smart-agent/resilience/circuit-breaker.js.map +0 -1
  436. package/dist/smart-agent/resilience/fallback-rag.d.ts +0 -21
  437. package/dist/smart-agent/resilience/fallback-rag.d.ts.map +0 -1
  438. package/dist/smart-agent/resilience/fallback-rag.js +0 -80
  439. package/dist/smart-agent/resilience/fallback-rag.js.map +0 -1
  440. package/dist/smart-agent/resilience/index.d.ts +0 -5
  441. package/dist/smart-agent/resilience/index.d.ts.map +0 -1
  442. package/dist/smart-agent/resilience/index.js +0 -5
  443. package/dist/smart-agent/resilience/index.js.map +0 -1
  444. package/dist/smart-agent/resilience/rate-limiter-llm.d.ts +0 -17
  445. package/dist/smart-agent/resilience/rate-limiter-llm.d.ts.map +0 -1
  446. package/dist/smart-agent/resilience/rate-limiter-llm.js +0 -30
  447. package/dist/smart-agent/resilience/rate-limiter-llm.js.map +0 -1
  448. package/dist/smart-agent/resilience/retry-llm.d.ts +0 -32
  449. package/dist/smart-agent/resilience/retry-llm.d.ts.map +0 -1
  450. package/dist/smart-agent/resilience/retry-llm.js +0 -103
  451. package/dist/smart-agent/resilience/retry-llm.js.map +0 -1
  452. package/dist/smart-agent/resilience/token-bucket-rate-limiter.d.ts +0 -21
  453. package/dist/smart-agent/resilience/token-bucket-rate-limiter.d.ts.map +0 -1
  454. package/dist/smart-agent/resilience/token-bucket-rate-limiter.js +0 -32
  455. package/dist/smart-agent/resilience/token-bucket-rate-limiter.js.map +0 -1
  456. package/dist/smart-agent/session/index.d.ts +0 -4
  457. package/dist/smart-agent/session/index.d.ts.map +0 -1
  458. package/dist/smart-agent/session/index.js +0 -3
  459. package/dist/smart-agent/session/index.js.map +0 -1
  460. package/dist/smart-agent/session/noop-session-manager.d.ts +0 -8
  461. package/dist/smart-agent/session/noop-session-manager.d.ts.map +0 -1
  462. package/dist/smart-agent/session/noop-session-manager.js +0 -11
  463. package/dist/smart-agent/session/noop-session-manager.js.map +0 -1
  464. package/dist/smart-agent/session/session-manager.d.ts +0 -13
  465. package/dist/smart-agent/session/session-manager.d.ts.map +0 -1
  466. package/dist/smart-agent/session/session-manager.js +0 -20
  467. package/dist/smart-agent/session/session-manager.js.map +0 -1
  468. package/dist/smart-agent/session/types.d.ts +0 -7
  469. package/dist/smart-agent/session/types.d.ts.map +0 -1
  470. package/dist/smart-agent/session/types.js +0 -2
  471. package/dist/smart-agent/session/types.js.map +0 -1
  472. package/dist/smart-agent/skills/claude-skill-manager.d.ts +0 -24
  473. package/dist/smart-agent/skills/claude-skill-manager.d.ts.map +0 -1
  474. package/dist/smart-agent/skills/claude-skill-manager.js +0 -81
  475. package/dist/smart-agent/skills/claude-skill-manager.js.map +0 -1
  476. package/dist/smart-agent/skills/codex-skill-manager.d.ts +0 -20
  477. package/dist/smart-agent/skills/codex-skill-manager.d.ts.map +0 -1
  478. package/dist/smart-agent/skills/codex-skill-manager.js +0 -75
  479. package/dist/smart-agent/skills/codex-skill-manager.js.map +0 -1
  480. package/dist/smart-agent/skills/filesystem-skill-manager.d.ts +0 -17
  481. package/dist/smart-agent/skills/filesystem-skill-manager.d.ts.map +0 -1
  482. package/dist/smart-agent/skills/filesystem-skill-manager.js +0 -48
  483. package/dist/smart-agent/skills/filesystem-skill-manager.js.map +0 -1
  484. package/dist/smart-agent/skills/filesystem-skill.d.ts +0 -25
  485. package/dist/smart-agent/skills/filesystem-skill.d.ts.map +0 -1
  486. package/dist/smart-agent/skills/filesystem-skill.js +0 -110
  487. package/dist/smart-agent/skills/filesystem-skill.js.map +0 -1
  488. package/dist/smart-agent/skills/index.d.ts +0 -9
  489. package/dist/smart-agent/skills/index.d.ts.map +0 -1
  490. package/dist/smart-agent/skills/index.js +0 -9
  491. package/dist/smart-agent/skills/index.js.map +0 -1
  492. package/dist/smart-agent/skills/skill-utils.d.ts +0 -15
  493. package/dist/smart-agent/skills/skill-utils.d.ts.map +0 -1
  494. package/dist/smart-agent/skills/skill-utils.js +0 -46
  495. package/dist/smart-agent/skills/skill-utils.js.map +0 -1
  496. package/dist/smart-agent/strategies/index.d.ts +0 -4
  497. package/dist/smart-agent/strategies/index.d.ts.map +0 -1
  498. package/dist/smart-agent/strategies/index.js +0 -4
  499. package/dist/smart-agent/strategies/index.js.map +0 -1
  500. package/dist/smart-agent/strategies/lazy-connection-strategy.d.ts +0 -15
  501. package/dist/smart-agent/strategies/lazy-connection-strategy.d.ts.map +0 -1
  502. package/dist/smart-agent/strategies/lazy-connection-strategy.js +0 -82
  503. package/dist/smart-agent/strategies/lazy-connection-strategy.js.map +0 -1
  504. package/dist/smart-agent/strategies/noop-connection-strategy.d.ts +0 -6
  505. package/dist/smart-agent/strategies/noop-connection-strategy.d.ts.map +0 -1
  506. package/dist/smart-agent/strategies/noop-connection-strategy.js +0 -6
  507. package/dist/smart-agent/strategies/noop-connection-strategy.js.map +0 -1
  508. package/dist/smart-agent/strategies/periodic-connection-strategy.d.ts +0 -13
  509. package/dist/smart-agent/strategies/periodic-connection-strategy.d.ts.map +0 -1
  510. package/dist/smart-agent/strategies/periodic-connection-strategy.js +0 -40
  511. package/dist/smart-agent/strategies/periodic-connection-strategy.js.map +0 -1
  512. package/dist/smart-agent/testing/index.d.ts +0 -118
  513. package/dist/smart-agent/testing/index.d.ts.map +0 -1
  514. package/dist/smart-agent/testing/index.js +0 -351
  515. package/dist/smart-agent/testing/index.js.map +0 -1
  516. package/dist/smart-agent/tracer/index.d.ts +0 -3
  517. package/dist/smart-agent/tracer/index.d.ts.map +0 -1
  518. package/dist/smart-agent/tracer/index.js +0 -2
  519. package/dist/smart-agent/tracer/index.js.map +0 -1
  520. package/dist/smart-agent/tracer/noop-tracer.d.ts +0 -5
  521. package/dist/smart-agent/tracer/noop-tracer.d.ts.map +0 -1
  522. package/dist/smart-agent/tracer/noop-tracer.js +0 -16
  523. package/dist/smart-agent/tracer/noop-tracer.js.map +0 -1
  524. package/dist/smart-agent/tracer/types.d.ts +0 -17
  525. package/dist/smart-agent/tracer/types.d.ts.map +0 -1
  526. package/dist/smart-agent/tracer/types.js +0 -2
  527. package/dist/smart-agent/tracer/types.js.map +0 -1
  528. package/dist/smart-agent/utils/external-tools-normalizer.d.ts +0 -15
  529. package/dist/smart-agent/utils/external-tools-normalizer.d.ts.map +0 -1
  530. package/dist/smart-agent/utils/external-tools-normalizer.js +0 -146
  531. package/dist/smart-agent/utils/external-tools-normalizer.js.map +0 -1
  532. package/dist/smart-agent/utils/lazy.d.ts +0 -51
  533. package/dist/smart-agent/utils/lazy.d.ts.map +0 -1
  534. package/dist/smart-agent/utils/lazy.js +0 -127
  535. package/dist/smart-agent/utils/lazy.js.map +0 -1
  536. package/dist/smart-agent/utils/parse-frontmatter.d.ts +0 -15
  537. package/dist/smart-agent/utils/parse-frontmatter.d.ts.map +0 -1
  538. package/dist/smart-agent/utils/parse-frontmatter.js +0 -22
  539. package/dist/smart-agent/utils/parse-frontmatter.js.map +0 -1
  540. package/dist/smart-agent/utils/tool-call-deltas.d.ts +0 -4
  541. package/dist/smart-agent/utils/tool-call-deltas.d.ts.map +0 -1
  542. package/dist/smart-agent/utils/tool-call-deltas.js +0 -25
  543. package/dist/smart-agent/utils/tool-call-deltas.js.map +0 -1
  544. package/dist/smart-agent/validator/index.d.ts +0 -3
  545. package/dist/smart-agent/validator/index.d.ts.map +0 -1
  546. package/dist/smart-agent/validator/index.js +0 -2
  547. package/dist/smart-agent/validator/index.js.map +0 -1
  548. package/dist/smart-agent/validator/noop-validator.d.ts +0 -6
  549. package/dist/smart-agent/validator/noop-validator.d.ts.map +0 -1
  550. package/dist/smart-agent/validator/noop-validator.js +0 -6
  551. package/dist/smart-agent/validator/noop-validator.js.map +0 -1
  552. package/dist/smart-agent/validator/types.d.ts +0 -17
  553. package/dist/smart-agent/validator/types.d.ts.map +0 -1
  554. package/dist/smart-agent/validator/types.js +0 -8
  555. package/dist/smart-agent/validator/types.js.map +0 -1
@@ -1,950 +0,0 @@
1
- /**
2
- * SmartAgentBuilder — fluent builder for SmartAgent.
3
- *
4
- * Assembles a SmartAgent from interface-based components.
5
- * The builder itself has NO knowledge of concrete providers —
6
- * all dependencies must be injected via `withXxx()` methods or
7
- * resolved externally by the composition root (SmartServer, CLI).
8
- *
9
- * Usage:
10
- * const handle = await new SmartAgentBuilder()
11
- * .withMainLlm(myLlm)
12
- * .setToolsRag(myRag)
13
- * .build();
14
- */
15
- import { CircuitBreaker, CircuitBreakerLlm, FallbackRag, InMemoryRag, isBatchEmbedder, SimpleRagProviderRegistry, SimpleRagRegistry, } from '@mcp-abap-adt/llm-agent';
16
- import { MCPClientWrapper } from '../mcp/client.js';
17
- import { McpClientAdapter } from './adapters/mcp-client-adapter.js';
18
- import { SmartAgent, } from './agent.js';
19
- import { LlmClassifier, } from './classifier/llm-classifier.js';
20
- import { ContextAssembler, } from './context/context-assembler.js';
21
- import { HistoryMemory } from './history/history-memory.js';
22
- import { HistorySummarizer } from './history/history-summarizer.js';
23
- import { DefaultRequestLogger } from './logger/default-request-logger.js';
24
- import { DefaultPipeline } from './pipeline/default-pipeline.js';
25
- import { RateLimiterLlm } from './resilience/rate-limiter-llm.js';
26
- import { RetryLlm } from './resilience/retry-llm.js';
27
- // ---------------------------------------------------------------------------
28
- // SmartAgentBuilder
29
- // ---------------------------------------------------------------------------
30
- function isModelProvider(obj) {
31
- return (obj !== null &&
32
- typeof obj === 'object' &&
33
- typeof obj.getModels === 'function' &&
34
- typeof obj.getModel === 'function');
35
- }
36
- export class SmartAgentBuilder {
37
- cfg;
38
- // All components injected via fluent setters
39
- _mainLlm;
40
- _helperLlm;
41
- _classifierLlm;
42
- _onBeforeStream;
43
- _toolsRag;
44
- _historyRag;
45
- _pipeline;
46
- _mcpClients;
47
- _classifier;
48
- _assembler;
49
- _logger;
50
- _toolPolicy;
51
- _injectionDetector;
52
- _tracer;
53
- _metrics;
54
- _reranker;
55
- _queryExpander;
56
- _toolCache;
57
- _outputValidator;
58
- _sessionManager;
59
- _circuitBreakerConfig;
60
- _requestLogger;
61
- _agentOverrides = {};
62
- _pluginLoader;
63
- _skillManager;
64
- _clientAdapters = [];
65
- _apiAdapters = new Map();
66
- _modelProvider;
67
- _embedder;
68
- _connectionStrategy;
69
- _historySummarizer;
70
- _historyMemory;
71
- _llmCallStrategy;
72
- _rateLimiter;
73
- _providers = [];
74
- _staticCollections = [];
75
- _pendingDynamicCollections = [];
76
- _ragRegistry;
77
- _ragProviderRegistry;
78
- constructor(cfg = {}) {
79
- this.cfg = cfg;
80
- }
81
- // -------------------------------------------------------------------------
82
- // Fluent setters
83
- // -------------------------------------------------------------------------
84
- /** Set the main LLM used in the tool loop (required). */
85
- withMainLlm(llm) {
86
- this._mainLlm = llm;
87
- return this;
88
- }
89
- /** Set a model provider for model discovery and metadata. */
90
- withModelProvider(provider) {
91
- this._modelProvider = provider;
92
- return this;
93
- }
94
- /** Set the helper LLM used for summarization and translation. */
95
- withHelperLlm(llm) {
96
- this._helperLlm = llm;
97
- return this;
98
- }
99
- /** Set the LLM used by the intent classifier. If not set, mainLlm is used. */
100
- withClassifierLlm(llm) {
101
- this._classifierLlm = llm;
102
- return this;
103
- }
104
- /** Register a hook called before streaming the final response to the client. */
105
- withOnBeforeStream(hook) {
106
- this._onBeforeStream = hook;
107
- return this;
108
- }
109
- /** Inject a custom RAG store for MCP tool selection. Overrides auto-created in-memory store. */
110
- setToolsRag(rag) {
111
- this._toolsRag = rag;
112
- return this;
113
- }
114
- /** Inject a custom RAG store for conversation history. Overrides auto-created in-memory store. */
115
- setHistoryRag(rag) {
116
- this._historyRag = rag;
117
- return this;
118
- }
119
- /** Register an IRagProvider for dynamic collection creation. */
120
- addRagProvider(provider) {
121
- this._providers.push(provider);
122
- return this;
123
- }
124
- /** Register a static (pre-built) RAG collection by name. */
125
- addRagCollection(params) {
126
- this._staticCollections.push(params);
127
- return this;
128
- }
129
- /** Queue a dynamic collection to be created via a provider during build(). */
130
- createRagCollection(params) {
131
- this._pendingDynamicCollections.push(params);
132
- return this;
133
- }
134
- /** Provide a custom IRagRegistry. Defaults to SimpleRagRegistry if not set. */
135
- setRagRegistry(registry) {
136
- this._ragRegistry = registry;
137
- return this;
138
- }
139
- /** Provide a custom IRagProviderRegistry. Defaults to SimpleRagProviderRegistry if not set. */
140
- setRagProviderRegistry(registry) {
141
- this._ragProviderRegistry = registry;
142
- return this;
143
- }
144
- /** Inject a pipeline implementation. Defaults to DefaultPipeline if not set. */
145
- setPipeline(pipeline) {
146
- this._pipeline = pipeline;
147
- return this;
148
- }
149
- /**
150
- * Override MCP clients. When set, auto-connect and tool vectorization
151
- * are skipped — the caller is responsible for connecting clients.
152
- */
153
- withMcpClients(clients) {
154
- this._mcpClients = clients;
155
- return this;
156
- }
157
- /** Override the intent classifier. */
158
- withClassifier(classifier) {
159
- this._classifier = classifier;
160
- return this;
161
- }
162
- /** Override the context assembler. */
163
- withAssembler(assembler) {
164
- this._assembler = assembler;
165
- return this;
166
- }
167
- /** Set a logger for internal pipeline events. */
168
- withLogger(logger) {
169
- this._logger = logger;
170
- return this;
171
- }
172
- /** Set a tool execution policy (allow/deny list). */
173
- withToolPolicy(policy) {
174
- this._toolPolicy = policy;
175
- return this;
176
- }
177
- /** Set a prompt-injection detector. */
178
- withInjectionDetector(detector) {
179
- this._injectionDetector = detector;
180
- return this;
181
- }
182
- /** Set a tracer for pipeline span instrumentation. */
183
- withTracer(tracer) {
184
- this._tracer = tracer;
185
- return this;
186
- }
187
- /** Set a metrics collector for pipeline instrumentation. */
188
- withMetrics(metrics) {
189
- this._metrics = metrics;
190
- return this;
191
- }
192
- /** Set a reranker to re-score RAG results before context assembly. */
193
- withReranker(reranker) {
194
- this._reranker = reranker;
195
- return this;
196
- }
197
- /** Set a query expander to broaden RAG queries with synonyms/related terms. */
198
- withQueryExpander(expander) {
199
- this._queryExpander = expander;
200
- return this;
201
- }
202
- /** Set a tool result cache for MCP call deduplication. */
203
- withToolCache(cache) {
204
- this._toolCache = cache;
205
- return this;
206
- }
207
- /** Set an output validator for post-LLM response validation. */
208
- withOutputValidator(validator) {
209
- this._outputValidator = validator;
210
- return this;
211
- }
212
- /** Set a session manager for multi-turn token budget tracking. */
213
- withSessionManager(manager) {
214
- this._sessionManager = manager;
215
- return this;
216
- }
217
- /** Set a skill manager for discovering and loading agent skills. */
218
- withSkillManager(manager) {
219
- this._skillManager = manager;
220
- return this;
221
- }
222
- /** Register a client adapter for auto-detecting prompt-based clients. */
223
- withClientAdapter(adapter) {
224
- this._clientAdapters.push(adapter);
225
- return this;
226
- }
227
- /** Register an API adapter. When called multiple times with the same name, the last one wins. */
228
- withApiAdapter(adapter) {
229
- this._apiAdapters.set(adapter.name, adapter);
230
- return this;
231
- }
232
- /** Enable circuit breakers for LLM and embedder calls. */
233
- withCircuitBreaker(config = {}) {
234
- this._circuitBreakerConfig = config;
235
- return this;
236
- }
237
- /** Set the shared embedder for RAG queries. When set, queries embed once and share the vector. */
238
- withEmbedder(embedder) {
239
- this._embedder = embedder;
240
- return this;
241
- }
242
- /** Set a request logger for per-model usage tracking. */
243
- withRequestLogger(logger) {
244
- this._requestLogger = logger;
245
- return this;
246
- }
247
- /** Set an MCP connection strategy for dynamic client management. */
248
- withMcpConnectionStrategy(strategy) {
249
- this._connectionStrategy = strategy;
250
- return this;
251
- }
252
- /** Override the history summarizer used for semantic history compression. */
253
- withHistorySummarizer(summarizer) {
254
- this._historySummarizer = summarizer;
255
- return this;
256
- }
257
- /** Set a rate limiter to throttle outbound LLM requests. */
258
- withRateLimiter(limiter) {
259
- this._rateLimiter = limiter;
260
- return this;
261
- }
262
- /** Set the LLM call strategy for tool-loop (streaming, non-streaming, or fallback). */
263
- withLlmCallStrategy(strategy) {
264
- this._llmCallStrategy = strategy;
265
- return this;
266
- }
267
- /** Override the history memory store used for semantic history retrieval. */
268
- withHistoryMemory(memory) {
269
- this._historyMemory = memory;
270
- return this;
271
- }
272
- // -------------------------------------------------------------------------
273
- // Pipeline configuration (SmartAgentConfig parameters)
274
- // -------------------------------------------------------------------------
275
- /** Set the execution mode: 'smart' (full pipeline), 'hard' (MCP-only), 'pass' (direct LLM). */
276
- withMode(mode) {
277
- this._agentOverrides.mode = mode;
278
- return this;
279
- }
280
- /** Set the maximum number of tool-loop iterations. */
281
- withMaxIterations(n) {
282
- this._agentOverrides.maxIterations = n;
283
- return this;
284
- }
285
- /** Set the maximum number of tool calls per request. */
286
- withMaxToolCalls(n) {
287
- this._agentOverrides.maxToolCalls = n;
288
- return this;
289
- }
290
- /** Set the request timeout in milliseconds. */
291
- withTimeout(ms) {
292
- this._agentOverrides.timeoutMs = ms;
293
- return this;
294
- }
295
- /** Set the number of RAG results to retrieve per store. */
296
- withRagQueryK(k) {
297
- this._agentOverrides.ragQueryK = k;
298
- return this;
299
- }
300
- /** Enable or disable query expansion for RAG queries. */
301
- withQueryExpansion(enabled) {
302
- this._agentOverrides.queryExpansionEnabled = enabled;
303
- return this;
304
- }
305
- /** Enable or disable reasoning/strategy blocks in the response. */
306
- withShowReasoning(enabled) {
307
- this._agentOverrides.showReasoning = enabled;
308
- return this;
309
- }
310
- /** Set the SSE heartbeat interval in milliseconds during tool execution. */
311
- withHeartbeatInterval(ms) {
312
- this._agentOverrides.heartbeatIntervalMs = ms;
313
- return this;
314
- }
315
- /** Set the health check probe timeout in milliseconds. Default: 5000. */
316
- withHealthTimeout(ms) {
317
- this._agentOverrides.healthTimeoutMs = ms;
318
- return this;
319
- }
320
- /** Enable or disable the classification pipeline stage. When disabled, input is treated as a single action. */
321
- withClassification(enabled) {
322
- this._agentOverrides.classificationEnabled = enabled;
323
- return this;
324
- }
325
- /** Enable per-iteration RAG-based tool re-selection in the tool loop. */
326
- withToolReselection(enabled) {
327
- this._agentOverrides.toolReselectPerIteration = enabled;
328
- return this;
329
- }
330
- /** Set the history message count threshold for auto-summarization. */
331
- withHistorySummarization(limit) {
332
- this._agentOverrides.historyAutoSummarizeLimit = limit;
333
- return this;
334
- }
335
- /** Set the session token budget for multi-turn conversations. */
336
- withSessionTokenBudget(budget) {
337
- this._agentOverrides.sessionTokenBudget = budget;
338
- return this;
339
- }
340
- // -------------------------------------------------------------------------
341
- // Plugin loader
342
- // -------------------------------------------------------------------------
343
- /**
344
- * Set a plugin loader for automatic plugin discovery.
345
- *
346
- * During `build()`, the loader's `load()` method is called and all
347
- * discovered registrations are applied to the builder (stage handlers,
348
- * embedder factories, reranker, query expander, output validator).
349
- *
350
- * The library ships {@link FileSystemPluginLoader} as the default.
351
- * Consumers can provide their own `IPluginLoader` implementation to
352
- * load plugins from npm packages, remote registries, or any other source.
353
- *
354
- * Explicit `withReranker()`, etc. calls take
355
- * precedence over plugin-loaded registrations.
356
- *
357
- * @example Filesystem (default)
358
- * ```ts
359
- * import { FileSystemPluginLoader, getDefaultPluginDirs } from '@mcp-abap-adt/llm-agent';
360
- * builder.withPluginLoader(new FileSystemPluginLoader({
361
- * dirs: getDefaultPluginDirs(),
362
- * }));
363
- * ```
364
- *
365
- * @example Custom npm loader
366
- * ```ts
367
- * builder.withPluginLoader(new NpmPluginLoader(['my-plugin-a']));
368
- * ```
369
- */
370
- withPluginLoader(loader) {
371
- this._pluginLoader = loader;
372
- return this;
373
- }
374
- // -------------------------------------------------------------------------
375
- // build()
376
- // -------------------------------------------------------------------------
377
- async build() {
378
- const log = this._logger;
379
- // ---- Validate required dependencies -----------------------------------
380
- const mainLlm = this._mainLlm;
381
- if (!mainLlm) {
382
- throw new Error('Main LLM is required. Call .withMainLlm(llm) before .build().');
383
- }
384
- let wrappedMainLlm = mainLlm;
385
- // Classifier defaults to main LLM if not provided
386
- const classifierLlm = this._classifierLlm ?? mainLlm;
387
- const helperLlm = this._helperLlm;
388
- // ---- Startup model validation ------------------------------------------
389
- // Verify that configured models respond before starting the server.
390
- // Only checks unique models from the pipeline config (main, classifier, helper).
391
- if (!this.cfg.skipModelValidation) {
392
- const modelsToCheck = new Map();
393
- modelsToCheck.set(mainLlm.model ?? 'main', mainLlm);
394
- if (classifierLlm !== mainLlm) {
395
- modelsToCheck.set(classifierLlm.model ?? 'classifier', classifierLlm);
396
- }
397
- if (helperLlm && helperLlm !== mainLlm) {
398
- modelsToCheck.set(helperLlm.model ?? 'helper', helperLlm);
399
- }
400
- for (const [modelName, llm] of modelsToCheck) {
401
- const result = await llm.chat([{ role: 'user', content: 'Reply with OK' }], undefined, { maxTokens: 10 });
402
- if (!result.ok) {
403
- const detail = result.error.message;
404
- log?.log({
405
- type: 'pipeline_error',
406
- traceId: 'builder',
407
- code: 'MODEL_UNAVAILABLE',
408
- message: `Model "${modelName}" is not available: ${detail}`,
409
- durationMs: 0,
410
- });
411
- throw new Error(`Startup aborted: model "${modelName}" is not available.\n${detail}`);
412
- }
413
- }
414
- } // end skipModelValidation guard
415
- // Auto-create tools RAG if MCP clients will be configured and embedder available
416
- const toolsRag = this._toolsRag ??
417
- ((this.cfg.mcp || this._mcpClients) && this._embedder
418
- ? new InMemoryRag()
419
- : undefined);
420
- // Auto-create history RAG if history summarization is enabled
421
- const historyRag = this._historyRag ??
422
- (this._agentOverrides.historyAutoSummarizeLimit ||
423
- this.cfg.agent?.historyAutoSummarizeLimit
424
- ? new InMemoryRag()
425
- : undefined);
426
- // Build provider registry and collection registry (v9.1 wiring).
427
- const ragProviderRegistry = this._ragProviderRegistry ?? new SimpleRagProviderRegistry();
428
- for (const p of this._providers)
429
- ragProviderRegistry.registerProvider(p);
430
- const ragRegistry = this._ragRegistry ?? new SimpleRagRegistry();
431
- // Wire providers into registry when the registry supports it (SimpleRagRegistry does).
432
- if (ragRegistry instanceof SimpleRagRegistry ||
433
- typeof ragRegistry
434
- .setProviderRegistry === 'function') {
435
- ragRegistry.setProviderRegistry(ragProviderRegistry);
436
- }
437
- // Register user-supplied static collections (from addRagCollection fluent calls).
438
- for (const c of this._staticCollections) {
439
- ragRegistry.register(c.name, c.rag, c.editor, c.meta);
440
- }
441
- // Mirror the built-in toolsRag / historyRag into the registry so the projection preserves
442
- // ragStores.tools / ragStores.history behavior that existing handlers rely on.
443
- if (toolsRag && !ragRegistry.get('tools')) {
444
- ragRegistry.register('tools', toolsRag, undefined, {
445
- displayName: 'tools',
446
- scope: 'global',
447
- });
448
- }
449
- if (historyRag && !ragRegistry.get('history')) {
450
- ragRegistry.register('history', historyRag, undefined, {
451
- displayName: 'history',
452
- scope: 'global',
453
- });
454
- }
455
- // Create any queued dynamic collections at startup.
456
- for (const c of this._pendingDynamicCollections) {
457
- const res = await ragRegistry.createCollection(c);
458
- if (!res.ok) {
459
- throw new Error(`Failed to create collection '${c.collectionName}': ${res.error.message}`);
460
- }
461
- }
462
- // Derive ragStores as a live projection of the registry; keep it in sync via the
463
- // registry's mutation listener so existing code paths (assembler, handlers,
464
- // addRagStore/removeRagStore) see the same shape.
465
- const ragStores = {};
466
- const rebuildProjection = () => {
467
- for (const k of Object.keys(ragStores))
468
- delete ragStores[k];
469
- for (const m of ragRegistry.list()) {
470
- const r = ragRegistry.get(m.name);
471
- if (r)
472
- ragStores[m.name] = r;
473
- }
474
- };
475
- rebuildProjection();
476
- if (ragRegistry instanceof SimpleRagRegistry ||
477
- typeof ragRegistry
478
- .setMutationListener === 'function') {
479
- ragRegistry.setMutationListener(rebuildProjection);
480
- }
481
- const translateQueryStores = new Set();
482
- if (toolsRag)
483
- translateQueryStores.add('tools');
484
- // ---- Circuit breaker wrapping ----------------------------------------
485
- const circuitBreakers = [];
486
- if (this._circuitBreakerConfig) {
487
- const cbCfg = this._circuitBreakerConfig;
488
- const metricsRef = this._metrics;
489
- const makeOnStateChange = (target) => (from, to) => {
490
- metricsRef?.circuitBreakerTransition.add(1, { from, to, target });
491
- };
492
- // Wrap mainLlm
493
- const llmBreaker = new CircuitBreaker({
494
- ...cbCfg,
495
- onStateChange: cbCfg.onStateChange ?? makeOnStateChange('llm'),
496
- });
497
- wrappedMainLlm = new CircuitBreakerLlm(wrappedMainLlm, llmBreaker);
498
- circuitBreakers.push(llmBreaker);
499
- // Wrap RAG stores with FallbackRag using InMemoryRag fallback
500
- const embedderBreaker = new CircuitBreaker({
501
- ...cbCfg,
502
- onStateChange: cbCfg.onStateChange ?? makeOnStateChange('embedder'),
503
- });
504
- circuitBreakers.push(embedderBreaker);
505
- for (const [key, store] of Object.entries(ragStores)) {
506
- const wrapped = new FallbackRag(store, new InMemoryRag(), embedderBreaker);
507
- // Update both registry and projection so later lookups (and the mutation-listener
508
- // rebuild) see the wrapped store.
509
- const existingMeta = ragRegistry.list().find((m) => m.name === key);
510
- ragRegistry.unregister(key);
511
- ragRegistry.register(key, wrapped, undefined, {
512
- displayName: existingMeta?.displayName ?? key,
513
- scope: existingMeta?.scope ?? 'global',
514
- });
515
- // Projection gets rebuilt by the mutation listener; no direct write to ragStores needed.
516
- }
517
- }
518
- // ---- Request logger ---------------------------------------------------
519
- const requestLogger = this._requestLogger ?? new DefaultRequestLogger();
520
- // ---- MCP clients + tool vectorization --------------------------------
521
- let mcpClients;
522
- const closeFns = [];
523
- const connectionStrategy = this._connectionStrategy;
524
- if (this._mcpClients) {
525
- // Caller-provided clients: skip auto-connect and vectorization
526
- mcpClients = this._mcpClients;
527
- }
528
- else {
529
- const mcpList = this.cfg.mcp
530
- ? Array.isArray(this.cfg.mcp)
531
- ? this.cfg.mcp
532
- : [this.cfg.mcp]
533
- : [];
534
- const connected = [];
535
- for (const mcpCfg of mcpList) {
536
- try {
537
- let wrapper;
538
- if (mcpCfg.type === 'stdio') {
539
- wrapper = new MCPClientWrapper({
540
- transport: 'stdio',
541
- command: mcpCfg.command,
542
- args: mcpCfg.args ?? [],
543
- });
544
- }
545
- else {
546
- wrapper = new MCPClientWrapper({
547
- transport: 'auto',
548
- url: mcpCfg.url,
549
- headers: mcpCfg.headers,
550
- });
551
- }
552
- await wrapper.connect();
553
- const adapter = new McpClientAdapter(wrapper);
554
- log?.log({
555
- type: 'pipeline_done',
556
- traceId: 'builder',
557
- stopReason: 'stop',
558
- iterations: 0,
559
- toolCallCount: 0,
560
- durationMs: 0,
561
- });
562
- // Vectorize tools into the tools RAG store
563
- if (toolsRag) {
564
- const toolsResult = await adapter.listTools();
565
- if (toolsResult.ok) {
566
- const tools = toolsResult.value;
567
- // Try to access the embedder from the store for batch embedding.
568
- // VectorRag and QdrantRag store their embedder as a private field.
569
- // biome-ignore lint/suspicious/noExplicitAny: accessing private embedder for batch optimization
570
- const storeEmbedder = toolsRag.embedder;
571
- if (storeEmbedder &&
572
- isBatchEmbedder(storeEmbedder) &&
573
- toolsRag.writer?.()?.upsertPrecomputedRaw !== undefined) {
574
- // Batch path: single HTTP call for all tools
575
- const texts = tools.map((t) => `Tool: ${t.name} — ${t.description}`);
576
- const batchStart = Date.now();
577
- try {
578
- const embedResults = await storeEmbedder.embedBatch(texts);
579
- const batchDuration = Date.now() - batchStart;
580
- for (let i = 0; i < tools.length; i++) {
581
- const toolWriter = toolsRag.writer?.();
582
- const result = toolWriter?.upsertPrecomputedRaw
583
- ? await toolWriter.upsertPrecomputedRaw(`tool:${tools[i].name}`, texts[i], embedResults[i].vector, {})
584
- : toolWriter
585
- ? await toolWriter.upsertRaw(`tool:${tools[i].name}`, texts[i], {})
586
- : { ok: true, value: undefined };
587
- if (!result.ok) {
588
- log?.log({
589
- type: 'warning',
590
- traceId: 'builder',
591
- message: `Tool vectorization failed for "${tools[i].name}": ${result.error.message}`,
592
- });
593
- }
594
- }
595
- const realUsage = embedResults.reduce((acc, r) => {
596
- if (!r.usage)
597
- return acc;
598
- return {
599
- promptTokens: (acc?.promptTokens ?? 0) + r.usage.promptTokens,
600
- totalTokens: (acc?.totalTokens ?? 0) + r.usage.totalTokens,
601
- };
602
- }, null);
603
- const totalEstTokens = texts.reduce((sum, t) => sum + Math.ceil(t.length / 4), 0);
604
- requestLogger.logLlmCall({
605
- component: 'embedding',
606
- model: 'embedder',
607
- promptTokens: realUsage?.promptTokens ?? totalEstTokens,
608
- completionTokens: 0,
609
- totalTokens: realUsage?.totalTokens ?? totalEstTokens,
610
- durationMs: batchDuration,
611
- estimated: realUsage === null,
612
- scope: 'initialization',
613
- detail: 'tools',
614
- });
615
- }
616
- catch (err) {
617
- log?.log({
618
- type: 'warning',
619
- traceId: 'builder',
620
- message: `Batch embedding failed, falling back to sequential: ${String(err)}`,
621
- });
622
- // Fallback to sequential
623
- const batchSize = 5;
624
- const batchDelayMs = 500;
625
- for (let i = 0; i < tools.length; i++) {
626
- const t = tools[i];
627
- const text = `Tool: ${t.name} — ${t.description}`;
628
- const embedStart = Date.now();
629
- const result = await toolsRag
630
- .writer?.()
631
- ?.upsertRaw(`tool:${t.name}`, text, {});
632
- if (result && !result.ok) {
633
- log?.log({
634
- type: 'warning',
635
- traceId: 'builder',
636
- message: `Tool vectorization failed for "${t.name}": ${result.error.message}`,
637
- });
638
- }
639
- else {
640
- requestLogger.logLlmCall({
641
- component: 'embedding',
642
- model: 'embedder',
643
- promptTokens: Math.ceil(text.length / 4),
644
- completionTokens: 0,
645
- totalTokens: Math.ceil(text.length / 4),
646
- durationMs: Date.now() - embedStart,
647
- estimated: true,
648
- scope: 'initialization',
649
- detail: 'tools',
650
- });
651
- }
652
- if ((i + 1) % batchSize === 0 && i < tools.length - 1) {
653
- await new Promise((r) => setTimeout(r, batchDelayMs));
654
- }
655
- }
656
- }
657
- }
658
- else {
659
- // Sequential path (no batch support)
660
- const batchSize = 5;
661
- const batchDelayMs = 500;
662
- for (let i = 0; i < tools.length; i++) {
663
- const t = tools[i];
664
- const text = `Tool: ${t.name} — ${t.description}`;
665
- const embedStart = Date.now();
666
- const result = await toolsRag
667
- .writer?.()
668
- ?.upsertRaw(`tool:${t.name}`, text, {});
669
- if (result && !result.ok) {
670
- log?.log({
671
- type: 'warning',
672
- traceId: 'builder',
673
- message: `Tool vectorization failed for "${t.name}": ${result.error.message}`,
674
- });
675
- }
676
- else {
677
- requestLogger.logLlmCall({
678
- component: 'embedding',
679
- model: 'embedder',
680
- promptTokens: Math.ceil(text.length / 4),
681
- completionTokens: 0,
682
- totalTokens: Math.ceil(text.length / 4),
683
- durationMs: Date.now() - embedStart,
684
- estimated: true,
685
- scope: 'initialization',
686
- detail: 'tools',
687
- });
688
- }
689
- if ((i + 1) % batchSize === 0 && i < tools.length - 1) {
690
- await new Promise((r) => setTimeout(r, batchDelayMs));
691
- }
692
- }
693
- }
694
- }
695
- }
696
- connected.push(adapter);
697
- closeFns.push(() => wrapper.disconnect?.() ?? Promise.resolve());
698
- }
699
- catch (err) {
700
- // Skip failed MCP setup — agent continues without that server, but
701
- // surface why: silently swallowing this leaves operators chasing
702
- // "agent has no tools" with no log line to point at the cause
703
- // (unreachable host, bad auth, container-network mismatch, etc.).
704
- // Note: this try-block also covers tool/skill vectorization, so the
705
- // failure could be either connect or post-connect setup.
706
- const target = mcpCfg.type === 'stdio' ? mcpCfg.command : mcpCfg.url;
707
- log?.log({
708
- type: 'warning',
709
- traceId: 'builder',
710
- message: `MCP setup failed for ${target}: ${err instanceof Error ? err.message : String(err)}`,
711
- });
712
- }
713
- }
714
- mcpClients = connected;
715
- }
716
- // ---- SmartAgent Config ------------------------------------------------
717
- const agentCfg = {
718
- maxIterations: 10,
719
- maxToolCalls: 30,
720
- ragQueryK: 10,
721
- ragTranslatePrompt: this.cfg.prompts?.ragTranslate,
722
- historySummaryPrompt: this.cfg.prompts?.historySummary,
723
- historyAutoSummarizeLimit: this.cfg.agent?.historyAutoSummarizeLimit,
724
- ...this.cfg.agent,
725
- ...(this.cfg.sessionPolicy
726
- ? { sessionPolicy: this.cfg.sessionPolicy }
727
- : {}),
728
- // Fluent overrides take precedence over cfg.agent
729
- ...this._agentOverrides,
730
- onBeforeStream: this._onBeforeStream,
731
- };
732
- // ---- Retry wrapping (outside circuit breaker) ----------------------------
733
- // Enable retry by default with sensible defaults; explicit config overrides.
734
- const retryOpts = agentCfg.retry ?? {
735
- maxAttempts: 3,
736
- backoffMs: 2000,
737
- retryOn: [429, 500, 502, 503],
738
- retryOnMidStream: [],
739
- };
740
- wrappedMainLlm = new RetryLlm(wrappedMainLlm, retryOpts);
741
- // ---- Rate limiter wrapping (outermost — retry attempts also throttled) ----
742
- if (this._rateLimiter) {
743
- wrappedMainLlm = new RateLimiterLlm(wrappedMainLlm, this._rateLimiter);
744
- }
745
- // ---- Classifier -------------------------------------------------------
746
- const classifierCfg = {};
747
- if (this.cfg.prompts?.classifier)
748
- classifierCfg.systemPrompt = this.cfg.prompts.classifier;
749
- const classifier = this._classifier ??
750
- new LlmClassifier(classifierLlm, classifierCfg, requestLogger);
751
- // ---- Assembler --------------------------------------------------------
752
- const assemblerCfg = {
753
- maxTokens: agentCfg.contextBudgetTokens,
754
- showReasoning: agentCfg.showReasoning,
755
- reasoningInstruction: this.cfg.prompts?.reasoning,
756
- historyRecencyWindow: agentCfg.historyRecencyWindow,
757
- };
758
- if (this.cfg.prompts?.system)
759
- assemblerCfg.systemPromptPreamble = this.cfg.prompts.system;
760
- const assembler = this._assembler ?? new ContextAssembler(assemblerCfg);
761
- // ---- History memory & summarizer ----------------------------------------
762
- let historyMemory;
763
- let historySummarizer;
764
- if (agentCfg.semanticHistoryEnabled) {
765
- historyMemory =
766
- this._historyMemory ??
767
- new HistoryMemory({
768
- maxSize: agentCfg.historyRecencyWindow ?? 3,
769
- });
770
- const summarizerLlm = this._helperLlm ?? mainLlm;
771
- historySummarizer =
772
- this._historySummarizer ??
773
- new HistorySummarizer(summarizerLlm, agentCfg.historyTurnSummaryPrompt
774
- ? { prompt: agentCfg.historyTurnSummaryPrompt }
775
- : undefined);
776
- if (historyRag && !ragRegistry.get('history')) {
777
- ragRegistry.register('history', historyRag, undefined, {
778
- displayName: 'history',
779
- scope: 'global',
780
- });
781
- // ragStores projection updates via mutation listener.
782
- }
783
- }
784
- // ---- Plugin loader (optional) -------------------------------------------
785
- let loadedPlugins;
786
- if (this._pluginLoader) {
787
- const plugins = await this._pluginLoader.load();
788
- loadedPlugins = plugins;
789
- if (plugins.reranker && !this._reranker) {
790
- this._reranker = plugins.reranker;
791
- }
792
- if (plugins.queryExpander && !this._queryExpander) {
793
- this._queryExpander = plugins.queryExpander;
794
- }
795
- if (plugins.outputValidator && !this._outputValidator) {
796
- this._outputValidator = plugins.outputValidator;
797
- }
798
- if (plugins.skillManager && !this._skillManager) {
799
- this._skillManager = plugins.skillManager;
800
- }
801
- if (plugins.clientAdapters.length > 0) {
802
- this._clientAdapters.push(...plugins.clientAdapters);
803
- }
804
- }
805
- // ---- Skill vectorization (optional) ------------------------------------
806
- if (this._skillManager && toolsRag) {
807
- const skillsResult = await this._skillManager.listSkills();
808
- if (skillsResult.ok) {
809
- for (const s of skillsResult.value) {
810
- const text = `Skill: ${s.name}\n${s.description}`;
811
- const embedStart = Date.now();
812
- const result = await toolsRag
813
- .writer?.()
814
- ?.upsertRaw(`skill:${s.name}`, text, {});
815
- if (result && !result.ok) {
816
- log?.log({
817
- type: 'warning',
818
- traceId: 'builder',
819
- message: `Skill vectorization failed for "${s.name}": ${result.error.message}`,
820
- });
821
- }
822
- else {
823
- requestLogger.logLlmCall({
824
- component: 'embedding',
825
- model: 'embedder',
826
- promptTokens: Math.ceil(text.length / 4),
827
- completionTokens: 0,
828
- totalTokens: Math.ceil(text.length / 4),
829
- durationMs: Date.now() - embedStart,
830
- estimated: true,
831
- scope: 'initialization',
832
- detail: 'skills',
833
- });
834
- }
835
- }
836
- }
837
- }
838
- // ---- Pipeline initialization -------------------------------------------
839
- const pipeline = this._pipeline ?? new DefaultPipeline();
840
- pipeline.initialize({
841
- mainLlm: wrappedMainLlm,
842
- helperLlm,
843
- classifierLlm,
844
- classifier,
845
- assembler,
846
- mcpClients,
847
- toolsRag,
848
- historyRag,
849
- ragStores,
850
- ragRegistry,
851
- ragProviderRegistry,
852
- embedder: this._embedder,
853
- reranker: this._reranker,
854
- queryExpander: this._queryExpander,
855
- toolPolicy: this._toolPolicy,
856
- injectionDetector: this._injectionDetector,
857
- toolCache: this._toolCache,
858
- outputValidator: this._outputValidator,
859
- sessionManager: this._sessionManager,
860
- skillManager: this._skillManager,
861
- logger: log,
862
- requestLogger,
863
- tracer: this._tracer,
864
- metrics: this._metrics,
865
- historyMemory,
866
- historySummarizer,
867
- llmCallStrategy: this._llmCallStrategy,
868
- agentConfig: agentCfg,
869
- });
870
- const agent = new SmartAgent({
871
- mainLlm: wrappedMainLlm,
872
- helperLlm: this._helperLlm,
873
- mcpClients,
874
- ragStores,
875
- ragRegistry,
876
- ragProviderRegistry,
877
- classifier,
878
- classifierLlm,
879
- classifierConfig: classifierCfg,
880
- assembler,
881
- pipeline,
882
- ...(log ? { logger: log } : {}),
883
- ...(this._toolPolicy ? { toolPolicy: this._toolPolicy } : {}),
884
- ...(this._injectionDetector
885
- ? { injectionDetector: this._injectionDetector }
886
- : {}),
887
- ...(this._reranker ? { reranker: this._reranker } : {}),
888
- ...(this._queryExpander ? { queryExpander: this._queryExpander } : {}),
889
- ...(this._tracer ? { tracer: this._tracer } : {}),
890
- ...(this._metrics ? { metrics: this._metrics } : {}),
891
- ...(this._toolCache ? { toolCache: this._toolCache } : {}),
892
- ...(this._outputValidator
893
- ? { outputValidator: this._outputValidator }
894
- : {}),
895
- ...(this._sessionManager
896
- ? { sessionManager: this._sessionManager }
897
- : {}),
898
- ...(this._skillManager ? { skillManager: this._skillManager } : {}),
899
- ...(this._clientAdapters.length > 0
900
- ? { clientAdapters: this._clientAdapters }
901
- : {}),
902
- ...(this._embedder ? { embedder: this._embedder } : {}),
903
- ...(connectionStrategy ? { connectionStrategy } : {}),
904
- ...(historyMemory ? { historyMemory } : {}),
905
- ...(historySummarizer ? { historySummarizer } : {}),
906
- ...(this._llmCallStrategy
907
- ? { llmCallStrategy: this._llmCallStrategy }
908
- : {}),
909
- ...(translateQueryStores.size > 0 ? { translateQueryStores } : {}),
910
- requestLogger,
911
- }, agentCfg);
912
- // ---- Model provider auto-detection ------------------------------------
913
- let modelProvider = this._modelProvider;
914
- if (!modelProvider) {
915
- const candidate = mainLlm;
916
- if (isModelProvider(candidate)) {
917
- modelProvider = candidate;
918
- }
919
- }
920
- // ---- API adapters: merge plugin adapters → builder adapters (builder wins) ---
921
- // plugins.apiAdapters does not exist yet (added in Task 4); safe future-compat check.
922
- const apiAdapters = new Map();
923
- const pluginApiAdapters = loadedPlugins?.apiAdapters;
924
- if (pluginApiAdapters) {
925
- for (const [name, adapter] of pluginApiAdapters) {
926
- apiAdapters.set(name, adapter);
927
- }
928
- }
929
- for (const [name, adapter] of this._apiAdapters) {
930
- apiAdapters.set(name, adapter);
931
- }
932
- return {
933
- agent,
934
- chat: (messages, tools, options) => agent.currentMainLlm.chat(messages, tools, options),
935
- streamChat: (messages, tools, options) => agent.currentMainLlm.streamChat(messages, tools, options),
936
- requestLogger,
937
- close: async () => {
938
- await connectionStrategy?.dispose?.();
939
- for (const fn of closeFns)
940
- await fn();
941
- },
942
- circuitBreakers,
943
- ragStores,
944
- modelProvider,
945
- getApiAdapter: (name) => apiAdapters.get(name),
946
- listApiAdapters: () => [...apiAdapters.keys()],
947
- };
948
- }
949
- }
950
- //# sourceMappingURL=builder.js.map