@skillsmith/core 0.2.0 → 0.4.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 (469) hide show
  1. package/README.md +235 -4
  2. package/dist/.tsbuildinfo +1 -1
  3. package/dist/src/analysis/__tests__/incremental.test.d.ts +13 -0
  4. package/dist/src/analysis/__tests__/incremental.test.d.ts.map +1 -0
  5. package/dist/src/analysis/__tests__/incremental.test.js +515 -0
  6. package/dist/src/analysis/__tests__/incremental.test.js.map +1 -0
  7. package/dist/src/analysis/__tests__/integration.test.d.ts +14 -0
  8. package/dist/src/analysis/__tests__/integration.test.d.ts.map +1 -0
  9. package/dist/src/analysis/__tests__/integration.test.js +1059 -0
  10. package/dist/src/analysis/__tests__/integration.test.js.map +1 -0
  11. package/dist/src/analysis/__tests__/metrics.test.d.ts +9 -0
  12. package/dist/src/analysis/__tests__/metrics.test.d.ts.map +1 -0
  13. package/dist/src/analysis/__tests__/metrics.test.js +369 -0
  14. package/dist/src/analysis/__tests__/metrics.test.js.map +1 -0
  15. package/dist/src/analysis/__tests__/performance.test.d.ts +15 -0
  16. package/dist/src/analysis/__tests__/performance.test.d.ts.map +1 -0
  17. package/dist/src/analysis/__tests__/performance.test.js +402 -0
  18. package/dist/src/analysis/__tests__/performance.test.js.map +1 -0
  19. package/dist/src/analysis/adapters/__tests__/go.test.d.ts +12 -0
  20. package/dist/src/analysis/adapters/__tests__/go.test.d.ts.map +1 -0
  21. package/dist/src/analysis/adapters/__tests__/go.test.js +561 -0
  22. package/dist/src/analysis/adapters/__tests__/go.test.js.map +1 -0
  23. package/dist/src/analysis/adapters/__tests__/python.test.d.ts +11 -0
  24. package/dist/src/analysis/adapters/__tests__/python.test.d.ts.map +1 -0
  25. package/dist/src/analysis/adapters/__tests__/python.test.js +669 -0
  26. package/dist/src/analysis/adapters/__tests__/python.test.js.map +1 -0
  27. package/dist/src/analysis/adapters/__tests__/rust.test.d.ts +12 -0
  28. package/dist/src/analysis/adapters/__tests__/rust.test.d.ts.map +1 -0
  29. package/dist/src/analysis/adapters/__tests__/rust.test.js +676 -0
  30. package/dist/src/analysis/adapters/__tests__/rust.test.js.map +1 -0
  31. package/dist/src/analysis/adapters/__tests__/typescript.test.d.ts +14 -0
  32. package/dist/src/analysis/adapters/__tests__/typescript.test.d.ts.map +1 -0
  33. package/dist/src/analysis/adapters/__tests__/typescript.test.js +381 -0
  34. package/dist/src/analysis/adapters/__tests__/typescript.test.js.map +1 -0
  35. package/dist/src/analysis/adapters/base.d.ts +83 -0
  36. package/dist/src/analysis/adapters/base.d.ts.map +1 -0
  37. package/dist/src/analysis/adapters/base.js +40 -0
  38. package/dist/src/analysis/adapters/base.js.map +1 -0
  39. package/dist/src/analysis/adapters/factory.d.ts +150 -0
  40. package/dist/src/analysis/adapters/factory.d.ts.map +1 -0
  41. package/dist/src/analysis/adapters/factory.js +244 -0
  42. package/dist/src/analysis/adapters/factory.js.map +1 -0
  43. package/dist/src/analysis/adapters/go.d.ts +131 -0
  44. package/dist/src/analysis/adapters/go.d.ts.map +1 -0
  45. package/dist/src/analysis/adapters/go.js +414 -0
  46. package/dist/src/analysis/adapters/go.js.map +1 -0
  47. package/dist/src/analysis/adapters/index.d.ts +20 -0
  48. package/dist/src/analysis/adapters/index.d.ts.map +1 -0
  49. package/dist/src/analysis/adapters/index.js +23 -0
  50. package/dist/src/analysis/adapters/index.js.map +1 -0
  51. package/dist/src/analysis/adapters/java.d.ts +154 -0
  52. package/dist/src/analysis/adapters/java.d.ts.map +1 -0
  53. package/dist/src/analysis/adapters/java.js +407 -0
  54. package/dist/src/analysis/adapters/java.js.map +1 -0
  55. package/dist/src/analysis/adapters/python.d.ts +165 -0
  56. package/dist/src/analysis/adapters/python.d.ts.map +1 -0
  57. package/dist/src/analysis/adapters/python.js +475 -0
  58. package/dist/src/analysis/adapters/python.js.map +1 -0
  59. package/dist/src/analysis/adapters/rust.d.ts +116 -0
  60. package/dist/src/analysis/adapters/rust.d.ts.map +1 -0
  61. package/dist/src/analysis/adapters/rust.js +476 -0
  62. package/dist/src/analysis/adapters/rust.js.map +1 -0
  63. package/dist/src/analysis/adapters/typescript.d.ts +68 -0
  64. package/dist/src/analysis/adapters/typescript.d.ts.map +1 -0
  65. package/dist/src/analysis/adapters/typescript.js +79 -0
  66. package/dist/src/analysis/adapters/typescript.js.map +1 -0
  67. package/dist/src/analysis/aggregator.d.ts +193 -0
  68. package/dist/src/analysis/aggregator.d.ts.map +1 -0
  69. package/dist/src/analysis/aggregator.js +283 -0
  70. package/dist/src/analysis/aggregator.js.map +1 -0
  71. package/dist/src/analysis/cache.d.ts +180 -0
  72. package/dist/src/analysis/cache.d.ts.map +1 -0
  73. package/dist/src/analysis/cache.js +279 -0
  74. package/dist/src/analysis/cache.js.map +1 -0
  75. package/dist/src/analysis/file-streamer.d.ts +136 -0
  76. package/dist/src/analysis/file-streamer.d.ts.map +1 -0
  77. package/dist/src/analysis/file-streamer.js +291 -0
  78. package/dist/src/analysis/file-streamer.js.map +1 -0
  79. package/dist/src/analysis/incremental-parser.d.ts +186 -0
  80. package/dist/src/analysis/incremental-parser.d.ts.map +1 -0
  81. package/dist/src/analysis/incremental-parser.js +291 -0
  82. package/dist/src/analysis/incremental-parser.js.map +1 -0
  83. package/dist/src/analysis/incremental.d.ts +186 -0
  84. package/dist/src/analysis/incremental.d.ts.map +1 -0
  85. package/dist/src/analysis/incremental.js +247 -0
  86. package/dist/src/analysis/incremental.js.map +1 -0
  87. package/dist/src/analysis/index.d.ts +25 -3
  88. package/dist/src/analysis/index.d.ts.map +1 -1
  89. package/dist/src/analysis/index.js +45 -3
  90. package/dist/src/analysis/index.js.map +1 -1
  91. package/dist/src/analysis/language-detector.d.ts +92 -0
  92. package/dist/src/analysis/language-detector.d.ts.map +1 -0
  93. package/dist/src/analysis/language-detector.js +602 -0
  94. package/dist/src/analysis/language-detector.js.map +1 -0
  95. package/dist/src/analysis/memory-monitor.d.ts +199 -0
  96. package/dist/src/analysis/memory-monitor.d.ts.map +1 -0
  97. package/dist/src/analysis/memory-monitor.js +271 -0
  98. package/dist/src/analysis/memory-monitor.js.map +1 -0
  99. package/dist/src/analysis/metrics.d.ts +300 -0
  100. package/dist/src/analysis/metrics.d.ts.map +1 -0
  101. package/dist/src/analysis/metrics.js +537 -0
  102. package/dist/src/analysis/metrics.js.map +1 -0
  103. package/dist/src/analysis/router.d.ts +264 -0
  104. package/dist/src/analysis/router.d.ts.map +1 -0
  105. package/dist/src/analysis/router.js +398 -0
  106. package/dist/src/analysis/router.js.map +1 -0
  107. package/dist/src/analysis/tree-cache.d.ts +208 -0
  108. package/dist/src/analysis/tree-cache.d.ts.map +1 -0
  109. package/dist/src/analysis/tree-cache.js +288 -0
  110. package/dist/src/analysis/tree-cache.js.map +1 -0
  111. package/dist/src/analysis/tree-sitter/manager.d.ts +141 -0
  112. package/dist/src/analysis/tree-sitter/manager.d.ts.map +1 -0
  113. package/dist/src/analysis/tree-sitter/manager.js +239 -0
  114. package/dist/src/analysis/tree-sitter/manager.js.map +1 -0
  115. package/dist/src/analysis/types.d.ts +71 -6
  116. package/dist/src/analysis/types.d.ts.map +1 -1
  117. package/dist/src/analysis/types.js +36 -3
  118. package/dist/src/analysis/types.js.map +1 -1
  119. package/dist/src/analysis/worker-pool.d.ts +141 -0
  120. package/dist/src/analysis/worker-pool.d.ts.map +1 -0
  121. package/dist/src/analysis/worker-pool.js +418 -0
  122. package/dist/src/analysis/worker-pool.js.map +1 -0
  123. package/dist/src/analytics/AnalyticsRepository.d.ts +4 -0
  124. package/dist/src/analytics/AnalyticsRepository.d.ts.map +1 -1
  125. package/dist/src/analytics/AnalyticsRepository.js +26 -44
  126. package/dist/src/analytics/AnalyticsRepository.js.map +1 -1
  127. package/dist/src/analytics/schema.d.ts +1 -1
  128. package/dist/src/analytics/schema.d.ts.map +1 -1
  129. package/dist/src/analytics/schema.js +140 -0
  130. package/dist/src/analytics/schema.js.map +1 -1
  131. package/dist/src/api/cache.d.ts +24 -1
  132. package/dist/src/api/cache.d.ts.map +1 -1
  133. package/dist/src/api/cache.js +50 -2
  134. package/dist/src/api/cache.js.map +1 -1
  135. package/dist/src/api/client.d.ts +140 -6
  136. package/dist/src/api/client.d.ts.map +1 -1
  137. package/dist/src/api/client.js +222 -21
  138. package/dist/src/api/client.js.map +1 -1
  139. package/dist/src/api/index.d.ts +2 -0
  140. package/dist/src/api/index.d.ts.map +1 -1
  141. package/dist/src/api/index.js +7 -0
  142. package/dist/src/api/index.js.map +1 -1
  143. package/dist/src/api/types.d.ts +251 -0
  144. package/dist/src/api/types.d.ts.map +1 -0
  145. package/dist/src/api/types.js +9 -0
  146. package/dist/src/api/types.js.map +1 -0
  147. package/dist/src/benchmarks/memory/MemoryProfiler.d.ts.map +1 -1
  148. package/dist/src/benchmarks/memory/MemoryProfiler.js.map +1 -1
  149. package/dist/src/billing/BillingService.d.ts +139 -0
  150. package/dist/src/billing/BillingService.d.ts.map +1 -0
  151. package/dist/src/billing/BillingService.js +393 -0
  152. package/dist/src/billing/BillingService.js.map +1 -0
  153. package/dist/src/billing/GDPRComplianceService.d.ts +176 -0
  154. package/dist/src/billing/GDPRComplianceService.d.ts.map +1 -0
  155. package/dist/src/billing/GDPRComplianceService.js +361 -0
  156. package/dist/src/billing/GDPRComplianceService.js.map +1 -0
  157. package/dist/src/billing/StripeClient.d.ts +177 -0
  158. package/dist/src/billing/StripeClient.d.ts.map +1 -0
  159. package/dist/src/billing/StripeClient.js +462 -0
  160. package/dist/src/billing/StripeClient.js.map +1 -0
  161. package/dist/src/billing/StripeReconciliationJob.d.ts +95 -0
  162. package/dist/src/billing/StripeReconciliationJob.d.ts.map +1 -0
  163. package/dist/src/billing/StripeReconciliationJob.js +405 -0
  164. package/dist/src/billing/StripeReconciliationJob.js.map +1 -0
  165. package/dist/src/billing/StripeWebhookHandler.d.ts +92 -0
  166. package/dist/src/billing/StripeWebhookHandler.d.ts.map +1 -0
  167. package/dist/src/billing/StripeWebhookHandler.js +409 -0
  168. package/dist/src/billing/StripeWebhookHandler.js.map +1 -0
  169. package/dist/src/billing/index.d.ts +18 -0
  170. package/dist/src/billing/index.d.ts.map +1 -0
  171. package/dist/src/billing/index.js +19 -0
  172. package/dist/src/billing/index.js.map +1 -0
  173. package/dist/src/billing/types.d.ts +266 -0
  174. package/dist/src/billing/types.d.ts.map +1 -0
  175. package/dist/src/billing/types.js +23 -0
  176. package/dist/src/billing/types.js.map +1 -0
  177. package/dist/src/db/schema.d.ts +1 -1
  178. package/dist/src/db/schema.d.ts.map +1 -1
  179. package/dist/src/db/schema.js +41 -1
  180. package/dist/src/db/schema.js.map +1 -1
  181. package/dist/src/embeddings/hnsw-store.d.ts +568 -0
  182. package/dist/src/embeddings/hnsw-store.d.ts.map +1 -0
  183. package/dist/src/embeddings/hnsw-store.js +805 -0
  184. package/dist/src/embeddings/hnsw-store.js.map +1 -0
  185. package/dist/src/embeddings/index.d.ts +2 -0
  186. package/dist/src/embeddings/index.d.ts.map +1 -1
  187. package/dist/src/embeddings/index.js +2 -0
  188. package/dist/src/embeddings/index.js.map +1 -1
  189. package/dist/src/errors.d.ts +1 -0
  190. package/dist/src/errors.d.ts.map +1 -1
  191. package/dist/src/errors.js +1 -0
  192. package/dist/src/errors.js.map +1 -1
  193. package/dist/src/index.d.ts +5 -3
  194. package/dist/src/index.d.ts.map +1 -1
  195. package/dist/src/index.js +8 -4
  196. package/dist/src/index.js.map +1 -1
  197. package/dist/src/learning/PatternStore.d.ts +457 -0
  198. package/dist/src/learning/PatternStore.d.ts.map +1 -0
  199. package/dist/src/learning/PatternStore.js +893 -0
  200. package/dist/src/learning/PatternStore.js.map +1 -0
  201. package/dist/src/learning/ReasoningBankIntegration.d.ts +403 -0
  202. package/dist/src/learning/ReasoningBankIntegration.d.ts.map +1 -0
  203. package/dist/src/learning/ReasoningBankIntegration.js +627 -0
  204. package/dist/src/learning/ReasoningBankIntegration.js.map +1 -0
  205. package/dist/src/learning/index.d.ts +15 -0
  206. package/dist/src/learning/index.d.ts.map +1 -0
  207. package/dist/src/learning/index.js +15 -0
  208. package/dist/src/learning/index.js.map +1 -0
  209. package/dist/src/repositories/IndexerRepository.d.ts.map +1 -1
  210. package/dist/src/repositories/IndexerRepository.js +1 -0
  211. package/dist/src/repositories/IndexerRepository.js.map +1 -1
  212. package/dist/src/repositories/SkillRepository.d.ts.map +1 -1
  213. package/dist/src/repositories/SkillRepository.js +1 -0
  214. package/dist/src/repositories/SkillRepository.js.map +1 -1
  215. package/dist/src/repositories/SyncConfigRepository.d.ts +91 -0
  216. package/dist/src/repositories/SyncConfigRepository.d.ts.map +1 -0
  217. package/dist/src/repositories/SyncConfigRepository.js +202 -0
  218. package/dist/src/repositories/SyncConfigRepository.js.map +1 -0
  219. package/dist/src/repositories/SyncHistoryRepository.d.ts +104 -0
  220. package/dist/src/repositories/SyncHistoryRepository.d.ts.map +1 -0
  221. package/dist/src/repositories/SyncHistoryRepository.js +235 -0
  222. package/dist/src/repositories/SyncHistoryRepository.js.map +1 -0
  223. package/dist/src/repositories/quarantine/QuarantineRepository.d.ts.map +1 -1
  224. package/dist/src/repositories/quarantine/QuarantineRepository.js.map +1 -1
  225. package/dist/src/repositories/quarantine/query-builder.d.ts.map +1 -1
  226. package/dist/src/repositories/quarantine/query-builder.js +1 -1
  227. package/dist/src/repositories/quarantine/query-builder.js.map +1 -1
  228. package/dist/src/routing/SONARouter.d.ts +154 -0
  229. package/dist/src/routing/SONARouter.d.ts.map +1 -0
  230. package/dist/src/routing/SONARouter.js +679 -0
  231. package/dist/src/routing/SONARouter.js.map +1 -0
  232. package/dist/src/routing/index.d.ts +9 -0
  233. package/dist/src/routing/index.d.ts.map +1 -0
  234. package/dist/src/routing/index.js +10 -0
  235. package/dist/src/routing/index.js.map +1 -0
  236. package/dist/src/routing/types.d.ts +331 -0
  237. package/dist/src/routing/types.d.ts.map +1 -0
  238. package/dist/src/routing/types.js +203 -0
  239. package/dist/src/routing/types.js.map +1 -0
  240. package/dist/src/scripts/__tests__/scan-imported-skills.test.js +8 -3
  241. package/dist/src/scripts/__tests__/scan-imported-skills.test.js.map +1 -1
  242. package/dist/src/scripts/github-import/github-client.d.ts +30 -2
  243. package/dist/src/scripts/github-import/github-client.d.ts.map +1 -1
  244. package/dist/src/scripts/github-import/github-client.js +293 -4
  245. package/dist/src/scripts/github-import/github-client.js.map +1 -1
  246. package/dist/src/scripts/github-import/index.js +3 -10
  247. package/dist/src/scripts/github-import/index.js.map +1 -1
  248. package/dist/src/scripts/github-import/types.d.ts +6 -0
  249. package/dist/src/scripts/github-import/types.d.ts.map +1 -1
  250. package/dist/src/scripts/github-import/types.js +3 -0
  251. package/dist/src/scripts/github-import/types.js.map +1 -1
  252. package/dist/src/scripts/import-github-skills.js +10 -5
  253. package/dist/src/scripts/import-github-skills.js.map +1 -1
  254. package/dist/src/scripts/merge-skills.d.ts +56 -0
  255. package/dist/src/scripts/merge-skills.d.ts.map +1 -0
  256. package/dist/src/scripts/merge-skills.js +411 -0
  257. package/dist/src/scripts/merge-skills.js.map +1 -0
  258. package/dist/src/scripts/skill-scanner/index.d.ts +9 -2
  259. package/dist/src/scripts/skill-scanner/index.d.ts.map +1 -1
  260. package/dist/src/scripts/skill-scanner/index.js +98 -7
  261. package/dist/src/scripts/skill-scanner/index.js.map +1 -1
  262. package/dist/src/scripts/skill-scanner/logger.d.ts +51 -0
  263. package/dist/src/scripts/skill-scanner/logger.d.ts.map +1 -1
  264. package/dist/src/scripts/skill-scanner/logger.js +255 -1
  265. package/dist/src/scripts/skill-scanner/logger.js.map +1 -1
  266. package/dist/src/scripts/skill-scanner/reporter.d.ts +1 -1
  267. package/dist/src/scripts/skill-scanner/reporter.d.ts.map +1 -1
  268. package/dist/src/scripts/skill-scanner/reporter.js +67 -15
  269. package/dist/src/scripts/skill-scanner/reporter.js.map +1 -1
  270. package/dist/src/scripts/skill-scanner/scanner.d.ts +5 -2
  271. package/dist/src/scripts/skill-scanner/scanner.d.ts.map +1 -1
  272. package/dist/src/scripts/skill-scanner/scanner.js +156 -39
  273. package/dist/src/scripts/skill-scanner/scanner.js.map +1 -1
  274. package/dist/src/scripts/skill-scanner/trust-scorer.d.ts.map +1 -1
  275. package/dist/src/scripts/skill-scanner/trust-scorer.js.map +1 -1
  276. package/dist/src/scripts/skill-scanner/types.d.ts +44 -0
  277. package/dist/src/scripts/skill-scanner/types.d.ts.map +1 -1
  278. package/dist/src/scripts/validation/index.js +1 -2
  279. package/dist/src/scripts/validation/index.js.map +1 -1
  280. package/dist/src/scripts/validation/pipeline.d.ts.map +1 -1
  281. package/dist/src/scripts/validation/pipeline.js.map +1 -1
  282. package/dist/src/scripts/validation/types.d.ts +2 -2
  283. package/dist/src/security/SkillSandbox.d.ts +156 -0
  284. package/dist/src/security/SkillSandbox.d.ts.map +1 -0
  285. package/dist/src/security/SkillSandbox.js +303 -0
  286. package/dist/src/security/SkillSandbox.js.map +1 -0
  287. package/dist/src/security/index.d.ts +3 -1
  288. package/dist/src/security/index.d.ts.map +1 -1
  289. package/dist/src/security/index.js +5 -1
  290. package/dist/src/security/index.js.map +1 -1
  291. package/dist/src/security/rate-limiter/presets.d.ts +12 -0
  292. package/dist/src/security/rate-limiter/presets.d.ts.map +1 -1
  293. package/dist/src/security/rate-limiter/presets.js +12 -0
  294. package/dist/src/security/rate-limiter/presets.js.map +1 -1
  295. package/dist/src/security/sanitization.d.ts +85 -0
  296. package/dist/src/security/sanitization.d.ts.map +1 -1
  297. package/dist/src/security/sanitization.js +133 -0
  298. package/dist/src/security/sanitization.js.map +1 -1
  299. package/dist/src/security/scanner/SecurityScanner.d.ts +23 -0
  300. package/dist/src/security/scanner/SecurityScanner.d.ts.map +1 -1
  301. package/dist/src/security/scanner/SecurityScanner.js +232 -28
  302. package/dist/src/security/scanner/SecurityScanner.js.map +1 -1
  303. package/dist/src/security/scanner/patterns.d.ts +13 -0
  304. package/dist/src/security/scanner/patterns.d.ts.map +1 -1
  305. package/dist/src/security/scanner/patterns.js +51 -0
  306. package/dist/src/security/scanner/patterns.js.map +1 -1
  307. package/dist/src/security/scanner/types.d.ts +13 -1
  308. package/dist/src/security/scanner/types.d.ts.map +1 -1
  309. package/dist/src/security/scanner/weights.d.ts.map +1 -1
  310. package/dist/src/security/scanner/weights.js +1 -0
  311. package/dist/src/security/scanner/weights.js.map +1 -1
  312. package/dist/src/services/SearchService.d.ts.map +1 -1
  313. package/dist/src/services/SearchService.js +1 -0
  314. package/dist/src/services/SearchService.js.map +1 -1
  315. package/dist/src/session/SessionHealthMonitor.d.ts +1 -1
  316. package/dist/src/session/SessionHealthMonitor.d.ts.map +1 -1
  317. package/dist/src/session/SessionHealthMonitor.js +1 -1
  318. package/dist/src/session/SessionHealthMonitor.js.map +1 -1
  319. package/dist/src/session/SessionManager.d.ts +7 -0
  320. package/dist/src/session/SessionManager.d.ts.map +1 -1
  321. package/dist/src/session/SessionManager.js +117 -10
  322. package/dist/src/session/SessionManager.js.map +1 -1
  323. package/dist/src/sync/BackgroundSyncService.d.ts +90 -0
  324. package/dist/src/sync/BackgroundSyncService.d.ts.map +1 -0
  325. package/dist/src/sync/BackgroundSyncService.js +214 -0
  326. package/dist/src/sync/BackgroundSyncService.js.map +1 -0
  327. package/dist/src/sync/SyncEngine.d.ts +76 -0
  328. package/dist/src/sync/SyncEngine.d.ts.map +1 -0
  329. package/dist/src/sync/SyncEngine.js +292 -0
  330. package/dist/src/sync/SyncEngine.js.map +1 -0
  331. package/dist/src/sync/index.d.ts +11 -0
  332. package/dist/src/sync/index.d.ts.map +1 -0
  333. package/dist/src/sync/index.js +14 -0
  334. package/dist/src/sync/index.js.map +1 -0
  335. package/dist/src/telemetry/index.d.ts +1 -1
  336. package/dist/src/telemetry/index.d.ts.map +1 -1
  337. package/dist/src/telemetry/index.js +2 -2
  338. package/dist/src/telemetry/index.js.map +1 -1
  339. package/dist/src/telemetry/posthog.d.ts +27 -5
  340. package/dist/src/telemetry/posthog.d.ts.map +1 -1
  341. package/dist/src/telemetry/posthog.js +20 -5
  342. package/dist/src/telemetry/posthog.js.map +1 -1
  343. package/dist/src/testing/MultiLLMProvider.d.ts +374 -0
  344. package/dist/src/testing/MultiLLMProvider.d.ts.map +1 -0
  345. package/dist/src/testing/MultiLLMProvider.js +720 -0
  346. package/dist/src/testing/MultiLLMProvider.js.map +1 -0
  347. package/dist/src/testing/index.d.ts +8 -0
  348. package/dist/src/testing/index.d.ts.map +1 -0
  349. package/dist/src/testing/index.js +9 -0
  350. package/dist/src/testing/index.js.map +1 -0
  351. package/dist/src/types/skill.d.ts +3 -0
  352. package/dist/src/types/skill.d.ts.map +1 -1
  353. package/dist/src/types.d.ts +5 -1
  354. package/dist/src/types.d.ts.map +1 -1
  355. package/dist/src/types.js +2 -2
  356. package/dist/src/types.js.map +1 -1
  357. package/dist/tests/SecurityScanner.test.js +337 -1
  358. package/dist/tests/SecurityScanner.test.js.map +1 -1
  359. package/dist/tests/adapters-factory.test.d.ts +13 -0
  360. package/dist/tests/adapters-factory.test.d.ts.map +1 -0
  361. package/dist/tests/adapters-factory.test.js +308 -0
  362. package/dist/tests/adapters-factory.test.js.map +1 -0
  363. package/dist/tests/adapters-java.test.d.ts +13 -0
  364. package/dist/tests/adapters-java.test.d.ts.map +1 -0
  365. package/dist/tests/adapters-java.test.js +925 -0
  366. package/dist/tests/adapters-java.test.js.map +1 -0
  367. package/dist/tests/api/client.validation.test.d.ts +7 -0
  368. package/dist/tests/api/client.validation.test.d.ts.map +1 -0
  369. package/dist/tests/api/client.validation.test.js +183 -0
  370. package/dist/tests/api/client.validation.test.js.map +1 -0
  371. package/dist/tests/billing/BillingService.test.d.ts +7 -0
  372. package/dist/tests/billing/BillingService.test.d.ts.map +1 -0
  373. package/dist/tests/billing/BillingService.test.js +168 -0
  374. package/dist/tests/billing/BillingService.test.js.map +1 -0
  375. package/dist/tests/billing/GDPRCompliance.test.d.ts +7 -0
  376. package/dist/tests/billing/GDPRCompliance.test.d.ts.map +1 -0
  377. package/dist/tests/billing/GDPRCompliance.test.js +195 -0
  378. package/dist/tests/billing/GDPRCompliance.test.js.map +1 -0
  379. package/dist/tests/billing/StripeReconciliation.test.d.ts +7 -0
  380. package/dist/tests/billing/StripeReconciliation.test.d.ts.map +1 -0
  381. package/dist/tests/billing/StripeReconciliation.test.js +266 -0
  382. package/dist/tests/billing/StripeReconciliation.test.js.map +1 -0
  383. package/dist/tests/billing/stripe-validators.test.d.ts +7 -0
  384. package/dist/tests/billing/stripe-validators.test.d.ts.map +1 -0
  385. package/dist/tests/billing/stripe-validators.test.js +107 -0
  386. package/dist/tests/billing/stripe-validators.test.js.map +1 -0
  387. package/dist/tests/embeddings/hnsw-store.test.d.ts +7 -0
  388. package/dist/tests/embeddings/hnsw-store.test.d.ts.map +1 -0
  389. package/dist/tests/embeddings/hnsw-store.test.js +295 -0
  390. package/dist/tests/embeddings/hnsw-store.test.js.map +1 -0
  391. package/dist/tests/integration/neural/e2e-learning.test.d.ts +17 -0
  392. package/dist/tests/integration/neural/e2e-learning.test.d.ts.map +1 -0
  393. package/dist/tests/integration/neural/e2e-learning.test.js +238 -0
  394. package/dist/tests/integration/neural/e2e-learning.test.js.map +1 -0
  395. package/dist/tests/integration/neural/helpers.d.ts +132 -0
  396. package/dist/tests/integration/neural/helpers.d.ts.map +1 -0
  397. package/dist/tests/integration/neural/helpers.js +287 -0
  398. package/dist/tests/integration/neural/helpers.js.map +1 -0
  399. package/dist/tests/integration/neural/personalization.test.d.ts +21 -0
  400. package/dist/tests/integration/neural/personalization.test.d.ts.map +1 -0
  401. package/dist/tests/integration/neural/personalization.test.js +304 -0
  402. package/dist/tests/integration/neural/personalization.test.js.map +1 -0
  403. package/dist/tests/integration/neural/preference-learner.test.d.ts +23 -0
  404. package/dist/tests/integration/neural/preference-learner.test.d.ts.map +1 -0
  405. package/dist/tests/integration/neural/preference-learner.test.js +289 -0
  406. package/dist/tests/integration/neural/preference-learner.test.js.map +1 -0
  407. package/dist/tests/integration/neural/privacy.test.d.ts +19 -0
  408. package/dist/tests/integration/neural/privacy.test.d.ts.map +1 -0
  409. package/dist/tests/integration/neural/privacy.test.js +249 -0
  410. package/dist/tests/integration/neural/privacy.test.js.map +1 -0
  411. package/dist/tests/integration/neural/setup.d.ts +175 -0
  412. package/dist/tests/integration/neural/setup.d.ts.map +1 -0
  413. package/dist/tests/integration/neural/setup.js +487 -0
  414. package/dist/tests/integration/neural/setup.js.map +1 -0
  415. package/dist/tests/integration/neural/signal-collection.test.d.ts +21 -0
  416. package/dist/tests/integration/neural/signal-collection.test.d.ts.map +1 -0
  417. package/dist/tests/integration/neural/signal-collection.test.js +232 -0
  418. package/dist/tests/integration/neural/signal-collection.test.js.map +1 -0
  419. package/dist/tests/language-detector.test.d.ts +13 -0
  420. package/dist/tests/language-detector.test.d.ts.map +1 -0
  421. package/dist/tests/language-detector.test.js +674 -0
  422. package/dist/tests/language-detector.test.js.map +1 -0
  423. package/dist/tests/learning/PatternStore.test.d.ts +8 -0
  424. package/dist/tests/learning/PatternStore.test.d.ts.map +1 -0
  425. package/dist/tests/learning/PatternStore.test.js +589 -0
  426. package/dist/tests/learning/PatternStore.test.js.map +1 -0
  427. package/dist/tests/learning/ReasoningBankIntegration.test.d.ts +8 -0
  428. package/dist/tests/learning/ReasoningBankIntegration.test.d.ts.map +1 -0
  429. package/dist/tests/learning/ReasoningBankIntegration.test.js +269 -0
  430. package/dist/tests/learning/ReasoningBankIntegration.test.js.map +1 -0
  431. package/dist/tests/routing/SONARouter.test.d.ts +8 -0
  432. package/dist/tests/routing/SONARouter.test.d.ts.map +1 -0
  433. package/dist/tests/routing/SONARouter.test.js +400 -0
  434. package/dist/tests/routing/SONARouter.test.js.map +1 -0
  435. package/dist/tests/security/ContinuousSecurity.test.js +10 -12
  436. package/dist/tests/security/ContinuousSecurity.test.js.map +1 -1
  437. package/dist/tests/security/SkillSandbox.test.d.ts +8 -0
  438. package/dist/tests/security/SkillSandbox.test.d.ts.map +1 -0
  439. package/dist/tests/security/SkillSandbox.test.js +321 -0
  440. package/dist/tests/security/SkillSandbox.test.js.map +1 -0
  441. package/dist/tests/sync/SyncConfigRepository.test.d.ts +7 -0
  442. package/dist/tests/sync/SyncConfigRepository.test.d.ts.map +1 -0
  443. package/dist/tests/sync/SyncConfigRepository.test.js +154 -0
  444. package/dist/tests/sync/SyncConfigRepository.test.js.map +1 -0
  445. package/dist/tests/sync/SyncEngine.test.d.ts +7 -0
  446. package/dist/tests/sync/SyncEngine.test.d.ts.map +1 -0
  447. package/dist/tests/sync/SyncEngine.test.js +300 -0
  448. package/dist/tests/sync/SyncEngine.test.js.map +1 -0
  449. package/dist/tests/sync/SyncHistoryRepository.test.d.ts +7 -0
  450. package/dist/tests/sync/SyncHistoryRepository.test.d.ts.map +1 -0
  451. package/dist/tests/sync/SyncHistoryRepository.test.js +220 -0
  452. package/dist/tests/sync/SyncHistoryRepository.test.js.map +1 -0
  453. package/dist/tests/telemetry/posthog.test.d.ts +13 -0
  454. package/dist/tests/telemetry/posthog.test.d.ts.map +1 -0
  455. package/dist/tests/telemetry/posthog.test.js +600 -0
  456. package/dist/tests/telemetry/posthog.test.js.map +1 -0
  457. package/dist/tests/testing/MultiLLMProvider.test.d.ts +14 -0
  458. package/dist/tests/testing/MultiLLMProvider.test.d.ts.map +1 -0
  459. package/dist/tests/testing/MultiLLMProvider.test.js +438 -0
  460. package/dist/tests/testing/MultiLLMProvider.test.js.map +1 -0
  461. package/package.json +20 -6
  462. package/dist/src/security/RateLimiter.d.ts +0 -337
  463. package/dist/src/security/RateLimiter.d.ts.map +0 -1
  464. package/dist/src/security/RateLimiter.js +0 -782
  465. package/dist/src/security/RateLimiter.js.map +0 -1
  466. package/dist/src/security/scanner.d.ts +0 -151
  467. package/dist/src/security/scanner.d.ts.map +0 -1
  468. package/dist/src/security/scanner.js +0 -599
  469. package/dist/src/security/scanner.js.map +0 -1
