@skillsmith/core 2.1.0 → 2.1.2

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 (204) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/src/analysis/types.d.ts +2 -0
  3. package/dist/src/analysis/types.d.ts.map +1 -1
  4. package/dist/src/analysis/types.js +13 -1
  5. package/dist/src/analysis/types.js.map +1 -1
  6. package/dist/src/analytics/AnalyticsRepository.d.ts +4 -0
  7. package/dist/src/analytics/AnalyticsRepository.d.ts.map +1 -1
  8. package/dist/src/analytics/AnalyticsRepository.js +26 -44
  9. package/dist/src/analytics/AnalyticsRepository.js.map +1 -1
  10. package/dist/src/analytics/schema.d.ts +1 -1
  11. package/dist/src/analytics/schema.d.ts.map +1 -1
  12. package/dist/src/analytics/schema.js +68 -0
  13. package/dist/src/analytics/schema.js.map +1 -1
  14. package/dist/src/api/client.d.ts +33 -29
  15. package/dist/src/api/client.d.ts.map +1 -1
  16. package/dist/src/api/client.js +15 -10
  17. package/dist/src/api/client.js.map +1 -1
  18. package/dist/src/billing/BillingService.d.ts +139 -0
  19. package/dist/src/billing/BillingService.d.ts.map +1 -0
  20. package/dist/src/billing/BillingService.js +393 -0
  21. package/dist/src/billing/BillingService.js.map +1 -0
  22. package/dist/src/billing/GDPRComplianceService.d.ts +176 -0
  23. package/dist/src/billing/GDPRComplianceService.d.ts.map +1 -0
  24. package/dist/src/billing/GDPRComplianceService.js +361 -0
  25. package/dist/src/billing/GDPRComplianceService.js.map +1 -0
  26. package/dist/src/billing/StripeClient.d.ts +177 -0
  27. package/dist/src/billing/StripeClient.d.ts.map +1 -0
  28. package/dist/src/billing/StripeClient.js +462 -0
  29. package/dist/src/billing/StripeClient.js.map +1 -0
  30. package/dist/src/billing/StripeReconciliationJob.d.ts +95 -0
  31. package/dist/src/billing/StripeReconciliationJob.d.ts.map +1 -0
  32. package/dist/src/billing/StripeReconciliationJob.js +405 -0
  33. package/dist/src/billing/StripeReconciliationJob.js.map +1 -0
  34. package/dist/src/billing/StripeWebhookHandler.d.ts +92 -0
  35. package/dist/src/billing/StripeWebhookHandler.d.ts.map +1 -0
  36. package/dist/src/billing/StripeWebhookHandler.js +409 -0
  37. package/dist/src/billing/StripeWebhookHandler.js.map +1 -0
  38. package/dist/src/billing/index.d.ts +18 -0
  39. package/dist/src/billing/index.d.ts.map +1 -0
  40. package/dist/src/billing/index.js +19 -0
  41. package/dist/src/billing/index.js.map +1 -0
  42. package/dist/src/billing/types.d.ts +266 -0
  43. package/dist/src/billing/types.d.ts.map +1 -0
  44. package/dist/src/billing/types.js +23 -0
  45. package/dist/src/billing/types.js.map +1 -0
  46. package/dist/src/embeddings/hnsw-store.d.ts +568 -0
  47. package/dist/src/embeddings/hnsw-store.d.ts.map +1 -0
  48. package/dist/src/embeddings/hnsw-store.js +805 -0
  49. package/dist/src/embeddings/hnsw-store.js.map +1 -0
  50. package/dist/src/embeddings/index.d.ts +2 -0
  51. package/dist/src/embeddings/index.d.ts.map +1 -1
  52. package/dist/src/embeddings/index.js +2 -0
  53. package/dist/src/embeddings/index.js.map +1 -1
  54. package/dist/src/index.d.ts +1 -0
  55. package/dist/src/index.d.ts.map +1 -1
  56. package/dist/src/index.js +2 -0
  57. package/dist/src/index.js.map +1 -1
  58. package/dist/src/learning/PatternStore.d.ts +457 -0
  59. package/dist/src/learning/PatternStore.d.ts.map +1 -0
  60. package/dist/src/learning/PatternStore.js +893 -0
  61. package/dist/src/learning/PatternStore.js.map +1 -0
  62. package/dist/src/learning/ReasoningBankIntegration.d.ts +403 -0
  63. package/dist/src/learning/ReasoningBankIntegration.d.ts.map +1 -0
  64. package/dist/src/learning/ReasoningBankIntegration.js +627 -0
  65. package/dist/src/learning/ReasoningBankIntegration.js.map +1 -0
  66. package/dist/src/learning/index.d.ts +15 -0
  67. package/dist/src/learning/index.d.ts.map +1 -0
  68. package/dist/src/learning/index.js +15 -0
  69. package/dist/src/learning/index.js.map +1 -0
  70. package/dist/src/routing/SONARouter.d.ts +154 -0
  71. package/dist/src/routing/SONARouter.d.ts.map +1 -0
  72. package/dist/src/routing/SONARouter.js +679 -0
  73. package/dist/src/routing/SONARouter.js.map +1 -0
  74. package/dist/src/routing/index.d.ts +9 -0
  75. package/dist/src/routing/index.d.ts.map +1 -0
  76. package/dist/src/routing/index.js +10 -0
  77. package/dist/src/routing/index.js.map +1 -0
  78. package/dist/src/routing/types.d.ts +331 -0
  79. package/dist/src/routing/types.d.ts.map +1 -0
  80. package/dist/src/routing/types.js +203 -0
  81. package/dist/src/routing/types.js.map +1 -0
  82. package/dist/src/scripts/__tests__/scan-imported-skills.test.js +5 -0
  83. package/dist/src/scripts/__tests__/scan-imported-skills.test.js.map +1 -1
  84. package/dist/src/security/SkillSandbox.d.ts +156 -0
  85. package/dist/src/security/SkillSandbox.d.ts.map +1 -0
  86. package/dist/src/security/SkillSandbox.js +303 -0
  87. package/dist/src/security/SkillSandbox.js.map +1 -0
  88. package/dist/src/security/index.d.ts +3 -1
  89. package/dist/src/security/index.d.ts.map +1 -1
  90. package/dist/src/security/index.js +5 -1
  91. package/dist/src/security/index.js.map +1 -1
  92. package/dist/src/security/rate-limiter/presets.d.ts +12 -0
  93. package/dist/src/security/rate-limiter/presets.d.ts.map +1 -1
  94. package/dist/src/security/rate-limiter/presets.js +12 -0
  95. package/dist/src/security/rate-limiter/presets.js.map +1 -1
  96. package/dist/src/security/sanitization.d.ts +85 -0
  97. package/dist/src/security/sanitization.d.ts.map +1 -1
  98. package/dist/src/security/sanitization.js +133 -0
  99. package/dist/src/security/sanitization.js.map +1 -1
  100. package/dist/src/security/scanner/SecurityScanner.d.ts +23 -0
  101. package/dist/src/security/scanner/SecurityScanner.d.ts.map +1 -1
  102. package/dist/src/security/scanner/SecurityScanner.js +232 -28
  103. package/dist/src/security/scanner/SecurityScanner.js.map +1 -1
  104. package/dist/src/security/scanner/patterns.d.ts +13 -0
  105. package/dist/src/security/scanner/patterns.d.ts.map +1 -1
  106. package/dist/src/security/scanner/patterns.js +51 -0
  107. package/dist/src/security/scanner/patterns.js.map +1 -1
  108. package/dist/src/security/scanner/types.d.ts +13 -1
  109. package/dist/src/security/scanner/types.d.ts.map +1 -1
  110. package/dist/src/security/scanner/weights.d.ts.map +1 -1
  111. package/dist/src/security/scanner/weights.js +1 -0
  112. package/dist/src/security/scanner/weights.js.map +1 -1
  113. package/dist/src/session/SessionManager.d.ts +7 -0
  114. package/dist/src/session/SessionManager.d.ts.map +1 -1
  115. package/dist/src/session/SessionManager.js +117 -10
  116. package/dist/src/session/SessionManager.js.map +1 -1
  117. package/dist/src/sync/SyncEngine.d.ts.map +1 -1
  118. package/dist/src/sync/SyncEngine.js +52 -32
  119. package/dist/src/sync/SyncEngine.js.map +1 -1
  120. package/dist/src/testing/MultiLLMProvider.d.ts +374 -0
  121. package/dist/src/testing/MultiLLMProvider.d.ts.map +1 -0
  122. package/dist/src/testing/MultiLLMProvider.js +720 -0
  123. package/dist/src/testing/MultiLLMProvider.js.map +1 -0
  124. package/dist/src/testing/index.d.ts +8 -0
  125. package/dist/src/testing/index.d.ts.map +1 -0
  126. package/dist/src/testing/index.js +9 -0
  127. package/dist/src/testing/index.js.map +1 -0
  128. package/dist/src/types.d.ts +3 -0
  129. package/dist/src/types.d.ts.map +1 -1
  130. package/dist/tests/SecurityScanner.test.js +337 -1
  131. package/dist/tests/SecurityScanner.test.js.map +1 -1
  132. package/dist/tests/billing/BillingService.test.d.ts +7 -0
  133. package/dist/tests/billing/BillingService.test.d.ts.map +1 -0
  134. package/dist/tests/billing/BillingService.test.js +168 -0
  135. package/dist/tests/billing/BillingService.test.js.map +1 -0
  136. package/dist/tests/billing/GDPRCompliance.test.d.ts +7 -0
  137. package/dist/tests/billing/GDPRCompliance.test.d.ts.map +1 -0
  138. package/dist/tests/billing/GDPRCompliance.test.js +195 -0
  139. package/dist/tests/billing/GDPRCompliance.test.js.map +1 -0
  140. package/dist/tests/billing/StripeReconciliation.test.d.ts +7 -0
  141. package/dist/tests/billing/StripeReconciliation.test.d.ts.map +1 -0
  142. package/dist/tests/billing/StripeReconciliation.test.js +266 -0
  143. package/dist/tests/billing/StripeReconciliation.test.js.map +1 -0
  144. package/dist/tests/billing/stripe-validators.test.d.ts +7 -0
  145. package/dist/tests/billing/stripe-validators.test.d.ts.map +1 -0
  146. package/dist/tests/billing/stripe-validators.test.js +107 -0
  147. package/dist/tests/billing/stripe-validators.test.js.map +1 -0
  148. package/dist/tests/embeddings/hnsw-store.test.d.ts +7 -0
  149. package/dist/tests/embeddings/hnsw-store.test.d.ts.map +1 -0
  150. package/dist/tests/embeddings/hnsw-store.test.js +295 -0
  151. package/dist/tests/embeddings/hnsw-store.test.js.map +1 -0
  152. package/dist/tests/integration/neural/e2e-learning.test.d.ts +17 -0
  153. package/dist/tests/integration/neural/e2e-learning.test.d.ts.map +1 -0
  154. package/dist/tests/integration/neural/e2e-learning.test.js +238 -0
  155. package/dist/tests/integration/neural/e2e-learning.test.js.map +1 -0
  156. package/dist/tests/integration/neural/helpers.d.ts +132 -0
  157. package/dist/tests/integration/neural/helpers.d.ts.map +1 -0
  158. package/dist/tests/integration/neural/helpers.js +287 -0
  159. package/dist/tests/integration/neural/helpers.js.map +1 -0
  160. package/dist/tests/integration/neural/personalization.test.d.ts +21 -0
  161. package/dist/tests/integration/neural/personalization.test.d.ts.map +1 -0
  162. package/dist/tests/integration/neural/personalization.test.js +304 -0
  163. package/dist/tests/integration/neural/personalization.test.js.map +1 -0
  164. package/dist/tests/integration/neural/preference-learner.test.d.ts +23 -0
  165. package/dist/tests/integration/neural/preference-learner.test.d.ts.map +1 -0
  166. package/dist/tests/integration/neural/preference-learner.test.js +289 -0
  167. package/dist/tests/integration/neural/preference-learner.test.js.map +1 -0
  168. package/dist/tests/integration/neural/privacy.test.d.ts +19 -0
  169. package/dist/tests/integration/neural/privacy.test.d.ts.map +1 -0
  170. package/dist/tests/integration/neural/privacy.test.js +249 -0
  171. package/dist/tests/integration/neural/privacy.test.js.map +1 -0
  172. package/dist/tests/integration/neural/setup.d.ts +175 -0
  173. package/dist/tests/integration/neural/setup.d.ts.map +1 -0
  174. package/dist/tests/integration/neural/setup.js +487 -0
  175. package/dist/tests/integration/neural/setup.js.map +1 -0
  176. package/dist/tests/integration/neural/signal-collection.test.d.ts +21 -0
  177. package/dist/tests/integration/neural/signal-collection.test.d.ts.map +1 -0
  178. package/dist/tests/integration/neural/signal-collection.test.js +232 -0
  179. package/dist/tests/integration/neural/signal-collection.test.js.map +1 -0
  180. package/dist/tests/learning/PatternStore.test.d.ts +8 -0
  181. package/dist/tests/learning/PatternStore.test.d.ts.map +1 -0
  182. package/dist/tests/learning/PatternStore.test.js +589 -0
  183. package/dist/tests/learning/PatternStore.test.js.map +1 -0
  184. package/dist/tests/learning/ReasoningBankIntegration.test.d.ts +8 -0
  185. package/dist/tests/learning/ReasoningBankIntegration.test.d.ts.map +1 -0
  186. package/dist/tests/learning/ReasoningBankIntegration.test.js +269 -0
  187. package/dist/tests/learning/ReasoningBankIntegration.test.js.map +1 -0
  188. package/dist/tests/routing/SONARouter.test.d.ts +8 -0
  189. package/dist/tests/routing/SONARouter.test.d.ts.map +1 -0
  190. package/dist/tests/routing/SONARouter.test.js +400 -0
  191. package/dist/tests/routing/SONARouter.test.js.map +1 -0
  192. package/dist/tests/security/ContinuousSecurity.test.js +10 -12
  193. package/dist/tests/security/ContinuousSecurity.test.js.map +1 -1
  194. package/dist/tests/security/SkillSandbox.test.d.ts +8 -0
  195. package/dist/tests/security/SkillSandbox.test.d.ts.map +1 -0
  196. package/dist/tests/security/SkillSandbox.test.js +321 -0
  197. package/dist/tests/security/SkillSandbox.test.js.map +1 -0
  198. package/dist/tests/sync/SyncEngine.test.js +4 -2
  199. package/dist/tests/sync/SyncEngine.test.js.map +1 -1
  200. package/dist/tests/testing/MultiLLMProvider.test.d.ts +14 -0
  201. package/dist/tests/testing/MultiLLMProvider.test.d.ts.map +1 -0
  202. package/dist/tests/testing/MultiLLMProvider.test.js +438 -0
  203. package/dist/tests/testing/MultiLLMProvider.test.js.map +1 -0
  204. package/package.json +16 -3
