@mcp-abap-adt/llm-agent-libs 12.0.2 → 12.0.3

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 (361) hide show
  1. package/dist/adapters/index.d.ts +4 -0
  2. package/dist/adapters/index.d.ts.map +1 -0
  3. package/dist/adapters/index.js +4 -0
  4. package/dist/adapters/index.js.map +1 -0
  5. package/dist/adapters/llm-adapter.d.ts +24 -0
  6. package/dist/adapters/llm-adapter.d.ts.map +1 -0
  7. package/dist/adapters/llm-adapter.js +345 -0
  8. package/dist/adapters/llm-adapter.js.map +1 -0
  9. package/dist/adapters/llm-provider-bridge.d.ts +30 -0
  10. package/dist/adapters/llm-provider-bridge.d.ts.map +1 -0
  11. package/dist/adapters/llm-provider-bridge.js +122 -0
  12. package/dist/adapters/llm-provider-bridge.js.map +1 -0
  13. package/dist/adapters/non-streaming-llm.d.ts +18 -0
  14. package/dist/adapters/non-streaming-llm.d.ts.map +1 -0
  15. package/dist/adapters/non-streaming-llm.js +44 -0
  16. package/dist/adapters/non-streaming-llm.js.map +1 -0
  17. package/dist/agent.d.ts +227 -0
  18. package/dist/agent.d.ts.map +1 -0
  19. package/dist/agent.js +1534 -0
  20. package/dist/agent.js.map +1 -0
  21. package/dist/builder.d.ts +260 -0
  22. package/dist/builder.d.ts.map +1 -0
  23. package/dist/builder.js +949 -0
  24. package/dist/builder.js.map +1 -0
  25. package/dist/classifier/index.d.ts +3 -0
  26. package/dist/classifier/index.d.ts.map +1 -0
  27. package/dist/classifier/index.js +2 -0
  28. package/dist/classifier/index.js.map +1 -0
  29. package/dist/classifier/llm-classifier.d.ts +20 -0
  30. package/dist/classifier/llm-classifier.d.ts.map +1 -0
  31. package/dist/classifier/llm-classifier.js +128 -0
  32. package/dist/classifier/llm-classifier.js.map +1 -0
  33. package/dist/config/config-watcher.d.ts +54 -0
  34. package/dist/config/config-watcher.d.ts.map +1 -0
  35. package/dist/config/config-watcher.js +107 -0
  36. package/dist/config/config-watcher.js.map +1 -0
  37. package/dist/config/index.d.ts +2 -0
  38. package/dist/config/index.d.ts.map +1 -0
  39. package/dist/config/index.js +2 -0
  40. package/dist/config/index.js.map +1 -0
  41. package/dist/context/context-assembler.d.ts +49 -0
  42. package/dist/context/context-assembler.d.ts.map +1 -0
  43. package/dist/context/context-assembler.js +184 -0
  44. package/dist/context/context-assembler.js.map +1 -0
  45. package/dist/context/index.d.ts +3 -0
  46. package/dist/context/index.d.ts.map +1 -0
  47. package/dist/context/index.js +2 -0
  48. package/dist/context/index.js.map +1 -0
  49. package/dist/health/health-checker.d.ts +21 -0
  50. package/dist/health/health-checker.d.ts.map +1 -0
  51. package/dist/health/health-checker.js +52 -0
  52. package/dist/health/health-checker.js.map +1 -0
  53. package/dist/health/index.d.ts +3 -0
  54. package/dist/health/index.d.ts.map +1 -0
  55. package/dist/health/index.js +2 -0
  56. package/dist/health/index.js.map +1 -0
  57. package/dist/health/types.d.ts +2 -0
  58. package/dist/health/types.d.ts.map +1 -0
  59. package/dist/health/types.js +2 -0
  60. package/dist/health/types.js.map +1 -0
  61. package/dist/history/history-memory.d.ts +12 -0
  62. package/dist/history/history-memory.d.ts.map +1 -0
  63. package/dist/history/history-memory.js +26 -0
  64. package/dist/history/history-memory.js.map +1 -0
  65. package/dist/history/history-summarizer.d.ts +10 -0
  66. package/dist/history/history-summarizer.d.ts.map +1 -0
  67. package/dist/history/history-summarizer.js +27 -0
  68. package/dist/history/history-summarizer.js.map +1 -0
  69. package/dist/history/index.d.ts +3 -0
  70. package/dist/history/index.d.ts.map +1 -0
  71. package/dist/history/index.js +3 -0
  72. package/dist/history/index.js.map +1 -0
  73. package/dist/index.d.ts +37 -0
  74. package/dist/index.d.ts.map +1 -0
  75. package/dist/index.js +86 -0
  76. package/dist/index.js.map +1 -0
  77. package/dist/interfaces/mcp-connection-strategy.d.ts +2 -0
  78. package/dist/interfaces/mcp-connection-strategy.d.ts.map +1 -0
  79. package/dist/interfaces/mcp-connection-strategy.js +2 -0
  80. package/dist/interfaces/mcp-connection-strategy.js.map +1 -0
  81. package/dist/interfaces/model-resolver.d.ts +2 -0
  82. package/dist/interfaces/model-resolver.d.ts.map +1 -0
  83. package/dist/interfaces/model-resolver.js +2 -0
  84. package/dist/interfaces/model-resolver.js.map +1 -0
  85. package/dist/interfaces/pipeline.d.ts +123 -0
  86. package/dist/interfaces/pipeline.d.ts.map +1 -0
  87. package/dist/interfaces/pipeline.js +13 -0
  88. package/dist/interfaces/pipeline.js.map +1 -0
  89. package/dist/logger/console-logger.d.ts +7 -0
  90. package/dist/logger/console-logger.d.ts.map +1 -0
  91. package/dist/logger/console-logger.js +12 -0
  92. package/dist/logger/console-logger.js.map +1 -0
  93. package/dist/logger/default-request-logger.d.ts +17 -0
  94. package/dist/logger/default-request-logger.d.ts.map +1 -0
  95. package/dist/logger/default-request-logger.js +86 -0
  96. package/dist/logger/default-request-logger.js.map +1 -0
  97. package/dist/logger/index.d.ts +3 -0
  98. package/dist/logger/index.d.ts.map +1 -0
  99. package/dist/logger/index.js +2 -0
  100. package/dist/logger/index.js.map +1 -0
  101. package/dist/logger/noop-request-logger.d.ts +11 -0
  102. package/dist/logger/noop-request-logger.d.ts.map +1 -0
  103. package/dist/logger/noop-request-logger.js +20 -0
  104. package/dist/logger/noop-request-logger.js.map +1 -0
  105. package/dist/logger/session-logger.d.ts +10 -0
  106. package/dist/logger/session-logger.d.ts.map +1 -0
  107. package/dist/logger/session-logger.js +40 -0
  108. package/dist/logger/session-logger.js.map +1 -0
  109. package/dist/metrics/in-memory-metrics.d.ts +36 -0
  110. package/dist/metrics/in-memory-metrics.d.ts.map +1 -0
  111. package/dist/metrics/in-memory-metrics.js +87 -0
  112. package/dist/metrics/in-memory-metrics.js.map +1 -0
  113. package/dist/metrics/index.d.ts +4 -0
  114. package/dist/metrics/index.d.ts.map +1 -0
  115. package/dist/metrics/index.js +3 -0
  116. package/dist/metrics/index.js.map +1 -0
  117. package/dist/metrics/noop-metrics.d.ts +17 -0
  118. package/dist/metrics/noop-metrics.d.ts.map +1 -0
  119. package/dist/metrics/noop-metrics.js +22 -0
  120. package/dist/metrics/noop-metrics.js.map +1 -0
  121. package/dist/metrics/types.d.ts +2 -0
  122. package/dist/metrics/types.d.ts.map +1 -0
  123. package/dist/metrics/types.js +2 -0
  124. package/dist/metrics/types.js.map +1 -0
  125. package/dist/otel/index.d.ts +2 -0
  126. package/dist/otel/index.d.ts.map +1 -0
  127. package/dist/otel/index.js +2 -0
  128. package/dist/otel/index.js.map +1 -0
  129. package/dist/otel/otel-tracer-adapter.d.ts +15 -0
  130. package/dist/otel/otel-tracer-adapter.d.ts.map +1 -0
  131. package/dist/otel/otel-tracer-adapter.js +62 -0
  132. package/dist/otel/otel-tracer-adapter.js.map +1 -0
  133. package/dist/pipeline/condition-evaluator.d.ts +35 -0
  134. package/dist/pipeline/condition-evaluator.d.ts.map +1 -0
  135. package/dist/pipeline/condition-evaluator.js +143 -0
  136. package/dist/pipeline/condition-evaluator.js.map +1 -0
  137. package/dist/pipeline/context.d.ts +119 -0
  138. package/dist/pipeline/context.d.ts.map +1 -0
  139. package/dist/pipeline/context.js +19 -0
  140. package/dist/pipeline/context.js.map +1 -0
  141. package/dist/pipeline/default-pipeline.d.ts +69 -0
  142. package/dist/pipeline/default-pipeline.d.ts.map +1 -0
  143. package/dist/pipeline/default-pipeline.js +276 -0
  144. package/dist/pipeline/default-pipeline.js.map +1 -0
  145. package/dist/pipeline/executor.d.ts +54 -0
  146. package/dist/pipeline/executor.d.ts.map +1 -0
  147. package/dist/pipeline/executor.js +133 -0
  148. package/dist/pipeline/executor.js.map +1 -0
  149. package/dist/pipeline/handlers/assemble.d.ts +16 -0
  150. package/dist/pipeline/handlers/assemble.d.ts.map +1 -0
  151. package/dist/pipeline/handlers/assemble.js +72 -0
  152. package/dist/pipeline/handlers/assemble.js.map +1 -0
  153. package/dist/pipeline/handlers/build-tool-query.d.ts +30 -0
  154. package/dist/pipeline/handlers/build-tool-query.d.ts.map +1 -0
  155. package/dist/pipeline/handlers/build-tool-query.js +80 -0
  156. package/dist/pipeline/handlers/build-tool-query.js.map +1 -0
  157. package/dist/pipeline/handlers/classify.d.ts +21 -0
  158. package/dist/pipeline/handlers/classify.d.ts.map +1 -0
  159. package/dist/pipeline/handlers/classify.js +60 -0
  160. package/dist/pipeline/handlers/classify.js.map +1 -0
  161. package/dist/pipeline/handlers/expand.d.ts +16 -0
  162. package/dist/pipeline/handlers/expand.d.ts.map +1 -0
  163. package/dist/pipeline/handlers/expand.js +24 -0
  164. package/dist/pipeline/handlers/expand.js.map +1 -0
  165. package/dist/pipeline/handlers/history-upsert.d.ts +29 -0
  166. package/dist/pipeline/handlers/history-upsert.d.ts.map +1 -0
  167. package/dist/pipeline/handlers/history-upsert.js +75 -0
  168. package/dist/pipeline/handlers/history-upsert.js.map +1 -0
  169. package/dist/pipeline/handlers/index.d.ts +31 -0
  170. package/dist/pipeline/handlers/index.d.ts.map +1 -0
  171. package/dist/pipeline/handlers/index.js +44 -0
  172. package/dist/pipeline/handlers/index.js.map +1 -0
  173. package/dist/pipeline/handlers/rag-query.d.ts +27 -0
  174. package/dist/pipeline/handlers/rag-query.d.ts.map +1 -0
  175. package/dist/pipeline/handlers/rag-query.js +117 -0
  176. package/dist/pipeline/handlers/rag-query.js.map +1 -0
  177. package/dist/pipeline/handlers/rerank.d.ts +16 -0
  178. package/dist/pipeline/handlers/rerank.d.ts.map +1 -0
  179. package/dist/pipeline/handlers/rerank.js +27 -0
  180. package/dist/pipeline/handlers/rerank.js.map +1 -0
  181. package/dist/pipeline/handlers/skill-select.d.ts +18 -0
  182. package/dist/pipeline/handlers/skill-select.d.ts.map +1 -0
  183. package/dist/pipeline/handlers/skill-select.js +88 -0
  184. package/dist/pipeline/handlers/skill-select.js.map +1 -0
  185. package/dist/pipeline/handlers/summarize.d.ts +17 -0
  186. package/dist/pipeline/handlers/summarize.d.ts.map +1 -0
  187. package/dist/pipeline/handlers/summarize.js +56 -0
  188. package/dist/pipeline/handlers/summarize.js.map +1 -0
  189. package/dist/pipeline/handlers/tool-loop.d.ts +32 -0
  190. package/dist/pipeline/handlers/tool-loop.d.ts.map +1 -0
  191. package/dist/pipeline/handlers/tool-loop.js +734 -0
  192. package/dist/pipeline/handlers/tool-loop.js.map +1 -0
  193. package/dist/pipeline/handlers/tool-select.d.ts +21 -0
  194. package/dist/pipeline/handlers/tool-select.d.ts.map +1 -0
  195. package/dist/pipeline/handlers/tool-select.js +109 -0
  196. package/dist/pipeline/handlers/tool-select.js.map +1 -0
  197. package/dist/pipeline/handlers/translate.d.ts +17 -0
  198. package/dist/pipeline/handlers/translate.d.ts.map +1 -0
  199. package/dist/pipeline/handlers/translate.js +42 -0
  200. package/dist/pipeline/handlers/translate.js.map +1 -0
  201. package/dist/pipeline/index.d.ts +14 -0
  202. package/dist/pipeline/index.d.ts.map +1 -0
  203. package/dist/pipeline/index.js +16 -0
  204. package/dist/pipeline/index.js.map +1 -0
  205. package/dist/pipeline/stage-handler.d.ts +27 -0
  206. package/dist/pipeline/stage-handler.d.ts.map +1 -0
  207. package/dist/pipeline/stage-handler.js +25 -0
  208. package/dist/pipeline/stage-handler.js.map +1 -0
  209. package/dist/pipeline/types.d.ts +5 -0
  210. package/dist/pipeline/types.d.ts.map +1 -0
  211. package/dist/pipeline/types.js +2 -0
  212. package/dist/pipeline/types.js.map +1 -0
  213. package/dist/plugins/index.d.ts +4 -0
  214. package/dist/plugins/index.d.ts.map +1 -0
  215. package/dist/plugins/index.js +3 -0
  216. package/dist/plugins/index.js.map +1 -0
  217. package/dist/plugins/loader.d.ts +67 -0
  218. package/dist/plugins/loader.d.ts.map +1 -0
  219. package/dist/plugins/loader.js +114 -0
  220. package/dist/plugins/loader.js.map +1 -0
  221. package/dist/plugins/types.d.ts +24 -0
  222. package/dist/plugins/types.d.ts.map +1 -0
  223. package/dist/plugins/types.js +86 -0
  224. package/dist/plugins/types.js.map +1 -0
  225. package/dist/policy/heuristic-injection-detector.d.ts +5 -0
  226. package/dist/policy/heuristic-injection-detector.d.ts.map +1 -0
  227. package/dist/policy/heuristic-injection-detector.js +36 -0
  228. package/dist/policy/heuristic-injection-detector.js.map +1 -0
  229. package/dist/policy/index.d.ts +6 -0
  230. package/dist/policy/index.d.ts.map +1 -0
  231. package/dist/policy/index.js +5 -0
  232. package/dist/policy/index.js.map +1 -0
  233. package/dist/policy/mixed-tool-call-handler.d.ts +15 -0
  234. package/dist/policy/mixed-tool-call-handler.d.ts.map +1 -0
  235. package/dist/policy/mixed-tool-call-handler.js +49 -0
  236. package/dist/policy/mixed-tool-call-handler.js.map +1 -0
  237. package/dist/policy/pending-tool-results-registry.d.ts +25 -0
  238. package/dist/policy/pending-tool-results-registry.d.ts.map +1 -0
  239. package/dist/policy/pending-tool-results-registry.js +50 -0
  240. package/dist/policy/pending-tool-results-registry.js.map +1 -0
  241. package/dist/policy/tool-availability-registry.d.ts +21 -0
  242. package/dist/policy/tool-availability-registry.d.ts.map +1 -0
  243. package/dist/policy/tool-availability-registry.js +77 -0
  244. package/dist/policy/tool-availability-registry.js.map +1 -0
  245. package/dist/policy/tool-policy-guard.d.ts +8 -0
  246. package/dist/policy/tool-policy-guard.d.ts.map +1 -0
  247. package/dist/policy/tool-policy-guard.js +40 -0
  248. package/dist/policy/tool-policy-guard.js.map +1 -0
  249. package/dist/policy/types.d.ts +51 -0
  250. package/dist/policy/types.d.ts.map +1 -0
  251. package/dist/policy/types.js +17 -0
  252. package/dist/policy/types.js.map +1 -0
  253. package/dist/providers.d.ts +48 -0
  254. package/dist/providers.d.ts.map +1 -0
  255. package/dist/providers.js +192 -0
  256. package/dist/providers.js.map +1 -0
  257. package/dist/reranker/index.d.ts +4 -0
  258. package/dist/reranker/index.d.ts.map +1 -0
  259. package/dist/reranker/index.js +3 -0
  260. package/dist/reranker/index.js.map +1 -0
  261. package/dist/reranker/llm-reranker.d.ts +10 -0
  262. package/dist/reranker/llm-reranker.d.ts.map +1 -0
  263. package/dist/reranker/llm-reranker.js +55 -0
  264. package/dist/reranker/llm-reranker.js.map +1 -0
  265. package/dist/reranker/noop-reranker.d.ts +6 -0
  266. package/dist/reranker/noop-reranker.d.ts.map +1 -0
  267. package/dist/reranker/noop-reranker.js +6 -0
  268. package/dist/reranker/noop-reranker.js.map +1 -0
  269. package/dist/reranker/types.d.ts +2 -0
  270. package/dist/reranker/types.d.ts.map +1 -0
  271. package/dist/reranker/types.js +2 -0
  272. package/dist/reranker/types.js.map +1 -0
  273. package/dist/resilience/rate-limiter-llm.d.ts +17 -0
  274. package/dist/resilience/rate-limiter-llm.d.ts.map +1 -0
  275. package/dist/resilience/rate-limiter-llm.js +30 -0
  276. package/dist/resilience/rate-limiter-llm.js.map +1 -0
  277. package/dist/resilience/retry-llm.d.ts +32 -0
  278. package/dist/resilience/retry-llm.d.ts.map +1 -0
  279. package/dist/resilience/retry-llm.js +103 -0
  280. package/dist/resilience/retry-llm.js.map +1 -0
  281. package/dist/resilience/token-bucket-rate-limiter.d.ts +21 -0
  282. package/dist/resilience/token-bucket-rate-limiter.d.ts.map +1 -0
  283. package/dist/resilience/token-bucket-rate-limiter.js +32 -0
  284. package/dist/resilience/token-bucket-rate-limiter.js.map +1 -0
  285. package/dist/session/index.d.ts +4 -0
  286. package/dist/session/index.d.ts.map +1 -0
  287. package/dist/session/index.js +3 -0
  288. package/dist/session/index.js.map +1 -0
  289. package/dist/session/noop-session-manager.d.ts +8 -0
  290. package/dist/session/noop-session-manager.d.ts.map +1 -0
  291. package/dist/session/noop-session-manager.js +11 -0
  292. package/dist/session/noop-session-manager.js.map +1 -0
  293. package/dist/session/session-manager.d.ts +13 -0
  294. package/dist/session/session-manager.d.ts.map +1 -0
  295. package/dist/session/session-manager.js +20 -0
  296. package/dist/session/session-manager.js.map +1 -0
  297. package/dist/session/types.d.ts +2 -0
  298. package/dist/session/types.d.ts.map +1 -0
  299. package/dist/session/types.js +2 -0
  300. package/dist/session/types.js.map +1 -0
  301. package/dist/skills/claude-skill-manager.d.ts +24 -0
  302. package/dist/skills/claude-skill-manager.d.ts.map +1 -0
  303. package/dist/skills/claude-skill-manager.js +81 -0
  304. package/dist/skills/claude-skill-manager.js.map +1 -0
  305. package/dist/skills/codex-skill-manager.d.ts +20 -0
  306. package/dist/skills/codex-skill-manager.d.ts.map +1 -0
  307. package/dist/skills/codex-skill-manager.js +75 -0
  308. package/dist/skills/codex-skill-manager.js.map +1 -0
  309. package/dist/skills/filesystem-skill-manager.d.ts +17 -0
  310. package/dist/skills/filesystem-skill-manager.d.ts.map +1 -0
  311. package/dist/skills/filesystem-skill-manager.js +48 -0
  312. package/dist/skills/filesystem-skill-manager.js.map +1 -0
  313. package/dist/skills/filesystem-skill.d.ts +25 -0
  314. package/dist/skills/filesystem-skill.d.ts.map +1 -0
  315. package/dist/skills/filesystem-skill.js +110 -0
  316. package/dist/skills/filesystem-skill.js.map +1 -0
  317. package/dist/skills/index.d.ts +9 -0
  318. package/dist/skills/index.d.ts.map +1 -0
  319. package/dist/skills/index.js +9 -0
  320. package/dist/skills/index.js.map +1 -0
  321. package/dist/skills/skill-utils.d.ts +15 -0
  322. package/dist/skills/skill-utils.d.ts.map +1 -0
  323. package/dist/skills/skill-utils.js +46 -0
  324. package/dist/skills/skill-utils.js.map +1 -0
  325. package/dist/testing/index.d.ts +118 -0
  326. package/dist/testing/index.d.ts.map +1 -0
  327. package/dist/testing/index.js +351 -0
  328. package/dist/testing/index.js.map +1 -0
  329. package/dist/tracer/index.d.ts +3 -0
  330. package/dist/tracer/index.d.ts.map +1 -0
  331. package/dist/tracer/index.js +2 -0
  332. package/dist/tracer/index.js.map +1 -0
  333. package/dist/tracer/noop-tracer.d.ts +5 -0
  334. package/dist/tracer/noop-tracer.d.ts.map +1 -0
  335. package/dist/tracer/noop-tracer.js +16 -0
  336. package/dist/tracer/noop-tracer.js.map +1 -0
  337. package/dist/tracer/types.d.ts +2 -0
  338. package/dist/tracer/types.d.ts.map +1 -0
  339. package/dist/tracer/types.js +2 -0
  340. package/dist/tracer/types.js.map +1 -0
  341. package/dist/utils/lazy.d.ts +51 -0
  342. package/dist/utils/lazy.d.ts.map +1 -0
  343. package/dist/utils/lazy.js +127 -0
  344. package/dist/utils/lazy.js.map +1 -0
  345. package/dist/utils/parse-frontmatter.d.ts +15 -0
  346. package/dist/utils/parse-frontmatter.d.ts.map +1 -0
  347. package/dist/utils/parse-frontmatter.js +22 -0
  348. package/dist/utils/parse-frontmatter.js.map +1 -0
  349. package/dist/validator/index.d.ts +3 -0
  350. package/dist/validator/index.d.ts.map +1 -0
  351. package/dist/validator/index.js +2 -0
  352. package/dist/validator/index.js.map +1 -0
  353. package/dist/validator/noop-validator.d.ts +6 -0
  354. package/dist/validator/noop-validator.d.ts.map +1 -0
  355. package/dist/validator/noop-validator.js +6 -0
  356. package/dist/validator/noop-validator.js.map +1 -0
  357. package/dist/validator/types.d.ts +3 -0
  358. package/dist/validator/types.d.ts.map +1 -0
  359. package/dist/validator/types.js +2 -0
  360. package/dist/validator/types.js.map +1 -0
  361. package/package.json +8 -8
