@skillsmith/core 0.8.0 → 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 (241) hide show
  1. package/CHANGELOG.md +9 -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/exports/types.d.ts +1 -0
  47. package/dist/src/exports/types.d.ts.map +1 -1
  48. package/dist/src/exports/types.js +4 -0
  49. package/dist/src/exports/types.js.map +1 -1
  50. package/dist/src/index.d.ts +6 -3
  51. package/dist/src/index.d.ts.map +1 -1
  52. package/dist/src/index.js +7 -3
  53. package/dist/src/index.js.map +1 -1
  54. package/dist/src/indexer/GitHubIndexer.d.ts.map +1 -1
  55. package/dist/src/indexer/GitHubIndexer.js +1 -1
  56. package/dist/src/indexer/GitHubIndexer.js.map +1 -1
  57. package/dist/src/provenance/SourceRecoveryService.d.ts +48 -0
  58. package/dist/src/provenance/SourceRecoveryService.d.ts.map +1 -0
  59. package/dist/src/provenance/SourceRecoveryService.js +182 -0
  60. package/dist/src/provenance/SourceRecoveryService.js.map +1 -0
  61. package/dist/src/provenance/backfill.d.ts +47 -0
  62. package/dist/src/provenance/backfill.d.ts.map +1 -0
  63. package/dist/src/provenance/backfill.js +206 -0
  64. package/dist/src/provenance/backfill.js.map +1 -0
  65. package/dist/src/provenance/git-config.d.ts +22 -0
  66. package/dist/src/provenance/git-config.d.ts.map +1 -0
  67. package/dist/src/provenance/git-config.js +117 -0
  68. package/dist/src/provenance/git-config.js.map +1 -0
  69. package/dist/src/provenance/index.d.ts +12 -0
  70. package/dist/src/provenance/index.d.ts.map +1 -0
  71. package/dist/src/provenance/index.js +12 -0
  72. package/dist/src/provenance/index.js.map +1 -0
  73. package/dist/src/provenance/local-skill-scan.d.ts +35 -0
  74. package/dist/src/provenance/local-skill-scan.d.ts.map +1 -0
  75. package/dist/src/provenance/local-skill-scan.js +79 -0
  76. package/dist/src/provenance/local-skill-scan.js.map +1 -0
  77. package/dist/src/provenance/plugin-manifest.d.ts +16 -0
  78. package/dist/src/provenance/plugin-manifest.d.ts.map +1 -0
  79. package/dist/src/provenance/plugin-manifest.js +52 -0
  80. package/dist/src/provenance/plugin-manifest.js.map +1 -0
  81. package/dist/src/provenance/types.d.ts +86 -0
  82. package/dist/src/provenance/types.d.ts.map +1 -0
  83. package/dist/src/provenance/types.js +21 -0
  84. package/dist/src/provenance/types.js.map +1 -0
  85. package/dist/src/repositories/SkillRepository.d.ts.map +1 -1
  86. package/dist/src/repositories/SkillRepository.js +3 -1
  87. package/dist/src/repositories/SkillRepository.js.map +1 -1
  88. package/dist/src/scripts/__tests__/scan-imported-skills.test.js +10 -0
  89. package/dist/src/scripts/__tests__/scan-imported-skills.test.js.map +1 -1
  90. package/dist/src/scripts/validation/normalizers.d.ts.map +1 -1
  91. package/dist/src/scripts/validation/normalizers.js +9 -7
  92. package/dist/src/scripts/validation/normalizers.js.map +1 -1
  93. package/dist/src/scripts/validation/types.d.ts +8 -2
  94. package/dist/src/scripts/validation/types.d.ts.map +1 -1
  95. package/dist/src/scripts/validation/types.js +10 -2
  96. package/dist/src/scripts/validation/types.js.map +1 -1
  97. package/dist/src/security/scanner/SecurityScanner.d.ts +0 -7
  98. package/dist/src/security/scanner/SecurityScanner.d.ts.map +1 -1
  99. package/dist/src/security/scanner/SecurityScanner.exec.d.ts +56 -0
  100. package/dist/src/security/scanner/SecurityScanner.exec.d.ts.map +1 -0
  101. package/dist/src/security/scanner/SecurityScanner.exec.js +255 -0
  102. package/dist/src/security/scanner/SecurityScanner.exec.js.map +1 -0
  103. package/dist/src/security/scanner/SecurityScanner.helpers.d.ts.map +1 -1
  104. package/dist/src/security/scanner/SecurityScanner.helpers.js +17 -1
  105. package/dist/src/security/scanner/SecurityScanner.helpers.js.map +1 -1
  106. package/dist/src/security/scanner/SecurityScanner.js +34 -199
  107. package/dist/src/security/scanner/SecurityScanner.js.map +1 -1
  108. package/dist/src/security/scanner/SecurityScanner.scanners.d.ts +22 -0
  109. package/dist/src/security/scanner/SecurityScanner.scanners.d.ts.map +1 -0
  110. package/dist/src/security/scanner/SecurityScanner.scanners.js +213 -0
  111. package/dist/src/security/scanner/SecurityScanner.scanners.js.map +1 -0
  112. package/dist/src/security/scanner/index.d.ts +1 -1
  113. package/dist/src/security/scanner/index.d.ts.map +1 -1
  114. package/dist/src/security/scanner/index.js +1 -1
  115. package/dist/src/security/scanner/index.js.map +1 -1
  116. package/dist/src/security/scanner/patterns.d.ts +21 -0
  117. package/dist/src/security/scanner/patterns.d.ts.map +1 -1
  118. package/dist/src/security/scanner/patterns.js +34 -0
  119. package/dist/src/security/scanner/patterns.js.map +1 -1
  120. package/dist/src/security/scanner/types.d.ts +3 -1
  121. package/dist/src/security/scanner/types.d.ts.map +1 -1
  122. package/dist/src/security/scanner/weights.d.ts.map +1 -1
  123. package/dist/src/security/scanner/weights.js +6 -0
  124. package/dist/src/security/scanner/weights.js.map +1 -1
  125. package/dist/src/services/SearchService.helpers.d.ts.map +1 -1
  126. package/dist/src/services/SearchService.helpers.js +2 -0
  127. package/dist/src/services/SearchService.helpers.js.map +1 -1
  128. package/dist/src/services/SearchService.types.d.ts +1 -0
  129. package/dist/src/services/SearchService.types.d.ts.map +1 -1
  130. package/dist/src/services/skill-installation.helpers.d.ts +2 -26
  131. package/dist/src/services/skill-installation.helpers.d.ts.map +1 -1
  132. package/dist/src/services/skill-installation.helpers.js +2 -120
  133. package/dist/src/services/skill-installation.helpers.js.map +1 -1
  134. package/dist/src/services/skill-installation.io.d.ts +43 -0
  135. package/dist/src/services/skill-installation.io.d.ts.map +1 -0
  136. package/dist/src/services/skill-installation.io.js +176 -0
  137. package/dist/src/services/skill-installation.io.js.map +1 -0
  138. package/dist/src/services/skill-installation.service.d.ts.map +1 -1
  139. package/dist/src/services/skill-installation.service.js +51 -113
  140. package/dist/src/services/skill-installation.service.js.map +1 -1
  141. package/dist/src/services/skill-installation.types.d.ts.map +1 -1
  142. package/dist/src/services/skill-installation.types.js +9 -0
  143. package/dist/src/services/skill-installation.types.js.map +1 -1
  144. package/dist/src/services/skill-installation.validate.d.ts +44 -0
  145. package/dist/src/services/skill-installation.validate.d.ts.map +1 -0
  146. package/dist/src/services/skill-installation.validate.js +134 -0
  147. package/dist/src/services/skill-installation.validate.js.map +1 -0
  148. package/dist/src/telemetry/wrap.d.ts +1 -1
  149. package/dist/src/telemetry/wrap.d.ts.map +1 -1
  150. package/dist/src/telemetry/wrap.js.map +1 -1
  151. package/dist/src/types/skill.d.ts +6 -1
  152. package/dist/src/types/skill.d.ts.map +1 -1
  153. package/dist/src/types/skill.js.map +1 -1
  154. package/dist/src/types.d.ts +25 -1
  155. package/dist/src/types.d.ts.map +1 -1
  156. package/dist/src/types.js +3 -1
  157. package/dist/src/types.js.map +1 -1
  158. package/dist/tests/GitHubIndexer.edge-cases.test.js +2 -2
  159. package/dist/tests/GitHubIndexer.repository.test.d.ts +10 -0
  160. package/dist/tests/GitHubIndexer.repository.test.d.ts.map +1 -0
  161. package/dist/tests/GitHubIndexer.repository.test.js +190 -0
  162. package/dist/tests/GitHubIndexer.repository.test.js.map +1 -0
  163. package/dist/tests/GitHubIndexer.test.d.ts +2 -1
  164. package/dist/tests/GitHubIndexer.test.d.ts.map +1 -1
  165. package/dist/tests/GitHubIndexer.test.js +5 -183
  166. package/dist/tests/GitHubIndexer.test.js.map +1 -1
  167. package/dist/tests/QuarantineRepository.review-state-machine.test.d.ts +14 -0
  168. package/dist/tests/QuarantineRepository.review-state-machine.test.d.ts.map +1 -0
  169. package/dist/tests/QuarantineRepository.review-state-machine.test.js +296 -0
  170. package/dist/tests/QuarantineRepository.review-state-machine.test.js.map +1 -0
  171. package/dist/tests/RawUrlSourceAdapter.security.test.js +3 -2
  172. package/dist/tests/RawUrlSourceAdapter.security.test.js.map +1 -1
  173. package/dist/tests/SecurityScanner.exec.test.d.ts +11 -0
  174. package/dist/tests/SecurityScanner.exec.test.d.ts.map +1 -0
  175. package/dist/tests/SecurityScanner.exec.test.js +190 -0
  176. package/dist/tests/SecurityScanner.exec.test.js.map +1 -0
  177. package/dist/tests/SwarmIndexer.test.js +2 -2
  178. package/dist/tests/api/client.validation.test.js +7 -4
  179. package/dist/tests/api/client.validation.test.js.map +1 -1
  180. package/dist/tests/fixtures/api-responses/index.js +1 -1
  181. package/dist/tests/fixtures/api-responses/index.js.map +1 -1
  182. package/dist/tests/integration/QuarantineService.concurrency.test.d.ts +34 -0
  183. package/dist/tests/integration/QuarantineService.concurrency.test.d.ts.map +1 -0
  184. package/dist/tests/integration/QuarantineService.concurrency.test.js +280 -0
  185. package/dist/tests/integration/QuarantineService.concurrency.test.js.map +1 -0
  186. package/dist/tests/integration/openapi-contract.test.d.ts +16 -0
  187. package/dist/tests/integration/openapi-contract.test.d.ts.map +1 -0
  188. package/dist/tests/integration/openapi-contract.test.js +231 -0
  189. package/dist/tests/integration/openapi-contract.test.js.map +1 -0
  190. package/dist/tests/provenance/SourceRecoveryService.test.d.ts +2 -0
  191. package/dist/tests/provenance/SourceRecoveryService.test.d.ts.map +1 -0
  192. package/dist/tests/provenance/SourceRecoveryService.test.js +132 -0
  193. package/dist/tests/provenance/SourceRecoveryService.test.js.map +1 -0
  194. package/dist/tests/provenance/backfill.test.d.ts +2 -0
  195. package/dist/tests/provenance/backfill.test.d.ts.map +1 -0
  196. package/dist/tests/provenance/backfill.test.js +278 -0
  197. package/dist/tests/provenance/backfill.test.js.map +1 -0
  198. package/dist/tests/provenance/git-config.test.d.ts +2 -0
  199. package/dist/tests/provenance/git-config.test.d.ts.map +1 -0
  200. package/dist/tests/provenance/git-config.test.js +73 -0
  201. package/dist/tests/provenance/git-config.test.js.map +1 -0
  202. package/dist/tests/provenance/local-skill-scan.test.d.ts +2 -0
  203. package/dist/tests/provenance/local-skill-scan.test.d.ts.map +1 -0
  204. package/dist/tests/provenance/local-skill-scan.test.js +51 -0
  205. package/dist/tests/provenance/local-skill-scan.test.js.map +1 -0
  206. package/dist/tests/provenance/plugin-manifest.test.d.ts +2 -0
  207. package/dist/tests/provenance/plugin-manifest.test.d.ts.map +1 -0
  208. package/dist/tests/provenance/plugin-manifest.test.js +49 -0
  209. package/dist/tests/provenance/plugin-manifest.test.js.map +1 -0
  210. package/dist/tests/scripts/import-to-database.test.js +7 -1
  211. package/dist/tests/scripts/import-to-database.test.js.map +1 -1
  212. package/dist/tests/security/scanner-regression-guard.test.js +5 -1
  213. package/dist/tests/security/scanner-regression-guard.test.js.map +1 -1
  214. package/dist/tests/security.test.js +45 -0
  215. package/dist/tests/security.test.js.map +1 -1
  216. package/dist/tests/services/aidefence-feedback.test.js +2 -0
  217. package/dist/tests/services/aidefence-feedback.test.js.map +1 -1
  218. package/dist/tests/services/dep-quarantine-check.test.js +1 -1
  219. package/dist/tests/services/dep-quarantine-check.test.js.map +1 -1
  220. package/dist/tests/skill-scanner/allowlist.test.js +8 -1
  221. package/dist/tests/skill-scanner/allowlist.test.js.map +1 -1
  222. package/dist/tests/unit/services/skill-installation.gap1.test.d.ts +12 -0
  223. package/dist/tests/unit/services/skill-installation.gap1.test.d.ts.map +1 -0
  224. package/dist/tests/unit/services/skill-installation.gap1.test.js +96 -0
  225. package/dist/tests/unit/services/skill-installation.gap1.test.js.map +1 -0
  226. package/dist/tests/unit/services/skill-installation.io.test.d.ts +11 -0
  227. package/dist/tests/unit/services/skill-installation.io.test.d.ts.map +1 -0
  228. package/dist/tests/unit/services/skill-installation.io.test.js +130 -0
  229. package/dist/tests/unit/services/skill-installation.io.test.js.map +1 -0
  230. package/dist/tests/validate-skills.dedup.test.d.ts +5 -0
  231. package/dist/tests/validate-skills.dedup.test.d.ts.map +1 -0
  232. package/dist/tests/validate-skills.dedup.test.js +241 -0
  233. package/dist/tests/validate-skills.dedup.test.js.map +1 -0
  234. package/dist/tests/validate-skills.normalizers.test.d.ts +5 -0
  235. package/dist/tests/validate-skills.normalizers.test.d.ts.map +1 -0
  236. package/dist/tests/validate-skills.normalizers.test.js +109 -0
  237. package/dist/tests/validate-skills.normalizers.test.js.map +1 -0
  238. package/dist/tests/validate-skills.test.d.ts +1 -1
  239. package/dist/tests/validate-skills.test.js +7 -345
  240. package/dist/tests/validate-skills.test.js.map +1 -1
  241. package/package.json +19 -8
