@skillsmith/mcp-server 0.4.2 → 0.4.4

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 (219) hide show
  1. package/README.md +11 -0
  2. package/dist/.tsbuildinfo +1 -1
  3. package/dist/src/__tests__/LocalIndexer.test.js +158 -0
  4. package/dist/src/__tests__/LocalIndexer.test.js.map +1 -1
  5. package/dist/src/__tests__/compare.test.d.ts +8 -0
  6. package/dist/src/__tests__/compare.test.d.ts.map +1 -0
  7. package/dist/src/__tests__/compare.test.js +162 -0
  8. package/dist/src/__tests__/compare.test.js.map +1 -0
  9. package/dist/src/__tests__/context.async.test.d.ts +8 -0
  10. package/dist/src/__tests__/context.async.test.d.ts.map +1 -0
  11. package/dist/src/__tests__/context.async.test.js +223 -0
  12. package/dist/src/__tests__/context.async.test.js.map +1 -0
  13. package/dist/src/__tests__/middleware/errorFormatter.builders.test.d.ts +10 -0
  14. package/dist/src/__tests__/middleware/errorFormatter.builders.test.d.ts.map +1 -0
  15. package/dist/src/__tests__/middleware/errorFormatter.builders.test.js +93 -0
  16. package/dist/src/__tests__/middleware/errorFormatter.builders.test.js.map +1 -0
  17. package/dist/src/__tests__/middleware/license-renewal.test.d.ts +10 -0
  18. package/dist/src/__tests__/middleware/license-renewal.test.d.ts.map +1 -0
  19. package/dist/src/__tests__/middleware/license-renewal.test.js +152 -0
  20. package/dist/src/__tests__/middleware/license-renewal.test.js.map +1 -0
  21. package/dist/src/__tests__/middleware/quota-helpers.test.d.ts +9 -0
  22. package/dist/src/__tests__/middleware/quota-helpers.test.d.ts.map +1 -0
  23. package/dist/src/__tests__/middleware/quota-helpers.test.js +105 -0
  24. package/dist/src/__tests__/middleware/quota-helpers.test.js.map +1 -0
  25. package/dist/src/__tests__/middleware/quota.test.d.ts +12 -0
  26. package/dist/src/__tests__/middleware/quota.test.d.ts.map +1 -0
  27. package/dist/src/__tests__/middleware/quota.test.js +189 -0
  28. package/dist/src/__tests__/middleware/quota.test.js.map +1 -0
  29. package/dist/src/__tests__/recommend-online-path.test.d.ts +10 -0
  30. package/dist/src/__tests__/recommend-online-path.test.d.ts.map +1 -0
  31. package/dist/src/__tests__/recommend-online-path.test.js +225 -0
  32. package/dist/src/__tests__/recommend-online-path.test.js.map +1 -0
  33. package/dist/src/__tests__/recommend.test.d.ts +2 -0
  34. package/dist/src/__tests__/recommend.test.d.ts.map +1 -1
  35. package/dist/src/__tests__/recommend.test.js +14 -2
  36. package/dist/src/__tests__/recommend.test.js.map +1 -1
  37. package/dist/src/__tests__/search-online-path.test.d.ts +10 -0
  38. package/dist/src/__tests__/search-online-path.test.d.ts.map +1 -0
  39. package/dist/src/__tests__/search-online-path.test.js +140 -0
  40. package/dist/src/__tests__/search-online-path.test.js.map +1 -0
  41. package/dist/src/__tests__/search.test.js +153 -5
  42. package/dist/src/__tests__/search.test.js.map +1 -1
  43. package/dist/src/context/project-detector.d.ts.map +1 -1
  44. package/dist/src/context/project-detector.js +1 -0
  45. package/dist/src/context/project-detector.js.map +1 -1
  46. package/dist/src/context.async.d.ts +48 -0
  47. package/dist/src/context.async.d.ts.map +1 -0
  48. package/dist/src/context.async.js +217 -0
  49. package/dist/src/context.async.js.map +1 -0
  50. package/dist/src/context.d.ts +5 -145
  51. package/dist/src/context.d.ts.map +1 -1
  52. package/dist/src/context.helpers.d.ts +25 -0
  53. package/dist/src/context.helpers.d.ts.map +1 -0
  54. package/dist/src/context.helpers.js +49 -0
  55. package/dist/src/context.helpers.js.map +1 -0
  56. package/dist/src/context.js +13 -228
  57. package/dist/src/context.js.map +1 -1
  58. package/dist/src/context.types.d.ts +112 -0
  59. package/dist/src/context.types.d.ts.map +1 -0
  60. package/dist/src/context.types.js +10 -0
  61. package/dist/src/context.types.js.map +1 -0
  62. package/dist/src/health/readinessCheck.d.ts +1 -1
  63. package/dist/src/health/readinessCheck.d.ts.map +1 -1
  64. package/dist/src/index.js +25 -152
  65. package/dist/src/index.js.map +1 -1
  66. package/dist/src/indexer/FrontmatterParser.d.ts +6 -0
  67. package/dist/src/indexer/FrontmatterParser.d.ts.map +1 -1
  68. package/dist/src/indexer/FrontmatterParser.js +15 -0
  69. package/dist/src/indexer/FrontmatterParser.js.map +1 -1
  70. package/dist/src/indexer/LocalIndexer.d.ts +4 -0
  71. package/dist/src/indexer/LocalIndexer.d.ts.map +1 -1
  72. package/dist/src/indexer/LocalIndexer.js +3 -0
  73. package/dist/src/indexer/LocalIndexer.js.map +1 -1
  74. package/dist/src/middleware/degradation.d.ts.map +1 -1
  75. package/dist/src/middleware/degradation.js +8 -0
  76. package/dist/src/middleware/degradation.js.map +1 -1
  77. package/dist/src/middleware/errorFormatter.builders.d.ts +49 -0
  78. package/dist/src/middleware/errorFormatter.builders.d.ts.map +1 -0
  79. package/dist/src/middleware/errorFormatter.builders.js +237 -0
  80. package/dist/src/middleware/errorFormatter.builders.js.map +1 -0
  81. package/dist/src/middleware/errorFormatter.d.ts +5 -100
  82. package/dist/src/middleware/errorFormatter.d.ts.map +1 -1
  83. package/dist/src/middleware/errorFormatter.js +16 -238
  84. package/dist/src/middleware/errorFormatter.js.map +1 -1
  85. package/dist/src/middleware/errorFormatter.types.d.ts +81 -0
  86. package/dist/src/middleware/errorFormatter.types.d.ts.map +1 -0
  87. package/dist/src/middleware/errorFormatter.types.js +34 -0
  88. package/dist/src/middleware/errorFormatter.types.js.map +1 -0
  89. package/dist/src/middleware/toolFeatureMapping.d.ts +1 -1
  90. package/dist/src/middleware/toolFeatureMapping.d.ts.map +1 -1
  91. package/dist/src/middleware/toolFeatureMapping.js +10 -0
  92. package/dist/src/middleware/toolFeatureMapping.js.map +1 -1
  93. package/dist/src/tool-dispatch.d.ts +27 -0
  94. package/dist/src/tool-dispatch.d.ts.map +1 -0
  95. package/dist/src/tool-dispatch.js +142 -0
  96. package/dist/src/tool-dispatch.js.map +1 -0
  97. package/dist/src/tools/LocalSkillSearch.d.ts.map +1 -1
  98. package/dist/src/tools/LocalSkillSearch.js +4 -0
  99. package/dist/src/tools/LocalSkillSearch.js.map +1 -1
  100. package/dist/src/tools/compare.types.d.ts +5 -1
  101. package/dist/src/tools/compare.types.d.ts.map +1 -1
  102. package/dist/src/tools/compare.types.js.map +1 -1
  103. package/dist/src/tools/get-skill.d.ts.map +1 -1
  104. package/dist/src/tools/get-skill.js +30 -0
  105. package/dist/src/tools/get-skill.js.map +1 -1
  106. package/dist/src/tools/index.d.ts +8 -0
  107. package/dist/src/tools/index.d.ts.map +1 -1
  108. package/dist/src/tools/index.js +8 -0
  109. package/dist/src/tools/index.js.map +1 -1
  110. package/dist/src/tools/install.d.ts +7 -58
  111. package/dist/src/tools/install.d.ts.map +1 -1
  112. package/dist/src/tools/install.dep-helpers.d.ts +41 -0
  113. package/dist/src/tools/install.dep-helpers.d.ts.map +1 -0
  114. package/dist/src/tools/install.dep-helpers.js +68 -0
  115. package/dist/src/tools/install.dep-helpers.js.map +1 -0
  116. package/dist/src/tools/install.dep-helpers.test.d.ts +6 -0
  117. package/dist/src/tools/install.dep-helpers.test.d.ts.map +1 -0
  118. package/dist/src/tools/install.dep-helpers.test.js +109 -0
  119. package/dist/src/tools/install.dep-helpers.test.js.map +1 -0
  120. package/dist/src/tools/install.js +49 -109
  121. package/dist/src/tools/install.js.map +1 -1
  122. package/dist/src/tools/install.optimize.d.ts +46 -0
  123. package/dist/src/tools/install.optimize.d.ts.map +1 -0
  124. package/dist/src/tools/install.optimize.js +67 -0
  125. package/dist/src/tools/install.optimize.js.map +1 -0
  126. package/dist/src/tools/install.tool.d.ts +44 -0
  127. package/dist/src/tools/install.tool.d.ts.map +1 -0
  128. package/dist/src/tools/install.tool.js +44 -0
  129. package/dist/src/tools/install.tool.js.map +1 -0
  130. package/dist/src/tools/install.types.d.ts +14 -1
  131. package/dist/src/tools/install.types.d.ts.map +1 -1
  132. package/dist/src/tools/install.types.js.map +1 -1
  133. package/dist/src/tools/outdated.d.ts +101 -0
  134. package/dist/src/tools/outdated.d.ts.map +1 -0
  135. package/dist/src/tools/outdated.js +214 -0
  136. package/dist/src/tools/outdated.js.map +1 -0
  137. package/dist/src/tools/outdated.test.d.ts +6 -0
  138. package/dist/src/tools/outdated.test.d.ts.map +1 -0
  139. package/dist/src/tools/outdated.test.js +287 -0
  140. package/dist/src/tools/outdated.test.js.map +1 -0
  141. package/dist/src/tools/recommend.d.ts +2 -4
  142. package/dist/src/tools/recommend.d.ts.map +1 -1
  143. package/dist/src/tools/recommend.format.d.ts +28 -0
  144. package/dist/src/tools/recommend.format.d.ts.map +1 -0
  145. package/dist/src/tools/recommend.format.js +111 -0
  146. package/dist/src/tools/recommend.format.js.map +1 -0
  147. package/dist/src/tools/recommend.js +6 -97
  148. package/dist/src/tools/recommend.js.map +1 -1
  149. package/dist/src/tools/recommend.types.d.ts +2 -2
  150. package/dist/src/tools/search.d.ts +24 -21
  151. package/dist/src/tools/search.d.ts.map +1 -1
  152. package/dist/src/tools/search.formatter.d.ts +30 -0
  153. package/dist/src/tools/search.formatter.d.ts.map +1 -0
  154. package/dist/src/tools/search.formatter.js +64 -0
  155. package/dist/src/tools/search.formatter.js.map +1 -0
  156. package/dist/src/tools/search.js +55 -54
  157. package/dist/src/tools/search.js.map +1 -1
  158. package/dist/src/tools/skill-audit.d.ts +98 -0
  159. package/dist/src/tools/skill-audit.d.ts.map +1 -0
  160. package/dist/src/tools/skill-audit.js +105 -0
  161. package/dist/src/tools/skill-audit.js.map +1 -0
  162. package/dist/src/tools/skill-audit.test.d.ts +6 -0
  163. package/dist/src/tools/skill-audit.test.d.ts.map +1 -0
  164. package/dist/src/tools/skill-audit.test.js +121 -0
  165. package/dist/src/tools/skill-audit.test.js.map +1 -0
  166. package/dist/src/tools/skill-diff.d.ts +107 -0
  167. package/dist/src/tools/skill-diff.d.ts.map +1 -0
  168. package/dist/src/tools/skill-diff.js +268 -0
  169. package/dist/src/tools/skill-diff.js.map +1 -0
  170. package/dist/src/tools/skill-diff.test.d.ts +6 -0
  171. package/dist/src/tools/skill-diff.test.d.ts.map +1 -0
  172. package/dist/src/tools/skill-diff.test.js +260 -0
  173. package/dist/src/tools/skill-diff.test.js.map +1 -0
  174. package/dist/src/tools/skill-pack-audit.d.ts +96 -0
  175. package/dist/src/tools/skill-pack-audit.d.ts.map +1 -0
  176. package/dist/src/tools/skill-pack-audit.js +183 -0
  177. package/dist/src/tools/skill-pack-audit.js.map +1 -0
  178. package/dist/src/tools/skill-updates.d.ts +1 -1
  179. package/dist/src/tools/skill-updates.d.ts.map +1 -1
  180. package/dist/src/tools/uninstall.d.ts.map +1 -1
  181. package/dist/src/tools/uninstall.js +9 -0
  182. package/dist/src/tools/uninstall.js.map +1 -1
  183. package/dist/src/tools/validate.d.ts.map +1 -1
  184. package/dist/src/tools/validate.dep.test.d.ts +6 -0
  185. package/dist/src/tools/validate.dep.test.d.ts.map +1 -0
  186. package/dist/src/tools/validate.dep.test.js +77 -0
  187. package/dist/src/tools/validate.dep.test.js.map +1 -0
  188. package/dist/src/tools/validate.helpers.d.ts +12 -0
  189. package/dist/src/tools/validate.helpers.d.ts.map +1 -1
  190. package/dist/src/tools/validate.helpers.js +90 -19
  191. package/dist/src/tools/validate.helpers.js.map +1 -1
  192. package/dist/src/tools/validate.js +3 -1
  193. package/dist/src/tools/validate.js.map +1 -1
  194. package/dist/src/utils/validation.d.ts +13 -0
  195. package/dist/src/utils/validation.d.ts.map +1 -1
  196. package/dist/src/utils/validation.js +27 -0
  197. package/dist/src/utils/validation.js.map +1 -1
  198. package/dist/tests/health.test.js +4 -4
  199. package/dist/tests/health.test.js.map +1 -1
  200. package/dist/tests/integration/recommend.integration.test.js +3 -0
  201. package/dist/tests/integration/recommend.integration.test.js.map +1 -1
  202. package/dist/tests/integration/setup.d.ts +4 -1
  203. package/dist/tests/integration/setup.d.ts.map +1 -1
  204. package/dist/tests/integration/setup.js +6 -1
  205. package/dist/tests/integration/setup.js.map +1 -1
  206. package/dist/tests/integration/validate.integration.test.js +4 -2
  207. package/dist/tests/integration/validate.integration.test.js.map +1 -1
  208. package/dist/tests/recommend.test.js +3 -0
  209. package/dist/tests/recommend.test.js.map +1 -1
  210. package/dist/tests/unit/skill-pack-audit.test.d.ts +8 -0
  211. package/dist/tests/unit/skill-pack-audit.test.d.ts.map +1 -0
  212. package/dist/tests/unit/skill-pack-audit.test.js +342 -0
  213. package/dist/tests/unit/skill-pack-audit.test.js.map +1 -0
  214. package/dist/tests/unit/validate-helpers.test.js +99 -2
  215. package/dist/tests/unit/validate-helpers.test.js.map +1 -1
  216. package/dist/tests/validate.test.js +4 -0
  217. package/dist/tests/validate.test.js.map +1 -1
  218. package/package.json +2 -2
  219. package/server.json +2 -2