@@ -15,6 +15,8 @@
15
15
  export type SupportedLanguage = 'typescript' | 'javascript' | 'python' | 'go' | 'rust' | 'java';
16
16
  /**
17
17
  * Supported file extensions for analysis (legacy, for backwards compatibility)
18
+ * SMI-1579: Added Python extensions for multi-language analysis
19
+ * Includes .pyw for Windows GUI Python scripts
18
20
  */
19
21
  export declare const SUPPORTED_EXTENSIONS: string[];
20
22
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/analysis/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/analysis/types.ts"],"names":[],"mappings":"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"}
@@ -11,8 +11,20 @@
11
11
  */
12
12
  /**
13
13
  * Supported file extensions for analysis (legacy, for backwards compatibility)
14
+ * SMI-1579: Added Python extensions for multi-language analysis
15
+ * Includes .pyw for Windows GUI Python scripts
14
16
  */
15
- export const SUPPORTED_EXTENSIONS = ['.ts', '.tsx', '.js', '.jsx', '.mjs', '.cjs'];
17
+ export const SUPPORTED_EXTENSIONS = [
18
+ '.ts',
19
+ '.tsx',
20
+ '.js',
21
+ '.jsx',
22
+ '.mjs',
23
+ '.cjs',
24
+ '.py',
25
+ '.pyi',
26
+ '.pyw',
27
+ ];
16
28
  /**
17
29
  * Multi-language file extensions mapping
18
30
  */
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/analysis/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAOH;;GAEG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;AAElF;;GAEG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAwC;IACtE,UAAU,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;IAC3C,UAAU,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;IAC3C,MAAM,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC;IAC/B,EAAE,EAAE,CAAC,KAAK,CAAC;IACX,IAAI,EAAE,CAAC,KAAK,CAAC;IACb,IAAI,EAAE,CAAC,OAAO,CAAC;CAChB,CAAA;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,cAAc;IACd,MAAM;IACN,OAAO;IACP,MAAM;IACN,UAAU;IACV,OAAO;IACP,OAAO;IACP,aAAa;IACb,eAAe;IACf,QAAQ;IACR,QAAQ;IACR,MAAM;IACN,OAAO;IACP,KAAK;CACN,CAAA"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/analysis/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAOH;;;;GAIG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,KAAK;IACL,MAAM;IACN,KAAK;IACL,MAAM;IACN,MAAM;IACN,MAAM;IACN,KAAK;IACL,MAAM;IACN,MAAM;CACP,CAAA;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAwC;IACtE,UAAU,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;IAC3C,UAAU,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;IAC3C,MAAM,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC;IAC/B,EAAE,EAAE,CAAC,KAAK,CAAC;IACX,IAAI,EAAE,CAAC,KAAK,CAAC;IACb,IAAI,EAAE,CAAC,OAAO,CAAC;CAChB,CAAA;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,cAAc;IACd,MAAM;IACN,OAAO;IACP,MAAM;IACN,UAAU;IACV,OAAO;IACP,OAAO;IACP,aAAa;IACb,eAAe;IACf,QAAQ;IACR,QAAQ;IACR,MAAM;IACN,OAAO;IACP,KAAK;CACN,CAAA"}
@@ -93,5 +93,9 @@ export declare class AnalyticsRepository {
93
93
  */
94
94
  getEntityROIMetrics(entityId: string, startDate: string, endDate: string): ROIMetrics[];
95
95
  private rowToROIMetrics;
96
+ /**
97
+ * Convert a database row to an Experiment object
98
+ */
99
+ private rowToExperiment;
96
100
  }