@@ -0,0 +1,27 @@
1
+ /**
2
+ * RerankHandler — re-scores RAG results using the injected reranker.
3
+ *
4
+ * Reads: `ctx.ragText`, `ctx.ragResults`
5
+ * Writes: `ctx.ragResults` (replaces with re-scored versions)
6
+ *
7
+ * Runs reranking on all stores in parallel. Falls back to original
8
+ * results if reranking fails for a store.
9
+ */
10
+ export class RerankHandler {
11
+ async execute(ctx, _config, span) {
12
+ const entries = Object.entries(ctx.ragResults);
13
+ const reranked = await Promise.all(entries.map(async ([name, results]) => {
14
+ if (results.length > 0) {
15
+ const rr = await ctx.reranker.rerank(ctx.ragText, results, ctx.options);
16
+ return { name, results: rr.ok ? rr.value : results };
17
+ }
18
+ return { name, results };
19
+ }));
20
+ for (const { name, results } of reranked) {
21
+ ctx.ragResults[name] = results;
22
+ span.setAttribute(name, results.length);
23
+ }
24
+ return true;
25
+ }
26
+ }
27
+ //# sourceMappingURL=rerank.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rerank.js","sourceRoot":"","sources":["../../../src/pipeline/handlers/rerank.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAMH,MAAM,OAAO,aAAa;IACxB,KAAK,CAAC,OAAO,CACX,GAAoB,EACpB,OAAgC,EAChC,IAAW;QAEX,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAE/C,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,GAAG,CAChC,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,EAAE;YACpC,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACvB,MAAM,EAAE,GAAG,MAAM,GAAG,CAAC,QAAQ,CAAC,MAAM,CAClC,GAAG,CAAC,OAAO,EACX,OAAO,EACP,GAAG,CAAC,OAAO,CACZ,CAAC;gBACF,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;YACvD,CAAC;YACD,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;QAC3B,CAAC,CAAC,CACH,CAAC;QAEF,KAAK,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,QAAQ,EAAE,CAAC;YACzC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC;YAC/B,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;QAC1C,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;CACF"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * SkillSelectHandler — selects skills based on RAG results and loads their content.
3
+ *
4
+ * Reads: `ctx.skillManager`, `ctx.ragResults.facts`, `ctx.config.mode`, `ctx.inputText`
5
+ * Writes: `ctx.selectedSkills`, `ctx.skillContent`
6
+ *
7
+ * Uses RAG fact IDs with the `skill:` prefix to identify relevant skills.
8
+ * Falls back to all skills in `hard` mode, none otherwise.
9
+ *
10
+ * If no `ctx.skillManager` is configured, this handler is a no-op.
11
+ */
12
+ import type { ISpan } from '../../tracer/types.js';
13
+ import type { PipelineContext } from '../context.js';
14
+ import type { IStageHandler } from '../stage-handler.js';
15
+ export declare class SkillSelectHandler implements IStageHandler {
16
+ execute(ctx: PipelineContext, _config: Record<string, unknown>, span: ISpan): Promise<boolean>;
17
+ }
18
+ //# sourceMappingURL=skill-select.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skill-select.d.ts","sourceRoot":"","sources":["../../../src/pipeline/handlers/skill-select.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEzD,qBAAa,kBAAmB,YAAW,aAAa;IAChD,OAAO,CACX,GAAG,EAAE,eAAe,EACpB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChC,IAAI,EAAE,KAAK,GACV,OAAO,CAAC,OAAO,CAAC;CA2FpB"}
@@ -0,0 +1,88 @@
1
+ /**
2
+ * SkillSelectHandler — selects skills based on RAG results and loads their content.
3
+ *
4
+ * Reads: `ctx.skillManager`, `ctx.ragResults.facts`, `ctx.config.mode`, `ctx.inputText`
5
+ * Writes: `ctx.selectedSkills`, `ctx.skillContent`
6
+ *
7
+ * Uses RAG fact IDs with the `skill:` prefix to identify relevant skills.
8
+ * Falls back to all skills in `hard` mode, none otherwise.
9
+ *
10
+ * If no `ctx.skillManager` is configured, this handler is a no-op.
11
+ */
12
+ import { QueryEmbedding, TextOnlyEmbedding } from '@mcp-abap-adt/llm-agent';
13
+ export class SkillSelectHandler {
14
+ async execute(ctx, _config, span) {
15
+ if (!ctx.skillManager) {
16
+ span.setAttribute('skipped', true);
17
+ return true;
18
+ }
19
+ const mode = ctx.config.mode || 'smart';
20
+ // Discover skills from all RAG results
21
+ const allRagResults = Object.values(ctx.ragResults).flat();
22
+ const ragSkillNames = new Set(allRagResults
23
+ .map((r) => r.metadata.id)
24
+ .filter((id) => id?.startsWith('skill:'))
25
+ .map((id) => id.slice(6)));
26
+ // If no skill:* entries in RAG results, do a dedicated query on all stores.
27
+ if (ragSkillNames.size === 0) {
28
+ const k = _config.k ?? ctx.config.ragQueryK ?? 15;
29
+ const queryText = ctx.ragText || ctx.inputText;
30
+ const storeEntries = Object.entries(ctx.ragStores);
31
+ const embedding = ctx.embedder
32
+ ? new QueryEmbedding(queryText, ctx.embedder, ctx.options)
33
+ : new TextOnlyEmbedding(queryText);
34
+ const queryResults = await Promise.all(storeEntries.map(([, store]) => store.query(embedding, k, ctx.options)));
35
+ for (const result of queryResults) {
36
+ if (result.ok) {
37
+ for (const r of result.value) {
38
+ const id = r.metadata.id;
39
+ if (id?.startsWith('skill:')) {
40
+ ragSkillNames.add(id.slice(6));
41
+ }
42
+ }
43
+ }
44
+ }
45
+ if (ragSkillNames.size > 0) {
46
+ ctx.options?.sessionLogger?.logStep('skill_select_rag_fallback', {
47
+ query: queryText.slice(0, 200),
48
+ k,
49
+ matchedSkills: [...ragSkillNames],
50
+ });
51
+ }
52
+ }
53
+ const allSkillsResult = await ctx.skillManager.listSkills(ctx.options);
54
+ if (!allSkillsResult.ok) {
55
+ ctx.options?.sessionLogger?.logStep('skill_select_error', {
56
+ error: allSkillsResult.error.message,
57
+ });
58
+ return true; // Non-fatal — continue without skills
59
+ }
60
+ const allSkills = allSkillsResult.value;
61
+ // Select skills based on RAG matches or fallback
62
+ ctx.selectedSkills =
63
+ ragSkillNames.size > 0
64
+ ? allSkills.filter((s) => ragSkillNames.has(s.name))
65
+ : mode === 'hard'
66
+ ? allSkills
67
+ : [];
68
+ // Load content for selected skills
69
+ const contentParts = [];
70
+ for (const skill of ctx.selectedSkills) {
71
+ const contentResult = await skill.getContent(ctx.skillArgs || undefined, ctx.options);
72
+ if (contentResult.ok && contentResult.value) {
73
+ contentParts.push(`### Skill: ${skill.name}\n${contentResult.value}`);
74
+ }
75
+ }
76
+ ctx.skillContent = contentParts.join('\n\n');
77
+ span.setAttribute('total_skills', allSkills.length);
78
+ span.setAttribute('selected_skills', ctx.selectedSkills.length);
79
+ ctx.options?.sessionLogger?.logStep('skills_selected', {
80
+ totalSkills: allSkills.length,
81
+ ragMatchedSkills: [...ragSkillNames],
82
+ selectedCount: ctx.selectedSkills.length,
83
+ selectedNames: ctx.selectedSkills.map((s) => s.name),
84
+ });
85
+ return true;
86
+ }
87
+ }
88
+ //# sourceMappingURL=skill-select.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skill-select.js","sourceRoot":"","sources":["../../../src/pipeline/handlers/skill-select.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * SummarizeHandler — condenses conversation history using helper LLM.
3
+ *
4
+ * Reads: `ctx.history`, `ctx.helperLlm`
5
+ * Writes: `ctx.history` (replaces with summarized version)
6
+ *
7
+ * Keeps the last 5 messages verbatim and summarizes the rest into a
8
+ * single system message. Skips silently if no helper LLM is available
9
+ * or history is too short.
10
+ */
11
+ import type { ISpan } from '../../tracer/types.js';
12
+ import type { PipelineContext } from '../context.js';
13
+ import type { IStageHandler } from '../stage-handler.js';
14
+ export declare class SummarizeHandler implements IStageHandler {
15
+ execute(ctx: PipelineContext, config: Record<string, unknown>, span: ISpan): Promise<boolean>;
16
+ }
17
+ //# sourceMappingURL=summarize.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"summarize.d.ts","sourceRoot":"","sources":["../../../src/pipeline/handlers/summarize.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEzD,qBAAa,gBAAiB,YAAW,aAAa;IAC9C,OAAO,CACX,GAAG,EAAE,eAAe,EACpB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,IAAI,EAAE,KAAK,GACV,OAAO,CAAC,OAAO,CAAC;CAwDpB"}
@@ -0,0 +1,56 @@
1
+ /**
2
+ * SummarizeHandler — condenses conversation history using helper LLM.
3
+ *
4
+ * Reads: `ctx.history`, `ctx.helperLlm`
5
+ * Writes: `ctx.history` (replaces with summarized version)
6
+ *
7
+ * Keeps the last 5 messages verbatim and summarizes the rest into a
8
+ * single system message. Skips silently if no helper LLM is available
9
+ * or history is too short.
10
+ */
11
+ export class SummarizeHandler {
12
+ async execute(ctx, config, span) {
13
+ if (!ctx.helperLlm) {
14
+ span.setAttribute('skipped', true);
15
+ span.setAttribute('reason', 'no_helper_llm');
16
+ return true;
17
+ }
18
+ const limit = config.limit ?? ctx.config.historyAutoSummarizeLimit ?? 10;
19
+ if (ctx.history.length <= limit) {
20
+ span.setAttribute('skipped', true);
21
+ span.setAttribute('reason', 'history_under_limit');
22
+ return true;
23
+ }
24
+ const toSummarize = ctx.history.slice(0, -5);
25
+ const recent = ctx.history.slice(-5);
26
+ if (toSummarize.length === 0)
27
+ return true;
28
+ const prompt = ctx.config.historySummaryPrompt ??
29
+ 'Summarize the conversation so far in 2-3 sentences. Focus on the user goals and the current status of the task. Keep technical SAP terms as is.';
30
+ const chatStart = Date.now();
31
+ const res = await ctx.helperLlm.chat([...toSummarize, { role: 'system', content: prompt }], [], ctx.options);
32
+ ctx.requestLogger.logLlmCall({
33
+ component: 'helper',
34
+ model: ctx.helperLlm.model ?? 'unknown',
35
+ promptTokens: res.ok ? (res.value.usage?.promptTokens ?? 0) : 0,
36
+ completionTokens: res.ok ? (res.value.usage?.completionTokens ?? 0) : 0,
37
+ totalTokens: res.ok ? (res.value.usage?.totalTokens ?? 0) : 0,
38
+ durationMs: Date.now() - chatStart,
39
+ });
40
+ if (!res.ok) {
41
+ // Non-fatal — keep original history
42
+ span.setAttribute('fallback', true);
43
+ return true;
44
+ }
45
+ ctx.history = [
46
+ {
47
+ role: 'system',
48
+ content: `Summary of previous conversation: ${res.value.content}`,
49
+ },
50
+ ...recent,
51
+ ];
52
+ span.setAttribute('summarized_count', toSummarize.length);
53
+ return true;
54
+ }
55
+ }
56
+ //# sourceMappingURL=summarize.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"summarize.js","sourceRoot":"","sources":["../../../src/pipeline/handlers/summarize.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAMH,MAAM,OAAO,gBAAgB;IAC3B,KAAK,CAAC,OAAO,CACX,GAAoB,EACpB,MAA+B,EAC/B,IAAW;QAEX,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;YACnB,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;YACnC,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,eAAe,CAAC,CAAC;YAC7C,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,KAAK,GACR,MAAM,CAAC,KAAgB,IAAI,GAAG,CAAC,MAAM,CAAC,yBAAyB,IAAI,EAAE,CAAC;QAEzE,IAAI,GAAG,CAAC,OAAO,CAAC,MAAM,IAAI,KAAK,EAAE,CAAC;YAChC,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;YACnC,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,qBAAqB,CAAC,CAAC;YACnD,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,WAAW,GAAG,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAC7C,MAAM,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACrC,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC;QAE1C,MAAM,MAAM,GACV,GAAG,CAAC,MAAM,CAAC,oBAAoB;YAC/B,iJAAiJ,CAAC;QAEpJ,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC7B,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC,SAAS,CAAC,IAAI,CAClC,CAAC,GAAG,WAAW,EAAE,EAAE,IAAI,EAAE,QAAiB,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,EAC9D,EAAE,EACF,GAAG,CAAC,OAAO,CACZ,CAAC;QACF,GAAG,CAAC,aAAa,CAAC,UAAU,CAAC;YAC3B,SAAS,EAAE,QAAQ;YACnB,KAAK,EAAE,GAAG,CAAC,SAAS,CAAC,KAAK,IAAI,SAAS;YACvC,YAAY,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE,YAAY,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC/D,gBAAgB,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE,gBAAgB,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACvE,WAAW,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE,WAAW,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC7D,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;SACnC,CAAC,CAAC;QAEH,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;YACZ,oCAAoC;YACpC,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;YACpC,OAAO,IAAI,CAAC;QACd,CAAC;QAED,GAAG,CAAC,OAAO,GAAG;YACZ;gBACE,IAAI,EAAE,QAAiB;gBACvB,OAAO,EAAE,qCAAqC,GAAG,CAAC,KAAK,CAAC,OAAO,EAAE;aAClE;YACD,GAAG,MAAM;SACV,CAAC;QAEF,IAAI,CAAC,YAAY,CAAC,kBAAkB,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;QAC1D,OAAO,IAAI,CAAC;IACd,CAAC;CACF"}
@@ -0,0 +1,32 @@
1
+ /**
2
+ * ToolLoopHandler — streaming LLM call + MCP tool execution loop.
3
+ *
4
+ * This is the "terminal" pipeline stage. It takes over the streaming yield
5
+ * mechanism to push SSE chunks back to the consumer.
6
+ *
7
+ * Reads: `ctx.assembledMessages`, `ctx.activeTools`, `ctx.toolClientMap`,
8
+ * `ctx.externalTools`, `ctx.mainLlm`
9
+ * Writes: yields chunks via `ctx.yield()`, updates `ctx.timing`
10
+ *
11
+ * ## Config
12
+ *
13
+ * | Field | Type | Default | Description |
14
+ * |--------------------|--------|-------------|---------------------------------|
15
+ * | `maxIterations` | number | from ctx | Max tool-loop iterations |
16
+ * | `maxToolCalls` | number | from ctx | Max total tool calls per request|
17
+ * | `heartbeatIntervalMs` | number | 5000 | SSE heartbeat interval (ms) |
18
+ *
19
+ * ## Includes
20
+ *
21
+ * - Output validation (re-prompts on invalid LLM output)
22
+ * - Tool call classification (internal / external / hallucinated / blocked)
23
+ * - Concurrent tool execution with heartbeat
24
+ * - Tool availability tracking (temporary blacklist)
25
+ */
26
+ import type { ISpan } from '../../tracer/types.js';
27
+ import type { PipelineContext } from '../context.js';
28
+ import type { IStageHandler } from '../stage-handler.js';
29
+ export declare class ToolLoopHandler implements IStageHandler {
30
+ execute(ctx: PipelineContext, config: Record<string, unknown>, parentSpan: ISpan): Promise<boolean>;
31
+ }
32
+ //# sourceMappingURL=tool-loop.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-loop.d.ts","sourceRoot":"","sources":["../../../src/pipeline/handlers/tool-loop.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAgBH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAqDzD,qBAAa,eAAgB,YAAW,aAAa;IAC7C,OAAO,CACX,GAAG,EAAE,eAAe,EACpB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,UAAU,EAAE,KAAK,GAChB,OAAO,CAAC,OAAO,CAAC;CAyxBpB"}