@@ -0,0 +1,134 @@
1
+ /**
2
+ * @fileoverview Validation and ID-parsing helpers for SkillInstallationService
3
+ * @module @skillsmith/core/services/skill-installation.validate
4
+ * @see SMI-4745: domain-driven split to stay under the 500-line CI gate
5
+ */
6
+ import { parseRepoUrl } from '../utils/github-url.js';
7
+ import { validateSkillConfig } from './skill-config-schema.js';
8
+ import { buildInstallFailure } from './skill-installation.errors.js';
9
+ export function parseSkillIdInternal(input) {
10
+ if (input.startsWith('https://github.com/')) {
11
+ const url = new URL(input);
12
+ const parts = url.pathname.split('/').filter(Boolean);
13
+ return {
14
+ owner: parts[0],
15
+ repo: parts[1],
16
+ path: parts.slice(2).join('/') || '',
17
+ isRegistryId: false,
18
+ };
19
+ }
20
+ if (input.includes('/')) {
21
+ const parts = input.split('/');
22
+ if (parts.length === 2) {
23
+ return { owner: parts[0], repo: parts[1], path: '', isRegistryId: true };
24
+ }
25
+ return {
26
+ owner: parts[0],
27
+ repo: parts[1],
28
+ path: parts.slice(2).join('/'),
29
+ isRegistryId: false,
30
+ };
31
+ }
32
+ const UUID_REGEX = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
33
+ if (UUID_REGEX.test(input)) {
34
+ return { owner: '', repo: '', path: '', isRegistryId: true };
35
+ }
36
+ throw new Error('Invalid skill ID format: ' + input + '. Use owner/repo or GitHub URL.');
37
+ }
38
+ export function validateSkillMd(content) {
39
+ const errors = [];
40
+ if (!content.includes('# ')) {
41
+ errors.push('Missing title (# heading)');
42
+ }
43
+ if (content.length < 100) {
44
+ errors.push('SKILL.md is too short (minimum 100 characters)');
45
+ }
46
+ return { valid: errors.length === 0, errors };
47
+ }
48
+ /** SMI-3870: Validate config.json content; returns validity and warnings. */
49
+ export function validateOptionalConfig(content) {
50
+ const result = validateSkillConfig(content);
51
+ if (!result.valid) {
52
+ return { valid: false, warnings: ['config.json rejected: ' + result.errors.join('; ')] };
53
+ }
54
+ return { valid: true, warnings: result.warnings };
55
+ }
56
+ /** SMI-3871: Cross-reference dependency targets against quarantine status. */
57
+ export function checkDepsAgainstQuarantine(depIntel, getStatus) {
58
+ const warnings = [];
59
+ const quarantinedDeps = [];
60
+ const checked = new Set();
61
+ const check = (target) => {
62
+ if (checked.has(target))
63
+ return;
64
+ checked.add(target);
65
+ const status = getStatus(target);
66
+ if (!status)
67
+ return;
68
+ quarantinedDeps.push(target);
69
+ const label = status === 'pending'
70
+ ? 'under review for security concerns'
71
+ : 'quarantined (confirmed malicious)';
72
+ warnings.push('Dependency "' + target + '" is ' + label + '.');
73
+ };
74
+ for (const server of depIntel.dep_inferred_servers)
75
+ check(server);
76
+ if (depIntel.dep_declared?.platform?.mcp_servers) {
77
+ for (const srv of depIntel.dep_declared.platform.mcp_servers)
78
+ check(srv.name);
79
+ }
80
+ return { warnings, quarantinedDeps };
81
+ }
82
+ export async function resolveRegistryInstall(skillId, lookup) {
83
+ const registrySkill = await lookup.lookup(skillId);
84
+ if (!registrySkill) {
85
+ return {
86
+ resolved: false,
87
+ failure: buildInstallFailure('REGISTRY_SKILL_NOT_FOUND', {
88
+ skillId,
89
+ installPath: '',
90
+ error: 'Skill "' +
91
+ skillId +
92
+ '" is indexed for discovery only. ' +
93
+ 'No installation source available (repo_url is missing). ' +
94
+ 'This may be placeholder/seed data or a metadata-only entry.',
95
+ tips: [
96
+ 'Use a full GitHub URL instead: install { skillId: "https://github.com/owner/repo" }',
97
+ 'Search for installable skills using the search tool',
98
+ 'Many indexed skills are metadata-only and cannot be installed directly',
99
+ ],
100
+ }),
101
+ };
102
+ }
103
+ if (registrySkill.quarantined) {
104
+ return {
105
+ resolved: false,
106
+ failure: buildInstallFailure('QUARANTINED', {
107
+ skillId,
108
+ installPath: '',
109
+ trustTier: registrySkill.trustTier,
110
+ error: 'Skill "' +
111
+ skillId +
112
+ '" has been quarantined due to security concerns. ' +
113
+ 'Installation is blocked to protect your environment.',
114
+ tips: [
115
+ 'Visit https://skillsmith.app/docs/quarantine for details on quarantine policies',
116
+ 'If you believe this is a false positive, contact support via https://skillsmith.app/contact?topic=security',
117
+ 'Contact the skill author or visit the quarantine documentation for more information',
118
+ ],
119
+ }),
120
+ };
121
+ }
122
+ const repoInfo = parseRepoUrl(registrySkill.repoUrl);
123
+ return {
124
+ resolved: true,
125
+ owner: repoInfo.owner,
126
+ repo: repoInfo.repo,
127
+ basePath: repoInfo.path ? repoInfo.path + '/' : '',
128
+ branch: repoInfo.branch,
129
+ skillName: registrySkill.name,
130
+ trustTier: registrySkill.trustTier,
131
+ indexedContentHash: registrySkill.contentHash,
132
+ };
133
+ }
134
+ //# sourceMappingURL=skill-installation.validate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skill-installation.validate.js","sourceRoot":"","sources":["../../../src/services/skill-installation.validate.ts"],"names":[],"mappings":"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"}
@@ -10,7 +10,7 @@
10
10
  * mutation) so arrow-const exports can be wrapped without mutation.