97
101
  //# sourceMappingURL=AnalyticsRepository.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"AnalyticsRepository.d.ts","sourceRoot":"","sources":["../../../src/analytics/AnalyticsRepository.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,QAAQ,IAAI,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAE9D,OAAO,KAAK,EACV,UAAU,EACV,eAAe,EAEf,UAAU,EACV,eAAe,EACf,oBAAoB,EACpB,iBAAiB,EACjB,YAAY,EACZ,UAAU,EAEV,iBAAiB,EACjB,gBAAgB,EACjB,MAAM,YAAY,CAAA;AAkBnB;;GAEG;AACH,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,EAAE,CAAc;gBAEZ,EAAE,EAAE,YAAY;IAM5B;;;OAGG;IACH,gBAAgB,CAAC,KAAK,EAAE,eAAe,GAAG,UAAU;IAyBpD;;OAEG;IACH,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI;IAoB5C;;OAEG;IACH,sBAAsB,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,UAAU,EAAE;IAsBzF;;OAEG;IACH,qBAAqB,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,UAAU,EAAE;IAsBvF;;OAEG;IACH,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,UAAU,EAAE;IAsBnE;;OAEG;IACH,gBAAgB,CAAC,aAAa,GAAE,MAAW,GAAG,MAAM;IAYpD;;OAEG;IACH,gBAAgB,CAAC,KAAK,EAAE,eAAe,GAAG,UAAU;IAuBpD;;OAEG;IACH,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI;IAqB5C;;OAEG;IACH,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI;IAqBpD;;OAEG;IACH,sBAAsB,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,gBAAgB,GAAG,OAAO;IAQrE;;OAEG;IACH,oBAAoB,IAAI,UAAU,EAAE;IAuBpC;;OAEG;IACH,sBAAsB,CACpB,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,iBAAiB,GACzB,oBAAoB;IAwBvB;;OAEG;IACH,iBAAiB,CAAC,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,oBAAoB,GAAG,IAAI;IAgBpF;;OAEG;IACH,wBAAwB,CAAC,YAAY,EAAE,MAAM,GAAG,oBAAoB,EAAE;IAgBtE;;OAEG;IACH,aAAa,CAAC,KAAK,EAAE,YAAY,GAAG,iBAAiB;IAgCrD;;OAEG;IACH,qBAAqB,CAAC,YAAY,EAAE,MAAM,GAAG,iBAAiB,EAAE;IAqBhE;;OAEG;IACH,eAAe,CAAC,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,GAAG,WAAW,CAAC,GAAG,UAAU;IAkC1E;;OAEG;IACH,aAAa,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,UAAU,EAAE;IAYnF;;OAEG;IACH,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,UAAU,EAAE;IAYvF,OAAO,CAAC,eAAe;CAmBxB"}
1
+ {"version":3,"file":"AnalyticsRepository.d.ts","sourceRoot":"","sources":["../../../src/analytics/AnalyticsRepository.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,QAAQ,IAAI,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAE9D,OAAO,KAAK,EACV,UAAU,EACV,eAAe,EAEf,UAAU,EACV,eAAe,EACf,oBAAoB,EACpB,iBAAiB,EACjB,YAAY,EACZ,UAAU,EAEV,iBAAiB,EACjB,gBAAgB,EACjB,MAAM,YAAY,CAAA;AAkFnB;;GAEG;AACH,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,EAAE,CAAc;gBAEZ,EAAE,EAAE,YAAY;IAM5B;;;OAGG;IACH,gBAAgB,CAAC,KAAK,EAAE,eAAe,GAAG,UAAU;IAyBpD;;OAEG;IACH,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI;IAoB5C;;OAEG;IACH,sBAAsB,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,UAAU,EAAE;IAsBzF;;OAEG;IACH,qBAAqB,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,UAAU,EAAE;IAsBvF;;OAEG;IACH,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,UAAU,EAAE;IAsBnE;;OAEG;IACH,gBAAgB,CAAC,aAAa,GAAE,MAAW,GAAG,MAAM;IAYpD;;OAEG;IACH,gBAAgB,CAAC,KAAK,EAAE,eAAe,GAAG,UAAU;IAuBpD;;OAEG;IACH,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI;IAU5C;;OAEG;IACH,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI;IAUpD;;OAEG;IACH,sBAAsB,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,gBAAgB,GAAG,OAAO;IAQrE;;OAEG;IACH,oBAAoB,IAAI,UAAU,EAAE;IAUpC;;OAEG;IACH,sBAAsB,CACpB,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,iBAAiB,GACzB,oBAAoB;IAwBvB;;OAEG;IACH,iBAAiB,CAAC,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,oBAAoB,GAAG,IAAI;IAgBpF;;OAEG;IACH,wBAAwB,CAAC,YAAY,EAAE,MAAM,GAAG,oBAAoB,EAAE;IAgBtE;;OAEG;IACH,aAAa,CAAC,KAAK,EAAE,YAAY,GAAG,iBAAiB;IAkCrD;;OAEG;IACH,qBAAqB,CAAC,YAAY,EAAE,MAAM,GAAG,iBAAiB,EAAE;IAqBhE;;OAEG;IACH,eAAe,CAAC,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,GAAG,WAAW,CAAC,GAAG,UAAU;IAkC1E;;OAEG;IACH,aAAa,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,UAAU,EAAE;IAYnF;;OAEG;IACH,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,UAAU,EAAE;IAYvF,OAAO,CAAC,eAAe;IAoBvB;;OAEG;IACH,OAAO,CAAC,eAAe;CAgBxB"}
@@ -147,20 +147,7 @@ export class AnalyticsRepository {
147
147
  const row = this.db.prepare('SELECT * FROM experiments WHERE id = ?').get(id);
148
148
  if (!row)
149
149
  return null;
150
- return {
151
- id: row.id,
152
- name: row.name,
153
- description: row.description,
154
- hypothesis: row.hypothesis,
155
- status: row.status,
156
- variantA: JSON.parse(row.variant_a),
157
- variantB: JSON.parse(row.variant_b),
158
- startDate: row.start_date,
159
- endDate: row.end_date,
160
- targetSampleSize: row.target_sample_size,
161
- createdAt: row.created_at,
162
- updatedAt: row.updated_at,
163
- };
150
+ return this.rowToExperiment(row);
164
151
  }
165
152
  /**
166
153
  * Get experiment by name
@@ -169,20 +156,7 @@ export class AnalyticsRepository {
169
156
  const row = this.db.prepare('SELECT * FROM experiments WHERE name = ?').get(name);
170
157
  if (!row)
171
158
  return null;
172
- return {
173
- id: row.id,
174
- name: row.name,
175
- description: row.description,
176
- hypothesis: row.hypothesis,
177
- status: row.status,
178
- variantA: JSON.parse(row.variant_a),
179
- variantB: JSON.parse(row.variant_b),
180
- startDate: row.start_date,
181
- endDate: row.end_date,
182
- targetSampleSize: row.target_sample_size,
183
- createdAt: row.created_at,
184
- updatedAt: row.updated_at,
185
- };
159
+ return this.rowToExperiment(row);
186
160
  }
187
161
  /**
188
162
  * Update experiment status
@@ -200,20 +174,7 @@ export class AnalyticsRepository {
200
174
  const rows = this.db
201
175
  .prepare("SELECT * FROM experiments WHERE status = 'active' ORDER BY created_at DESC")
202
176
  .all();
203
- return rows.map((row) => ({
204
- id: row.id,
205
- name: row.name,
206
- description: row.description,
207
- hypothesis: row.hypothesis,
208
- status: row.status,
209
- variantA: JSON.parse(row.variant_a),
210
- variantB: JSON.parse(row.variant_b),
211
- startDate: row.start_date,
212
- endDate: row.end_date,
213
- targetSampleSize: row.target_sample_size,
214
- createdAt: row.created_at,
215
- updatedAt: row.updated_at,
216
- }));
177
+ return rows.map((row) => this.rowToExperiment(row));
217
178
  }
218
179
  // ==================== Experiment Assignments ====================
219
180
  /**
@@ -282,7 +243,9 @@ export class AnalyticsRepository {
282
243
  VALUES (?, ?, ?, ?, ?, ?)
283
244
  `);
284
245
  stmt.run(id, input.experimentId, input.assignmentId, input.outcomeType, input.outcomeValue, metadata);
285
- const row = this.db.prepare('SELECT * FROM experiment_outcomes WHERE id = ?').get(id);
246
+ const row = this.db
247
+ .prepare('SELECT * FROM experiment_outcomes WHERE id = ?')
248
+ .get(id);
286
249
  return {
287
250
  id: row.id,
288
251
  experimentId: row.experiment_id,
@@ -357,7 +320,7 @@ export class AnalyticsRepository {
357
320
  return {
358
321
  id: row.id,
359
322
  metricType: row.metric_type,
360
- entityId: row.entity_id,
323
+ entityId: row.entity_id ?? undefined,
361
324
  periodStart: row.period_start,
362
325
  periodEnd: row.period_end,
363
326
  totalActivations: row.total_activations,
@@ -372,5 +335,24 @@ export class AnalyticsRepository {
372
335
  createdAt: row.created_at,
373
336
  };
374
337
  }
338
+ /**
339
+ * Convert a database row to an Experiment object
340
+ */
341
+ rowToExperiment(row) {
342
+ return {
343
+ id: row.id,
344
+ name: row.name,
345
+ description: row.description ?? undefined,
346
+ hypothesis: row.hypothesis ?? undefined,
347
+ status: row.status,
348
+ variantA: JSON.parse(row.variant_a),
349
+ variantB: JSON.parse(row.variant_b),
350
+ startDate: row.start_date ?? undefined,
351
+ endDate: row.end_date ?? undefined,
352
+ targetSampleSize: row.target_sample_size,
353
+ createdAt: row.created_at,
354
+ updatedAt: row.updated_at,
355
+ };
356
+ }
375
357
  }
