@skillsmith/core 0.7.2 → 0.8.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 (266) hide show
  1. package/CHANGELOG.md +19 -0
  2. package/dist/.tsbuildinfo +1 -1
  3. package/dist/src/analytics/ROIDashboardService.compute.d.ts +17 -0
  4. package/dist/src/analytics/ROIDashboardService.compute.d.ts.map +1 -0
  5. package/dist/src/analytics/ROIDashboardService.compute.js +134 -0
  6. package/dist/src/analytics/ROIDashboardService.compute.js.map +1 -0
  7. package/dist/src/analytics/ROIDashboardService.d.ts +0 -8
  8. package/dist/src/analytics/ROIDashboardService.d.ts.map +1 -1
  9. package/dist/src/analytics/ROIDashboardService.js +9 -138
  10. package/dist/src/analytics/ROIDashboardService.js.map +1 -1
  11. package/dist/src/api/client.types.d.ts +5 -0
  12. package/dist/src/api/client.types.d.ts.map +1 -1
  13. package/dist/src/api/index.d.ts +1 -0
  14. package/dist/src/api/index.d.ts.map +1 -1
  15. package/dist/src/api/index.js +4 -0
  16. package/dist/src/api/index.js.map +1 -1
  17. package/dist/src/api/schemas.compatibility.test.d.ts +11 -0
  18. package/dist/src/api/schemas.compatibility.test.d.ts.map +1 -0
  19. package/dist/src/api/schemas.compatibility.test.js +38 -0
  20. package/dist/src/api/schemas.compatibility.test.js.map +1 -0
  21. package/dist/src/api/schemas.d.ts +16 -9
  22. package/dist/src/api/schemas.d.ts.map +1 -1
  23. package/dist/src/api/schemas.js +13 -4
  24. package/dist/src/api/schemas.js.map +1 -1
  25. package/dist/src/api/schemas.license.test.d.ts +11 -0
  26. package/dist/src/api/schemas.license.test.d.ts.map +1 -0
  27. package/dist/src/api/schemas.license.test.js +51 -0
  28. package/dist/src/api/schemas.license.test.js.map +1 -0
  29. package/dist/src/api/types.d.ts +18 -3
  30. package/dist/src/api/types.d.ts.map +1 -1
  31. package/dist/src/api/types.js +29 -2
  32. package/dist/src/api/types.js.map +1 -1
  33. package/dist/src/audit/remote-audit.d.ts +41 -0
  34. package/dist/src/audit/remote-audit.d.ts.map +1 -1
  35. package/dist/src/audit/remote-audit.js +71 -28
  36. package/dist/src/audit/remote-audit.js.map +1 -1
  37. package/dist/src/audit/remote-audit.test.js +89 -1
  38. package/dist/src/audit/remote-audit.test.js.map +1 -1
  39. package/dist/src/compatibility/slugs.d.ts +34 -0
  40. package/dist/src/compatibility/slugs.d.ts.map +1 -0
  41. package/dist/src/compatibility/slugs.js +57 -0
  42. package/dist/src/compatibility/slugs.js.map +1 -0
  43. package/dist/src/db/schema-sql.d.ts +1 -1
  44. package/dist/src/db/schema-sql.d.ts.map +1 -1
  45. package/dist/src/db/schema-sql.js +1 -1
  46. package/dist/src/embeddings/probe.d.ts +62 -0
  47. package/dist/src/embeddings/probe.d.ts.map +1 -0
  48. package/dist/src/embeddings/probe.js +89 -0
  49. package/dist/src/embeddings/probe.js.map +1 -0
  50. package/dist/src/exports/types.d.ts +1 -0
  51. package/dist/src/exports/types.d.ts.map +1 -1
  52. package/dist/src/exports/types.js +4 -0
  53. package/dist/src/exports/types.js.map +1 -1
  54. package/dist/src/index.d.ts +6 -3
  55. package/dist/src/index.d.ts.map +1 -1
  56. package/dist/src/index.js +7 -3
  57. package/dist/src/index.js.map +1 -1
  58. package/dist/src/indexer/GitHubIndexer.d.ts.map +1 -1
  59. package/dist/src/indexer/GitHubIndexer.js +1 -1
  60. package/dist/src/indexer/GitHubIndexer.js.map +1 -1
  61. package/dist/src/provenance/SourceRecoveryService.d.ts +48 -0
  62. package/dist/src/provenance/SourceRecoveryService.d.ts.map +1 -0
  63. package/dist/src/provenance/SourceRecoveryService.js +182 -0
  64. package/dist/src/provenance/SourceRecoveryService.js.map +1 -0
  65. package/dist/src/provenance/backfill.d.ts +47 -0
  66. package/dist/src/provenance/backfill.d.ts.map +1 -0
  67. package/dist/src/provenance/backfill.js +206 -0
  68. package/dist/src/provenance/backfill.js.map +1 -0
  69. package/dist/src/provenance/git-config.d.ts +22 -0
  70. package/dist/src/provenance/git-config.d.ts.map +1 -0
  71. package/dist/src/provenance/git-config.js +117 -0
  72. package/dist/src/provenance/git-config.js.map +1 -0
  73. package/dist/src/provenance/index.d.ts +12 -0
  74. package/dist/src/provenance/index.d.ts.map +1 -0
  75. package/dist/src/provenance/index.js +12 -0
  76. package/dist/src/provenance/index.js.map +1 -0
  77. package/dist/src/provenance/local-skill-scan.d.ts +35 -0
  78. package/dist/src/provenance/local-skill-scan.d.ts.map +1 -0
  79. package/dist/src/provenance/local-skill-scan.js +79 -0
  80. package/dist/src/provenance/local-skill-scan.js.map +1 -0
  81. package/dist/src/provenance/plugin-manifest.d.ts +16 -0
  82. package/dist/src/provenance/plugin-manifest.d.ts.map +1 -0
  83. package/dist/src/provenance/plugin-manifest.js +52 -0
  84. package/dist/src/provenance/plugin-manifest.js.map +1 -0
  85. package/dist/src/provenance/types.d.ts +86 -0
  86. package/dist/src/provenance/types.d.ts.map +1 -0
  87. package/dist/src/provenance/types.js +21 -0
  88. package/dist/src/provenance/types.js.map +1 -0
  89. package/dist/src/repositories/SkillRepository.d.ts.map +1 -1
  90. package/dist/src/repositories/SkillRepository.js +3 -1
  91. package/dist/src/repositories/SkillRepository.js.map +1 -1
  92. package/dist/src/scripts/__tests__/scan-imported-skills.test.js +10 -0
  93. package/dist/src/scripts/__tests__/scan-imported-skills.test.js.map +1 -1
  94. package/dist/src/scripts/validation/normalizers.d.ts.map +1 -1
  95. package/dist/src/scripts/validation/normalizers.js +9 -7
  96. package/dist/src/scripts/validation/normalizers.js.map +1 -1
  97. package/dist/src/scripts/validation/types.d.ts +8 -2
  98. package/dist/src/scripts/validation/types.d.ts.map +1 -1
  99. package/dist/src/scripts/validation/types.js +10 -2
  100. package/dist/src/scripts/validation/types.js.map +1 -1
  101. package/dist/src/security/scanner/SecurityScanner.d.ts +0 -7
  102. package/dist/src/security/scanner/SecurityScanner.d.ts.map +1 -1
  103. package/dist/src/security/scanner/SecurityScanner.exec.d.ts +56 -0
  104. package/dist/src/security/scanner/SecurityScanner.exec.d.ts.map +1 -0
  105. package/dist/src/security/scanner/SecurityScanner.exec.js +255 -0
  106. package/dist/src/security/scanner/SecurityScanner.exec.js.map +1 -0
  107. package/dist/src/security/scanner/SecurityScanner.helpers.d.ts.map +1 -1
  108. package/dist/src/security/scanner/SecurityScanner.helpers.js +17 -1
  109. package/dist/src/security/scanner/SecurityScanner.helpers.js.map +1 -1
  110. package/dist/src/security/scanner/SecurityScanner.js +34 -199
  111. package/dist/src/security/scanner/SecurityScanner.js.map +1 -1
  112. package/dist/src/security/scanner/SecurityScanner.scanners.d.ts +22 -0
  113. package/dist/src/security/scanner/SecurityScanner.scanners.d.ts.map +1 -0
  114. package/dist/src/security/scanner/SecurityScanner.scanners.js +213 -0
  115. package/dist/src/security/scanner/SecurityScanner.scanners.js.map +1 -0
  116. package/dist/src/security/scanner/index.d.ts +1 -1
  117. package/dist/src/security/scanner/index.d.ts.map +1 -1
  118. package/dist/src/security/scanner/index.js +1 -1
  119. package/dist/src/security/scanner/index.js.map +1 -1
  120. package/dist/src/security/scanner/patterns.d.ts +21 -0
  121. package/dist/src/security/scanner/patterns.d.ts.map +1 -1
  122. package/dist/src/security/scanner/patterns.js +34 -0
  123. package/dist/src/security/scanner/patterns.js.map +1 -1
  124. package/dist/src/security/scanner/types.d.ts +3 -1
  125. package/dist/src/security/scanner/types.d.ts.map +1 -1
  126. package/dist/src/security/scanner/weights.d.ts.map +1 -1
  127. package/dist/src/security/scanner/weights.js +6 -0
  128. package/dist/src/security/scanner/weights.js.map +1 -1
  129. package/dist/src/services/SearchService.helpers.d.ts.map +1 -1
  130. package/dist/src/services/SearchService.helpers.js +2 -0
  131. package/dist/src/services/SearchService.helpers.js.map +1 -1
  132. package/dist/src/services/SearchService.types.d.ts +1 -0
  133. package/dist/src/services/SearchService.types.d.ts.map +1 -1
  134. package/dist/src/services/skill-installation.helpers.d.ts +2 -26
  135. package/dist/src/services/skill-installation.helpers.d.ts.map +1 -1
  136. package/dist/src/services/skill-installation.helpers.js +2 -120
  137. package/dist/src/services/skill-installation.helpers.js.map +1 -1
  138. package/dist/src/services/skill-installation.io.d.ts +43 -0
  139. package/dist/src/services/skill-installation.io.d.ts.map +1 -0
  140. package/dist/src/services/skill-installation.io.js +176 -0
  141. package/dist/src/services/skill-installation.io.js.map +1 -0
  142. package/dist/src/services/skill-installation.service.d.ts.map +1 -1
  143. package/dist/src/services/skill-installation.service.js +51 -113
  144. package/dist/src/services/skill-installation.service.js.map +1 -1
  145. package/dist/src/services/skill-installation.types.d.ts.map +1 -1
  146. package/dist/src/services/skill-installation.types.js +9 -0
  147. package/dist/src/services/skill-installation.types.js.map +1 -1
  148. package/dist/src/services/skill-installation.validate.d.ts +44 -0
  149. package/dist/src/services/skill-installation.validate.d.ts.map +1 -0
  150. package/dist/src/services/skill-installation.validate.js +134 -0
  151. package/dist/src/services/skill-installation.validate.js.map +1 -0
  152. package/dist/src/telemetry/index.d.ts +2 -1
  153. package/dist/src/telemetry/index.d.ts.map +1 -1
  154. package/dist/src/telemetry/index.js +4 -1
  155. package/dist/src/telemetry/index.js.map +1 -1
  156. package/dist/src/telemetry/posthog.d.ts +19 -1
  157. package/dist/src/telemetry/posthog.d.ts.map +1 -1
  158. package/dist/src/telemetry/posthog.js +14 -0
  159. package/dist/src/telemetry/posthog.js.map +1 -1
  160. package/dist/src/telemetry/wrap.bench.d.ts +13 -0
  161. package/dist/src/telemetry/wrap.bench.d.ts.map +1 -0
  162. package/dist/src/telemetry/wrap.bench.js +41 -0
  163. package/dist/src/telemetry/wrap.bench.js.map +1 -0
  164. package/dist/src/telemetry/wrap.d.ts +75 -0
  165. package/dist/src/telemetry/wrap.d.ts.map +1 -0
  166. package/dist/src/telemetry/wrap.js +124 -0
  167. package/dist/src/telemetry/wrap.js.map +1 -0
  168. package/dist/src/telemetry/wrap.test.d.ts +14 -0
  169. package/dist/src/telemetry/wrap.test.d.ts.map +1 -0
  170. package/dist/src/telemetry/wrap.test.js +283 -0
  171. package/dist/src/telemetry/wrap.test.js.map +1 -0
  172. package/dist/src/types/skill.d.ts +6 -1
  173. package/dist/src/types/skill.d.ts.map +1 -1
  174. package/dist/src/types/skill.js.map +1 -1
  175. package/dist/src/types.d.ts +25 -1
  176. package/dist/src/types.d.ts.map +1 -1
  177. package/dist/src/types.js +3 -1
  178. package/dist/src/types.js.map +1 -1
  179. package/dist/tests/GitHubIndexer.edge-cases.test.js +2 -2
  180. package/dist/tests/GitHubIndexer.repository.test.d.ts +10 -0
  181. package/dist/tests/GitHubIndexer.repository.test.d.ts.map +1 -0
  182. package/dist/tests/GitHubIndexer.repository.test.js +190 -0
  183. package/dist/tests/GitHubIndexer.repository.test.js.map +1 -0
  184. package/dist/tests/GitHubIndexer.test.d.ts +2 -1
  185. package/dist/tests/GitHubIndexer.test.d.ts.map +1 -1
  186. package/dist/tests/GitHubIndexer.test.js +5 -183
  187. package/dist/tests/GitHubIndexer.test.js.map +1 -1
  188. package/dist/tests/QuarantineRepository.review-state-machine.test.d.ts +14 -0
  189. package/dist/tests/QuarantineRepository.review-state-machine.test.d.ts.map +1 -0
  190. package/dist/tests/QuarantineRepository.review-state-machine.test.js +296 -0
  191. package/dist/tests/QuarantineRepository.review-state-machine.test.js.map +1 -0
  192. package/dist/tests/RawUrlSourceAdapter.security.test.js +3 -2
  193. package/dist/tests/RawUrlSourceAdapter.security.test.js.map +1 -1
  194. package/dist/tests/SecurityScanner.exec.test.d.ts +11 -0
  195. package/dist/tests/SecurityScanner.exec.test.d.ts.map +1 -0
  196. package/dist/tests/SecurityScanner.exec.test.js +190 -0
  197. package/dist/tests/SecurityScanner.exec.test.js.map +1 -0
  198. package/dist/tests/SwarmIndexer.test.js +2 -2
  199. package/dist/tests/api/client.validation.test.js +7 -4
  200. package/dist/tests/api/client.validation.test.js.map +1 -1
  201. package/dist/tests/embeddings/probe.test.d.ts +13 -0
  202. package/dist/tests/embeddings/probe.test.d.ts.map +1 -0
  203. package/dist/tests/embeddings/probe.test.js +154 -0
  204. package/dist/tests/embeddings/probe.test.js.map +1 -0
  205. package/dist/tests/fixtures/api-responses/index.js +1 -1
  206. package/dist/tests/fixtures/api-responses/index.js.map +1 -1
  207. package/dist/tests/integration/QuarantineService.concurrency.test.d.ts +34 -0
  208. package/dist/tests/integration/QuarantineService.concurrency.test.d.ts.map +1 -0
  209. package/dist/tests/integration/QuarantineService.concurrency.test.js +280 -0
  210. package/dist/tests/integration/QuarantineService.concurrency.test.js.map +1 -0
  211. package/dist/tests/integration/openapi-contract.test.d.ts +16 -0
  212. package/dist/tests/integration/openapi-contract.test.d.ts.map +1 -0
  213. package/dist/tests/integration/openapi-contract.test.js +231 -0
  214. package/dist/tests/integration/openapi-contract.test.js.map +1 -0
  215. package/dist/tests/provenance/SourceRecoveryService.test.d.ts +2 -0
  216. package/dist/tests/provenance/SourceRecoveryService.test.d.ts.map +1 -0
  217. package/dist/tests/provenance/SourceRecoveryService.test.js +132 -0
  218. package/dist/tests/provenance/SourceRecoveryService.test.js.map +1 -0
  219. package/dist/tests/provenance/backfill.test.d.ts +2 -0
  220. package/dist/tests/provenance/backfill.test.d.ts.map +1 -0
  221. package/dist/tests/provenance/backfill.test.js +278 -0
  222. package/dist/tests/provenance/backfill.test.js.map +1 -0
  223. package/dist/tests/provenance/git-config.test.d.ts +2 -0
  224. package/dist/tests/provenance/git-config.test.d.ts.map +1 -0
  225. package/dist/tests/provenance/git-config.test.js +73 -0
  226. package/dist/tests/provenance/git-config.test.js.map +1 -0
  227. package/dist/tests/provenance/local-skill-scan.test.d.ts +2 -0
  228. package/dist/tests/provenance/local-skill-scan.test.d.ts.map +1 -0
  229. package/dist/tests/provenance/local-skill-scan.test.js +51 -0
  230. package/dist/tests/provenance/local-skill-scan.test.js.map +1 -0
  231. package/dist/tests/provenance/plugin-manifest.test.d.ts +2 -0
  232. package/dist/tests/provenance/plugin-manifest.test.d.ts.map +1 -0
  233. package/dist/tests/provenance/plugin-manifest.test.js +49 -0
  234. package/dist/tests/provenance/plugin-manifest.test.js.map +1 -0
  235. package/dist/tests/scripts/import-to-database.test.js +7 -1
  236. package/dist/tests/scripts/import-to-database.test.js.map +1 -1
  237. package/dist/tests/security/scanner-regression-guard.test.js +5 -1
  238. package/dist/tests/security/scanner-regression-guard.test.js.map +1 -1
  239. package/dist/tests/security.test.js +45 -0
  240. package/dist/tests/security.test.js.map +1 -1
  241. package/dist/tests/services/aidefence-feedback.test.js +2 -0
  242. package/dist/tests/services/aidefence-feedback.test.js.map +1 -1
  243. package/dist/tests/services/dep-quarantine-check.test.js +1 -1
  244. package/dist/tests/services/dep-quarantine-check.test.js.map +1 -1
  245. package/dist/tests/skill-scanner/allowlist.test.js +8 -1
  246. package/dist/tests/skill-scanner/allowlist.test.js.map +1 -1
  247. package/dist/tests/unit/services/skill-installation.gap1.test.d.ts +12 -0
  248. package/dist/tests/unit/services/skill-installation.gap1.test.d.ts.map +1 -0
  249. package/dist/tests/unit/services/skill-installation.gap1.test.js +96 -0
  250. package/dist/tests/unit/services/skill-installation.gap1.test.js.map +1 -0
  251. package/dist/tests/unit/services/skill-installation.io.test.d.ts +11 -0
  252. package/dist/tests/unit/services/skill-installation.io.test.d.ts.map +1 -0
  253. package/dist/tests/unit/services/skill-installation.io.test.js +130 -0
  254. package/dist/tests/unit/services/skill-installation.io.test.js.map +1 -0
  255. package/dist/tests/validate-skills.dedup.test.d.ts +5 -0
  256. package/dist/tests/validate-skills.dedup.test.d.ts.map +1 -0
  257. package/dist/tests/validate-skills.dedup.test.js +241 -0
  258. package/dist/tests/validate-skills.dedup.test.js.map +1 -0
  259. package/dist/tests/validate-skills.normalizers.test.d.ts +5 -0
  260. package/dist/tests/validate-skills.normalizers.test.d.ts.map +1 -0
  261. package/dist/tests/validate-skills.normalizers.test.js +109 -0
  262. package/dist/tests/validate-skills.normalizers.test.js.map +1 -0
  263. package/dist/tests/validate-skills.test.d.ts +1 -1
  264. package/dist/tests/validate-skills.test.js +7 -345
  265. package/dist/tests/validate-skills.test.js.map +1 -1
  266. package/package.json +29 -8
