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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (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 +14 -11
@@ -0,0 +1,32 @@
1
+ /**
2
+ * Token-bucket rate limiter.
3
+ *
4
+ * Allows up to `maxRequests` in a rolling `windowMs` window.
5
+ * When the bucket is empty, `acquire()` blocks until a slot frees up.
6
+ */
7
+ export class TokenBucketRateLimiter {
8
+ maxRequests;
9
+ windowMs;
10
+ timestamps = [];
11
+ constructor(config) {
12
+ this.maxRequests = config.maxRequests;
13
+ this.windowMs = config.windowMs ?? 60_000;
14
+ }
15
+ async acquire() {
16
+ const now = Date.now();
17
+ this.timestamps = this.timestamps.filter((t) => now - t < this.windowMs);
18
+ if (this.timestamps.length < this.maxRequests) {
19
+ this.timestamps.push(now);
20
+ return;
21
+ }
22
+ // Wait until the oldest request expires from the window
23
+ const oldest = this.timestamps[0];
24
+ const waitMs = oldest + this.windowMs - now + 1;
25
+ await new Promise((resolve) => setTimeout(resolve, waitMs));
26
+ // Clean up and record
27
+ const after = Date.now();
28
+ this.timestamps = this.timestamps.filter((t) => after - t < this.windowMs);
29
+ this.timestamps.push(after);
30
+ }
31
+ }
32
+ //# sourceMappingURL=token-bucket-rate-limiter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"token-bucket-rate-limiter.js","sourceRoot":"","sources":["../../src/resilience/token-bucket-rate-limiter.ts"],"names":[],"mappings":"AASA;;;;;GAKG;AACH,MAAM,OAAO,sBAAsB;IAChB,WAAW,CAAS;IACpB,QAAQ,CAAS;IAC1B,UAAU,GAAa,EAAE,CAAC;IAElC,YAAY,MAAyB;QACnC,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;QACtC,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC;IAC5C,CAAC;IAED,KAAK,CAAC,OAAO;QACX,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC;QAEzE,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;YAC9C,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAC1B,OAAO;QACT,CAAC;QAED,wDAAwD;QACxD,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QAClC,MAAM,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC,QAAQ,GAAG,GAAG,GAAG,CAAC,CAAC;QAChD,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;QAElE,sBAAsB;QACtB,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACzB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC3E,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC9B,CAAC;CACF"}
@@ -0,0 +1,4 @@
1
+ export { NoopSessionManager } from './noop-session-manager.js';
2
+ export { SessionManager } from './session-manager.js';
3
+ export type { ISessionManager } from './types.js';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/session/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,YAAY,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC"}
@@ -0,0 +1,3 @@
1
+ export { NoopSessionManager } from './noop-session-manager.js';
2
+ export { SessionManager } from './session-manager.js';
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/session/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC"}
@@ -0,0 +1,8 @@
1
+ import type { ISessionManager } from './types.js';
2
+ export declare class NoopSessionManager implements ISessionManager {
3
+ get totalTokens(): number;
4
+ addTokens(): void;
5
+ isOverBudget(): boolean;
6
+ reset(): void;
7
+ }
8
+ //# sourceMappingURL=noop-session-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"noop-session-manager.d.ts","sourceRoot":"","sources":["../../src/session/noop-session-manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAElD,qBAAa,kBAAmB,YAAW,eAAe;IACxD,IAAI,WAAW,IAAI,MAAM,CAExB;IACD,SAAS,IAAI,IAAI;IACjB,YAAY,IAAI,OAAO;IAGvB,KAAK,IAAI,IAAI;CACd"}
@@ -0,0 +1,11 @@
1
+ export class NoopSessionManager {
2
+ get totalTokens() {
3
+ return 0;
4
+ }
5
+ addTokens() { }
6
+ isOverBudget() {
7
+ return false;
8
+ }
9
+ reset() { }
10
+ }
11
+ //# sourceMappingURL=noop-session-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"noop-session-manager.js","sourceRoot":"","sources":["../../src/session/noop-session-manager.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,kBAAkB;IAC7B,IAAI,WAAW;QACb,OAAO,CAAC,CAAC;IACX,CAAC;IACD,SAAS,KAAU,CAAC;IACpB,YAAY;QACV,OAAO,KAAK,CAAC;IACf,CAAC;IACD,KAAK,KAAU,CAAC;CACjB"}
@@ -0,0 +1,13 @@
1
+ import type { ISessionManager } from './types.js';
2
+ export declare class SessionManager implements ISessionManager {
3
+ private _totalTokens;
4
+ private readonly tokenBudget;
5
+ constructor(opts: {
6
+ tokenBudget: number;
7
+ });
8
+ get totalTokens(): number;
9
+ addTokens(count: number): void;
10
+ isOverBudget(): boolean;
11
+ reset(): void;
12
+ }
13
+ //# sourceMappingURL=session-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-manager.d.ts","sourceRoot":"","sources":["../../src/session/session-manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAElD,qBAAa,cAAe,YAAW,eAAe;IACpD,OAAO,CAAC,YAAY,CAAK;IACzB,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;gBAEzB,IAAI,EAAE;QAAE,WAAW,EAAE,MAAM,CAAA;KAAE;IAIzC,IAAI,WAAW,IAAI,MAAM,CAExB;IAED,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAI9B,YAAY,IAAI,OAAO;IAIvB,KAAK,IAAI,IAAI;CAGd"}
@@ -0,0 +1,20 @@
1
+ export class SessionManager {
2
+ _totalTokens = 0;
3
+ tokenBudget;
4
+ constructor(opts) {
5
+ this.tokenBudget = opts.tokenBudget;
6
+ }
7
+ get totalTokens() {
8
+ return this._totalTokens;
9
+ }
10
+ addTokens(count) {
11
+ this._totalTokens += count;
12
+ }
13
+ isOverBudget() {
14
+ return this._totalTokens >= this.tokenBudget;
15
+ }
16
+ reset() {
17
+ this._totalTokens = 0;
18
+ }
19
+ }
20
+ //# sourceMappingURL=session-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-manager.js","sourceRoot":"","sources":["../../src/session/session-manager.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,cAAc;IACjB,YAAY,GAAG,CAAC,CAAC;IACR,WAAW,CAAS;IAErC,YAAY,IAA6B;QACvC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;IACtC,CAAC;IAED,IAAI,WAAW;QACb,OAAO,IAAI,CAAC,YAAY,CAAC;IAC3B,CAAC;IAED,SAAS,CAAC,KAAa;QACrB,IAAI,CAAC,YAAY,IAAI,KAAK,CAAC;IAC7B,CAAC;IAED,YAAY;QACV,OAAO,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,WAAW,CAAC;IAC/C,CAAC;IAED,KAAK;QACH,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;IACxB,CAAC;CACF"}
@@ -0,0 +1,2 @@
1
+ export type { ISessionManager } from '@mcp-abap-adt/llm-agent';
2
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/session/types.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/session/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * ClaudeSkillManager — discovers skills from Claude Code skill directories.
3
+ *
4
+ * Discovery paths:
5
+ * - `~/.claude/skills/`
6
+ * - `<projectRoot>/.claude/skills/`
7
+ *
8
+ * Handles Claude-specific frontmatter key mapping:
9
+ * - `disable-model-invocation` → `disableModelInvocation`
10
+ * - `allowed-tools` → `allowedTools`
11
+ * - `user-invocable` → `userInvocable`
12
+ * - `argument-hint` → `argumentHint`
13
+ */
14
+ import type { CallOptions, ISkill, ISkillManager, Result } from '@mcp-abap-adt/llm-agent';
15
+ import { SkillError } from '@mcp-abap-adt/llm-agent';
16
+ export declare class ClaudeSkillManager implements ISkillManager {
17
+ private cache;
18
+ private readonly dirs;
19
+ constructor(projectRoot?: string);
20
+ listSkills(_options?: CallOptions): Promise<Result<ISkill[], SkillError>>;
21
+ getSkill(name: string, options?: CallOptions): Promise<Result<ISkill | undefined, SkillError>>;
22
+ matchSkills(text: string, options?: CallOptions): Promise<Result<ISkill[], SkillError>>;
23
+ }
24
+ //# sourceMappingURL=claude-skill-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claude-skill-manager.d.ts","sourceRoot":"","sources":["../../src/skills/claude-skill-manager.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAIH,OAAO,KAAK,EACV,WAAW,EACX,MAAM,EACN,aAAa,EAEb,MAAM,EACP,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAGrD,qBAAa,kBAAmB,YAAW,aAAa;IACtD,OAAO,CAAC,KAAK,CAAuB;IACpC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAW;gBAEpB,WAAW,CAAC,EAAE,MAAM;IAO1B,UAAU,CACd,QAAQ,CAAC,EAAE,WAAW,GACrB,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,UAAU,CAAC,CAAC;IAelC,QAAQ,CACZ,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,WAAW,GACpB,OAAO,CAAC,MAAM,CAAC,MAAM,GAAG,SAAS,EAAE,UAAU,CAAC,CAAC;IAM5C,WAAW,CACf,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,WAAW,GACpB,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,UAAU,CAAC,CAAC;CAazC"}
@@ -0,0 +1,81 @@
1
+ /**
2
+ * ClaudeSkillManager — discovers skills from Claude Code skill directories.
3
+ *
4
+ * Discovery paths:
5
+ * - `~/.claude/skills/`
6
+ * - `<projectRoot>/.claude/skills/`
7
+ *
8
+ * Handles Claude-specific frontmatter key mapping:
9
+ * - `disable-model-invocation` → `disableModelInvocation`
10
+ * - `allowed-tools` → `allowedTools`
11
+ * - `user-invocable` → `userInvocable`
12
+ * - `argument-hint` → `argumentHint`
13
+ */
14
+ import { homedir } from 'node:os';
15
+ import { join } from 'node:path';
16
+ import { SkillError } from '@mcp-abap-adt/llm-agent';
17
+ import { scanDirsForSkills } from './skill-utils.js';
18
+ export class ClaudeSkillManager {
19
+ cache;
20
+ dirs;
21
+ constructor(projectRoot) {
22
+ this.dirs = [join(homedir(), '.claude', 'skills')];
23
+ if (projectRoot) {
24
+ this.dirs.push(join(projectRoot, '.claude', 'skills'));
25
+ }
26
+ }
27
+ async listSkills(_options) {
28
+ if (this.cache)
29
+ return { ok: true, value: this.cache };
30
+ try {
31
+ const skills = await scanDirsForSkills(this.dirs, normalizeClaudeMeta);
32
+ this.cache = skills;
33
+ return { ok: true, value: skills };
34
+ }
35
+ catch (err) {
36
+ return {
37
+ ok: false,
38
+ error: new SkillError(`Failed to list Claude skills: ${err}`),
39
+ };
40
+ }
41
+ }
42
+ async getSkill(name, options) {
43
+ const result = await this.listSkills(options);
44
+ if (!result.ok)
45
+ return result;
46
+ return { ok: true, value: result.value.find((s) => s.name === name) };
47
+ }
48
+ async matchSkills(text, options) {
49
+ const result = await this.listSkills(options);
50
+ if (!result.ok)
51
+ return result;
52
+ const lower = text.toLowerCase();
53
+ return {
54
+ ok: true,
55
+ value: result.value.filter((s) => s.name.toLowerCase().includes(lower) ||
56
+ s.description.toLowerCase().includes(lower)),
57
+ };
58
+ }
59
+ }
60
+ /** Map Claude-specific kebab-case frontmatter keys to camelCase ISkillMeta. */
61
+ function normalizeClaudeMeta(meta) {
62
+ const result = { ...meta };
63
+ if ('disable-model-invocation' in result) {
64
+ result.disableModelInvocation = result['disable-model-invocation'];
65
+ delete result['disable-model-invocation'];
66
+ }
67
+ if ('allowed-tools' in result) {
68
+ result.allowedTools = result['allowed-tools'];
69
+ delete result['allowed-tools'];
70
+ }
71
+ if ('user-invocable' in result) {
72
+ result.userInvocable = result['user-invocable'];
73
+ delete result['user-invocable'];
74
+ }
75
+ if ('argument-hint' in result) {
76
+ result.argumentHint = result['argument-hint'];
77
+ delete result['argument-hint'];
78
+ }
79
+ return result;
80
+ }
81
+ //# sourceMappingURL=claude-skill-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claude-skill-manager.js","sourceRoot":"","sources":["../../src/skills/claude-skill-manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * CodexSkillManager — discovers skills from Codex/OpenAI agent skill directories.
3
+ *
4
+ * Discovery paths:
5
+ * - `~/.agents/skills/`
6
+ * - `<projectRoot>/.agents/skills/`
7
+ *
8
+ * Parses optional `agents/openai.yaml` into meta extensions.
9
+ */
10
+ import type { CallOptions, ISkill, ISkillManager, Result } from '@mcp-abap-adt/llm-agent';
11
+ import { SkillError } from '@mcp-abap-adt/llm-agent';
12
+ export declare class CodexSkillManager implements ISkillManager {
13
+ private cache;
14
+ private readonly dirs;
15
+ constructor(projectRoot?: string);
16
+ listSkills(_options?: CallOptions): Promise<Result<ISkill[], SkillError>>;
17
+ getSkill(name: string, options?: CallOptions): Promise<Result<ISkill | undefined, SkillError>>;
18
+ matchSkills(text: string, options?: CallOptions): Promise<Result<ISkill[], SkillError>>;
19
+ }
20
+ //# sourceMappingURL=codex-skill-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codex-skill-manager.d.ts","sourceRoot":"","sources":["../../src/skills/codex-skill-manager.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAKH,OAAO,KAAK,EACV,WAAW,EACX,MAAM,EACN,aAAa,EACb,MAAM,EACP,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAKrD,qBAAa,iBAAkB,YAAW,aAAa;IACrD,OAAO,CAAC,KAAK,CAAuB;IACpC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAW;gBAEpB,WAAW,CAAC,EAAE,MAAM;IAO1B,UAAU,CACd,QAAQ,CAAC,EAAE,WAAW,GACrB,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,UAAU,CAAC,CAAC;IAmBlC,QAAQ,CACZ,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,WAAW,GACpB,OAAO,CAAC,MAAM,CAAC,MAAM,GAAG,SAAS,EAAE,UAAU,CAAC,CAAC;IAM5C,WAAW,CACf,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,WAAW,GACpB,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,UAAU,CAAC,CAAC;CAazC"}
@@ -0,0 +1,75 @@
1
+ /**
2
+ * CodexSkillManager — discovers skills from Codex/OpenAI agent skill directories.
3
+ *
4
+ * Discovery paths:
5
+ * - `~/.agents/skills/`
6
+ * - `<projectRoot>/.agents/skills/`
7
+ *
8
+ * Parses optional `agents/openai.yaml` into meta extensions.
9
+ */
10
+ import { readFile } from 'node:fs/promises';
11
+ import { homedir } from 'node:os';
12
+ import { join } from 'node:path';
13
+ import { SkillError } from '@mcp-abap-adt/llm-agent';
14
+ import { parse as parseYaml } from 'yaml';
15
+ import { scanDirsForSkills } from './skill-utils.js';
16
+ export class CodexSkillManager {
17
+ cache;
18
+ dirs;
19
+ constructor(projectRoot) {
20
+ this.dirs = [join(homedir(), '.agents', 'skills')];
21
+ if (projectRoot) {
22
+ this.dirs.push(join(projectRoot, '.agents', 'skills'));
23
+ }
24
+ }
25
+ async listSkills(_options) {
26
+ if (this.cache)
27
+ return { ok: true, value: this.cache };
28
+ try {
29
+ const skills = await scanDirsForSkills(this.dirs, undefined, enrichCodexMeta);
30
+ this.cache = skills;
31
+ return { ok: true, value: skills };
32
+ }
33
+ catch (err) {
34
+ return {
35
+ ok: false,
36
+ error: new SkillError(`Failed to list Codex skills: ${err}`),
37
+ };
38
+ }
39
+ }
40
+ async getSkill(name, options) {
41
+ const result = await this.listSkills(options);
42
+ if (!result.ok)
43
+ return result;
44
+ return { ok: true, value: result.value.find((s) => s.name === name) };
45
+ }
46
+ async matchSkills(text, options) {
47
+ const result = await this.listSkills(options);
48
+ if (!result.ok)
49
+ return result;
50
+ const lower = text.toLowerCase();
51
+ return {
52
+ ok: true,
53
+ value: result.value.filter((s) => s.name.toLowerCase().includes(lower) ||
54
+ s.description.toLowerCase().includes(lower)),
55
+ };
56
+ }
57
+ }
58
+ /**
59
+ * Load optional `agents/openai.yaml` from the skill directory and merge
60
+ * its contents into the skill's meta as vendor-specific extensions.
61
+ */
62
+ async function enrichCodexMeta(skill, dir) {
63
+ try {
64
+ const yamlPath = join(dir, 'agents', 'openai.yaml');
65
+ const raw = await readFile(yamlPath, 'utf-8');
66
+ const parsed = parseYaml(raw);
67
+ if (parsed && typeof parsed === 'object') {
68
+ Object.assign(skill.meta, { openai: parsed });
69
+ }
70
+ }
71
+ catch {
72
+ // No openai.yaml — that's fine
73
+ }
74
+ }
75
+ //# sourceMappingURL=codex-skill-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codex-skill-manager.js","sourceRoot":"","sources":["../../src/skills/codex-skill-manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * FileSystemSkillManager — discovers skills from configurable directories.
3
+ *
4
+ * The simplest skill manager variant — no vendor-specific logic.
5
+ * Takes an array of directories to scan for skill subdirectories.
6
+ */
7
+ import type { CallOptions, ISkill, ISkillManager, Result } from '@mcp-abap-adt/llm-agent';
8
+ import { SkillError } from '@mcp-abap-adt/llm-agent';
9
+ export declare class FileSystemSkillManager implements ISkillManager {
10
+ private readonly dirs;
11
+ private cache;
12
+ constructor(dirs: string[]);
13
+ listSkills(_options?: CallOptions): Promise<Result<ISkill[], SkillError>>;
14
+ getSkill(name: string, options?: CallOptions): Promise<Result<ISkill | undefined, SkillError>>;
15
+ matchSkills(text: string, options?: CallOptions): Promise<Result<ISkill[], SkillError>>;
16
+ }
17
+ //# sourceMappingURL=filesystem-skill-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filesystem-skill-manager.d.ts","sourceRoot":"","sources":["../../src/skills/filesystem-skill-manager.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EACV,WAAW,EACX,MAAM,EACN,aAAa,EACb,MAAM,EACP,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAGrD,qBAAa,sBAAuB,YAAW,aAAa;IAG9C,OAAO,CAAC,QAAQ,CAAC,IAAI;IAFjC,OAAO,CAAC,KAAK,CAAuB;gBAEP,IAAI,EAAE,MAAM,EAAE;IAErC,UAAU,CACd,QAAQ,CAAC,EAAE,WAAW,GACrB,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,UAAU,CAAC,CAAC;IAelC,QAAQ,CACZ,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,WAAW,GACpB,OAAO,CAAC,MAAM,CAAC,MAAM,GAAG,SAAS,EAAE,UAAU,CAAC,CAAC;IAM5C,WAAW,CACf,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,WAAW,GACpB,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,UAAU,CAAC,CAAC;CAazC"}
@@ -0,0 +1,48 @@
1
+ /**
2
+ * FileSystemSkillManager — discovers skills from configurable directories.
3
+ *
4
+ * The simplest skill manager variant — no vendor-specific logic.
5
+ * Takes an array of directories to scan for skill subdirectories.
6
+ */
7
+ import { SkillError } from '@mcp-abap-adt/llm-agent';
8
+ import { scanDirsForSkills } from './skill-utils.js';
9
+ export class FileSystemSkillManager {
10
+ dirs;
11
+ cache;
12
+ constructor(dirs) {
13
+ this.dirs = dirs;
14
+ }
15
+ async listSkills(_options) {
16
+ if (this.cache)
17
+ return { ok: true, value: this.cache };
18
+ try {
19
+ const skills = await scanDirsForSkills(this.dirs);
20
+ this.cache = skills;
21
+ return { ok: true, value: skills };
22
+ }
23
+ catch (err) {
24
+ return {
25
+ ok: false,
26
+ error: new SkillError(`Failed to list skills: ${err}`),
27
+ };
28
+ }
29
+ }
30
+ async getSkill(name, options) {
31
+ const result = await this.listSkills(options);
32
+ if (!result.ok)
33
+ return result;
34
+ return { ok: true, value: result.value.find((s) => s.name === name) };
35
+ }
36
+ async matchSkills(text, options) {
37
+ const result = await this.listSkills(options);
38
+ if (!result.ok)
39
+ return result;
40
+ const lower = text.toLowerCase();
41
+ return {
42
+ ok: true,
43
+ value: result.value.filter((s) => s.name.toLowerCase().includes(lower) ||
44
+ s.description.toLowerCase().includes(lower)),
45
+ };
46
+ }
47
+ }
48
+ //# sourceMappingURL=filesystem-skill-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filesystem-skill-manager.js","sourceRoot":"","sources":["../../src/skills/filesystem-skill-manager.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAQH,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAErD,MAAM,OAAO,sBAAsB;IAGJ;IAFrB,KAAK,CAAuB;IAEpC,YAA6B,IAAc;QAAd,SAAI,GAAJ,IAAI,CAAU;IAAG,CAAC;IAE/C,KAAK,CAAC,UAAU,CACd,QAAsB;QAEtB,IAAI,IAAI,CAAC,KAAK;YAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;QAEvD,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAClD,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC;YACpB,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;QACrC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO;gBACL,EAAE,EAAE,KAAK;gBACT,KAAK,EAAE,IAAI,UAAU,CAAC,0BAA0B,GAAG,EAAE,CAAC;aACvD,CAAC;QACJ,CAAC;IACH,CAAC;IAED,KAAK,CAAC,QAAQ,CACZ,IAAY,EACZ,OAAqB;QAErB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QAC9C,IAAI,CAAC,MAAM,CAAC,EAAE;YAAE,OAAO,MAAM,CAAC;QAC9B,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;IACxE,CAAC;IAED,KAAK,CAAC,WAAW,CACf,IAAY,EACZ,OAAqB;QAErB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QAC9C,IAAI,CAAC,MAAM,CAAC,EAAE;YAAE,OAAO,MAAM,CAAC;QAC9B,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QACjC,OAAO;YACL,EAAE,EAAE,IAAI;YACR,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CACxB,CAAC,CAAC,EAAE,EAAE,CACJ,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC;gBACpC,CAAC,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CAC9C;SACF,CAAC;IACJ,CAAC;CACF"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * FileSystemSkill — concrete ISkill backed by a directory on disk.
3
+ *
4
+ * The directory must contain a `SKILL.md` file with optional YAML frontmatter.
5
+ * Supporting files (anything other than SKILL.md) are exposed as resources.
6
+ */
7
+ import type { CallOptions, ISkill, ISkillMeta, ISkillResource, Result } from '@mcp-abap-adt/llm-agent';
8
+ import { SkillError } from '@mcp-abap-adt/llm-agent';
9
+ export declare class FileSystemSkill implements ISkill {
10
+ private readonly dir;
11
+ private readonly body;
12
+ readonly name: string;
13
+ readonly description: string;
14
+ readonly meta: ISkillMeta;
15
+ constructor(dir: string, body: string, meta: ISkillMeta);
16
+ getContent(args?: string, _options?: CallOptions): Promise<Result<string, SkillError>>;
17
+ listResources(_options?: CallOptions): Promise<Result<ISkillResource[], SkillError>>;
18
+ readResource(path: string, _options?: CallOptions): Promise<Result<string, SkillError>>;
19
+ }
20
+ /**
21
+ * Load a skill from a directory containing SKILL.md.
22
+ * Returns undefined if SKILL.md doesn't exist.
23
+ */
24
+ export declare function loadSkillFromDir(dir: string): Promise<FileSystemSkill | undefined>;
25
+ //# sourceMappingURL=filesystem-skill.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filesystem-skill.d.ts","sourceRoot":"","sources":["../../src/skills/filesystem-skill.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EACV,WAAW,EACX,MAAM,EACN,UAAU,EACV,cAAc,EACd,MAAM,EACP,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAGrD,qBAAa,eAAgB,YAAW,MAAM;IAM1C,OAAO,CAAC,QAAQ,CAAC,GAAG;IACpB,OAAO,CAAC,QAAQ,CAAC,IAAI;IANvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;gBAGP,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,EAC7B,IAAI,EAAE,UAAU;IAOZ,UAAU,CACd,IAAI,CAAC,EAAE,MAAM,EACb,QAAQ,CAAC,EAAE,WAAW,GACrB,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IAgBhC,aAAa,CACjB,QAAQ,CAAC,EAAE,WAAW,GACrB,OAAO,CAAC,MAAM,CAAC,cAAc,EAAE,EAAE,UAAU,CAAC,CAAC;IAmB1C,YAAY,CAChB,IAAI,EAAE,MAAM,EACZ,QAAQ,CAAC,EAAE,WAAW,GACrB,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;CAcvC;AAED;;;GAGG;AACH,wBAAsB,gBAAgB,CACpC,GAAG,EAAE,MAAM,GACV,OAAO,CAAC,eAAe,GAAG,SAAS,CAAC,CA0BtC"}
@@ -0,0 +1,110 @@
1
+ /**
2
+ * FileSystemSkill — concrete ISkill backed by a directory on disk.
3
+ *
4
+ * The directory must contain a `SKILL.md` file with optional YAML frontmatter.
5
+ * Supporting files (anything other than SKILL.md) are exposed as resources.
6
+ */
7
+ import { readdir, readFile } from 'node:fs/promises';
8
+ import { join, relative } from 'node:path';
9
+ import { SkillError } from '@mcp-abap-adt/llm-agent';
10
+ import { parseFrontmatter } from '../utils/parse-frontmatter.js';
11
+ export class FileSystemSkill {
12
+ dir;
13
+ body;
14
+ name;
15
+ description;
16
+ meta;
17
+ constructor(dir, body, meta) {
18
+ this.dir = dir;
19
+ this.body = body;
20
+ this.name = meta.name;
21
+ this.description = meta.description;
22
+ this.meta = meta;
23
+ }
24
+ async getContent(args, _options) {
25
+ try {
26
+ let content = this.body;
27
+ content = content.replace(/\$ARGUMENTS/g, args ?? '');
28
+ content = content.replace(/\$CLAUDE_SKILL_DIR/g, this.dir);
29
+ return { ok: true, value: content };
30
+ }
31
+ catch (err) {
32
+ return {
33
+ ok: false,
34
+ error: new SkillError(`Failed to get content for skill ${this.name}: ${err}`),
35
+ };
36
+ }
37
+ }
38
+ async listResources(_options) {
39
+ try {
40
+ const resources = await collectFiles(this.dir);
41
+ return {
42
+ ok: true,
43
+ value: resources
44
+ .filter((f) => f !== 'SKILL.md')
45
+ .map((f) => ({ path: f })),
46
+ };
47
+ }
48
+ catch (err) {
49
+ return {
50
+ ok: false,
51
+ error: new SkillError(`Failed to list resources for skill ${this.name}: ${err}`),
52
+ };
53
+ }
54
+ }
55
+ async readResource(path, _options) {
56
+ try {
57
+ const fullPath = join(this.dir, path);
58
+ const content = await readFile(fullPath, 'utf-8');
59
+ return { ok: true, value: content };
60
+ }
61
+ catch (err) {
62
+ return {
63
+ ok: false,
64
+ error: new SkillError(`Failed to read resource ${path} for skill ${this.name}: ${err}`),
65
+ };
66
+ }
67
+ }
68
+ }
69
+ /**
70
+ * Load a skill from a directory containing SKILL.md.
71
+ * Returns undefined if SKILL.md doesn't exist.
72
+ */
73
+ export async function loadSkillFromDir(dir) {
74
+ const skillPath = join(dir, 'SKILL.md');
75
+ try {
76
+ const raw = await readFile(skillPath, 'utf-8');
77
+ const { meta, body } = parseFrontmatter(raw);
78
+ const name = typeof meta.name === 'string'
79
+ ? meta.name
80
+ : (dir.split('/').filter(Boolean).pop() ?? 'unknown');
81
+ const description = typeof meta.description === 'string'
82
+ ? meta.description
83
+ : (body.split('\n')[0]?.slice(0, 120) ?? '');
84
+ const skillMeta = {
85
+ ...meta,
86
+ name,
87
+ description,
88
+ };
89
+ return new FileSystemSkill(dir, body, skillMeta);
90
+ }
91
+ catch {
92
+ return undefined;
93
+ }
94
+ }
95
+ /** Recursively collect relative file paths under a directory. */
96
+ async function collectFiles(dir, base = dir) {
97
+ const entries = await readdir(dir, { withFileTypes: true });
98
+ const files = [];
99
+ for (const entry of entries) {
100
+ const fullPath = join(dir, entry.name);
101
+ if (entry.isDirectory()) {
102
+ files.push(...(await collectFiles(fullPath, base)));
103
+ }
104
+ else {
105
+ files.push(relative(base, fullPath));
106
+ }
107
+ }
108
+ return files;
109
+ }
110
+ //# sourceMappingURL=filesystem-skill.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filesystem-skill.js","sourceRoot":"","sources":["../../src/skills/filesystem-skill.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Skills — barrel exports.
3
+ */
4
+ export { ClaudeSkillManager } from './claude-skill-manager.js';
5
+ export { CodexSkillManager } from './codex-skill-manager.js';
6
+ export { FileSystemSkill, loadSkillFromDir } from './filesystem-skill.js';
7
+ export { FileSystemSkillManager } from './filesystem-skill-manager.js';
8
+ export { scanDirsForSkills } from './skill-utils.js';
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/skills/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAC1E,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AACvE,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Skills — barrel exports.
3
+ */
4
+ export { ClaudeSkillManager } from './claude-skill-manager.js';
5
+ export { CodexSkillManager } from './codex-skill-manager.js';
6
+ export { FileSystemSkill, loadSkillFromDir } from './filesystem-skill.js';
7
+ export { FileSystemSkillManager } from './filesystem-skill-manager.js';
8
+ export { scanDirsForSkills } from './skill-utils.js';
9
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/skills/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAC1E,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AACvE,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC"}