@skillsmith/core 0.4.17 → 0.5.1

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 (227) hide show
  1. package/CHANGELOG.md +29 -0
  2. package/dist/.tsbuildinfo +1 -1
  3. package/dist/src/api/client.cache.d.ts +34 -0
  4. package/dist/src/api/client.cache.d.ts.map +1 -0
  5. package/dist/src/api/client.cache.js +37 -0
  6. package/dist/src/api/client.cache.js.map +1 -0
  7. package/dist/src/api/client.d.ts +32 -104
  8. package/dist/src/api/client.d.ts.map +1 -1
  9. package/dist/src/api/client.events.d.ts +39 -0
  10. package/dist/src/api/client.events.d.ts.map +1 -0
  11. package/dist/src/api/client.events.js +77 -0
  12. package/dist/src/api/client.events.js.map +1 -0
  13. package/dist/src/api/client.js +65 -52
  14. package/dist/src/api/client.js.map +1 -1
  15. package/dist/src/api/client.types.d.ts +98 -0
  16. package/dist/src/api/client.types.d.ts.map +1 -0
  17. package/dist/src/api/client.types.js +22 -0
  18. package/dist/src/api/client.types.js.map +1 -0
  19. package/dist/src/api/event-batcher.d.ts +81 -0
  20. package/dist/src/api/event-batcher.d.ts.map +1 -0
  21. package/dist/src/api/event-batcher.js +191 -0
  22. package/dist/src/api/event-batcher.js.map +1 -0
  23. package/dist/src/api/index.d.ts +1 -0
  24. package/dist/src/api/index.d.ts.map +1 -1
  25. package/dist/src/api/index.js +2 -0
  26. package/dist/src/api/index.js.map +1 -1
  27. package/dist/src/api/schemas.d.ts +58 -0
  28. package/dist/src/api/schemas.d.ts.map +1 -1
  29. package/dist/src/api/schemas.js +45 -0
  30. package/dist/src/api/schemas.js.map +1 -1
  31. package/dist/src/audit/remote-audit.d.ts +28 -0
  32. package/dist/src/audit/remote-audit.d.ts.map +1 -0
  33. package/dist/src/audit/remote-audit.js +90 -0
  34. package/dist/src/audit/remote-audit.js.map +1 -0
  35. package/dist/src/audit/remote-audit.test.d.ts +2 -0
  36. package/dist/src/audit/remote-audit.test.d.ts.map +1 -0
  37. package/dist/src/audit/remote-audit.test.js +81 -0
  38. package/dist/src/audit/remote-audit.test.js.map +1 -0
  39. package/dist/src/data/generic-triggers.d.ts +24 -0
  40. package/dist/src/data/generic-triggers.d.ts.map +1 -0
  41. package/dist/src/data/generic-triggers.js +19 -0
  42. package/dist/src/data/generic-triggers.js.map +1 -0
  43. package/dist/src/data/generic-triggers.json +35 -0
  44. package/dist/src/db/migration-runner.d.ts +44 -0
  45. package/dist/src/db/migration-runner.d.ts.map +1 -0
  46. package/dist/src/db/migration-runner.js +175 -0
  47. package/dist/src/db/migration-runner.js.map +1 -0
  48. package/dist/src/db/migration.d.ts.map +1 -1
  49. package/dist/src/db/migration.js +2 -1
  50. package/dist/src/db/migration.js.map +1 -1
  51. package/dist/src/db/migrations/v12-risk-score-history.d.ts +10 -0
  52. package/dist/src/db/migrations/v12-risk-score-history.d.ts.map +1 -0
  53. package/dist/src/db/migrations/v12-risk-score-history.js +25 -0
  54. package/dist/src/db/migrations/v12-risk-score-history.js.map +1 -0
  55. package/dist/src/db/migrations/v13-team-tables.d.ts +11 -0
  56. package/dist/src/db/migrations/v13-team-tables.d.ts.map +1 -0
  57. package/dist/src/db/migrations/v13-team-tables.js +14 -0
  58. package/dist/src/db/migrations/v13-team-tables.js.map +1 -0
  59. package/dist/src/db/schema-sql.d.ts +16 -0
  60. package/dist/src/db/schema-sql.d.ts.map +1 -0
  61. package/dist/src/db/schema-sql.js +161 -0
  62. package/dist/src/db/schema-sql.js.map +1 -0
  63. package/dist/src/db/schema.d.ts +7 -32
  64. package/dist/src/db/schema.d.ts.map +1 -1
  65. package/dist/src/db/schema.js +13 -303
  66. package/dist/src/db/schema.js.map +1 -1
  67. package/dist/src/exports/repositories.d.ts +1 -0
  68. package/dist/src/exports/repositories.d.ts.map +1 -1
  69. package/dist/src/exports/repositories.js +4 -0
  70. package/dist/src/exports/repositories.js.map +1 -1
  71. package/dist/src/exports/services.d.ts +2 -1
  72. package/dist/src/exports/services.d.ts.map +1 -1
  73. package/dist/src/exports/services.js +1 -0
  74. package/dist/src/exports/services.js.map +1 -1
  75. package/dist/src/index.d.ts +5 -1
  76. package/dist/src/index.d.ts.map +1 -1
  77. package/dist/src/index.js +5 -1
  78. package/dist/src/index.js.map +1 -1
  79. package/dist/src/repositories/RiskScoreHistoryRepository.d.ts +37 -0
  80. package/dist/src/repositories/RiskScoreHistoryRepository.d.ts.map +1 -0
  81. package/dist/src/repositories/RiskScoreHistoryRepository.js +66 -0
  82. package/dist/src/repositories/RiskScoreHistoryRepository.js.map +1 -0
  83. package/dist/src/scoring/index.d.ts +1 -0
  84. package/dist/src/scoring/index.d.ts.map +1 -1
  85. package/dist/src/scoring/index.js +1 -0
  86. package/dist/src/scoring/index.js.map +1 -1
  87. package/dist/src/scoring/quality-score.d.ts +49 -0
  88. package/dist/src/scoring/quality-score.d.ts.map +1 -0
  89. package/dist/src/scoring/quality-score.js +73 -0
  90. package/dist/src/scoring/quality-score.js.map +1 -0
  91. package/dist/src/scripts/__tests__/scan-imported-skills.test.js +5 -0
  92. package/dist/src/scripts/__tests__/scan-imported-skills.test.js.map +1 -1
  93. package/dist/src/security/index.d.ts +2 -0
  94. package/dist/src/security/index.d.ts.map +1 -1
  95. package/dist/src/security/index.js +2 -0
  96. package/dist/src/security/index.js.map +1 -1
  97. package/dist/src/security/risk-trend.d.ts +21 -0
  98. package/dist/src/security/risk-trend.d.ts.map +1 -0
  99. package/dist/src/security/risk-trend.js +81 -0
  100. package/dist/src/security/risk-trend.js.map +1 -0
  101. package/dist/src/security/scanner/SecurityScanner.d.ts +2 -0
  102. package/dist/src/security/scanner/SecurityScanner.d.ts.map +1 -1
  103. package/dist/src/security/scanner/SecurityScanner.helpers.d.ts.map +1 -1
  104. package/dist/src/security/scanner/SecurityScanner.helpers.js +14 -8
  105. package/dist/src/security/scanner/SecurityScanner.helpers.js.map +1 -1
  106. package/dist/src/security/scanner/SecurityScanner.js +55 -1
  107. package/dist/src/security/scanner/SecurityScanner.js.map +1 -1
  108. package/dist/src/security/scanner/index.d.ts +1 -1
  109. package/dist/src/security/scanner/index.d.ts.map +1 -1
  110. package/dist/src/security/scanner/index.js +1 -1
  111. package/dist/src/security/scanner/index.js.map +1 -1
  112. package/dist/src/security/scanner/patterns.d.ts +6 -0
  113. package/dist/src/security/scanner/patterns.d.ts.map +1 -1
  114. package/dist/src/security/scanner/patterns.js +25 -0
  115. package/dist/src/security/scanner/patterns.js.map +1 -1
  116. package/dist/src/security/scanner/types.d.ts +2 -1
  117. package/dist/src/security/scanner/types.d.ts.map +1 -1
  118. package/dist/src/security/scanner/weights.d.ts.map +1 -1
  119. package/dist/src/security/scanner/weights.js +1 -0
  120. package/dist/src/security/scanner/weights.js.map +1 -1
  121. package/dist/src/services/skill-config-schema.d.ts +36 -0
  122. package/dist/src/services/skill-config-schema.d.ts.map +1 -0
  123. package/dist/src/services/skill-config-schema.js +76 -0
  124. package/dist/src/services/skill-config-schema.js.map +1 -0
  125. package/dist/src/services/skill-installation.feedback.d.ts +24 -0
  126. package/dist/src/services/skill-installation.feedback.d.ts.map +1 -0
  127. package/dist/src/services/skill-installation.feedback.js +37 -0
  128. package/dist/src/services/skill-installation.feedback.js.map +1 -0
  129. package/dist/src/services/skill-installation.helpers.d.ts +33 -7
  130. package/dist/src/services/skill-installation.helpers.d.ts.map +1 -1
  131. package/dist/src/services/skill-installation.helpers.js +74 -32
  132. package/dist/src/services/skill-installation.helpers.js.map +1 -1
  133. package/dist/src/services/skill-installation.service.d.ts +8 -16
  134. package/dist/src/services/skill-installation.service.d.ts.map +1 -1
  135. package/dist/src/services/skill-installation.service.js +86 -37
  136. package/dist/src/services/skill-installation.service.js.map +1 -1
  137. package/dist/src/services/skill-installation.types.d.ts +22 -0
  138. package/dist/src/services/skill-installation.types.d.ts.map +1 -1
  139. package/dist/src/services/skill-installation.types.js.map +1 -1
  140. package/dist/src/types.d.ts +2 -0
  141. package/dist/src/types.d.ts.map +1 -1
  142. package/dist/tests/SecurityScanner.ai-defence.test.d.ts +6 -0
  143. package/dist/tests/SecurityScanner.ai-defence.test.d.ts.map +1 -0
  144. package/dist/tests/SecurityScanner.ai-defence.test.js +221 -0
  145. package/dist/tests/SecurityScanner.ai-defence.test.js.map +1 -0
  146. package/dist/tests/SecurityScanner.performance.test.d.ts +6 -0
  147. package/dist/tests/SecurityScanner.performance.test.d.ts.map +1 -0
  148. package/dist/tests/SecurityScanner.performance.test.js +132 -0
  149. package/dist/tests/SecurityScanner.performance.test.js.map +1 -0
  150. package/dist/tests/SecurityScanner.scoring.test.d.ts +6 -0
  151. package/dist/tests/SecurityScanner.scoring.test.d.ts.map +1 -0
  152. package/dist/tests/SecurityScanner.scoring.test.js +197 -0
  153. package/dist/tests/SecurityScanner.scoring.test.js.map +1 -0
  154. package/dist/tests/SecurityScanner.test.d.ts +2 -2
  155. package/dist/tests/SecurityScanner.test.js +2 -520
  156. package/dist/tests/SecurityScanner.test.js.map +1 -1
  157. package/dist/tests/SkillMatcher.test.js +5 -5
  158. package/dist/tests/SkillMatcher.test.js.map +1 -1
  159. package/dist/tests/api/client.cache.test.d.ts +8 -0
  160. package/dist/tests/api/client.cache.test.d.ts.map +1 -0
  161. package/dist/tests/api/client.cache.test.js +128 -0
  162. package/dist/tests/api/client.cache.test.js.map +1 -0
  163. package/dist/tests/db/schema-migrations.test.js +8 -6
  164. package/dist/tests/db/schema-migrations.test.js.map +1 -1
  165. package/dist/tests/integration/events-batch-contract.test.d.ts +12 -0
  166. package/dist/tests/integration/events-batch-contract.test.d.ts.map +1 -0
  167. package/dist/tests/integration/events-batch-contract.test.js +69 -0
  168. package/dist/tests/integration/events-batch-contract.test.js.map +1 -0
  169. package/dist/tests/scoring/quality-score.test.d.ts +7 -0
  170. package/dist/tests/scoring/quality-score.test.d.ts.map +1 -0
  171. package/dist/tests/scoring/quality-score.test.js +78 -0
  172. package/dist/tests/scoring/quality-score.test.js.map +1 -0
  173. package/dist/tests/security/ContinuousSecurity.false-positives.test.d.ts +6 -0
  174. package/dist/tests/security/ContinuousSecurity.false-positives.test.d.ts.map +1 -0
  175. package/dist/tests/security/ContinuousSecurity.false-positives.test.js +89 -0
  176. package/dist/tests/security/ContinuousSecurity.false-positives.test.js.map +1 -0
  177. package/dist/tests/security/ContinuousSecurity.performance.test.d.ts +6 -0
  178. package/dist/tests/security/ContinuousSecurity.performance.test.d.ts.map +1 -0
  179. package/dist/tests/security/ContinuousSecurity.performance.test.js +177 -0
  180. package/dist/tests/security/ContinuousSecurity.performance.test.js.map +1 -0
  181. package/dist/tests/security/ContinuousSecurity.reporting.test.d.ts +6 -0
  182. package/dist/tests/security/ContinuousSecurity.reporting.test.d.ts.map +1 -0
  183. package/dist/tests/security/ContinuousSecurity.reporting.test.js +106 -0
  184. package/dist/tests/security/ContinuousSecurity.reporting.test.js.map +1 -0
  185. package/dist/tests/security/ContinuousSecurity.test.d.ts +9 -2
  186. package/dist/tests/security/ContinuousSecurity.test.d.ts.map +1 -1
  187. package/dist/tests/security/ContinuousSecurity.test.js +9 -336
  188. package/dist/tests/security/ContinuousSecurity.test.js.map +1 -1
  189. package/dist/tests/security/pii-detection.test.d.ts +7 -0
  190. package/dist/tests/security/pii-detection.test.d.ts.map +1 -0
  191. package/dist/tests/security/pii-detection.test.js +91 -0
  192. package/dist/tests/security/pii-detection.test.js.map +1 -0
  193. package/dist/tests/security/risk-trend.test.d.ts +6 -0
  194. package/dist/tests/security/risk-trend.test.d.ts.map +1 -0
  195. package/dist/tests/security/risk-trend.test.js +68 -0
  196. package/dist/tests/security/risk-trend.test.js.map +1 -0
  197. package/dist/tests/security/scanner-regression-guard.test.d.ts +12 -0
  198. package/dist/tests/security/scanner-regression-guard.test.d.ts.map +1 -0
  199. package/dist/tests/security/scanner-regression-guard.test.js +111 -0
  200. package/dist/tests/security/scanner-regression-guard.test.js.map +1 -0
  201. package/dist/tests/services/aidefence-feedback.test.d.ts +6 -0
  202. package/dist/tests/services/aidefence-feedback.test.d.ts.map +1 -0
  203. package/dist/tests/services/aidefence-feedback.test.js +115 -0
  204. package/dist/tests/services/aidefence-feedback.test.js.map +1 -0
  205. package/dist/tests/services/dep-quarantine-check.test.d.ts +5 -0
  206. package/dist/tests/services/dep-quarantine-check.test.d.ts.map +1 -0
  207. package/dist/tests/services/dep-quarantine-check.test.js +92 -0
  208. package/dist/tests/services/dep-quarantine-check.test.js.map +1 -0
  209. package/dist/tests/services/skill-config-schema.test.d.ts +5 -0
  210. package/dist/tests/services/skill-config-schema.test.d.ts.map +1 -0
  211. package/dist/tests/services/skill-config-schema.test.js +98 -0
  212. package/dist/tests/services/skill-config-schema.test.js.map +1 -0
  213. package/dist/tests/unit/api-client-events.test.d.ts +10 -0
  214. package/dist/tests/unit/api-client-events.test.d.ts.map +1 -0
  215. package/dist/tests/unit/api-client-events.test.js +73 -0
  216. package/dist/tests/unit/api-client-events.test.js.map +1 -0
  217. package/dist/tests/unit/event-batcher.test.d.ts +13 -0
  218. package/dist/tests/unit/event-batcher.test.d.ts.map +1 -0
  219. package/dist/tests/unit/event-batcher.test.js +155 -0
  220. package/dist/tests/unit/event-batcher.test.js.map +1 -0
  221. package/dist/tests/unit/services/skill-installation-extended.test.d.ts +8 -0
  222. package/dist/tests/unit/services/skill-installation-extended.test.d.ts.map +1 -0
  223. package/dist/tests/unit/services/skill-installation-extended.test.js +423 -0
  224. package/dist/tests/unit/services/skill-installation-extended.test.js.map +1 -0
  225. package/dist/tests/unit/services/skill-installation.service.test.js +0 -390
  226. package/dist/tests/unit/services/skill-installation.service.test.js.map +1 -1
  227. package/package.json +7 -7
