@skillsmith/core 0.8.0 → 0.8.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (249) hide show
  1. package/CHANGELOG.md +14 -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 +61 -0
  58. package/dist/src/provenance/SourceRecoveryService.d.ts.map +1 -0
  59. package/dist/src/provenance/SourceRecoveryService.js +209 -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 +13 -0
  70. package/dist/src/provenance/index.d.ts.map +1 -0
  71. package/dist/src/provenance/index.js +13 -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/name-variants.d.ts +32 -0
  78. package/dist/src/provenance/name-variants.d.ts.map +1 -0
  79. package/dist/src/provenance/name-variants.js +59 -0
  80. package/dist/src/provenance/name-variants.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 +98 -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/wrap.d.ts +1 -1
  153. package/dist/src/telemetry/wrap.d.ts.map +1 -1
  154. package/dist/src/telemetry/wrap.js.map +1 -1
  155. package/dist/src/types/skill.d.ts +6 -1
  156. package/dist/src/types/skill.d.ts.map +1 -1
  157. package/dist/src/types/skill.js.map +1 -1
  158. package/dist/src/types.d.ts +25 -1
  159. package/dist/src/types.d.ts.map +1 -1
  160. package/dist/src/types.js +3 -1
  161. package/dist/src/types.js.map +1 -1
  162. package/dist/tests/GitHubIndexer.edge-cases.test.js +2 -2
  163. package/dist/tests/GitHubIndexer.repository.test.d.ts +10 -0
  164. package/dist/tests/GitHubIndexer.repository.test.d.ts.map +1 -0
  165. package/dist/tests/GitHubIndexer.repository.test.js +190 -0
  166. package/dist/tests/GitHubIndexer.repository.test.js.map +1 -0
  167. package/dist/tests/GitHubIndexer.test.d.ts +2 -1
  168. package/dist/tests/GitHubIndexer.test.d.ts.map +1 -1
  169. package/dist/tests/GitHubIndexer.test.js +5 -183
  170. package/dist/tests/GitHubIndexer.test.js.map +1 -1
  171. package/dist/tests/QuarantineRepository.review-state-machine.test.d.ts +14 -0
  172. package/dist/tests/QuarantineRepository.review-state-machine.test.d.ts.map +1 -0
  173. package/dist/tests/QuarantineRepository.review-state-machine.test.js +296 -0
  174. package/dist/tests/QuarantineRepository.review-state-machine.test.js.map +1 -0
  175. package/dist/tests/RawUrlSourceAdapter.security.test.js +3 -2
  176. package/dist/tests/RawUrlSourceAdapter.security.test.js.map +1 -1
  177. package/dist/tests/SecurityScanner.exec.test.d.ts +11 -0
  178. package/dist/tests/SecurityScanner.exec.test.d.ts.map +1 -0
  179. package/dist/tests/SecurityScanner.exec.test.js +190 -0
  180. package/dist/tests/SecurityScanner.exec.test.js.map +1 -0
  181. package/dist/tests/SwarmIndexer.test.js +2 -2
  182. package/dist/tests/api/client.validation.test.js +7 -4
  183. package/dist/tests/api/client.validation.test.js.map +1 -1
  184. package/dist/tests/fixtures/api-responses/index.js +1 -1
  185. package/dist/tests/fixtures/api-responses/index.js.map +1 -1
  186. package/dist/tests/integration/QuarantineService.concurrency.test.d.ts +34 -0
  187. package/dist/tests/integration/QuarantineService.concurrency.test.d.ts.map +1 -0
  188. package/dist/tests/integration/QuarantineService.concurrency.test.js +280 -0
  189. package/dist/tests/integration/QuarantineService.concurrency.test.js.map +1 -0
  190. package/dist/tests/integration/openapi-contract.test.d.ts +16 -0
  191. package/dist/tests/integration/openapi-contract.test.d.ts.map +1 -0
  192. package/dist/tests/integration/openapi-contract.test.js +231 -0
  193. package/dist/tests/integration/openapi-contract.test.js.map +1 -0
  194. package/dist/tests/provenance/SourceRecoveryService.test.d.ts +2 -0
  195. package/dist/tests/provenance/SourceRecoveryService.test.d.ts.map +1 -0
  196. package/dist/tests/provenance/SourceRecoveryService.test.js +205 -0
  197. package/dist/tests/provenance/SourceRecoveryService.test.js.map +1 -0
  198. package/dist/tests/provenance/backfill.test.d.ts +2 -0
  199. package/dist/tests/provenance/backfill.test.d.ts.map +1 -0
  200. package/dist/tests/provenance/backfill.test.js +296 -0
  201. package/dist/tests/provenance/backfill.test.js.map +1 -0
  202. package/dist/tests/provenance/git-config.test.d.ts +2 -0
  203. package/dist/tests/provenance/git-config.test.d.ts.map +1 -0
  204. package/dist/tests/provenance/git-config.test.js +73 -0
  205. package/dist/tests/provenance/git-config.test.js.map +1 -0
  206. package/dist/tests/provenance/local-skill-scan.test.d.ts +2 -0
  207. package/dist/tests/provenance/local-skill-scan.test.d.ts.map +1 -0
  208. package/dist/tests/provenance/local-skill-scan.test.js +51 -0
  209. package/dist/tests/provenance/local-skill-scan.test.js.map +1 -0
  210. package/dist/tests/provenance/name-variants.test.d.ts +2 -0
  211. package/dist/tests/provenance/name-variants.test.d.ts.map +1 -0
  212. package/dist/tests/provenance/name-variants.test.js +51 -0
  213. package/dist/tests/provenance/name-variants.test.js.map +1 -0
  214. package/dist/tests/provenance/plugin-manifest.test.d.ts +2 -0
  215. package/dist/tests/provenance/plugin-manifest.test.d.ts.map +1 -0
  216. package/dist/tests/provenance/plugin-manifest.test.js +49 -0
  217. package/dist/tests/provenance/plugin-manifest.test.js.map +1 -0
  218. package/dist/tests/scripts/import-to-database.test.js +7 -1
  219. package/dist/tests/scripts/import-to-database.test.js.map +1 -1
  220. package/dist/tests/security/scanner-regression-guard.test.js +5 -1
  221. package/dist/tests/security/scanner-regression-guard.test.js.map +1 -1
  222. package/dist/tests/security.test.js +45 -0
  223. package/dist/tests/security.test.js.map +1 -1
  224. package/dist/tests/services/aidefence-feedback.test.js +2 -0
  225. package/dist/tests/services/aidefence-feedback.test.js.map +1 -1
  226. package/dist/tests/services/dep-quarantine-check.test.js +1 -1
  227. package/dist/tests/services/dep-quarantine-check.test.js.map +1 -1
  228. package/dist/tests/skill-scanner/allowlist.test.js +8 -1
  229. package/dist/tests/skill-scanner/allowlist.test.js.map +1 -1
  230. package/dist/tests/unit/services/skill-installation.gap1.test.d.ts +12 -0
  231. package/dist/tests/unit/services/skill-installation.gap1.test.d.ts.map +1 -0
  232. package/dist/tests/unit/services/skill-installation.gap1.test.js +96 -0
  233. package/dist/tests/unit/services/skill-installation.gap1.test.js.map +1 -0
  234. package/dist/tests/unit/services/skill-installation.io.test.d.ts +11 -0
  235. package/dist/tests/unit/services/skill-installation.io.test.d.ts.map +1 -0
  236. package/dist/tests/unit/services/skill-installation.io.test.js +130 -0
  237. package/dist/tests/unit/services/skill-installation.io.test.js.map +1 -0
  238. package/dist/tests/validate-skills.dedup.test.d.ts +5 -0
  239. package/dist/tests/validate-skills.dedup.test.d.ts.map +1 -0
  240. package/dist/tests/validate-skills.dedup.test.js +241 -0
  241. package/dist/tests/validate-skills.dedup.test.js.map +1 -0
  242. package/dist/tests/validate-skills.normalizers.test.d.ts +5 -0
  243. package/dist/tests/validate-skills.normalizers.test.d.ts.map +1 -0
  244. package/dist/tests/validate-skills.normalizers.test.js +109 -0
  245. package/dist/tests/validate-skills.normalizers.test.js.map +1 -0
  246. package/dist/tests/validate-skills.test.d.ts +1 -1
  247. package/dist/tests/validate-skills.test.js +7 -345
  248. package/dist/tests/validate-skills.test.js.map +1 -1
  249. package/package.json +19 -8