376
358
  //# sourceMappingURL=AnalyticsRepository.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"AnalyticsRepository.js","sourceRoot":"","sources":["../../../src/analytics/AnalyticsRepository.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AnalyticsRepository.js","sourceRoot":"","sources":["../../../src/analytics/AnalyticsRepository.ts"],"names":[],"mappings":"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"}
@@ -11,7 +11,7 @@
11
11
  /**
12
12
  * Analytics schema SQL for skill usage, A/B testing, and ROI tracking
13
13
  */
14
- export declare const ANALYTICS_SCHEMA = "\n-- Skill usage events for attribution and value tracking\nCREATE TABLE IF NOT EXISTS skill_usage_events (\n id TEXT PRIMARY KEY,\n skill_id TEXT NOT NULL,\n user_id TEXT NOT NULL,\n session_id TEXT NOT NULL,\n event_type TEXT NOT NULL CHECK(event_type IN ('activation', 'invocation', 'success', 'failure')),\n context TEXT, -- JSON metadata about the usage context\n value_score REAL, -- Estimated value contribution (0-1)\n timestamp TEXT NOT NULL DEFAULT (datetime('now')),\n created_at TEXT NOT NULL DEFAULT (datetime('now'))\n);\n\n-- Indexes for usage queries\nCREATE INDEX IF NOT EXISTS idx_usage_skill_id ON skill_usage_events(skill_id);\nCREATE INDEX IF NOT EXISTS idx_usage_user_id ON skill_usage_events(user_id);\nCREATE INDEX IF NOT EXISTS idx_usage_session_id ON skill_usage_events(session_id);\nCREATE INDEX IF NOT EXISTS idx_usage_timestamp ON skill_usage_events(timestamp);\nCREATE INDEX IF NOT EXISTS idx_usage_event_type ON skill_usage_events(event_type);\n\n-- A/B testing experiments\nCREATE TABLE IF NOT EXISTS experiments (\n id TEXT PRIMARY KEY,\n name TEXT NOT NULL UNIQUE,\n description TEXT,\n hypothesis TEXT,\n status TEXT NOT NULL CHECK(status IN ('draft', 'active', 'paused', 'completed')) DEFAULT 'draft',\n variant_a TEXT NOT NULL, -- JSON config for control group\n variant_b TEXT NOT NULL, -- JSON config for treatment group\n start_date TEXT,\n end_date TEXT,\n target_sample_size INTEGER DEFAULT 100,\n created_at TEXT NOT NULL DEFAULT (datetime('now')),\n updated_at TEXT NOT NULL DEFAULT (datetime('now'))\n);\n\n-- User assignments to experiment variants\nCREATE TABLE IF NOT EXISTS experiment_assignments (\n id TEXT PRIMARY KEY,\n experiment_id TEXT NOT NULL REFERENCES experiments(id) ON DELETE CASCADE,\n user_id TEXT NOT NULL,\n variant TEXT NOT NULL CHECK(variant IN ('control', 'treatment')),\n assigned_at TEXT NOT NULL DEFAULT (datetime('now')),\n UNIQUE(experiment_id, user_id)\n);\n\n-- Experiment outcome tracking\nCREATE TABLE IF NOT EXISTS experiment_outcomes (\n id TEXT PRIMARY KEY,\n experiment_id TEXT NOT NULL REFERENCES experiments(id) ON DELETE CASCADE,\n assignment_id TEXT NOT NULL REFERENCES experiment_assignments(id) ON DELETE CASCADE,\n outcome_type TEXT NOT NULL, -- e.g., 'activation', 'usage_count', 'value_score'\n outcome_value REAL NOT NULL,\n metadata TEXT, -- JSON additional data\n measured_at TEXT NOT NULL DEFAULT (datetime('now')),\n created_at TEXT NOT NULL DEFAULT (datetime('now'))\n);\n\n-- Indexes for experiment queries\nCREATE INDEX IF NOT EXISTS idx_assignments_experiment ON experiment_assignments(experiment_id);\nCREATE INDEX IF NOT EXISTS idx_assignments_user ON experiment_assignments(user_id);\nCREATE INDEX IF NOT EXISTS idx_outcomes_experiment ON experiment_outcomes(experiment_id);\nCREATE INDEX IF NOT EXISTS idx_outcomes_assignment ON experiment_outcomes(assignment_id);\n\n-- ROI metrics aggregation (materialized view equivalent)\nCREATE TABLE IF NOT EXISTS roi_metrics (\n id TEXT PRIMARY KEY,\n metric_type TEXT NOT NULL, -- 'daily', 'weekly', 'monthly', 'user', 'skill'\n entity_id TEXT, -- user_id or skill_id for entity-level metrics\n period_start TEXT NOT NULL,\n period_end TEXT NOT NULL,\n total_activations INTEGER DEFAULT 0,\n total_invocations INTEGER DEFAULT 0,\n total_successes INTEGER DEFAULT 0,\n total_failures INTEGER DEFAULT 0,\n avg_value_score REAL DEFAULT 0.0,\n estimated_time_saved REAL DEFAULT 0.0, -- in minutes\n estimated_value_usd REAL DEFAULT 0.0, -- rough ROI estimate\n metadata TEXT, -- JSON for additional metrics\n computed_at TEXT NOT NULL DEFAULT (datetime('now')),\n created_at TEXT NOT NULL DEFAULT (datetime('now'))\n);\n\n-- Indexes for ROI queries\nCREATE INDEX IF NOT EXISTS idx_roi_type ON roi_metrics(metric_type);\nCREATE INDEX IF NOT EXISTS idx_roi_entity ON roi_metrics(entity_id);\nCREATE INDEX IF NOT EXISTS idx_roi_period ON roi_metrics(period_start, period_end);\nCREATE INDEX IF NOT EXISTS idx_roi_computed ON roi_metrics(computed_at);\n\n-- Value attribution mappings\nCREATE TABLE IF NOT EXISTS value_attributions (\n id TEXT PRIMARY KEY,\n usage_event_id TEXT NOT NULL REFERENCES skill_usage_events(id) ON DELETE CASCADE,\n skill_id TEXT NOT NULL,\n attribution_type TEXT NOT NULL, -- 'inline', 'metadata', 'session'\n value_dimension TEXT NOT NULL, -- 'time_saved', 'quality_improved', 'error_prevented'\n value_amount REAL NOT NULL,\n confidence REAL NOT NULL CHECK(confidence >= 0 AND confidence <= 1),\n metadata TEXT, -- JSON additional context\n created_at TEXT NOT NULL DEFAULT (datetime('now'))\n);\n\n-- Indexes for attribution queries\nCREATE INDEX IF NOT EXISTS idx_attributions_event ON value_attributions(usage_event_id);\nCREATE INDEX IF NOT EXISTS idx_attributions_skill ON value_attributions(skill_id);\nCREATE INDEX IF NOT EXISTS idx_attributions_type ON value_attributions(attribution_type);\n\n-- ============================================================================\n-- Quota Management Tables (SMI-XXXX)\n-- ============================================================================\n\n-- Monthly usage quotas per customer/license\n-- Tracks API call usage against tier limits\nCREATE TABLE IF NOT EXISTS usage_quotas (\n id TEXT PRIMARY KEY,\n customer_id TEXT NOT NULL,\n license_tier TEXT NOT NULL CHECK(license_tier IN ('community', 'individual', 'team', 'enterprise')),\n billing_period_start TEXT NOT NULL,\n billing_period_end TEXT NOT NULL,\n api_calls_limit INTEGER NOT NULL,\n api_calls_used INTEGER DEFAULT 0,\n last_warning_threshold INTEGER DEFAULT 0, -- 0, 80, 90, or 100\n last_warning_sent_at TEXT,\n created_at TEXT NOT NULL DEFAULT (datetime('now')),\n updated_at TEXT NOT NULL DEFAULT (datetime('now')),\n UNIQUE(customer_id, billing_period_start)\n);\n\n-- Indexes for quota queries\nCREATE INDEX IF NOT EXISTS idx_quotas_customer ON usage_quotas(customer_id);\nCREATE INDEX IF NOT EXISTS idx_quotas_period ON usage_quotas(billing_period_start, billing_period_end);\nCREATE INDEX IF NOT EXISTS idx_quotas_tier ON usage_quotas(license_tier);\n\n-- Individual API call events for detailed tracking\n-- Used for quota enforcement and analytics\nCREATE TABLE IF NOT EXISTS api_call_events (\n id TEXT PRIMARY KEY,\n customer_id TEXT NOT NULL,\n license_key_hash TEXT, -- SHA256 hash of license key for lookup\n tool_name TEXT NOT NULL,\n endpoint TEXT,\n cost INTEGER DEFAULT 1, -- Some operations may cost multiple quota units\n success INTEGER DEFAULT 1, -- 1 for success, 0 for failure\n latency_ms INTEGER,\n session_id TEXT,\n metadata TEXT, -- JSON for additional context\n timestamp TEXT NOT NULL DEFAULT (datetime('now'))\n);\n\n-- Indexes for API call queries\nCREATE INDEX IF NOT EXISTS idx_api_calls_customer ON api_call_events(customer_id);\nCREATE INDEX IF NOT EXISTS idx_api_calls_timestamp ON api_call_events(timestamp);\nCREATE INDEX IF NOT EXISTS idx_api_calls_license ON api_call_events(license_key_hash);\nCREATE INDEX IF NOT EXISTS idx_api_calls_tool ON api_call_events(tool_name);\n\n-- User subscriptions for billing integration\n-- Links customers to Stripe subscriptions\nCREATE TABLE IF NOT EXISTS user_subscriptions (\n id TEXT PRIMARY KEY,\n customer_id TEXT NOT NULL UNIQUE,\n email TEXT NOT NULL,\n tier TEXT NOT NULL CHECK(tier IN ('community', 'individual', 'team', 'enterprise')),\n stripe_customer_id TEXT,\n stripe_subscription_id TEXT,\n status TEXT NOT NULL CHECK(status IN ('active', 'past_due', 'canceled', 'trialing', 'paused')),\n current_period_start TEXT,\n current_period_end TEXT,\n last_active_at TEXT,\n created_at TEXT NOT NULL DEFAULT (datetime('now')),\n updated_at TEXT NOT NULL DEFAULT (datetime('now'))\n);\n\n-- Indexes for subscription queries\nCREATE INDEX IF NOT EXISTS idx_subs_customer ON user_subscriptions(customer_id);\nCREATE INDEX IF NOT EXISTS idx_subs_stripe ON user_subscriptions(stripe_customer_id);\nCREATE INDEX IF NOT EXISTS idx_subs_status ON user_subscriptions(status);\nCREATE INDEX IF NOT EXISTS idx_subs_tier ON user_subscriptions(tier);\nCREATE INDEX IF NOT EXISTS idx_subs_last_active ON user_subscriptions(last_active_at);\n";
14
+ export declare const ANALYTICS_SCHEMA = "\n-- Skill usage events for attribution and value tracking\nCREATE TABLE IF NOT EXISTS skill_usage_events (\n id TEXT PRIMARY KEY,\n skill_id TEXT NOT NULL,\n user_id TEXT NOT NULL,\n session_id TEXT NOT NULL,\n event_type TEXT NOT NULL CHECK(event_type IN ('activation', 'invocation', 'success', 'failure')),\n context TEXT, -- JSON metadata about the usage context\n value_score REAL, -- Estimated value contribution (0-1)\n timestamp TEXT NOT NULL DEFAULT (datetime('now')),\n created_at TEXT NOT NULL DEFAULT (datetime('now'))\n);\n\n-- Indexes for usage queries\nCREATE INDEX IF NOT EXISTS idx_usage_skill_id ON skill_usage_events(skill_id);\nCREATE INDEX IF NOT EXISTS idx_usage_user_id ON skill_usage_events(user_id);\nCREATE INDEX IF NOT EXISTS idx_usage_session_id ON skill_usage_events(session_id);\nCREATE INDEX IF NOT EXISTS idx_usage_timestamp ON skill_usage_events(timestamp);\nCREATE INDEX IF NOT EXISTS idx_usage_event_type ON skill_usage_events(event_type);\n\n-- A/B testing experiments\nCREATE TABLE IF NOT EXISTS experiments (\n id TEXT PRIMARY KEY,\n name TEXT NOT NULL UNIQUE,\n description TEXT,\n hypothesis TEXT,\n status TEXT NOT NULL CHECK(status IN ('draft', 'active', 'paused', 'completed')) DEFAULT 'draft',\n variant_a TEXT NOT NULL, -- JSON config for control group\n variant_b TEXT NOT NULL, -- JSON config for treatment group\n start_date TEXT,\n end_date TEXT,\n target_sample_size INTEGER DEFAULT 100,\n created_at TEXT NOT NULL DEFAULT (datetime('now')),\n updated_at TEXT NOT NULL DEFAULT (datetime('now'))\n);\n\n-- User assignments to experiment variants\nCREATE TABLE IF NOT EXISTS experiment_assignments (\n id TEXT PRIMARY KEY,\n experiment_id TEXT NOT NULL REFERENCES experiments(id) ON DELETE CASCADE,\n user_id TEXT NOT NULL,\n variant TEXT NOT NULL CHECK(variant IN ('control', 'treatment')),\n assigned_at TEXT NOT NULL DEFAULT (datetime('now')),\n UNIQUE(experiment_id, user_id)\n);\n\n-- Experiment outcome tracking\nCREATE TABLE IF NOT EXISTS experiment_outcomes (\n id TEXT PRIMARY KEY,\n experiment_id TEXT NOT NULL REFERENCES experiments(id) ON DELETE CASCADE,\n assignment_id TEXT NOT NULL REFERENCES experiment_assignments(id) ON DELETE CASCADE,\n outcome_type TEXT NOT NULL, -- e.g., 'activation', 'usage_count', 'value_score'\n outcome_value REAL NOT NULL,\n metadata TEXT, -- JSON additional data\n measured_at TEXT NOT NULL DEFAULT (datetime('now')),\n created_at TEXT NOT NULL DEFAULT (datetime('now'))\n);\n\n-- Indexes for experiment queries\nCREATE INDEX IF NOT EXISTS idx_assignments_experiment ON experiment_assignments(experiment_id);\nCREATE INDEX IF NOT EXISTS idx_assignments_user ON experiment_assignments(user_id);\nCREATE INDEX IF NOT EXISTS idx_outcomes_experiment ON experiment_outcomes(experiment_id);\nCREATE INDEX IF NOT EXISTS idx_outcomes_assignment ON experiment_outcomes(assignment_id);\n\n-- ROI metrics aggregation (materialized view equivalent)\nCREATE TABLE IF NOT EXISTS roi_metrics (\n id TEXT PRIMARY KEY,\n metric_type TEXT NOT NULL, -- 'daily', 'weekly', 'monthly', 'user', 'skill'\n entity_id TEXT, -- user_id or skill_id for entity-level metrics\n period_start TEXT NOT NULL,\n period_end TEXT NOT NULL,\n total_activations INTEGER DEFAULT 0,\n total_invocations INTEGER DEFAULT 0,\n total_successes INTEGER DEFAULT 0,\n total_failures INTEGER DEFAULT 0,\n avg_value_score REAL DEFAULT 0.0,\n estimated_time_saved REAL DEFAULT 0.0, -- in minutes\n estimated_value_usd REAL DEFAULT 0.0, -- rough ROI estimate\n metadata TEXT, -- JSON for additional metrics\n computed_at TEXT NOT NULL DEFAULT (datetime('now')),\n created_at TEXT NOT NULL DEFAULT (datetime('now'))\n);\n\n-- Indexes for ROI queries\nCREATE INDEX IF NOT EXISTS idx_roi_type ON roi_metrics(metric_type);\nCREATE INDEX IF NOT EXISTS idx_roi_entity ON roi_metrics(entity_id);\nCREATE INDEX IF NOT EXISTS idx_roi_period ON roi_metrics(period_start, period_end);\nCREATE INDEX IF NOT EXISTS idx_roi_computed ON roi_metrics(computed_at);\n\n-- Value attribution mappings\nCREATE TABLE IF NOT EXISTS value_attributions (\n id TEXT PRIMARY KEY,\n usage_event_id TEXT NOT NULL REFERENCES skill_usage_events(id) ON DELETE CASCADE,\n skill_id TEXT NOT NULL,\n attribution_type TEXT NOT NULL, -- 'inline', 'metadata', 'session'\n value_dimension TEXT NOT NULL, -- 'time_saved', 'quality_improved', 'error_prevented'\n value_amount REAL NOT NULL,\n confidence REAL NOT NULL CHECK(confidence >= 0 AND confidence <= 1),\n metadata TEXT, -- JSON additional context\n created_at TEXT NOT NULL DEFAULT (datetime('now'))\n);\n\n-- Indexes for attribution queries\nCREATE INDEX IF NOT EXISTS idx_attributions_event ON value_attributions(usage_event_id);\nCREATE INDEX IF NOT EXISTS idx_attributions_skill ON value_attributions(skill_id);\nCREATE INDEX IF NOT EXISTS idx_attributions_type ON value_attributions(attribution_type);\n\n-- ============================================================================\n-- Quota Management Tables (SMI-XXXX)\n-- ============================================================================\n\n-- Monthly usage quotas per customer/license\n-- Tracks API call usage against tier limits\nCREATE TABLE IF NOT EXISTS usage_quotas (\n id TEXT PRIMARY KEY,\n customer_id TEXT NOT NULL,\n license_tier TEXT NOT NULL CHECK(license_tier IN ('community', 'individual', 'team', 'enterprise')),\n billing_period_start TEXT NOT NULL,\n billing_period_end TEXT NOT NULL,\n api_calls_limit INTEGER NOT NULL,\n api_calls_used INTEGER DEFAULT 0,\n last_warning_threshold INTEGER DEFAULT 0, -- 0, 80, 90, or 100\n last_warning_sent_at TEXT,\n created_at TEXT NOT NULL DEFAULT (datetime('now')),\n updated_at TEXT NOT NULL DEFAULT (datetime('now')),\n UNIQUE(customer_id, billing_period_start)\n);\n\n-- Indexes for quota queries\nCREATE INDEX IF NOT EXISTS idx_quotas_customer ON usage_quotas(customer_id);\nCREATE INDEX IF NOT EXISTS idx_quotas_period ON usage_quotas(billing_period_start, billing_period_end);\nCREATE INDEX IF NOT EXISTS idx_quotas_tier ON usage_quotas(license_tier);\n\n-- Individual API call events for detailed tracking\n-- Used for quota enforcement and analytics\nCREATE TABLE IF NOT EXISTS api_call_events (\n id TEXT PRIMARY KEY,\n customer_id TEXT NOT NULL,\n license_key_hash TEXT, -- SHA256 hash of license key for lookup\n tool_name TEXT NOT NULL,\n endpoint TEXT,\n cost INTEGER DEFAULT 1, -- Some operations may cost multiple quota units\n success INTEGER DEFAULT 1, -- 1 for success, 0 for failure\n latency_ms INTEGER,\n session_id TEXT,\n metadata TEXT, -- JSON for additional context\n timestamp TEXT NOT NULL DEFAULT (datetime('now'))\n);\n\n-- Indexes for API call queries\nCREATE INDEX IF NOT EXISTS idx_api_calls_customer ON api_call_events(customer_id);\nCREATE INDEX IF NOT EXISTS idx_api_calls_timestamp ON api_call_events(timestamp);\nCREATE INDEX IF NOT EXISTS idx_api_calls_license ON api_call_events(license_key_hash);\nCREATE INDEX IF NOT EXISTS idx_api_calls_tool ON api_call_events(tool_name);\n\n-- User subscriptions for billing integration\n-- Links customers to Stripe subscriptions\nCREATE TABLE IF NOT EXISTS user_subscriptions (\n id TEXT PRIMARY KEY,\n customer_id TEXT NOT NULL UNIQUE,\n email TEXT NOT NULL,\n tier TEXT NOT NULL CHECK(tier IN ('community', 'individual', 'team', 'enterprise')),\n stripe_customer_id TEXT,\n stripe_subscription_id TEXT,\n stripe_price_id TEXT, -- SMI-1062: Stripe price ID for current plan\n status TEXT NOT NULL CHECK(status IN ('active', 'past_due', 'canceled', 'trialing', 'paused')),\n seat_count INTEGER DEFAULT 1, -- SMI-1067: For team/enterprise seat-based billing\n current_period_start TEXT,\n current_period_end TEXT,\n canceled_at TEXT, -- SMI-1062: When subscription was canceled\n last_active_at TEXT,\n created_at TEXT NOT NULL DEFAULT (datetime('now')),\n updated_at TEXT NOT NULL DEFAULT (datetime('now'))\n);\n\n-- Indexes for subscription queries\nCREATE INDEX IF NOT EXISTS idx_subs_customer ON user_subscriptions(customer_id);\nCREATE INDEX IF NOT EXISTS idx_subs_stripe ON user_subscriptions(stripe_customer_id);\nCREATE INDEX IF NOT EXISTS idx_subs_status ON user_subscriptions(status);\nCREATE INDEX IF NOT EXISTS idx_subs_tier ON user_subscriptions(tier);\nCREATE INDEX IF NOT EXISTS idx_subs_last_active ON user_subscriptions(last_active_at);\n\n-- ============================================================================\n-- Billing Tables (SMI-1062 to SMI-1070 - Phase 6)\n-- ============================================================================\n\n-- Stripe webhook events for idempotent processing\n-- Prevents replay attacks and duplicate event handling\nCREATE TABLE IF NOT EXISTS stripe_webhook_events (\n id TEXT PRIMARY KEY,\n stripe_event_id TEXT UNIQUE NOT NULL,\n event_type TEXT NOT NULL,\n processed_at TEXT NOT NULL DEFAULT (datetime('now')),\n payload TEXT, -- Store full event for debugging/reconciliation\n success INTEGER DEFAULT 1, -- 1 for success, 0 for failure\n error_message TEXT,\n created_at TEXT NOT NULL DEFAULT (datetime('now'))\n);\n\nCREATE INDEX IF NOT EXISTS idx_webhook_events_stripe_id ON stripe_webhook_events(stripe_event_id);\nCREATE INDEX IF NOT EXISTS idx_webhook_events_type ON stripe_webhook_events(event_type);\nCREATE INDEX IF NOT EXISTS idx_webhook_events_processed ON stripe_webhook_events(processed_at);\n\n-- License keys linking subscriptions to JWT tokens\n-- Supports key rotation and revocation\nCREATE TABLE IF NOT EXISTS license_keys (\n id TEXT PRIMARY KEY,\n subscription_id TEXT NOT NULL, -- References user_subscriptions.id\n organization_id TEXT NOT NULL,\n key_jwt TEXT NOT NULL,\n key_hash TEXT NOT NULL, -- SHA256 hash for lookup without exposing key\n key_expiry TEXT NOT NULL,\n is_active INTEGER DEFAULT 1,\n generated_at TEXT NOT NULL DEFAULT (datetime('now')),\n revoked_at TEXT,\n revocation_reason TEXT,\n UNIQUE(key_hash)\n);\n\nCREATE INDEX IF NOT EXISTS idx_license_keys_subscription ON license_keys(subscription_id);\nCREATE INDEX IF NOT EXISTS idx_license_keys_org ON license_keys(organization_id);\nCREATE INDEX IF NOT EXISTS idx_license_keys_active ON license_keys(is_active);\nCREATE INDEX IF NOT EXISTS idx_license_keys_hash ON license_keys(key_hash);\n\n-- Invoices for customer self-service and billing history\nCREATE TABLE IF NOT EXISTS invoices (\n id TEXT PRIMARY KEY,\n customer_id TEXT NOT NULL, -- References user_subscriptions.customer_id\n stripe_invoice_id TEXT UNIQUE NOT NULL,\n subscription_id TEXT, -- References user_subscriptions.id\n amount_cents INTEGER NOT NULL,\n currency TEXT DEFAULT 'usd',\n status TEXT NOT NULL CHECK(status IN ('draft', 'open', 'paid', 'void', 'uncollectible')),\n pdf_url TEXT,\n hosted_invoice_url TEXT,\n invoice_number TEXT,\n paid_at TEXT,\n period_start TEXT,\n period_end TEXT,\n created_at TEXT NOT NULL DEFAULT (datetime('now'))\n);\n\nCREATE INDEX IF NOT EXISTS idx_invoices_customer ON invoices(customer_id);\nCREATE INDEX IF NOT EXISTS idx_invoices_stripe ON invoices(stripe_invoice_id);\nCREATE INDEX IF NOT EXISTS idx_invoices_status ON invoices(status);\nCREATE INDEX IF NOT EXISTS idx_invoices_subscription ON invoices(subscription_id);\n";
15
15
  /**
16
16
  * Apply analytics schema to a database
17
17
  */
