@mcp-abap-adt/llm-agent-server 10.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (566) hide show
  1. package/README.md +13 -0
  2. package/bin/llm-agent +2 -0
  3. package/bin/llm-agent-check +2 -0
  4. package/dist/agent.d.ts +49 -0
  5. package/dist/agent.d.ts.map +1 -0
  6. package/dist/agent.js +97 -0
  7. package/dist/agent.js.map +1 -0
  8. package/dist/agents/anthropic-agent.d.ts +33 -0
  9. package/dist/agents/anthropic-agent.d.ts.map +1 -0
  10. package/dist/agents/anthropic-agent.js +138 -0
  11. package/dist/agents/anthropic-agent.js.map +1 -0
  12. package/dist/agents/base.d.ts +90 -0
  13. package/dist/agents/base.d.ts.map +1 -0
  14. package/dist/agents/base.js +107 -0
  15. package/dist/agents/base.js.map +1 -0
  16. package/dist/agents/deepseek-agent.d.ts +31 -0
  17. package/dist/agents/deepseek-agent.d.ts.map +1 -0
  18. package/dist/agents/deepseek-agent.js +121 -0
  19. package/dist/agents/deepseek-agent.js.map +1 -0
  20. package/dist/agents/index.d.ts +10 -0
  21. package/dist/agents/index.d.ts.map +1 -0
  22. package/dist/agents/index.js +10 -0
  23. package/dist/agents/index.js.map +1 -0
  24. package/dist/agents/openai-agent.d.ts +32 -0
  25. package/dist/agents/openai-agent.d.ts.map +1 -0
  26. package/dist/agents/openai-agent.js +122 -0
  27. package/dist/agents/openai-agent.js.map +1 -0
  28. package/dist/agents/prompt-based-agent.d.ts +29 -0
  29. package/dist/agents/prompt-based-agent.d.ts.map +1 -0
  30. package/dist/agents/prompt-based-agent.js +67 -0
  31. package/dist/agents/prompt-based-agent.js.map +1 -0
  32. package/dist/agents/sap-core-ai-agent.d.ts +41 -0
  33. package/dist/agents/sap-core-ai-agent.d.ts.map +1 -0
  34. package/dist/agents/sap-core-ai-agent.js +151 -0
  35. package/dist/agents/sap-core-ai-agent.js.map +1 -0
  36. package/dist/cli.d.ts +53 -0
  37. package/dist/cli.d.ts.map +1 -0
  38. package/dist/cli.js +338 -0
  39. package/dist/cli.js.map +1 -0
  40. package/dist/generated/version.d.ts +2 -0
  41. package/dist/generated/version.d.ts.map +1 -0
  42. package/dist/generated/version.js +3 -0
  43. package/dist/generated/version.js.map +1 -0
  44. package/dist/index.d.ts +75 -0
  45. package/dist/index.d.ts.map +1 -0
  46. package/dist/index.js +78 -0
  47. package/dist/index.js.map +1 -0
  48. package/dist/llm-providers/anthropic.d.ts +25 -0
  49. package/dist/llm-providers/anthropic.d.ts.map +1 -0
  50. package/dist/llm-providers/anthropic.js +202 -0
  51. package/dist/llm-providers/anthropic.js.map +1 -0
  52. package/dist/llm-providers/base.d.ts +33 -0
  53. package/dist/llm-providers/base.d.ts.map +1 -0
  54. package/dist/llm-providers/base.js +18 -0
  55. package/dist/llm-providers/base.js.map +1 -0
  56. package/dist/llm-providers/deepseek.d.ts +24 -0
  57. package/dist/llm-providers/deepseek.d.ts.map +1 -0
  58. package/dist/llm-providers/deepseek.js +60 -0
  59. package/dist/llm-providers/deepseek.js.map +1 -0
  60. package/dist/llm-providers/index.d.ts +13 -0
  61. package/dist/llm-providers/index.d.ts.map +1 -0
  62. package/dist/llm-providers/index.js +15 -0
  63. package/dist/llm-providers/index.js.map +1 -0
  64. package/dist/llm-providers/openai.d.ts +34 -0
  65. package/dist/llm-providers/openai.d.ts.map +1 -0
  66. package/dist/llm-providers/openai.js +193 -0
  67. package/dist/llm-providers/openai.js.map +1 -0
  68. package/dist/llm-providers/sap-core-ai.d.ts +90 -0
  69. package/dist/llm-providers/sap-core-ai.d.ts.map +1 -0
  70. package/dist/llm-providers/sap-core-ai.js +394 -0
  71. package/dist/llm-providers/sap-core-ai.js.map +1 -0
  72. package/dist/mcp/client.d.ts +133 -0
  73. package/dist/mcp/client.d.ts.map +1 -0
  74. package/dist/mcp/client.js +314 -0
  75. package/dist/mcp/client.js.map +1 -0
  76. package/dist/smart-agent/adapters/cline-client-adapter.d.ts +18 -0
  77. package/dist/smart-agent/adapters/cline-client-adapter.d.ts.map +1 -0
  78. package/dist/smart-agent/adapters/cline-client-adapter.js +21 -0
  79. package/dist/smart-agent/adapters/cline-client-adapter.js.map +1 -0
  80. package/dist/smart-agent/adapters/index.d.ts +3 -0
  81. package/dist/smart-agent/adapters/index.d.ts.map +1 -0
  82. package/dist/smart-agent/adapters/index.js +3 -0
  83. package/dist/smart-agent/adapters/index.js.map +1 -0
  84. package/dist/smart-agent/adapters/llm-adapter.d.ts +24 -0
  85. package/dist/smart-agent/adapters/llm-adapter.d.ts.map +1 -0
  86. package/dist/smart-agent/adapters/llm-adapter.js +345 -0
  87. package/dist/smart-agent/adapters/llm-adapter.js.map +1 -0
  88. package/dist/smart-agent/adapters/mcp-client-adapter.d.ts +16 -0
  89. package/dist/smart-agent/adapters/mcp-client-adapter.d.ts.map +1 -0
  90. package/dist/smart-agent/adapters/mcp-client-adapter.js +95 -0
  91. package/dist/smart-agent/adapters/mcp-client-adapter.js.map +1 -0
  92. package/dist/smart-agent/adapters/non-streaming-llm.d.ts +18 -0
  93. package/dist/smart-agent/adapters/non-streaming-llm.d.ts.map +1 -0
  94. package/dist/smart-agent/adapters/non-streaming-llm.js +44 -0
  95. package/dist/smart-agent/adapters/non-streaming-llm.js.map +1 -0
  96. package/dist/smart-agent/agent.d.ts +229 -0
  97. package/dist/smart-agent/agent.d.ts.map +1 -0
  98. package/dist/smart-agent/agent.js +1538 -0
  99. package/dist/smart-agent/agent.js.map +1 -0
  100. package/dist/smart-agent/api-adapters/anthropic-adapter.d.ts +10 -0
  101. package/dist/smart-agent/api-adapters/anthropic-adapter.d.ts.map +1 -0
  102. package/dist/smart-agent/api-adapters/anthropic-adapter.js +356 -0
  103. package/dist/smart-agent/api-adapters/anthropic-adapter.js.map +1 -0
  104. package/dist/smart-agent/api-adapters/index.d.ts +3 -0
  105. package/dist/smart-agent/api-adapters/index.d.ts.map +1 -0
  106. package/dist/smart-agent/api-adapters/index.js +3 -0
  107. package/dist/smart-agent/api-adapters/index.js.map +1 -0
  108. package/dist/smart-agent/api-adapters/openai-adapter.d.ts +10 -0
  109. package/dist/smart-agent/api-adapters/openai-adapter.d.ts.map +1 -0
  110. package/dist/smart-agent/api-adapters/openai-adapter.js +277 -0
  111. package/dist/smart-agent/api-adapters/openai-adapter.js.map +1 -0
  112. package/dist/smart-agent/builder.d.ts +281 -0
  113. package/dist/smart-agent/builder.d.ts.map +1 -0
  114. package/dist/smart-agent/builder.js +942 -0
  115. package/dist/smart-agent/builder.js.map +1 -0
  116. package/dist/smart-agent/cache/index.d.ts +4 -0
  117. package/dist/smart-agent/cache/index.d.ts.map +1 -0
  118. package/dist/smart-agent/cache/index.js +3 -0
  119. package/dist/smart-agent/cache/index.js.map +1 -0
  120. package/dist/smart-agent/cache/noop-tool-cache.d.ts +7 -0
  121. package/dist/smart-agent/cache/noop-tool-cache.d.ts.map +1 -0
  122. package/dist/smart-agent/cache/noop-tool-cache.js +8 -0
  123. package/dist/smart-agent/cache/noop-tool-cache.js.map +1 -0
  124. package/dist/smart-agent/cache/tool-cache.d.ts +14 -0
  125. package/dist/smart-agent/cache/tool-cache.d.ts.map +1 -0
  126. package/dist/smart-agent/cache/tool-cache.js +32 -0
  127. package/dist/smart-agent/cache/tool-cache.js.map +1 -0
  128. package/dist/smart-agent/cache/types.d.ts +7 -0
  129. package/dist/smart-agent/cache/types.d.ts.map +1 -0
  130. package/dist/smart-agent/cache/types.js +2 -0
  131. package/dist/smart-agent/cache/types.js.map +1 -0
  132. package/dist/smart-agent/check-models-cli.d.ts +14 -0
  133. package/dist/smart-agent/check-models-cli.d.ts.map +1 -0
  134. package/dist/smart-agent/check-models-cli.js +237 -0
  135. package/dist/smart-agent/check-models-cli.js.map +1 -0
  136. package/dist/smart-agent/classifier/index.d.ts +3 -0
  137. package/dist/smart-agent/classifier/index.d.ts.map +1 -0
  138. package/dist/smart-agent/classifier/index.js +2 -0
  139. package/dist/smart-agent/classifier/index.js.map +1 -0
  140. package/dist/smart-agent/classifier/llm-classifier.d.ts +20 -0
  141. package/dist/smart-agent/classifier/llm-classifier.d.ts.map +1 -0
  142. package/dist/smart-agent/classifier/llm-classifier.js +128 -0
  143. package/dist/smart-agent/classifier/llm-classifier.js.map +1 -0
  144. package/dist/smart-agent/cli.d.ts +65 -0
  145. package/dist/smart-agent/cli.d.ts.map +1 -0
  146. package/dist/smart-agent/cli.js +199 -0
  147. package/dist/smart-agent/cli.js.map +1 -0
  148. package/dist/smart-agent/config/config-watcher.d.ts +54 -0
  149. package/dist/smart-agent/config/config-watcher.d.ts.map +1 -0
  150. package/dist/smart-agent/config/config-watcher.js +107 -0
  151. package/dist/smart-agent/config/config-watcher.js.map +1 -0
  152. package/dist/smart-agent/config/index.d.ts +2 -0
  153. package/dist/smart-agent/config/index.d.ts.map +1 -0
  154. package/dist/smart-agent/config/index.js +2 -0
  155. package/dist/smart-agent/config/index.js.map +1 -0
  156. package/dist/smart-agent/config.d.ts +35 -0
  157. package/dist/smart-agent/config.d.ts.map +1 -0
  158. package/dist/smart-agent/config.js +360 -0
  159. package/dist/smart-agent/config.js.map +1 -0
  160. package/dist/smart-agent/context/context-assembler.d.ts +49 -0
  161. package/dist/smart-agent/context/context-assembler.d.ts.map +1 -0
  162. package/dist/smart-agent/context/context-assembler.js +184 -0
  163. package/dist/smart-agent/context/context-assembler.js.map +1 -0
  164. package/dist/smart-agent/context/index.d.ts +3 -0
  165. package/dist/smart-agent/context/index.d.ts.map +1 -0
  166. package/dist/smart-agent/context/index.js +2 -0
  167. package/dist/smart-agent/context/index.js.map +1 -0
  168. package/dist/smart-agent/health/health-checker.d.ts +21 -0
  169. package/dist/smart-agent/health/health-checker.d.ts.map +1 -0
  170. package/dist/smart-agent/health/health-checker.js +52 -0
  171. package/dist/smart-agent/health/health-checker.js.map +1 -0
  172. package/dist/smart-agent/health/index.d.ts +3 -0
  173. package/dist/smart-agent/health/index.d.ts.map +1 -0
  174. package/dist/smart-agent/health/index.js +2 -0
  175. package/dist/smart-agent/health/index.js.map +1 -0
  176. package/dist/smart-agent/health/types.d.ts +25 -0
  177. package/dist/smart-agent/health/types.d.ts.map +1 -0
  178. package/dist/smart-agent/health/types.js +2 -0
  179. package/dist/smart-agent/health/types.js.map +1 -0
  180. package/dist/smart-agent/history/history-memory.d.ts +12 -0
  181. package/dist/smart-agent/history/history-memory.d.ts.map +1 -0
  182. package/dist/smart-agent/history/history-memory.js +26 -0
  183. package/dist/smart-agent/history/history-memory.js.map +1 -0
  184. package/dist/smart-agent/history/history-summarizer.d.ts +10 -0
  185. package/dist/smart-agent/history/history-summarizer.d.ts.map +1 -0
  186. package/dist/smart-agent/history/history-summarizer.js +27 -0
  187. package/dist/smart-agent/history/history-summarizer.js.map +1 -0
  188. package/dist/smart-agent/history/index.d.ts +3 -0
  189. package/dist/smart-agent/history/index.d.ts.map +1 -0
  190. package/dist/smart-agent/history/index.js +3 -0
  191. package/dist/smart-agent/history/index.js.map +1 -0
  192. package/dist/smart-agent/interfaces/api-adapter.d.ts +36 -0
  193. package/dist/smart-agent/interfaces/api-adapter.d.ts.map +1 -0
  194. package/dist/smart-agent/interfaces/api-adapter.js +9 -0
  195. package/dist/smart-agent/interfaces/api-adapter.js.map +1 -0
  196. package/dist/smart-agent/interfaces/client-adapter.d.ts +23 -0
  197. package/dist/smart-agent/interfaces/client-adapter.d.ts.map +1 -0
  198. package/dist/smart-agent/interfaces/client-adapter.js +10 -0
  199. package/dist/smart-agent/interfaces/client-adapter.js.map +1 -0
  200. package/dist/smart-agent/interfaces/mcp-connection-strategy.d.ts +27 -0
  201. package/dist/smart-agent/interfaces/mcp-connection-strategy.d.ts.map +1 -0
  202. package/dist/smart-agent/interfaces/mcp-connection-strategy.js +2 -0
  203. package/dist/smart-agent/interfaces/mcp-connection-strategy.js.map +1 -0
  204. package/dist/smart-agent/interfaces/model-resolver.d.ts +9 -0
  205. package/dist/smart-agent/interfaces/model-resolver.d.ts.map +1 -0
  206. package/dist/smart-agent/interfaces/model-resolver.js +2 -0
  207. package/dist/smart-agent/interfaces/model-resolver.js.map +1 -0
  208. package/dist/smart-agent/interfaces/pipeline.d.ts +125 -0
  209. package/dist/smart-agent/interfaces/pipeline.d.ts.map +1 -0
  210. package/dist/smart-agent/interfaces/pipeline.js +13 -0
  211. package/dist/smart-agent/interfaces/pipeline.js.map +1 -0
  212. package/dist/smart-agent/logger/console-logger.d.ts +7 -0
  213. package/dist/smart-agent/logger/console-logger.d.ts.map +1 -0
  214. package/dist/smart-agent/logger/console-logger.js +12 -0
  215. package/dist/smart-agent/logger/console-logger.js.map +1 -0
  216. package/dist/smart-agent/logger/default-request-logger.d.ts +17 -0
  217. package/dist/smart-agent/logger/default-request-logger.d.ts.map +1 -0
  218. package/dist/smart-agent/logger/default-request-logger.js +86 -0
  219. package/dist/smart-agent/logger/default-request-logger.js.map +1 -0
  220. package/dist/smart-agent/logger/index.d.ts +3 -0
  221. package/dist/smart-agent/logger/index.d.ts.map +1 -0
  222. package/dist/smart-agent/logger/index.js +2 -0
  223. package/dist/smart-agent/logger/index.js.map +1 -0
  224. package/dist/smart-agent/logger/noop-request-logger.d.ts +11 -0
  225. package/dist/smart-agent/logger/noop-request-logger.d.ts.map +1 -0
  226. package/dist/smart-agent/logger/noop-request-logger.js +20 -0
  227. package/dist/smart-agent/logger/noop-request-logger.js.map +1 -0
  228. package/dist/smart-agent/logger/session-logger.d.ts +10 -0
  229. package/dist/smart-agent/logger/session-logger.d.ts.map +1 -0
  230. package/dist/smart-agent/logger/session-logger.js +40 -0
  231. package/dist/smart-agent/logger/session-logger.js.map +1 -0
  232. package/dist/smart-agent/logger/types.d.ts +63 -0
  233. package/dist/smart-agent/logger/types.d.ts.map +1 -0
  234. package/dist/smart-agent/logger/types.js +2 -0
  235. package/dist/smart-agent/logger/types.js.map +1 -0
  236. package/dist/smart-agent/mcp-client-factory.d.ts +3 -0
  237. package/dist/smart-agent/mcp-client-factory.d.ts.map +1 -0
  238. package/dist/smart-agent/mcp-client-factory.js +21 -0
  239. package/dist/smart-agent/mcp-client-factory.js.map +1 -0
  240. package/dist/smart-agent/metrics/in-memory-metrics.d.ts +58 -0
  241. package/dist/smart-agent/metrics/in-memory-metrics.d.ts.map +1 -0
  242. package/dist/smart-agent/metrics/in-memory-metrics.js +78 -0
  243. package/dist/smart-agent/metrics/in-memory-metrics.js.map +1 -0
  244. package/dist/smart-agent/metrics/index.d.ts +4 -0
  245. package/dist/smart-agent/metrics/index.d.ts.map +1 -0
  246. package/dist/smart-agent/metrics/index.js +3 -0
  247. package/dist/smart-agent/metrics/index.js.map +1 -0
  248. package/dist/smart-agent/metrics/noop-metrics.d.ts +17 -0
  249. package/dist/smart-agent/metrics/noop-metrics.d.ts.map +1 -0
  250. package/dist/smart-agent/metrics/noop-metrics.js +22 -0
  251. package/dist/smart-agent/metrics/noop-metrics.js.map +1 -0
  252. package/dist/smart-agent/metrics/types.d.ts +36 -0
  253. package/dist/smart-agent/metrics/types.d.ts.map +1 -0
  254. package/dist/smart-agent/metrics/types.js +9 -0
  255. package/dist/smart-agent/metrics/types.js.map +1 -0
  256. package/dist/smart-agent/otel/index.d.ts +2 -0
  257. package/dist/smart-agent/otel/index.d.ts.map +1 -0
  258. package/dist/smart-agent/otel/index.js +2 -0
  259. package/dist/smart-agent/otel/index.js.map +1 -0
  260. package/dist/smart-agent/otel/otel-tracer-adapter.d.ts +15 -0
  261. package/dist/smart-agent/otel/otel-tracer-adapter.d.ts.map +1 -0
  262. package/dist/smart-agent/otel/otel-tracer-adapter.js +62 -0
  263. package/dist/smart-agent/otel/otel-tracer-adapter.js.map +1 -0
  264. package/dist/smart-agent/pipeline/condition-evaluator.d.ts +35 -0
  265. package/dist/smart-agent/pipeline/condition-evaluator.d.ts.map +1 -0
  266. package/dist/smart-agent/pipeline/condition-evaluator.js +143 -0
  267. package/dist/smart-agent/pipeline/condition-evaluator.js.map +1 -0
  268. package/dist/smart-agent/pipeline/context.d.ts +121 -0
  269. package/dist/smart-agent/pipeline/context.d.ts.map +1 -0
  270. package/dist/smart-agent/pipeline/context.js +19 -0
  271. package/dist/smart-agent/pipeline/context.js.map +1 -0
  272. package/dist/smart-agent/pipeline/default-pipeline.d.ts +69 -0
  273. package/dist/smart-agent/pipeline/default-pipeline.d.ts.map +1 -0
  274. package/dist/smart-agent/pipeline/default-pipeline.js +278 -0
  275. package/dist/smart-agent/pipeline/default-pipeline.js.map +1 -0
  276. package/dist/smart-agent/pipeline/executor.d.ts +54 -0
  277. package/dist/smart-agent/pipeline/executor.d.ts.map +1 -0
  278. package/dist/smart-agent/pipeline/executor.js +133 -0
  279. package/dist/smart-agent/pipeline/executor.js.map +1 -0
  280. package/dist/smart-agent/pipeline/handlers/assemble.d.ts +16 -0
  281. package/dist/smart-agent/pipeline/handlers/assemble.d.ts.map +1 -0
  282. package/dist/smart-agent/pipeline/handlers/assemble.js +72 -0
  283. package/dist/smart-agent/pipeline/handlers/assemble.js.map +1 -0
  284. package/dist/smart-agent/pipeline/handlers/build-tool-query.d.ts +30 -0
  285. package/dist/smart-agent/pipeline/handlers/build-tool-query.d.ts.map +1 -0
  286. package/dist/smart-agent/pipeline/handlers/build-tool-query.js +80 -0
  287. package/dist/smart-agent/pipeline/handlers/build-tool-query.js.map +1 -0
  288. package/dist/smart-agent/pipeline/handlers/classify.d.ts +21 -0
  289. package/dist/smart-agent/pipeline/handlers/classify.d.ts.map +1 -0
  290. package/dist/smart-agent/pipeline/handlers/classify.js +60 -0
  291. package/dist/smart-agent/pipeline/handlers/classify.js.map +1 -0
  292. package/dist/smart-agent/pipeline/handlers/expand.d.ts +16 -0
  293. package/dist/smart-agent/pipeline/handlers/expand.d.ts.map +1 -0
  294. package/dist/smart-agent/pipeline/handlers/expand.js +24 -0
  295. package/dist/smart-agent/pipeline/handlers/expand.js.map +1 -0
  296. package/dist/smart-agent/pipeline/handlers/history-upsert.d.ts +29 -0
  297. package/dist/smart-agent/pipeline/handlers/history-upsert.d.ts.map +1 -0
  298. package/dist/smart-agent/pipeline/handlers/history-upsert.js +75 -0
  299. package/dist/smart-agent/pipeline/handlers/history-upsert.js.map +1 -0
  300. package/dist/smart-agent/pipeline/handlers/index.d.ts +31 -0
  301. package/dist/smart-agent/pipeline/handlers/index.d.ts.map +1 -0
  302. package/dist/smart-agent/pipeline/handlers/index.js +44 -0
  303. package/dist/smart-agent/pipeline/handlers/index.js.map +1 -0
  304. package/dist/smart-agent/pipeline/handlers/rag-query.d.ts +27 -0
  305. package/dist/smart-agent/pipeline/handlers/rag-query.d.ts.map +1 -0
  306. package/dist/smart-agent/pipeline/handlers/rag-query.js +117 -0
  307. package/dist/smart-agent/pipeline/handlers/rag-query.js.map +1 -0
  308. package/dist/smart-agent/pipeline/handlers/rerank.d.ts +16 -0
  309. package/dist/smart-agent/pipeline/handlers/rerank.d.ts.map +1 -0
  310. package/dist/smart-agent/pipeline/handlers/rerank.js +27 -0
  311. package/dist/smart-agent/pipeline/handlers/rerank.js.map +1 -0
  312. package/dist/smart-agent/pipeline/handlers/skill-select.d.ts +18 -0
  313. package/dist/smart-agent/pipeline/handlers/skill-select.d.ts.map +1 -0
  314. package/dist/smart-agent/pipeline/handlers/skill-select.js +88 -0
  315. package/dist/smart-agent/pipeline/handlers/skill-select.js.map +1 -0
  316. package/dist/smart-agent/pipeline/handlers/summarize.d.ts +17 -0
  317. package/dist/smart-agent/pipeline/handlers/summarize.d.ts.map +1 -0
  318. package/dist/smart-agent/pipeline/handlers/summarize.js +56 -0
  319. package/dist/smart-agent/pipeline/handlers/summarize.js.map +1 -0
  320. package/dist/smart-agent/pipeline/handlers/tool-loop.d.ts +32 -0
  321. package/dist/smart-agent/pipeline/handlers/tool-loop.d.ts.map +1 -0
  322. package/dist/smart-agent/pipeline/handlers/tool-loop.js +734 -0
  323. package/dist/smart-agent/pipeline/handlers/tool-loop.js.map +1 -0
  324. package/dist/smart-agent/pipeline/handlers/tool-select.d.ts +21 -0
  325. package/dist/smart-agent/pipeline/handlers/tool-select.d.ts.map +1 -0
  326. package/dist/smart-agent/pipeline/handlers/tool-select.js +109 -0
  327. package/dist/smart-agent/pipeline/handlers/tool-select.js.map +1 -0
  328. package/dist/smart-agent/pipeline/handlers/translate.d.ts +17 -0
  329. package/dist/smart-agent/pipeline/handlers/translate.d.ts.map +1 -0
  330. package/dist/smart-agent/pipeline/handlers/translate.js +42 -0
  331. package/dist/smart-agent/pipeline/handlers/translate.js.map +1 -0
  332. package/dist/smart-agent/pipeline/index.d.ts +14 -0
  333. package/dist/smart-agent/pipeline/index.d.ts.map +1 -0
  334. package/dist/smart-agent/pipeline/index.js +16 -0
  335. package/dist/smart-agent/pipeline/index.js.map +1 -0
  336. package/dist/smart-agent/pipeline/stage-handler.d.ts +36 -0
  337. package/dist/smart-agent/pipeline/stage-handler.d.ts.map +1 -0
  338. package/dist/smart-agent/pipeline/stage-handler.js +24 -0
  339. package/dist/smart-agent/pipeline/stage-handler.js.map +1 -0
  340. package/dist/smart-agent/pipeline/types.d.ts +116 -0
  341. package/dist/smart-agent/pipeline/types.d.ts.map +1 -0
  342. package/dist/smart-agent/pipeline/types.js +54 -0
  343. package/dist/smart-agent/pipeline/types.js.map +1 -0
  344. package/dist/smart-agent/pipeline.d.ts +82 -0
  345. package/dist/smart-agent/pipeline.d.ts.map +1 -0
  346. package/dist/smart-agent/pipeline.js +8 -0
  347. package/dist/smart-agent/pipeline.js.map +1 -0
  348. package/dist/smart-agent/plugins/index.d.ts +4 -0
  349. package/dist/smart-agent/plugins/index.d.ts.map +1 -0
  350. package/dist/smart-agent/plugins/index.js +3 -0
  351. package/dist/smart-agent/plugins/index.js.map +1 -0
  352. package/dist/smart-agent/plugins/loader.d.ts +67 -0
  353. package/dist/smart-agent/plugins/loader.d.ts.map +1 -0
  354. package/dist/smart-agent/plugins/loader.js +114 -0
  355. package/dist/smart-agent/plugins/loader.js.map +1 -0
  356. package/dist/smart-agent/plugins/types.d.ts +164 -0
  357. package/dist/smart-agent/plugins/types.d.ts.map +1 -0
  358. package/dist/smart-agent/plugins/types.js +136 -0
  359. package/dist/smart-agent/plugins/types.js.map +1 -0
  360. package/dist/smart-agent/policy/fallback-llm-call-strategy.d.ts +16 -0
  361. package/dist/smart-agent/policy/fallback-llm-call-strategy.d.ts.map +1 -0
  362. package/dist/smart-agent/policy/fallback-llm-call-strategy.js +66 -0
  363. package/dist/smart-agent/policy/fallback-llm-call-strategy.js.map +1 -0
  364. package/dist/smart-agent/policy/heuristic-injection-detector.d.ts +5 -0
  365. package/dist/smart-agent/policy/heuristic-injection-detector.d.ts.map +1 -0
  366. package/dist/smart-agent/policy/heuristic-injection-detector.js +36 -0
  367. package/dist/smart-agent/policy/heuristic-injection-detector.js.map +1 -0
  368. package/dist/smart-agent/policy/index.d.ts +6 -0
  369. package/dist/smart-agent/policy/index.d.ts.map +1 -0
  370. package/dist/smart-agent/policy/index.js +5 -0
  371. package/dist/smart-agent/policy/index.js.map +1 -0
  372. package/dist/smart-agent/policy/mixed-tool-call-handler.d.ts +16 -0
  373. package/dist/smart-agent/policy/mixed-tool-call-handler.d.ts.map +1 -0
  374. package/dist/smart-agent/policy/mixed-tool-call-handler.js +49 -0
  375. package/dist/smart-agent/policy/mixed-tool-call-handler.js.map +1 -0
  376. package/dist/smart-agent/policy/non-streaming-llm-call-strategy.d.ts +6 -0
  377. package/dist/smart-agent/policy/non-streaming-llm-call-strategy.d.ts.map +1 -0
  378. package/dist/smart-agent/policy/non-streaming-llm-call-strategy.js +21 -0
  379. package/dist/smart-agent/policy/non-streaming-llm-call-strategy.js.map +1 -0
  380. package/dist/smart-agent/policy/pending-tool-results-registry.d.ts +25 -0
  381. package/dist/smart-agent/policy/pending-tool-results-registry.d.ts.map +1 -0
  382. package/dist/smart-agent/policy/pending-tool-results-registry.js +50 -0
  383. package/dist/smart-agent/policy/pending-tool-results-registry.js.map +1 -0
  384. package/dist/smart-agent/policy/streaming-llm-call-strategy.d.ts +6 -0
  385. package/dist/smart-agent/policy/streaming-llm-call-strategy.d.ts.map +1 -0
  386. package/dist/smart-agent/policy/streaming-llm-call-strategy.js +7 -0
  387. package/dist/smart-agent/policy/streaming-llm-call-strategy.js.map +1 -0
  388. package/dist/smart-agent/policy/tool-availability-registry.d.ts +21 -0
  389. package/dist/smart-agent/policy/tool-availability-registry.d.ts.map +1 -0
  390. package/dist/smart-agent/policy/tool-availability-registry.js +77 -0
  391. package/dist/smart-agent/policy/tool-availability-registry.js.map +1 -0
  392. package/dist/smart-agent/policy/tool-policy-guard.d.ts +8 -0
  393. package/dist/smart-agent/policy/tool-policy-guard.d.ts.map +1 -0
  394. package/dist/smart-agent/policy/tool-policy-guard.js +40 -0
  395. package/dist/smart-agent/policy/tool-policy-guard.js.map +1 -0
  396. package/dist/smart-agent/policy/types.d.ts +51 -0
  397. package/dist/smart-agent/policy/types.d.ts.map +1 -0
  398. package/dist/smart-agent/policy/types.js +17 -0
  399. package/dist/smart-agent/policy/types.js.map +1 -0
  400. package/dist/smart-agent/providers.d.ts +98 -0
  401. package/dist/smart-agent/providers.d.ts.map +1 -0
  402. package/dist/smart-agent/providers.js +245 -0
  403. package/dist/smart-agent/providers.js.map +1 -0
  404. package/dist/smart-agent/reranker/index.d.ts +4 -0
  405. package/dist/smart-agent/reranker/index.d.ts.map +1 -0
  406. package/dist/smart-agent/reranker/index.js +3 -0
  407. package/dist/smart-agent/reranker/index.js.map +1 -0
  408. package/dist/smart-agent/reranker/llm-reranker.d.ts +10 -0
  409. package/dist/smart-agent/reranker/llm-reranker.d.ts.map +1 -0
  410. package/dist/smart-agent/reranker/llm-reranker.js +55 -0
  411. package/dist/smart-agent/reranker/llm-reranker.js.map +1 -0
  412. package/dist/smart-agent/reranker/noop-reranker.d.ts +6 -0
  413. package/dist/smart-agent/reranker/noop-reranker.d.ts.map +1 -0
  414. package/dist/smart-agent/reranker/noop-reranker.js +6 -0
  415. package/dist/smart-agent/reranker/noop-reranker.js.map +1 -0
  416. package/dist/smart-agent/reranker/types.d.ts +5 -0
  417. package/dist/smart-agent/reranker/types.d.ts.map +1 -0
  418. package/dist/smart-agent/reranker/types.js +2 -0
  419. package/dist/smart-agent/reranker/types.js.map +1 -0
  420. package/dist/smart-agent/resilience/circuit-breaker-embedder.d.ts +16 -0
  421. package/dist/smart-agent/resilience/circuit-breaker-embedder.d.ts.map +1 -0
  422. package/dist/smart-agent/resilience/circuit-breaker-embedder.js +47 -0
  423. package/dist/smart-agent/resilience/circuit-breaker-embedder.js.map +1 -0
  424. package/dist/smart-agent/resilience/circuit-breaker-llm.d.ts +19 -0
  425. package/dist/smart-agent/resilience/circuit-breaker-llm.d.ts.map +1 -0
  426. package/dist/smart-agent/resilience/circuit-breaker-llm.js +72 -0
  427. package/dist/smart-agent/resilience/circuit-breaker-llm.js.map +1 -0
  428. package/dist/smart-agent/resilience/circuit-breaker.d.ts +36 -0
  429. package/dist/smart-agent/resilience/circuit-breaker.d.ts.map +1 -0
  430. package/dist/smart-agent/resilience/circuit-breaker.js +60 -0
  431. package/dist/smart-agent/resilience/circuit-breaker.js.map +1 -0
  432. package/dist/smart-agent/resilience/fallback-rag.d.ts +21 -0
  433. package/dist/smart-agent/resilience/fallback-rag.d.ts.map +1 -0
  434. package/dist/smart-agent/resilience/fallback-rag.js +80 -0
  435. package/dist/smart-agent/resilience/fallback-rag.js.map +1 -0
  436. package/dist/smart-agent/resilience/index.d.ts +5 -0
  437. package/dist/smart-agent/resilience/index.d.ts.map +1 -0
  438. package/dist/smart-agent/resilience/index.js +5 -0
  439. package/dist/smart-agent/resilience/index.js.map +1 -0
  440. package/dist/smart-agent/resilience/rate-limiter-llm.d.ts +17 -0
  441. package/dist/smart-agent/resilience/rate-limiter-llm.d.ts.map +1 -0
  442. package/dist/smart-agent/resilience/rate-limiter-llm.js +30 -0
  443. package/dist/smart-agent/resilience/rate-limiter-llm.js.map +1 -0
  444. package/dist/smart-agent/resilience/retry-llm.d.ts +32 -0
  445. package/dist/smart-agent/resilience/retry-llm.d.ts.map +1 -0
  446. package/dist/smart-agent/resilience/retry-llm.js +103 -0
  447. package/dist/smart-agent/resilience/retry-llm.js.map +1 -0
  448. package/dist/smart-agent/resilience/token-bucket-rate-limiter.d.ts +21 -0
  449. package/dist/smart-agent/resilience/token-bucket-rate-limiter.d.ts.map +1 -0
  450. package/dist/smart-agent/resilience/token-bucket-rate-limiter.js +32 -0
  451. package/dist/smart-agent/resilience/token-bucket-rate-limiter.js.map +1 -0
  452. package/dist/smart-agent/server.d.ts +19 -0
  453. package/dist/smart-agent/server.d.ts.map +1 -0
  454. package/dist/smart-agent/server.js +349 -0
  455. package/dist/smart-agent/server.js.map +1 -0
  456. package/dist/smart-agent/session/index.d.ts +4 -0
  457. package/dist/smart-agent/session/index.d.ts.map +1 -0
  458. package/dist/smart-agent/session/index.js +3 -0
  459. package/dist/smart-agent/session/index.js.map +1 -0
  460. package/dist/smart-agent/session/noop-session-manager.d.ts +8 -0
  461. package/dist/smart-agent/session/noop-session-manager.d.ts.map +1 -0
  462. package/dist/smart-agent/session/noop-session-manager.js +11 -0
  463. package/dist/smart-agent/session/noop-session-manager.js.map +1 -0
  464. package/dist/smart-agent/session/session-manager.d.ts +13 -0
  465. package/dist/smart-agent/session/session-manager.d.ts.map +1 -0
  466. package/dist/smart-agent/session/session-manager.js +20 -0
  467. package/dist/smart-agent/session/session-manager.js.map +1 -0
  468. package/dist/smart-agent/session/types.d.ts +7 -0
  469. package/dist/smart-agent/session/types.d.ts.map +1 -0
  470. package/dist/smart-agent/session/types.js +2 -0
  471. package/dist/smart-agent/session/types.js.map +1 -0
  472. package/dist/smart-agent/skills/claude-skill-manager.d.ts +24 -0
  473. package/dist/smart-agent/skills/claude-skill-manager.d.ts.map +1 -0
  474. package/dist/smart-agent/skills/claude-skill-manager.js +81 -0
  475. package/dist/smart-agent/skills/claude-skill-manager.js.map +1 -0
  476. package/dist/smart-agent/skills/codex-skill-manager.d.ts +20 -0
  477. package/dist/smart-agent/skills/codex-skill-manager.d.ts.map +1 -0
  478. package/dist/smart-agent/skills/codex-skill-manager.js +75 -0
  479. package/dist/smart-agent/skills/codex-skill-manager.js.map +1 -0
  480. package/dist/smart-agent/skills/filesystem-skill-manager.d.ts +17 -0
  481. package/dist/smart-agent/skills/filesystem-skill-manager.d.ts.map +1 -0
  482. package/dist/smart-agent/skills/filesystem-skill-manager.js +48 -0
  483. package/dist/smart-agent/skills/filesystem-skill-manager.js.map +1 -0
  484. package/dist/smart-agent/skills/filesystem-skill.d.ts +25 -0
  485. package/dist/smart-agent/skills/filesystem-skill.d.ts.map +1 -0
  486. package/dist/smart-agent/skills/filesystem-skill.js +110 -0
  487. package/dist/smart-agent/skills/filesystem-skill.js.map +1 -0
  488. package/dist/smart-agent/skills/index.d.ts +9 -0
  489. package/dist/smart-agent/skills/index.d.ts.map +1 -0
  490. package/dist/smart-agent/skills/index.js +9 -0
  491. package/dist/smart-agent/skills/index.js.map +1 -0
  492. package/dist/smart-agent/skills/skill-utils.d.ts +15 -0
  493. package/dist/smart-agent/skills/skill-utils.d.ts.map +1 -0
  494. package/dist/smart-agent/skills/skill-utils.js +46 -0
  495. package/dist/smart-agent/skills/skill-utils.js.map +1 -0
  496. package/dist/smart-agent/smart-server.d.ts +150 -0
  497. package/dist/smart-agent/smart-server.d.ts.map +1 -0
  498. package/dist/smart-agent/smart-server.js +903 -0
  499. package/dist/smart-agent/smart-server.js.map +1 -0
  500. package/dist/smart-agent/strategies/index.d.ts +4 -0
  501. package/dist/smart-agent/strategies/index.d.ts.map +1 -0
  502. package/dist/smart-agent/strategies/index.js +4 -0
  503. package/dist/smart-agent/strategies/index.js.map +1 -0
  504. package/dist/smart-agent/strategies/lazy-connection-strategy.d.ts +15 -0
  505. package/dist/smart-agent/strategies/lazy-connection-strategy.d.ts.map +1 -0
  506. package/dist/smart-agent/strategies/lazy-connection-strategy.js +82 -0
  507. package/dist/smart-agent/strategies/lazy-connection-strategy.js.map +1 -0
  508. package/dist/smart-agent/strategies/noop-connection-strategy.d.ts +6 -0
  509. package/dist/smart-agent/strategies/noop-connection-strategy.d.ts.map +1 -0
  510. package/dist/smart-agent/strategies/noop-connection-strategy.js +6 -0
  511. package/dist/smart-agent/strategies/noop-connection-strategy.js.map +1 -0
  512. package/dist/smart-agent/strategies/periodic-connection-strategy.d.ts +13 -0
  513. package/dist/smart-agent/strategies/periodic-connection-strategy.d.ts.map +1 -0
  514. package/dist/smart-agent/strategies/periodic-connection-strategy.js +40 -0
  515. package/dist/smart-agent/strategies/periodic-connection-strategy.js.map +1 -0
  516. package/dist/smart-agent/testing/index.d.ts +121 -0
  517. package/dist/smart-agent/testing/index.d.ts.map +1 -0
  518. package/dist/smart-agent/testing/index.js +354 -0
  519. package/dist/smart-agent/testing/index.js.map +1 -0
  520. package/dist/smart-agent/tracer/index.d.ts +3 -0
  521. package/dist/smart-agent/tracer/index.d.ts.map +1 -0
  522. package/dist/smart-agent/tracer/index.js +2 -0
  523. package/dist/smart-agent/tracer/index.js.map +1 -0
  524. package/dist/smart-agent/tracer/noop-tracer.d.ts +5 -0
  525. package/dist/smart-agent/tracer/noop-tracer.d.ts.map +1 -0
  526. package/dist/smart-agent/tracer/noop-tracer.js +16 -0
  527. package/dist/smart-agent/tracer/noop-tracer.js.map +1 -0
  528. package/dist/smart-agent/tracer/types.d.ts +17 -0
  529. package/dist/smart-agent/tracer/types.d.ts.map +1 -0
  530. package/dist/smart-agent/tracer/types.js +2 -0
  531. package/dist/smart-agent/tracer/types.js.map +1 -0
  532. package/dist/smart-agent/utils/external-tools-normalizer.d.ts +15 -0
  533. package/dist/smart-agent/utils/external-tools-normalizer.d.ts.map +1 -0
  534. package/dist/smart-agent/utils/external-tools-normalizer.js +146 -0
  535. package/dist/smart-agent/utils/external-tools-normalizer.js.map +1 -0
  536. package/dist/smart-agent/utils/lazy.d.ts +51 -0
  537. package/dist/smart-agent/utils/lazy.d.ts.map +1 -0
  538. package/dist/smart-agent/utils/lazy.js +127 -0
  539. package/dist/smart-agent/utils/lazy.js.map +1 -0
  540. package/dist/smart-agent/utils/parse-frontmatter.d.ts +15 -0
  541. package/dist/smart-agent/utils/parse-frontmatter.d.ts.map +1 -0
  542. package/dist/smart-agent/utils/parse-frontmatter.js +22 -0
  543. package/dist/smart-agent/utils/parse-frontmatter.js.map +1 -0
  544. package/dist/smart-agent/utils/tool-call-deltas.d.ts +4 -0
  545. package/dist/smart-agent/utils/tool-call-deltas.d.ts.map +1 -0
  546. package/dist/smart-agent/utils/tool-call-deltas.js +25 -0
  547. package/dist/smart-agent/utils/tool-call-deltas.js.map +1 -0
  548. package/dist/smart-agent/validator/index.d.ts +3 -0
  549. package/dist/smart-agent/validator/index.d.ts.map +1 -0
  550. package/dist/smart-agent/validator/index.js +2 -0
  551. package/dist/smart-agent/validator/index.js.map +1 -0
  552. package/dist/smart-agent/validator/noop-validator.d.ts +6 -0
  553. package/dist/smart-agent/validator/noop-validator.d.ts.map +1 -0
  554. package/dist/smart-agent/validator/noop-validator.js +6 -0
  555. package/dist/smart-agent/validator/noop-validator.js.map +1 -0
  556. package/dist/smart-agent/validator/types.d.ts +17 -0
  557. package/dist/smart-agent/validator/types.d.ts.map +1 -0
  558. package/dist/smart-agent/validator/types.js +8 -0
  559. package/dist/smart-agent/validator/types.js.map +1 -0
  560. package/dist/smoke-adapters.d.ts +17 -0
  561. package/dist/smoke-adapters.d.ts.map +1 -0
  562. package/dist/smoke-adapters.js +178 -0
  563. package/dist/smoke-adapters.js.map +1 -0
  564. package/package.json +89 -0
  565. package/tools/claude-via-agent.ps1 +83 -0
  566. package/tools/claude-via-agent.sh +96 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openai.js","sourceRoot":"","sources":["../../src/llm-providers/openai.ts"],"names":[],"mappings":"AAAA;;GAEG;AASH,OAAO,KAA6B,MAAM,OAAO,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAU5C,MAAM,OAAO,cAAe,SAAQ,eAA6B;IACtD,MAAM,CAAgB;IACtB,KAAK,CAAS;IACJ,YAAY,GAAW,QAAQ,CAAC;IAEnD,YAAY,MAAoB;QAC9B,KAAK,CAAC,MAAM,CAAC,CAAC;QACd,IAAI,CAAC,cAAc,EAAE,CAAC;QAEtB,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,IAAI,aAAa,CAAC;QAE3C,MAAM,OAAO,GAA2B;YACtC,aAAa,EAAE,UAAU,MAAM,CAAC,MAAM,EAAE;YACxC,cAAc,EAAE,kBAAkB;SACnC,CAAC;QAEF,sCAAsC;QACtC,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;YACxB,OAAO,CAAC,qBAAqB,CAAC,GAAG,MAAM,CAAC,YAAY,CAAC;QACvD,CAAC;QAED,iCAAiC;QACjC,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACnB,OAAO,CAAC,gBAAgB,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC;QAC7C,CAAC;QAED,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;YACzB,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,2BAA2B;YACtD,OAAO;SACR,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,IAAI,CACR,QAAmB,EACnB,KAAiB,EACjB,OAAwB;QAExB,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,OAAO,EAAE,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC;YAC3C,MAAM,WAAW,GACf,OAAO,EAAE,WAAW,IAAI,IAAI,CAAC,MAAM,CAAC,WAAW,IAAI,GAAG,CAAC;YACzD,MAAM,SAAS,GAAG,OAAO,EAAE,SAAS,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,IAAI,IAAI,CAAC;YAEtE,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,mBAAmB,EAAE;gBAC3D,KAAK;gBACL,QAAQ,EAAE,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC;gBACvC,KAAK,EAAE,KAAK,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS;gBACpD,WAAW,EAAE,KAAK,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS;gBAC3D,WAAW;gBACX,GAAG,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,SAAS,CAAC;gBAC5C,GAAG,CAAC,OAAO,EAAE,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC/D,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aACjD,CAAC,CAAC;YAEH,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YAExC,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK;gBAC/B,CAAC,CAAC;oBACE,aAAa,EAAE,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa;oBAChD,iBAAiB,EAAE,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,iBAAiB;oBACxD,YAAY,EAAE,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY;iBAC/C;gBACH,CAAC,CAAC,SAAS,CAAC;YAEd,OAAO;gBACL,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,OAAO,IAAI,EAAE;gBACrC,YAAY,EAAE,MAAM,CAAC,aAAa;gBAClC,GAAG,EAAE,QAAQ,CAAC,IAAI;gBAClB,KAAK;aACN,CAAC;QACJ,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,MAAM,OAAO,GAAG,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC;gBACvC,CAAC,CAAE,KAAK,CAAC,QAAQ,EAAE,IAAyC,EAAE,KAAK;oBAC/D,EAAE,OAAO,IAAI,KAAK,CAAC,OAAO;gBAC9B,CAAC,CAAC,KAAK,YAAY,KAAK;oBACtB,CAAC,CAAC,KAAK,CAAC,OAAO;oBACf,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,CAAC,YAAY,eAAe,OAAO,EAAE,CAAC,CAAC;QAChE,CAAC;IACH,CAAC;IAED,KAAK,CAAC,CAAC,UAAU,CACf,QAAmB,EACnB,KAAiB,EACjB,OAAwB;QAExB,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,OAAO,EAAE,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC;YAC3C,MAAM,WAAW,GACf,OAAO,EAAE,WAAW,IAAI,IAAI,CAAC,MAAM,CAAC,WAAW,IAAI,GAAG,CAAC;YACzD,MAAM,SAAS,GAAG,OAAO,EAAE,SAAS,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,IAAI,IAAI,CAAC;YAEtE,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CACrC,mBAAmB,EACnB;gBACE,KAAK;gBACL,QAAQ,EAAE,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC;gBACvC,KAAK,EAAE,KAAK,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS;gBACpD,WAAW,EAAE,KAAK,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS;gBAC3D,WAAW;gBACX,GAAG,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,SAAS,CAAC;gBAC5C,GAAG,CAAC,OAAO,EAAE,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC/D,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAChD,MAAM,EAAE,IAAI;gBACZ,cAAc,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE;aACxC,EACD,EAAE,YAAY,EAAE,QAAQ,EAAE,CAC3B,CAAC;YAEF,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC;YAC7B,IAAI,MAAM,GAAG,EAAE,CAAC;YAEhB,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;gBACjC,MAAM,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;gBAC3B,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBACjC,MAAM,GAAG,KAAK,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC;gBAE3B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;oBACzB,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;oBAC5B,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,QAAQ,CAAC;wBAAE,SAAS;oBAE7C,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;oBAC9B,IAAI,IAAI,KAAK,QAAQ;wBAAE,MAAM;oBAE7B,IAAI,CAAC;wBACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;wBAChC,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;wBACnC,IAAI,MAAM,EAAE,KAAK,EAAE,CAAC;4BAClB,MAAM;gCACJ,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO,IAAI,EAAE;gCACnC,YAAY,EAAE,MAAM,CAAC,aAAa;gCAClC,GAAG,EAAE,MAAM;6BACZ,CAAC;wBACJ,CAAC;wBACD,mDAAmD;wBACnD,IAAI,MAAM,CAAC,KAAK,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC;4BACnC,MAAM;gCACJ,OAAO,EAAE,EAAE;gCACX,GAAG,EAAE,MAAM;gCACX,KAAK,EAAE;oCACL,aAAa,EAAE,MAAM,CAAC,KAAK,CAAC,aAAa;oCACzC,iBAAiB,EAAE,MAAM,CAAC,KAAK,CAAC,iBAAiB;oCACjD,YAAY,EAAE,MAAM,CAAC,KAAK,CAAC,YAAY;iCACxC;6BACF,CAAC;wBACJ,CAAC;oBACH,CAAC;oBAAC,OAAO,EAAE,EAAE,CAAC;wBACZ,4CAA4C;oBAC9C,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,MAAM,OAAO,GAAG,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC;gBACvC,CAAC,CAAE,KAAK,CAAC,QAAQ,EAAE,IAAyC,EAAE,KAAK;oBAC/D,EAAE,OAAO,IAAI,KAAK,CAAC,OAAO;gBAC9B,CAAC,CAAC,KAAK,YAAY,KAAK;oBACtB,CAAC,CAAC,KAAK,CAAC,OAAO;oBACf,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,CAAC,YAAY,qBAAqB,OAAO,EAAE,CAAC,CAAC;QACtE,CAAC;IACH,CAAC;IAED,KAAK,CAAC,SAAS;QACb,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAClD,OAAQ,QAAQ,CAAC,IAAI,CAAC,IAAiD,CAAC,GAAG,CACzE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,CAC5C,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,kBAAkB;QACtB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAClD,OAAQ,QAAQ,CAAC,IAAI,CAAC,IAAiD;aACpE,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;aAClC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;IACtD,CAAC;IAED;;;;OAIG;IACO,kBAAkB,CAC1B,KAAa,EACb,SAAiB;QAEjB,MAAM,UAAU,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;QACvC,MAAM,qBAAqB,GAAG,gBAAgB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAChE,OAAO,qBAAqB;YAC1B,CAAC,CAAC,EAAE,qBAAqB,EAAE,SAAS,EAAE;YACtC,CAAC,CAAC,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC;IAChC,CAAC;IAED;;OAEG;IACO,cAAc,CACtB,QAAmB;QAEnB,MAAM,SAAS,GAAmC,EAAE,CAAC;QAErD,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;YAC3B,IAAI,GAAG,CAAC,IAAI,KAAK,MAAM,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;gBAC7C,SAAS;YACX,CAAC;YAED,MAAM,KAAK,GAA4B;gBACrC,IAAI,EAAE,GAAG,CAAC,IAAI;gBACd,OAAO,EAAE,GAAG,CAAC,OAAO,IAAI,EAAE;aAC3B,CAAC;YAEF,IACE,GAAG,CAAC,IAAI,KAAK,WAAW;gBACxB,GAAG,CAAC,UAAU;gBACd,GAAG,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EACzB,CAAC;gBACD,KAAK,CAAC,UAAU,GAAG,GAAG,CAAC,UAAU,CAAC;gBAClC,KAAK,CAAC,OAAO,GAAG,GAAG,CAAC,OAAO,IAAI,IAAI,CAAC;YACtC,CAAC;YAED,IAAI,GAAG,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;gBACxB,KAAK,CAAC,YAAY,GAAG,GAAG,CAAC,YAAY,CAAC;gBACtC,KAAK,CAAC,OAAO;oBACX,OAAO,GAAG,CAAC,OAAO,KAAK,QAAQ;wBAC7B,CAAC,CAAC,GAAG,CAAC,OAAO;wBACb,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;YAC1C,CAAC;YAED,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACxB,CAAC;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;CACF"}