11
11
  * Applied review change H4: `framework` is captured per-call, not memoised.
12
12
  */
13
- type AnyFunction = (...args: any[]) => any;
13
+ type AnyFunction = (...args: never[]) => unknown;
14
14
  /**
15
15
  * Install (or clear) the per-process emission gate.
16
16
  *
@@ -1 +1 @@
1
- {"version":3,"file":"wrap.d.ts","sourceRoot":"","sources":["../../../src/telemetry/wrap.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AASH,KAAK,WAAW,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,CAAA;AAyB1C;;;;;;;;;;GAUG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,CAAC,MAAM,OAAO,CAAC,GAAG,SAAS,GAAG,IAAI,CAEvE;AAMD;;;;;;GAMG;AAMH,MAAM,WAAW,iBAAiB,CAAC,KAAK,SAAS,SAAS,OAAO,EAAE;IACjE,8EAA8E;IAC9E,MAAM,EAAE,UAAU,GAAG,KAAK,GAAG,kBAAkB,CAAA;IAC/C,qEAAqE;IACrE,cAAc,EAAE,CAAC,IAAI,EAAE,KAAK,KAAK,MAAM,CAAA;IACvC;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,KAAK,MAAM,CAAA;CAC3C;AAMD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,aAAa,CAAC,KAAK,SAAS,SAAS,OAAO,EAAE,EAAE,OAAO,EACrE,OAAO,EAAE,CAAC,GAAG,IAAI,EAAE,KAAK,KAAK,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,EACvD,IAAI,EAAE,iBAAiB,CAAC,KAAK,CAAC,GAC7B,CAAC,GAAG,IAAI,EAAE,KAAK,KAAK,OAAO,CAAC,OAAO,CAAC,CAoCtC;AAMD;;;;;;;;GAQG;AACH,wBAAgB,aAAa,CAAC,EAAE,EAAE,WAAW,GAAG,OAAO,CAEtD"}
1
+ {"version":3,"file":"wrap.d.ts","sourceRoot":"","sources":["../../../src/telemetry/wrap.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAWH,KAAK,WAAW,GAAG,CAAC,GAAG,IAAI,EAAE,KAAK,EAAE,KAAK,OAAO,CAAA;AAyBhD;;;;;;;;;;GAUG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,CAAC,MAAM,OAAO,CAAC,GAAG,SAAS,GAAG,IAAI,CAEvE;AAMD;;;;;;GAMG;AAMH,MAAM,WAAW,iBAAiB,CAAC,KAAK,SAAS,SAAS,OAAO,EAAE;IACjE,8EAA8E;IAC9E,MAAM,EAAE,UAAU,GAAG,KAAK,GAAG,kBAAkB,CAAA;IAC/C,qEAAqE;IACrE,cAAc,EAAE,CAAC,IAAI,EAAE,KAAK,KAAK,MAAM,CAAA;IACvC;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,KAAK,MAAM,CAAA;CAC3C;AAMD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,aAAa,CAAC,KAAK,SAAS,SAAS,OAAO,EAAE,EAAE,OAAO,EACrE,OAAO,EAAE,CAAC,GAAG,IAAI,EAAE,KAAK,KAAK,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,EACvD,IAAI,EAAE,iBAAiB,CAAC,KAAK,CAAC,GAC7B,CAAC,GAAG,IAAI,EAAE,KAAK,KAAK,OAAO,CAAC,OAAO,CAAC,CAoCtC;AAMD;;;;;;;;GAQG;AACH,wBAAgB,aAAa,CAAC,EAAE,EAAE,WAAW,GAAG,OAAO,CAEtD"}
@@ -1 +1 @@
1
- {"version":3,"file":"wrap.js","sourceRoot":"","sources":["../../../src/telemetry/wrap.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA;AAS/C,MAAM,OAAO,GAAG,IAAI,GAAG,EAAe,CAAA;AAEtC,8EAA8E;AAC9E,mCAAmC;AACnC,8EAA8E;AAC9E,EAAE;AACF,+EAA+E;AAC/E,0EAA0E;AAC1E,4EAA4E;AAC5E,gEAAgE;AAChE,EAAE;AACF,yEAAyE;AACzE,yEAAyE;AACzE,2EAA2E;AAC3E,0EAA0E;AAC1E,oDAAoD;AACpD,EAAE;AACF,2EAA2E;AAC3E,uEAAuE;AACvE,0EAA0E;AAC1E,4CAA4C;AAC5C,IAAI,YAAyC,CAAA;AAE7C;;;;;;;;;;GAUG;AACH,MAAM,UAAU,eAAe,CAAC,IAAiC;IAC/D,YAAY,GAAG,IAAI,CAAA;AACrB,CAAC;AA+BD,8EAA8E;AAC9E,MAAM;AACN,8EAA8E;AAE9E;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,aAAa,CAC3B,OAAuD,EACvD,IAA8B;IAE9B,MAAM,SAAS,GAAG,KAAK,EAAE,GAAG,IAAW,EAAoB,EAAE;QAC3D,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;QACxB,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAA;QACzC,2EAA2E;QAC3E,gEAAgE;QAChE,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC,IAAI,CAAC,IAAI,SAAS,CAAA;QAC5D,IAAI,OAAO,GAAG,IAAI,CAAA;QAClB,IAAI,CAAC;YACH,OAAO,MAAM,OAAO,CAAC,GAAG,IAAI,CAAC,CAAA;QAC/B,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,GAAG,KAAK,CAAA;YACf,MAAM,CAAC,CAAA;QACT,CAAC;gBAAS,CAAC;YACT,yEAAyE;YACzE,4DAA4D;YAC5D,IAAI,CAAC;gBACH,qEAAqE;gBACrE,qEAAqE;gBACrE,IAAI,YAAY,IAAI,YAAY,EAAE,EAAE,CAAC;oBACnC,gBAAgB,CAAC;wBACf,OAAO;wBACP,MAAM,EAAE,IAAI,CAAC,MAAM;wBACnB,SAAS;wBACT,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK;wBAC9B,OAAO;qBACR,CAAC,CAAA;gBACJ,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,kEAAkE;YACpE,CAAC;QACH,CAAC;IACH,CAAC,CAAA;IAED,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;IACtB,OAAO,SAAS,CAAA;AAClB,CAAC;AAED,8EAA8E;AAC9E,oBAAoB;AACpB,8EAA8E;AAE9E;;;;;;;;GAQG;AACH,MAAM,UAAU,aAAa,CAAC,EAAe;IAC3C,OAAO,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;AACxB,CAAC"}
1
+ {"version":3,"file":"wrap.js","sourceRoot":"","sources":["../../../src/telemetry/wrap.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA;AAW/C,MAAM,OAAO,GAAG,IAAI,GAAG,EAAe,CAAA;AAEtC,8EAA8E;AAC9E,mCAAmC;AACnC,8EAA8E;AAC9E,EAAE;AACF,+EAA+E;AAC/E,0EAA0E;AAC1E,4EAA4E;AAC5E,gEAAgE;AAChE,EAAE;AACF,yEAAyE;AACzE,yEAAyE;AACzE,2EAA2E;AAC3E,0EAA0E;AAC1E,oDAAoD;AACpD,EAAE;AACF,2EAA2E;AAC3E,uEAAuE;AACvE,0EAA0E;AAC1E,4CAA4C;AAC5C,IAAI,YAAyC,CAAA;AAE7C;;;;;;;;;;GAUG;AACH,MAAM,UAAU,eAAe,CAAC,IAAiC;IAC/D,YAAY,GAAG,IAAI,CAAA;AACrB,CAAC;AA+BD,8EAA8E;AAC9E,MAAM;AACN,8EAA8E;AAE9E;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,aAAa,CAC3B,OAAuD,EACvD,IAA8B;IAE9B,MAAM,SAAS,GAAG,KAAK,EAAE,GAAG,IAAW,EAAoB,EAAE;QAC3D,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;QACxB,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAA;QACzC,2EAA2E;QAC3E,gEAAgE;QAChE,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC,IAAI,CAAC,IAAI,SAAS,CAAA;QAC5D,IAAI,OAAO,GAAG,IAAI,CAAA;QAClB,IAAI,CAAC;YACH,OAAO,MAAM,OAAO,CAAC,GAAG,IAAI,CAAC,CAAA;QAC/B,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,GAAG,KAAK,CAAA;YACf,MAAM,CAAC,CAAA;QACT,CAAC;gBAAS,CAAC;YACT,yEAAyE;YACzE,4DAA4D;YAC5D,IAAI,CAAC;gBACH,qEAAqE;gBACrE,qEAAqE;gBACrE,IAAI,YAAY,IAAI,YAAY,EAAE,EAAE,CAAC;oBACnC,gBAAgB,CAAC;wBACf,OAAO;wBACP,MAAM,EAAE,IAAI,CAAC,MAAM;wBACnB,SAAS;wBACT,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK;wBAC9B,OAAO;qBACR,CAAC,CAAA;gBACJ,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,kEAAkE;YACpE,CAAC;QACH,CAAC;IACH,CAAC,CAAA;IAED,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;IACtB,OAAO,SAAS,CAAA;AAClB,CAAC;AAED,8EAA8E;AAC9E,oBAAoB;AACpB,8EAA8E;AAE9E;;;;;;;;GAQG;AACH,MAAM,UAAU,aAAa,CAAC,EAAe;IAC3C,OAAO,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;AACxB,CAAC"}
@@ -11,7 +11,7 @@ import type { DependencyDeclaration } from './dependencies.js';
11
11
  * registry) is a first-class DB-backed tier — the skills.trust_tier CHECK
12
12
  * constraint allows 'curated' (migration v17).
13
13
  */