@@ -21,4 +21,12 @@ export { analyzeToolSchema, analyzeInputSchema, executeAnalyze, formatAnalysisRe
21
21
  export { indexLocalToolSchema, indexLocalInputSchema, executeIndexLocal, formatIndexLocalResults, } from './index-local.js';
22
22
  // Publish tool (SMI-2440)
23
23
  export { publishToolSchema, publishInputSchema, executePublish, formatPublishResults, } from './publish.js';
24
+ // Skill Updates tool (SMI-skill-version-tracking Wave 1)
25
+ export { skillUpdatesToolSchema, skillUpdatesInputSchema, executeSkillUpdates, } from './skill-updates.js';
26
+ // Skill Diff tool (SMI-skill-version-tracking Wave 2)
27
+ export { skillDiffToolSchema, skillDiffInputSchema, executeSkillDiff, formatSkillDiffResults, } from './skill-diff.js';
28
+ // Skill Audit tool (SMI-skill-version-tracking Wave 3)
29
+ export { skillAuditToolSchema, skillAuditInputSchema, executeSkillAudit } from './skill-audit.js';
30
+ // Skill Outdated tool (SMI-3138 Wave 5)
31
+ export { outdatedToolSchema, outdatedInputSchema, executeOutdated } from './outdated.js';
24
32
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tools/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,wBAAwB;AACxB,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAA;AAGlF,yBAAyB;AACzB,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAA;AAG5E,2BAA2B;AAC3B,OAAO,EACL,aAAa,EACb,cAAc,EACd,oBAAoB,EACpB,mBAAmB,GACpB,MAAM,gBAAgB,CAAA;AAGvB,2BAA2B;AAC3B,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAGpE,2BAA2B;AAC3B,OAAO,EACL,mBAAmB,EACnB,oBAAoB,EACpB,gBAAgB,EAChB,qBAAqB,GACtB,MAAM,gBAAgB,CAAA;AAGvB,0BAA0B;AAC1B,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACnB,eAAe,EACf,uBAAuB,GACxB,MAAM,eAAe,CAAA;AAGtB,yBAAyB;AACzB,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,cAAc,EACd,uBAAuB,GACxB,MAAM,cAAc,CAAA;AAGrB,kCAAkC;AAClC,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,cAAc,EACd,qBAAqB,GACtB,MAAM,cAAc,CAAA;AAQrB,qCAAqC;AACrC,OAAO,EACL,oBAAoB,EACpB,qBAAqB,EACrB,iBAAiB,EACjB,uBAAuB,GACxB,MAAM,kBAAkB,CAAA;AAGzB,0BAA0B;AAC1B,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,cAAc,EACd,oBAAoB,GACrB,MAAM,cAAc,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tools/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,wBAAwB;AACxB,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAA;AAGlF,yBAAyB;AACzB,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAA;AAG5E,2BAA2B;AAC3B,OAAO,EACL,aAAa,EACb,cAAc,EACd,oBAAoB,EACpB,mBAAmB,GACpB,MAAM,gBAAgB,CAAA;AAGvB,2BAA2B;AAC3B,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAGpE,2BAA2B;AAC3B,OAAO,EACL,mBAAmB,EACnB,oBAAoB,EACpB,gBAAgB,EAChB,qBAAqB,GACtB,MAAM,gBAAgB,CAAA;AAGvB,0BAA0B;AAC1B,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACnB,eAAe,EACf,uBAAuB,GACxB,MAAM,eAAe,CAAA;AAGtB,yBAAyB;AACzB,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,cAAc,EACd,uBAAuB,GACxB,MAAM,cAAc,CAAA;AAGrB,kCAAkC;AAClC,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,cAAc,EACd,qBAAqB,GACtB,MAAM,cAAc,CAAA;AAQrB,qCAAqC;AACrC,OAAO,EACL,oBAAoB,EACpB,qBAAqB,EACrB,iBAAiB,EACjB,uBAAuB,GACxB,MAAM,kBAAkB,CAAA;AAGzB,0BAA0B;AAC1B,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,cAAc,EACd,oBAAoB,GACrB,MAAM,cAAc,CAAA;AAGrB,yDAAyD;AACzD,OAAO,EACL,sBAAsB,EACtB,uBAAuB,EACvB,mBAAmB,GACpB,MAAM,oBAAoB,CAAA;AAG3B,sDAAsD;AACtD,OAAO,EACL,mBAAmB,EACnB,oBAAoB,EACpB,gBAAgB,EAChB,sBAAsB,GACvB,MAAM,iBAAiB,CAAA;AAGxB,uDAAuD;AACvD,OAAO,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AAQjG,wCAAwC;AACxC,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA"}
@@ -1,73 +1,22 @@
1
1
  /**
2
2
  * @fileoverview MCP Install Skill Tool for downloading and installing skills
3
3
  * @module @skillsmith/mcp-server/tools/install
4
- * @see {@link https://github.com/wrsmith108/skillsmith|Skillsmith Repository}
5
- *
6
- * Provides skill installation functionality with:
7
- * - GitHub repository fetching (supports owner/repo and full URLs)
8
- * - Automatic security scanning before installation
9
- * - SKILL.md validation
10
- * - Manifest tracking of installed skills
11
- * - Optional file fetching (README.md, examples.md, config.json)
4
+ * @see SMI-2741: Split to meet 500-line standard
5
+ * @see SMI-3137: Wave 4 — Dependency intelligence persistence
12
6
  *
13
7
  * Skills are installed to ~/.claude/skills/ and tracked in ~/.skillsmith/manifest.json
14
8
  */
15
9
  import type { ToolContext } from '../context.js';
16
10
  import { type InstallInput, type InstallResult } from './install.types.js';
11
+ export { installTool } from './install.tool.js';
12
+ export { default } from './install.tool.js';
17
13
  export { installInputSchema, type InstallInput, type InstallResult } from './install.types.js';
18
14
  /**
19
15
  * Install a skill from GitHub to the local Claude Code skills directory.
20
16
  *
21
- * This function:
22
- * 1. Parses the skill ID or GitHub URL
23
- * 2. Checks if already installed (returns error unless force=true)
24
- * 3. Fetches SKILL.md from GitHub (required)
25
- * 4. Validates SKILL.md content
26
- * 5. Runs security scan (unless skipScan=true)
27
- * 6. Creates installation directory at ~/.claude/skills/{skillName}
28
- * 7. Writes skill files
29
- * 8. Updates manifest at ~/.skillsmith/manifest.json
30
- *
31
- * @param input - Installation parameters
32
- * @param input.skillId - Skill ID (owner/repo) or full GitHub URL
33
- * @param input.force - Force reinstall if skill already exists (default: false)
34
- * @param input.skipScan - Skip security scan (default: false, not recommended)
35
- * @returns Promise resolving to installation result with success status
17
+ * @param input - Installation parameters (skillId, force, skipScan)
18
+ * @param _context - Optional tool context (falls back to singleton)
19
+ * @returns Installation result with success status, security report, and dep intel
36
20
  */
37
21
  export declare function installSkill(input: InstallInput, _context?: ToolContext): Promise<InstallResult>;
38
- /**
39
- * MCP tool definition
40
- */
41
- export declare const installTool: {
42
- name: string;
43
- description: string;
44
- inputSchema: {
45
- type: "object";
46
- properties: {
47
- skillId: {
48
- type: string;
49
- description: string;
50
- };
51
- force: {
52
- type: string;
53
- description: string;
54
- };
55
- skipScan: {
56
- type: string;
57
- description: string;
58
- };
59
- skipOptimize: {
60
- type: string;
61
- description: string;
62
- };
63
- conflictAction: {
64
- type: string;
65
- enum: string[];
66
- description: string;
67
- };
68
- };
69
- required: string[];
70
- };
71
- };
72
- export default installTool;
73
22
  //# sourceMappingURL=install.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../../src/tools/install.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAOH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAIhD,OAAO,EAGL,KAAK,YAAY,EACjB,KAAK,aAAa,EAEnB,MAAM,oBAAoB,CAAA;AAoB3B,OAAO,EAAE,kBAAkB,EAAE,KAAK,YAAY,EAAE,KAAK,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAE9F;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAsB,YAAY,CAChC,KAAK,EAAE,YAAY,EACnB,QAAQ,CAAC,EAAE,WAAW,GACrB,OAAO,CAAC,aAAa,CAAC,CA8bxB;AAED;;GAEG;AACH,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgCvB,CAAA;AAED,eAAe,WAAW,CAAA"}
1
+ {"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../../src/tools/install.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAMH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAEhD,OAAO,EAGL,KAAK,YAAY,EACjB,KAAK,aAAa,EACnB,MAAM,oBAAoB,CAAA;AAuB3B,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAC/C,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAA;AAG3C,OAAO,EAAE,kBAAkB,EAAE,KAAK,YAAY,EAAE,KAAK,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAE9F;;;;;;GAMG;AACH,wBAAsB,YAAY,CAChC,KAAK,EAAE,YAAY,EACnB,QAAQ,CAAC,EAAE,WAAW,GACrB,OAAO,CAAC,aAAa,CAAC,CA+axB"}
@@ -0,0 +1,41 @@
1
+ /**
2
+ * @fileoverview Dependency intelligence helpers for install tool
3
+ * @module @skillsmith/mcp-server/tools/install.dep-helpers
4
+ * @see SMI-3137: Wave 4 — Surface dependency intelligence in MCP responses
5
+ *
6
+ * Extracts and persists dependency data after successful skill installation.
7
+ * Kept in a companion file to avoid pushing install.ts over the 500-line limit.
8
+ */
9
+ import { type SkillDependencyRepository, type DependencyDeclaration } from '@skillsmith/core';
10
+ /**
11
+ * Dependency intelligence result included in the install response.
12
+ */
13
+ export interface DepIntelResult {
14
+ /** Inferred MCP server names from skill content */
15
+ dep_inferred_servers: string[];
16
+ /** Declared dependency block from frontmatter (if present) */
17
+ dep_declared: DependencyDeclaration | undefined;
18
+ /** Warnings about MCP servers referenced but not configured */
19
+ dep_warnings: string[];
20
+ }
21
+ /**
22
+ * Extract dependency intelligence from skill content after successful install.
23
+ *
24
+ * @param skillMdContent - Raw SKILL.md content
25
+ * @param metadata - Parsed frontmatter metadata (null if parsing failed)
26
+ * @returns Dependency intelligence data to include in install response
27
+ */
28
+ export declare function extractDepIntel(skillMdContent: string, metadata: Record<string, unknown> | null): DepIntelResult;
29
+ /**
30
+ * Persist merged dependencies (declared + inferred) to the database.
31
+ *
32
+ * Best-effort: silently returns if the skill_dependencies table does not
33
+ * exist (pre-migration databases).
34
+ *
35
+ * @param repo - SkillDependencyRepository instance
36
+ * @param skillId - Skill ID to associate dependencies with
37
+ * @param content - Raw SKILL.md content for MCP reference extraction
38
+ * @param declared - Parsed dependency declaration from frontmatter
39
+ */
40
+ export declare function persistDependencies(repo: SkillDependencyRepository, skillId: string, content: string, declared: DependencyDeclaration | undefined): void;
41
+ //# sourceMappingURL=install.dep-helpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"install.dep-helpers.d.ts","sourceRoot":"","sources":["../../../src/tools/install.dep-helpers.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAGL,KAAK,yBAAyB,EAC9B,KAAK,qBAAqB,EAE3B,MAAM,kBAAkB,CAAA;AAEzB;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,mDAAmD;IACnD,oBAAoB,EAAE,MAAM,EAAE,CAAA;IAC9B,8DAA8D;IAC9D,YAAY,EAAE,qBAAqB,GAAG,SAAS,CAAA;IAC/C,+DAA+D;IAC/D,YAAY,EAAE,MAAM,EAAE,CAAA;CACvB;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAC7B,cAAc,EAAE,MAAM,EACtB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,GACvC,cAAc,CAgBhB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,yBAAyB,EAC/B,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,qBAAqB,GAAG,SAAS,GAC1C,IAAI,CA4BN"}
@@ -0,0 +1,68 @@
1
+ /**
2
+ * @fileoverview Dependency intelligence helpers for install tool
3
+ * @module @skillsmith/mcp-server/tools/install.dep-helpers
4
+ * @see SMI-3137: Wave 4 — Surface dependency intelligence in MCP responses
5
+ *
6
+ * Extracts and persists dependency data after successful skill installation.
7
+ * Kept in a companion file to avoid pushing install.ts over the 500-line limit.
8
+ */
9
+ import { extractMcpReferences, mergeDependencies, } from '@skillsmith/core';
10
+ /**
11
+ * Extract dependency intelligence from skill content after successful install.
12
+ *
13
+ * @param skillMdContent - Raw SKILL.md content
14
+ * @param metadata - Parsed frontmatter metadata (null if parsing failed)
15
+ * @returns Dependency intelligence data to include in install response
16
+ */
17
+ export function extractDepIntel(skillMdContent, metadata) {
18
+ const mcpResult = extractMcpReferences(skillMdContent);
19
+ // Parse declared deps from metadata if present
20
+ const declared = metadata?.dependencies ?? undefined;
21
+ const warnings = [];
22
+ for (const server of mcpResult.highConfidenceServers) {
23
+ warnings.push(`MCP server '${server}' is referenced but may not be configured`);
24
+ }
25
+ return {
26
+ dep_inferred_servers: mcpResult.servers,
27
+ dep_declared: declared,
28
+ dep_warnings: warnings,
29
+ };
30
+ }
31
+ /**
32
+ * Persist merged dependencies (declared + inferred) to the database.
33
+ *
34
+ * Best-effort: silently returns if the skill_dependencies table does not
35
+ * exist (pre-migration databases).
36
+ *
37
+ * @param repo - SkillDependencyRepository instance
38
+ * @param skillId - Skill ID to associate dependencies with
39
+ * @param content - Raw SKILL.md content for MCP reference extraction
40
+ * @param declared - Parsed dependency declaration from frontmatter
41
+ */
42
+ export function persistDependencies(repo, skillId, content, declared) {
43
+ const mcpResult = extractMcpReferences(content);
44
+ const merged = mergeDependencies(declared, mcpResult);
45
+ if (merged.length === 0)
46
+ return;
47
+ // Convert MergedDependency[] to SkillDependencyRow[] for the repository
48
+ const rows = merged.map((dep) => ({
49
+ skill_id: skillId,
50
+ dep_type: dep.depType,
51
+ dep_target: dep.depTarget,
52
+ dep_version: dep.depVersion,
53
+ dep_source: dep.depSource,
54
+ confidence: dep.confidence,
55
+ metadata: dep.metadata,
56
+ }));
57
+ // Group by source for setDependencies calls (each call stamps a single source)
58
+ const bySource = new Map();
59
+ for (const row of rows) {
60
+ const existing = bySource.get(row.dep_source) ?? [];
61
+ existing.push(row);
62
+ bySource.set(row.dep_source, existing);
63
+ }
64
+ for (const [source, sourceRows] of bySource) {
65
+ repo.setDependencies(skillId, sourceRows, source);
66
+ }
67
+ }
68
+ //# sourceMappingURL=install.dep-helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"install.dep-helpers.js","sourceRoot":"","sources":["../../../src/tools/install.dep-helpers.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EACL,oBAAoB,EACpB,iBAAiB,GAIlB,MAAM,kBAAkB,CAAA;AAczB;;;;;;GAMG;AACH,MAAM,UAAU,eAAe,CAC7B,cAAsB,EACtB,QAAwC;IAExC,MAAM,SAAS,GAAG,oBAAoB,CAAC,cAAc,CAAC,CAAA;IAEtD,+CAA+C;IAC/C,MAAM,QAAQ,GAAI,QAAQ,EAAE,YAAsC,IAAI,SAAS,CAAA;IAE/E,MAAM,QAAQ,GAAa,EAAE,CAAA;IAC7B,KAAK,MAAM,MAAM,IAAI,SAAS,CAAC,qBAAqB,EAAE,CAAC;QACrD,QAAQ,CAAC,IAAI,CAAC,eAAe,MAAM,2CAA2C,CAAC,CAAA;IACjF,CAAC;IAED,OAAO;QACL,oBAAoB,EAAE,SAAS,CAAC,OAAO;QACvC,YAAY,EAAE,QAAQ;QACtB,YAAY,EAAE,QAAQ;KACvB,CAAA;AACH,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,mBAAmB,CACjC,IAA+B,EAC/B,OAAe,EACf,OAAe,EACf,QAA2C;IAE3C,MAAM,SAAS,GAAG,oBAAoB,CAAC,OAAO,CAAC,CAAA;IAC/C,MAAM,MAAM,GAAG,iBAAiB,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAA;IAErD,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAM;IAE/B,wEAAwE;IACxE,MAAM,IAAI,GAAyB,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QACtD,QAAQ,EAAE,OAAO;QACjB,QAAQ,EAAE,GAAG,CAAC,OAAO;QACrB,UAAU,EAAE,GAAG,CAAC,SAAS;QACzB,WAAW,EAAE,GAAG,CAAC,UAAU;QAC3B,UAAU,EAAE,GAAG,CAAC,SAAS;QACzB,UAAU,EAAE,GAAG,CAAC,UAAU;QAC1B,QAAQ,EAAE,GAAG,CAAC,QAAQ;KACvB,CAAC,CAAC,CAAA;IAEH,+EAA+E;IAC/E,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAgC,CAAA;IACxD,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,EAAE,CAAA;QACnD,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QAClB,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAA;IACxC,CAAC;IAED,KAAK,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,IAAI,QAAQ,EAAE,CAAC;QAC5C,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,UAAU,EAAE,MAA0C,CAAC,CAAA;IACvF,CAAC;AACH,CAAC"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * @fileoverview Unit tests for install dependency intelligence helpers
3
+ * @see SMI-3137: Wave 4 — Surface dependency intelligence
4
+ */
5
+ export {};
6
+ //# sourceMappingURL=install.dep-helpers.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"install.dep-helpers.test.d.ts","sourceRoot":"","sources":["../../../src/tools/install.dep-helpers.test.ts"],"names":[],"mappings":"AAAA;;;GAGG"}
@@ -0,0 +1,109 @@
1
+ /**
2
+ * @fileoverview Unit tests for install dependency intelligence helpers
3
+ * @see SMI-3137: Wave 4 — Surface dependency intelligence
4
+ */
5
+ import { describe, it, expect, vi, beforeEach } from 'vitest';
6
+ import { extractDepIntel, persistDependencies } from './install.dep-helpers.js';
7
+ // ============================================================================
8
+ // extractDepIntel tests
9
+ // ============================================================================
10
+ describe('extractDepIntel', () => {
11
+ it('returns empty arrays when no MCP refs exist', () => {
12
+ const result = extractDepIntel('# Simple skill\n\nNo MCP references here.', null);
13
+ expect(result.dep_inferred_servers).toEqual([]);
14
+ expect(result.dep_declared).toBeUndefined();
15
+ expect(result.dep_warnings).toEqual([]);
16
+ });
17
+ it('detects inferred MCP servers from content', () => {
18
+ const content = `
19
+ # My Skill
20
+
21
+ Use mcp__linear__save_issue to create issues.
22
+ Use mcp__slack__send_message for notifications.
23
+ `;
24
+ const result = extractDepIntel(content, null);
25
+ expect(result.dep_inferred_servers).toContain('linear');
26
+ expect(result.dep_inferred_servers).toContain('slack');
27
+ expect(result.dep_warnings).toHaveLength(2);
28
+ expect(result.dep_warnings[0]).toContain('linear');
29
+ expect(result.dep_warnings[1]).toContain('slack');
30
+ });
31
+ it('passes through declared dependencies from metadata', () => {
32
+ const metadata = {
33
+ dependencies: {
34
+ skills: [{ name: 'other/skill', type: 'hard', version: '^1.0.0' }],
35
+ platform: {
36
+ mcp_servers: [{ name: 'linear', package: '@anthropic/linear-mcp', required: true }],
37
+ },
38
+ },
39
+ };
40
+ const result = extractDepIntel('# Skill\n\nContent.', metadata);
41
+ expect(result.dep_declared).toBeDefined();
42
+ expect(result.dep_declared?.skills).toHaveLength(1);
43
+ expect(result.dep_declared?.platform?.mcp_servers).toHaveLength(1);
44
+ });
45
+ it('returns undefined dep_declared when metadata has no dependencies', () => {
46
+ const metadata = { name: 'test-skill' };
47
+ const result = extractDepIntel('# Skill\n\nContent.', metadata);
48
+ expect(result.dep_declared).toBeUndefined();
49
+ });
50
+ it('handles null metadata gracefully', () => {
51
+ const result = extractDepIntel('# Skill with mcp__github__create_issue ref', null);
52
+ expect(result.dep_declared).toBeUndefined();
53
+ expect(result.dep_inferred_servers).toContain('github');
54
+ });
55
+ });
56
+ // ============================================================================
57
+ // persistDependencies tests
58
+ // ============================================================================
59
+ describe('persistDependencies', () => {
60
+ let mockRepo;
61
+ beforeEach(() => {
62
+ mockRepo = {
63
+ setDependencies: vi.fn(),
64
+ getDependencies: vi.fn().mockReturnValue([]),
65
+ getDependenciesBySource: vi.fn().mockReturnValue([]),
66
+ getDependents: vi.fn().mockReturnValue([]),
67
+ clearInferred: vi.fn(),
68
+ clearAll: vi.fn(),
69
+ };
70
+ });
71
+ it('does nothing when no dependencies are found', () => {
72
+ persistDependencies(mockRepo, 'test/skill', '# Simple skill\n\nNo deps.', undefined);
73
+ expect(mockRepo.setDependencies).not.toHaveBeenCalled();
74
+ });
75
+ it('persists inferred MCP dependencies', () => {
76
+ const content = '# Skill\n\nUse mcp__linear__save_issue for issues.';
77
+ persistDependencies(mockRepo, 'test/skill', content, undefined);
78
+ expect(mockRepo.setDependencies).toHaveBeenCalled();
79
+ const callArgs = vi.mocked(mockRepo.setDependencies).mock.calls[0];
80
+ expect(callArgs[0]).toBe('test/skill');
81
+ expect(callArgs[1]).toHaveLength(1);
82
+ expect(callArgs[1][0].dep_target).toBe('linear');
83
+ expect(callArgs[1][0].dep_type).toBe('mcp_server');
84
+ expect(callArgs[2]).toBe('inferred_static');
85
+ });
86
+ it('persists declared dependencies alongside inferred ones', () => {
87
+ const content = '# Skill\n\nUse mcp__slack__send_message for notifs.';
88
+ const declared = {
89
+ skills: [{ name: 'other/skill', type: 'hard', version: '^1.0.0' }],
90
+ };
91
+ persistDependencies(mockRepo, 'test/skill', content, declared);
92
+ // Should be called once for 'declared' source, once for 'inferred_static' source
93
+ expect(mockRepo.setDependencies).toHaveBeenCalledTimes(2);
94
+ });
95
+ it('deduplicates declared MCP servers over inferred', () => {
96
+ const content = '# Skill\n\nUse mcp__linear__save_issue for issues.';
97
+ const declared = {
98
+ platform: {
99
+ mcp_servers: [{ name: 'linear', package: '@a/b', required: true }],
100
+ },
101
+ };
102
+ persistDependencies(mockRepo, 'test/skill', content, declared);
103
+ // Only declared source should be called (linear is deduplicated)
104
+ expect(mockRepo.setDependencies).toHaveBeenCalledTimes(1);
105
+ const callArgs = vi.mocked(mockRepo.setDependencies).mock.calls[0];
106
+ expect(callArgs[2]).toBe('declared');
107
+ });
108
+ });
109
+ //# sourceMappingURL=install.dep-helpers.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"install.dep-helpers.test.js","sourceRoot":"","sources":["../../../src/tools/install.dep-helpers.test.ts"],"names":[],"mappings":"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"}
@@ -1,48 +1,35 @@
1
1
  /**
2
2
  * @fileoverview MCP Install Skill Tool for downloading and installing skills
3
3
  * @module @skillsmith/mcp-server/tools/install
4
- * @see {@link https://github.com/wrsmith108/skillsmith|Skillsmith Repository}
5
- *
6
- * Provides skill installation functionality with:
7
- * - GitHub repository fetching (supports owner/repo and full URLs)
8
- * - Automatic security scanning before installation
9
- * - SKILL.md validation
10
- * - Manifest tracking of installed skills
11
- * - Optional file fetching (README.md, examples.md, config.json)
4
+ * @see SMI-2741: Split to meet 500-line standard
5
+ * @see SMI-3137: Wave 4 — Dependency intelligence persistence
12
6
  *
13
7
  * Skills are installed to ~/.claude/skills/ and tracked in ~/.skillsmith/manifest.json
14
8
  */
15
- import { SecurityScanner, TransformationService, safeWriteFile } from '@skillsmith/core';
9
+ import { SecurityScanner, safeWriteFile } from '@skillsmith/core';
16
10
  import * as fs from 'fs/promises';
17
11
  import * as path from 'path';
18
12
  import * as os from 'os';
19
13
  import { getToolContext } from '../context.js';
20
- // Import types
21
14
  import { TRUST_TIER_SCANNER_OPTIONS, CLAUDE_SKILLS_DIR, } from './install.types.js';
22
- // Import helpers
23
15
  import { loadManifest, updateManifestSafely, parseSkillId, parseRepoUrl, lookupSkillFromRegistry, fetchFromGitHub, validateSkillMd, generateOptimizedTips, hashContent, storeOriginal, } from './install.helpers.js';
24
16
  // SMI-1867: Conflict resolution logic (extracted per governance review)
25
17
  import { checkForConflicts, handleMergeAction } from './install.conflict.js';
18
+ // SMI-1788/SMI-2741: Optimization layer extracted to companion file
19
+ import { applySkillOptimization } from './install.optimize.js';
20
+ // SMI-3137: Dependency intelligence persistence
21
+ import { extractDepIntel, persistDependencies } from './install.dep-helpers.js';
22
+ // SMI-2741: MCP tool definition extracted to companion file
23
+ export { installTool } from './install.tool.js';
24
+ export { default } from './install.tool.js';
26
25
  // Re-export only public API types (SMI-1718: trimmed internal exports)
27
26
  export { installInputSchema } from './install.types.js';
28
27
  /**
29
28
  * Install a skill from GitHub to the local Claude Code skills directory.
30
29
  *
31
- * This function:
32
- * 1. Parses the skill ID or GitHub URL
33
- * 2. Checks if already installed (returns error unless force=true)
34
- * 3. Fetches SKILL.md from GitHub (required)
35
- * 4. Validates SKILL.md content
36
- * 5. Runs security scan (unless skipScan=true)
37
- * 6. Creates installation directory at ~/.claude/skills/{skillName}
38
- * 7. Writes skill files
39
- * 8. Updates manifest at ~/.skillsmith/manifest.json
40
- *
41
- * @param input - Installation parameters
42
- * @param input.skillId - Skill ID (owner/repo) or full GitHub URL
43
- * @param input.force - Force reinstall if skill already exists (default: false)
44
- * @param input.skipScan - Skip security scan (default: false, not recommended)
45
- * @returns Promise resolving to installation result with success status
30
+ * @param input - Installation parameters (skillId, force, skipScan)
31
+ * @param _context - Optional tool context (falls back to singleton)
32
+ * @returns Installation result with success status, security report, and dep intel
46
33
  */
47
34
  export async function installSkill(input, _context) {
48
35
  // SMI-1491: Get context for registry lookup (use provided or fallback to singleton)
@@ -253,45 +240,16 @@ export async function installSkill(input, _context) {
253
240
  }
254
241
  }
255
242
  // SMI-1788: Apply Skillsmith Optimization Layer (unless skipped)
256
- let optimizationInfo = { optimized: false };
257
- let finalSkillContent = skillMdContent;
258
- let subSkillFiles = [];
259
- let subagentContent;
260
- let claudeMdSnippet;
261
- if (!input.skipOptimize) {
262
- try {
263
- const transformService = new TransformationService(context.db, {
264
- cacheTtl: 3600, // 1 hour cache
265
- version: '1.0.0',
266
- });
267
- // Extract skill name and description for transformation
268
- const nameMatch = skillMdContent.match(/^name:\s*(.+)$/m);
269
- const descMatch = skillMdContent.match(/^description:\s*(.+)$/m);
270
- const extractedName = nameMatch ? nameMatch[1].trim() : skillName;
271
- const extractedDesc = descMatch ? descMatch[1].trim() : '';
272
- const transformResult = await transformService.transform(input.skillId, extractedName, extractedDesc, skillMdContent);
273
- if (transformResult.transformed) {
274
- finalSkillContent = transformResult.mainSkillContent;
275
- subSkillFiles = transformResult.subSkills;
276
- subagentContent = transformResult.subagent?.content;
277
- claudeMdSnippet = transformResult.claudeMdSnippet;
278
- optimizationInfo = {
279
- optimized: true,
280
- subSkills: subSkillFiles.map((s) => s.filename),
281
- subagentGenerated: !!subagentContent,
282
- tokenReductionPercent: transformResult.stats.tokenReductionPercent,
283
- originalLines: transformResult.stats.originalLines,
284
- optimizedLines: transformResult.stats.optimizedLines,
285
- };
286
- }
243
+ const optimizeResult = input.skipOptimize
244
+ ? {
245
+ finalSkillContent: skillMdContent,
246
+ subSkillFiles: [],
247
+ subagentContent: undefined,
248
+ claudeMdSnippet: undefined,
249
+ optimizationInfo: { optimized: false },
287
250
  }
288
- catch (transformError) {
289
- // Transformation failed - continue with original content
290
- console.warn('[install] Optimization failed, using original content:', transformError);
291
- finalSkillContent = skillMdContent;
292
- optimizationInfo = { optimized: false };
293
- }
294
- }
251
+ : await applySkillOptimization(input.skillId, skillName, skillMdContent, context.db);
252
+ const { finalSkillContent, subSkillFiles, subagentContent, claudeMdSnippet, optimizationInfo } = optimizeResult;
295
253
  // SMI-1867: Compute hash before file operations (needed in manifest update)
296
254
  const contentHash = hashContent(finalSkillContent);
297
255
  // SMI-1792, SMI-1797: Atomic file installation with transaction pattern
@@ -385,6 +343,20 @@ export async function installSkill(input, _context) {
385
343
  },
386
344
  },
387
345
  }));