@@ -0,0 +1,176 @@
1
+ /**
2
+ * @fileoverview I/O helpers for SkillInstallationService (GitHub fetch, file writes)
3
+ * @module @skillsmith/core/services/skill-installation.io
4
+ * @see SMI-4745: domain-driven split to stay under the 500-line CI gate
5
+ */
6
+ import * as fs from 'fs/promises';
7
+ import * as path from 'path';
8
+ import * as os from 'os';
9
+ import { safeWriteFile } from '../utils/safe-fs.js';
10
+ import { SecurityScanner } from '../security/index.js';
11
+ import { validateOptionalConfig } from './skill-installation.validate.js';
12
+ export function assertNotEncrypted(content, filePath) {
13
+ if (content.startsWith('\x00GITCRYPT')) {
14
+ throw new Error('File "' +
15
+ filePath +
16
+ '" is git-crypt encrypted. The repository uses git-crypt and this file cannot be fetched from GitHub.');
17
+ }
18
+ }
19
+ export async function fetchFromGitHub(owner, repo, filePath, branch = 'main') {
20
+ const url = 'https://raw.githubusercontent.com/' + owner + '/' + repo + '/' + branch + '/' + filePath;
21
+ const response = await fetch(url);
22
+ if (!response.ok) {
23
+ if (branch === 'main') {
24
+ const masterUrl = 'https://raw.githubusercontent.com/' + owner + '/' + repo + '/master/' + filePath;
25
+ const masterResponse = await fetch(masterUrl);
26
+ if (!masterResponse.ok) {
27
+ throw new Error('Failed to fetch ' + filePath + ': ' + response.status);
28
+ }
29
+ const masterText = await masterResponse.text();
30
+ assertNotEncrypted(masterText, filePath);
31
+ return masterText;
32
+ }
33
+ throw new Error('Failed to fetch ' + filePath + ': ' + response.status);
34
+ }
35
+ const text = await response.text();
36
+ assertNotEncrypted(text, filePath);
37
+ return text;
38
+ }
39
+ export async function checkForModifications(skillPath, installedAt) {
40
+ try {
41
+ const installDate = new Date(installedAt);
42
+ const files = await fs.readdir(skillPath, { withFileTypes: true });
43
+ for (const file of files) {
44
+ if (file.isFile()) {
45
+ const filePath = path.join(skillPath, file.name);
46
+ const stats = await fs.stat(filePath);
47
+ if (stats.mtime > installDate) {
48
+ return true;
49
+ }
50
+ }
51
+ }
52
+ return false;
53
+ }
54
+ catch {
55
+ return false;
56
+ }
57
+ }
58
+ export async function writeInstallFiles(installPath, skillsDir, skillName, finalSkillContent, subSkillFiles, subagentContent) {
59
+ const writtenFiles = [];
60
+ let subagentPath;
61
+ // SMI-5359 (retro): lexically reject an escaping installPath BEFORE any filesystem
62
+ // mutation. path.resolve normalizes `..`, so an unsanitized skillName like '..'
63
+ // (e.g. path.basename('foo/..')) or a compromised registry skillName cannot drive
64
+ // installPath outside skillsDir and reach the rollback below. Thrown here, nothing
65
+ // has been created, so no cleanup is needed.
66
+ const resolvedInstall = path.resolve(installPath);
67
+ const resolvedSkillsDir = path.resolve(skillsDir);
68
+ if (resolvedInstall !== resolvedSkillsDir &&
69
+ !resolvedInstall.startsWith(resolvedSkillsDir + path.sep)) {
70
+ throw new Error('Install path escapes skills directory (lexical): ' + installPath);
71
+ }
72
+ // Only set true once installPath is PROVEN inside skillsDir (both the lexical check
73
+ // above and the realpath check below). The recursive rollback rm keys off this so it
74
+ // can never force-delete an out-of-bounds path (e.g. a symlink-escape the realpath
75
+ // check rejects after mkdir).
76
+ let pathValidated = false;
77
+ try {
78
+ await fs.mkdir(installPath, { recursive: true });
79
+ // SMI-4692: realpath both sides — macOS /var/folders symlinks to /private/var/folders.
80
+ const realInstallPath = await fs.realpath(installPath);
81
+ const expectedPrefix = await fs.realpath(skillsDir).catch(() => path.resolve(skillsDir));
82
+ if (!realInstallPath.startsWith(expectedPrefix + path.sep) &&
83
+ realInstallPath !== expectedPrefix) {
84
+ throw new Error('Install path escapes skills directory (realpath): ' + installPath);
85
+ }
86
+ pathValidated = true;
87
+ const mainSkillPath = path.join(installPath, 'SKILL.md');
88
+ await safeWriteFile(mainSkillPath, finalSkillContent);
89
+ writtenFiles.push(mainSkillPath);
90
+ // Write sub-skills in parallel
91
+ if (subSkillFiles.length > 0) {
92
+ await Promise.all(subSkillFiles.map(async (subSkill) => {
93
+ const subPath = path.join(installPath, subSkill.filename);
94
+ await safeWriteFile(subPath, subSkill.content);
95
+ writtenFiles.push(subPath);
96
+ }));
97
+ }
98
+ // Write companion subagent if generated
99
+ if (subagentContent) {
100
+ const agentsDir = path.join(os.homedir(), '.claude', 'agents');
101
+ await fs.mkdir(agentsDir, { recursive: true });
102
+ subagentPath = path.join(agentsDir, skillName + '-specialist.md');
103
+ await safeWriteFile(subagentPath, subagentContent);
104
+ writtenFiles.push(subagentPath);
105
+ }
106
+ }
107
+ catch (writeError) {
108
+ // Rollback on failure. Unlink tracked files first (subagentPath lives OUTSIDE
109
+ // installPath, under ~/.claude/agents).
110
+ for (const filePath of writtenFiles) {
111
+ await fs.unlink(filePath).catch(() => { });
112
+ }
113
+ // Only recursively remove installPath once it has been PROVEN inside skillsDir
114
+ // (pathValidated) — so an untracked orphan from a mid-batch Promise.all write can't
115
+ // survive. If mkdir or the realpath escape guard threw, installPath was never
116
+ // validated; fall back to a non-recursive rmdir, a safe no-op on a non-empty or
117
+ // out-of-bounds directory (NEVER a recursive force-delete of an unvalidated path).
118
+ if (pathValidated) {
119
+ await fs.rm(installPath, { recursive: true, force: true }).catch(() => { });
120
+ }
121
+ else {
122
+ await fs.rmdir(installPath).catch(() => { });
123
+ }
124
+ throw writeError;
125
+ }
126
+ return { writtenFiles, subagentPath };
127
+ }
128
+ /**
129
+ * Prose-documentation optional files: they routinely quote attack strings as
130
+ * examples, so a scan failure on these is skipped (FP control, H6) rather than
131
+ * rejecting the install. Non-doc optional files (config.json) DO hard-reject.
132
+ */
133
+ const DOC_OPTIONAL_FILES = new Set(['README.md', 'examples.md']);
134
+ /**
135
+ * SMI-5359 Gap-1: fetch + scan the optional install files WITHOUT writing them.
136
+ * The caller runs this BEFORE writeInstallFiles, rejects on any `failedScans`,
137
+ * and only then writes `filesToWrite` (so a malicious optional file can never
138
+ * leave a partially-installed skill on disk). A fetch/404 error is a silent
139
+ * skip (NOT a scan failure); a config.json that fails scanning IS a rejection.
140
+ */
141
+ export async function fetchAndScanOptionalFiles(owner, repo, basePath, branch, skillId, scannerOptions) {
142
+ const optionalFileScanner = scannerOptions ? new SecurityScanner(scannerOptions) : null;
143
+ const optionalFiles = ['README.md', 'examples.md', 'config.json'];
144
+ const configWarnings = [];
145
+ const failedScans = [];
146
+ const filesToWrite = [];
147
+ for (const file of optionalFiles) {
148
+ let content;
149
+ try {
150
+ content = await fetchFromGitHub(owner, repo, basePath + file, branch);
151
+ }
152
+ catch {
153
+ // Optional file absent / fetch failed — fine to skip (NOT a scan failure).
154
+ continue;
155
+ }
156
+ if (optionalFileScanner) {
157
+ const fileScan = optionalFileScanner.scan(skillId + '/' + file, content);
158
+ if (!fileScan.passed) {
159
+ // H6: prose docs quote attack strings — skip, never reject the install.
160
+ if (DOC_OPTIONAL_FILES.has(file))
161
+ continue;
162
+ failedScans.push({ file, report: fileScan });
163
+ continue;
164
+ }
165
+ }
166
+ if (file === 'config.json') {
167
+ const configCheck = validateOptionalConfig(content);
168
+ if (!configCheck.valid)
169
+ continue; // SMI-3870: skip invalid config
170
+ configWarnings.push(...configCheck.warnings);
171
+ }
172
+ filesToWrite.push({ filename: file, content });
173
+ }
174
+ return { configWarnings, failedScans, filesToWrite };
175
+ }
176
+ //# sourceMappingURL=skill-installation.io.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skill-installation.io.js","sourceRoot":"","sources":["../../../src/services/skill-installation.io.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"skill-installation.service.d.ts","sourceRoot":"","sources":["../../../src/services/skill-installation.service.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAA;AACzE,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,8CAA8C,CAAA;AAC7F,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,+CAA+C,CAAA;AAC/F,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAA;AAC3D,OAAO,EAEL,KAAK,gBAAgB,EACrB,KAAK,cAAc,EACnB,KAAK,aAAa,EAClB,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EACrB,KAAK,iBAAiB,EACvB,MAAM,+BAA+B,CAAA;AAoBtC,MAAM,WAAW,8BAA8B;IAC7C,EAAE,EAAE,QAAQ,CAAA;IACZ,SAAS,EAAE,eAAe,CAAA;IAC1B,mBAAmB,EAAE,yBAAyB,CAAA;IAC9C,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,UAAU,CAAC,EAAE,gBAAgB,CAAA;IAC7B,cAAc,CAAC,EAAE,cAAc,CAAA;IAC/B,iBAAiB,CAAC,EAAE,iBAAiB,CAAA;IACrC,wBAAwB,CAAC,EAAE,MAAM,EAAE,CAAA;IACnC,gBAAgB,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,gBAAgB,GAAG,IAAI,CAAA;IAC/D,eAAe,CAAC,EAAE,0BAA0B,CAAA;IAC5C,iBAAiB,CAAC,EAAE,iBAAiB,CAAA;CACtC;AACD,qBAAa,wBAAwB;IACnC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAU;IAC7B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAiB;IAC3C,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAA2B;IAC/D,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAQ;IAClC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAiB;IAC1C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAkB;IAC7C,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAgB;IAChD,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAmB;IACtD,OAAO,CAAC,QAAQ,CAAC,wBAAwB,CAAU;IACnD,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAA8C;IAChF,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC,CAA4B;IAC7D,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAmB;gBAC1C,MAAM,EAAE,8BAA8B;IAc5C,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE,cAAmB,GAAG,OAAO,CAAC,aAAa,CAAC;IAiZ9E,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,GAAE,gBAAqB,GAAG,OAAO,CAAC,eAAe,CAAC;CAU7F"}
1
+ {"version":3,"file":"skill-installation.service.d.ts","sourceRoot":"","sources":["../../../src/services/skill-installation.service.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAA;AACzE,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,8CAA8C,CAAA;AAC7F,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,+CAA+C,CAAA;AAC/F,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAA;AAC3D,OAAO,EAEL,KAAK,gBAAgB,EACrB,KAAK,cAAc,EACnB,KAAK,aAAa,EAClB,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EACrB,KAAK,iBAAiB,EACvB,MAAM,+BAA+B,CAAA;AA0BtC,MAAM,WAAW,8BAA8B;IAC7C,EAAE,EAAE,QAAQ,CAAA;IACZ,SAAS,EAAE,eAAe,CAAA;IAC1B,mBAAmB,EAAE,yBAAyB,CAAA;IAC9C,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,UAAU,CAAC,EAAE,gBAAgB,CAAA;IAC7B,cAAc,CAAC,EAAE,cAAc,CAAA;IAC/B,iBAAiB,CAAC,EAAE,iBAAiB,CAAA;IACrC,wBAAwB,CAAC,EAAE,MAAM,EAAE,CAAA;IACnC,gBAAgB,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,gBAAgB,GAAG,IAAI,CAAA;IAC/D,eAAe,CAAC,EAAE,0BAA0B,CAAA;IAC5C,iBAAiB,CAAC,EAAE,iBAAiB,CAAA;CACtC;AACD,qBAAa,wBAAwB;IACnC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAU;IAC7B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAiB;IAC3C,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAA2B;IAC/D,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAQ;IAClC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAiB;IAC1C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAkB;IAC7C,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAgB;IAChD,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAmB;IACtD,OAAO,CAAC,QAAQ,CAAC,wBAAwB,CAAU;IACnD,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAA8C;IAChF,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC,CAA4B;IAC7D,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAmB;gBAC1C,MAAM,EAAE,8BAA8B;IAc5C,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE,cAAmB,GAAG,OAAO,CAAC,aAAa,CAAC;IAgW9E,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,GAAE,gBAAqB,GAAG,OAAO,CAAC,eAAe,CAAC;CAU7F"}
@@ -1,14 +1,13 @@
1
1
  /** @fileoverview SkillInstallationService — shared install/uninstall business logic (SMI-3483) */
2
- import * as fs from 'fs/promises';
3
2
  import * as path from 'path';
4
3
  import * as os from 'os';
5
4
  import { SecurityScanner } from '../security/index.js';
6
- import { safeWriteFile } from '../utils/safe-fs.js';
7
- import { parseRepoUrl } from '../utils/github-url.js';
8
5
  import { TRUST_TIER_SCANNER_OPTIONS, } from './skill-installation.types.js';
9
6
  import { recordAiDefenceFeedback, collectTrendWarnings } from './skill-installation.feedback.js';
10
7
  import { ManifestManager } from './skill-manifest.js';
11
- import { parseSkillIdInternal, hashContent, validateSkillMd, fetchFromGitHub, generateTips, extractDepIntel, persistDependencies, applyOptimization, performUninstall, sanitizeInstallError, validateOptionalConfig, checkDepsAgainstQuarantine, } from './skill-installation.helpers.js';
8
+ import { hashContent, generateTips, extractDepIntel, persistDependencies, applyOptimization, performUninstall, sanitizeInstallError, } from './skill-installation.helpers.js';
9
+ import { parseSkillIdInternal, validateSkillMd, checkDepsAgainstQuarantine, resolveRegistryInstall, } from './skill-installation.validate.js';
10
+ import { fetchFromGitHub, writeInstallFiles, fetchAndScanOptionalFiles, } from './skill-installation.io.js';
12
11
  import { buildInstallFailure, buildConfirmationRequired } from './skill-installation.errors.js';
13
12
  const DEFAULT_SKILLS_DIR = path.join(os.homedir(), '.claude', 'skills');
14
13
  const DEFAULT_MANIFEST_PATH = path.join(os.homedir(), '.skillsmith', 'manifest.json');
@@ -61,48 +60,17 @@ export class SkillInstallationService {
61
60
  });