14
- export type TrustTier = 'verified' | 'curated' | 'community' | 'experimental' | 'unknown' | 'local';
14
+ export type TrustTier = 'official' | 'verified' | 'curated' | 'community' | 'experimental' | 'unknown' | 'unverified' | 'local';
15
15
  /**
16
16
  * SMI-1631: Skill roles for role-based recommendations
17
17
  * Used to filter and prioritize skills based on their primary purpose
@@ -53,6 +53,11 @@ export interface Skill {
53
53
  * `SkillRepository.rowToSkill()` always populates it from the DB.
54
54
  */
55
55
  source?: SkillSource;
56
+ /**
57
+ * SMI-5327: SPDX license identifier (e.g. "MIT", "Apache-2.0"). Null means
58
+ * "unknown / not detected" — NOT "no restrictions" or "freely usable".
59
+ */
60
+ license?: string | null;
56
61
  createdAt: string;
57
62
  updatedAt: string;
58
63
  /** SHA-256 hex of the most recently recorded content proxy (optional, populated by SkillVersionRepository) */
@@ -1 +1 @@
1
- {"version":3,"file":"skill.d.ts","sourceRoot":"","sources":["../../../src/types/skill.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"skill.d.ts","sourceRoot":"","sources":["../../../src/types/skill.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"skill.js","sourceRoot":"","sources":["../../../src/types/skill.ts"],"names":[],"mappings":"AAAA;;GAEG;AA2BH;;GAEG;AACH,MAAM,CAAC,MAAM,WAAW,GAAyB;IAC/C,cAAc;IACd,SAAS;IACT,eAAe;IACf,UAAU;IACV,UAAU;IACV,qBAAqB;CACb,CAAA"}
1
+ {"version":3,"file":"skill.js","sourceRoot":"","sources":["../../../src/types/skill.ts"],"names":[],"mappings":"AAAA;;GAEG;AAoCH;;GAEG;AACH,MAAM,CAAC,MAAM,WAAW,GAAyB;IAC/C,cAAc;IACd,SAAS;IACT,eAAe;IACf,UAAU;IACV,UAAU;IACV,qBAAqB;CACb,CAAA"}
@@ -6,8 +6,9 @@
6
6
  * NOTE: Database tiers must match database schema (packages/core/src/database/schema.ts)
7
7
  * SMI-1809: Added 'local' for local skills from ~/.claude/skills/
8
8
  * SMI-2381: Added 'curated' for third-party publishers opted into the registry
9
+ * SMI-5205: Added 'official' and 'unverified' to align API wire format with public 5-tier model
9
10
  */
10
- export type TrustTier = 'verified' | 'community' | 'experimental' | 'curated' | 'unknown' | 'local';
11
+ export type TrustTier = 'official' | 'verified' | 'curated' | 'community' | 'experimental' | 'unknown' | 'unverified' | 'local';
11
12
  /**
12
13
  * Trust tier descriptions for user display
13
14
  */
@@ -65,6 +66,11 @@ export interface Skill {
65
66
  security?: SecuritySummary;
66
67
  createdAt: string;
67
68
  updatedAt: string;
69
+ /**
70
+ * SMI-5327: SPDX license identifier (e.g. "MIT", "Apache-2.0"). Null means
71
+ * "unknown / not detected" — NOT "no restrictions" or "freely usable".
72
+ */
73
+ license?: string | null;
68
74
  }
69
75
  /**
70
76
  * Skill search result (subset of full skill)
@@ -98,6 +104,11 @@ export interface SkillSearchResult {
98
104
  installHint?: string;
99
105
  /** SMI-2760: Flat array of compatible IDE/LLM/platform slugs (e.g. ["claude-code", "cursor", "claude"]) */
100
106
  compatibility?: string[];
107
+ /**
108
+ * SMI-5327: SPDX license identifier (e.g. "MIT", "Apache-2.0"). Null means
109
+ * "unknown / not detected" — NOT "no restrictions" or "freely usable".
110
+ */
111
+ license?: string | null;
101
112
  }
