@skillsmith/core 0.4.8 → 0.4.10

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 (240) hide show
  1. package/README.md +1 -1
  2. package/dist/.tsbuildinfo +1 -1
  3. package/dist/src/analysis/adapters/java-parsers.d.ts.map +1 -1
  4. package/dist/src/analysis/adapters/java-parsers.js +9 -2
  5. package/dist/src/analysis/adapters/java-parsers.js.map +1 -1
  6. package/dist/src/analytics/AnalyticsRepository.d.ts +1 -1
  7. package/dist/src/analytics/AnalyticsRepository.d.ts.map +1 -1
  8. package/dist/src/analytics/ExperimentService.d.ts +1 -1
  9. package/dist/src/analytics/ExperimentService.d.ts.map +1 -1
  10. package/dist/src/analytics/ROIDashboardService.d.ts +1 -1
  11. package/dist/src/analytics/ROIDashboardService.d.ts.map +1 -1
  12. package/dist/src/analytics/UsageAnalyticsService.d.ts +1 -1
  13. package/dist/src/analytics/UsageAnalyticsService.d.ts.map +1 -1
  14. package/dist/src/analytics/metrics-aggregator.d.ts +1 -1
  15. package/dist/src/analytics/metrics-aggregator.d.ts.map +1 -1
  16. package/dist/src/analytics/schema.d.ts +1 -1
  17. package/dist/src/analytics/schema.d.ts.map +1 -1
  18. package/dist/src/analytics/storage.d.ts.map +1 -1
  19. package/dist/src/analytics/storage.js +2 -2
  20. package/dist/src/analytics/storage.js.map +1 -1
  21. package/dist/src/api/client.d.ts +1 -0
  22. package/dist/src/api/client.d.ts.map +1 -1
  23. package/dist/src/api/client.js +14 -7
  24. package/dist/src/api/client.js.map +1 -1
  25. package/dist/src/api/schemas.d.ts +17 -10
  26. package/dist/src/api/schemas.d.ts.map +1 -1
  27. package/dist/src/api/schemas.js +9 -2
  28. package/dist/src/api/schemas.js.map +1 -1
  29. package/dist/src/billing/BillingService.d.ts.map +1 -1
  30. package/dist/src/billing/BillingService.js.map +1 -1
  31. package/dist/src/billing/BillingService.types.d.ts +2 -2
  32. package/dist/src/billing/BillingService.types.d.ts.map +1 -1
  33. package/dist/src/billing/GDPRComplianceService.d.ts.map +1 -1
  34. package/dist/src/billing/GDPRComplianceService.js.map +1 -1
  35. package/dist/src/billing/StripeReconciliationJob.d.ts.map +1 -1
  36. package/dist/src/billing/StripeReconciliationJob.js.map +1 -1
  37. package/dist/src/billing/StripeWebhookHandler.d.ts.map +1 -1
  38. package/dist/src/billing/StripeWebhookHandler.js.map +1 -1
  39. package/dist/src/billing/gdpr-types.d.ts +2 -2
  40. package/dist/src/billing/gdpr-types.d.ts.map +1 -1
  41. package/dist/src/billing/reconciliation-types.d.ts +2 -2
  42. package/dist/src/billing/reconciliation-types.d.ts.map +1 -1
  43. package/dist/src/billing/webhook-handlers.d.ts +4 -4
  44. package/dist/src/billing/webhook-handlers.d.ts.map +1 -1
  45. package/dist/src/billing/webhook-handlers.js.map +1 -1
  46. package/dist/src/billing/webhook-types.d.ts +2 -2
  47. package/dist/src/billing/webhook-types.d.ts.map +1 -1
  48. package/dist/src/cache/TieredCache.d.ts.map +1 -1
  49. package/dist/src/cache/TieredCache.js +2 -2
  50. package/dist/src/cache/TieredCache.js.map +1 -1
  51. package/dist/src/cache/sqlite.d.ts.map +1 -1
  52. package/dist/src/cache/sqlite.js +5 -4
  53. package/dist/src/cache/sqlite.js.map +1 -1
  54. package/dist/src/db/createDatabase.d.ts +86 -0
  55. package/dist/src/db/createDatabase.d.ts.map +1 -0
  56. package/dist/src/db/createDatabase.js +139 -0
  57. package/dist/src/db/createDatabase.js.map +1 -0
  58. package/dist/src/db/database-interface.d.ts +141 -0
  59. package/dist/src/db/database-interface.d.ts.map +1 -0
  60. package/dist/src/db/database-interface.js +14 -0
  61. package/dist/src/db/database-interface.js.map +1 -0
  62. package/dist/src/db/drivers/betterSqlite3Driver.d.ts +48 -0
  63. package/dist/src/db/drivers/betterSqlite3Driver.d.ts.map +1 -0
  64. package/dist/src/db/drivers/betterSqlite3Driver.js +138 -0
  65. package/dist/src/db/drivers/betterSqlite3Driver.js.map +1 -0
  66. package/dist/src/db/drivers/index.d.ts +8 -0
  67. package/dist/src/db/drivers/index.d.ts.map +1 -0
  68. package/dist/src/db/drivers/index.js +8 -0
  69. package/dist/src/db/drivers/index.js.map +1 -0
  70. package/dist/src/db/drivers/sqljsDriver.d.ts +91 -0
  71. package/dist/src/db/drivers/sqljsDriver.d.ts.map +1 -0
  72. package/dist/src/db/drivers/sqljsDriver.js +335 -0
  73. package/dist/src/db/drivers/sqljsDriver.js.map +1 -0
  74. package/dist/src/db/migration.d.ts +1 -1
  75. package/dist/src/db/migration.d.ts.map +1 -1
  76. package/dist/src/db/quarantine-schema.d.ts +1 -1
  77. package/dist/src/db/quarantine-schema.d.ts.map +1 -1
  78. package/dist/src/db/schema.d.ts +22 -2
  79. package/dist/src/db/schema.d.ts.map +1 -1
  80. package/dist/src/db/schema.js +55 -3
  81. package/dist/src/db/schema.js.map +1 -1
  82. package/dist/src/embeddings/hnsw-store.js +2 -2
  83. package/dist/src/embeddings/hnsw-store.js.map +1 -1
  84. package/dist/src/embeddings/index.d.ts.map +1 -1
  85. package/dist/src/embeddings/index.js +2 -2
  86. package/dist/src/embeddings/index.js.map +1 -1
  87. package/dist/src/exports/repositories.d.ts +4 -1
  88. package/dist/src/exports/repositories.d.ts.map +1 -1
  89. package/dist/src/exports/repositories.js +9 -3
  90. package/dist/src/exports/repositories.js.map +1 -1
  91. package/dist/src/exports/services.d.ts +1 -0
  92. package/dist/src/exports/services.d.ts.map +1 -1
  93. package/dist/src/exports/services.js +4 -0
  94. package/dist/src/exports/services.js.map +1 -1
  95. package/dist/src/index.d.ts +4 -0
  96. package/dist/src/index.d.ts.map +1 -1
  97. package/dist/src/index.js +8 -0
  98. package/dist/src/index.js.map +1 -1
  99. package/dist/src/indexer/SkillParser.d.ts +20 -0
  100. package/dist/src/indexer/SkillParser.d.ts.map +1 -1
  101. package/dist/src/indexer/SkillParser.js +58 -0
  102. package/dist/src/indexer/SkillParser.js.map +1 -1
  103. package/dist/src/learning/PatternStore.d.ts.map +1 -1
  104. package/dist/src/learning/PatternStore.js +2 -7
  105. package/dist/src/learning/PatternStore.js.map +1 -1
  106. package/dist/src/learning/PatternStore.queries.d.ts +17 -17
  107. package/dist/src/learning/PatternStore.queries.d.ts.map +1 -1
  108. package/dist/src/learning/PatternStore.queries.js.map +1 -1
  109. package/dist/src/repositories/CacheRepository.d.ts +1 -1
  110. package/dist/src/repositories/CacheRepository.d.ts.map +1 -1
  111. package/dist/src/repositories/IndexerRepository.d.ts +1 -1
  112. package/dist/src/repositories/IndexerRepository.d.ts.map +1 -1
  113. package/dist/src/repositories/SkillRepository.d.ts +1 -1
  114. package/dist/src/repositories/SkillRepository.d.ts.map +1 -1
  115. package/dist/src/repositories/SyncConfigRepository.d.ts +1 -1
  116. package/dist/src/repositories/SyncConfigRepository.d.ts.map +1 -1
  117. package/dist/src/repositories/SyncHistoryRepository.d.ts +1 -1
  118. package/dist/src/repositories/SyncHistoryRepository.d.ts.map +1 -1
  119. package/dist/src/repositories/quarantine/QuarantineRepository.d.ts +1 -1
  120. package/dist/src/repositories/quarantine/QuarantineRepository.d.ts.map +1 -1
  121. package/dist/src/repositories/quarantine/QuarantineRepository.js +4 -1
  122. package/dist/src/repositories/quarantine/QuarantineRepository.js.map +1 -1
  123. package/dist/src/scripts/merge-skills.d.ts.map +1 -1
  124. package/dist/src/scripts/merge-skills.js +2 -2
  125. package/dist/src/scripts/merge-skills.js.map +1 -1
  126. package/dist/src/scripts/review-lenny-skills.js +2 -2
  127. package/dist/src/scripts/review-lenny-skills.js.map +1 -1
  128. package/dist/src/scripts/validation/types.d.ts +2 -2
  129. package/dist/src/search/hybrid.d.ts.map +1 -1
  130. package/dist/src/search/hybrid.js +2 -2
  131. package/dist/src/search/hybrid.js.map +1 -1
  132. package/dist/src/security/AuditLogger.d.ts +1 -1
  133. package/dist/src/security/AuditLogger.d.ts.map +1 -1
  134. package/dist/src/security/audit-types.d.ts +2 -2
  135. package/dist/src/security/audit-types.d.ts.map +1 -1
  136. package/dist/src/security/audit-types.js.map +1 -1
  137. package/dist/src/security/sanitization.d.ts.map +1 -1
  138. package/dist/src/security/sanitization.js +25 -17
  139. package/dist/src/security/sanitization.js.map +1 -1
  140. package/dist/src/services/SearchService.d.ts +1 -1
  141. package/dist/src/services/SearchService.d.ts.map +1 -1
  142. package/dist/src/services/TransformationService.d.ts +1 -1
  143. package/dist/src/services/TransformationService.d.ts.map +1 -1
  144. package/dist/src/services/index.d.ts +9 -0
  145. package/dist/src/services/index.d.ts.map +1 -0
  146. package/dist/src/services/index.js +10 -0
  147. package/dist/src/services/index.js.map +1 -0
  148. package/dist/src/services/quarantine/QuarantineService.d.ts +149 -0
  149. package/dist/src/services/quarantine/QuarantineService.d.ts.map +1 -0
  150. package/dist/src/services/quarantine/QuarantineService.js +406 -0
  151. package/dist/src/services/quarantine/QuarantineService.js.map +1 -0
  152. package/dist/src/services/quarantine/index.d.ts +10 -0
  153. package/dist/src/services/quarantine/index.d.ts.map +1 -0
  154. package/dist/src/services/quarantine/index.js +14 -0
  155. package/dist/src/services/quarantine/index.js.map +1 -0
  156. package/dist/src/services/quarantine/types.d.ts +127 -0
  157. package/dist/src/services/quarantine/types.d.ts.map +1 -0
  158. package/dist/src/services/quarantine/types.js +59 -0
  159. package/dist/src/services/quarantine/types.js.map +1 -0
  160. package/dist/src/types/skill.d.ts +6 -1
  161. package/dist/src/types/skill.d.ts.map +1 -1
  162. package/dist/src/types/skill.js.map +1 -1
  163. package/dist/src/types.d.ts +1 -1
  164. package/dist/src/types.d.ts.map +1 -1
  165. package/dist/src/utils/github-url.d.ts +57 -0
  166. package/dist/src/utils/github-url.d.ts.map +1 -0
  167. package/dist/src/utils/github-url.js +88 -0
  168. package/dist/src/utils/github-url.js.map +1 -0
  169. package/dist/src/utils/index.d.ts +2 -0
  170. package/dist/src/utils/index.d.ts.map +1 -1
  171. package/dist/src/utils/index.js +4 -0
  172. package/dist/src/utils/index.js.map +1 -1
  173. package/dist/src/utils/safe-fs.d.ts +63 -0
  174. package/dist/src/utils/safe-fs.d.ts.map +1 -0
  175. package/dist/src/utils/safe-fs.js +119 -0
  176. package/dist/src/utils/safe-fs.js.map +1 -0
  177. package/dist/src/validation/input-validators.d.ts.map +1 -1
  178. package/dist/src/validation/input-validators.js +11 -4
  179. package/dist/src/validation/input-validators.js.map +1 -1
  180. package/dist/tests/Analytics.integration.test.js +2 -2
  181. package/dist/tests/Analytics.integration.test.js.map +1 -1
  182. package/dist/tests/AnalyticsRepository.test.js +2 -2
  183. package/dist/tests/AnalyticsRepository.test.js.map +1 -1
  184. package/dist/tests/AuditLogger.test.js.map +1 -1
  185. package/dist/tests/ExperimentService.test.js +2 -2
  186. package/dist/tests/ExperimentService.test.js.map +1 -1
  187. package/dist/tests/QuarantineRepository.test.js +39 -2
  188. package/dist/tests/QuarantineRepository.test.js.map +1 -1
  189. package/dist/tests/ROIDashboardService.test.js +2 -2
  190. package/dist/tests/ROIDashboardService.test.js.map +1 -1
  191. package/dist/tests/UsageAnalyticsService.test.js +2 -2
  192. package/dist/tests/UsageAnalyticsService.test.js.map +1 -1
  193. package/dist/tests/analytics/metrics-aggregator.test.js +2 -2
  194. package/dist/tests/analytics/metrics-aggregator.test.js.map +1 -1
  195. package/dist/tests/analytics/metrics-exporter.test.js +2 -2
  196. package/dist/tests/analytics/metrics-exporter.test.js.map +1 -1
  197. package/dist/tests/api/client.structural-typing.test.d.ts +11 -0
  198. package/dist/tests/api/client.structural-typing.test.d.ts.map +1 -0
  199. package/dist/tests/api/client.structural-typing.test.js +209 -0
  200. package/dist/tests/api/client.structural-typing.test.js.map +1 -0
  201. package/dist/tests/billing/BillingService.test.js +2 -2
  202. package/dist/tests/billing/BillingService.test.js.map +1 -1
  203. package/dist/tests/billing/GDPRCompliance.test.js +2 -2
  204. package/dist/tests/billing/GDPRCompliance.test.js.map +1 -1
  205. package/dist/tests/billing/StripeReconciliation.test.js +2 -2
  206. package/dist/tests/billing/StripeReconciliation.test.js.map +1 -1
  207. package/dist/tests/db/database-abstraction.test.d.ts +8 -0
  208. package/dist/tests/db/database-abstraction.test.d.ts.map +1 -0
  209. package/dist/tests/db/database-abstraction.test.js +208 -0
  210. package/dist/tests/db/database-abstraction.test.js.map +1 -0
  211. package/dist/tests/db/fts5-support.test.d.ts +14 -0
  212. package/dist/tests/db/fts5-support.test.d.ts.map +1 -0
  213. package/dist/tests/db/fts5-support.test.js +128 -0
  214. package/dist/tests/db/fts5-support.test.js.map +1 -0
  215. package/dist/tests/db/schema-async.test.d.ts +9 -0
  216. package/dist/tests/db/schema-async.test.d.ts.map +1 -0
  217. package/dist/tests/db/schema-async.test.js +302 -0
  218. package/dist/tests/db/schema-async.test.js.map +1 -0
  219. package/dist/tests/db/sqljs-driver.test.d.ts +8 -0
  220. package/dist/tests/db/sqljs-driver.test.d.ts.map +1 -0
  221. package/dist/tests/db/sqljs-driver.test.js +323 -0
  222. package/dist/tests/db/sqljs-driver.test.js.map +1 -0
  223. package/dist/tests/edge-cases/EdgeCases.test.js +5 -2
  224. package/dist/tests/edge-cases/EdgeCases.test.js.map +1 -1
  225. package/dist/tests/integration/QuarantineService.test.d.ts +11 -0
  226. package/dist/tests/integration/QuarantineService.test.d.ts.map +1 -0
  227. package/dist/tests/integration/QuarantineService.test.js +378 -0
  228. package/dist/tests/integration/QuarantineService.test.js.map +1 -0
  229. package/dist/tests/schema.test.js.map +1 -1
  230. package/dist/tests/scripts/import-to-database.test.js +7 -7
  231. package/dist/tests/scripts/import-to-database.test.js.map +1 -1
  232. package/dist/tests/unit/check-references.test.d.ts +2 -0
  233. package/dist/tests/unit/check-references.test.d.ts.map +1 -0
  234. package/dist/tests/unit/check-references.test.js +118 -0
  235. package/dist/tests/unit/check-references.test.js.map +1 -0
  236. package/dist/tests/utils/safe-fs.test.d.ts +12 -0
  237. package/dist/tests/utils/safe-fs.test.d.ts.map +1 -0
  238. package/dist/tests/utils/safe-fs.test.js +116 -0
  239. package/dist/tests/utils/safe-fs.test.js.map +1 -0
  240. package/package.json +16 -10