@@ -6,14 +6,15 @@
6
6
  */
7
7
  import { z } from 'zod';
8
8
  /**
9
- * Trust tier enum values
9
+ * Trust tier enum values — public-facing API values only.
10
+ * SMI-5205: experimental/unknown translated to community/unverified at response layer.
10
11
  */
11
12
  export declare const TrustTierSchema: z.ZodEnum<{
13
+ official: "official";
12
14
  verified: "verified";
13
15
  curated: "curated";
14
16
  community: "community";
15
- experimental: "experimental";
16
- unknown: "unknown";
17
+ unverified: "unverified";
17
18
  }>;
18
19
  /**
19
20
  * Schema for individual search result from API
@@ -28,11 +29,11 @@ export declare const ApiSearchResultSchema: z.ZodObject<{
28
29
  repo_url: z.ZodOptional<z.ZodNullable<z.ZodString>>;
29
30
  quality_score: z.ZodNullable<z.ZodNumber>;
30
31
  trust_tier: z.ZodDefault<z.ZodOptional<z.ZodEnum<{
32
+ official: "official";
31
33
  verified: "verified";
32
34
  curated: "curated";
33
35
  community: "community";
34
- experimental: "experimental";
35
- unknown: "unknown";
36
+ unverified: "unverified";
36
37
  }>>>;
37
38
  tags: z.ZodDefault<z.ZodArray<z.ZodString>>;
38
39
  stars: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
@@ -41,10 +42,12 @@ export declare const ApiSearchResultSchema: z.ZodObject<{
41
42
  created_at: z.ZodOptional<z.ZodString>;
42
43
  updated_at: z.ZodOptional<z.ZodString>;
43
44
  categories: z.ZodOptional<z.ZodArray<z.ZodString>>;
45
+ compatibility: z.ZodOptional<z.ZodArray<z.ZodString>>;
44
46
  security_score: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
45
47
  last_scanned_at: z.ZodOptional<z.ZodNullable<z.ZodString>>;
46
48
  security_findings: z.ZodOptional<z.ZodNullable<z.ZodArray<z.ZodUnknown>>>;
47
49
  quarantined: z.ZodOptional<z.ZodBoolean>;
50
+ license: z.ZodOptional<z.ZodNullable<z.ZodString>>;
48
51
  }, z.core.$strip>;
49
52
  /**
50
53
  * Schema for generic API response wrapper
@@ -130,11 +133,11 @@ export declare const SearchResponseSchema: z.ZodObject<{
130
133
  repo_url: z.ZodOptional<z.ZodNullable<z.ZodString>>;
131
134
  quality_score: z.ZodNullable<z.ZodNumber>;
132
135
  trust_tier: z.ZodDefault<z.ZodOptional<z.ZodEnum<{
136
+ official: "official";
133
137
  verified: "verified";
134
138
  curated: "curated";
135
139
  community: "community";
136
- experimental: "experimental";
137
- unknown: "unknown";
140
+ unverified: "unverified";
138
141
  }>>>;
139
142
  tags: z.ZodDefault<z.ZodArray<z.ZodString>>;
140
143
  stars: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
@@ -143,10 +146,12 @@ export declare const SearchResponseSchema: z.ZodObject<{
143
146
  created_at: z.ZodOptional<z.ZodString>;
144
147
  updated_at: z.ZodOptional<z.ZodString>;
145
148
  categories: z.ZodOptional<z.ZodArray<z.ZodString>>;
149
+ compatibility: z.ZodOptional<z.ZodArray<z.ZodString>>;
146
150
  security_score: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
147
151
  last_scanned_at: z.ZodOptional<z.ZodNullable<z.ZodString>>;
148
152
  security_findings: z.ZodOptional<z.ZodNullable<z.ZodArray<z.ZodUnknown>>>;
149
153
  quarantined: z.ZodOptional<z.ZodBoolean>;
154
+ license: z.ZodOptional<z.ZodNullable<z.ZodString>>;
150
155
  }, z.core.$strip>>;
151
156
  meta: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
152
157
  }, z.core.$strip>;
@@ -163,11 +168,11 @@ export declare const SingleSkillResponseSchema: z.ZodObject<{
163
168
  repo_url: z.ZodOptional<z.ZodNullable<z.ZodString>>;
164
169
  quality_score: z.ZodNullable<z.ZodNumber>;
165
170
  trust_tier: z.ZodDefault<z.ZodOptional<z.ZodEnum<{
171
+ official: "official";
166
172
  verified: "verified";
167
173
  curated: "curated";
168
174
  community: "community";
169
- experimental: "experimental";
170
- unknown: "unknown";
175
+ unverified: "unverified";
171
176
  }>>>;
172
177
  tags: z.ZodDefault<z.ZodArray<z.ZodString>>;
173
178
  stars: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
@@ -176,10 +181,12 @@ export declare const SingleSkillResponseSchema: z.ZodObject<{
176
181
  created_at: z.ZodOptional<z.ZodString>;
177
182
  updated_at: z.ZodOptional<z.ZodString>;
178
183
  categories: z.ZodOptional<z.ZodArray<z.ZodString>>;
184
+ compatibility: z.ZodOptional<z.ZodArray<z.ZodString>>;
179
185
  security_score: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
180
186
  last_scanned_at: z.ZodOptional<z.ZodNullable<z.ZodString>>;
181
187
  security_findings: z.ZodOptional<z.ZodNullable<z.ZodArray<z.ZodUnknown>>>;
182
188
  quarantined: z.ZodOptional<z.ZodBoolean>;
189
+ license: z.ZodOptional<z.ZodNullable<z.ZodString>>;
183
190
  }, z.core.$strip>;
184
191
  meta: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
185
192
  }, z.core.$strip>;
@@ -1 +1 @@
1
- {"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../../../src/api/schemas.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAMvB;;GAEG;AACH,eAAO,MAAM,eAAe;;;;;;EAM1B,CAAA;AAMF;;;GAGG;AACH,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;iBAwBhC,CAAA;AAMF;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,CAAC,SAAS,CAAC,CAAC,UAAU,EAAE,UAAU,EAAE,CAAC;;;kBAK5E;AAMD;;GAEG;AACH,eAAO,MAAM,uBAAuB;;;;;iBAKlC,CAAA;AAMF;;;GAGG;AACH,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;iBAc/B,CAAA;AAEF;;GAEG;AACH,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;iBAEpC,CAAA;AAEF;;;GAGG;AACH,eAAO,MAAM,4BAA4B;;;;;;;;iBAYvC,CAAA;AAEF,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAA;AACxE,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAA;AAC3E,MAAM,MAAM,sBAAsB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,4BAA4B,CAAC,CAAA;AAMjF;;GAEG;AACH,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAA0D,CAAA;AAE3F;;GAEG;AACH,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAAiD,CAAA;AAMvF;;GAEG;AACH,MAAM,MAAM,wBAAwB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAA;AAE5E;;GAEG;AACH,MAAM,MAAM,uBAAuB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAA;AAE1E;;GAEG;AACH,MAAM,MAAM,4BAA4B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAA;AAEpF;;GAEG;AACH,MAAM,MAAM,0BAA0B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAA"}
1
+ {"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../../../src/api/schemas.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAMvB;;;GAGG;AACH,eAAO,MAAM,eAAe;;;;;;EAM1B,CAAA;AAMF;;;GAGG;AACH,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAgChC,CAAA;AAMF;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,CAAC,SAAS,CAAC,CAAC,UAAU,EAAE,UAAU,EAAE,CAAC;;;kBAK5E;AAMD;;GAEG;AACH,eAAO,MAAM,uBAAuB;;;;;iBAKlC,CAAA;AAMF;;;GAGG;AACH,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;iBAc/B,CAAA;AAEF;;GAEG;AACH,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;iBAEpC,CAAA;AAEF;;;GAGG;AACH,eAAO,MAAM,4BAA4B;;;;;;;;iBAYvC,CAAA;AAEF,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAA;AACxE,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAA;AAC3E,MAAM,MAAM,sBAAsB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,4BAA4B,CAAC,CAAA;AAMjF;;GAEG;AACH,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAA0D,CAAA;AAE3F;;GAEG;AACH,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAAiD,CAAA;AAMvF;;GAEG;AACH,MAAM,MAAM,wBAAwB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAA;AAE5E;;GAEG;AACH,MAAM,MAAM,uBAAuB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAA;AAE1E;;GAEG;AACH,MAAM,MAAM,4BAA4B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAA;AAEpF;;GAEG;AACH,MAAM,MAAM,0BAA0B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAA"}
@@ -9,14 +9,15 @@ import { z } from 'zod';
9
9
  // Trust Tier Schema
10
10
  // ============================================================================
11
11
  /**
12
- * Trust tier enum values
12
+ * Trust tier enum values — public-facing API values only.
13
+ * SMI-5205: experimental/unknown translated to community/unverified at response layer.
13
14
  */
