@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.
- package/dist/.tsbuildinfo +1 -1
- package/dist/src/analysis/types.d.ts +2 -0
- package/dist/src/analysis/types.d.ts.map +1 -1
- package/dist/src/analysis/types.js +13 -1
- package/dist/src/analysis/types.js.map +1 -1
- package/dist/src/analytics/AnalyticsRepository.d.ts +4 -0
- package/dist/src/analytics/AnalyticsRepository.d.ts.map +1 -1
- package/dist/src/analytics/AnalyticsRepository.js +26 -44
- package/dist/src/analytics/AnalyticsRepository.js.map +1 -1
- package/dist/src/analytics/schema.d.ts +1 -1
- package/dist/src/analytics/schema.d.ts.map +1 -1
- package/dist/src/analytics/schema.js +68 -0
- package/dist/src/analytics/schema.js.map +1 -1
- package/dist/src/api/client.d.ts +33 -29
- package/dist/src/api/client.d.ts.map +1 -1
- package/dist/src/api/client.js +15 -10
- package/dist/src/api/client.js.map +1 -1
- package/dist/src/billing/BillingService.d.ts +139 -0
- package/dist/src/billing/BillingService.d.ts.map +1 -0
- package/dist/src/billing/BillingService.js +393 -0
- package/dist/src/billing/BillingService.js.map +1 -0
- package/dist/src/billing/GDPRComplianceService.d.ts +176 -0
- package/dist/src/billing/GDPRComplianceService.d.ts.map +1 -0
- package/dist/src/billing/GDPRComplianceService.js +361 -0
- package/dist/src/billing/GDPRComplianceService.js.map +1 -0
- package/dist/src/billing/StripeClient.d.ts +177 -0
- package/dist/src/billing/StripeClient.d.ts.map +1 -0
- package/dist/src/billing/StripeClient.js +462 -0
- package/dist/src/billing/StripeClient.js.map +1 -0
- package/dist/src/billing/StripeReconciliationJob.d.ts +95 -0
- package/dist/src/billing/StripeReconciliationJob.d.ts.map +1 -0
- package/dist/src/billing/StripeReconciliationJob.js +405 -0
- package/dist/src/billing/StripeReconciliationJob.js.map +1 -0
- package/dist/src/billing/StripeWebhookHandler.d.ts +92 -0
- package/dist/src/billing/StripeWebhookHandler.d.ts.map +1 -0
- package/dist/src/billing/StripeWebhookHandler.js +409 -0
- package/dist/src/billing/StripeWebhookHandler.js.map +1 -0
- package/dist/src/billing/index.d.ts +18 -0
- package/dist/src/billing/index.d.ts.map +1 -0
- package/dist/src/billing/index.js +19 -0
- package/dist/src/billing/index.js.map +1 -0
- package/dist/src/billing/types.d.ts +266 -0
- package/dist/src/billing/types.d.ts.map +1 -0
- package/dist/src/billing/types.js +23 -0
- package/dist/src/billing/types.js.map +1 -0
- package/dist/src/embeddings/hnsw-store.d.ts +568 -0
- package/dist/src/embeddings/hnsw-store.d.ts.map +1 -0
- package/dist/src/embeddings/hnsw-store.js +805 -0
- package/dist/src/embeddings/hnsw-store.js.map +1 -0
- package/dist/src/embeddings/index.d.ts +2 -0
- package/dist/src/embeddings/index.d.ts.map +1 -1
- package/dist/src/embeddings/index.js +2 -0
- package/dist/src/embeddings/index.js.map +1 -1
- package/dist/src/index.d.ts +1 -0
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +2 -0
- package/dist/src/index.js.map +1 -1
- package/dist/src/learning/PatternStore.d.ts +457 -0
- package/dist/src/learning/PatternStore.d.ts.map +1 -0
- package/dist/src/learning/PatternStore.js +893 -0
- package/dist/src/learning/PatternStore.js.map +1 -0
- package/dist/src/learning/ReasoningBankIntegration.d.ts +403 -0
- package/dist/src/learning/ReasoningBankIntegration.d.ts.map +1 -0
- package/dist/src/learning/ReasoningBankIntegration.js +627 -0
- package/dist/src/learning/ReasoningBankIntegration.js.map +1 -0
- package/dist/src/learning/index.d.ts +15 -0
- package/dist/src/learning/index.d.ts.map +1 -0
- package/dist/src/learning/index.js +15 -0
- package/dist/src/learning/index.js.map +1 -0
- package/dist/src/routing/SONARouter.d.ts +154 -0
- package/dist/src/routing/SONARouter.d.ts.map +1 -0
- package/dist/src/routing/SONARouter.js +679 -0
- package/dist/src/routing/SONARouter.js.map +1 -0
- package/dist/src/routing/index.d.ts +9 -0
- package/dist/src/routing/index.d.ts.map +1 -0
- package/dist/src/routing/index.js +10 -0
- package/dist/src/routing/index.js.map +1 -0
- package/dist/src/routing/types.d.ts +331 -0
- package/dist/src/routing/types.d.ts.map +1 -0
- package/dist/src/routing/types.js +203 -0
- package/dist/src/routing/types.js.map +1 -0
- package/dist/src/scripts/__tests__/scan-imported-skills.test.js +5 -0
- package/dist/src/scripts/__tests__/scan-imported-skills.test.js.map +1 -1
- package/dist/src/security/SkillSandbox.d.ts +156 -0
- package/dist/src/security/SkillSandbox.d.ts.map +1 -0
- package/dist/src/security/SkillSandbox.js +303 -0
- package/dist/src/security/SkillSandbox.js.map +1 -0
- package/dist/src/security/index.d.ts +3 -1
- package/dist/src/security/index.d.ts.map +1 -1
- package/dist/src/security/index.js +5 -1
- package/dist/src/security/index.js.map +1 -1
- package/dist/src/security/rate-limiter/presets.d.ts +12 -0
- package/dist/src/security/rate-limiter/presets.d.ts.map +1 -1
- package/dist/src/security/rate-limiter/presets.js +12 -0
- package/dist/src/security/rate-limiter/presets.js.map +1 -1
- package/dist/src/security/sanitization.d.ts +85 -0
- package/dist/src/security/sanitization.d.ts.map +1 -1
- package/dist/src/security/sanitization.js +133 -0
- package/dist/src/security/sanitization.js.map +1 -1
- package/dist/src/security/scanner/SecurityScanner.d.ts +23 -0
- package/dist/src/security/scanner/SecurityScanner.d.ts.map +1 -1
- package/dist/src/security/scanner/SecurityScanner.js +232 -28
- package/dist/src/security/scanner/SecurityScanner.js.map +1 -1
- package/dist/src/security/scanner/patterns.d.ts +13 -0
- package/dist/src/security/scanner/patterns.d.ts.map +1 -1
- package/dist/src/security/scanner/patterns.js +51 -0
- package/dist/src/security/scanner/patterns.js.map +1 -1
- package/dist/src/security/scanner/types.d.ts +13 -1
- package/dist/src/security/scanner/types.d.ts.map +1 -1
- package/dist/src/security/scanner/weights.d.ts.map +1 -1
- package/dist/src/security/scanner/weights.js +1 -0
- package/dist/src/security/scanner/weights.js.map +1 -1
- package/dist/src/session/SessionManager.d.ts +7 -0
- package/dist/src/session/SessionManager.d.ts.map +1 -1
- package/dist/src/session/SessionManager.js +117 -10
- package/dist/src/session/SessionManager.js.map +1 -1
- package/dist/src/sync/SyncEngine.d.ts.map +1 -1
- package/dist/src/sync/SyncEngine.js +52 -32
- package/dist/src/sync/SyncEngine.js.map +1 -1
- package/dist/src/testing/MultiLLMProvider.d.ts +374 -0
- package/dist/src/testing/MultiLLMProvider.d.ts.map +1 -0
- package/dist/src/testing/MultiLLMProvider.js +720 -0
- package/dist/src/testing/MultiLLMProvider.js.map +1 -0
- package/dist/src/testing/index.d.ts +8 -0
- package/dist/src/testing/index.d.ts.map +1 -0
- package/dist/src/testing/index.js +9 -0
- package/dist/src/testing/index.js.map +1 -0
- package/dist/src/types.d.ts +3 -0
- package/dist/src/types.d.ts.map +1 -1
- package/dist/tests/SecurityScanner.test.js +337 -1
- package/dist/tests/SecurityScanner.test.js.map +1 -1
- package/dist/tests/billing/BillingService.test.d.ts +7 -0
- package/dist/tests/billing/BillingService.test.d.ts.map +1 -0
- package/dist/tests/billing/BillingService.test.js +168 -0
- package/dist/tests/billing/BillingService.test.js.map +1 -0
- package/dist/tests/billing/GDPRCompliance.test.d.ts +7 -0
- package/dist/tests/billing/GDPRCompliance.test.d.ts.map +1 -0
- package/dist/tests/billing/GDPRCompliance.test.js +195 -0
- package/dist/tests/billing/GDPRCompliance.test.js.map +1 -0
- package/dist/tests/billing/StripeReconciliation.test.d.ts +7 -0
- package/dist/tests/billing/StripeReconciliation.test.d.ts.map +1 -0
- package/dist/tests/billing/StripeReconciliation.test.js +266 -0
- package/dist/tests/billing/StripeReconciliation.test.js.map +1 -0
- package/dist/tests/billing/stripe-validators.test.d.ts +7 -0
- package/dist/tests/billing/stripe-validators.test.d.ts.map +1 -0
- package/dist/tests/billing/stripe-validators.test.js +107 -0
- package/dist/tests/billing/stripe-validators.test.js.map +1 -0
- package/dist/tests/embeddings/hnsw-store.test.d.ts +7 -0
- package/dist/tests/embeddings/hnsw-store.test.d.ts.map +1 -0
- package/dist/tests/embeddings/hnsw-store.test.js +295 -0
- package/dist/tests/embeddings/hnsw-store.test.js.map +1 -0
- package/dist/tests/integration/neural/e2e-learning.test.d.ts +17 -0
- package/dist/tests/integration/neural/e2e-learning.test.d.ts.map +1 -0
- package/dist/tests/integration/neural/e2e-learning.test.js +238 -0
- package/dist/tests/integration/neural/e2e-learning.test.js.map +1 -0
- package/dist/tests/integration/neural/helpers.d.ts +132 -0
- package/dist/tests/integration/neural/helpers.d.ts.map +1 -0
- package/dist/tests/integration/neural/helpers.js +287 -0
- package/dist/tests/integration/neural/helpers.js.map +1 -0
- package/dist/tests/integration/neural/personalization.test.d.ts +21 -0
- package/dist/tests/integration/neural/personalization.test.d.ts.map +1 -0
- package/dist/tests/integration/neural/personalization.test.js +304 -0
- package/dist/tests/integration/neural/personalization.test.js.map +1 -0
- package/dist/tests/integration/neural/preference-learner.test.d.ts +23 -0
- package/dist/tests/integration/neural/preference-learner.test.d.ts.map +1 -0
- package/dist/tests/integration/neural/preference-learner.test.js +289 -0
- package/dist/tests/integration/neural/preference-learner.test.js.map +1 -0
- package/dist/tests/integration/neural/privacy.test.d.ts +19 -0
- package/dist/tests/integration/neural/privacy.test.d.ts.map +1 -0
- package/dist/tests/integration/neural/privacy.test.js +249 -0
- package/dist/tests/integration/neural/privacy.test.js.map +1 -0
- package/dist/tests/integration/neural/setup.d.ts +175 -0
- package/dist/tests/integration/neural/setup.d.ts.map +1 -0
- package/dist/tests/integration/neural/setup.js +487 -0
- package/dist/tests/integration/neural/setup.js.map +1 -0
- package/dist/tests/integration/neural/signal-collection.test.d.ts +21 -0
- package/dist/tests/integration/neural/signal-collection.test.d.ts.map +1 -0
- package/dist/tests/integration/neural/signal-collection.test.js +232 -0
- package/dist/tests/integration/neural/signal-collection.test.js.map +1 -0
- package/dist/tests/learning/PatternStore.test.d.ts +8 -0
- package/dist/tests/learning/PatternStore.test.d.ts.map +1 -0
- package/dist/tests/learning/PatternStore.test.js +589 -0
- package/dist/tests/learning/PatternStore.test.js.map +1 -0
- package/dist/tests/learning/ReasoningBankIntegration.test.d.ts +8 -0
- package/dist/tests/learning/ReasoningBankIntegration.test.d.ts.map +1 -0
- package/dist/tests/learning/ReasoningBankIntegration.test.js +269 -0
- package/dist/tests/learning/ReasoningBankIntegration.test.js.map +1 -0
- package/dist/tests/routing/SONARouter.test.d.ts +8 -0
- package/dist/tests/routing/SONARouter.test.d.ts.map +1 -0
- package/dist/tests/routing/SONARouter.test.js +400 -0
- package/dist/tests/routing/SONARouter.test.js.map +1 -0
- package/dist/tests/security/ContinuousSecurity.test.js +10 -12
- package/dist/tests/security/ContinuousSecurity.test.js.map +1 -1
- package/dist/tests/security/SkillSandbox.test.d.ts +8 -0
- package/dist/tests/security/SkillSandbox.test.d.ts.map +1 -0
- package/dist/tests/security/SkillSandbox.test.js +321 -0
- package/dist/tests/security/SkillSandbox.test.js.map +1 -0
- package/dist/tests/sync/SyncEngine.test.js +4 -2
- package/dist/tests/sync/SyncEngine.test.js.map +1 -1
- package/dist/tests/testing/MultiLLMProvider.test.d.ts +14 -0
- package/dist/tests/testing/MultiLLMProvider.test.d.ts.map +1 -0
- package/dist/tests/testing/MultiLLMProvider.test.js +438 -0
- package/dist/tests/testing/MultiLLMProvider.test.js.map +1 -0
- 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":"AAAA;;;;;;;;;;GAUG;AAEH;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG,YAAY,GAAG,YAAY,GAAG,QAAQ,GAAG,IAAI,GAAG,MAAM,GAAG,MAAM,CAAA;AAE/F
|
|
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 = [
|
|
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
|
|
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;
|
|
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
|
|
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,
|
|
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
|
|
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"}
|
package/dist/src/api/client.d.ts
CHANGED
|
@@ -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
|
|
133
|
+
repo_url?: string | null;
|
|
132
134
|
quality_score: number | null;
|
|
133
135
|
trust_tier: TrustTier;
|
|
134
136
|
tags: string[];
|
|
135
|
-
stars
|
|
136
|
-
installable
|
|
137
|
-
created_at
|
|
138
|
-
updated_at
|
|
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":"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
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/api/client.ts"],"names":[],"mappings":"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"}
|
package/dist/src/api/client.js
CHANGED
|
@@ -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
|
}
|