102
113
  /**
103
114
  * SMI-2760: Compatibility filter for search
@@ -130,6 +141,19 @@ export interface SearchResponse {
130
141
  total: number;
131
142
  query: string;
132
143
  filters: SearchFilters;
144
+ /**
145
+ * SMI-5178: results on this page hidden by the compatibility filter — the
146
+ * restrictive cross-tool default (explicit SKILLSMITH_CLIENT) or an explicit
147
+ * `compatible_with`. 0 / absent when no compat filter applied. `[]`/unknown
148
+ * rows are never hidden (they always surface).
149
+ */
150
+ compatibilityHidden?: number;
151
+ /**
152
+ * SMI-5178: results on this page hidden by the default-ON installable filter.
153
+ * Present when discovery-only entries were filtered out. Pass
154
+ * `installable_only: false` to include them.
155
+ */
156
+ discoveryOnlyHidden?: number;
133
157
  timing: {
134
158
  searchMs: number;
135
159
  totalMs: number;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"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"}
package/dist/src/types.js CHANGED
@@ -5,11 +5,13 @@
5
5
  * Trust tier descriptions for user display
6
6
  */
7
7
  export const TrustTierDescriptions = {
8
+ official: 'Official or partner skill with full security review. Maintained by Skillsmith or verified partners.',
8
9
  verified: 'Manually reviewed by the Skillsmith team. High quality and safe to use.',
10
+ curated: 'Third-party publisher. Manually opted into the registry.',
9
11
  community: 'Highly rated by the community. Generally reliable.',
10
12
  experimental: 'New or beta skill. Use with caution.',
11
- curated: 'Third-party publisher. Manually opted into the registry.',
12
13
  unknown: 'Not yet assessed. Review carefully before using.',
14
+ unverified: 'No verification performed. Review carefully before installing.',
13
15
  local: 'Local skill from your ~/.claude/skills/ directory. You control this skill.',
14
16
  };