14
15
  export const TrustTierSchema = z.enum([
16
+ 'official',
15
17
  'verified',
16
18
  'curated',
17
19
  'community',
18
- 'experimental',
19
- 'unknown',
20
+ 'unverified',
20
21
  ]);
21
22
  // ============================================================================
22
23
  // API Search Result Schema
@@ -33,7 +34,7 @@ export const ApiSearchResultSchema = z.object({
33
34
  publisher: z.string().nullable().optional(),
34
35
  repo_url: z.string().nullable().optional(),
35
36
  quality_score: z.number().nullable(),
36
- trust_tier: TrustTierSchema.optional().default('unknown'),
37
+ trust_tier: TrustTierSchema.optional().default('unverified'),
37
38
  tags: z.array(z.string()).default([]),
38
39
  stars: z.number().nullable().optional(),
39
40
  installable: z.boolean().nullable().optional(),
@@ -45,10 +46,18 @@ export const ApiSearchResultSchema = z.object({
45
46
  // also be declared here or Zod strips them before get-skill.ts can read them.
46
47
  // All .optional() — skills-search doesn't select these columns.
47
48
  categories: z.array(z.string()).optional(),
49
+ // SMI-5178: cross-ecosystem compatibility slugs. Declared here so Zod does not
50
+ // strip the field skills-search now hydrates — without this the MCP compatibility
51
+ // filter reads `undefined` and the restrictive default is a no-op.
52
+ compatibility: z.array(z.string()).optional(),
48
53
  security_score: z.number().nullable().optional(),
49
54
  last_scanned_at: z.string().nullable().optional(),
50
55
  security_findings: z.array(z.unknown()).nullable().optional(),
51
56
  quarantined: z.boolean().optional(),
57
+ // SMI-5327: SPDX license surfaced by skills-get / skills-search. Declared here
58
+ // so Zod does not strip the field before get-skill.ts / search.ts read it
59
+ // (same reason as compatibility above). skills-search may omit it → optional.
60
+ license: z.string().nullable().optional(),
52
61
  });
53
62
  // ============================================================================
54
63
  // API Response Schema Factory
@@ -1 +1 @@
1
- {"version":3,"file":"schemas.js","sourceRoot":"","sources":["../../../src/api/schemas.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"schemas.js","sourceRoot":"","sources":["../../../src/api/schemas.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,+EAA+E;AAC/E,oBAAoB;AACpB,+EAA+E;AAE/E;;;GAGG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC,IAAI,CAAC;IACpC,UAAU;IACV,UAAU;IACV,SAAS;IACT,WAAW;IACX,YAAY;CACb,CAAC,CAAA;AAEF,+EAA+E;AAC/E,2BAA2B;AAC3B,+EAA+E;AAE/E;;;GAGG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC5C,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;IACd,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAClC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC7B,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;IAC3C,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;IAC1C,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACpC,UAAU,EAAE,eAAe,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,YAAY,CAAC;IAC5D,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;IACrC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;IACvC,WAAW,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;IAC9C,8EAA8E;IAC9E,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;IACzC,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACjC,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACjC,4EAA4E;IAC5E,8EAA8E;IAC9E,gEAAgE;IAChE,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;IAC1C,+EAA+E;IAC/E,kFAAkF;IAClF,mEAAmE;IACnE,aAAa,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;IAC7C,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;IAChD,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;IACjD,iBAAiB,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;IAC7D,WAAW,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IACnC,+EAA+E;IAC/E,0EAA0E;IAC1E,8EAA8E;IAC9E,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;CAC1C,CAAC,CAAA;AAEF,+EAA+E;AAC/E,8BAA8B;AAC9B,+EAA+E;AAE/E;;GAEG;AACH,MAAM,UAAU,uBAAuB,CAAyB,UAAa;IAC3E,OAAO,CAAC,CAAC,MAAM,CAAC;QACd,IAAI,EAAE,UAAU;QAChB,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE;KACnD,CAAC,CAAA;AACJ,CAAC;AAED,+EAA+E;AAC/E,mBAAmB;AACnB,+EAA+E;AAE/E;;GAEG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC9C,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;QACb,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE;KAChB,CAAC;IACF,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE;CACnD,CAAC,CAAA;AAEF,+EAA+E;AAC/E,qCAAqC;AACrC,+EAA+E;AAE/E;;;GAGG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3C,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC;QACZ,YAAY;QACZ,eAAe;QACf,iBAAiB;QACjB,YAAY;QACZ,QAAQ;QACR,WAAW;QACX,SAAS;QACT,UAAU;KACX,CAAC;IACF,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC/B,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE;IACxB,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE;CACvD,CAAC,CAAA;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,CAAC,MAAM,CAAC;IAChD,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;CACrD,CAAC,CAAA;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAAC,CAAC,MAAM,CAAC;IACnD,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE;IACf,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACjC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACjC,MAAM,EAAE,CAAC;SACN,KAAK,CACJ,CAAC,CAAC,MAAM,CAAC;QACP,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE;QACvB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;KACnB,CAAC,CACH;SACA,QAAQ,EAAE;CACd,CAAC,CAAA;AAMF,+EAA+E;AAC/E,6BAA6B;AAC7B,+EAA+E;AAE/E;;GAEG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,uBAAuB,CAAC,CAAC,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC,CAAA;AAE3F;;GAEG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,uBAAuB,CAAC,qBAAqB,CAAC,CAAA"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * SMI-5327: regression guard for the Zod strip boundary.
3
+ *
4
+ * ApiSearchResultSchema is a `z.object` (strip-by-default). `license` is surfaced
5
+ * by skills-get / skills-search (SMI-5320) but is silently dropped before the MCP
6
+ * `search` / `get_skill` tools can read it unless declared in the schema — which
7
+ * would make the license display a permanent "Unknown". This test fails the moment
8
+ * `license` is removed from the schema. Mirrors schemas.compatibility.test.ts.
9
+ */
10
+ export {};
11
+ //# sourceMappingURL=schemas.license.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schemas.license.test.d.ts","sourceRoot":"","sources":["../../../src/api/schemas.license.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG"}
@@ -0,0 +1,51 @@
1
+ /**
2
+ * SMI-5327: regression guard for the Zod strip boundary.
3
+ *
4
+ * ApiSearchResultSchema is a `z.object` (strip-by-default). `license` is surfaced
5
+ * by skills-get / skills-search (SMI-5320) but is silently dropped before the MCP
6
+ * `search` / `get_skill` tools can read it unless declared in the schema — which
7
+ * would make the license display a permanent "Unknown". This test fails the moment
8
+ * `license` is removed from the schema. Mirrors schemas.compatibility.test.ts.
9
+ */
10
+ import { describe, it, expect } from 'vitest';
11
+ import { ApiSearchResultSchema } from './schemas.js';
12
+ describe('ApiSearchResultSchema — license passthrough (SMI-5327)', () => {
13
+ it('retains an SPDX license string through parse (not stripped)', () => {
14
+ const parsed = ApiSearchResultSchema.parse({
15
+ id: 'acme/skill',
16
+ name: 'skill',
17
+ description: 'desc',
18
+ author: 'acme',
19
+ quality_score: 0.9,
20
+ trust_tier: 'verified',
21
+ tags: ['testing'],
22
+ license: 'MIT',
23
+ });
24
+ expect(parsed.license).toBe('MIT');
25
+ });
26
+ it('retains an explicit null license through parse (null = unknown, not dropped)', () => {
27
+ const parsed = ApiSearchResultSchema.parse({
28
+ id: 'acme/skill',
29
+ name: 'skill',
30
+ description: 'desc',
31
+ author: 'acme',
32
+ quality_score: 0.9,
33
+ trust_tier: 'verified',
34
+ tags: ['testing'],
35
+ license: null,
36
+ });
37
+ expect(parsed.license).toBeNull();
38
+ });
39
+ it('is optional — absent license parses without error', () => {
40
+ const parsed = ApiSearchResultSchema.parse({
41
+ id: 'acme/skill',
42
+ name: 'skill',
43
+ description: null,
44
+ author: null,
45
+ quality_score: null,
46
+ tags: [],
47
+ });
48
+ expect(parsed.license).toBeUndefined();
49
+ });
50
+ });
51
+ //# sourceMappingURL=schemas.license.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schemas.license.test.js","sourceRoot":"","sources":["../../../src/api/schemas.license.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAC7C,OAAO,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAA;AAEpD,QAAQ,CAAC,wDAAwD,EAAE,GAAG,EAAE;IACtE,EAAE,CAAC,6DAA6D,EAAE,GAAG,EAAE;QACrE,MAAM,MAAM,GAAG,qBAAqB,CAAC,KAAK,CAAC;YACzC,EAAE,EAAE,YAAY;YAChB,IAAI,EAAE,OAAO;YACb,WAAW,EAAE,MAAM;YACnB,MAAM,EAAE,MAAM;YACd,aAAa,EAAE,GAAG;YAClB,UAAU,EAAE,UAAU;YACtB,IAAI,EAAE,CAAC,SAAS,CAAC;YACjB,OAAO,EAAE,KAAK;SACf,CAAC,CAAA;QACF,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IACpC,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,8EAA8E,EAAE,GAAG,EAAE;QACtF,MAAM,MAAM,GAAG,qBAAqB,CAAC,KAAK,CAAC;YACzC,EAAE,EAAE,YAAY;YAChB,IAAI,EAAE,OAAO;YACb,WAAW,EAAE,MAAM;YACnB,MAAM,EAAE,MAAM;YACd,aAAa,EAAE,GAAG;YAClB,UAAU,EAAE,UAAU;YACtB,IAAI,EAAE,CAAC,SAAS,CAAC;YACjB,OAAO,EAAE,IAAI;SACd,CAAC,CAAA;QACF,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,CAAA;IACnC,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,mDAAmD,EAAE,GAAG,EAAE;QAC3D,MAAM,MAAM,GAAG,qBAAqB,CAAC,KAAK,CAAC;YACzC,EAAE,EAAE,YAAY;YAChB,IAAI,EAAE,OAAO;YACb,WAAW,EAAE,IAAI;YACjB,MAAM,EAAE,IAAI;YACZ,aAAa,EAAE,IAAI;YACnB,IAAI,EAAE,EAAE;SACT,CAAC,CAAA;QACF,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,aAAa,EAAE,CAAA;IACxC,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
@@ -2,17 +2,19 @@
2
2
  * API Types matching OpenAPI specification
3
3
  * @module api/types
4
4
  *
5
- * These types are aligned with docs/api/openapi.yaml for type-safe API interactions.
5
+ * These types are aligned with docs/internal/api/openapi.yaml for type-safe API interactions.
6
6
  * Uses snake_case for API wire format compatibility.
7
7
  */
8
8
  /**
9
9
  * Trust tier levels from API
10
10
  */
11
- export type ApiTrustTier = 'verified' | 'community' | 'experimental' | 'unknown';
11
+ export declare const API_TRUST_TIERS: readonly ["official", "verified", "curated", "community", "unverified"];
12
+ export type ApiTrustTier = (typeof API_TRUST_TIERS)[number];
12
13
  /**
13
14
  * Skill category filter values
14
15
  */
15
- export type ApiCategory = 'Development' | 'Testing' | 'DevOps' | 'Documentation' | 'Productivity' | 'Security';
16
+ export declare const API_CATEGORIES: readonly ["Development", "Testing", "DevOps", "Documentation", "Productivity", "Security"];
17
+ export type ApiCategory = (typeof API_CATEGORIES)[number];
16
18
  /**
17
19
  * Project type for recommendations
18
20
  */
@@ -48,6 +50,13 @@ export interface ApiSkill {
48
50
  updated_at: string;
49
51
  /** Associated category names (joined from skill_categories by skills-get) */
50
52
  categories?: string[];
53
+ /**
54
+ * SMI-5178: Cross-ecosystem compatibility slugs (e.g. ["claude-code","copilot"]),
55
+ * derived from skill_path by the indexer (SMI-5177). `[]`/absent = unknown/unscoped,
56
+ * NOT incompatible. Hydrated onto search results by skills-search; returned by
57
+ * skills-get via `.select('*')`.
58
+ */
59
+ compatibility?: string[];
51
60
  /**
52
61
  * SMI-4240: Security scan fields returned by skills-get via `...skill` spread.
53
62
  * All optional/nullable to preserve compatibility with pre-4240 responses and
@@ -61,6 +70,12 @@ export interface ApiSkill {
61
70
  security_findings?: unknown[] | null;
62
71
  /** True when the skill is quarantined due to security score threshold */
63
72
  quarantined?: boolean;
73
+ /**
74
+ * SMI-5327: SPDX license identifier returned by skills-get / skills-search
75
+ * (e.g. "MIT", "Apache-2.0"). Null means "unknown / not detected" — NOT
76
+ * "no restrictions" or "freely usable".
77
+ */
78
+ license?: string | null;
64
79
  }
65
80
  /**
66
81
  * Search result from API (Skill with rank)
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/api/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/api/types.ts"],"names":[],"mappings":"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"}
@@ -2,8 +2,35 @@
2
2
  * API Types matching OpenAPI specification
3
3
  * @module api/types
4
4
  *
5
- * These types are aligned with docs/api/openapi.yaml for type-safe API interactions.
5
+ * These types are aligned with docs/internal/api/openapi.yaml for type-safe API interactions.
6
6
  * Uses snake_case for API wire format compatibility.
7
7
  */
8
- export {};
8
+ // ============================================================================
9
+ // Trust Tier (matches OpenAPI trust_tier enum)
10
+ // ============================================================================
11
+ /**
12
+ * Trust tier levels from API
13
+ */
14
+ // SMI-5205: 5-tier public model; experimental/unknown are internal only (translated at response layer)
15
+ export const API_TRUST_TIERS = [
16
+ 'official',
17
+ 'verified',
18
+ 'curated',
19
+ 'community',
20
+ 'unverified',
21
+ ];
22
+ // ============================================================================
23
+ // Category (matches OpenAPI category enum)
24
+ // ============================================================================
25
+ /**
26
+ * Skill category filter values
27
+ */
28
+ export const API_CATEGORIES = [
29
+ 'Development',
30
+ 'Testing',
31
+ 'DevOps',
32
+ 'Documentation',
33
+ 'Productivity',
34
+ 'Security',
35
+ ];
9
36
  //# sourceMappingURL=types.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/api/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/api/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,+EAA+E;AAC/E,+CAA+C;AAC/C,+EAA+E;AAE/E;;GAEG;AACH,uGAAuG;AACvG,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,UAAU;IACV,UAAU;IACV,SAAS;IACT,WAAW;IACX,YAAY;CACJ,CAAA;AAGV,+EAA+E;AAC/E,2CAA2C;AAC3C,+EAA+E;AAE/E;;GAEG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,aAAa;IACb,SAAS;IACT,QAAQ;IACR,eAAe;IACf,cAAc;IACd,UAAU;CACF,CAAA"}
@@ -6,6 +6,24 @@ export interface InstallEventPayload {
6
6
  trustTier?: string;
7
7
  errorCode?: string;
8
8
  }
9
+ /**
10
+ * SMI-5193: Search-event payload emitted from the MCP `search` tool to the
11
+ * Skillsmith telemetry endpoint (`/functions/v1/events`).
12
+ *
13
+ * **All keys MUST be snake_case** — the `events` edge function's
14
+ * `sanitizeMetadata` allowlists `results_count`, `duration_ms`, `has_query`,
15
+ * `trust_tier`, `category`. camelCase variants are silently dropped server-side
16
+ * (event accepted, metadata lost). The event name is `'search'` (in the edge
17
+ * function's `ALLOWED_EVENTS`); `'skill_search'` would 400 silently.
18
+ */
19
+ export interface SearchEventPayload {
20
+ query: string;
21
+ results_count: number;
22
+ duration_ms: number;
23
+ has_query: boolean;
24
+ trust_tier?: string;
25
+ category?: string;
26
+ }
9
27
  /**
10
28
  * Emit a skill-install event to Skillsmith's remote telemetry endpoint.
11
29
  *
@@ -25,4 +43,27 @@ export interface InstallEventPayload {
25
43
  * metadata: { skill_id, source, success, duration_ms?, trust_tier?, error_code? }
26
44
  */
27
45
  export declare function emitInstallEvent(payload: InstallEventPayload): Promise<void>;
46
+ /**
47
+ * SMI-5193: Emit a search event to Skillsmith's remote telemetry endpoint.
48
+ *
49
+ * Fire-and-forget (synchronous, returns `void`) — wraps `postTelemetryEvent`
50
+ * with `void` so the caller never awaits. The MCP search tool calls this
51
+ * after a search completes so the usage report's search count reflects MCP
52
+ * searches (landing in `search_metrics` via the `events` edge function).
53
+ *
54
+ * Silently skips in these cases:
55
+ * - No API key available (CLI offline / unauthenticated)
56
+ * - SKILLSMITH_TELEMETRY=0 (opt-out)
57
+ * - Network / endpoint failure
58
+ *
59
+ * CRITICAL — silent-failure modes that motivated this signature:
60
+ * - `event` MUST be `'search'` (in `events/index.ts` ALLOWED_EVENTS).
61
+ * `'skill_search'` would 400 silently.
62
+ * - `anonymous_id` is REQUIRED (validated as 16-128 char hex server-side).
63
+ * Missing → 400 silently.
64
+ * - Metadata keys MUST be snake_case — `sanitizeMetadata` allowlists
65
+ * `results_count`, `duration_ms`, `has_query`, `trust_tier`, `category`.
66
+ * camelCase variants are silently dropped.
67
+ */
68
+ export declare function emitSearchEvent(payload: SearchEventPayload): void;
28
69
  //# sourceMappingURL=remote-audit.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"remote-audit.d.ts","sourceRoot":"","sources":["../../../src/audit/remote-audit.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,KAAK,GAAG,KAAK,GAAG,QAAQ,CAAA;IAChC,OAAO,EAAE,OAAO,CAAA;IAChB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAuCD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CAgClF"}
1
+ {"version":3,"file":"remote-audit.d.ts","sourceRoot":"","sources":["../../../src/audit/remote-audit.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,KAAK,GAAG,KAAK,GAAG,QAAQ,CAAA;IAChC,OAAO,EAAE,OAAO,CAAA;IAChB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED;;;;;;;;;GASG;AACH,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,MAAM,CAAA;IACb,aAAa,EAAE,MAAM,CAAA;IACrB,WAAW,EAAE,MAAM,CAAA;IACnB,SAAS,EAAE,OAAO,CAAA;IAClB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAsED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CAiBlF;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,kBAAkB,GAAG,IAAI,CAUjE"}
@@ -32,6 +32,31 @@ function isDisabled() {
32
32
  const flag = process.env.SKILLSMITH_TELEMETRY;
33
33
  return flag === '0' || flag === 'false' || flag === 'off';
34
34
  }
35
+ /**
36
+ * Best-effort POST to the Skillsmith events endpoint.
37
+ *
38
+ * Used by all `emit*Event` exports — never throws, swallows network/abort/
39
+ * endpoint errors, and respects the 2s timeout. Telemetry failures must
40
+ * never break the caller's flow.
41
+ */
42
+ async function postTelemetryEvent(body) {
43
+ const controller = new AbortController();
44
+ const timer = setTimeout(() => controller.abort(), REQUEST_TIMEOUT_MS);
45
+ try {
46
+ await fetch(`${getApiBase()}${EVENT_ENDPOINT}`, {
47
+ method: 'POST',
48
+ headers: { 'content-type': 'application/json' },
49
+ signal: controller.signal,
50
+ body: JSON.stringify(body),
51
+ });
52
+ }
53
+ catch {
54
+ // Best-effort: swallow all errors (network, abort, endpoint down).
55
+ }
56
+ finally {
57
+ clearTimeout(timer);
58
+ }
59
+ }
35
60
  /**
36
61
  * Emit a skill-install event to Skillsmith's remote telemetry endpoint.
37
62
  *
@@ -56,33 +81,51 @@ export async function emitInstallEvent(payload) {
56
81
  const apiKey = getApiKey();
57
82
  if (!apiKey)
58
83
  return;
59
- const controller = new AbortController();
60
- const timer = setTimeout(() => controller.abort(), REQUEST_TIMEOUT_MS);
61
- try {
62
- await fetch(`${getApiBase()}${EVENT_ENDPOINT}`, {
63
- method: 'POST',
64
- headers: { 'content-type': 'application/json' },
65
- signal: controller.signal,
66
- body: JSON.stringify({
67
- event: 'skill_install',
68
- anonymous_id: hashForActor(apiKey),
69
- metadata: {
70
- skill_id: payload.skillId,
71
- source: payload.source,
72
- success: payload.success,
73
- ...(payload.durationMs !== undefined && { duration_ms: payload.durationMs }),
74
- ...(payload.trustTier !== undefined && { trust_tier: payload.trustTier }),
75
- ...(payload.errorCode !== undefined && { error_code: payload.errorCode }),
76
- },
77
- }),
78
- });
79
- }
80
- catch {
81
- // Best-effort: swallow all errors (network, abort, endpoint down).
82
- // Telemetry failures must never break the install flow.
83
- }
84
- finally {
85
- clearTimeout(timer);
86
- }
84
+ await postTelemetryEvent({
85
+ event: 'skill_install',
86
+ anonymous_id: hashForActor(apiKey),
87
+ metadata: {
88
+ skill_id: payload.skillId,
89
+ source: payload.source,
90
+ success: payload.success,
91
+ ...(payload.durationMs !== undefined && { duration_ms: payload.durationMs }),
92
+ ...(payload.trustTier !== undefined && { trust_tier: payload.trustTier }),
93
+ ...(payload.errorCode !== undefined && { error_code: payload.errorCode }),
94
+ },
95
+ });
96
+ }
97
+ /**
98
+ * SMI-5193: Emit a search event to Skillsmith's remote telemetry endpoint.
99
+ *
100
+ * Fire-and-forget (synchronous, returns `void`) wraps `postTelemetryEvent`
101
+ * with `void` so the caller never awaits. The MCP search tool calls this
102
+ * after a search completes so the usage report's search count reflects MCP
103
+ * searches (landing in `search_metrics` via the `events` edge function).
104
+ *
105
+ * Silently skips in these cases:
106
+ * - No API key available (CLI offline / unauthenticated)
107
+ * - SKILLSMITH_TELEMETRY=0 (opt-out)
108
+ * - Network / endpoint failure
109
+ *
110
+ * CRITICAL — silent-failure modes that motivated this signature:
111
+ * - `event` MUST be `'search'` (in `events/index.ts` ALLOWED_EVENTS).
112
+ * `'skill_search'` would 400 silently.
113
+ * - `anonymous_id` is REQUIRED (validated as 16-128 char hex server-side).
114
+ * Missing → 400 silently.
115
+ * - Metadata keys MUST be snake_case — `sanitizeMetadata` allowlists
116
+ * `results_count`, `duration_ms`, `has_query`, `trust_tier`, `category`.
117
+ * camelCase variants are silently dropped.
118
+ */
119
+ export function emitSearchEvent(payload) {
120
+ if (isDisabled())
121
+ return;
122
+ const apiKey = getApiKey();
123
+ if (!apiKey)
124
+ return;
125
+ void postTelemetryEvent({
126
+ event: 'search',
127
+ anonymous_id: hashForActor(apiKey),
128
+ metadata: payload,
129
+ });
87
130
  }
88
131
  //# sourceMappingURL=remote-audit.js.map
@@ -1 +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,yEAAyE;IACzE,8EAA8E;IAC9E,wCAAwC;IACxC,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"}
1
+ {"version":3,"file":"remote-audit.js","sourceRoot":"","sources":["../../../src/audit/remote-audit.ts"],"names":[],"mappings":"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"}