62
61
  }
63
62
  this.onProgress('lookup', 'Looking up skill in registry');
64
- const registrySkill = await this.registryLookup.lookup(skillId);
65
- if (!registrySkill) {
66
- return buildInstallFailure('REGISTRY_SKILL_NOT_FOUND', {
67
- skillId,
68
- installPath: '',
69
- error: 'Skill "' +
70
- skillId +
71
- '" is indexed for discovery only. ' +
72
- 'No installation source available (repo_url is missing). ' +
73
- 'This may be placeholder/seed data or a metadata-only entry.',
74
- tips: [
75
- 'Use a full GitHub URL instead: install { skillId: "https://github.com/owner/repo" }',
76
- 'Search for installable skills using the search tool',
77
- 'Many indexed skills are metadata-only and cannot be installed directly',
78
- ],
79
- });
80
- }
81
- if (registrySkill.quarantined) {
82
- return buildInstallFailure('QUARANTINED', {
83
- skillId,
84
- installPath: '',
85
- trustTier: registrySkill.trustTier,
86
- error: 'Skill "' +
87
- skillId +
88
- '" has been quarantined due to security concerns. ' +
89
- 'Installation is blocked to protect your environment.',
90
- tips: [
91
- 'Visit https://skillsmith.app/docs/quarantine for details on quarantine policies',
92
- 'If you believe this is a false positive, contact support via https://skillsmith.app/contact?topic=security',
93
- 'Contact the skill author or visit the quarantine documentation for more information',
94
- ],
95
- });
96
- }
97
- const repoInfo = parseRepoUrl(registrySkill.repoUrl);
98
- owner = repoInfo.owner;
99
- repo = repoInfo.repo;
100
- basePath = repoInfo.path ? repoInfo.path + '/' : '';
101
- branch = repoInfo.branch;
102
- skillName = registrySkill.name;
103
- trustTier = registrySkill.trustTier;
63
+ const resolution = await resolveRegistryInstall(skillId, this.registryLookup);
64
+ if (!resolution.resolved)
65
+ return resolution.failure;
66
+ owner = resolution.owner;
67
+ repo = resolution.repo;
68
+ basePath = resolution.basePath;
69
+ branch = resolution.branch;
70
+ skillName = resolution.skillName;
71
+ trustTier = resolution.trustTier;
72
+ indexedContentHash = resolution.indexedContentHash;
104
73
  fromRegistry = true;