346
+ // SMI-2761: Record session co-install pairs for "also installed" recommendations
347
+ context.coInstallRepository.recordSessionCoInstalls([
348
+ ...context.sessionInstalledSkillIds,
349
+ input.skillId,
350
+ ]);
351
+ context.sessionInstalledSkillIds.push(input.skillId);
352
+ // SMI-3137: Extract and persist dependency intelligence
353
+ const depIntel = extractDepIntel(skillMdContent, null);
354
+ try {
355
+ persistDependencies(context.skillDependencyRepository, input.skillId, skillMdContent, depIntel.dep_declared);
356
+ }
357
+ catch {
358
+ // Dependency persistence is best-effort
359
+ }
388
360
  return {
389
361
  success: true,
390
362
  skillId: input.skillId,
@@ -393,6 +365,7 @@ export async function installSkill(input, _context) {
393
365
  trustTier, // SMI-1533: Include trust tier in result
394
366
  optimization: optimizationInfo,
395
367
  backupPath, // SMI-1895: Include backup path if created during conflict resolution
368
+ depIntel, // SMI-3137: Dependency intelligence
396
369
  tips: generateOptimizedTips(skillName, optimizationInfo, claudeMdSnippet),
397
370
  };
398
371
  }
@@ -401,19 +374,21 @@ export async function installSkill(input, _context) {
401
374
  let safeErrorMessage = 'Installation failed';
402
375
  if (error instanceof Error) {
403
376
  // Allow specific known error types through
404
- if (error.message.includes('already installed') ||
405
- error.message.includes('Could not find SKILL.md') ||
406
- error.message.includes('registry data quality issue') ||
407
- error.message.includes('Invalid SKILL.md') ||
408
- error.message.includes('Security scan failed') ||
409
- error.message.includes('exceeds maximum length') ||
410
- error.message.includes('Refusing to write to symlink') ||
411
- error.message.includes('Refusing to write to hardlinked file') ||
412
- error.message.includes('Install path escapes skills directory')) {
377
+ const knownPrefixes = [
378
+ 'already installed',
379
+ 'Could not find SKILL.md',
380
+ 'registry data quality issue',
381
+ 'Invalid SKILL.md',
382
+ 'Security scan failed',
383
+ 'exceeds maximum length',
384
+ 'Refusing to write to symlink',
385
+ 'Refusing to write to hardlinked file',
386
+ 'Install path escapes skills directory',
387
+ ];
388
+ if (knownPrefixes.some((p) => error.message.includes(p))) {
413
389
  safeErrorMessage = error.message;
414
390
  }
415
391
  else {
416
- // Log the full error for debugging, return sanitized message
417
392
  console.error('[install] Error during installation:', error);
418
393
  safeErrorMessage = 'Installation failed due to an internal error';
419
394
  }
@@ -426,39 +401,4 @@ export async function installSkill(input, _context) {
426
401
  };
427
402
  }
428
403
  }
429
- /**
430
- * MCP tool definition
431
- */
432
- export const installTool = {
433
- name: 'install_skill',
434
- description: 'Install a Claude Code skill from GitHub. Performs security scan and Skillsmith optimization before installation.',
435
- inputSchema: {
436
- type: 'object',
437
- properties: {
438
- skillId: {
439
- type: 'string',
440
- description: 'Skill ID (owner/repo/skill) or GitHub URL',
441
- },
442
- force: {
443
- type: 'boolean',
444
- description: 'Force reinstall if skill already exists',
445
- },
446
- skipScan: {
447
- type: 'boolean',
448
- description: 'Skip security scan (not recommended)',
449
- },
450
- skipOptimize: {
451
- type: 'boolean',
452
- description: 'Skip Skillsmith optimization (decomposition, subagent generation)',
453
- },
454
- conflictAction: {
455
- type: 'string',
456
- enum: ['overwrite', 'merge', 'cancel'],
457
- description: 'Action when local modifications detected: overwrite (backup + replace), merge (three-way), or cancel',
458
- },
459
- },
460
- required: ['skillId'],
461
- },
462
- };
463
- export default installTool;
464
404
  //# sourceMappingURL=install.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"install.js","sourceRoot":"","sources":["../../../src/tools/install.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"install.js","sourceRoot":"","sources":["../../../src/tools/install.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,eAAe,EAAE,aAAa,EAAkB,MAAM,kBAAkB,CAAA;AACjF,OAAO,KAAK,EAAE,MAAM,aAAa,CAAA;AACjC,OAAO,KAAK,IAAI,MAAM,MAAM,CAAA;AAC5B,OAAO,KAAK,EAAE,MAAM,IAAI,CAAA;AAExB,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AAC9C,OAAO,EACL,0BAA0B,EAC1B,iBAAiB,GAGlB,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EACL,YAAY,EACZ,oBAAoB,EACpB,YAAY,EACZ,YAAY,EACZ,uBAAuB,EACvB,eAAe,EACf,eAAe,EACf,qBAAqB,EACrB,WAAW,EACX,aAAa,GACd,MAAM,sBAAsB,CAAA;AAE7B,wEAAwE;AACxE,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAA;AAE5E,oEAAoE;AACpE,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAA;AAC9D,gDAAgD;AAChD,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAE/E,4DAA4D;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAC/C,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAA;AAE3C,uEAAuE;AACvE,OAAO,EAAE,kBAAkB,EAAyC,MAAM,oBAAoB,CAAA;AAE9F;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,KAAmB,EACnB,QAAsB;IAEtB,oFAAoF;IACpF,MAAM,OAAO,GAAG,QAAQ,IAAI,cAAc,EAAE,CAAA;IAE5C,6FAA6F;IAC7F,IAAI,SAAS,GAAc,SAAS,CAAA;IAEpC,IAAI,CAAC;QACH,iBAAiB;QACjB,MAAM,MAAM,GAAG,YAAY,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;QAE1C,oFAAoF;QACpF,IAAI,KAAa,CAAA;QACjB,IAAI,IAAY,CAAA;QAChB,IAAI,QAAgB,CAAA;QACpB,IAAI,SAAiB,CAAA;QACrB,IAAI,MAAM,GAAW,MAAM,CAAA;QAE3B,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;YACxB,kCAAkC;YAClC,gFAAgF;YAChF,MAAM,aAAa,GAAG,MAAM,uBAAuB,CAAC,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;YAE3E,IAAI,CAAC,aAAa,EAAE,CAAC;gBACnB,iDAAiD;gBACjD,OAAO;oBACL,OAAO,EAAE,KAAK;oBACd,OAAO,EAAE,KAAK,CAAC,OAAO;oBACtB,WAAW,EAAE,EAAE;oBACf,KAAK,EACH,SAAS;wBACT,KAAK,CAAC,OAAO;wBACb,mCAAmC;wBACnC,0DAA0D;wBAC1D,6DAA6D;oBAC/D,IAAI,EAAE;wBACJ,2FAA2F;wBAC3F,qDAAqD;wBACrD,wEAAwE;qBACzE;iBACF,CAAA;YACH,CAAC;YAED,qDAAqD;YACrD,IAAI,aAAa,CAAC,WAAW,EAAE,CAAC;gBAC9B,OAAO;oBACL,OAAO,EAAE,KAAK;oBACd,OAAO,EAAE,KAAK,CAAC,OAAO;oBACtB,WAAW,EAAE,EAAE;oBACf,KAAK,EACH,SAAS;wBACT,KAAK,CAAC,OAAO;wBACb,mDAAmD;wBACnD,sDAAsD;oBACxD,IAAI,EAAE;wBACJ,iFAAiF;wBACjF,4GAA4G;wBAC5G,2FAA2F;qBAC5F;iBACF,CAAA;YACH,CAAC;YAED,8CAA8C;YAC9C,MAAM,QAAQ,GAAG,YAAY,CAAC,aAAa,CAAC,OAAO,CAAC,CAAA;YACpD,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAA;YACtB,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAA;YACpB,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAA;YACnD,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAA;YACxB,SAAS,GAAG,aAAa,CAAC,IAAI,CAAA;YAC9B,yEAAyE;YACzE,SAAS,GAAG,aAAa,CAAC,SAAS,CAAA;QACrC,CAAC;aAAM,CAAC;YACN,kCAAkC;YAClC,6CAA6C;YAC7C,KAAK,GAAG,MAAM,CAAC,KAAK,CAAA;YACpB,IAAI,GAAG,MAAM,CAAC,IAAI,CAAA;YAClB,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAA;YAC/C,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;QAC7D,CAAC;QAED,iFAAiF;QACjF,8EAA8E;QAC9E,2CAA2C;QAC3C,MAAM,YAAY,GAAG,MAAM,CAAC,YAAY,CAAA;QAExC,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,SAAS,CAAC,CAAA;QAE3D,6BAA6B;QAC7B,MAAM,QAAQ,GAAG,MAAM,YAAY,EAAE,CAAA;QACrC,IAAI,QAAQ,CAAC,eAAe,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;YACxD,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,OAAO,EAAE,KAAK,CAAC,OAAO;gBACtB,WAAW;gBACX,KAAK,EAAE,SAAS,GAAG,SAAS,GAAG,sDAAsD;aACtF,CAAA;QACH,CAAC;QAED,uDAAuD;QACvD,mDAAmD;QACnD,IAAI,UAA8B,CAAA;QAClC,IAAI,QAAQ,CAAC,eAAe,CAAC,SAAS,CAAC,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;YACvD,MAAM,aAAa,GAAG,MAAM,iBAAiB,CAC3C,SAAS,EACT,WAAW,EACX,QAAQ,EACR,KAAK,CAAC,cAAc,EACpB,KAAK,CAAC,OAAO,CACd,CAAA;YAED,IAAI,CAAC,aAAa,CAAC,aAAa,EAAE,CAAC;gBACjC,OAAO,aAAa,CAAC,WAAY,CAAA;YACnC,CAAC;YACD,UAAU,GAAG,aAAa,CAAC,UAAU,CAAA;QACvC,CAAC;QAED,2BAA2B;QAC3B,MAAM,WAAW,GAAG,QAAQ,GAAG,UAAU,CAAA;QAEzC,4BAA4B;QAC5B,IAAI,cAAsB,CAAA;QAC1B,IAAI,CAAC;YACH,cAAc,GAAG,MAAM,eAAe,CAAC,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,CAAC,CAAA;QAC1E,CAAC;QAAC,MAAM,CAAC;YACP,mCAAmC;YACnC,2EAA2E;YAC3E,MAAM,OAAO,GAAG,qBAAqB,GAAG,KAAK,GAAG,GAAG,GAAG,IAAI,CAAA;YAC1D,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,OAAO,EAAE,KAAK,CAAC,OAAO;gBACtB,WAAW;gBACX,KAAK,EAAE,YAAY;oBACjB,CAAC,CAAC,+EAA+E;wBAC/E,wCAAwC;wBACxC,CAAC,QAAQ,IAAI,iBAAiB,CAAC;wBAC/B,KAAK;wBACL,iFAAiF;wBACjF,+BAA+B;wBAC/B,6EAA6E;wBAC7E,cAAc;wBACd,OAAO;oBACT,CAAC,CAAC,6BAA6B;wBAC7B,CAAC,QAAQ,IAAI,iBAAiB,CAAC;wBAC/B,IAAI;wBACJ,gGAAgG;wBAChG,cAAc;wBACd,OAAO;gBACX,IAAI,EAAE,YAAY;oBAChB,CAAC,CAAC;wBACE,gEAAgE;wBAChE,8DAA8D;wBAC9D,gFAAgF;wBAChF,uFAAuF;qBACxF;oBACH,CAAC,CAAC;wBACE,kEAAkE;wBAClE,gCAAgC,GAAG,OAAO;wBAC1C,oGAAoG;wBACpG,2EAA2E;qBAC5E;aACN,CAAA;QACH,CAAC;QAED,wDAAwD;QACxD,IAAI,KAAK,CAAC,cAAc,KAAK,OAAO,EAAE,CAAC;YACrC,MAAM,OAAO,GAAG,MAAM,iBAAiB,CACrC,SAAS,EACT,WAAW,EACX,cAAc,EACd,QAAQ,EACR,KAAK,EACL,IAAI,EACJ,KAAK,CAAC,OAAO,CACd,CAAA;YAED,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC;gBAC3B,OAAO,OAAO,CAAC,WAAY,CAAA;YAC7B,CAAC;YAED,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;gBAC1B,cAAc,GAAG,OAAO,CAAC,aAAa,CAAA;YACxC,CAAC;YACD,qDAAqD;YACrD,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;gBACvB,UAAU,GAAG,OAAO,CAAC,UAAU,CAAA;YACjC,CAAC;QACH,CAAC;QAED,oBAAoB;QACpB,MAAM,UAAU,GAAG,eAAe,CAAC,cAAc,CAAC,CAAA;QAClD,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;YACtB,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,OAAO,EAAE,KAAK,CAAC,OAAO;gBACtB,WAAW;gBACX,KAAK,EAAE,oBAAoB,GAAG,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;gBAC1D,IAAI,EAAE;oBACJ,sEAAsE;oBACtE,yCAAyC;oBACzC,sGAAsG;iBACvG;aACF,CAAA;QACH,CAAC;QAED,kEAAkE;QAClE,IAAI,cAA+C,CAAA;QACnD,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;YACpB,0CAA0C;YAC1C,MAAM,cAAc,GAAG,0BAA0B,CAAC,SAAS,CAAC,CAAA;YAC5D,MAAM,OAAO,GAAG,IAAI,eAAe,CAAC,cAAc,CAAC,CAAA;YAEnD,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,cAAc,CAAC,CAAA;YAE5D,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC;gBAC3B,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;gBAED,wDAAwD;gBACxD,MAAM,WAAW,GACf,SAAS,KAAK,SAAS;oBACrB,CAAC,CAAC,uDAAuD;oBACzD,CAAC,CAAC,SAAS,KAAK,cAAc;wBAC5B,CAAC,CAAC,qDAAqD;wBACvD,CAAC,CAAC,EAAE,CAAA;gBAEV,OAAO;oBACL,OAAO,EAAE,KAAK;oBACd,OAAO,EAAE,KAAK,CAAC,OAAO;oBACtB,WAAW;oBACX,cAAc;oBACd,SAAS;oBACT,KAAK,EACH,4BAA4B;wBAC5B,gBAAgB,CAAC,MAAM;wBACvB,yBAAyB;wBACzB,WAAW;wBACX,oDAAoD;oBACtD,IAAI,EAAE;wBACJ,cAAc,GAAG,SAAS,GAAG,eAAe,GAAG,cAAc,CAAC,aAAa,GAAG,GAAG;wBACjF,cAAc,GAAG,cAAc,CAAC,SAAS;wBACzC,6DAA6D;wBAC7D,SAAS,KAAK,SAAS;4BACrB,CAAC,CAAC,gEAAgE;4BAClE,CAAC,CAAC,SAAS;qBACd,CAAC,MAAM,CAAC,OAAO,CAAa;iBAC9B,CAAA;YACH,CAAC;QACH,CAAC;QAED,iEAAiE;QACjE,MAAM,cAAc,GAAG,KAAK,CAAC,YAAY;YACvC,CAAC,CAAC;gBACE,iBAAiB,EAAE,cAAc;gBACjC,aAAa,EAAE,EAAkD;gBACjE,eAAe,EAAE,SAA+B;gBAChD,eAAe,EAAE,SAA+B;gBAChD,gBAAgB,EAAE,EAAE,SAAS,EAAE,KAAc,EAAE;aAChD;YACH,CAAC,CAAC,MAAM,sBAAsB,CAAC,KAAK,CAAC,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,OAAO,CAAC,EAAE,CAAC,CAAA;QAEtF,MAAM,EAAE,iBAAiB,EAAE,aAAa,EAAE,eAAe,EAAE,eAAe,EAAE,gBAAgB,EAAE,GAC5F,cAAc,CAAA;QAEhB,4EAA4E;QAC5E,MAAM,WAAW,GAAG,WAAW,CAAC,iBAAiB,CAAC,CAAA;QAElD,wEAAwE;QACxE,2DAA2D;QAC3D,MAAM,YAAY,GAAa,EAAE,CAAA;QACjC,IAAI,CAAC;YACH,gCAAgC;YAChC,MAAM,EAAE,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;YAEhD,uDAAuD;YACvD,MAAM,eAAe,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAA;YACtD,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAA;YACtD,IACE,CAAC,eAAe,CAAC,UAAU,CAAC,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC;gBACtD,eAAe,KAAK,cAAc,EAClC,CAAC;gBACD,MAAM,IAAI,KAAK,CAAC,0CAA0C,WAAW,EAAE,CAAC,CAAA;YAC1E,CAAC;YAED,yCAAyC;YACzC,yDAAyD;YACzD,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,UAAU,CAAC,CAAA;YACxD,MAAM,aAAa,CAAC,aAAa,EAAE,iBAAiB,CAAC,CAAA;YACrD,YAAY,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;YAEhC,iEAAiE;YACjE,MAAM,aAAa,CAAC,SAAS,EAAE,iBAAiB,EAAE;gBAChD,OAAO,EAAE,OAAO;gBAChB,MAAM,EAAE,SAAS,GAAG,KAAK,GAAG,GAAG,GAAG,IAAI;gBACtC,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;aACtC,CAAC,CAAA;YAEF,oEAAoE;YACpE,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC7B,MAAM,OAAO,CAAC,GAAG,CACf,aAAa,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE;oBACnC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAA;oBACzD,MAAM,aAAa,CAAC,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAA;oBAC9C,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;gBAC5B,CAAC,CAAC,CACH,CAAA;YACH,CAAC;YAED,wCAAwC;YACxC,IAAI,eAAe,EAAE,CAAC;gBACpB,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAA;gBAC9D,MAAM,EAAE,CAAC,KAAK,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;gBAC9C,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,SAAS,gBAAgB,CAAC,CAAA;gBACvE,MAAM,aAAa,CAAC,YAAY,EAAE,eAAe,CAAC,CAAA;gBAClD,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;gBAC/B,gBAAgB,CAAC,YAAY,GAAG,YAAY,CAAA;YAC9C,CAAC;QACH,CAAC;QAAC,OAAO,UAAU,EAAE,CAAC;YACpB,4DAA4D;YAC5D,KAAK,MAAM,QAAQ,IAAI,YAAY,EAAE,CAAC;gBACpC,MAAM,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAA;YAC3C,CAAC;YACD,kEAAkE;YAClE,MAAM,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAA;YAC3C,MAAM,UAAU,CAAA;QAClB,CAAC;QAED,8BAA8B;QAC9B,2DAA2D;QAC3D,MAAM,mBAAmB,GAAG,KAAK,CAAC,QAAQ;YACxC,CAAC,CAAC,IAAI;YACN,CAAC,CAAC,IAAI,eAAe,CAAC,0BAA0B,CAAC,SAAS,CAAC,CAAC,CAAA;QAC9D,MAAM,aAAa,GAAG,CAAC,WAAW,EAAE,aAAa,EAAE,aAAa,CAAC,CAAA;QACjE,KAAK,MAAM,IAAI,IAAI,aAAa,EAAE,CAAC;YACjC,IAAI,CAAC;gBACH,MAAM,OAAO,GAAG,MAAM,eAAe,CAAC,KAAK,EAAE,IAAI,EAAE,QAAQ,GAAG,IAAI,EAAE,MAAM,CAAC,CAAA;gBAE3E,0BAA0B;gBAC1B,IAAI,mBAAmB,EAAE,CAAC;oBACxB,MAAM,QAAQ,GAAG,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,GAAG,GAAG,IAAI,EAAE,OAAO,CAAC,CAAA;oBAC9E,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;wBACrB,OAAO,CAAC,IAAI,CAAC,WAAW,GAAG,IAAI,GAAG,2BAA2B,CAAC,CAAA;wBAC9D,SAAQ;oBACV,CAAC;gBACH,CAAC;gBAED,MAAM,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,EAAE,OAAO,CAAC,CAAA;YAC5D,CAAC;YAAC,MAAM,CAAC;gBACP,kCAAkC;YACpC,CAAC;QACH,CAAC;QAED,0DAA0D;QAC1D,MAAM,oBAAoB,CAAC,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC;YAC/C,GAAG,eAAe;YAClB,eAAe,EAAE;gBACf,GAAG,eAAe,CAAC,eAAe;gBAClC,CAAC,SAAS,CAAC,EAAE;oBACX,EAAE,EAAE,KAAK,CAAC,OAAO;oBACjB,IAAI,EAAE,SAAS;oBACf,OAAO,EAAE,OAAO;oBAChB,MAAM,EAAE,SAAS,GAAG,KAAK,GAAG,GAAG,GAAG,IAAI;oBACtC,WAAW;oBACX,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;oBACrC,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;oBACrC,mBAAmB,EAAE,WAAW,EAAE,gCAAgC;iBACnE;aACF;SACF,CAAC,CAAC,CAAA;QAEH,iFAAiF;QACjF,OAAO,CAAC,mBAAmB,CAAC,uBAAuB,CAAC;YAClD,GAAG,OAAO,CAAC,wBAAwB;YACnC,KAAK,CAAC,OAAO;SACd,CAAC,CAAA;QACF,OAAO,CAAC,wBAAwB,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;QAEpD,wDAAwD;QACxD,MAAM,QAAQ,GAAG,eAAe,CAAC,cAAc,EAAE,IAAI,CAAC,CAAA;QACtD,IAAI,CAAC;YACH,mBAAmB,CACjB,OAAO,CAAC,yBAAyB,EACjC,KAAK,CAAC,OAAO,EACb,cAAc,EACd,QAAQ,CAAC,YAAY,CACtB,CAAA;QACH,CAAC;QAAC,MAAM,CAAC;YACP,wCAAwC;QAC1C,CAAC;QAED,OAAO;YACL,OAAO,EAAE,IAAI;YACb,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,WAAW;YACX,cAAc;YACd,SAAS,EAAE,yCAAyC;YACpD,YAAY,EAAE,gBAAgB;YAC9B,UAAU,EAAE,sEAAsE;YAClF,QAAQ,EAAE,oCAAoC;YAC9C,IAAI,EAAE,qBAAqB,CAAC,SAAS,EAAE,gBAAgB,EAAE,eAAe,CAAC;SAC1E,CAAA;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,uEAAuE;QACvE,IAAI,gBAAgB,GAAG,qBAAqB,CAAA;QAC5C,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;YAC3B,2CAA2C;YAC3C,MAAM,aAAa,GAAG;gBACpB,mBAAmB;gBACnB,yBAAyB;gBACzB,6BAA6B;gBAC7B,kBAAkB;gBAClB,sBAAsB;gBACtB,wBAAwB;gBACxB,8BAA8B;gBAC9B,sCAAsC;gBACtC,uCAAuC;aACxC,CAAA;YACD,IAAI,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBACzD,gBAAgB,GAAG,KAAK,CAAC,OAAO,CAAA;YAClC,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,KAAK,CAAC,sCAAsC,EAAE,KAAK,CAAC,CAAA;gBAC5D,gBAAgB,GAAG,8CAA8C,CAAA;YACnE,CAAC;QACH,CAAC;QACD,OAAO;YACL,OAAO,EAAE,KAAK;YACd,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,WAAW,EAAE,EAAE;YACf,KAAK,EAAE,gBAAgB;SACxB,CAAA;IACH,CAAC;AACH,CAAC"}