@@ -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,4gQAmL5B,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"}
@@ -176,9 +176,12 @@ CREATE TABLE IF NOT EXISTS user_subscriptions (
176
176
  tier TEXT NOT NULL CHECK(tier IN ('community', 'individual', 'team', 'enterprise')),
177
177
  stripe_customer_id TEXT,
178
178
  stripe_subscription_id TEXT,
179
+ stripe_price_id TEXT, -- SMI-1062: Stripe price ID for current plan
179
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
180
182
  current_period_start TEXT,
181
183
  current_period_end TEXT,
184
+ canceled_at TEXT, -- SMI-1062: When subscription was canceled
182
185
  last_active_at TEXT,
183
186
  created_at TEXT NOT NULL DEFAULT (datetime('now')),
184
187
  updated_at TEXT NOT NULL DEFAULT (datetime('now'))
@@ -190,6 +193,71 @@ CREATE INDEX IF NOT EXISTS idx_subs_stripe ON user_subscriptions(stripe_customer
190
193
  CREATE INDEX IF NOT EXISTS idx_subs_status ON user_subscriptions(status);
191
194
  CREATE INDEX IF NOT EXISTS idx_subs_tier ON user_subscriptions(tier);
192
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);
193
261
  `;
194
262
  export function initializeAnalyticsSchema(db) {
195
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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmL/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"}
@@ -24,25 +24,26 @@ declare const TrustTierSchema: z.ZodEnum<{
24
24
  }>;
25
25
  /**
26
26
  * Schema for individual search result from API
27
+ * SMI-1577: Added .optional() and .default() to handle partial API responses
27
28
  */
28
29
  declare const ApiSearchResultSchema: z.ZodObject<{
29
30
  id: z.ZodString;
30
31
  name: z.ZodString;
31
32
  description: z.ZodNullable<z.ZodString>;
32
33
  author: z.ZodNullable<z.ZodString>;
33
- repo_url: z.ZodNullable<z.ZodString>;
34
+ repo_url: z.ZodOptional<z.ZodNullable<z.ZodString>>;
34
35
  quality_score: z.ZodNullable<z.ZodNumber>;
35
- trust_tier: z.ZodEnum<{
36
+ trust_tier: z.ZodDefault<z.ZodEnum<{
36
37
  verified: "verified";
37
38
  community: "community";
38
39
  experimental: "experimental";
39
40
  unknown: "unknown";
40
- }>;
41
- tags: z.ZodArray<z.ZodString>;
42
- stars: z.ZodNullable<z.ZodNumber>;
43
- installable: z.ZodNullable<z.ZodBoolean>;
44
- created_at: z.ZodString;
45
- updated_at: z.ZodString;
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>;
46
47
  }, z.core.$strip>;
47
48
  /**
48
49
  * Schema for telemetry response
@@ -59,19 +60,19 @@ declare const SearchResponseSchema: z.ZodObject<{
59
60
  name: z.ZodString;
60
61
  description: z.ZodNullable<z.ZodString>;
61
62
  author: z.ZodNullable<z.ZodString>;
62
- repo_url: z.ZodNullable<z.ZodString>;
63
+ repo_url: z.ZodOptional<z.ZodNullable<z.ZodString>>;
63
64
  quality_score: z.ZodNullable<z.ZodNumber>;
64
- trust_tier: z.ZodEnum<{
65
+ trust_tier: z.ZodDefault<z.ZodEnum<{
65
66
  verified: "verified";
66
67
  community: "community";
67
68
  experimental: "experimental";
68
69
  unknown: "unknown";
69
- }>;
70
- tags: z.ZodArray<z.ZodString>;
71
- stars: z.ZodNullable<z.ZodNumber>;
72
- installable: z.ZodNullable<z.ZodBoolean>;
73
- created_at: z.ZodString;
74
- updated_at: z.ZodString;
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>;
75
76
  }, z.core.$strip>>;
76
77
  meta: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
77
78
  }, z.core.$strip>;
@@ -81,19 +82,19 @@ declare const SingleSkillResponseSchema: z.ZodObject<{
81
82
  name: z.ZodString;
82
83
  description: z.ZodNullable<z.ZodString>;
83
84
  author: z.ZodNullable<z.ZodString>;
84
- repo_url: z.ZodNullable<z.ZodString>;
85
+ repo_url: z.ZodOptional<z.ZodNullable<z.ZodString>>;
85
86
  quality_score: z.ZodNullable<z.ZodNumber>;
86
- trust_tier: z.ZodEnum<{
87
+ trust_tier: z.ZodDefault<z.ZodEnum<{
87
88
  verified: "verified";
88
89
  community: "community";
89
90
  experimental: "experimental";
90
91
  unknown: "unknown";
91
- }>;
92
- tags: z.ZodArray<z.ZodString>;
93
- stars: z.ZodNullable<z.ZodNumber>;
94
- installable: z.ZodNullable<z.ZodBoolean>;
95
- created_at: z.ZodString;
96
- updated_at: z.ZodString;
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>;
97
98
  }, z.core.$strip>;
98
99
  meta: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
99
100
  }, z.core.$strip>;
@@ -122,20 +123,21 @@ export declare class ApiClientError extends Error {
122
123
  }
123
124
  /**
124
125
  * Search result from API
126
+ * SMI-1577: Made repo_url, created_at, updated_at optional to match schema
125
127
  */
126
128
  export interface ApiSearchResult {
127
129
  id: string;
128
130
  name: string;
129
131
  description: string | null;
130
132
  author: string | null;
131
- repo_url: string | null;
133
+ repo_url?: string | null;
132
134
  quality_score: number | null;
133
135
  trust_tier: TrustTier;
134
136
  tags: string[];
135
- stars: number | null;
136
- installable: boolean | null;
137
- created_at: string;
138
- updated_at: string;
137
+ stars?: number | null;
138
+ installable?: boolean | null;
139
+ created_at?: string;
140
+ updated_at?: string;
139
141
  }
140
142
  /**
141
143
  * Recommendation request
@@ -270,6 +272,8 @@ export declare class SkillsmithApiClient {
270
272
  }>;
271
273
  /**
272
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
273
277
  */
274
278
  static toSkill(result: ApiSearchResult): Skill;
275
279
  }
@@ -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":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAOxE;;GAEG;AACH,QAAA,MAAM,eAAe;;;;;EAA+D,CAAA;AAEpF;;;GAGG;AACH,QAAA,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;iBAazB,CAAA;AAYF;;GAEG;AACH,QAAA,MAAM,uBAAuB;;;;;iBAK3B,CAAA;AAGF,QAAA,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;iBAA0D,CAAA;AACpF,QAAA,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;;;;iBAAiD,CAAA;AAEhF;;GAEG;AACH,MAAM,WAAW,WAAW,CAAC,CAAC;IAC5B,IAAI,EAAE,CAAC,CAAA;IACP,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAC/B;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAClC;AAED;;;GAGG;AACH,qBAAa,cAAe,SAAQ,KAAK;aAGrB,SAAS,EAAE,OAAO;aAClB,UAAU,CAAC,EAAE,MAAM;gBAFnC,OAAO,EAAE,MAAM,EACC,SAAS,GAAE,OAAe,EAC1B,UAAU,CAAC,EAAE,MAAM,YAAA;CAKtC;AAED;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;IACrB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACxB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAA;IAC5B,UAAU,EAAE,SAAS,CAAA;IACrB,IAAI,EAAE,MAAM,EAAE,CAAA;IACd,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACrB,WAAW,CAAC,EAAE,OAAO,GAAG,IAAI,CAAA;IAC5B,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,MAAM,EAAE,CAAA;IACf,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,KAAK,EACD,YAAY,GACZ,eAAe,GACf,iBAAiB,GACjB,YAAY,GACZ,QAAQ,GACR,WAAW,GACX,SAAS,GACT,UAAU,CAAA;IACd,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,YAAY,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CACnC;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,6DAA6D;IAC7D,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,2CAA2C;IAC3C,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,4CAA4C;IAC5C,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,qCAAqC;IACrC,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,2BAA2B;IAC3B,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,+CAA+C;IAC/C,WAAW,CAAC,EAAE,OAAO,CAAA;CACtB;AAaD;;;;;;GAMG;AACH,wBAAgB,mBAAmB,IAAI,MAAM,CAyB5C;AAED;;;;;;;;;;;;GAYG;AACH,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,OAAO,CAAQ;IACvB,OAAO,CAAC,OAAO,CAAoB;IACnC,OAAO,CAAC,OAAO,CAAQ;IACvB,OAAO,CAAC,UAAU,CAAQ;IAC1B,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,WAAW,CAAS;gBAEhB,MAAM,GAAE,eAAoB;IASxC;;OAEG;IACH,SAAS,IAAI,OAAO;IAIpB;;OAEG;IACH,OAAO,CAAC,GAAG;IAMX;;OAEG;IACH,OAAO,CAAC,YAAY;IAcpB;;;;;;;OAOG;YACW,OAAO;IAmHrB;;;;;;OAMG;IACG,MAAM,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,WAAW,CAAC,eAAe,EAAE,CAAC,CAAC;IAkB7E;;;;;;OAMG;IACG,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC;IASjE;;;;;;OAMG;IACG,kBAAkB,CACtB,OAAO,EAAE,qBAAqB,GAC7B,OAAO,CAAC,WAAW,CAAC,eAAe,EAAE,CAAC,CAAC;IAW1C;;;;;;OAMG;IACG,WAAW,CAAC,KAAK,EAAE,cAAc,GAAG,OAAO,CAAC;QAAE,EAAE,EAAE,OAAO,CAAA;KAAE,CAAC;IAkBlE;;;;;;;OAOG;IACG,WAAW,IAAI,OAAO,CAAC;QAC3B,MAAM,EAAE,SAAS,GAAG,UAAU,GAAG,WAAW,CAAA;QAC5C,SAAS,EAAE,MAAM,CAAA;QACjB,OAAO,EAAE,MAAM,CAAA;KAChB,CAAC;IA0DF;;;;OAIG;IACH,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,eAAe,GAAG,KAAK;CAiB/C;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,MAAM,CAAC,EAAE,eAAe,GAAG,mBAAmB,CAE7E;AAGD,OAAO,EACL,qBAAqB,EACrB,oBAAoB,EACpB,yBAAyB,EACzB,uBAAuB,EACvB,eAAe,GAChB,CAAA;AAED,eAAe,mBAAmB,CAAA"}
@@ -22,20 +22,21 @@ import { SkillsmithError, ErrorCodes } from '../errors.js';
22
22
  const TrustTierSchema = z.enum(['verified', 'community', 'experimental', 'unknown']);
23
23
  /**
24
24
  * Schema for individual search result from API
25
+ * SMI-1577: Added .optional() and .default() to handle partial API responses
25
26
  */
26
27
  const ApiSearchResultSchema = z.object({
27
28
  id: z.string(),
28
29
  name: z.string(),
29
30
  description: z.string().nullable(),
30
31
  author: z.string().nullable(),
31
- repo_url: z.string().nullable(),
32
+ repo_url: z.string().nullable().optional(),
32
33
  quality_score: z.number().nullable(),
33
- trust_tier: TrustTierSchema,
34
- tags: z.array(z.string()),
35
- stars: z.number().nullable(),
36
- installable: z.boolean().nullable(),
37
- created_at: z.string(),
38
- updated_at: z.string(),
34
+ trust_tier: TrustTierSchema.default('unknown'),
35
+ tags: z.array(z.string()).default([]),
36
+ stars: z.number().nullable().optional(),
37
+ installable: z.boolean().nullable().optional(),
38
+ created_at: z.string().optional(),
39
+ updated_at: z.string().optional(),
39
40
  });
40
41
  /**
41
42
  * Schema for generic API response wrapper
@@ -388,20 +389,24 @@ export class SkillsmithApiClient {
388
389
  }
389
390
  /**
390
391
  * Convert API result to Skill type
392
+ * SMI-1577: Handle optional fields with sensible defaults
393
+ * Uses epoch timestamp as sentinel for missing dates to avoid data integrity issues
391
394
  */
392
395
  static toSkill(result) {
396
+ // Sentinel value for missing timestamps - clearly indicates unknown date
397
+ const UNKNOWN_DATE = '1970-01-01T00:00:00.000Z';
393
398
  return {
394
399
  id: result.id,
395
400
  name: result.name,
396
401
  description: result.description,
397
402
  author: result.author,
398
- repoUrl: result.repo_url,
403
+ repoUrl: result.repo_url ?? null,
399
404
  qualityScore: result.quality_score,
400
405
  trustTier: result.trust_tier,
401
406
  tags: result.tags || [],
402
407
  installable: result.installable ?? false,
403
- createdAt: result.created_at,
404
- updatedAt: result.updated_at,
408
+ createdAt: result.created_at ?? UNKNOWN_DATE,
409
+ updatedAt: result.updated_at ?? UNKNOWN_DATE,
405
410
  };
406
411
  }
407
412
  }