@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
@@ -1 +1 @@
1
- {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/analytics/schema.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH;;GAEG;AACH,eAAO,MAAM,gBAAgB,o0JA2G5B,CAAA;AAED;;GAEG;AACH,OAAO,KAAK,EAAE,QAAQ,IAAI,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAE9D,wBAAgB,yBAAyB,CAAC,EAAE,EAAE,YAAY,GAAG,IAAI,CAEhE"}
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/analytics/schema.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH;;GAEG;AACH,eAAO,MAAM,gBAAgB,+iWAuP5B,CAAA;AAED;;GAEG;AACH,OAAO,KAAK,EAAE,QAAQ,IAAI,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAE9D,wBAAgB,yBAAyB,CAAC,EAAE,EAAE,YAAY,GAAG,IAAI,CAEhE"}
@@ -118,6 +118,146 @@ CREATE TABLE IF NOT EXISTS value_attributions (
118
118
  CREATE INDEX IF NOT EXISTS idx_attributions_event ON value_attributions(usage_event_id);
119
119
  CREATE INDEX IF NOT EXISTS idx_attributions_skill ON value_attributions(skill_id);
120
120
  CREATE INDEX IF NOT EXISTS idx_attributions_type ON value_attributions(attribution_type);
121
+
122
+ -- ============================================================================
123
+ -- Quota Management Tables (SMI-XXXX)
124
+ -- ============================================================================
125
+
126
+ -- Monthly usage quotas per customer/license
127
+ -- Tracks API call usage against tier limits
128
+ CREATE TABLE IF NOT EXISTS usage_quotas (
129
+ id TEXT PRIMARY KEY,
130
+ customer_id TEXT NOT NULL,
131
+ license_tier TEXT NOT NULL CHECK(license_tier IN ('community', 'individual', 'team', 'enterprise')),
132
+ billing_period_start TEXT NOT NULL,
133
+ billing_period_end TEXT NOT NULL,
134
+ api_calls_limit INTEGER NOT NULL,
135
+ api_calls_used INTEGER DEFAULT 0,
136
+ last_warning_threshold INTEGER DEFAULT 0, -- 0, 80, 90, or 100
137
+ last_warning_sent_at TEXT,
138
+ created_at TEXT NOT NULL DEFAULT (datetime('now')),
139
+ updated_at TEXT NOT NULL DEFAULT (datetime('now')),
140
+ UNIQUE(customer_id, billing_period_start)
141
+ );
142
+
143
+ -- Indexes for quota queries
144
+ CREATE INDEX IF NOT EXISTS idx_quotas_customer ON usage_quotas(customer_id);
145
+ CREATE INDEX IF NOT EXISTS idx_quotas_period ON usage_quotas(billing_period_start, billing_period_end);
146
+ CREATE INDEX IF NOT EXISTS idx_quotas_tier ON usage_quotas(license_tier);
147
+
148
+ -- Individual API call events for detailed tracking
149
+ -- Used for quota enforcement and analytics
150
+ CREATE TABLE IF NOT EXISTS api_call_events (
151
+ id TEXT PRIMARY KEY,
152
+ customer_id TEXT NOT NULL,
153
+ license_key_hash TEXT, -- SHA256 hash of license key for lookup
154
+ tool_name TEXT NOT NULL,
155
+ endpoint TEXT,
156
+ cost INTEGER DEFAULT 1, -- Some operations may cost multiple quota units
157
+ success INTEGER DEFAULT 1, -- 1 for success, 0 for failure
158
+ latency_ms INTEGER,
159
+ session_id TEXT,
160
+ metadata TEXT, -- JSON for additional context
161
+ timestamp TEXT NOT NULL DEFAULT (datetime('now'))
162
+ );
163
+
164
+ -- Indexes for API call queries
165
+ CREATE INDEX IF NOT EXISTS idx_api_calls_customer ON api_call_events(customer_id);
166
+ CREATE INDEX IF NOT EXISTS idx_api_calls_timestamp ON api_call_events(timestamp);
167
+ CREATE INDEX IF NOT EXISTS idx_api_calls_license ON api_call_events(license_key_hash);
168
+ CREATE INDEX IF NOT EXISTS idx_api_calls_tool ON api_call_events(tool_name);
169
+
170
+ -- User subscriptions for billing integration
171
+ -- Links customers to Stripe subscriptions
172
+ CREATE TABLE IF NOT EXISTS user_subscriptions (
173
+ id TEXT PRIMARY KEY,
174
+ customer_id TEXT NOT NULL UNIQUE,
175
+ email TEXT NOT NULL,
176
+ tier TEXT NOT NULL CHECK(tier IN ('community', 'individual', 'team', 'enterprise')),
177
+ stripe_customer_id TEXT,
178
+ stripe_subscription_id TEXT,
179
+ stripe_price_id TEXT, -- SMI-1062: Stripe price ID for current plan
180
+ status TEXT NOT NULL CHECK(status IN ('active', 'past_due', 'canceled', 'trialing', 'paused')),
181
+ seat_count INTEGER DEFAULT 1, -- SMI-1067: For team/enterprise seat-based billing
182
+ current_period_start TEXT,
183
+ current_period_end TEXT,
184
+ canceled_at TEXT, -- SMI-1062: When subscription was canceled
185
+ last_active_at TEXT,
186
+ created_at TEXT NOT NULL DEFAULT (datetime('now')),
187
+ updated_at TEXT NOT NULL DEFAULT (datetime('now'))
188
+ );
189
+
190
+ -- Indexes for subscription queries
191
+ CREATE INDEX IF NOT EXISTS idx_subs_customer ON user_subscriptions(customer_id);
192
+ CREATE INDEX IF NOT EXISTS idx_subs_stripe ON user_subscriptions(stripe_customer_id);
193
+ CREATE INDEX IF NOT EXISTS idx_subs_status ON user_subscriptions(status);
194
+ CREATE INDEX IF NOT EXISTS idx_subs_tier ON user_subscriptions(tier);
195
+ CREATE INDEX IF NOT EXISTS idx_subs_last_active ON user_subscriptions(last_active_at);
196
+
197
+ -- ============================================================================
198
+ -- Billing Tables (SMI-1062 to SMI-1070 - Phase 6)
199
+ -- ============================================================================
200
+
201
+ -- Stripe webhook events for idempotent processing
202
+ -- Prevents replay attacks and duplicate event handling
203
+ CREATE TABLE IF NOT EXISTS stripe_webhook_events (
204
+ id TEXT PRIMARY KEY,
205
+ stripe_event_id TEXT UNIQUE NOT NULL,
206
+ event_type TEXT NOT NULL,
207
+ processed_at TEXT NOT NULL DEFAULT (datetime('now')),
208
+ payload TEXT, -- Store full event for debugging/reconciliation
209
+ success INTEGER DEFAULT 1, -- 1 for success, 0 for failure
210
+ error_message TEXT,
211
+ created_at TEXT NOT NULL DEFAULT (datetime('now'))
212
+ );
213
+
214
+ CREATE INDEX IF NOT EXISTS idx_webhook_events_stripe_id ON stripe_webhook_events(stripe_event_id);
215
+ CREATE INDEX IF NOT EXISTS idx_webhook_events_type ON stripe_webhook_events(event_type);
216
+ CREATE INDEX IF NOT EXISTS idx_webhook_events_processed ON stripe_webhook_events(processed_at);
217
+
218
+ -- License keys linking subscriptions to JWT tokens
219
+ -- Supports key rotation and revocation
220
+ CREATE TABLE IF NOT EXISTS license_keys (
221
+ id TEXT PRIMARY KEY,
222
+ subscription_id TEXT NOT NULL, -- References user_subscriptions.id
223
+ organization_id TEXT NOT NULL,
224
+ key_jwt TEXT NOT NULL,
225
+ key_hash TEXT NOT NULL, -- SHA256 hash for lookup without exposing key
226
+ key_expiry TEXT NOT NULL,
227
+ is_active INTEGER DEFAULT 1,
228
+ generated_at TEXT NOT NULL DEFAULT (datetime('now')),
229
+ revoked_at TEXT,
230
+ revocation_reason TEXT,
231
+ UNIQUE(key_hash)
232
+ );
233
+
234
+ CREATE INDEX IF NOT EXISTS idx_license_keys_subscription ON license_keys(subscription_id);
235
+ CREATE INDEX IF NOT EXISTS idx_license_keys_org ON license_keys(organization_id);
236
+ CREATE INDEX IF NOT EXISTS idx_license_keys_active ON license_keys(is_active);
237
+ CREATE INDEX IF NOT EXISTS idx_license_keys_hash ON license_keys(key_hash);
238
+
239
+ -- Invoices for customer self-service and billing history
240
+ CREATE TABLE IF NOT EXISTS invoices (
241
+ id TEXT PRIMARY KEY,
242
+ customer_id TEXT NOT NULL, -- References user_subscriptions.customer_id
243
+ stripe_invoice_id TEXT UNIQUE NOT NULL,
244
+ subscription_id TEXT, -- References user_subscriptions.id
245
+ amount_cents INTEGER NOT NULL,
246
+ currency TEXT DEFAULT 'usd',
247
+ status TEXT NOT NULL CHECK(status IN ('draft', 'open', 'paid', 'void', 'uncollectible')),
248
+ pdf_url TEXT,
249
+ hosted_invoice_url TEXT,
250
+ invoice_number TEXT,
251
+ paid_at TEXT,
252
+ period_start TEXT,
253
+ period_end TEXT,
254
+ created_at TEXT NOT NULL DEFAULT (datetime('now'))
255
+ );
256
+
257
+ CREATE INDEX IF NOT EXISTS idx_invoices_customer ON invoices(customer_id);
258
+ CREATE INDEX IF NOT EXISTS idx_invoices_stripe ON invoices(stripe_invoice_id);
259
+ CREATE INDEX IF NOT EXISTS idx_invoices_status ON invoices(status);
260
+ CREATE INDEX IF NOT EXISTS idx_invoices_subscription ON invoices(subscription_id);
121
261
  `;
122
262
  export function initializeAnalyticsSchema(db) {
123
263
  db.exec(ANALYTICS_SCHEMA);
@@ -1 +1 @@
1
- {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../src/analytics/schema.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH;;GAEG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2G/B,CAAA;AAOD,MAAM,UAAU,yBAAyB,CAAC,EAAgB;IACxD,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAA;AAC3B,CAAC"}
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../src/analytics/schema.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH;;GAEG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuP/B,CAAA;AAOD,MAAM,UAAU,yBAAyB,CAAC,EAAgB;IACxD,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAA;AAC3B,CAAC"}
@@ -54,6 +54,8 @@ export declare class ApiCache {
54
54
  private hits;
55
55
  private misses;
56
56
  private evictions;
57
+ private operationCount;
58
+ private readonly PRUNE_INTERVAL;
57
59
  constructor(config?: CacheConfig);
58
60
  /**
59
61
  * Generate cache key from endpoint and parameters
@@ -84,13 +86,34 @@ export declare class ApiCache {
84
86
  */
85
87
  prune(): number;
86
88
  /**
87
- * Invalidate entries matching a pattern
89
+ * Invalidate entries matching a pattern.
90
+ *
91
+ * When a string is provided, it is treated as a literal string and
92
+ * special RegExp characters are escaped to prevent RegExp injection.
93
+ * To use regex patterns, pass a RegExp object directly.
94
+ *
95
+ * @param pattern - Literal string to match or RegExp for pattern matching
96
+ * @returns Number of entries invalidated
97
+ *
98
+ * @example
99
+ * ```typescript
100
+ * // Literal string matching (special chars are escaped)
101
+ * cache.invalidatePattern('search:user.name') // Matches exactly 'search:user.name'
102
+ *
103
+ * // RegExp for pattern matching
104
+ * cache.invalidatePattern(/^search:/) // Matches all keys starting with 'search:'
105
+ * ```
88
106
  */
89
107
  invalidatePattern(pattern: string | RegExp): number;
90
108
  /**
91
109
  * Get cache statistics
92
110
  */
93
111
  getStats(): CacheStats;
112
+ /**
113
+ * Automatically prune expired entries every PRUNE_INTERVAL operations.
114
+ * SMI-1262: Prevents expired entries from accumulating until maxEntries is reached.
115
+ */
116
+ private maybeAutoPrune;
94
117
  /**
95
118
  * Evict least recently used entries
96
119
  */
@@ -1 +1 @@
1
- {"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../../../src/api/cache.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAcH;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,oDAAoD;IACpD,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,2CAA2C;IAC3C,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,+CAA+C;IAC/C,WAAW,CAAC,EAAE,OAAO,CAAA;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,MAAM,CAAA;IACf,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,EAAE,MAAM,CAAA;CAChB;AAED;;GAEG;AACH,eAAO,MAAM,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAI9C,CAAA;AAED;;;;;;;;;;;;;GAaG;AACH,qBAAa,QAAQ;IACnB,OAAO,CAAC,KAAK,CAAkC;IAC/C,OAAO,CAAC,UAAU,CAAQ;IAC1B,OAAO,CAAC,UAAU,CAAQ;IAC1B,OAAO,CAAC,WAAW,CAAS;IAG5B,OAAO,CAAC,IAAI,CAAI;IAChB,OAAO,CAAC,MAAM,CAAI;IAClB,OAAO,CAAC,SAAS,CAAI;gBAET,MAAM,GAAE,WAAgB;IAOpC;;OAEG;IACH,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM;IAa5E;;OAEG;IACH,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC,GAAG,SAAS;IAsBlC;;OAEG;IACH,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,YAAY,CAAC,EAAE,MAAM,OAAO,WAAW,GAAG,IAAI;IAiB3E;;OAEG;IACH,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAUzB;;OAEG;IACH,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAI5B;;OAEG;IACH,KAAK,IAAI,IAAI;IAOb;;OAEG;IACH,KAAK,IAAI,MAAM;IAcf;;OAEG;IACH,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM;IAcnD;;OAEG;IACH,QAAQ,IAAI,UAAU;IAWtB;;OAEG;IACH,OAAO,CAAC,cAAc;CAwBvB;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,QAAQ,CAE1D;AAOD;;GAEG;AACH,wBAAgB,cAAc,IAAI,QAAQ,CAKzC;AAED,eAAe,QAAQ,CAAA"}
1
+ {"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../../../src/api/cache.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAiCH;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,oDAAoD;IACpD,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,2CAA2C;IAC3C,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,+CAA+C;IAC/C,WAAW,CAAC,EAAE,OAAO,CAAA;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,MAAM,CAAA;IACf,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,EAAE,MAAM,CAAA;CAChB;AAED;;GAEG;AACH,eAAO,MAAM,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAI9C,CAAA;AAED;;;;;;;;;;;;;GAaG;AACH,qBAAa,QAAQ;IACnB,OAAO,CAAC,KAAK,CAAkC;IAC/C,OAAO,CAAC,UAAU,CAAQ;IAC1B,OAAO,CAAC,UAAU,CAAQ;IAC1B,OAAO,CAAC,WAAW,CAAS;IAG5B,OAAO,CAAC,IAAI,CAAI;IAChB,OAAO,CAAC,MAAM,CAAI;IAClB,OAAO,CAAC,SAAS,CAAI;IAGrB,OAAO,CAAC,cAAc,CAAI;IAC1B,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAM;gBAEzB,MAAM,GAAE,WAAgB;IAOpC;;OAEG;IACH,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM;IAa5E;;OAEG;IACH,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC,GAAG,SAAS;IAuBlC;;OAEG;IACH,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,YAAY,CAAC,EAAE,MAAM,OAAO,WAAW,GAAG,IAAI;IAmB3E;;OAEG;IACH,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAUzB;;OAEG;IACH,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAI5B;;OAEG;IACH,KAAK,IAAI,IAAI;IAOb;;OAEG;IACH,KAAK,IAAI,MAAM;IAcf;;;;;;;;;;;;;;;;;;OAkBG;IACH,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM;IAcnD;;OAEG;IACH,QAAQ,IAAI,UAAU;IAWtB;;;OAGG;IACH,OAAO,CAAC,cAAc;IAMtB;;OAEG;IACH,OAAO,CAAC,cAAc;CAwBvB;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,QAAQ,CAE1D;AAOD;;GAEG;AACH,wBAAgB,cAAc,IAAI,QAAQ,CAKzC;AAED,eAAe,QAAQ,CAAA"}
@@ -7,6 +7,24 @@
7
7
  * Provides in-memory caching with TTL for offline support.
8
8
  * Uses a simple LRU-like eviction strategy.
9
9
  */
10
+ /**
11
+ * Escape special RegExp characters in a string.
12
+ *
13
+ * This prevents RegExp injection when user-provided strings are
14
+ * used to construct regular expressions.
15
+ *
16
+ * @param str - The string to escape
17
+ * @returns The escaped string safe for use in RegExp constructor
18
+ *
19
+ * @example
20
+ * ```typescript
21
+ * escapeRegExp('foo.bar') // Returns 'foo\\.bar'
22
+ * escapeRegExp('a*b+c?') // Returns 'a\\*b\\+c\\?'
23
+ * ```
24
+ */
25
+ function escapeRegExp(str) {
26
+ return str.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
27
+ }
10
28
  /**
11
29
  * TTL configuration for different endpoints
12
30
  */
@@ -38,6 +56,9 @@ export class ApiCache {
38
56
  hits = 0;
39
57
  misses = 0;
40
58
  evictions = 0;
59
+ // Auto-pruning (SMI-1262)
60
+ operationCount = 0;
61
+ PRUNE_INTERVAL = 100;
41
62
  constructor(config = {}) {
42
63
  this.cache = new Map();
43
64
  this.defaultTtl = config.defaultTtl ?? DEFAULT_TTL.search;
@@ -61,6 +82,7 @@ export class ApiCache {
61
82
  * Get item from cache
62
83
  */
63
84
  get(key) {
85
+ this.maybeAutoPrune();
64
86
  const entry = this.cache.get(key);
65
87
  if (!entry) {
66
88
  if (this.enableStats)
@@ -84,6 +106,7 @@ export class ApiCache {
84
106
  * Set item in cache
85
107
  */
86
108
  set(key, data, endpointType) {
109
+ this.maybeAutoPrune();
87
110
  // Evict if at capacity
88
111
  if (this.cache.size >= this.maxEntries) {
89
112
  this.evictLeastUsed();
@@ -140,10 +163,26 @@ export class ApiCache {
140
163
  return pruned;
141
164
  }
142
165
  /**
143
- * Invalidate entries matching a pattern
166
+ * Invalidate entries matching a pattern.
167
+ *
168
+ * When a string is provided, it is treated as a literal string and
169
+ * special RegExp characters are escaped to prevent RegExp injection.
170
+ * To use regex patterns, pass a RegExp object directly.
171
+ *
172
+ * @param pattern - Literal string to match or RegExp for pattern matching
173
+ * @returns Number of entries invalidated
174
+ *
175
+ * @example
176
+ * ```typescript
177
+ * // Literal string matching (special chars are escaped)
178
+ * cache.invalidatePattern('search:user.name') // Matches exactly 'search:user.name'
179
+ *
180
+ * // RegExp for pattern matching
181
+ * cache.invalidatePattern(/^search:/) // Matches all keys starting with 'search:'
182
+ * ```
144
183
  */
145
184
  invalidatePattern(pattern) {
146
- const regex = typeof pattern === 'string' ? new RegExp(pattern) : pattern;
185
+ const regex = typeof pattern === 'string' ? new RegExp(escapeRegExp(pattern)) : pattern;
147
186
  let invalidated = 0;
148
187
  for (const key of this.cache.keys()) {
149
188
  if (regex.test(key)) {
@@ -166,6 +205,15 @@ export class ApiCache {
166
205
  hitRate: total > 0 ? this.hits / total : 0,
167
206
  };
168
207
  }
208
+ /**
209
+ * Automatically prune expired entries every PRUNE_INTERVAL operations.
210
+ * SMI-1262: Prevents expired entries from accumulating until maxEntries is reached.
211
+ */
212
+ maybeAutoPrune() {
213
+ if (++this.operationCount % this.PRUNE_INTERVAL === 0) {
214
+ this.prune();
215
+ }
216
+ }
169
217
  /**
170
218
  * Evict least recently used entries
171
219
  */
@@ -1 +1 @@
1
- {"version":3,"file":"cache.js","sourceRoot":"","sources":["../../../src/api/cache.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cache.js","sourceRoot":"","sources":["../../../src/api/cache.ts"],"names":[],"mappings":"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"}
@@ -3,6 +3,7 @@
3
3
  * @module api/client
4
4
  *
5
5
  * SMI-1244: API client for fetching skills from live Supabase endpoints
6
+ * SMI-1258: Runtime validation for API responses using zod
6
7
  *
7
8
  * Provides methods to interact with the Skillsmith API:
8
9
  * - search: Search skills with filters
@@ -10,7 +11,93 @@
10
11
  * - getRecommendations: Get skill recommendations based on tech stack
11
12
  * - recordEvent: Record telemetry event
12
13
  */
14
+ import { z } from 'zod';
13
15
  import type { Skill, TrustTier, SearchOptions } from '../types/skill.js';
16
+ /**
17
+ * Trust tier enum values
18
+ */
19
+ declare const TrustTierSchema: z.ZodEnum<{
20
+ verified: "verified";
21
+ community: "community";
22
+ experimental: "experimental";
23
+ unknown: "unknown";
24
+ }>;
25
+ /**
26
+ * Schema for individual search result from API
27
+ * SMI-1577: Added .optional() and .default() to handle partial API responses
28
+ */
29
+ declare const ApiSearchResultSchema: z.ZodObject<{
30
+ id: z.ZodString;
31
+ name: z.ZodString;
32
+ description: z.ZodNullable<z.ZodString>;
33
+ author: z.ZodNullable<z.ZodString>;
34
+ repo_url: z.ZodOptional<z.ZodNullable<z.ZodString>>;
35
+ quality_score: z.ZodNullable<z.ZodNumber>;
36
+ trust_tier: z.ZodDefault<z.ZodEnum<{
37
+ verified: "verified";
38
+ community: "community";
39
+ experimental: "experimental";
40
+ unknown: "unknown";
41
+ }>>;
42
+ tags: z.ZodDefault<z.ZodArray<z.ZodString>>;
43
+ stars: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
44
+ installable: z.ZodOptional<z.ZodNullable<z.ZodBoolean>>;
45
+ created_at: z.ZodOptional<z.ZodString>;
46
+ updated_at: z.ZodOptional<z.ZodString>;
47
+ }, z.core.$strip>;
48
+ /**
49
+ * Schema for telemetry response
50
+ */
51
+ declare const TelemetryResponseSchema: z.ZodObject<{
52
+ data: z.ZodObject<{
53
+ ok: z.ZodBoolean;
54
+ }, z.core.$strip>;
55
+ meta: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
56
+ }, z.core.$strip>;
57
+ declare const SearchResponseSchema: z.ZodObject<{
58
+ data: z.ZodArray<z.ZodObject<{
59
+ id: z.ZodString;
60
+ name: z.ZodString;
61
+ description: z.ZodNullable<z.ZodString>;
62
+ author: z.ZodNullable<z.ZodString>;
63
+ repo_url: z.ZodOptional<z.ZodNullable<z.ZodString>>;
64
+ quality_score: z.ZodNullable<z.ZodNumber>;
65
+ trust_tier: z.ZodDefault<z.ZodEnum<{
66
+ verified: "verified";
67
+ community: "community";
68
+ experimental: "experimental";
69
+ unknown: "unknown";
70
+ }>>;
71
+ tags: z.ZodDefault<z.ZodArray<z.ZodString>>;
72
+ stars: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
73
+ installable: z.ZodOptional<z.ZodNullable<z.ZodBoolean>>;
74
+ created_at: z.ZodOptional<z.ZodString>;
75
+ updated_at: z.ZodOptional<z.ZodString>;
76
+ }, z.core.$strip>>;
77
+ meta: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
78
+ }, z.core.$strip>;
79
+ declare const SingleSkillResponseSchema: z.ZodObject<{
80
+ data: z.ZodObject<{
81
+ id: z.ZodString;
82
+ name: z.ZodString;
83
+ description: z.ZodNullable<z.ZodString>;
84
+ author: z.ZodNullable<z.ZodString>;
85
+ repo_url: z.ZodOptional<z.ZodNullable<z.ZodString>>;
86
+ quality_score: z.ZodNullable<z.ZodNumber>;
87
+ trust_tier: z.ZodDefault<z.ZodEnum<{
88
+ verified: "verified";
89
+ community: "community";
90
+ experimental: "experimental";
91
+ unknown: "unknown";
92
+ }>>;
93
+ tags: z.ZodDefault<z.ZodArray<z.ZodString>>;
94
+ stars: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
95
+ installable: z.ZodOptional<z.ZodNullable<z.ZodBoolean>>;
96
+ created_at: z.ZodOptional<z.ZodString>;
97
+ updated_at: z.ZodOptional<z.ZodString>;
98
+ }, z.core.$strip>;
99
+ meta: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
100
+ }, z.core.$strip>;
14
101
  /**
15
102
  * API response wrapper
16
103
  */
@@ -25,21 +112,32 @@ export interface ApiErrorResponse {
25
112
  error: string;
26
113
  details?: Record<string, unknown>;
27
114
  }
115
+ /**
116
+ * Custom error class for API client errors with retry control
117
+ * SMI-1257: Replace string-based retry skip with custom error class
118
+ */
119
+ export declare class ApiClientError extends Error {
120
+ readonly retryable: boolean;
121
+ readonly statusCode?: number | undefined;
122
+ constructor(message: string, retryable?: boolean, statusCode?: number | undefined);
123
+ }
28
124
  /**
29
125
  * Search result from API
126
+ * SMI-1577: Made repo_url, created_at, updated_at optional to match schema
30
127
  */
31
128
  export interface ApiSearchResult {
32
129
  id: string;
33
130
  name: string;
34
131
  description: string | null;
35
132
  author: string | null;
36
- repo_url: string | null;
133
+ repo_url?: string | null;
37
134
  quality_score: number | null;
38
135
  trust_tier: TrustTier;
39
136
  tags: string[];
40
- stars: number | null;
41
- created_at: string;
42
- updated_at: string;
137
+ stars?: number | null;
138
+ installable?: boolean | null;
139
+ created_at?: string;
140
+ updated_at?: string;
43
141
  }
44
142
  /**
45
143
  * Recommendation request
@@ -72,9 +170,15 @@ export interface ApiClientConfig {
72
170
  maxRetries?: number;
73
171
  /** Enable debug logging */
74
172
  debug?: boolean;
173
+ /** Enable offline mode (disables API calls) */
174
+ offlineMode?: boolean;
75
175
  }
76
176
  /**
77
- * Generate anonymous ID for telemetry
177
+ * Generate anonymous ID for telemetry using cryptographic randomness.
178
+ * Returns a UUID v4 format string (e.g., "550e8400-e29b-41d4-a716-446655440000").
179
+ *
180
+ * Note: This generates a fresh ID per session - it is NOT stored persistently.
181
+ * For persistent anonymous IDs, the caller must handle storage.
78
182
  */
79
183
  export declare function generateAnonymousId(): string;
80
184
  /**
@@ -96,7 +200,12 @@ export declare class SkillsmithApiClient {
96
200
  private timeout;
97
201
  private maxRetries;
98
202
  private debug;
203
+ private offlineMode;
99
204
  constructor(config?: ApiClientConfig);
205
+ /**
206
+ * Check if client is running in offline mode
207
+ */
208
+ isOffline(): boolean;
100
209
  /**
101
210
  * Log debug message
102
211
  */
@@ -106,11 +215,17 @@ export declare class SkillsmithApiClient {
106
215
  */
107
216
  private buildHeaders;
108
217
  /**
109
- * Make API request with retry logic
218
+ * Make API request with retry logic and optional schema validation
219
+ * SMI-1258: Added runtime validation for API responses
220
+ *
221
+ * @param endpoint - API endpoint path
222
+ * @param options - Fetch options
223
+ * @param schema - Optional zod schema for response validation
110
224
  */
111
225
  private request;
112
226
  /**
113
227
  * Search for skills
228
+ * SMI-1258: Validates response against SearchResponseSchema
114
229
  *
115
230
  * @param options - Search options
116
231
  * @returns Search results
@@ -118,6 +233,7 @@ export declare class SkillsmithApiClient {
118
233
  search(options: SearchOptions): Promise<ApiResponse<ApiSearchResult[]>>;
119
234
  /**
120
235
  * Get skill by ID
236
+ * SMI-1258: Validates response against SingleSkillResponseSchema
121
237
  *
122
238
  * @param id - Skill ID (UUID or author/name format)
123
239
  * @returns Skill details
@@ -125,6 +241,7 @@ export declare class SkillsmithApiClient {
125
241
  getSkill(id: string): Promise<ApiResponse<ApiSearchResult>>;
126
242
  /**
127
243
  * Get skill recommendations based on tech stack
244
+ * SMI-1258: Validates response against SearchResponseSchema
128
245
  *
129
246
  * @param request - Recommendation request
130
247
  * @returns Recommended skills
@@ -132,6 +249,7 @@ export declare class SkillsmithApiClient {
132
249
  getRecommendations(request: RecommendationRequest): Promise<ApiResponse<ApiSearchResult[]>>;
133
250
  /**
134
251
  * Record telemetry event
252
+ * SMI-1258: Validates response against TelemetryResponseSchema
135
253
  *
136
254
  * @param event - Telemetry event
137
255
  * @returns Success response
@@ -139,8 +257,23 @@ export declare class SkillsmithApiClient {
139
257
  recordEvent(event: TelemetryEvent): Promise<{
140
258
  ok: boolean;
141
259
  }>;
260
+ /**
261
+ * Check API health status
262
+ *
263
+ * Returns service health information including status, timestamp, and version.
264
+ * In offline mode, returns a synthetic healthy response.
265
+ *
266
+ * @returns Health status object
267
+ */
268
+ checkHealth(): Promise<{
269
+ status: 'healthy' | 'degraded' | 'unhealthy';
270
+ timestamp: string;
271
+ version: string;
272
+ }>;
142
273
  /**
143
274
  * Convert API result to Skill type
275
+ * SMI-1577: Handle optional fields with sensible defaults
276
+ * Uses epoch timestamp as sentinel for missing dates to avoid data integrity issues
144
277
  */
145
278
  static toSkill(result: ApiSearchResult): Skill;
146
279
  }
@@ -148,5 +281,6 @@ export declare class SkillsmithApiClient {
148
281
  * Create a default API client instance
149
282
  */
150
283
  export declare function createApiClient(config?: ApiClientConfig): SkillsmithApiClient;
284
+ export { ApiSearchResultSchema, SearchResponseSchema, SingleSkillResponseSchema, TelemetryResponseSchema, TrustTierSchema, };
151
285
  export default SkillsmithApiClient;
152
286
  //# sourceMappingURL=client.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/api/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/api/client.ts"],"names":[],"mappings":"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"}