@@ -12,8 +12,8 @@ export { SkillsmithTracer, getTracer, initializeTracing, shutdownTracing, traced
12
12
  export { MetricsRegistry, getMetrics, initializeMetrics, timeAsync, timeSync, LATENCY_BUCKETS, } from './metrics.js';
13
13
  // Prometheus exports (SMI-1018)
14
14
  export { exportToPrometheus, getPrometheusMetrics, createPrometheusHandler, } from './prometheus.js';
15
- // PostHog exports (SMI-1246)
16
- export { initializePostHog, getPostHog, isPostHogEnabled, trackEvent, identifyUser, isFeatureFlagEnabled, flushPostHog, shutdownPostHog, trackSkillSearch, trackSkillView, trackSkillInstall, trackApiError, } from './posthog.js';
15
+ // PostHog exports (SMI-1184)
16
+ export { initializePostHog, shutdownPostHog, flushPostHog, trackEvent, trackSkillSearch, trackSkillView, trackSkillInstall, trackApiError, identifyUser, isFeatureFlagEnabled, getPostHog, isPostHogEnabled, ALLOWED_TRAITS, } from './posthog.js';
17
17
  /**
18
18
  * Initialize all telemetry (tracing + metrics)
19
19
  * Call this at application startup
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/telemetry/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,iBAAiB;AACjB,OAAO,EACL,gBAAgB,EAChB,SAAS,EACT,iBAAiB,EACjB,eAAe,EACf,MAAM,GAIP,MAAM,aAAa,CAAA;AAEpB,kBAAkB;AAClB,OAAO,EACL,eAAe,EACf,UAAU,EACV,iBAAiB,EACjB,SAAS,EACT,QAAQ,EACR,eAAe,GAOhB,MAAM,cAAc,CAAA;AAErB,gCAAgC;AAChC,OAAO,EACL,kBAAkB,EAClB,oBAAoB,EACpB,uBAAuB,GAExB,MAAM,iBAAiB,CAAA;AAExB,6BAA6B;AAC7B,OAAO,EACL,iBAAiB,EACjB,UAAU,EACV,gBAAgB,EAChB,UAAU,EACV,YAAY,EACZ,oBAAoB,EACpB,YAAY,EACZ,eAAe,EACf,gBAAgB,EAChB,cAAc,EACd,iBAAiB,EACjB,aAAa,GAId,MAAM,cAAc,CAAA;AAErB;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,MAGzC;IACC,MAAM,EAAE,iBAAiB,EAAE,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,CAAA;IACzD,MAAM,EAAE,iBAAiB,EAAE,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,CAAA;IAE1D,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,iBAAiB,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,iBAAiB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,CAAA;AAC7F,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB;IACrC,MAAM,EAAE,eAAe,EAAE,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,CAAA;IACvD,MAAM,eAAe,EAAE,CAAA;AACzB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/telemetry/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,iBAAiB;AACjB,OAAO,EACL,gBAAgB,EAChB,SAAS,EACT,iBAAiB,EACjB,eAAe,EACf,MAAM,GAIP,MAAM,aAAa,CAAA;AAEpB,kBAAkB;AAClB,OAAO,EACL,eAAe,EACf,UAAU,EACV,iBAAiB,EACjB,SAAS,EACT,QAAQ,EACR,eAAe,GAOhB,MAAM,cAAc,CAAA;AAErB,gCAAgC;AAChC,OAAO,EACL,kBAAkB,EAClB,oBAAoB,EACpB,uBAAuB,GAExB,MAAM,iBAAiB,CAAA;AAExB,6BAA6B;AAC7B,OAAO,EACL,iBAAiB,EACjB,eAAe,EACf,YAAY,EACZ,UAAU,EACV,gBAAgB,EAChB,cAAc,EACd,iBAAiB,EACjB,aAAa,EACb,YAAY,EACZ,oBAAoB,EACpB,UAAU,EACV,gBAAgB,EAChB,cAAc,GAKf,MAAM,cAAc,CAAA;AAErB;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,MAGzC;IACC,MAAM,EAAE,iBAAiB,EAAE,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,CAAA;IACzD,MAAM,EAAE,iBAAiB,EAAE,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,CAAA;IAE1D,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,iBAAiB,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,iBAAiB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,CAAA;AAC7F,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB;IACrC,MAAM,EAAE,eAAe,EAAE,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,CAAA;IACvD,MAAM,eAAe,EAAE,CAAA;AACzB,CAAC"}
@@ -78,13 +78,35 @@ export declare function isPostHogEnabled(): boolean;
78
78
  */
79
79
  export declare function trackEvent(distinctId: string, event: SkillsmithEventType | string, properties?: SkillEventProperties): void;
80
80
  /**
81
- * Identify a user with traits
82
- * Used to associate properties with an anonymous ID
81
+ * Allowed trait keys for user identification.
82
+ * Only non-PII properties are permitted to prevent data leakage.
83
+ */
84
+ export declare const ALLOWED_TRAITS: readonly ["tier", "version", "platform", "sdk_version"];
85
+ /**
86
+ * Type for allowed user traits - restricted to prevent PII leakage.
87
+ * Only safe, non-identifying properties are permitted.
88
+ */
89
+ export type AllowedUserTraits = {
90
+ /** User tier (e.g., 'free', 'pro', 'enterprise') */
91
+ tier?: string;
92
+ /** Application version */
93
+ version?: string;
94
+ /** Platform identifier (e.g., 'darwin', 'linux', 'win32') */
95
+ platform?: string;
96
+ /** SDK version used */
97
+ sdk_version?: string;
98
+ };
99
+ /**
100
+ * Identify a user with restricted traits.
83
101
  *
84
- * @param distinctId - Anonymous user identifier
85
- * @param traits - User properties
102
+ * @warning DO NOT pass PII (email, name, IP, etc.) to this function.
103
+ * Only the following safe traits are allowed: tier, version, platform, sdk_version.
104
+ * Any other properties will be silently filtered out to prevent data leakage.
105
+ *
106
+ * @param distinctId - Anonymous user identifier (should be a hash, not an email)
107
+ * @param traits - User properties (restricted to AllowedUserTraits)
86
108
  */
87
- export declare function identifyUser(distinctId: string, traits: Record<string, unknown>): void;
109
+ export declare function identifyUser(distinctId: string, traits: AllowedUserTraits): void;
88
110
  /**
89
111
  * Check if a feature flag is enabled for a user
90
112
  *
@@ -1 +1 @@
1
- {"version":3,"file":"posthog.d.ts","sourceRoot":"","sources":["../../../src/telemetry/posthog.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"posthog.d.ts","sourceRoot":"","sources":["../../../src/telemetry/posthog.ts"],"names":[],"mappings":"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"}
@@ -79,20 +79,35 @@ export function trackEvent(distinctId, event, properties) {
79
79
  }
80
80
  }
81
81
  /**
82
- * Identify a user with traits
83
- * Used to associate properties with an anonymous ID
82
+ * Allowed trait keys for user identification.
83
+ * Only non-PII properties are permitted to prevent data leakage.
84
+ */
85
+ export const ALLOWED_TRAITS = ['tier', 'version', 'platform', 'sdk_version'];
86
+ /**
87
+ * Identify a user with restricted traits.
84
88
  *
85
- * @param distinctId - Anonymous user identifier
86
- * @param traits - User properties
89
+ * @warning DO NOT pass PII (email, name, IP, etc.) to this function.
90
+ * Only the following safe traits are allowed: tier, version, platform, sdk_version.
91
+ * Any other properties will be silently filtered out to prevent data leakage.
92
+ *
93
+ * @param distinctId - Anonymous user identifier (should be a hash, not an email)
94
+ * @param traits - User properties (restricted to AllowedUserTraits)
87
95
  */
88
96
  export function identifyUser(distinctId, traits) {
89
97
  if (!isPostHogEnabled() || !posthogInstance) {
90
98
  return;
91
99
  }
100
+ // Filter traits to only include allowed keys (defense in depth)
101
+ const safeTraits = {};
102
+ for (const key of ALLOWED_TRAITS) {
103
+ if (traits[key] !== undefined) {
104
+ safeTraits[key] = traits[key];
105
+ }
106
+ }
92
107
  try {
93
108
  posthogInstance.identify({
94
109
  distinctId,
95
- properties: traits,
110
+ properties: safeTraits,
96
111
  });
97
112
  }
98
113
  catch (error) {
@@ -1 +1 @@
1
- {"version":3,"file":"posthog.js","sourceRoot":"","sources":["../../../src/telemetry/posthog.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"posthog.js","sourceRoot":"","sources":["../../../src/telemetry/posthog.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,374 @@
1
+ /**
2
+ * @fileoverview Multi-LLM Provider Chain for Skill Compatibility Testing
3
+ * @module @skillsmith/core/testing/MultiLLMProvider
4
+ * @see SMI-1523: Configure multi-LLM provider chain
5
+ *
6
+ * Provides a unified interface for testing skills across multiple LLM providers:
7
+ * - Claude (Anthropic) - Primary
8
+ * - GPT (OpenAI) - Fallback 1
9
+ * - Gemini (Google) - Fallback 2
10
+ * - Cohere (Command) - Fallback 3
11
+ * - Ollama (Local) - Fallback 4
12
+ *
13
+ * Features:
14
+ * - Automatic failover with configurable strategy
15
+ * - Health monitoring and circuit breaker pattern
16
+ * - Cost-aware provider selection
17
+ * - Skill compatibility testing across providers
18
+ */
19
+ import { EventEmitter } from 'events';
20
+ /**
21
+ * Supported LLM providers
22
+ */
23
+ export type LLMProviderType = 'anthropic' | 'openai' | 'google' | 'cohere' | 'ollama';
24
+ /**
25
+ * Provider priority for selection
26
+ */
27
+ export type ProviderPriority = 'quality' | 'speed' | 'cost' | 'privacy';
28
+ /**
29
+ * Load balancing strategies
30
+ */
31
+ export type LoadBalanceStrategy = 'round-robin' | 'least-loaded' | 'latency-based' | 'cost-based';
32
+ /**
33
+ * Failover condition triggers
34
+ */
35
+ export type FailoverCondition = 'error' | 'rate_limit' | 'timeout' | 'cost' | 'unavailable';
36
+ /**
37
+ * Provider configuration
38
+ */
39
+ export interface ProviderConfig {
40
+ /** Provider type */
41
+ provider: LLMProviderType;
42
+ /** Model identifier */
43
+ model: string;
44
+ /** API key (from environment) */
45
+ apiKey?: string;
46
+ /** API URL (for Ollama/custom) */
47
+ apiUrl?: string;
48
+ /** Whether provider is enabled */
49
+ enabled: boolean;
50
+ /** Provider priority */
51
+ priority: ProviderPriority;
52
+ /** Maximum concurrent requests */
53
+ maxConcurrency?: number;
54
+ /** Request timeout in ms */
55
+ timeoutMs?: number;
56
+ /** Cost per 1K tokens (input) */
57
+ costPerInputToken?: number;
58
+ /** Cost per 1K tokens (output) */
59
+ costPerOutputToken?: number;
60
+ }
61
+ /**
62
+ * Fallback rule configuration
63
+ */
64
+ export interface FallbackRule {
65
+ /** Condition that triggers fallback */
66
+ condition: FailoverCondition;
67
+ /** Error codes that trigger this rule */
68
+ errorCodes?: string[];
69
+ /** Providers to try in order */
70
+ fallbackProviders: LLMProviderType[];
71
+ /** Fallback models (optional) */
72
+ fallbackModels?: string[];
73
+ /** Whether to retry original provider after cooling */
74
+ retryOriginal: boolean;
75
+ /** Delay before retry in ms */
76
+ retryDelayMs?: number;
77
+ }
78
+ /**
79
+ * Fallback strategy configuration
80
+ */
81
+ export interface FallbackStrategy {
82
+ /** Strategy name */
83
+ name: string;
84
+ /** Whether fallback is enabled */
85
+ enabled: boolean;
86
+ /** Fallback rules in priority order */
87
+ rules: FallbackRule[];
88
+ /** Maximum retry attempts */
89
+ maxAttempts: number;
90
+ }
91
+ /**
92
+ * Circuit breaker configuration
93
+ */
94
+ export interface CircuitBreakerConfig {
95
+ /** Request timeout in ms */
96
+ timeoutMs: number;
97
+ /** Error percentage to open circuit */
98
+ errorThresholdPercentage: number;
99
+ /** Time before trying half-open in ms */
100
+ resetTimeoutMs: number;
101
+ /** Minimum requests before calculating error rate */
102
+ volumeThreshold: number;
103
+ }
104
+ /**
105
+ * Multi-LLM provider configuration
106
+ */
107
+ export interface MultiLLMProviderConfig {
108
+ /** Provider configurations (optional, defaults available) */
109
+ providers?: Partial<Record<LLMProviderType, ProviderConfig>>;
110
+ /** Default provider (optional, defaults to 'anthropic') */
111
+ defaultProvider?: LLMProviderType;
112
+ /** Fallback strategy */
113
+ fallbackStrategy?: FallbackStrategy;
114
+ /** Load balancing configuration */
115
+ loadBalancing?: {
116
+ enabled: boolean;
117
+ strategy: LoadBalanceStrategy;
118
+ };
119
+ /** Cost optimization */
120
+ costOptimization?: {
121
+ enabled: boolean;
122
+ maxCostPerRequest?: number;
123
+ preferredProviders?: LLMProviderType[];
124
+ };
125
+ /** Circuit breaker configuration */
126
+ circuitBreaker?: CircuitBreakerConfig;
127
+ /** Enable metrics collection */
128
+ enableMetrics?: boolean;
129
+ /** Enable V3 ProviderManager integration */
130
+ useV3Integration?: boolean;
131
+ }
132
+ /**
133
+ * Default multi-LLM provider configuration
134
+ */
135
+ export declare const DEFAULT_MULTI_LLM_CONFIG: Required<Omit<MultiLLMProviderConfig, 'providers' | 'fallbackStrategy'>> & {
136
+ providers: Partial<Record<LLMProviderType, ProviderConfig>>;
137
+ fallbackStrategy: FallbackStrategy;
138
+ };
139
+ /**
140
+ * Provider health check result
141
+ */
142
+ export interface HealthCheckResult {
143
+ /** Whether provider is healthy */
144
+ healthy: boolean;
145
+ /** Latency in ms */
146
+ latencyMs?: number;
147
+ /** Error message if unhealthy */
148
+ error?: string;
149
+ /** Check timestamp */
150
+ timestamp: Date;
151
+ /** Additional details */
152
+ details?: Record<string, unknown>;
153
+ }
154
+ /**
155
+ * Provider status
156
+ */
157
+ export interface ProviderStatus {
158
+ /** Whether provider is available */
159
+ available: boolean;
160
+ /** Current load (0-1) */
161
+ currentLoad: number;
162
+ /** Queue length */
163
+ queueLength: number;
164
+ /** Active requests */
165
+ activeRequests: number;
166
+ /** Rate limit remaining */
167
+ rateLimitRemaining?: number;
168
+ /** Rate limit reset time */
169
+ rateLimitReset?: Date;
170
+ /** Circuit breaker state */
171
+ circuitState: 'closed' | 'open' | 'half-open';
172
+ }
173
+ /**
174
+ * LLM request
175
+ */
176
+ export interface LLMRequest {
177
+ /** Messages */
178
+ messages: Array<{
179
+ role: 'system' | 'user' | 'assistant';
180
+ content: string;
181
+ }>;
182
+ /** Model override */
183
+ model?: string;
184
+ /** Provider override */
185
+ provider?: LLMProviderType;
186
+ /** Max tokens */
187
+ maxTokens?: number;
188
+ /** Temperature */
189
+ temperature?: number;
190
+ /** Cost constraints */
191
+ costConstraints?: {
192
+ maxCost: number;
193
+ };
194
+ /** Request metadata */
195
+ metadata?: Record<string, unknown>;
196
+ }
197
+ /**
198
+ * LLM response
199
+ */
200
+ export interface LLMResponse {
201
+ /** Response content */
202
+ content: string;
203
+ /** Provider that handled the request */
204
+ provider: LLMProviderType;
205
+ /** Model used */
206
+ model: string;
207
+ /** Token usage */
208
+ usage: {
209
+ inputTokens: number;
210
+ outputTokens: number;
211
+ totalTokens: number;
212
+ };
213
+ /** Cost estimate */
214
+ cost: number;
215
+ /** Latency in ms */
216
+ latencyMs: number;
217
+ /** Whether fallback was used */
218
+ usedFallback: boolean;
219
+ /** Fallback chain (if used) */
220
+ fallbackChain?: LLMProviderType[];
221
+ }
222
+ /**
223
+ * Provider metrics
224
+ */
225
+ export interface ProviderMetrics {
226
+ /** Provider */
227
+ provider: LLMProviderType;
228
+ /** Timestamp */
229
+ timestamp: Date;
230
+ /** Average latency in ms */
231
+ avgLatencyMs: number;
232
+ /** Error rate (0-1) */
233
+ errorRate: number;
234
+ /** Success rate (0-1) */
235
+ successRate: number;
236
+ /** Current load (0-1) */
237
+ load: number;
238
+ /** Total cost */
239
+ totalCost: number;
240
+ /** Total requests */
241
+ totalRequests: number;
242
+ /** Availability (0-1) */
243
+ availability: number;
244
+ }
245
+ /**
246
+ * Skill compatibility test result
247
+ */
248
+ export interface SkillCompatibilityResult {
249
+ /** Skill ID */
250
+ skillId: string;
251
+ /** Results by provider */
252
+ results: Record<LLMProviderType, {
253
+ compatible: boolean;
254
+ score: number;
255
+ latencyMs: number;
256
+ error?: string;
257
+ notes?: string;
258
+ }>;
259
+ /** Overall compatibility score (0-1) */
260
+ overallScore: number;
261
+ /** Recommended providers */
262
+ recommendedProviders: LLMProviderType[];
263
+ /** Test timestamp */
264
+ testedAt: Date;
265
+ }
266
+ /**
267
+ * Multi-LLM Provider for skill compatibility testing
268
+ *
269
+ * Provides unified access to multiple LLM providers with automatic failover,
270
+ * load balancing, and cost optimization.
271
+ *
272
+ * @example
273
+ * ```typescript
274
+ * const provider = new MultiLLMProvider()
275
+ * await provider.initialize()
276
+ *
277
+ * // Complete a request with automatic failover
278
+ * const response = await provider.complete({
279
+ * messages: [{ role: 'user', content: 'Explain this skill' }]
280
+ * })
281
+ *
282
+ * // Test skill compatibility across providers
283
+ * const compatibility = await provider.testSkillCompatibility('commit')
284
+ * ```
285
+ */
286
+ export declare class MultiLLMProvider extends EventEmitter {
287
+ private config;
288
+ private initialized;
289
+ private circuitBreakers;
290
+ private providerMetrics;
291
+ private activeRequests;
292
+ private roundRobinIndex;
293
+ private v3ProviderManager;
294
+ constructor(config?: MultiLLMProviderConfig);
295
+ /**
296
+ * Initialize the multi-LLM provider
297
+ */
298
+ initialize(): Promise<void>;
299
+ /**
300
+ * Check if provider is initialized
301
+ */
302
+ isInitialized(): boolean;
303
+ /**
304
+ * Attempt to initialize V3 ProviderManager integration
305
+ */
306
+ private initializeV3Integration;
307
+ /**
308
+ * Get enabled providers
309
+ */
310
+ getEnabledProviders(): LLMProviderType[];
311
+ /**
312
+ * Get available providers (enabled + circuit closed)
313
+ */
314
+ getAvailableProviders(): LLMProviderType[];
315
+ /**
316
+ * Check provider health
317
+ */
318
+ healthCheck(provider: LLMProviderType): Promise<HealthCheckResult>;
319
+ /**
320
+ * Get provider status
321
+ */
322
+ getProviderStatus(provider: LLMProviderType): ProviderStatus;
323
+ /**
324
+ * Complete a request with automatic failover
325
+ */
326
+ complete(request: LLMRequest): Promise<LLMResponse>;
327
+ /**
328
+ * Test skill compatibility across providers
329
+ */
330
+ testSkillCompatibility(skillId: string): Promise<SkillCompatibilityResult>;
331
+ /**
332
+ * Get provider metrics
333
+ */
334
+ getMetrics(): Map<LLMProviderType, ProviderMetrics>;
335
+ /**
336
+ * Get aggregated metrics
337
+ */
338
+ getAggregatedMetrics(): {
339
+ totalRequests: number;
340
+ totalCost: number;
341
+ avgLatencyMs: number;
342
+ avgSuccessRate: number;
343
+ providerBreakdown: Record<LLMProviderType, number>;
344
+ };
345
+ /**
346
+ * Close and cleanup
347
+ *
348
+ * After close, the provider cannot be used until initialize() is called again.
349
+ */
350
+ close(): void;
351
+ private ensureInitialized;
352
+ private selectProvider;
353
+ private selectRoundRobin;
354
+ private selectLeastLoaded;
355
+ private selectByLatency;
356
+ private selectByCost;
357
+ private getFallbackProvider;
358
+ private getErrorCondition;
359
+ private executeRequest;
360
+ private simulateRequest;
361
+ private estimateTokens;
362
+ private calculateCost;
363
+ private calculateCompatibilityScore;
364
+ private initializeMetrics;
365
+ private updateMetrics;
366
+ }
367
+ /**
368
+ * Create and initialize a MultiLLMProvider instance
369
+ *
370
+ * @param config - Configuration options
371
+ * @returns Initialized MultiLLMProvider
372
+ */
373
+ export declare function createMultiLLMProvider(config?: MultiLLMProviderConfig): Promise<MultiLLMProvider>;
374
+ //# sourceMappingURL=MultiLLMProvider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MultiLLMProvider.d.ts","sourceRoot":"","sources":["../../../src/testing/MultiLLMProvider.ts"],"names":[],"mappings":"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"}