@@ -0,0 +1,90 @@
1
+ import { createHmac } from 'node:crypto';
2
+ import { getApiKey } from '../config/index.js';
3
+ const DEFAULT_API_BASE = 'https://api.skillsmith.app';
4
+ const EVENT_ENDPOINT = '/functions/v1/events';
5
+ const REQUEST_TIMEOUT_MS = 2000;
6
+ /**
7
+ * HMAC key used to derive the telemetry actor ID from the caller's API key.
8
+ *
9
+ * This is NOT password storage — it is a keyed, deterministic, non-reversible
10
+ * correlation ID used to distinguish one caller from another in aggregate
11
+ * telemetry. HMAC-SHA-256 is the correct primitive for that use case:
12
+ * - Keyed construction cleanly signals "opaque identifier derivation", not
13
+ * password hashing.
14
+ * - Fast (no KDF latency on the hot install path).
15
+ * - Deterministic so the same API key always maps to the same actor ID,
16
+ * enabling per-caller aggregation server-side.
17
+ *
18
+ * A slow KDF (bcrypt/scrypt/Argon2) would be inappropriate here — it adds
19
+ * latency without changing any security property we need.
20
+ */
21
+ const TELEMETRY_ACTOR_KEY = 'skillsmith-telemetry-actor:v1';
22
+ function hashForActor(apiKey) {
23
+ // lgtm[js/insufficient-password-hash] This is deterministic correlation-ID
24
+ // derivation via HMAC-SHA-256 — not password storage. See TELEMETRY_ACTOR_KEY
25
+ // doc-comment above for full rationale (false positive in CodeQL's taint
26
+ // tracking which flags any flow from an API-key-like source into a crypto
27
+ // function, regardless of construction).
28
+ return createHmac('sha256', TELEMETRY_ACTOR_KEY).update(apiKey).digest('hex');
29
+ }
30
+ function getApiBase() {
31
+ return process.env.SKILLSMITH_API_URL || DEFAULT_API_BASE;
32
+ }
33
+ function isDisabled() {
34
+ const flag = process.env.SKILLSMITH_TELEMETRY;
35
+ return flag === '0' || flag === 'false' || flag === 'off';
36
+ }
37
+ /**
38
+ * Emit a skill-install event to Skillsmith's remote telemetry endpoint.
39
+ *
40
+ * Best-effort: never throws, never blocks the caller. Silently skips in these cases:
41
+ * - No API key available (CLI offline / unauthenticated)
42
+ * - SKILLSMITH_TELEMETRY=0 (opt-out)
43
+ * - Network / endpoint failure
44
+ *
45
+ * The API key is mapped to a namespaced, non-reversible telemetry actor ID
46
+ * (HMAC-SHA-256 keyed by `skillsmith-telemetry-actor:v1`) before transmission.
47
+ * The server stores that digest as `actor` — never the raw key, never an
48
+ * email, never a user ID.
49
+ *
50
+ * Event shape when emitted:
51
+ * event_type: "telemetry:skill_install"
52
+ * actor: hmac_sha256("skillsmith-telemetry-actor:v1", apiKey) hex
53
+ * metadata: { skill_id, source, success, duration_ms?, trust_tier?, error_code? }
54
+ */
55
+ export async function emitInstallEvent(payload) {
56
+ if (isDisabled())
57
+ return;
58
+ const apiKey = getApiKey();
59
+ if (!apiKey)
60
+ return;
61
+ const controller = new AbortController();
62
+ const timer = setTimeout(() => controller.abort(), REQUEST_TIMEOUT_MS);
63
+ try {
64
+ await fetch(`${getApiBase()}${EVENT_ENDPOINT}`, {
65
+ method: 'POST',
66
+ headers: { 'content-type': 'application/json' },
67
+ signal: controller.signal,
68
+ body: JSON.stringify({
69
+ event: 'skill_install',
70
+ anonymous_id: hashForActor(apiKey),
71
+ metadata: {
72
+ skill_id: payload.skillId,
73
+ source: payload.source,
74
+ success: payload.success,
75
+ ...(payload.durationMs !== undefined && { duration_ms: payload.durationMs }),
76
+ ...(payload.trustTier !== undefined && { trust_tier: payload.trustTier }),
77
+ ...(payload.errorCode !== undefined && { error_code: payload.errorCode }),
78
+ },
79
+ }),
80
+ });
81
+ }
82
+ catch {
83
+ // Best-effort: swallow all errors (network, abort, endpoint down).
84
+ // Telemetry failures must never break the install flow.
85
+ }
86
+ finally {
87
+ clearTimeout(timer);
88
+ }
89
+ }
90
+ //# sourceMappingURL=remote-audit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"remote-audit.js","sourceRoot":"","sources":["../../../src/audit/remote-audit.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAA;AAW9C,MAAM,gBAAgB,GAAG,4BAA4B,CAAA;AACrD,MAAM,cAAc,GAAG,sBAAsB,CAAA;AAC7C,MAAM,kBAAkB,GAAG,IAAI,CAAA;AAE/B;;;;;;;;;;;;;;GAcG;AACH,MAAM,mBAAmB,GAAG,+BAA+B,CAAA;AAE3D,SAAS,YAAY,CAAC,MAAc;IAClC,2EAA2E;IAC3E,8EAA8E;IAC9E,yEAAyE;IACzE,0EAA0E;IAC1E,yCAAyC;IACzC,OAAO,UAAU,CAAC,QAAQ,EAAE,mBAAmB,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;AAC/E,CAAC;AAED,SAAS,UAAU;IACjB,OAAO,OAAO,CAAC,GAAG,CAAC,kBAAkB,IAAI,gBAAgB,CAAA;AAC3D,CAAC;AAED,SAAS,UAAU;IACjB,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAA;IAC7C,OAAO,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,OAAO,IAAI,IAAI,KAAK,KAAK,CAAA;AAC3D,CAAC;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,OAA4B;IACjE,IAAI,UAAU,EAAE;QAAE,OAAM;IACxB,MAAM,MAAM,GAAG,SAAS,EAAE,CAAA;IAC1B,IAAI,CAAC,MAAM;QAAE,OAAM;IAEnB,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAA;IACxC,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,kBAAkB,CAAC,CAAA;IAEtE,IAAI,CAAC;QACH,MAAM,KAAK,CAAC,GAAG,UAAU,EAAE,GAAG,cAAc,EAAE,EAAE;YAC9C,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;YAC/C,MAAM,EAAE,UAAU,CAAC,MAAM;YACzB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;gBACnB,KAAK,EAAE,eAAe;gBACtB,YAAY,EAAE,YAAY,CAAC,MAAM,CAAC;gBAClC,QAAQ,EAAE;oBACR,QAAQ,EAAE,OAAO,CAAC,OAAO;oBACzB,MAAM,EAAE,OAAO,CAAC,MAAM;oBACtB,OAAO,EAAE,OAAO,CAAC,OAAO;oBACxB,GAAG,CAAC,OAAO,CAAC,UAAU,KAAK,SAAS,IAAI,EAAE,WAAW,EAAE,OAAO,CAAC,UAAU,EAAE,CAAC;oBAC5E,GAAG,CAAC,OAAO,CAAC,SAAS,KAAK,SAAS,IAAI,EAAE,UAAU,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC;oBACzE,GAAG,CAAC,OAAO,CAAC,SAAS,KAAK,SAAS,IAAI,EAAE,UAAU,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC;iBAC1E;aACF,CAAC;SACH,CAAC,CAAA;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,mEAAmE;QACnE,wDAAwD;IAC1D,CAAC;YAAS,CAAC;QACT,YAAY,CAAC,KAAK,CAAC,CAAA;IACrB,CAAC;AACH,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=remote-audit.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"remote-audit.test.d.ts","sourceRoot":"","sources":["../../../src/audit/remote-audit.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,81 @@
1
+ import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest';
2
+ import { emitInstallEvent } from './remote-audit.js';
3
+ const fetchSpy = vi.fn();
4
+ beforeEach(() => {
5
+ vi.stubGlobal('fetch', fetchSpy);
6
+ fetchSpy.mockReset();
7
+ fetchSpy.mockResolvedValue(new Response(null, { status: 200 }));
8
+ delete process.env.SKILLSMITH_TELEMETRY;
9
+ delete process.env.SKILLSMITH_API_URL;
10
+ });
11
+ afterEach(() => {
12
+ vi.unstubAllGlobals();
13
+ delete process.env.SKILLSMITH_API_KEY;
14
+ });
15
+ function readBody() {
16
+ const body = fetchSpy.mock.calls[0]?.[1]?.body;
17
+ return JSON.parse(body);
18
+ }
19
+ describe('emitInstallEvent', () => {
20
+ it('skips when no API key is available', async () => {
21
+ delete process.env.SKILLSMITH_API_KEY;
22
+ await emitInstallEvent({ skillId: 'acme/foo', source: 'mcp', success: true });
23
+ expect(fetchSpy).not.toHaveBeenCalled();
24
+ });
25
+ it('skips when telemetry is disabled via env', async () => {
26
+ process.env.SKILLSMITH_API_KEY = 'sk_live_testtoken';
27
+ process.env.SKILLSMITH_TELEMETRY = '0';
28
+ await emitInstallEvent({ skillId: 'acme/foo', source: 'mcp', success: true });
29
+ expect(fetchSpy).not.toHaveBeenCalled();
30
+ });
31
+ it('hashes the API key (actor is sha256 hex, not raw key)', async () => {
32
+ process.env.SKILLSMITH_API_KEY = 'sk_live_testtoken';
33
+ await emitInstallEvent({ skillId: 'acme/foo', source: 'mcp', success: true });
34
+ const body = readBody();
35
+ expect(body.anonymous_id).toMatch(/^[0-9a-f]{64}$/);
36
+ expect(String(body.anonymous_id)).not.toContain('sk_live');
37
+ });
38
+ it('emits with event=skill_install and the expected metadata shape', async () => {
39
+ process.env.SKILLSMITH_API_KEY = 'sk_live_testtoken';
40
+ await emitInstallEvent({
41
+ skillId: 'acme/foo',
42
+ source: 'cli',
43
+ success: false,
44
+ durationMs: 123,
45
+ trustTier: 'community',
46
+ errorCode: 'NETWORK_ERROR',
47
+ });
48
+ const body = readBody();
49
+ expect(body.event).toBe('skill_install');
50
+ expect(body.metadata).toEqual({
51
+ skill_id: 'acme/foo',
52
+ source: 'cli',
53
+ success: false,
54
+ duration_ms: 123,
55
+ trust_tier: 'community',
56
+ error_code: 'NETWORK_ERROR',
57
+ });
58
+ });
59
+ it('omits undefined optional fields from metadata', async () => {
60
+ process.env.SKILLSMITH_API_KEY = 'sk_live_testtoken';
61
+ await emitInstallEvent({ skillId: 'acme/foo', source: 'vscode', success: true });
62
+ const body = readBody();
63
+ const meta = body.metadata;
64
+ expect(meta).toEqual({ skill_id: 'acme/foo', source: 'vscode', success: true });
65
+ expect(meta).not.toHaveProperty('duration_ms');
66
+ expect(meta).not.toHaveProperty('trust_tier');
67
+ expect(meta).not.toHaveProperty('error_code');
68
+ });
69
+ it('swallows fetch errors and does not throw', async () => {
70
+ process.env.SKILLSMITH_API_KEY = 'sk_live_testtoken';
71
+ fetchSpy.mockRejectedValueOnce(new Error('network down'));
72
+ await expect(emitInstallEvent({ skillId: 'acme/foo', source: 'mcp', success: true })).resolves.toBeUndefined();
73
+ });
74
+ it('respects SKILLSMITH_API_URL override', async () => {
75
+ process.env.SKILLSMITH_API_KEY = 'sk_live_testtoken';
76
+ process.env.SKILLSMITH_API_URL = 'https://staging.skillsmith.app';
77
+ await emitInstallEvent({ skillId: 'acme/foo', source: 'mcp', success: true });
78
+ expect(fetchSpy).toHaveBeenCalledWith('https://staging.skillsmith.app/functions/v1/events', expect.any(Object));
79
+ });
80
+ });
81
+ //# sourceMappingURL=remote-audit.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"remote-audit.test.js","sourceRoot":"","sources":["../../../src/audit/remote-audit.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * @fileoverview Curated stoplist of generic trigger words and namespace tokens
3
+ * used by `skill_pack_audit` to flag false-trigger-prone skill names/descriptions
4
+ * and generic pack namespaces.
5
+ * @module @skillsmith/core/data/generic-triggers
6
+ * @see SMI-4124
7
+ *
8
+ * Edit `generic-triggers.json` (sibling file) to add entries — no code change
9
+ * required. i18n follow-up tracked in SMI-4125.
10
+ */
11
+ /** Typed shape of the curated stoplist. */
12
+ export interface GenericTriggersStoplist {
13
+ /** Common English/dev verbs that misfire Claude's skill-trigger heuristic. */
14
+ readonly triggerWords: readonly string[];
15
+ /** Generic pack namespaces (directory names) that should be domain-qualified. */
16
+ readonly namespaces: readonly string[];
17
+ /** ISO 639-1 locale code for this stoplist (v1: "en" only). */
18
+ readonly locale: string;
19
+ /** Maintenance notes for editors. */
20
+ readonly notes: string;
21
+ }
22
+ /** Frozen default stoplist. Consumers should treat as read-only. */
23
+ export declare const GENERIC_TRIGGERS: GenericTriggersStoplist;
24
+ //# sourceMappingURL=generic-triggers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generic-triggers.d.ts","sourceRoot":"","sources":["../../../src/data/generic-triggers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,2CAA2C;AAC3C,MAAM,WAAW,uBAAuB;IACtC,8EAA8E;IAC9E,QAAQ,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE,CAAA;IACxC,iFAAiF;IACjF,QAAQ,CAAC,UAAU,EAAE,SAAS,MAAM,EAAE,CAAA;IACtC,+DAA+D;IAC/D,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,qCAAqC;IACrC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CACvB;AAED,oEAAoE;AACpE,eAAO,MAAM,gBAAgB,EAAE,uBAKF,CAAA"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * @fileoverview Curated stoplist of generic trigger words and namespace tokens
3
+ * used by `skill_pack_audit` to flag false-trigger-prone skill names/descriptions
4
+ * and generic pack namespaces.
5
+ * @module @skillsmith/core/data/generic-triggers
6
+ * @see SMI-4124
7
+ *
8
+ * Edit `generic-triggers.json` (sibling file) to add entries — no code change
9
+ * required. i18n follow-up tracked in SMI-4125.
10
+ */
11
+ import data from './generic-triggers.json' with { type: 'json' };
12
+ /** Frozen default stoplist. Consumers should treat as read-only. */
13
+ export const GENERIC_TRIGGERS = Object.freeze({
14
+ triggerWords: Object.freeze([...data.triggerWords]),
15
+ namespaces: Object.freeze([...data.namespaces]),
16
+ locale: data.locale,
17
+ notes: data.notes,
18
+ });
19
+ //# sourceMappingURL=generic-triggers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generic-triggers.js","sourceRoot":"","sources":["../../../src/data/generic-triggers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,IAAI,MAAM,yBAAyB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAA;AAchE,oEAAoE;AACpE,MAAM,CAAC,MAAM,gBAAgB,GAA4B,MAAM,CAAC,MAAM,CAAC;IACrE,YAAY,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC;IACnD,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC;IAC/C,MAAM,EAAE,IAAI,CAAC,MAAM;IACnB,KAAK,EAAE,IAAI,CAAC,KAAK;CAClB,CAA4B,CAAA"}
@@ -0,0 +1,35 @@
1
+ {
2
+ "triggerWords": [
3
+ "spec",
4
+ "build",
5
+ "ship",
6
+ "test",
7
+ "deploy",
8
+ "plan",
9
+ "review",
10
+ "run",
11
+ "check",
12
+ "fix",
13
+ "update",
14
+ "create",
15
+ "add",
16
+ "remove",
17
+ "start",
18
+ "stop",
19
+ "send",
20
+ "get",
21
+ "list"
22
+ ],
23
+ "namespaces": [
24
+ "agent-skills",
25
+ "skills",
26
+ "tools",
27
+ "utils",
28
+ "helpers",
29
+ "misc",
30
+ "common",
31
+ "general"
32
+ ],
33
+ "locale": "en",
34
+ "notes": "English only in v1. Follow-up for i18n tracked in SMI-4125."
35
+ }
@@ -0,0 +1,44 @@
1
+ /**
2
+ * Migration Runner
3
+ *
4
+ * Extracted from schema.ts (SMI-3910) to keep schema.ts focused on
5
+ * schema definition and database creation.
6
+ *
7
+ * Handles running pending migrations against the database, with
8
+ * graceful handling of duplicate-column errors from migrations that
9
+ * add columns already present in the initial schema.
10
+ *
11
+ * IMPORTANT: Uses db.exec(migration.sql) directly instead of splitting
12
+ * by semicolon. Splitting breaks trigger bodies (e.g., FTS5 sync triggers).
13
+ * See MEMORY.md "SCHEMA_SQL semicolon-split trap".
14
+ */
15
+ import type { Database } from './database-interface.js';
16
+ /**
17
+ * Migration definition for schema upgrades
18
+ */
19
+ export interface Migration {
20
+ version: number;
21
+ description: string;
22
+ sql: string;
23
+ }
24
+ export declare const MIGRATIONS: Migration[];
25
+ /**
26
+ * Get the current schema version from the database
27
+ */
28
+ export declare function getSchemaVersion(db: Database): number;
29
+ /**
30
+ * Run pending migrations to upgrade the schema.
31
+ *
32
+ * Uses db.exec(migration.sql) directly — never splits by semicolon,
33
+ * which would break trigger bodies. Duplicate-column errors are caught
34
+ * at the full-SQL level.
35
+ */
36
+ export declare function runMigrations(db: Database): number;
37
+ /**
38
+ * SMI-974: Run migrations with error handling for existing columns.
39
+ *
40
+ * Like runMigrations but wraps each migration in try/catch so a single
41
+ * failure doesn't prevent subsequent migrations from running.
42
+ */
43
+ export declare function runMigrationsSafe(db: Database): number;
44
+ //# sourceMappingURL=migration-runner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migration-runner.d.ts","sourceRoot":"","sources":["../../../src/db/migration-runner.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAA;AAcvD;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,MAAM,CAAA;IACf,WAAW,EAAE,MAAM,CAAA;IACnB,GAAG,EAAE,MAAM,CAAA;CACZ;AAID,eAAO,MAAM,UAAU,EAAE,SAAS,EAkEjC,CAAA;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,QAAQ,GAAG,MAAM,CASrD;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,EAAE,EAAE,QAAQ,GAAG,MAAM,CAqBlD;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,QAAQ,GAAG,MAAM,CAiCtD"}
@@ -0,0 +1,175 @@
1
+ /**
2
+ * Migration Runner
3
+ *
4
+ * Extracted from schema.ts (SMI-3910) to keep schema.ts focused on
5
+ * schema definition and database creation.
6
+ *
7
+ * Handles running pending migrations against the database, with
8
+ * graceful handling of duplicate-column errors from migrations that
9
+ * add columns already present in the initial schema.
10
+ *
11
+ * IMPORTANT: Uses db.exec(migration.sql) directly instead of splitting
12
+ * by semicolon. Splitting breaks trigger bodies (e.g., FTS5 sync triggers).
13
+ * See MEMORY.md "SCHEMA_SQL semicolon-split trap".
14
+ */
15
+ import { MIGRATION_V2_SQL } from './migrations/v2-phase5-columns.js';
16
+ import { MIGRATION_V3_SQL } from './migrations/v3-sync-tables.js';
17
+ import { MIGRATION_V4_SQL } from './migrations/v4-security-columns.js';
18
+ import { MIGRATION_V5_SQL } from './migrations/v5-skill-versions.js';
19
+ import { MIGRATION_V5B_SQL } from './migrations/v5b-change-type.js';
20
+ import { MIGRATION_V6_SQL } from './migrations/v6-advisories.js';
21
+ import { MIGRATION_V7_SQL } from './migrations/v7-compatibility.js';
22
+ import { MIGRATION_V8_SQL } from './migrations/v8-co-installs.js';
23
+ import { MIGRATION_V10_SQL } from './migrations/v10-dependencies.js';
24
+ import { MIGRATION_V12_SQL } from './migrations/v12-risk-score-history.js';
25
+ import { MIGRATION_V13_SQL } from './migrations/v13-team-tables.js';
26
+ import { SCHEMA_SQL, FTS5_MIGRATION_SQL } from './schema-sql.js';
27
+ // Reserved: v14 (RBAC), v15 (integrations)
28
+ export const MIGRATIONS = [
29
+ {
30
+ version: 1,
31
+ description: 'Initial schema creation',
32
+ sql: SCHEMA_SQL,
33
+ },
34
+ {
35
+ version: 2,
36
+ description: 'SMI-974: Add missing columns for Phase 5 imported databases',
37
+ sql: MIGRATION_V2_SQL,
38
+ },
39
+ {
40
+ version: 3,
41
+ description: 'Registry sync tables for local-to-live synchronization',
42
+ sql: MIGRATION_V3_SQL,
43
+ },
44
+ {
45
+ version: 4,
46
+ description: 'SMI-825: Add security scan columns to skills table',
47
+ sql: MIGRATION_V4_SQL,
48
+ },
49
+ {
50
+ version: 5,
51
+ description: 'SMI-skill-version-tracking Wave 1: skill_versions table',
52
+ sql: MIGRATION_V5_SQL,
53
+ },
54
+ {
55
+ version: 6,
56
+ description: 'SMI-skill-version-tracking Wave 2: add change_type to skill_versions',
57
+ sql: MIGRATION_V5B_SQL,
58
+ },
59
+ {
60
+ version: 7,
61
+ description: 'SMI-skill-version-tracking Wave 3: skill_advisories table',
62
+ sql: MIGRATION_V6_SQL,
63
+ },
64
+ {
65
+ version: 8,
66
+ description: 'SMI-2760: compatibility column on skills table',
67
+ sql: MIGRATION_V7_SQL,
68
+ },
69
+ {
70
+ version: 9,
71
+ description: 'SMI-2761: skill_co_installs table for co-install recommendations',
72
+ sql: MIGRATION_V8_SQL,
73
+ },
74
+ {
75
+ version: 10,
76
+ description: 'Skill dependency intelligence: skill_dependencies table',
77
+ sql: MIGRATION_V10_SQL,
78
+ },
79
+ {
80
+ version: 11,
81
+ description: 'SMI-3510: content_hash column for tamper detection',
82
+ sql: 'ALTER TABLE skills ADD COLUMN content_hash TEXT',
83
+ },
84
+ {
85
+ version: 12,
86
+ description: 'SMI-3864: risk_score_history table for trend detection',
87
+ sql: MIGRATION_V12_SQL,
88
+ },
89
+ {
90
+ version: 13,
91
+ description: 'SMI-3896: visibility and team_id columns for private skills',
92
+ sql: MIGRATION_V13_SQL,
93
+ },
94
+ ];
95
+ /**
96
+ * Get the current schema version from the database
97
+ */
98
+ export function getSchemaVersion(db) {
99
+ try {
100
+ const result = db.prepare('SELECT MAX(version) as version FROM schema_version').get();
101
+ return result?.version ?? 0;
102
+ }
103
+ catch {
104
+ return 0;
105
+ }
106
+ }
107
+ /**
108
+ * Run pending migrations to upgrade the schema.
109
+ *
110
+ * Uses db.exec(migration.sql) directly — never splits by semicolon,
111
+ * which would break trigger bodies. Duplicate-column errors are caught
112
+ * at the full-SQL level.
113
+ */
114
+ export function runMigrations(db) {
115
+ const currentVersion = getSchemaVersion(db);
116
+ let migrationsRun = 0;
117
+ for (const migration of MIGRATIONS) {
118
+ if (migration.version > currentVersion) {
119
+ try {
120
+ db.exec(migration.sql);
121
+ }
122
+ catch (error) {
123
+ // Ignore "duplicate column" errors - column already exists from initial schema
124
+ const msg = error instanceof Error ? error.message : String(error);
125
+ if (!msg.includes('duplicate column')) {
126
+ throw error;
127
+ }
128
+ }
129
+ db.prepare('INSERT INTO schema_version (version) VALUES (?)').run(migration.version);
130
+ migrationsRun++;
131
+ }
132
+ }
133
+ return migrationsRun;
134
+ }
135
+ /**
136
+ * SMI-974: Run migrations with error handling for existing columns.
137
+ *
138
+ * Like runMigrations but wraps each migration in try/catch so a single
139
+ * failure doesn't prevent subsequent migrations from running.
140
+ */
141
+ export function runMigrationsSafe(db) {
142
+ const currentVersion = getSchemaVersion(db);
143
+ let migrationsRun = 0;
144
+ for (const migration of MIGRATIONS) {
145
+ if (migration.version > currentVersion) {
146
+ try {
147
+ try {
148
+ db.exec(migration.sql);
149
+ }
150
+ catch (error) {
151
+ // Ignore "duplicate column" errors - column already exists
152
+ const msg = error instanceof Error ? error.message : String(error);
153
+ if (!msg.includes('duplicate column')) {
154
+ throw error;
155
+ }
156
+ }
157
+ db.prepare('INSERT INTO schema_version (version) VALUES (?)').run(migration.version);
158
+ migrationsRun++;
159
+ }
160
+ catch (error) {
161
+ // Log but don't fail on migration errors
162
+ console.warn(`Migration ${migration.version} failed:`, error);
163
+ }
164
+ }
165
+ }
166
+ // Try to create FTS5 table (may already exist)
167
+ try {
168
+ db.exec(FTS5_MIGRATION_SQL);
169
+ }
170
+ catch {
171
+ // FTS5 may already exist or have issues - that's ok
172
+ }
173
+ return migrationsRun;
174
+ }
175
+ //# sourceMappingURL=migration-runner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migration-runner.js","sourceRoot":"","sources":["../../../src/db/migration-runner.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"migration.d.ts","sourceRoot":"","sources":["../../../src/db/migration.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,QAAQ,IAAI,YAAY,EAAE,MAAM,yBAAyB,CAAA;AAIvE,YAAY,EACV,mBAAmB,EACnB,WAAW,EACX,aAAa,EACb,aAAa,EACb,YAAY,EACZ,UAAU,EACV,kBAAkB,EAClB,QAAQ,EACR,gBAAgB,GACjB,MAAM,sBAAsB,CAAA;AAG7B,OAAO,KAAK,EACV,mBAAmB,EACnB,WAAW,EAEX,YAAY,EACZ,gBAAgB,EACjB,MAAM,sBAAsB,CAAA;AAM7B,wBAAgB,wBAAwB,CAAC,EAAE,EAAE,YAAY,GAAG,mBAAmB,CAuD9E;AAED,wBAAgB,yBAAyB,CAAC,EAAE,EAAE,YAAY,GAAG,IAAI,CAmBhE;AAqBD,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,YAAY,EACpB,MAAM,EAAE,YAAY,EACpB,OAAO,GAAE,YAAyC,GACjD,WAAW,CAiLb;AAMD,wBAAgB,aAAa,CAAC,EAAE,EAAE,YAAY,GAAG,IAAI,CACnD;IACE,SAAS,EAAE,OAAO,CAAA;IAClB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,aAAa,EAAE,MAAM,CAAA;IACrB,cAAc,EAAE,MAAM,CAAA;IACtB,cAAc,EAAE,MAAM,CAAA;IACtB,gBAAgB,EAAE,MAAM,CAAA;CACzB,EACD,WAAW,GAAG,gBAAgB,CAC/B,CAcA;AAED,wBAAgB,gBAAgB,CAC9B,EAAE,EAAE,YAAY,EAChB,MAAM,EAAE;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,aAAa,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,GACrE,IAAI,CAkBN;AAED,wBAAgB,aAAa,CAC3B,EAAE,EAAE,YAAY,EAChB,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,EACpD,MAAM,CAAC,EAAE,WAAW,EACpB,KAAK,CAAC,EAAE,MAAM,GACb,MAAM,CAuBR;AAED,wBAAgB,cAAc,CAAC,EAAE,EAAE,YAAY,EAAE,KAAK,SAAK,GAAG,gBAAgB,EAAE,CAI/E"}
1
+ {"version":3,"file":"migration.d.ts","sourceRoot":"","sources":["../../../src/db/migration.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,QAAQ,IAAI,YAAY,EAAE,MAAM,yBAAyB,CAAA;AAKvE,YAAY,EACV,mBAAmB,EACnB,WAAW,EACX,aAAa,EACb,aAAa,EACb,YAAY,EACZ,UAAU,EACV,kBAAkB,EAClB,QAAQ,EACR,gBAAgB,GACjB,MAAM,sBAAsB,CAAA;AAG7B,OAAO,KAAK,EACV,mBAAmB,EACnB,WAAW,EAEX,YAAY,EACZ,gBAAgB,EACjB,MAAM,sBAAsB,CAAA;AAM7B,wBAAgB,wBAAwB,CAAC,EAAE,EAAE,YAAY,GAAG,mBAAmB,CAuD9E;AAED,wBAAgB,yBAAyB,CAAC,EAAE,EAAE,YAAY,GAAG,IAAI,CAmBhE;AAqBD,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,YAAY,EACpB,MAAM,EAAE,YAAY,EACpB,OAAO,GAAE,YAAyC,GACjD,WAAW,CAiLb;AAMD,wBAAgB,aAAa,CAAC,EAAE,EAAE,YAAY,GAAG,IAAI,CACnD;IACE,SAAS,EAAE,OAAO,CAAA;IAClB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,aAAa,EAAE,MAAM,CAAA;IACrB,cAAc,EAAE,MAAM,CAAA;IACtB,cAAc,EAAE,MAAM,CAAA;IACtB,gBAAgB,EAAE,MAAM,CAAA;CACzB,EACD,WAAW,GAAG,gBAAgB,CAC/B,CAcA;AAED,wBAAgB,gBAAgB,CAC9B,EAAE,EAAE,YAAY,EAChB,MAAM,EAAE;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,aAAa,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,GACrE,IAAI,CAkBN;AAED,wBAAgB,aAAa,CAC3B,EAAE,EAAE,YAAY,EAChB,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,EACpD,MAAM,CAAC,EAAE,WAAW,EACpB,KAAK,CAAC,EAAE,MAAM,GACb,MAAM,CAuBR;AAED,wBAAgB,cAAc,CAAC,EAAE,EAAE,YAAY,EAAE,KAAK,SAAK,GAAG,gBAAgB,EAAE,CAI/E"}
@@ -7,7 +7,8 @@
7
7
  *
8
8
  * @see migration-types.ts for type definitions
9
9
  */
10
- import { SCHEMA_VERSION, getSchemaVersion, runMigrationsSafe, MIGRATIONS } from './schema.js';
10
+ import { SCHEMA_VERSION } from './schema.js';
11
+ import { getSchemaVersion, runMigrationsSafe, MIGRATIONS } from './migration-runner.js';
11
12
  // ============================================================================
12
13
  // SMI-1446: Schema Version Compatibility
13
14
  // ============================================================================
@@ -1 +1 @@
1
- {"version":3,"file":"migration.js","sourceRoot":"","sources":["../../../src/db/migration.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"migration.js","sourceRoot":"","sources":["../../../src/db/migration.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * @fileoverview Migration v12 -- Risk score history for trend detection
3
+ * @see SMI-3864
4
+ *
5
+ * Stores point-in-time risk score snapshots after each security scan.
6
+ * No FOREIGN KEY on skill_id — direct-install skills (GitHub URLs) may not
7
+ * exist in the local skills table (Review #6).
8
+ */
9
+ export declare const MIGRATION_V12_SQL = "\nCREATE TABLE IF NOT EXISTS risk_score_history (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n skill_id TEXT NOT NULL,\n risk_score INTEGER NOT NULL CHECK(risk_score >= 0 AND risk_score <= 100),\n findings_count INTEGER NOT NULL DEFAULT 0,\n content_hash TEXT,\n scanned_at TEXT NOT NULL DEFAULT (datetime('now')),\n source TEXT NOT NULL DEFAULT 'install'\n);\n\nCREATE INDEX IF NOT EXISTS idx_risk_score_history_skill_id\n ON risk_score_history(skill_id);\nCREATE INDEX IF NOT EXISTS idx_risk_score_history_scanned_at\n ON risk_score_history(skill_id, scanned_at);\n";
10
+ //# sourceMappingURL=v12-risk-score-history.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"v12-risk-score-history.d.ts","sourceRoot":"","sources":["../../../../src/db/migrations/v12-risk-score-history.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,eAAO,MAAM,iBAAiB,kkBAe7B,CAAA"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * @fileoverview Migration v12 -- Risk score history for trend detection
3
+ * @see SMI-3864
4
+ *
5
+ * Stores point-in-time risk score snapshots after each security scan.
6
+ * No FOREIGN KEY on skill_id — direct-install skills (GitHub URLs) may not
7
+ * exist in the local skills table (Review #6).
8
+ */
9
+ export const MIGRATION_V12_SQL = `
10
+ CREATE TABLE IF NOT EXISTS risk_score_history (
11
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
12
+ skill_id TEXT NOT NULL,
13
+ risk_score INTEGER NOT NULL CHECK(risk_score >= 0 AND risk_score <= 100),
14
+ findings_count INTEGER NOT NULL DEFAULT 0,
15
+ content_hash TEXT,
16
+ scanned_at TEXT NOT NULL DEFAULT (datetime('now')),
17
+ source TEXT NOT NULL DEFAULT 'install'
18
+ );
19
+
20
+ CREATE INDEX IF NOT EXISTS idx_risk_score_history_skill_id
21
+ ON risk_score_history(skill_id);
22
+ CREATE INDEX IF NOT EXISTS idx_risk_score_history_scanned_at
23
+ ON risk_score_history(skill_id, scanned_at);
24
+ `;
25
+ //# sourceMappingURL=v12-risk-score-history.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"v12-risk-score-history.js","sourceRoot":"","sources":["../../../../src/db/migrations/v12-risk-score-history.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG;;;;;;;;;;;;;;;CAehC,CAAA"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * @fileoverview Migration v13 -- Team visibility and ownership columns
3
+ * @see SMI-3896: Private Skills Publishing
4
+ *
5
+ * Adds `visibility` and `team_id` columns to the skills table so that
6
+ * private skills can be scoped to a team. Community users see only
7
+ * `visibility = 'public'` skills; team members also see skills matching
8
+ * their team_id.
9
+ */
10
+ export declare const MIGRATION_V13_SQL = "\nALTER TABLE skills ADD COLUMN visibility TEXT NOT NULL DEFAULT 'public';\nALTER TABLE skills ADD COLUMN team_id TEXT;\n";
11
+ //# sourceMappingURL=v13-team-tables.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"v13-team-tables.d.ts","sourceRoot":"","sources":["../../../../src/db/migrations/v13-team-tables.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,eAAO,MAAM,iBAAiB,8HAG7B,CAAA"}