@@ -0,0 +1,90 @@
1
+ /**
2
+ * SAP AI SDK LLM Provider
3
+ *
4
+ * Implementation of LLMProvider interface using @sap-ai-sdk/orchestration.
5
+ * Authentication is handled automatically via AICORE_SERVICE_KEY environment variable.
6
+ *
7
+ * Architecture:
8
+ * - Agent → SapCoreAIProvider → OrchestrationClient → SAP AI Core → External LLM
9
+ */
10
+ import type { IModelInfo, LLMProviderConfig, LLMResponse, Message } from '@mcp-abap-adt/llm-agent';
11
+ import { BaseLLMProvider } from './base.js';
12
+ /**
13
+ * OAuth2 Client Credentials for programmatic SAP AI Core authentication.
14
+ * When provided, bypasses the AICORE_SERVICE_KEY environment variable.
15
+ */
16
+ export interface SapAICoreCredentials {
17
+ /** OAuth2 client ID (e.g. 'sb-xxx...') */
18
+ clientId: string;
19
+ /** OAuth2 client secret */
20
+ clientSecret: string;
21
+ /** Token endpoint URL (e.g. 'https://xxx.authentication.xxx.hana.ondemand.com/oauth/token') */
22
+ tokenServiceUrl: string;
23
+ /** SAP AI Core API base URL (e.g. 'https://api.ai.xxx.aicore.cfapps.xxx.hana.ondemand.com') */
24
+ servicUrl: string;
25
+ }
26
+ export interface SapCoreAIConfig extends LLMProviderConfig {
27
+ /** Model name (e.g. 'gpt-4o', 'claude-3-5-sonnet'). Default: 'gpt-4o' */
28
+ model?: string;
29
+ /** Temperature for generation. Default: 0.7 */
30
+ temperature?: number;
31
+ /** Max tokens for generation. Default: 16384 */
32
+ maxTokens?: number;
33
+ /** SAP AI Core resource group */
34
+ resourceGroup?: string;
35
+ /**
36
+ * Programmatic OAuth2 credentials for SAP AI Core.
37
+ * When set, the SDK uses these instead of the AICORE_SERVICE_KEY env var.
38
+ */
39
+ credentials?: SapAICoreCredentials;
40
+ /** Optional logger */
41
+ log?: {
42
+ debug(message: string, meta?: Record<string, unknown>): void;
43
+ error(message: string, meta?: Record<string, unknown>): void;
44
+ };
45
+ }
46
+ /**
47
+ * SAP AI SDK Provider implementation
48
+ *
49
+ * Uses @sap-ai-sdk/orchestration for authentication and LLM access.
50
+ * A new OrchestrationClient is created per call because tools may change between calls.
51
+ */
52
+ export declare class SapCoreAIProvider extends BaseLLMProvider<SapCoreAIConfig> {
53
+ readonly model: string;
54
+ readonly resourceGroup?: string;
55
+ private log?;
56
+ private readonly destination?;
57
+ private readonly httpsAgent;
58
+ private modelsCache;
59
+ private modelsCacheExpiry;
60
+ private static readonly MODELS_CACHE_TTL_MS;
61
+ private modelOverride?;
62
+ private static summarizeMessages;
63
+ private static summarizeStreamingError;
64
+ /** Set a per-request model override. Cleared after each chat/streamChat call. */
65
+ setModelOverride(model?: string): void;
66
+ constructor(config: SapCoreAIConfig);
67
+ chat(messages: Message[], tools?: unknown[]): Promise<LLMResponse>;
68
+ streamChat(messages: Message[], tools?: unknown[]): AsyncIterable<LLMResponse>;
69
+ /**
70
+ * Fetch all models from SAP AI Core, caching the result for MODELS_CACHE_TTL_MS.
71
+ * Returns ALL models regardless of capability — callers filter as needed.
72
+ */
73
+ private _fetchAllModels;
74
+ getModels(): Promise<IModelInfo[]>;
75
+ getEmbeddingModels(): Promise<IModelInfo[]>;
76
+ /**
77
+ * Extract detailed error information from SAP AI SDK / axios errors.
78
+ */
79
+ private static extractErrorDetail;
80
+ /**
81
+ * Create an OrchestrationClient with the given tools configuration.
82
+ * Tools are expected in OpenAI function format (already converted by the agent layer).
83
+ */
84
+ private createClient;
85
+ /**
86
+ * Format messages for the SAP AI SDK (OpenAI-compatible format).
87
+ */
88
+ private formatMessages;
89
+ }
90
+ //# sourceMappingURL=sap-core-ai.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sap-core-ai.d.ts","sourceRoot":"","sources":["../../src/llm-providers/sap-core-ai.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,KAAK,EACV,UAAU,EACV,iBAAiB,EACjB,WAAW,EACX,OAAO,EACR,MAAM,yBAAyB,CAAC;AAKjC,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAE5C;;;GAGG;AACH,MAAM,WAAW,oBAAoB;IACnC,0CAA0C;IAC1C,QAAQ,EAAE,MAAM,CAAC;IACjB,2BAA2B;IAC3B,YAAY,EAAE,MAAM,CAAC;IACrB,+FAA+F;IAC/F,eAAe,EAAE,MAAM,CAAC;IACxB,+FAA+F;IAC/F,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,eAAgB,SAAQ,iBAAiB;IACxD,yEAAyE;IACzE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,+CAA+C;IAC/C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gDAAgD;IAChD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,iCAAiC;IACjC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;;OAGG;IACH,WAAW,CAAC,EAAE,oBAAoB,CAAC;IACnC,sBAAsB;IACtB,GAAG,CAAC,EAAE;QACJ,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;QAC7D,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;KAC9D,CAAC;CACH;AAED;;;;;GAKG;AACH,qBAAa,iBAAkB,SAAQ,eAAe,CAAC,eAAe,CAAC;IACrE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,OAAO,CAAC,GAAG,CAAC,CAAyB;IACrC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,CAA0B;IACvD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAc;IACzC,OAAO,CAAC,WAAW,CAA6B;IAChD,OAAO,CAAC,iBAAiB,CAAK;IAC9B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,mBAAmB,CAAW;IACtD,OAAO,CAAC,aAAa,CAAC,CAAS;IAE/B,OAAO,CAAC,MAAM,CAAC,iBAAiB;IAkDhC,OAAO,CAAC,MAAM,CAAC,uBAAuB;IAsBtC,iFAAiF;IACjF,gBAAgB,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI;gBAI1B,MAAM,EAAE,eAAe;IAuB7B,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,KAAK,CAAC,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,WAAW,CAAC;IA2DjE,UAAU,CACf,QAAQ,EAAE,OAAO,EAAE,EACnB,KAAK,CAAC,EAAE,OAAO,EAAE,GAChB,aAAa,CAAC,WAAW,CAAC;IAgI7B;;;OAGG;YACW,eAAe;IAkDvB,SAAS,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;IAIlC,kBAAkB,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;IAKjD;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,kBAAkB;IAcjC;;;OAGG;IACH,OAAO,CAAC,YAAY;IA6BpB;;OAEG;IACH,OAAO,CAAC,cAAc;CA+BvB"}
@@ -0,0 +1,394 @@
1
+ /**
2
+ * SAP AI SDK LLM Provider
3
+ *
4
+ * Implementation of LLMProvider interface using @sap-ai-sdk/orchestration.
5
+ * Authentication is handled automatically via AICORE_SERVICE_KEY environment variable.
6
+ *
7
+ * Architecture:
8
+ * - Agent → SapCoreAIProvider → OrchestrationClient → SAP AI Core → External LLM
9
+ */
10
+ import https from 'node:https';
11
+ import { OrchestrationClient, } from '@sap-ai-sdk/orchestration';
12
+ import { BaseLLMProvider } from './base.js';
13
+ /**
14
+ * SAP AI SDK Provider implementation
15
+ *
16
+ * Uses @sap-ai-sdk/orchestration for authentication and LLM access.
17
+ * A new OrchestrationClient is created per call because tools may change between calls.
18
+ */
19
+ export class SapCoreAIProvider extends BaseLLMProvider {
20
+ model;
21
+ resourceGroup;
22
+ log;
23
+ destination;
24
+ httpsAgent;
25
+ modelsCache = null;
26
+ modelsCacheExpiry = 0;
27
+ static MODELS_CACHE_TTL_MS = 300_000; // 5 min
28
+ modelOverride;
29
+ static summarizeMessages(messages) {
30
+ const totalChars = messages.reduce((sum, msg) => {
31
+ const content = typeof msg.content === 'string'
32
+ ? msg.content
33
+ : JSON.stringify(msg.content ?? '');
34
+ return sum + content.length;
35
+ }, 0);
36
+ return {
37
+ totalChars,
38
+ roles: messages.map((msg, index) => ({
39
+ index,
40
+ role: msg.role,
41
+ contentLength: typeof msg.content === 'string'
42
+ ? msg.content.length
43
+ : JSON.stringify(msg.content ?? '').length,
44
+ hasToolCalls: 'tool_calls' in msg && Array.isArray(msg.tool_calls),
45
+ toolCallCount: 'tool_calls' in msg && Array.isArray(msg.tool_calls)
46
+ ? msg.tool_calls.length
47
+ : 0,
48
+ toolCallId: 'tool_call_id' in msg ? (msg.tool_call_id ?? null) : null,
49
+ })),
50
+ tail: messages.slice(-4).map((msg, index) => {
51
+ const content = typeof msg.content === 'string'
52
+ ? msg.content
53
+ : JSON.stringify(msg.content ?? '');
54
+ return {
55
+ index: messages.length - Math.min(messages.length, 4) + index,
56
+ role: msg.role,
57
+ preview: content.length > 240
58
+ ? `${content.slice(0, 240)}...[truncated]`
59
+ : content,
60
+ hasToolCalls: 'tool_calls' in msg && Array.isArray(msg.tool_calls),
61
+ toolCallNames: 'tool_calls' in msg && Array.isArray(msg.tool_calls)
62
+ ? msg.tool_calls.map((tc) => tc.function?.name || '')
63
+ : [],
64
+ toolCallId: 'tool_call_id' in msg ? (msg.tool_call_id ?? null) : null,
65
+ };
66
+ }),
67
+ };
68
+ }
69
+ static summarizeStreamingError(error) {
70
+ // biome-ignore lint/suspicious/noExplicitAny: diagnostic error shape from SDK/axios
71
+ const err = error;
72
+ const cause = err?.cause;
73
+ return {
74
+ error: SapCoreAIProvider.extractErrorDetail(error),
75
+ name: err?.name,
76
+ message: err?.message,
77
+ cause: cause?.message || cause,
78
+ causeCode: cause?.code,
79
+ status: err?.response?.status,
80
+ responseData: typeof err?.response?.data === 'string'
81
+ ? err.response.data
82
+ : err?.response?.data
83
+ ? JSON.stringify(err.response.data)
84
+ : undefined,
85
+ };
86
+ }
87
+ /** Set a per-request model override. Cleared after each chat/streamChat call. */
88
+ setModelOverride(model) {
89
+ this.modelOverride = model;
90
+ }
91
+ constructor(config) {
92
+ super(config);
93
+ // Skip validateConfig() — SAP SDK handles auth via AICORE_SERVICE_KEY env var
94
+ this.model = config.model || 'gpt-4o';
95
+ this.resourceGroup = config.resourceGroup;
96
+ this.log = config.log;
97
+ this.httpsAgent = new https.Agent({
98
+ keepAlive: true,
99
+ timeout: 60_000,
100
+ });
101
+ if (config.credentials) {
102
+ this.destination = {
103
+ url: config.credentials.servicUrl,
104
+ authentication: 'OAuth2ClientCredentials',
105
+ clientId: config.credentials.clientId,
106
+ clientSecret: config.credentials.clientSecret,
107
+ tokenServiceUrl: config.credentials.tokenServiceUrl,
108
+ };
109
+ }
110
+ }
111
+ async chat(messages, tools) {
112
+ try {
113
+ this.log?.debug('Sending chat request via SAP AI SDK', {
114
+ model: this.modelOverride ?? this.model,
115
+ messageCount: messages.length,
116
+ toolCount: tools?.length || 0,
117
+ maxTokens: this.config.maxTokens,
118
+ temperature: this.config.temperature,
119
+ });
120
+ const formatted = this.formatMessages(messages);
121
+ const client = this.createClient(formatted, tools);
122
+ const response = await client.chatCompletion(undefined, {
123
+ httpsAgent: this.httpsAgent,
124
+ });
125
+ const toolCalls = response.getToolCalls();
126
+ const content = response.getContent() || '';
127
+ const finishReason = response.getFinishReason();
128
+ this.log?.debug('Received response from SAP AI SDK', { finishReason });
129
+ return {
130
+ content,
131
+ finishReason,
132
+ raw: {
133
+ choices: [
134
+ {
135
+ message: {
136
+ role: 'assistant',
137
+ content,
138
+ ...(toolCalls ? { tool_calls: toolCalls } : {}),
139
+ },
140
+ finish_reason: finishReason,
141
+ },
142
+ ],
143
+ usage: response.getTokenUsage(),
144
+ },
145
+ };
146
+ }
147
+ catch (error) {
148
+ const detail = SapCoreAIProvider.extractErrorDetail(error);
149
+ this.log?.error('SAP AI SDK API error', { error: detail });
150
+ // biome-ignore lint/suspicious/noExplicitAny: diagnostic error details
151
+ const axiosErr = error;
152
+ if (axiosErr?.response?.data) {
153
+ this.log?.error('SAP AI SDK response body', {
154
+ status: axiosErr.response.status,
155
+ data: typeof axiosErr.response.data === 'string'
156
+ ? axiosErr.response.data
157
+ : JSON.stringify(axiosErr.response.data),
158
+ });
159
+ }
160
+ throw new Error(`SAP AI SDK API error: ${detail}`);
161
+ }
162
+ finally {
163
+ this.modelOverride = undefined;
164
+ }
165
+ }
166
+ async *streamChat(messages, tools) {
167
+ const model = this.modelOverride ?? this.model;
168
+ const messageSummary = SapCoreAIProvider.summarizeMessages(messages);
169
+ const toolCount = tools?.length || 0;
170
+ let streamOpened = false;
171
+ let chunkIndex = 0;
172
+ let emittedContentChunks = 0;
173
+ let emittedContentChars = 0;
174
+ try {
175
+ this.log?.debug('SAP AI SDK streamChat start', {
176
+ model,
177
+ resourceGroup: this.resourceGroup ?? 'default',
178
+ messageCount: messages.length,
179
+ toolCount,
180
+ maxTokens: this.config.maxTokens,
181
+ temperature: this.config.temperature,
182
+ messageSummary,
183
+ });
184
+ const formatted = this.formatMessages(messages);
185
+ this.log?.debug('SAP AI SDK streamChat messages formatted', {
186
+ model,
187
+ formattedMessageCount: formatted.length,
188
+ messageSummary,
189
+ });
190
+ const client = this.createClient(formatted, tools);
191
+ this.log?.debug('SAP AI SDK streamChat client created', {
192
+ model,
193
+ toolCount,
194
+ });
195
+ // Each stream gets its own agent to prevent connection multiplexing.
196
+ // A shared keepAlive agent can cause SAP AI Core to route SSE chunks
197
+ // to the wrong stream when multiple requests share the same XSUAA user.
198
+ const streamAgent = new https.Agent({
199
+ keepAlive: false,
200
+ timeout: 120_000,
201
+ });
202
+ this.log?.debug('SAP AI SDK streamChat opening stream', {
203
+ model,
204
+ keepAlive: false,
205
+ timeoutMs: 120_000,
206
+ });
207
+ const streamResponse = await client.stream(undefined, undefined, undefined, { httpsAgent: streamAgent });
208
+ streamOpened = true;
209
+ this.log?.debug('SAP AI SDK streamChat stream opened', {
210
+ model,
211
+ messageCount: messages.length,
212
+ toolCount,
213
+ });
214
+ for await (const chunk of streamResponse.stream) {
215
+ chunkIndex += 1;
216
+ // TokenUsage is only available in the final chunk (final_result.usage)
217
+ const tokenUsage = chunk.getTokenUsage();
218
+ const deltaContent = chunk.getDeltaContent() || '';
219
+ if (deltaContent) {
220
+ emittedContentChunks += 1;
221
+ emittedContentChars += deltaContent.length;
222
+ }
223
+ const finishReason = chunk.getFinishReason();
224
+ this.log?.debug('SAP AI SDK streamChat chunk received', {
225
+ model,
226
+ chunkIndex,
227
+ hasContent: deltaContent.length > 0,
228
+ contentLength: deltaContent.length,
229
+ emittedContentChunks,
230
+ emittedContentChars,
231
+ finishReason,
232
+ usage: tokenUsage
233
+ ? {
234
+ promptTokens: tokenUsage.prompt_tokens || 0,
235
+ completionTokens: tokenUsage.completion_tokens || 0,
236
+ totalTokens: tokenUsage.total_tokens || 0,
237
+ }
238
+ : undefined,
239
+ });
240
+ yield {
241
+ content: deltaContent,
242
+ finishReason,
243
+ raw: chunk,
244
+ ...(tokenUsage
245
+ ? {
246
+ usage: {
247
+ prompt_tokens: tokenUsage.prompt_tokens || 0,
248
+ completion_tokens: tokenUsage.completion_tokens || 0,
249
+ total_tokens: tokenUsage.total_tokens || 0,
250
+ },
251
+ }
252
+ : {}),
253
+ };
254
+ }
255
+ this.log?.debug('SAP AI SDK streamChat completed', {
256
+ model,
257
+ chunkCount: chunkIndex,
258
+ emittedContentChunks,
259
+ emittedContentChars,
260
+ });
261
+ }
262
+ catch (error) {
263
+ this.log?.error('SAP AI SDK streaming error', {
264
+ model,
265
+ resourceGroup: this.resourceGroup ?? 'default',
266
+ streamOpened,
267
+ chunkIndex,
268
+ emittedContentChunks,
269
+ emittedContentChars,
270
+ toolCount,
271
+ messageSummary,
272
+ ...SapCoreAIProvider.summarizeStreamingError(error),
273
+ });
274
+ const detail = SapCoreAIProvider.extractErrorDetail(error);
275
+ throw new Error(`SAP AI SDK streaming error: ${detail}`);
276
+ }
277
+ finally {
278
+ this.modelOverride = undefined;
279
+ }
280
+ }
281
+ /**
282
+ * Fetch all models from SAP AI Core, caching the result for MODELS_CACHE_TTL_MS.
283
+ * Returns ALL models regardless of capability — callers filter as needed.
284
+ */
285
+ async _fetchAllModels() {
286
+ if (this.modelsCache && Date.now() < this.modelsCacheExpiry) {
287
+ return this.modelsCache;
288
+ }
289
+ try {
290
+ const { ScenarioApi } = await import('@sap-ai-sdk/ai-api');
291
+ const result = await ScenarioApi.scenarioQueryModels('foundation-models', { 'AI-Resource-Group': this.resourceGroup ?? 'default' }).execute();
292
+ const models = [];
293
+ for (const r of result.resources) {
294
+ const latest = r.versions?.find((v) => v.isLatest) ?? r.versions?.[0];
295
+ if (!latest)
296
+ continue;
297
+ models.push({
298
+ id: r.model,
299
+ displayName: r.displayName,
300
+ owned_by: r.provider,
301
+ provider: r.provider,
302
+ capabilities: latest.capabilities,
303
+ contextLength: latest.contextLength,
304
+ streamingSupported: latest.streamingSupported,
305
+ deprecated: latest.deprecated,
306
+ });
307
+ }
308
+ this.modelsCache = models;
309
+ this.modelsCacheExpiry =
310
+ Date.now() + SapCoreAIProvider.MODELS_CACHE_TTL_MS;
311
+ return models;
312
+ }
313
+ catch {
314
+ // Fallback to configured model if AI API is not available
315
+ return [{ id: this.model }];
316
+ }
317
+ }
318
+ async getModels() {
319
+ return this._fetchAllModels();
320
+ }
321
+ async getEmbeddingModels() {
322
+ const all = await this._fetchAllModels();
323
+ return all.filter((m) => m.capabilities?.includes('embeddings'));
324
+ }
325
+ /**
326
+ * Extract detailed error information from SAP AI SDK / axios errors.
327
+ */
328
+ static extractErrorDetail(error) {
329
+ if (error !== null && typeof error === 'object') {
330
+ // biome-ignore lint/suspicious/noExplicitAny: axios error shape is untyped
331
+ const axiosError = error;
332
+ if (axiosError.response?.data) {
333
+ const data = axiosError.response.data;
334
+ const detail = typeof data === 'string' ? data : JSON.stringify(data).slice(0, 500);
335
+ return `${axiosError.message} — ${detail}`;
336
+ }
337
+ }
338
+ return error instanceof Error ? error.message : String(error);
339
+ }
340
+ /**
341
+ * Create an OrchestrationClient with the given tools configuration.
342
+ * Tools are expected in OpenAI function format (already converted by the agent layer).
343
+ */
344
+ createClient(messages, tools) {
345
+ // biome-ignore lint/suspicious/noExplicitAny: SDK model type is a string literal union but the API accepts any model name
346
+ const orchConfig = {
347
+ promptTemplating: {
348
+ model: {
349
+ name: this.modelOverride ?? this.model,
350
+ params: {
351
+ max_tokens: this.config.maxTokens || 16384,
352
+ temperature: this.config.temperature || 0.7,
353
+ ...(tools?.length ? { tool_choice: 'auto' } : {}),
354
+ },
355
+ },
356
+ prompt: {
357
+ template: messages,
358
+ ...(tools?.length ? { tools } : {}),
359
+ },
360
+ },
361
+ };
362
+ return new OrchestrationClient(orchConfig, this.resourceGroup ? { resourceGroup: this.resourceGroup } : undefined, this.destination);
363
+ }
364
+ /**
365
+ * Format messages for the SAP AI SDK (OpenAI-compatible format).
366
+ */
367
+ formatMessages(messages) {
368
+ return messages.map((msg) => {
369
+ if (msg.role === 'assistant' &&
370
+ msg.tool_calls &&
371
+ msg.tool_calls.length > 0) {
372
+ return {
373
+ role: 'assistant',
374
+ content: msg.content || undefined,
375
+ tool_calls: msg.tool_calls,
376
+ };
377
+ }
378
+ if (msg.role === 'tool' && msg.tool_call_id) {
379
+ return {
380
+ role: 'tool',
381
+ content: typeof msg.content === 'string'
382
+ ? msg.content
383
+ : JSON.stringify(msg.content ?? ''),
384
+ tool_call_id: msg.tool_call_id,
385
+ };
386
+ }
387
+ return {
388
+ role: msg.role,
389
+ content: msg.content ?? '',
390
+ };
391
+ });
392
+ }
393
+ }
394
+ //# sourceMappingURL=sap-core-ai.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sap-core-ai.js","sourceRoot":"","sources":["../../src/llm-providers/sap-core-ai.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,133 @@
1
+ /**
2
+ * MCP Client Wrapper
3
+ *
4
+ * Wraps the MCP SDK client to provide a simpler interface for the agent
5
+ */
6
+ import type { ToolCall, ToolResult } from '@mcp-abap-adt/llm-agent';
7
+ type McpToolDef = {
8
+ name: string;
9
+ description?: string;
10
+ inputSchema?: Record<string, unknown>;
11
+ };
12
+ type EmbeddedServerInstance = {
13
+ server?: unknown;
14
+ };
15
+ export type TransportType = 'stdio' | 'sse' | 'stream-http' | 'auto' | 'embedded';
16
+ export interface MCPClientConfig {
17
+ /**
18
+ * Transport type:
19
+ * - 'stdio': Standard input/output (for local processes)
20
+ * - 'sse': Server-Sent Events (GET endpoint)
21
+ * - 'stream-http': Streamable HTTP (POST endpoint, bidirectional NDJSON)
22
+ * - 'auto': Automatically detect from URL (defaults to 'stream-http' for HTTP URLs)
23
+ * - 'embedded': Direct MCP server instance (same process, no transport)
24
+ *
25
+ * If URL is provided and transport is 'auto', it will be detected automatically:
26
+ * - URLs containing '/sse' or ending with '/sse' -> 'sse'
27
+ * - URLs containing '/stream/http' or '/http' -> 'stream-http'
28
+ * - Otherwise defaults to 'stream-http'
29
+ */
30
+ transport?: TransportType;
31
+ /**
32
+ * For embedded mode: Direct MCP server instance
33
+ * Use this when MCP server runs in the same process (e.g., imported as submodule)
34
+ * The server instance must have:
35
+ * - server.setRequestHandler() method for ListToolsRequestSchema and CallToolRequestSchema
36
+ * - Or provide tools list and tool call handler directly
37
+ */
38
+ serverInstance?: EmbeddedServerInstance;
39
+ /**
40
+ * For embedded mode: Direct access to tools registry
41
+ * If provided, listTools() will use this instead of calling server
42
+ */
43
+ toolsRegistry?: {
44
+ getAllTools: () => McpToolDef[];
45
+ };
46
+ /**
47
+ * For embedded mode: Direct tool call handler
48
+ * If provided, callTool() will use this instead of calling server
49
+ */
50
+ toolCallHandler?: (name: string, args: Record<string, unknown>) => Promise<unknown>;
51
+ /**
52
+ * Direct tools list provider (DI)
53
+ * Use this to supply tools without relying on MCP transport details.
54
+ */
55
+ listToolsHandler?: () => Promise<McpToolDef[]>;
56
+ /**
57
+ * Direct tool call provider (DI)
58
+ * Use this to supply tool execution without relying on MCP transport details.
59
+ */
60
+ callToolHandler?: (name: string, args: Record<string, unknown>) => Promise<unknown>;
61
+ /**
62
+ * For stdio: command and args to execute
63
+ */
64
+ command?: string;
65
+ args?: string[];
66
+ /**
67
+ * For HTTP transports: URL endpoint
68
+ * Examples:
69
+ * - 'http://localhost:4004/mcp/stream/sse' -> SSE transport
70
+ * - 'http://localhost:4004/mcp/stream/http' -> Streamable HTTP transport
71
+ */
72
+ url?: string;
73
+ /**
74
+ * Session ID for HTTP transports (optional, will be generated if not provided)
75
+ * For Streamable HTTP: first request should omit this, subsequent requests should include it
76
+ */
77
+ sessionId?: string;
78
+ /**
79
+ * HTTP headers for authentication and configuration
80
+ */
81
+ headers?: Record<string, string>;
82
+ /**
83
+ * Timeout in milliseconds (default: 30000)
84
+ */
85
+ timeout?: number;
86
+ }
87
+ export declare class MCPClientWrapper {
88
+ private client;
89
+ private config;
90
+ private tools;
91
+ private detectedTransport;
92
+ private sessionId?;
93
+ constructor(config: MCPClientConfig);
94
+ /**
95
+ * Detect transport type from config
96
+ */
97
+ private detectTransport;
98
+ /**
99
+ * Initialize MCP client connection
100
+ */
101
+ connect(): Promise<void>;
102
+ /**
103
+ * Get detected transport type
104
+ */
105
+ getTransport(): TransportType;
106
+ /**
107
+ * Get current session ID (for HTTP transports)
108
+ */
109
+ getSessionId(): string | undefined;
110
+ /**
111
+ * Get list of available tools
112
+ */
113
+ listTools(): Promise<McpToolDef[]>;
114
+ /**
115
+ * Execute a tool call
116
+ */
117
+ callTool(toolCall: ToolCall): Promise<ToolResult>;
118
+ /**
119
+ * Execute multiple tool calls
120
+ */
121
+ callTools(toolCalls: ToolCall[]): Promise<ToolResult[]>;
122
+ /**
123
+ * Lightweight ping — verifies the MCP server is reachable
124
+ * without triggering a full tools/list request.
125
+ */
126
+ ping(): Promise<void>;
127
+ /**
128
+ * Disconnect from MCP server
129
+ */
130
+ disconnect(): Promise<void>;
131
+ }
132
+ export {};
133
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/mcp/client.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAKpE,KAAK,UAAU,GAAG;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACvC,CAAC;AAEF,KAAK,sBAAsB,GAAG;IAC5B,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,aAAa,GACrB,OAAO,GACP,KAAK,GACL,aAAa,GACb,MAAM,GACN,UAAU,CAAC;AAEf,MAAM,WAAW,eAAe;IAC9B;;;;;;;;;;;;OAYG;IACH,SAAS,CAAC,EAAE,aAAa,CAAC;IAE1B;;;;;;OAMG;IACH,cAAc,CAAC,EAAE,sBAAsB,CAAC;IAExC;;;OAGG;IACH,aAAa,CAAC,EAAE;QACd,WAAW,EAAE,MAAM,UAAU,EAAE,CAAC;KACjC,CAAC;IAEF;;;OAGG;IACH,eAAe,CAAC,EAAE,CAChB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAC1B,OAAO,CAAC,OAAO,CAAC,CAAC;IAEtB;;;OAGG;IACH,gBAAgB,CAAC,EAAE,MAAM,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;IAE/C;;;OAGG;IACH,eAAe,CAAC,EAAE,CAChB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAC1B,OAAO,CAAC,OAAO,CAAC,CAAC;IAEtB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAEhB;;;;;OAKG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IAEb;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAEjC;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,MAAM,CAAkB;IAChC,OAAO,CAAC,KAAK,CAAoB;IACjC,OAAO,CAAC,iBAAiB,CAAgB;IACzC,OAAO,CAAC,SAAS,CAAC,CAAS;gBAEf,MAAM,EAAE,eAAe;IAKnC;;OAEG;IACH,OAAO,CAAC,eAAe;IA6CvB;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAgH9B;;OAEG;IACH,YAAY,IAAI,aAAa;IAI7B;;OAEG;IACH,YAAY,IAAI,MAAM,GAAG,SAAS;IAIlC;;OAEG;IACG,SAAS,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;IAoCxC;;OAEG;IACG,QAAQ,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,UAAU,CAAC;IA4FvD;;OAEG;IACG,SAAS,CAAC,SAAS,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAO7D;;;OAGG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAW3B;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;CAWlC"}