@@ -1 +1 @@
1
- {"version":3,"file":"skill.d.ts","sourceRoot":"","sources":["../../../src/types/skill.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"skill.d.ts","sourceRoot":"","sources":["../../../src/types/skill.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"skill.js","sourceRoot":"","sources":["../../../src/types/skill.ts"],"names":[],"mappings":"AAAA;;GAEG;AAmBH;;GAEG;AACH,MAAM,CAAC,MAAM,WAAW,GAAyB;IAC/C,cAAc;IACd,SAAS;IACT,eAAe;IACf,UAAU;IACV,UAAU;IACV,qBAAqB;CACb,CAAA"}
1
+ {"version":3,"file":"skill.js","sourceRoot":"","sources":["../../../src/types/skill.ts"],"names":[],"mappings":"AAAA;;GAEG;AAwBH;;GAEG;AACH,MAAM,CAAC,MAAM,WAAW,GAAyB;IAC/C,cAAc;IACd,SAAS;IACT,eAAe;IACf,UAAU;IACV,UAAU;IACV,qBAAqB;CACb,CAAA"}
@@ -14,7 +14,7 @@ export declare const TrustTierDescriptions: Record<TrustTier, string>;
14
14
  /**
15
15
  * Skill categories
16
16
  */
17
- export type SkillCategory = 'development' | 'testing' | 'documentation' | 'devops' | 'database' | 'security' | 'productivity' | 'integration' | 'ai-ml' | 'other';
17
+ export type SkillCategory = 'development' | 'testing' | 'documentation' | 'devops' | 'database' | 'security' | 'productivity' | 'integration' | 'ai-ml' | 'science' | 'other';
18
18
  /**
19
19
  * Score breakdown for skill quality assessment
20
20
  */
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,57 @@
1
+ /**
2
+ * GitHub URL Parsing Utilities
3
+ * @module @skillsmith/core/utils/github-url
4
+ *
5
+ * SMI-2171: Extracted from mcp-server for shared use across codebase.
6
+ * Used by:
7
+ * - packages/mcp-server/src/tools/install.helpers.ts (skill installation)
8
+ * - scripts/batch-transform-skills.ts (batch transformation)
9
+ */
10
+ /**
11
+ * Parsed repository URL components
12
+ */
13
+ export interface ParsedRepoUrl {
14
+ /** GitHub username or organization */
15
+ owner: string;
16
+ /** Repository name */
17
+ repo: string;
18
+ /** Path within the repository (e.g., "skills/commit" for monorepo skills) */
19
+ path: string;
20
+ /** Branch name (defaults to "main" if not specified) */
21
+ branch: string;
22
+ }
23
+ /**
24
+ * Parse repo_url from registry to extract GitHub components.
25
+ *
26
+ * Handles various URL formats:
27
+ * - Plain repo: `https://github.com/owner/repo`
28
+ * - Tree path: `https://github.com/owner/repo/tree/branch/path`
29
+ * - Blob path: `https://github.com/owner/repo/blob/branch/path`
30
+ *
31
+ * @example
32
+ * ```typescript
33
+ * // Plain repo URL
34
+ * parseRepoUrl('https://github.com/user/skill')
35
+ * // => { owner: 'user', repo: 'skill', path: '', branch: 'main' }
36
+ *
37
+ * // Monorepo skill with tree path
38
+ * parseRepoUrl('https://github.com/ruvnet/claude-code/tree/main/skills/commit')
39
+ * // => { owner: 'ruvnet', repo: 'claude-code', path: 'skills/commit', branch: 'main' }
40
+ * ```
41
+ *
42
+ * @param repoUrl - GitHub repository URL
43
+ * @returns Parsed URL components
44
+ * @throws Error if hostname is not GitHub
45
+ *
46
+ * @since SMI-1491
47
+ * @see SMI-2171 - Extracted to @skillsmith/core for shared use
48
+ */
49
+ export declare function parseRepoUrl(repoUrl: string): ParsedRepoUrl;
50
+ /**
51
+ * Check if a URL is a valid GitHub repository URL
52
+ *
53
+ * @param url - URL to check
54
+ * @returns true if the URL is a valid GitHub URL
55
+ */
56
+ export declare function isGitHubUrl(url: string): boolean;
57
+ //# sourceMappingURL=github-url.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"github-url.d.ts","sourceRoot":"","sources":["../../../src/utils/github-url.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAMH;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,sCAAsC;IACtC,KAAK,EAAE,MAAM,CAAA;IACb,sBAAsB;IACtB,IAAI,EAAE,MAAM,CAAA;IACZ,6EAA6E;IAC7E,IAAI,EAAE,MAAM,CAAA;IACZ,wDAAwD;IACxD,MAAM,EAAE,MAAM,CAAA;CACf;AAgBD;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,aAAa,CAiC3D;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAOhD"}
@@ -0,0 +1,88 @@
1
+ /**
2
+ * GitHub URL Parsing Utilities
3
+ * @module @skillsmith/core/utils/github-url
4
+ *
5
+ * SMI-2171: Extracted from mcp-server for shared use across codebase.
6
+ * Used by:
7
+ * - packages/mcp-server/src/tools/install.helpers.ts (skill installation)
8
+ * - scripts/batch-transform-skills.ts (batch transformation)
9
+ */
10
+ // ============================================================================
11
+ // Constants
12
+ // ============================================================================
13
+ /**
14
+ * Allowed hostnames for skill installation
15
+ * SMI-1533: Restrict to trusted code hosting platforms
16
+ */
17
+ const ALLOWED_HOSTS = ['github.com', 'www.github.com'];
18
+ // ============================================================================
19
+ // Functions
20
+ // ============================================================================
21
+ /**
22
+ * Parse repo_url from registry to extract GitHub components.
23
+ *
24
+ * Handles various URL formats:
25
+ * - Plain repo: `https://github.com/owner/repo`
26
+ * - Tree path: `https://github.com/owner/repo/tree/branch/path`
27
+ * - Blob path: `https://github.com/owner/repo/blob/branch/path`
28
+ *
29
+ * @example
30
+ * ```typescript
31
+ * // Plain repo URL
32
+ * parseRepoUrl('https://github.com/user/skill')
33
+ * // => { owner: 'user', repo: 'skill', path: '', branch: 'main' }
34
+ *
35
+ * // Monorepo skill with tree path
36
+ * parseRepoUrl('https://github.com/ruvnet/claude-code/tree/main/skills/commit')
37
+ * // => { owner: 'ruvnet', repo: 'claude-code', path: 'skills/commit', branch: 'main' }
38
+ * ```
39
+ *
40
+ * @param repoUrl - GitHub repository URL
41
+ * @returns Parsed URL components
42
+ * @throws Error if hostname is not GitHub
43
+ *
44
+ * @since SMI-1491
45
+ * @see SMI-2171 - Extracted to @skillsmith/core for shared use
46
+ */
47
+ export function parseRepoUrl(repoUrl) {
48
+ const url = new URL(repoUrl);
49
+ // SMI-1533: Validate hostname to prevent fetching from malicious sources
50
+ if (!ALLOWED_HOSTS.includes(url.hostname.toLowerCase())) {
51
+ throw new Error(`Invalid repository host: ${url.hostname}. ` +
52
+ `Only GitHub repositories are supported (${ALLOWED_HOSTS.join(', ')})`);
53
+ }
54
+ const parts = url.pathname.split('/').filter(Boolean);
55
+ const owner = parts[0];
56
+ const repo = parts[1];
57
+ // /owner/repo (skill at repo root)
58
+ if (parts.length === 2) {
59
+ return { owner, repo, path: '', branch: 'main' };
60
+ }
61
+ // /owner/repo/tree/branch/path... or /owner/repo/blob/branch/path...
62
+ if (parts[2] === 'tree' || parts[2] === 'blob') {
63
+ return {
64
+ owner,
65
+ repo,
66
+ branch: parts[3],
67
+ path: parts.slice(4).join('/'),
68
+ };
69
+ }
70
+ // Unknown format - assume path starts at index 2, default to main branch
71
+ return { owner, repo, path: parts.slice(2).join('/'), branch: 'main' };
72
+ }
73
+ /**
74
+ * Check if a URL is a valid GitHub repository URL
75
+ *
76
+ * @param url - URL to check
77
+ * @returns true if the URL is a valid GitHub URL
78
+ */
79
+ export function isGitHubUrl(url) {
80
+ try {
81
+ const parsed = new URL(url);
82
+ return ALLOWED_HOSTS.includes(parsed.hostname.toLowerCase());
83
+ }
84
+ catch {
85
+ return false;
86
+ }
87
+ }
88
+ //# sourceMappingURL=github-url.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"github-url.js","sourceRoot":"","sources":["../../../src/utils/github-url.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAoBH,+EAA+E;AAC/E,YAAY;AACZ,+EAA+E;AAE/E;;;GAGG;AACH,MAAM,aAAa,GAAG,CAAC,YAAY,EAAE,gBAAgB,CAAC,CAAA;AAEtD,+EAA+E;AAC/E,YAAY;AACZ,+EAA+E;AAE/E;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,MAAM,UAAU,YAAY,CAAC,OAAe;IAC1C,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,CAAA;IAE5B,yEAAyE;IACzE,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC;QACxD,MAAM,IAAI,KAAK,CACb,4BAA4B,GAAG,CAAC,QAAQ,IAAI;YAC1C,2CAA2C,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CACzE,CAAA;IACH,CAAC;IAED,MAAM,KAAK,GAAG,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;IAErD,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAA;IACtB,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAA;IAErB,mCAAmC;IACnC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,CAAA;IAClD,CAAC;IAED,qEAAqE;IACrE,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,MAAM,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,MAAM,EAAE,CAAC;QAC/C,OAAO;YACL,KAAK;YACL,IAAI;YACJ,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;YAChB,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;SAC/B,CAAA;IACH,CAAC;IAED,yEAAyE;IACzE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAA;AACxE,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,WAAW,CAAC,GAAW;IACrC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAA;QAC3B,OAAO,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAA;IAC9D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAA;IACd,CAAC;AACH,CAAC"}
@@ -4,4 +4,6 @@
4
4
  export { logger, createLogger, silentLogger, type Logger } from './logger.js';
5
5
  export { withRetry, fetchWithRetry, isTransientError, isRetryableStatus, parseRetryAfter, RetryExhaustedError, DEFAULT_RETRY_CONFIG, type RetryConfig, } from './retry.js';
6
6
  export { checkForUpdates, formatUpdateNotification, type VersionCheckResult, } from './version-check.js';
7
+ export { parseRepoUrl, isGitHubUrl, type ParsedRepoUrl } from './github-url.js';
8
+ export { safeWriteFile, SymlinkError, HardlinkError } from './safe-fs.js';
7
9
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,YAAY,EAAE,KAAK,MAAM,EAAE,MAAM,aAAa,CAAA;AAC7E,OAAO,EACL,SAAS,EACT,cAAc,EACd,gBAAgB,EAChB,iBAAiB,EACjB,eAAe,EACf,mBAAmB,EACnB,oBAAoB,EACpB,KAAK,WAAW,GACjB,MAAM,YAAY,CAAA;AAGnB,OAAO,EACL,eAAe,EACf,wBAAwB,EACxB,KAAK,kBAAkB,GACxB,MAAM,oBAAoB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,YAAY,EAAE,KAAK,MAAM,EAAE,MAAM,aAAa,CAAA;AAC7E,OAAO,EACL,SAAS,EACT,cAAc,EACd,gBAAgB,EAChB,iBAAiB,EACjB,eAAe,EACf,mBAAmB,EACnB,oBAAoB,EACpB,KAAK,WAAW,GACjB,MAAM,YAAY,CAAA;AAGnB,OAAO,EACL,eAAe,EACf,wBAAwB,EACxB,KAAK,kBAAkB,GACxB,MAAM,oBAAoB,CAAA;AAG3B,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,KAAK,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAG/E,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA"}
@@ -5,4 +5,8 @@ export { logger, createLogger, silentLogger } from './logger.js';
5
5
  export { withRetry, fetchWithRetry, isTransientError, isRetryableStatus, parseRetryAfter, RetryExhaustedError, DEFAULT_RETRY_CONFIG, } from './retry.js';
6
6
  // SMI-1952: Version check for auto-update notifications
7
7
  export { checkForUpdates, formatUpdateNotification, } from './version-check.js';
8
+ // SMI-2171: GitHub URL parsing utilities
9
+ export { parseRepoUrl, isGitHubUrl } from './github-url.js';
10
+ // SMI-2274: Safe filesystem operations (symlink protection)
11
+ export { safeWriteFile, SymlinkError, HardlinkError } from './safe-fs.js';
8
12
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,YAAY,EAAe,MAAM,aAAa,CAAA;AAC7E,OAAO,EACL,SAAS,EACT,cAAc,EACd,gBAAgB,EAChB,iBAAiB,EACjB,eAAe,EACf,mBAAmB,EACnB,oBAAoB,GAErB,MAAM,YAAY,CAAA;AAEnB,wDAAwD;AACxD,OAAO,EACL,eAAe,EACf,wBAAwB,GAEzB,MAAM,oBAAoB,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,YAAY,EAAe,MAAM,aAAa,CAAA;AAC7E,OAAO,EACL,SAAS,EACT,cAAc,EACd,gBAAgB,EAChB,iBAAiB,EACjB,eAAe,EACf,mBAAmB,EACnB,oBAAoB,GAErB,MAAM,YAAY,CAAA;AAEnB,wDAAwD;AACxD,OAAO,EACL,eAAe,EACf,wBAAwB,GAEzB,MAAM,oBAAoB,CAAA;AAE3B,yCAAyC;AACzC,OAAO,EAAE,YAAY,EAAE,WAAW,EAAsB,MAAM,iBAAiB,CAAA;AAE/E,4DAA4D;AAC5D,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA"}
@@ -0,0 +1,63 @@
1
+ /**
2
+ * SMI-2274: Safe filesystem operations
3
+ * @module @skillsmith/core/utils/safe-fs
4
+ *
5
+ * Provides symlink-safe file write operations to prevent
6
+ * path traversal attacks via symlink substitution.
7
+ *
8
+ * Attack scenario:
9
+ * 1. Attacker creates a symlink at ~/.claude/skills/evil -> /etc/passwd
10
+ * 2. Install tool writes SKILL.md content to that path
11
+ * 3. Content overwrites /etc/passwd instead of skill file
12
+ *
13
+ * Defense:
14
+ * - SMI-2285: Uses O_NOFOLLOW to atomically refuse symlinks (eliminates TOCTOU race)
15
+ * - SMI-2290: Checks nlink count to detect hardlinks
16
+ * - SMI-2288: Properly handles string encoding options for permissions
17
+ */
18
+ import type { WriteFileOptions } from 'fs';
19
+ /**
20
+ * Error thrown when a symlink is detected at a write destination.
21
+ */
22
+ export declare class SymlinkError extends Error {
23
+ readonly filePath: string;
24
+ constructor(filePath: string);
25
+ }
26
+ /**
27
+ * Error thrown when a hardlinked file is detected at a write destination.
28
+ * SMI-2290: Hardlinks can alias files, allowing writes to bypass symlink checks.
29
+ */
30
+ export declare class HardlinkError extends Error {
31
+ readonly filePath: string;
32
+ constructor(filePath: string);
33
+ }
34
+ /**
35
+ * Write a file safely, refusing to write if the destination is a symlink or hardlink.
36
+ *
37
+ * SMI-2285: Uses O_NOFOLLOW to atomically refuse symlinks, eliminating the
38
+ * TOCTOU race condition in the previous lstat-then-write approach.
39
+ * SMI-2290: Checks nlink count to detect hardlinks before writing.
40
+ * SMI-2288: Properly extracts mode from string options (encoding strings).
41
+ *
42
+ * @param filePath - Absolute path to write to
43
+ * @param content - File content (string or Buffer)
44
+ * @param options - Optional fs.writeFile options (encoding, mode, flag) or encoding string
45
+ * @throws {SymlinkError} if the destination is a symlink
46
+ * @throws {HardlinkError} if the destination has multiple hardlinks
47
+ *
48
+ * @example
49
+ * ```typescript
50
+ * import { safeWriteFile } from '@skillsmith/core'
51
+ *
52
+ * // Safe write - rejects symlinks and hardlinks
53
+ * await safeWriteFile('/path/to/file.md', content)
54
+ *
55
+ * // With explicit permissions
56
+ * await safeWriteFile('/path/to/file.md', content, { mode: 0o644 })
57
+ *
58
+ * // With encoding string (uses default 0o644 permissions)
59
+ * await safeWriteFile('/path/to/file.md', content, 'utf-8')
60
+ * ```
61
+ */
62
+ export declare function safeWriteFile(filePath: string, content: string | Buffer, options?: WriteFileOptions | string): Promise<void>;
63
+ //# sourceMappingURL=safe-fs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"safe-fs.d.ts","sourceRoot":"","sources":["../../../src/utils/safe-fs.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAGH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,IAAI,CAAA;AAW1C;;GAEG;AACH,qBAAa,YAAa,SAAQ,KAAK;IACrC,SAAgB,QAAQ,EAAE,MAAM,CAAA;gBACpB,QAAQ,EAAE,MAAM;CAK7B;AAED;;;GAGG;AACH,qBAAa,aAAc,SAAQ,KAAK;IACtC,SAAgB,QAAQ,EAAE,MAAM,CAAA;gBACpB,QAAQ,EAAE,MAAM;CAK7B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,wBAAsB,aAAa,CACjC,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,GAAG,MAAM,EACxB,OAAO,CAAC,EAAE,gBAAgB,GAAG,MAAM,GAClC,OAAO,CAAC,IAAI,CAAC,CA6Cf"}
@@ -0,0 +1,119 @@
1
+ /**
2
+ * SMI-2274: Safe filesystem operations
3
+ * @module @skillsmith/core/utils/safe-fs
4
+ *
5
+ * Provides symlink-safe file write operations to prevent
6
+ * path traversal attacks via symlink substitution.
7
+ *
8
+ * Attack scenario:
9
+ * 1. Attacker creates a symlink at ~/.claude/skills/evil -> /etc/passwd
10
+ * 2. Install tool writes SKILL.md content to that path
11
+ * 3. Content overwrites /etc/passwd instead of skill file
12
+ *
13
+ * Defense:
14
+ * - SMI-2285: Uses O_NOFOLLOW to atomically refuse symlinks (eliminates TOCTOU race)
15
+ * - SMI-2290: Checks nlink count to detect hardlinks
16
+ * - SMI-2288: Properly handles string encoding options for permissions
17
+ */
18
+ import { open, lstat, constants } from 'fs/promises';
19
+ /**
20
+ * O_NOFOLLOW: refuse to open symlinks
21
+ * Prefer runtime constant from fs.constants, fall back to platform-specific values
22
+ * if unavailable (e.g., Windows where O_NOFOLLOW is not defined).
23
+ */
24
+ const O_NOFOLLOW = constants.O_NOFOLLOW ??
25
+ (process.platform === 'darwin' ? 0x100 : 0x20000);
26
+ /**
27
+ * Error thrown when a symlink is detected at a write destination.
28
+ */
29
+ export class SymlinkError extends Error {
30
+ filePath;
31
+ constructor(filePath) {
32
+ super(`Refusing to write to symlink: ${filePath}`);
33
+ this.name = 'SymlinkError';
34
+ this.filePath = filePath;
35
+ }
36
+ }
37
+ /**
38
+ * Error thrown when a hardlinked file is detected at a write destination.
39
+ * SMI-2290: Hardlinks can alias files, allowing writes to bypass symlink checks.
40
+ */
41
+ export class HardlinkError extends Error {
42
+ filePath;
43
+ constructor(filePath) {
44
+ super(`Refusing to write to hardlinked file: ${filePath}`);
45
+ this.name = 'HardlinkError';
46
+ this.filePath = filePath;
47
+ }
48
+ }
49
+ /**
50
+ * Write a file safely, refusing to write if the destination is a symlink or hardlink.
51
+ *
52
+ * SMI-2285: Uses O_NOFOLLOW to atomically refuse symlinks, eliminating the
53
+ * TOCTOU race condition in the previous lstat-then-write approach.
54
+ * SMI-2290: Checks nlink count to detect hardlinks before writing.
55
+ * SMI-2288: Properly extracts mode from string options (encoding strings).
56
+ *
57
+ * @param filePath - Absolute path to write to
58
+ * @param content - File content (string or Buffer)
59
+ * @param options - Optional fs.writeFile options (encoding, mode, flag) or encoding string
60
+ * @throws {SymlinkError} if the destination is a symlink
61
+ * @throws {HardlinkError} if the destination has multiple hardlinks
62
+ *
63
+ * @example
64
+ * ```typescript
65
+ * import { safeWriteFile } from '@skillsmith/core'
66
+ *
67
+ * // Safe write - rejects symlinks and hardlinks
68
+ * await safeWriteFile('/path/to/file.md', content)
69
+ *
70
+ * // With explicit permissions
71
+ * await safeWriteFile('/path/to/file.md', content, { mode: 0o644 })
72
+ *
73
+ * // With encoding string (uses default 0o644 permissions)
74
+ * await safeWriteFile('/path/to/file.md', content, 'utf-8')
75
+ * ```
76
+ */
77
+ export async function safeWriteFile(filePath, content, options) {
78
+ // SMI-2288: Extract mode and encoding from options (handles string encoding case)
79
+ const mode = typeof options === 'string' ? 0o644 : (options?.mode ?? 0o644);
80
+ const encoding = typeof options === 'string'
81
+ ? options
82
+ : (options?.encoding ?? undefined);
83
+ // SMI-2290: Check for hardlinks on existing files
84
+ try {
85
+ const stats = await lstat(filePath);
86
+ if (stats.isSymbolicLink()) {
87
+ throw new SymlinkError(filePath);
88
+ }
89
+ if (stats.nlink > 1) {
90
+ throw new HardlinkError(filePath);
91
+ }
92
+ }
93
+ catch (error) {
94
+ if (error.code === 'ENOENT') {
95
+ // File doesn't exist — safe to create
96
+ }
97
+ else if (error instanceof SymlinkError || error instanceof HardlinkError) {
98
+ throw error;
99
+ }
100
+ else {
101
+ throw error;
102
+ }
103
+ }
104
+ // SMI-2285: Open with O_NOFOLLOW to prevent TOCTOU race
105
+ let fd;
106
+ try {
107
+ fd = await open(filePath, constants.O_WRONLY | constants.O_CREAT | constants.O_TRUNC | O_NOFOLLOW, mode);
108
+ const data = typeof content === 'string' && encoding
109
+ ? Buffer.from(content, encoding)
110
+ : typeof content === 'string'
111
+ ? Buffer.from(content, 'utf-8')
112
+ : content;
113
+ await fd.write(data);
114
+ }
115
+ finally {
116
+ await fd?.close();
117
+ }
118
+ }
119
+ //# sourceMappingURL=safe-fs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"safe-fs.js","sourceRoot":"","sources":["../../../src/utils/safe-fs.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"input-validators.d.ts","sourceRoot":"","sources":["../../../src/validation/input-validators.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,aAAa,CAC3B,KAAK,EAAE,MAAM,EACb,OAAO,GAAE;IACP,iEAAiE;IACjE,mBAAmB,CAAC,EAAE,OAAO,CAAA;IAC7B,qDAAqD;IACrD,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,wCAAwC;IACxC,eAAe,CAAC,EAAE,OAAO,CAAA;CACrB,GACL,MAAM,CA6BR;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAuBxE;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAyB7D"}
1
+ {"version":3,"file":"input-validators.d.ts","sourceRoot":"","sources":["../../../src/validation/input-validators.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,aAAa,CAC3B,KAAK,EAAE,MAAM,EACb,OAAO,GAAE;IACP,iEAAiE;IACjE,mBAAmB,CAAC,EAAE,OAAO,CAAA;IAC7B,qDAAqD;IACrD,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,wCAAwC;IACxC,eAAe,CAAC,EAAE,OAAO,CAAA;CACrB,GACL,MAAM,CAqCR;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAuBxE;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAyB7D"}
@@ -31,11 +31,18 @@ export function sanitizeInput(input, options = {}) {
31
31
  sanitized = sanitized.replace(/\0/g, '');
32
32
  }
33
33
  // Remove path traversal sequences
34
+ // SMI-2262: Loop-based sanitization to prevent bypass with nested patterns
35
+ // e.g., '..././' becomes '../' after single-pass removal
34
36
  if (removePathTraversal) {
35
- // Remove '../' and '..\' patterns
36
- sanitized = sanitized.replace(/\.\.[\\/]/g, '');
37
- // Remove leading '../' or '..\'
38
- sanitized = sanitized.replace(/^\.\.[\\/]+/, '');
37
+ let previousPass = '';
38
+ const maxIterations = 10; // Prevent infinite loops on malformed input
39
+ for (let i = 0; i < maxIterations && previousPass !== sanitized; i++) {
40
+ previousPass = sanitized;
41
+ // Remove '../' and '..\' patterns
42
+ sanitized = sanitized.replace(/\.\.[\\/]/g, '');
43
+ // Remove leading '../' or '..\'
44
+ sanitized = sanitized.replace(/^\.\.[\\/]+/, '');
45
+ }
39
46
  }
40
47
  // HTML escape
41
48
  if (escapeHtml) {
@@ -1 +1 @@
1
- {"version":3,"file":"input-validators.js","sourceRoot":"","sources":["../../../src/validation/input-validators.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,aAAa,CAC3B,KAAa,EACb,UAOI,EAAE;IAEN,MAAM,EAAE,mBAAmB,GAAG,IAAI,EAAE,UAAU,GAAG,IAAI,EAAE,eAAe,GAAG,IAAI,EAAE,GAAG,OAAO,CAAA;IAEzF,IAAI,SAAS,GAAG,KAAK,CAAA;IAErB,oCAAoC;IACpC,IAAI,eAAe,EAAE,CAAC;QACpB,SAAS,GAAG,SAAS,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAA;IAC1C,CAAC;IAED,kCAAkC;IAClC,IAAI,mBAAmB,EAAE,CAAC;QACxB,kCAAkC;QAClC,SAAS,GAAG,SAAS,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAA;QAC/C,gCAAgC;QAChC,SAAS,GAAG,SAAS,CAAC,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC,CAAA;IAClD,CAAC;IAED,cAAc;IACd,IAAI,UAAU,EAAE,CAAC;QACf,SAAS,GAAG,SAAS;aAClB,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC;aACtB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;aACrB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;aACrB,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC;aACvB,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAA;IAC5B,CAAC;IAED,OAAO,SAAS,CAAA;AAClB,CAAC;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAAa,EAAE,OAAe;IAC7D,cAAc;IACd,IAAI,KAAK,KAAK,OAAO,EAAE,CAAC;QACtB,OAAO,IAAI,CAAA;IACb,CAAC;IAED,+DAA+D;IAC/D,iEAAiE;IACjE,MAAM,aAAa,GAAG,oBAAoB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IAExD,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,wCAAwC;QACxC,OAAO,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,CAAA;IAClC,CAAC;IAED,wEAAwE;IACxE,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,OAAO,CAAC,CAAA;QACjC,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IAC1B,CAAC;IAAC,MAAM,CAAC;QACP,mDAAmD;QACnD,OAAO,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAA;IAChC,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,gBAAgB,CAAC,QAAkB;IACjD,MAAM,QAAQ,GAAa,EAAE,CAAA;IAE7B,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,6DAA6D;QAC7D,IAAI,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YACrE,QAAQ,CAAC,IAAI,CAAC,iDAAiD,OAAO,EAAE,CAAC,CAAA;QAC3E,CAAC;QAED,oCAAoC;QACpC,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,EAAE,CAAC;YAC1B,QAAQ,CAAC,IAAI,CACX,iCAAiC,OAAO,CAAC,MAAM,YAAY,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CACrF,CAAA;QACH,CAAC;QAED,4CAA4C;QAC5C,IAAI,CAAC;YACH,IAAI,MAAM,CAAC,OAAO,CAAC,CAAA;QACrB,CAAC;QAAC,MAAM,CAAC;YACP,QAAQ,CAAC,IAAI,CAAC,0BAA0B,OAAO,EAAE,CAAC,CAAA;QACpD,CAAC;IACH,CAAC;IAED,OAAO,QAAQ,CAAA;AACjB,CAAC"}
1
+ {"version":3,"file":"input-validators.js","sourceRoot":"","sources":["../../../src/validation/input-validators.ts"],"names":[],"mappings":"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"}
@@ -4,7 +4,7 @@
4
4
  * End-to-end tests for Phase 4 Product Strategy analytics workflows
5
5
  */
6
6
  import { describe, it, expect, beforeEach, afterEach } from 'vitest';
7
- import Database from 'better-sqlite3';
7
+ import { createDatabaseSync } from '../src/db/createDatabase.js';
8
8
  import { initializeAnalyticsSchema } from '../src/analytics/schema.js';
9
9
  import { UsageAnalyticsService } from '../src/analytics/UsageAnalyticsService.js';
10
10
  import { ExperimentService } from '../src/analytics/ExperimentService.js';
@@ -15,7 +15,7 @@ describe('Analytics Integration Tests', () => {
15
15
  let experimentService;
16
16
  let roiService;
17
17
  beforeEach(() => {
18
- db = new Database(':memory:');
18
+ db = createDatabaseSync(':memory:');
19
19
  initializeAnalyticsSchema(db);
20
20
  usageService = new UsageAnalyticsService(db);
21
21
  experimentService = new ExperimentService(db);
@@ -1 +1 @@
1
- {"version":3,"file":"Analytics.integration.test.js","sourceRoot":"","sources":["../../tests/Analytics.integration.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Analytics.integration.test.js","sourceRoot":"","sources":["../../tests/Analytics.integration.test.ts"],"names":[],"mappings":"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"}
@@ -5,7 +5,7 @@
5
5
  * Uses fake timers for deterministic date testing (SMI-992)
6
6
  */
7
7
  import { describe, it, expect, beforeEach, afterEach } from 'vitest';
8
- import Database from 'better-sqlite3';
8
+ import { createDatabaseSync } from '../src/db/createDatabase.js';
9
9
  import { initializeAnalyticsSchema } from '../src/analytics/schema.js';
10
10
  import { AnalyticsRepository } from '../src/analytics/AnalyticsRepository.js';
11
11
  import { FIXED_DATE_ISO, FIXED_TIMESTAMP, ONE_DAY_MS, setupFakeTimers, cleanupFakeTimers, } from './test-utils.js';
@@ -14,7 +14,7 @@ describe('AnalyticsRepository', () => {
14
14
  let repo;
15
15
  beforeEach(() => {
16
16
  setupFakeTimers();
17
- db = new Database(':memory:');
17
+ db = createDatabaseSync(':memory:');
18
18
  initializeAnalyticsSchema(db);
19
19
  repo = new AnalyticsRepository(db);
20
20
  });