15
17
  //# sourceMappingURL=types.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAgBH;;GAEG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAA8B;IAC9D,QAAQ,EAAE,yEAAyE;IACnF,SAAS,EAAE,oDAAoD;IAC/D,YAAY,EAAE,sCAAsC;IACpD,OAAO,EAAE,0DAA0D;IACnE,OAAO,EAAE,kDAAkD;IAC3D,KAAK,EAAE,4EAA4E;CACpF,CAAA"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAmBH;;GAEG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAA8B;IAC9D,QAAQ,EACN,qGAAqG;IACvG,QAAQ,EAAE,yEAAyE;IACnF,OAAO,EAAE,0DAA0D;IACnE,SAAS,EAAE,oDAAoD;IAC/D,YAAY,EAAE,sCAAsC;IACpD,OAAO,EAAE,kDAAkD;IAC3D,UAAU,EAAE,gEAAgE;IAC5E,KAAK,EAAE,4EAA4E;CACpF,CAAA"}
@@ -125,7 +125,7 @@ describe('GitHubIndexer — edge cases', () => {
125
125
  // repositoryToSkill — trust tier assignment
126
126
  // -------------------------------------------------------------------------
127
127
  describe('repositoryToSkill', () => {
128
- it('assigns verified tier when claude-code-official topic present', () => {
128
+ it('assigns official tier when claude-code-official topic present', () => {
129
129
  const indexer = new GitHubIndexer({ requestDelay: 0 });
130
130
  const repo = {
131
131
  owner: 'anthropic',
@@ -140,7 +140,7 @@ describe('GitHubIndexer — edge cases', () => {
140
140
  defaultBranch: 'main',
141
141
  };
142
142
  const skill = indexer.repositoryToSkill(repo);
143
- expect(skill.trustTier).toBe('verified');
143
+ expect(skill.trustTier).toBe('official');
144
144
  });
145
145
  it('assigns community tier for repos with >= 50 stars', () => {
146
146
  const indexer = new GitHubIndexer({ requestDelay: 0 });
@@ -0,0 +1,10 @@
1
+ /**
2
+ * SMI-628 / SMI-5205: IndexerRepository and GitHubIndexer Integration Tests
3
+ *
4
+ * Split from GitHubIndexer.test.ts to satisfy 500-line gate.
5
+ * Tests for:
6
+ * - IndexerRepository: Database operations
7
+ * - GitHubIndexer Integration: live search (requires GITHUB_TOKEN)
8
+ */
9
+ export {};
10
+ //# sourceMappingURL=GitHubIndexer.repository.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GitHubIndexer.repository.test.d.ts","sourceRoot":"","sources":["../../tests/GitHubIndexer.repository.test.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG"}
@@ -0,0 +1,190 @@
1
+ /**
2
+ * SMI-628 / SMI-5205: IndexerRepository and GitHubIndexer Integration Tests
3
+ *
4
+ * Split from GitHubIndexer.test.ts to satisfy 500-line gate.
5
+ * Tests for:
6
+ * - IndexerRepository: Database operations
7
+ * - GitHubIndexer Integration: live search (requires GITHUB_TOKEN)
8
+ */
9
+ import { describe, it, expect, beforeEach, afterEach } from 'vitest';
10
+ import { GitHubIndexer } from '../src/indexer/GitHubIndexer.js';
11
+ import { IndexerRepository } from '../src/repositories/IndexerRepository.js';
12
+ import { createDatabase, closeDatabase } from '../src/db/schema.js';
13
+ // ============================================================
14
+ // IndexerRepository Tests
15
+ // ============================================================
16
+ describe('IndexerRepository', () => {
17
+ let db;
18
+ let repository;
19
+ beforeEach(() => {
20
+ db = createDatabase(':memory:');
21
+ repository = new IndexerRepository(db);
22
+ });
23
+ afterEach(() => {
24
+ closeDatabase(db);
25
+ });
26
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
27
+ const createTestMetadata = (overrides = {}) => ({
28
+ name: 'test-skill',
29
+ description: 'A test skill',
30
+ author: 'test-author',
31
+ version: '1.0.0',
32
+ tags: ['test', 'example'],
33
+ dependencies: undefined,
34
+ category: 'testing',
35
+ license: 'MIT',
36
+ repository: null,
37
+ rawContent: '---\nname: test-skill\n---\nTest content',
38
+ frontmatter: { name: 'test-skill' },
39
+ repoUrl: 'https://github.com/test/repo',
40
+ filePath: 'SKILL.md',
41
+ sha: 'abc123def456',
42
+ owner: 'test',
43
+ repo: 'repo',
44
+ discoveredAt: new Date().toISOString(),
45
+ ...overrides,
46
+ });
47
+ describe('upsertFromMetadata', () => {
48
+ it('should insert a new skill', () => {
49
+ const metadata = createTestMetadata();
50
+ const result = repository.upsertFromMetadata(metadata);
51
+ expect(result.inserted).toBe(true);
52
+ expect(result.contentChanged).toBe(true);
53
+ expect(result.skill.name).toBe('test-skill');
54
+ expect(result.skill.repoUrl).toBe('https://github.com/test/repo');
55
+ expect(result.skill.sourceSha).toBe('abc123def456');
56
+ });
57
+ it('should update an existing skill with changed content', () => {
58
+ const metadata = createTestMetadata();
59
+ repository.upsertFromMetadata(metadata);
60
+ // Update with new SHA (content changed)
61
+ const updatedMetadata = createTestMetadata({
62
+ sha: 'newsha789',
63
+ description: 'Updated description',
64
+ });
65
+ const result = repository.upsertFromMetadata(updatedMetadata);
66
+ expect(result.inserted).toBe(false);
67
+ expect(result.contentChanged).toBe(true);
68
+ expect(result.skill.description).toBe('Updated description');
69
+ expect(result.skill.sourceSha).toBe('newsha789');
70
+ });
71
+ it('should mark unchanged when SHA matches', () => {
72
+ const metadata = createTestMetadata();
73
+ repository.upsertFromMetadata(metadata);
74
+ // Same SHA = no content change
75
+ const result = repository.upsertFromMetadata(metadata);
76
+ expect(result.inserted).toBe(false);
77
+ expect(result.contentChanged).toBe(false);
78
+ });
79
+ it('should apply custom trust tier', () => {
80
+ const metadata = createTestMetadata();
81
+ const result = repository.upsertFromMetadata(metadata, 'verified');
82
+ expect(result.skill.trustTier).toBe('verified');
83
+ });
84
+ });
85
+ describe('batchUpsertFromMetadata', () => {
86
+ it('should batch insert multiple skills', () => {
87
+ const metadataList = [
88
+ createTestMetadata({ repoUrl: 'https://github.com/a/repo1' }),
89
+ createTestMetadata({ repoUrl: 'https://github.com/b/repo2', name: 'skill-2' }),
90
+ createTestMetadata({ repoUrl: 'https://github.com/c/repo3', name: 'skill-3' }),
91
+ ];
92
+ const result = repository.batchUpsertFromMetadata(metadataList);
93
+ expect(result.total).toBe(3);
94
+ expect(result.inserted).toBe(3);
95
+ expect(result.updated).toBe(0);
96
+ expect(result.unchanged).toBe(0);
97
+ expect(result.errors).toHaveLength(0);
98
+ });
99
+ it('should handle mixed insert/update/unchanged', () => {
100
+ // First, insert one skill
101
+ const initial = createTestMetadata({ repoUrl: 'https://github.com/existing/repo' });
102
+ repository.upsertFromMetadata(initial);
103
+ // Batch with: existing unchanged, existing updated, new
104
+ const _metadataList = [
105
+ createTestMetadata({ repoUrl: 'https://github.com/existing/repo' }), // unchanged
106
+ createTestMetadata({
107
+ repoUrl: 'https://github.com/existing/repo',
108
+ sha: 'newsha', // This will match repo_url but update
109
+ }),
110
+ createTestMetadata({ repoUrl: 'https://github.com/new/repo', name: 'new-skill' }), // new
111
+ ];
112
+ // Note: Due to unique constraint on repo_url, only one entry per repo_url
113
+ // So we'll test with different repos
114
+ const properList = [
115
+ createTestMetadata({ repoUrl: 'https://github.com/existing/repo' }), // unchanged (same sha)
116
+ createTestMetadata({ repoUrl: 'https://github.com/new/repo', name: 'new-skill' }), // new
117
+ ];
118
+ const result = repository.batchUpsertFromMetadata(properList);
119
+ expect(result.total).toBe(2);
120
+ expect(result.unchanged).toBe(1);
121
+ expect(result.inserted).toBe(1);
122
+ });
123
+ });
124
+ describe('findByRepoUrl', () => {
125
+ it('should find skill by repository URL', () => {
126
+ const metadata = createTestMetadata();
127
+ repository.upsertFromMetadata(metadata);
128
+ const found = repository.findByRepoUrl('https://github.com/test/repo');
129
+ expect(found).not.toBeNull();
130
+ expect(found?.name).toBe('test-skill');
131
+ });
132
+ it('should return null for non-existent URL', () => {
133
+ const found = repository.findByRepoUrl('https://github.com/nonexistent/repo');
134
+ expect(found).toBeNull();
135
+ });
136
+ });
137
+ describe('findBySha', () => {
138
+ it('should find skill by source SHA', () => {
139
+ const metadata = createTestMetadata({ sha: 'unique-sha-123' });
140
+ repository.upsertFromMetadata(metadata);
141
+ const found = repository.findBySha('unique-sha-123');
142
+ expect(found).not.toBeNull();
143
+ expect(found?.sourceSha).toBe('unique-sha-123');
144
+ });
145
+ });
146
+ describe('findAllIndexed', () => {
147
+ it('should return paginated indexed skills', () => {
148
+ // Insert multiple skills
149
+ for (let i = 0; i < 5; i++) {
150
+ repository.upsertFromMetadata(createTestMetadata({
151
+ repoUrl: `https://github.com/test/repo${i}`,
152
+ name: `skill-${i}`,
153
+ }));
154
+ }
155
+ const page1 = repository.findAllIndexed(2, 0);
156
+ expect(page1).toHaveLength(2);
157
+ const page2 = repository.findAllIndexed(2, 2);
158
+ expect(page2).toHaveLength(2);
159
+ const page3 = repository.findAllIndexed(2, 4);
160
+ expect(page3).toHaveLength(1);
161
+ });
162
+ });
163
+ describe('findNeedingReindex', () => {
164
+ it('should find skills needing reindex', () => {
165
+ // Insert a skill
166
+ repository.upsertFromMetadata(createTestMetadata());
167
+ // All recently indexed skills shouldn't need reindex
168
+ const needing = repository.findNeedingReindex('-1 day', 10);
169
+ // Since we just indexed, it shouldn't need reindex yet
170
+ expect(needing).toHaveLength(0);
171
+ });
172
+ });
173
+ });
174
+ // ============================================================
175
+ // Integration Tests (if GITHUB_TOKEN is available)
176
+ // ============================================================
177
+ describe('GitHubIndexer Integration', () => {
178
+ const hasToken = !!process.env.GITHUB_TOKEN;
179
+ it.skipIf(!hasToken)('should search for claude-code skills on GitHub', async () => {
180
+ const indexer = new GitHubIndexer({
181
+ token: process.env.GITHUB_TOKEN,
182
+ requestDelay: 150,
183
+ });
184
+ const result = await indexer.searchRepositories('topic:claude-code-skill');
185
+ expect(result.found).toBeGreaterThanOrEqual(0);
186
+ expect(result.errors).toHaveLength(0);
187
+ // Note: May or may not find repositories depending on GitHub state
188
+ }, 30000);
189
+ });
190
+ //# sourceMappingURL=GitHubIndexer.repository.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GitHubIndexer.repository.test.js","sourceRoot":"","sources":["../../tests/GitHubIndexer.repository.test.ts"],"names":[],"mappings":"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"}
@@ -4,7 +4,8 @@
4
4
  * Tests for:
5
5
  * - SkillParser: YAML frontmatter parsing
6
6
  * - GitHubIndexer: Repository skill discovery
7
- * - IndexerRepository: Database operations
7
+ *
8
+ * IndexerRepository and integration tests: GitHubIndexer.repository.test.ts
8
9
  */
9
10
  export {};
10
11
  //# sourceMappingURL=GitHubIndexer.test.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"GitHubIndexer.test.d.ts","sourceRoot":"","sources":["../../tests/GitHubIndexer.test.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG"}
1
+ {"version":3,"file":"GitHubIndexer.test.d.ts","sourceRoot":"","sources":["../../tests/GitHubIndexer.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG"}