105
- indexedContentHash = registrySkill.contentHash;
106
74
  }
107
75
  else {
108
76
  owner = parsed.owner;
@@ -258,74 +226,44 @@ export class SkillInstallationService {
258
226
  : await applyOptimization(this.db, skillId, skillName, skillMdContent);
259
227
  const { finalSkillContent, subSkillFiles, subagentContent, optimizationInfo } = optimizeResult;
260
228
  const contentHash = hashContent(finalSkillContent);
261
- // Write files
262
- this.onProgress('write', 'Writing skill files');
263
- const writtenFiles = [];
264
- try {
265
- await fs.mkdir(installPath, { recursive: true });
266
- // SMI-4692: realpath both sides — macOS /var/folders symlinks to /private/var/folders.
267
- const realInstallPath = await fs.realpath(installPath);
268
- const expectedPrefix = await fs
269
- .realpath(this.skillsDir)
270
- .catch(() => path.resolve(this.skillsDir));
271
- if (!realInstallPath.startsWith(expectedPrefix + path.sep) &&
272
- realInstallPath !== expectedPrefix) {
273
- throw new Error('Install path escapes skills directory: ' + installPath);
274
- }
275
- const mainSkillPath = path.join(installPath, 'SKILL.md');
276
- await safeWriteFile(mainSkillPath, finalSkillContent);
277
- writtenFiles.push(mainSkillPath);
278
- // Write sub-skills in parallel
279
- if (subSkillFiles.length > 0) {
280
- await Promise.all(subSkillFiles.map(async (subSkill) => {
281
- const subPath = path.join(installPath, subSkill.filename);
282
- await safeWriteFile(subPath, subSkill.content);
283
- writtenFiles.push(subPath);
284
- }));
285
- }
286
- // Write companion subagent if generated
287
- if (subagentContent) {
288
- const agentsDir = path.join(os.homedir(), '.claude', 'agents');
289
- await fs.mkdir(agentsDir, { recursive: true });
290
- const subagentPath = path.join(agentsDir, skillName + '-specialist.md');
291
- await safeWriteFile(subagentPath, subagentContent);
292
- writtenFiles.push(subagentPath);
293
- optimizationInfo.subagentPath = subagentPath;
294
- }
295
- }
296
- catch (writeError) {
297
- // Rollback on failure
298
- for (const filePath of writtenFiles) {
299
- await fs.unlink(filePath).catch(() => { });
300
- }
301
- await fs.rmdir(installPath).catch(() => { });
302
- throw writeError;
229
+ // SMI-5359 Gap-1: fetch + scan optional files BEFORE writing anything, so a
230
+ // malicious optional file rejects the install with no files stranded on disk.
231
+ // (H4: previously writeInstallFiles ran first, so a post-write reject left
232
+ // SKILL.md orphaned; the optional scan also silently `continue`d on failure.)
233
+ const optionalFiles = await fetchAndScanOptionalFiles(owner, repo, basePath, branch, skillId, options.skipScan ? null : TRUST_TIER_SCANNER_OPTIONS[trustTier]);
234
+ if (optionalFiles.failedScans.length > 0) {
235
+ const first = optionalFiles.failedScans[0];
236
+ const crit = first.report.findings.filter((f) => f.severity === 'critical' || f.severity === 'high');
237
+ const others = optionalFiles.failedScans.slice(1).map((s) => s.file);
238
+ return buildInstallFailure('SCAN_REJECTED', {
239
+ skillId,
240
+ installPath,
241
+ trustTier,
242
+ securityReport: first.report,
243
+ error: 'Optional file "' +
244
+ first.file +
245
+ '" failed the security scan with ' +
246
+ crit.length +
247
+ ' critical/high finding(s) (risk score ' +
248
+ first.report.riskScore +
249
+ ').',
250
+ tips: [
251
+ 'Rejected optional file: ' + first.file,
252
+ 'Risk score: ' + first.report.riskScore,
253
+ ...(others.length > 0 ? ['Other rejected optional files: ' + others.join(', ')] : []),
254
+ ],
255
+ });
303
256
  }
304
- // Fetch optional files
305
- const optionalFileScanner = options.skipScan
306
- ? null
307
- : new SecurityScanner(TRUST_TIER_SCANNER_OPTIONS[trustTier]);
308
- const optionalFiles = ['README.md', 'examples.md', 'config.json'];
309
- const configWarnings = [];
310
- for (const file of optionalFiles) {
311
- try {
312
- const content = await fetchFromGitHub(owner, repo, basePath + file, branch);
313
- if (optionalFileScanner) {
314
- const fileScan = optionalFileScanner.scan(skillId + '/' + file, content);
315
- if (!fileScan.passed)
316
- continue;
317
- }
318
- if (file === 'config.json') {
319
- const configCheck = validateOptionalConfig(content);
320
- if (!configCheck.valid)
321
- continue; // SMI-3870: skip invalid config
322
- configWarnings.push(...configCheck.warnings);
323
- }
324
- await safeWriteFile(path.join(installPath, file), content);
325
- }
326
- catch {
327
- // Optional files are fine to skip
328
- }
257
+ this.onProgress('write', 'Writing skill files');
258
+ // Optional files ride writeInstallFiles' rollback alongside the sub-skills.
259
+ // Dedupe by filename first: a generated sub-skill and a repo optional file
260
+ // could collide (e.g. examples.md), which would race in writeInstallFiles'
261
+ // Promise.all. Drop the colliding sub-skill so the optional wins — matching
262
+ // the prior behavior (optional files were written last, after the sub-skills).
263
+ const subSkillsNoCollision = subSkillFiles.filter((s) => !optionalFiles.filesToWrite.some((o) => o.filename === s.filename));
264
+ const writeResult = await writeInstallFiles(installPath, this.skillsDir, skillName, finalSkillContent, [...subSkillsNoCollision, ...optionalFiles.filesToWrite], subagentContent);
265
+ if (writeResult.subagentPath) {
266
+ optimizationInfo.subagentPath = writeResult.subagentPath;
329
267
  }
330
268
  // Update manifest
331
269
  this.onProgress('manifest', 'Updating manifest');
@@ -387,7 +325,7 @@ export class SkillInstallationService {
387
325
  this.onProgress('done', 'Installation complete');
388
326
  const tips = generateTips(skillName, optimizationInfo);
389
327
  tips.unshift(...trendWarnings);
390
- tips.push(...configWarnings);
328
+ tips.push(...optionalFiles.configWarnings);
391
329
  if (options.skipScan) {
392
330
  tips.unshift('Security scan was skipped. This skill was not scanned for malicious content.');
393
331
  }
@@ -1 +1 @@
1
- {"version":3,"file":"skill-installation.service.js","sourceRoot":"","sources":["../../../src/services/skill-installation.service.ts"],"names":[],"mappings":"AAAA,kGAAkG;AAClG,OAAO,KAAK,EAAE,MAAM,aAAa,CAAA;AACjC,OAAO,KAAK,IAAI,MAAM,MAAM,CAAA;AAC5B,OAAO,KAAK,EAAE,MAAM,IAAI,CAAA;AACxB,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAA;AAMrD,OAAO,EACL,0BAA0B,GAU3B,MAAM,+BAA+B,CAAA;AACtC,OAAO,EAAE,uBAAuB,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAA;AAChG,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AACrD,OAAO,EACL,oBAAoB,EACpB,WAAW,EACX,eAAe,EACf,eAAe,EACf,YAAY,EACZ,eAAe,EACf,mBAAmB,EACnB,iBAAiB,EACjB,gBAAgB,EAChB,oBAAoB,EACpB,sBAAsB,EACtB,0BAA0B,GAC3B,MAAM,iCAAiC,CAAA;AACxC,OAAO,EAAE,mBAAmB,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAA;AAC/F,MAAM,kBAAkB,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAA;AACvE,MAAM,qBAAqB,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,aAAa,EAAE,eAAe,CAAC,CAAA;AAerF,MAAM,OAAO,wBAAwB;IAClB,EAAE,CAAU;IACZ,SAAS,CAAiB;IAC1B,mBAAmB,CAA2B;IAC9C,SAAS,CAAQ;IACjB,QAAQ,CAAiB;IACzB,UAAU,CAAkB;IAC5B,cAAc,CAAiB;IAC/B,iBAAiB,CAAoB;IACrC,wBAAwB,CAAU;IAClC,gBAAgB,CAA+C;IAC/D,eAAe,CAA6B;IAC5C,iBAAiB,CAAoB;IACtD,YAAY,MAAsC;QAChD,IAAI,CAAC,EAAE,GAAG,MAAM,CAAC,EAAE,CAAA;QACnB,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAA;QACjC,IAAI,CAAC,mBAAmB,GAAG,MAAM,CAAC,mBAAmB,CAAA;QACrD,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,IAAI,kBAAkB,CAAA;QACvD,IAAI,CAAC,QAAQ,GAAG,IAAI,eAAe,CAAC,MAAM,CAAC,YAAY,IAAI,qBAAqB,CAAC,CAAA;QACjF,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,IAAI,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAA;QACjD,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC,cAAc,CAAA;QAC3C,IAAI,CAAC,iBAAiB,GAAG,MAAM,CAAC,iBAAiB,CAAA;QACjD,IAAI,CAAC,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAA;QAC/C,IAAI,CAAC,eAAe,GAAG,MAAM,CAAC,eAAe,CAAA;QAC7C,IAAI,CAAC,iBAAiB,GAAG,MAAM,CAAC,iBAAiB,CAAA;QACjD,IAAI,CAAC,wBAAwB,GAAG,MAAM,CAAC,wBAAwB,IAAI,EAAE,CAAA;IACvE,CAAC;IACD,KAAK,CAAC,OAAO,CAAC,OAAe,EAAE,UAA0B,EAAE;QACzD,IAAI,SAAS,GAAc,SAAS,CAAA;QACpC,IAAI,CAAC;YACH,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAA;YAC5C,MAAM,MAAM,GAAG,oBAAoB,CAAC,OAAO,CAAC,CAAA;YAC5C,IAAI,KAAa,CAAA;YACjB,IAAI,IAAY,CAAA;YAChB,IAAI,QAAgB,CAAA;YACpB,IAAI,SAAiB,CAAA;YACrB,IAAI,MAAM,GAAW,MAAM,CAAA;YAC3B,IAAI,YAAY,GAAG,KAAK,CAAA;YACxB,IAAI,kBAAsC,CAAA;YAC1C,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;gBACxB,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;oBACzB,OAAO,mBAAmB,CAAC,6BAA6B,EAAE;wBACxD,OAAO;wBACP,WAAW,EAAE,EAAE;wBACf,KAAK,EACH,iCAAiC;4BACjC,6EAA6E;qBAChF,CAAC,CAAA;gBACJ,CAAC;gBACD,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,8BAA8B,CAAC,CAAA;gBACzD,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;gBAC/D,IAAI,CAAC,aAAa,EAAE,CAAC;oBACnB,OAAO,mBAAmB,CAAC,0BAA0B,EAAE;wBACrD,OAAO;wBACP,WAAW,EAAE,EAAE;wBACf,KAAK,EACH,SAAS;4BACT,OAAO;4BACP,mCAAmC;4BACnC,0DAA0D;4BAC1D,6DAA6D;wBAC/D,IAAI,EAAE;4BACJ,qFAAqF;4BACrF,qDAAqD;4BACrD,wEAAwE;yBACzE;qBACF,CAAC,CAAA;gBACJ,CAAC;gBACD,IAAI,aAAa,CAAC,WAAW,EAAE,CAAC;oBAC9B,OAAO,mBAAmB,CAAC,aAAa,EAAE;wBACxC,OAAO;wBACP,WAAW,EAAE,EAAE;wBACf,SAAS,EAAE,aAAa,CAAC,SAAS;wBAClC,KAAK,EACH,SAAS;4BACT,OAAO;4BACP,mDAAmD;4BACnD,sDAAsD;wBACxD,IAAI,EAAE;4BACJ,iFAAiF;4BACjF,4GAA4G;4BAC5G,qFAAqF;yBACtF;qBACF,CAAC,CAAA;gBACJ,CAAC;gBAED,MAAM,QAAQ,GAAG,YAAY,CAAC,aAAa,CAAC,OAAO,CAAC,CAAA;gBACpD,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAA;gBACtB,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAA;gBACpB,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAA;gBACnD,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAA;gBACxB,SAAS,GAAG,aAAa,CAAC,IAAI,CAAA;gBAC9B,SAAS,GAAG,aAAa,CAAC,SAAS,CAAA;gBACnC,YAAY,GAAG,IAAI,CAAA;gBACnB,kBAAkB,GAAG,aAAa,CAAC,WAAW,CAAA;YAChD,CAAC;iBAAM,CAAC;gBACN,KAAK,GAAG,MAAM,CAAC,KAAK,CAAA;gBACpB,IAAI,GAAG,MAAM,CAAC,IAAI,CAAA;gBAClB,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAA;gBAC/C,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;YAC7D,CAAC;YAED,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,CAAA;YACxD,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,mBAAmB,CAAC,CAAA;YAChD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAA;YAC3C,IAAI,QAAQ,CAAC,eAAe,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;gBAC1D,OAAO,mBAAmB,CAAC,mBAAmB,EAAE;oBAC9C,OAAO;oBACP,WAAW;oBACX,SAAS;oBACT,KAAK,EAAE,SAAS,GAAG,SAAS,GAAG,sDAAsD;iBACtF,CAAC,CAAA;YACJ,CAAC;YACD,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,+BAA+B,CAAC,CAAA;YACzD,MAAM,WAAW,GAAG,QAAQ,GAAG,UAAU,CAAA;YACzC,IAAI,cAAsB,CAAA;YAC1B,IAAI,CAAC;gBACH,cAAc,GAAG,MAAM,eAAe,CAAC,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,CAAC,CAAA;YAC1E,CAAC;YAAC,MAAM,CAAC;gBACP,MAAM,OAAO,GAAG,qBAAqB,GAAG,KAAK,GAAG,GAAG,GAAG,IAAI,CAAA;gBAC1D,OAAO,mBAAmB,CAAC,cAAc,EAAE;oBACzC,OAAO;oBACP,WAAW;oBACX,SAAS;oBACT,KAAK,EAAE,YAAY;wBACjB,CAAC,CAAC,qHAAqH;4BACrH,CAAC,QAAQ,IAAI,iBAAiB,CAAC;4BAC/B,mIAAmI;4BACnI,OAAO;wBACT,CAAC,CAAC,6BAA6B;4BAC7B,CAAC,QAAQ,IAAI,iBAAiB,CAAC;4BAC/B,0FAA0F;4BAC1F,OAAO;oBACX,IAAI,EAAE,YAAY;wBAChB,CAAC,CAAC;4BACE,gEAAgE;4BAChE,gFAAgF;yBACjF;wBACH,CAAC,CAAC;4BACE,kEAAkE;4BAClE,gCAAgC,GAAG,OAAO;yBAC3C;iBACN,CAAC,CAAA;YACJ,CAAC;YACD,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,qBAAqB,CAAC,CAAA;YAClD,MAAM,UAAU,GAAG,eAAe,CAAC,cAAc,CAAC,CAAA;YAClD,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;gBACtB,OAAO,mBAAmB,CAAC,mBAAmB,EAAE;oBAC9C,OAAO;oBACP,WAAW;oBACX,SAAS;oBACT,KAAK,EAAE,oBAAoB,GAAG,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;oBAC1D,IAAI,EAAE;wBACJ,sEAAsE;wBACtE,yCAAyC;qBAC1C;iBACF,CAAC,CAAA;YACJ,CAAC;YAED,MAAM,mBAAmB,GAAG,WAAW;aACrC,kBAAkB,IAAI,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,cAAc,CAAC,KAAK,kBAAkB,CAAC,CAAC,CAAC,KAAK,CAAA;YACzF,kEAAkE;YAClE,IAAI,OAAO,CAAC,QAAQ,IAAI,CAAC,SAAS,KAAK,cAAc,IAAI,SAAS,KAAK,SAAS,CAAC,EAAE,CAAC;gBAClF,OAAO,mBAAmB,CAAC,qBAAqB,EAAE;oBAChD,OAAO;oBACP,WAAW,EAAE,EAAE;oBACf,SAAS;oBACT,KAAK,EACH,gCAAgC;wBAChC,SAAS;wBACT,gBAAgB;wBAChB,4EAA4E;oBAC9E,IAAI,EAAE;wBACJ,cAAc,GAAG,SAAS,GAAG,gDAAgD;wBAC7E,iFAAiF;qBAClF;iBACF,CAAC,CAAA;YACJ,CAAC;YACD,IAAI,cAA+C,CAAA;YACnD,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;gBACtB,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,uBAAuB,CAAC,CAAA;gBAChD,MAAM,cAAc,GAAG,0BAA0B,CAAC,SAAS,CAAC,CAAA;gBAC5D,MAAM,OAAO,GAAG,IAAI,eAAe,CAAC,cAAc,CAAC,CAAA;gBACnD,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,cAAc,CAAC,CAAA;gBAEtD,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC;oBAC3B,uBAAuB,CAAC;wBACtB,QAAQ,EAAE,IAAI,CAAC,iBAAiB;wBAChC,cAAc;wBACd,UAAU,EAAE,cAAc;wBAC1B,OAAO,EAAE,IAAI;qBACd,CAAC,CAAA;oBACF,MAAM,gBAAgB,GAAG,cAAc,CAAC,QAAQ,CAAC,MAAM,CACrD,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,UAAU,IAAI,CAAC,CAAC,QAAQ,KAAK,MAAM,CAC1D,CAAA;oBACD,MAAM,WAAW,GACf,SAAS,KAAK,SAAS;wBACrB,CAAC,CAAC,uDAAuD;wBACzD,CAAC,CAAC,SAAS,KAAK,cAAc;4BAC5B,CAAC,CAAC,qDAAqD;4BACvD,CAAC,CAAC,EAAE,CAAA;oBAEV,OAAO,mBAAmB,CAAC,eAAe,EAAE;wBAC1C,OAAO;wBACP,WAAW;wBACX,SAAS;wBACT,cAAc;wBACd,KAAK,EACH,4BAA4B;4BAC5B,gBAAgB,CAAC,MAAM;4BACvB,yBAAyB;4BACzB,WAAW;4BACX,CAAC,SAAS,KAAK,cAAc,IAAI,SAAS,KAAK,SAAS;gCACtD,CAAC,CAAC,kCAAkC,GAAG,SAAS,GAAG,eAAe;gCAClE,CAAC,CAAC,oDAAoD,CAAC;wBAC3D,IAAI,EAAE;4BACJ,cAAc,GAAG,SAAS,GAAG,eAAe,GAAG,cAAc,CAAC,aAAa,GAAG,GAAG;4BACjF,cAAc,GAAG,cAAc,CAAC,SAAS;yBAC1C;qBACF,CAAC,CAAA;gBACJ,CAAC;YACH,CAAC;YAED,mFAAmF;YACnF,MAAM,iBAAiB,GACrB,YAAY;gBACZ,CAAC,SAAS,KAAK,cAAc,IAAI,SAAS,KAAK,SAAS,CAAC;gBACzD,CAAC,OAAO,CAAC,SAAS,CAAA;YACpB,IAAI,iBAAiB,EAAE,CAAC;gBACtB,MAAM,QAAQ,GAAG,cAAc;oBAC7B,CAAC,CAAC,cAAc,CAAC,MAAM;wBACrB,CAAC,CAAC,SAAS,GAAG,sCAAsC;wBACpD,CAAC,CAAC,gCAAgC;oBACpC,CAAC,CAAC,iCAAiC,CAAA;gBACrC,OAAO,yBAAyB,CAAC;oBAC/B,OAAO;oBACP,WAAW;oBACX,SAAS;oBACT,cAAc;oBACd,kBAAkB,EAChB,aAAa;wBACb,SAAS;wBACT,eAAe;wBACf,QAAQ;wBACR,yCAAyC;oBAC3C,IAAI,EAAE,CAAC,cAAc,GAAG,SAAS,EAAE,iDAAiD,CAAC;iBACtF,CAAC,CAAA;YACJ,CAAC;YACD,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,uBAAuB,CAAC,CAAA;YACpD,MAAM,cAAc,GAAG,OAAO,CAAC,YAAY;gBACzC,CAAC,CAAC;oBACE,iBAAiB,EAAE,cAAc;oBACjC,aAAa,EAAE,EAAkD;oBACjE,eAAe,EAAE,SAA+B;oBAChD,eAAe,EAAE,SAA+B;oBAChD,gBAAgB,EAAE,EAAE,SAAS,EAAE,KAAc,EAAE;iBAChD;gBACH,CAAC,CAAC,MAAM,iBAAiB,CAAC,IAAI,CAAC,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,cAAc,CAAC,CAAA;YAExE,MAAM,EAAE,iBAAiB,EAAE,aAAa,EAAE,eAAe,EAAE,gBAAgB,EAAE,GAAG,cAAc,CAAA;YAC9F,MAAM,WAAW,GAAG,WAAW,CAAC,iBAAiB,CAAC,CAAA;YAClD,cAAc;YACd,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,qBAAqB,CAAC,CAAA;YAC/C,MAAM,YAAY,GAAa,EAAE,CAAA;YACjC,IAAI,CAAC;gBACH,MAAM,EAAE,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;gBAChD,uFAAuF;gBACvF,MAAM,eAAe,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAA;gBACtD,MAAM,cAAc,GAAG,MAAM,EAAE;qBAC5B,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC;qBACxB,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAA;gBAC5C,IACE,CAAC,eAAe,CAAC,UAAU,CAAC,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC;oBACtD,eAAe,KAAK,cAAc,EAClC,CAAC;oBACD,MAAM,IAAI,KAAK,CAAC,yCAAyC,GAAG,WAAW,CAAC,CAAA;gBAC1E,CAAC;gBAED,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,UAAU,CAAC,CAAA;gBACxD,MAAM,aAAa,CAAC,aAAa,EAAE,iBAAiB,CAAC,CAAA;gBACrD,YAAY,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;gBAChC,+BAA+B;gBAC/B,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC7B,MAAM,OAAO,CAAC,GAAG,CACf,aAAa,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE;wBACnC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAA;wBACzD,MAAM,aAAa,CAAC,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAA;wBAC9C,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;oBAC5B,CAAC,CAAC,CACH,CAAA;gBACH,CAAC;gBACD,wCAAwC;gBACxC,IAAI,eAAe,EAAE,CAAC;oBACpB,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAA;oBAC9D,MAAM,EAAE,CAAC,KAAK,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;oBAC9C,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,GAAG,gBAAgB,CAAC,CAAA;oBACvE,MAAM,aAAa,CAAC,YAAY,EAAE,eAAe,CAAC,CAAA;oBAClD,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;oBAC/B,gBAAgB,CAAC,YAAY,GAAG,YAAY,CAAA;gBAC9C,CAAC;YACH,CAAC;YAAC,OAAO,UAAU,EAAE,CAAC;gBACpB,sBAAsB;gBACtB,KAAK,MAAM,QAAQ,IAAI,YAAY,EAAE,CAAC;oBACpC,MAAM,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAA;gBAC3C,CAAC;gBACD,MAAM,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAA;gBAC3C,MAAM,UAAU,CAAA;YAClB,CAAC;YAED,uBAAuB;YACvB,MAAM,mBAAmB,GAAG,OAAO,CAAC,QAAQ;gBAC1C,CAAC,CAAC,IAAI;gBACN,CAAC,CAAC,IAAI,eAAe,CAAC,0BAA0B,CAAC,SAAS,CAAC,CAAC,CAAA;YAC9D,MAAM,aAAa,GAAG,CAAC,WAAW,EAAE,aAAa,EAAE,aAAa,CAAC,CAAA;YACjE,MAAM,cAAc,GAAa,EAAE,CAAA;YACnC,KAAK,MAAM,IAAI,IAAI,aAAa,EAAE,CAAC;gBACjC,IAAI,CAAC;oBACH,MAAM,OAAO,GAAG,MAAM,eAAe,CAAC,KAAK,EAAE,IAAI,EAAE,QAAQ,GAAG,IAAI,EAAE,MAAM,CAAC,CAAA;oBAC3E,IAAI,mBAAmB,EAAE,CAAC;wBACxB,MAAM,QAAQ,GAAG,mBAAmB,CAAC,IAAI,CAAC,OAAO,GAAG,GAAG,GAAG,IAAI,EAAE,OAAO,CAAC,CAAA;wBACxE,IAAI,CAAC,QAAQ,CAAC,MAAM;4BAAE,SAAQ;oBAChC,CAAC;oBACD,IAAI,IAAI,KAAK,aAAa,EAAE,CAAC;wBAC3B,MAAM,WAAW,GAAG,sBAAsB,CAAC,OAAO,CAAC,CAAA;wBACnD,IAAI,CAAC,WAAW,CAAC,KAAK;4BAAE,SAAQ,CAAC,gCAAgC;wBACjE,cAAc,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAA;oBAC9C,CAAC;oBACD,MAAM,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,EAAE,OAAO,CAAC,CAAA;gBAC5D,CAAC;gBAAC,MAAM,CAAC;oBACP,kCAAkC;gBACpC,CAAC;YACH,CAAC;YAED,kBAAkB;YAClB,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,mBAAmB,CAAC,CAAA;YAChD,MAAM,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC;gBACrD,GAAG,eAAe;gBAClB,eAAe,EAAE;oBACf,GAAG,eAAe,CAAC,eAAe;oBAClC,CAAC,SAAS,CAAC,EAAE;wBACX,EAAE,EAAE,OAAO;wBACX,IAAI,EAAE,SAAS;wBACf,OAAO,EAAE,OAAO;wBAChB,MAAM,EAAE,SAAS,GAAG,KAAK,GAAG,GAAG,GAAG,IAAI;wBACtC,WAAW;wBACX,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;wBACrC,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;wBACrC,mBAAmB,EAAE,WAAW,EAAE,qDAAqD;qBACxF;iBACF;aACF,CAAC,CAAC,CAAA;YACH,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;gBAC3B,IAAI,CAAC,iBAAiB,CAAC,uBAAuB,CAAC,CAAC,GAAG,IAAI,CAAC,wBAAwB,EAAE,OAAO,CAAC,CAAC,CAAA;gBAC3F,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;YAC7C,CAAC;YACD,gDAAgD;YAChD,MAAM,QAAQ,GAAG,eAAe,CAAC,cAAc,CAAC,CAAA;YAChD,IAAI,CAAC;gBACH,mBAAmB,CACjB,IAAI,CAAC,mBAAmB,EACxB,OAAO,EACP,cAAc,EACd,QAAQ,CAAC,YAAY,CACtB,CAAA;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,iBAAiB;YACnB,CAAC;YACD,IAAI,eAAqC,CAAA,CAAC,WAAW;YACrD,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;gBAC1B,IAAI,CAAC;oBACH,MAAM,QAAQ,GAAG,0BAA0B,CAAC,QAAQ,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAA;oBAC5E,IAAI,QAAQ,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;wBACxC,eAAe,GAAG,QAAQ,CAAC,eAAe,CAAA;wBAC1C,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAA;oBAClD,CAAC;gBACH,CAAC;gBAAC,MAAM,CAAC;oBACP,iBAAiB;gBACnB,CAAC;YACH,CAAC;YACD,MAAM,aAAa,GAAG,cAAc;gBAClC,CAAC,CAAC,oBAAoB,CAAC;oBACnB,WAAW,EAAE,IAAI,CAAC,eAAe;oBACjC,OAAO;oBACP,UAAU,EAAE,cAAc;oBAC1B,WAAW;iBACZ,CAAC;gBACJ,CAAC,CAAC,EAAE,CAAA;YACN,uBAAuB,CAAC;gBACtB,QAAQ,EAAE,IAAI,CAAC,iBAAiB;gBAChC,cAAc;gBACd,UAAU,EAAE,cAAc;gBAC1B,OAAO,EAAE,KAAK;aACf,CAAC,CAAA;YACF,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,uBAAuB,CAAC,CAAA;YAChD,MAAM,IAAI,GAAG,YAAY,CAAC,SAAS,EAAE,gBAAgB,CAAC,CAAA;YACtD,IAAI,CAAC,OAAO,CAAC,GAAG,aAAa,CAAC,CAAA;YAC9B,IAAI,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,CAAA;YAC5B,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;gBACrB,IAAI,CAAC,OAAO,CAAC,8EAA8E,CAAC,CAAA;YAC9F,CAAC;YACD,IAAI,mBAAmB,EAAE,CAAC;gBACxB,IAAI,CAAC,OAAO,CACV,+LAA+L,CAChM,CAAA;YACH,CAAC;YAED,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,OAAO;gBACP,WAAW;gBACX,cAAc;gBACd,SAAS;gBACT,YAAY,EAAE,gBAAgB;gBAC9B,QAAQ;gBACR,mBAAmB;gBACnB,eAAe;gBACf,IAAI;aACL,CAAA;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,mBAAmB,CAAC,SAAS,EAAE;gBACpC,OAAO;gBACP,WAAW,EAAE,EAAE;gBACf,SAAS;gBACT,KAAK,EAAE,oBAAoB,CAAC,KAAK,CAAC;aACnC,CAAC,CAAA;QACJ,CAAC;IACH,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,SAAiB,EAAE,UAA4B,EAAE;QAC/D,OAAO,gBAAgB,CAAC;YACtB,SAAS;YACT,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,KAAK;YAC7B,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,mBAAmB,EAAE,IAAI,CAAC,mBAAmB;YAC7C,UAAU,EAAE,IAAI,CAAC,UAAU;SAC5B,CAAC,CAAA;IACJ,CAAC;CACF"}
1
+ {"version":3,"file":"skill-installation.service.js","sourceRoot":"","sources":["../../../src/services/skill-installation.service.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"skill-installation.types.d.ts","sourceRoot":"","sources":["../../../src/services/skill-installation.types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"skill-installation.types.d.ts","sourceRoot":"","sources":["../../../src/services/skill-installation.types.ts"],"names":[],"mappings":"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"}
@@ -34,5 +34,14 @@ export const TRUST_TIER_SCANNER_OPTIONS = {
34
34
  riskThreshold: 20,
35
35
  maxContentLength: 250_000,
36
36
  },
37
+ // SMI-5205: new public tiers
38
+ official: {
39
+ riskThreshold: 80,
40
+ maxContentLength: 2_000_000,
41
+ },
42
+ unverified: {
43
+ riskThreshold: 20, // Same as unknown — unverified is the public alias for unknown
44
+ maxContentLength: 250_000,
45
+ },
37
46
  };
38
47
  //# sourceMappingURL=skill-installation.types.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"skill-installation.types.js","sourceRoot":"","sources":["../../../src/services/skill-installation.types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AA6NH,+EAA+E;AAC/E,iBAAiB;AACjB,+EAA+E;AAE/E,iDAAiD;AACjD,MAAM,CAAC,MAAM,0BAA0B,GAAsC;IAC3E,QAAQ,EAAE;QACR,aAAa,EAAE,EAAE;QACjB,gBAAgB,EAAE,SAAS;KAC5B;IACD,OAAO,EAAE;QACP,aAAa,EAAE,EAAE;QACjB,gBAAgB,EAAE,SAAS;KAC5B;IACD,SAAS,EAAE;QACT,aAAa,EAAE,EAAE;QACjB,gBAAgB,EAAE,SAAS;KAC5B;IACD,KAAK,EAAE;QACL,aAAa,EAAE,GAAG;QAClB,gBAAgB,EAAE,UAAU;KAC7B;IACD,YAAY,EAAE;QACZ,aAAa,EAAE,EAAE;QACjB,gBAAgB,EAAE,OAAO;KAC1B;IACD,OAAO,EAAE;QACP,aAAa,EAAE,EAAE;QACjB,gBAAgB,EAAE,OAAO;KAC1B;CACF,CAAA"}
1
+ {"version":3,"file":"skill-installation.types.js","sourceRoot":"","sources":["../../../src/services/skill-installation.types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AA6NH,+EAA+E;AAC/E,iBAAiB;AACjB,+EAA+E;AAE/E,iDAAiD;AACjD,MAAM,CAAC,MAAM,0BAA0B,GAAsC;IAC3E,QAAQ,EAAE;QACR,aAAa,EAAE,EAAE;QACjB,gBAAgB,EAAE,SAAS;KAC5B;IACD,OAAO,EAAE;QACP,aAAa,EAAE,EAAE;QACjB,gBAAgB,EAAE,SAAS;KAC5B;IACD,SAAS,EAAE;QACT,aAAa,EAAE,EAAE;QACjB,gBAAgB,EAAE,SAAS;KAC5B;IACD,KAAK,EAAE;QACL,aAAa,EAAE,GAAG;QAClB,gBAAgB,EAAE,UAAU;KAC7B;IACD,YAAY,EAAE;QACZ,aAAa,EAAE,EAAE;QACjB,gBAAgB,EAAE,OAAO;KAC1B;IACD,OAAO,EAAE;QACP,aAAa,EAAE,EAAE;QACjB,gBAAgB,EAAE,OAAO;KAC1B;IACD,6BAA6B;IAC7B,QAAQ,EAAE;QACR,aAAa,EAAE,EAAE;QACjB,gBAAgB,EAAE,SAAS;KAC5B;IACD,UAAU,EAAE;QACV,aAAa,EAAE,EAAE,EAAE,+DAA+D;QAClF,gBAAgB,EAAE,OAAO;KAC1B;CACF,CAAA"}
@@ -0,0 +1,44 @@
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 type { TrustTier } from '../types/skill.js';
7
+ import type { DepIntelResult, RegistryLookup, InstallResult, QuarantineStatus } from './skill-installation.types.js';
8
+ export interface ParsedSkillId {
9
+ owner: string;
10
+ repo: string;
11
+ path: string;
12
+ isRegistryId: boolean;
13
+ }
14
+ export declare function parseSkillIdInternal(input: string): ParsedSkillId;
15
+ export interface SkillMdValidation {
16
+ valid: boolean;
17
+ errors: string[];
18
+ }
19
+ export declare function validateSkillMd(content: string): SkillMdValidation;
20
+ /** SMI-3870: Validate config.json content; returns validity and warnings. */
21
+ export declare function validateOptionalConfig(content: string): {
22
+ valid: boolean;
23
+ warnings: string[];
24
+ };
25
+ /** SMI-3871: Cross-reference dependency targets against quarantine status. */
26
+ export declare function checkDepsAgainstQuarantine(depIntel: DepIntelResult, getStatus: (skillId: string) => QuarantineStatus | null): {
27
+ warnings: string[];
28
+ quarantinedDeps: string[];
29
+ };
30
+ export type RegistryLookupResult = {
31
+ resolved: true;
32
+ owner: string;
33
+ repo: string;
34
+ basePath: string;
35
+ branch: string;
36
+ skillName: string;
37
+ trustTier: TrustTier;
38
+ indexedContentHash: string | undefined;
39
+ } | {
40
+ resolved: false;
41
+ failure: InstallResult;
42
+ };
43
+ export declare function resolveRegistryInstall(skillId: string, lookup: RegistryLookup): Promise<RegistryLookupResult>;
44
+ //# sourceMappingURL=skill-installation.validate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skill-installation.validate.d.ts","sourceRoot":"","sources":["../../../src/services/skill-installation.validate.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAGlD,OAAO,KAAK,EACV,cAAc,EACd,cAAc,EACd,aAAa,EACb,gBAAgB,EACjB,MAAM,+BAA+B,CAAA;AAGtC,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,YAAY,EAAE,OAAO,CAAA;CACtB;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,aAAa,CA+BjE;AAED,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,OAAO,CAAA;IACd,MAAM,EAAE,MAAM,EAAE,CAAA;CACjB;AACD,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,iBAAiB,CASlE;AAED,6EAA6E;AAC7E,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,GAAG;IACvD,KAAK,EAAE,OAAO,CAAA;IACd,QAAQ,EAAE,MAAM,EAAE,CAAA;CACnB,CAMA;AACD,8EAA8E;AAC9E,wBAAgB,0BAA0B,CACxC,QAAQ,EAAE,cAAc,EACxB,SAAS,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,gBAAgB,GAAG,IAAI,GACtD;IAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;IAAC,eAAe,EAAE,MAAM,EAAE,CAAA;CAAE,CAqBnD;AAED,MAAM,MAAM,oBAAoB,GAC5B;IACE,QAAQ,EAAE,IAAI,CAAA;IACd,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,MAAM,CAAA;IACd,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,SAAS,CAAA;IACpB,kBAAkB,EAAE,MAAM,GAAG,SAAS,CAAA;CACvC,GACD;IAAE,QAAQ,EAAE,KAAK,CAAC;IAAC,OAAO,EAAE,aAAa,CAAA;CAAE,CAAA;AAE/C,wBAAsB,sBAAsB,CAC1C,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,cAAc,GACrB,OAAO,CAAC,oBAAoB,CAAC,CAsD/B"}