@skillsmith/mcp-server 0.3.4 → 0.3.6

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 (175) hide show
  1. package/README.md +1 -1
  2. package/dist/.tsbuildinfo +1 -1
  3. package/dist/src/__tests__/LocalIndexer.test.d.ts +5 -0
  4. package/dist/src/__tests__/LocalIndexer.test.d.ts.map +1 -0
  5. package/dist/src/__tests__/LocalIndexer.test.js +396 -0
  6. package/dist/src/__tests__/LocalIndexer.test.js.map +1 -0
  7. package/dist/src/__tests__/get-skill.test.js +195 -0
  8. package/dist/src/__tests__/get-skill.test.js.map +1 -1
  9. package/dist/src/__tests__/index-local.test.d.ts +5 -0
  10. package/dist/src/__tests__/index-local.test.d.ts.map +1 -0
  11. package/dist/src/__tests__/index-local.test.js +203 -0
  12. package/dist/src/__tests__/index-local.test.js.map +1 -0
  13. package/dist/src/__tests__/recommend.test.d.ts +7 -0
  14. package/dist/src/__tests__/recommend.test.d.ts.map +1 -0
  15. package/dist/src/__tests__/recommend.test.js +277 -0
  16. package/dist/src/__tests__/recommend.test.js.map +1 -0
  17. package/dist/src/__tests__/search.test.js +138 -0
  18. package/dist/src/__tests__/search.test.js.map +1 -1
  19. package/dist/src/context.d.ts +6 -0
  20. package/dist/src/context.d.ts.map +1 -1
  21. package/dist/src/context.js +7 -1
  22. package/dist/src/context.js.map +1 -1
  23. package/dist/src/index.js +14 -0
  24. package/dist/src/index.js.map +1 -1
  25. package/dist/src/indexer/FrontmatterParser.d.ts +30 -0
  26. package/dist/src/indexer/FrontmatterParser.d.ts.map +1 -0
  27. package/dist/src/indexer/FrontmatterParser.js +109 -0
  28. package/dist/src/indexer/FrontmatterParser.js.map +1 -0
  29. package/dist/src/indexer/LocalIndexer.d.ts +136 -0
  30. package/dist/src/indexer/LocalIndexer.d.ts.map +1 -0
  31. package/dist/src/indexer/LocalIndexer.js +271 -0
  32. package/dist/src/indexer/LocalIndexer.js.map +1 -0
  33. package/dist/src/indexer/index.d.ts +8 -0
  34. package/dist/src/indexer/index.d.ts.map +1 -0
  35. package/dist/src/indexer/index.js +8 -0
  36. package/dist/src/indexer/index.js.map +1 -0
  37. package/dist/src/llm/failover.d.ts +11 -1
  38. package/dist/src/llm/failover.d.ts.map +1 -1
  39. package/dist/src/llm/failover.js.map +1 -1
  40. package/dist/src/middleware/errorFormatter.d.ts +27 -0
  41. package/dist/src/middleware/errorFormatter.d.ts.map +1 -1
  42. package/dist/src/middleware/errorFormatter.js +95 -0
  43. package/dist/src/middleware/errorFormatter.js.map +1 -1
  44. package/dist/src/middleware/index.d.ts +1 -1
  45. package/dist/src/middleware/index.d.ts.map +1 -1
  46. package/dist/src/middleware/index.js.map +1 -1
  47. package/dist/src/middleware/quota-helpers.d.ts +40 -0
  48. package/dist/src/middleware/quota-helpers.d.ts.map +1 -0
  49. package/dist/src/middleware/quota-helpers.js +90 -0
  50. package/dist/src/middleware/quota-helpers.js.map +1 -0
  51. package/dist/src/middleware/quota-types.d.ts +105 -0
  52. package/dist/src/middleware/quota-types.d.ts.map +1 -0
  53. package/dist/src/middleware/quota-types.js +4 -0
  54. package/dist/src/middleware/quota-types.js.map +1 -0
  55. package/dist/src/middleware/quota.d.ts +3 -97
  56. package/dist/src/middleware/quota.d.ts.map +1 -1
  57. package/dist/src/middleware/quota.js +2 -87
  58. package/dist/src/middleware/quota.js.map +1 -1
  59. package/dist/src/tools/LocalSkillSearch.d.ts +32 -0
  60. package/dist/src/tools/LocalSkillSearch.d.ts.map +1 -0
  61. package/dist/src/tools/LocalSkillSearch.js +74 -0
  62. package/dist/src/tools/LocalSkillSearch.js.map +1 -0
  63. package/dist/src/tools/compare.helpers.js.map +1 -1
  64. package/dist/src/tools/compare.types.d.ts +1 -0
  65. package/dist/src/tools/compare.types.d.ts.map +1 -1
  66. package/dist/src/tools/compare.types.js +2 -0
  67. package/dist/src/tools/compare.types.js.map +1 -1
  68. package/dist/src/tools/get-skill.js +3 -0
  69. package/dist/src/tools/get-skill.js.map +1 -1
  70. package/dist/src/tools/index-local.d.ts +117 -0
  71. package/dist/src/tools/index-local.d.ts.map +1 -0
  72. package/dist/src/tools/index-local.js +126 -0
  73. package/dist/src/tools/index-local.js.map +1 -0
  74. package/dist/src/tools/index.d.ts +2 -0
  75. package/dist/src/tools/index.d.ts.map +1 -1
  76. package/dist/src/tools/index.js +2 -0
  77. package/dist/src/tools/index.js.map +1 -1
  78. package/dist/src/tools/install.conflict-helpers.d.ts +64 -0
  79. package/dist/src/tools/install.conflict-helpers.d.ts.map +1 -0
  80. package/dist/src/tools/install.conflict-helpers.js +165 -0
  81. package/dist/src/tools/install.conflict-helpers.js.map +1 -0
  82. package/dist/src/tools/install.conflict-helpers.test.d.ts +15 -0
  83. package/dist/src/tools/install.conflict-helpers.test.d.ts.map +1 -0
  84. package/dist/src/tools/install.conflict-helpers.test.js +243 -0
  85. package/dist/src/tools/install.conflict-helpers.test.js.map +1 -0
  86. package/dist/src/tools/install.conflict.d.ts +58 -0
  87. package/dist/src/tools/install.conflict.d.ts.map +1 -0
  88. package/dist/src/tools/install.conflict.js +160 -0
  89. package/dist/src/tools/install.conflict.js.map +1 -0
  90. package/dist/src/tools/install.conflict.test.d.ts +15 -0
  91. package/dist/src/tools/install.conflict.test.d.ts.map +1 -0
  92. package/dist/src/tools/install.conflict.test.js +354 -0
  93. package/dist/src/tools/install.conflict.test.js.map +1 -0
  94. package/dist/src/tools/install.d.ts +5 -0
  95. package/dist/src/tools/install.d.ts.map +1 -1
  96. package/dist/src/tools/install.helpers.d.ts +5 -4
  97. package/dist/src/tools/install.helpers.d.ts.map +1 -1
  98. package/dist/src/tools/install.helpers.js +13 -4
  99. package/dist/src/tools/install.helpers.js.map +1 -1
  100. package/dist/src/tools/install.js +96 -17
  101. package/dist/src/tools/install.js.map +1 -1
  102. package/dist/src/tools/install.types.d.ts +75 -11
  103. package/dist/src/tools/install.types.d.ts.map +1 -1
  104. package/dist/src/tools/install.types.js +15 -1
  105. package/dist/src/tools/install.types.js.map +1 -1
  106. package/dist/src/tools/merge.d.ts +53 -0
  107. package/dist/src/tools/merge.d.ts.map +1 -0
  108. package/dist/src/tools/merge.js +276 -0
  109. package/dist/src/tools/merge.js.map +1 -0
  110. package/dist/src/tools/merge.test.d.ts +11 -0
  111. package/dist/src/tools/merge.test.d.ts.map +1 -0
  112. package/dist/src/tools/merge.test.js +224 -0
  113. package/dist/src/tools/merge.test.js.map +1 -0
  114. package/dist/src/tools/recommend.d.ts +1 -0
  115. package/dist/src/tools/recommend.d.ts.map +1 -1
  116. package/dist/src/tools/recommend.js +165 -38
  117. package/dist/src/tools/recommend.js.map +1 -1
  118. package/dist/src/tools/search.d.ts.map +1 -1
  119. package/dist/src/tools/search.js +31 -4
  120. package/dist/src/tools/search.js.map +1 -1
  121. package/dist/src/utils/validation.d.ts +6 -2
  122. package/dist/src/utils/validation.d.ts.map +1 -1
  123. package/dist/src/utils/validation.js +11 -2
  124. package/dist/src/utils/validation.js.map +1 -1
  125. package/dist/src/webhooks/webhook-endpoint.d.ts +4 -49
  126. package/dist/src/webhooks/webhook-endpoint.d.ts.map +1 -1
  127. package/dist/src/webhooks/webhook-endpoint.js +3 -125
  128. package/dist/src/webhooks/webhook-endpoint.js.map +1 -1
  129. package/dist/src/webhooks/webhook-helpers.d.ts +69 -0
  130. package/dist/src/webhooks/webhook-helpers.d.ts.map +1 -0
  131. package/dist/src/webhooks/webhook-helpers.js +146 -0
  132. package/dist/src/webhooks/webhook-helpers.js.map +1 -0
  133. package/dist/tests/e2e/conflict-resolution.e2e.test.d.ts +12 -0
  134. package/dist/tests/e2e/conflict-resolution.e2e.test.d.ts.map +1 -0
  135. package/dist/tests/e2e/conflict-resolution.e2e.test.js +343 -0
  136. package/dist/tests/e2e/conflict-resolution.e2e.test.js.map +1 -0
  137. package/dist/tests/integration/fixtures/development-skills.d.ts +22 -0
  138. package/dist/tests/integration/fixtures/development-skills.d.ts.map +1 -0
  139. package/dist/tests/integration/fixtures/development-skills.js +165 -0
  140. package/dist/tests/integration/fixtures/development-skills.js.map +1 -0
  141. package/dist/tests/integration/fixtures/devops-skills.d.ts +10 -0
  142. package/dist/tests/integration/fixtures/devops-skills.d.ts.map +1 -0
  143. package/dist/tests/integration/fixtures/devops-skills.js +70 -0
  144. package/dist/tests/integration/fixtures/devops-skills.js.map +1 -0
  145. package/dist/tests/integration/fixtures/experimental-skills.d.ts +14 -0
  146. package/dist/tests/integration/fixtures/experimental-skills.d.ts.map +1 -0
  147. package/dist/tests/integration/fixtures/experimental-skills.js +255 -0
  148. package/dist/tests/integration/fixtures/experimental-skills.js.map +1 -0
  149. package/dist/tests/integration/fixtures/skill-types.d.ts +18 -0
  150. package/dist/tests/integration/fixtures/skill-types.d.ts.map +1 -0
  151. package/dist/tests/integration/fixtures/skill-types.js +6 -0
  152. package/dist/tests/integration/fixtures/skill-types.js.map +1 -0
  153. package/dist/tests/integration/fixtures/test-skills.d.ts +10 -14
  154. package/dist/tests/integration/fixtures/test-skills.d.ts.map +1 -1
  155. package/dist/tests/integration/fixtures/test-skills.js +23 -590
  156. package/dist/tests/integration/fixtures/test-skills.js.map +1 -1
  157. package/dist/tests/integration/fixtures/testing-skills.d.ts +10 -0
  158. package/dist/tests/integration/fixtures/testing-skills.d.ts.map +1 -0
  159. package/dist/tests/integration/fixtures/testing-skills.js +70 -0
  160. package/dist/tests/integration/fixtures/testing-skills.js.map +1 -0
  161. package/dist/tests/integration/fixtures/verified-skills.d.ts +11 -0
  162. package/dist/tests/integration/fixtures/verified-skills.d.ts.map +1 -0
  163. package/dist/tests/integration/fixtures/verified-skills.js +91 -0
  164. package/dist/tests/integration/fixtures/verified-skills.js.map +1 -0
  165. package/dist/tests/integration/install-conflict.integration.test.d.ts +8 -0
  166. package/dist/tests/integration/install-conflict.integration.test.d.ts.map +1 -0
  167. package/dist/tests/integration/install-conflict.integration.test.js +384 -0
  168. package/dist/tests/integration/install-conflict.integration.test.js.map +1 -0
  169. package/dist/tests/integration/install-trust-parsing.integration.test.d.ts +13 -0
  170. package/dist/tests/integration/install-trust-parsing.integration.test.d.ts.map +1 -0
  171. package/dist/tests/integration/install-trust-parsing.integration.test.js +290 -0
  172. package/dist/tests/integration/install-trust-parsing.integration.test.js.map +1 -0
  173. package/dist/tests/integration/install.integration.test.js +3 -0
  174. package/dist/tests/integration/install.integration.test.js.map +1 -1
  175. package/package.json +7 -6
@@ -35,10 +35,12 @@ export const compareToolSchema = {
35
35
  };
36
36
  /**
37
37
  * Trust tier ranking for comparison
38
+ * SMI-1809: Added 'local' tier for local skills
38
39
  */
39
40
  export const TRUST_TIER_RANK = {
40
41
  verified: 4,
41
42
  community: 3,
43
+ local: 3, // SMI-1809: Local skills rank same as community (user trusts their own skills)
42
44
  experimental: 2,
43
45
  unknown: 1,
44
46
  };
@@ -1 +1 @@
1
- {"version":3,"file":"compare.types.js","sourceRoot":"","sources":["../../../src/tools/compare.types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAGvB;;GAEG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IACzC,gCAAgC;IAChC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,qBAAqB,CAAC;IACjD,iCAAiC;IACjC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,qBAAqB,CAAC;CAClD,CAAC,CAAA;AAsEF;;GAEG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,IAAI,EAAE,eAAe;IACrB,WAAW,EACT,gIAAgI;IAClI,WAAW,EAAE;QACX,IAAI,EAAE,QAAiB;QACvB,UAAU,EAAE;YACV,OAAO,EAAE;gBACP,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,2DAA2D;aACzE;YACD,OAAO,EAAE;gBACP,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,8DAA8D;aAC5E;SACF;QACD,QAAQ,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC;KACjC;CACF,CAAA;AAOD;;GAEG;AACH,MAAM,CAAC,MAAM,eAAe,GAA8B;IACxD,QAAQ,EAAE,CAAC;IACX,SAAS,EAAE,CAAC;IACZ,YAAY,EAAE,CAAC;IACf,OAAO,EAAE,CAAC;CACX,CAAA"}
1
+ {"version":3,"file":"compare.types.js","sourceRoot":"","sources":["../../../src/tools/compare.types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAGvB;;GAEG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IACzC,gCAAgC;IAChC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,qBAAqB,CAAC;IACjD,iCAAiC;IACjC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,qBAAqB,CAAC;CAClD,CAAC,CAAA;AAsEF;;GAEG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,IAAI,EAAE,eAAe;IACrB,WAAW,EACT,gIAAgI;IAClI,WAAW,EAAE;QACX,IAAI,EAAE,QAAiB;QACvB,UAAU,EAAE;YACV,OAAO,EAAE;gBACP,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,2DAA2D;aACzE;YACD,OAAO,EAAE;gBACP,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,8DAA8D;aAC5E;SACF;QACD,QAAQ,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC;KACjC;CACF,CAAA;AAOD;;;GAGG;AACH,MAAM,CAAC,MAAM,eAAe,GAA8B;IACxD,QAAQ,EAAE,CAAC;IACX,SAAS,EAAE,CAAC;IACZ,KAAK,EAAE,CAAC,EAAE,+EAA+E;IACzF,YAAY,EAAE,CAAC;IACf,OAAO,EAAE,CAAC;CACX,CAAA"}
@@ -268,6 +268,7 @@ export function formatSkillDetails(response) {
268
268
  }
269
269
  /**
270
270
  * Format trust tier with visual indicator
271
+ * SMI-1809: Added 'local' tier
271
272
  */
272
273
  function formatTrustTier(tier) {
273
274
  switch (tier) {
@@ -275,6 +276,8 @@ function formatTrustTier(tier) {
275
276
  return '[*] VERIFIED';
276
277
  case 'community':
277
278
  return '[+] COMMUNITY';
279
+ case 'local':
280
+ return '[@] LOCAL'; // SMI-1809: Local skills from ~/.claude/skills/
278
281
  case 'experimental':
279
282
  return '[~] EXPERIMENTAL';
280
283
  case 'unknown':
@@ -1 +1 @@
1
- {"version":3,"file":"get-skill.js","sourceRoot":"","sources":["../../../src/tools/get-skill.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"get-skill.js","sourceRoot":"","sources":["../../../src/tools/get-skill.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,117 @@
1
+ /**
2
+ * @fileoverview MCP Tool for indexing local skills from ~/.claude/skills/
3
+ * @module @skillsmith/mcp-server/tools/index-local
4
+ * @see SMI-1809: Local skill indexing for MCP server
5
+ *
6
+ * Provides manual re-indexing of local skills with detailed results.
7
+ *
8
+ * @example
9
+ * // Trigger re-indexing
10
+ * const result = await executeIndexLocal({}, context);
11
+ * console.log(`Indexed ${result.count} skills`);
12
+ *
13
+ * @example
14
+ * // Force re-index (bypass cache)
15
+ * const result = await executeIndexLocal({ force: true }, context);
16
+ */
17
+ import { z } from 'zod';
18
+ import type { ToolContext } from '../context.js';
19
+ /**
20
+ * Tool schema for MCP
21
+ */
22
+ export declare const indexLocalToolSchema: {
23
+ name: string;
24
+ description: string;
25
+ inputSchema: {
26
+ type: "object";
27
+ properties: {
28
+ force: {
29
+ type: string;
30
+ description: string;
31
+ };
32
+ skillsDir: {
33
+ type: string;
34
+ description: string;
35
+ };
36
+ };
37
+ required: never[];
38
+ };
39
+ };
40
+ /**
41
+ * Zod schema for input validation
42
+ */
43
+ export declare const indexLocalInputSchema: z.ZodObject<{
44
+ force: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
45
+ skillsDir: z.ZodOptional<z.ZodString>;
46
+ }, "strip", z.ZodTypeAny, {
47
+ force: boolean;
48
+ skillsDir?: string | undefined;
49
+ }, {
50
+ force?: boolean | undefined;
51
+ skillsDir?: string | undefined;
52
+ }>;
53
+ /**
54
+ * Input parameters for the index_local operation
55
+ */
56
+ export interface IndexLocalInput {
57
+ /** Force re-indexing even if cache is valid */
58
+ force?: boolean;
59
+ /** Custom skills directory path */
60
+ skillsDir?: string;
61
+ }
62
+ /**
63
+ * Summary of an indexed skill for response
64
+ */
65
+ export interface IndexedSkillSummary {
66
+ /** Skill ID (local/{name}) */
67
+ id: string;
68
+ /** Skill name */
69
+ name: string;
70
+ /** Quality score (0-100) */
71
+ qualityScore: number;
72
+ /** Whether SKILL.md was found */
73
+ hasSkillMd: boolean;
74
+ /** Number of tags */
75
+ tagCount: number;
76
+ }
77
+ /**
78
+ * Response from index_local operation
79
+ */
80
+ export interface IndexLocalResponse {
81
+ /** Number of skills indexed */
82
+ count: number;
83
+ /** Path to skills directory */
84
+ skillsDir: string;
85
+ /** Summary of indexed skills */
86
+ skills: IndexedSkillSummary[];
87
+ /** Timing information */
88
+ timing: {
89
+ indexMs: number;
90
+ totalMs: number;
91
+ };
92
+ /** Whether result was from cache */
93
+ fromCache: boolean;
94
+ }
95
+ /**
96
+ * Execute local skill indexing.
97
+ *
98
+ * Scans ~/.claude/skills/ (or custom directory), parses SKILL.md files,
99
+ * and returns indexed skill information.
100
+ *
101
+ * @param input - Index parameters
102
+ * @param _context - Tool context (unused but required for consistency)
103
+ * @returns Promise resolving to index response
104
+ *
105
+ * @example
106
+ * const response = await executeIndexLocal({}, context);
107
+ * console.log(`Found ${response.count} local skills`);
108
+ */
109
+ export declare function executeIndexLocal(input: IndexLocalInput, _context: ToolContext): Promise<IndexLocalResponse>;
110
+ /**
111
+ * Format index results for terminal/CLI display.
112
+ *
113
+ * @param response - Index response from executeIndexLocal
114
+ * @returns Formatted string suitable for terminal output
115
+ */
116
+ export declare function formatIndexLocalResults(response: IndexLocalResponse): string;
117
+ //# sourceMappingURL=index-local.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-local.d.ts","sourceRoot":"","sources":["../../../src/tools/index-local.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAEhD;;GAEG;AACH,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;CAkBhC,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,qBAAqB;;;;;;;;;EAGhC,CAAA;AAEF;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,+CAA+C;IAC/C,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,mCAAmC;IACnC,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,8BAA8B;IAC9B,EAAE,EAAE,MAAM,CAAA;IACV,iBAAiB;IACjB,IAAI,EAAE,MAAM,CAAA;IACZ,4BAA4B;IAC5B,YAAY,EAAE,MAAM,CAAA;IACpB,iCAAiC;IACjC,UAAU,EAAE,OAAO,CAAA;IACnB,qBAAqB;IACrB,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,+BAA+B;IAC/B,KAAK,EAAE,MAAM,CAAA;IACb,+BAA+B;IAC/B,SAAS,EAAE,MAAM,CAAA;IACjB,gCAAgC;IAChC,MAAM,EAAE,mBAAmB,EAAE,CAAA;IAC7B,yBAAyB;IACzB,MAAM,EAAE;QACN,OAAO,EAAE,MAAM,CAAA;QACf,OAAO,EAAE,MAAM,CAAA;KAChB,CAAA;IACD,oCAAoC;IACpC,SAAS,EAAE,OAAO,CAAA;CACnB;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAsB,iBAAiB,CACrC,KAAK,EAAE,eAAe,EACtB,QAAQ,EAAE,WAAW,GACpB,OAAO,CAAC,kBAAkB,CAAC,CAoC7B;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,kBAAkB,GAAG,MAAM,CAkC5E"}
@@ -0,0 +1,126 @@
1
+ /**
2
+ * @fileoverview MCP Tool for indexing local skills from ~/.claude/skills/
3
+ * @module @skillsmith/mcp-server/tools/index-local
4
+ * @see SMI-1809: Local skill indexing for MCP server
5
+ *
6
+ * Provides manual re-indexing of local skills with detailed results.
7
+ *
8
+ * @example
9
+ * // Trigger re-indexing
10
+ * const result = await executeIndexLocal({}, context);
11
+ * console.log(`Indexed ${result.count} skills`);
12
+ *
13
+ * @example
14
+ * // Force re-index (bypass cache)
15
+ * const result = await executeIndexLocal({ force: true }, context);
16
+ */
17
+ import { z } from 'zod';
18
+ import { LocalIndexer } from '../indexer/LocalIndexer.js';
19
+ /**
20
+ * Tool schema for MCP
21
+ */
22
+ export const indexLocalToolSchema = {
23
+ name: 'index_local',
24
+ description: 'Index local skills from ~/.claude/skills/ directory. Returns count and details of indexed skills.',
25
+ inputSchema: {
26
+ type: 'object',
27
+ properties: {
28
+ force: {
29
+ type: 'boolean',
30
+ description: 'Force re-indexing even if cache is valid (default: false)',
31
+ },
32
+ skillsDir: {
33
+ type: 'string',
34
+ description: 'Custom skills directory path (defaults to ~/.claude/skills/)',
35
+ },
36
+ },
37
+ required: [],
38
+ },
39
+ };
40
+ /**
41
+ * Zod schema for input validation
42
+ */
43
+ export const indexLocalInputSchema = z.object({
44
+ force: z.boolean().optional().default(false),
45
+ skillsDir: z.string().optional(),
46
+ });
47
+ /**
48
+ * Execute local skill indexing.
49
+ *
50
+ * Scans ~/.claude/skills/ (or custom directory), parses SKILL.md files,
51
+ * and returns indexed skill information.
52
+ *
53
+ * @param input - Index parameters
54
+ * @param _context - Tool context (unused but required for consistency)
55
+ * @returns Promise resolving to index response
56
+ *
57
+ * @example
58
+ * const response = await executeIndexLocal({}, context);
59
+ * console.log(`Found ${response.count} local skills`);
60
+ */
61
+ export async function executeIndexLocal(input, _context) {
62
+ const startTime = performance.now();
63
+ const indexStart = performance.now();
64
+ // Create indexer with optional custom directory
65
+ const indexer = new LocalIndexer(input.skillsDir);
66
+ // Check if we'll get cached results
67
+ const wasCached = !input.force && indexer['cachedSkills'] !== null;
68
+ // Perform indexing
69
+ const skills = await indexer.index(input.force);
70
+ const indexEnd = performance.now();
71
+ // Create summaries
72
+ const summaries = skills.map((skill) => ({
73
+ id: skill.id,
74
+ name: skill.name,
75
+ qualityScore: skill.qualityScore,
76
+ hasSkillMd: skill.hasSkillMd,
77
+ tagCount: skill.tags.length,
78
+ }));
79
+ const endTime = performance.now();
80
+ return {
81
+ count: skills.length,
82
+ skillsDir: indexer.getSkillsDir(),
83
+ skills: summaries,
84
+ timing: {
85
+ indexMs: Math.round(indexEnd - indexStart),
86
+ totalMs: Math.round(endTime - startTime),
87
+ },
88
+ fromCache: wasCached && !input.force,
89
+ };
90
+ }
91
+ /**
92
+ * Format index results for terminal/CLI display.
93
+ *
94
+ * @param response - Index response from executeIndexLocal
95
+ * @returns Formatted string suitable for terminal output
96
+ */
97
+ export function formatIndexLocalResults(response) {
98
+ const lines = [];
99
+ lines.push('\n=== Local Skills Index ===\n');
100
+ lines.push(`Directory: ${response.skillsDir}`);
101
+ lines.push(`Found: ${response.count} skill(s)`);
102
+ if (response.fromCache) {
103
+ lines.push('(from cache)');
104
+ }
105
+ lines.push('');
106
+ if (response.skills.length === 0) {
107
+ lines.push('No skills found in the local skills directory.');
108
+ lines.push('');
109
+ lines.push('To add skills:');
110
+ lines.push(' 1. Create a directory in ~/.claude/skills/');
111
+ lines.push(' 2. Add a SKILL.md file with frontmatter');
112
+ lines.push('');
113
+ }
114
+ else {
115
+ for (const skill of response.skills) {
116
+ const quality = skill.qualityScore >= 80 ? '[HIGH]' : skill.qualityScore >= 50 ? '[MED]' : '[LOW]';
117
+ const skillMd = skill.hasSkillMd ? '' : ' (no SKILL.md)';
118
+ lines.push(` ${skill.name} ${quality} - Score: ${skill.qualityScore}/100${skillMd}`);
119
+ }
120
+ lines.push('');
121
+ }
122
+ lines.push('---');
123
+ lines.push(`Index: ${response.timing.indexMs}ms | Total: ${response.timing.totalMs}ms`);
124
+ return lines.join('\n');
125
+ }
126
+ //# sourceMappingURL=index-local.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-local.js","sourceRoot":"","sources":["../../../src/tools/index-local.ts"],"names":[],"mappings":"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"}
@@ -17,4 +17,6 @@ export { compareToolSchema, compareInputSchema, executeCompare, formatComparison
17
17
  export type { CompareInput, SkillSummary, SkillDifference, CompareResponse } from './compare.js';
18
18
  export { analyzeToolSchema, analyzeInputSchema, executeAnalyze, formatAnalysisResults, } from './analyze.js';
19
19
  export type { AnalyzeInput, AnalyzeFramework, AnalyzeDependency, AnalyzeResponse, } from './analyze.js';
20
+ export { indexLocalToolSchema, indexLocalInputSchema, executeIndexLocal, formatIndexLocalResults, } from './index-local.js';
21
+ export type { IndexLocalInput, IndexedSkillSummary, IndexLocalResponse } from './index-local.js';
20
22
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/tools/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAA;AAClF,YAAY,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAG9C,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAA;AAC5E,YAAY,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAG/D,OAAO,EACL,aAAa,EACb,cAAc,EACd,oBAAoB,EACpB,mBAAmB,GACpB,MAAM,gBAAgB,CAAA;AACvB,YAAY,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAGrE,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AACpE,YAAY,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AAGnD,OAAO,EACL,mBAAmB,EACnB,oBAAoB,EACpB,gBAAgB,EAChB,qBAAqB,GACtB,MAAM,gBAAgB,CAAA;AACvB,YAAY,EAAE,cAAc,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAA;AAG5F,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACnB,eAAe,EACf,uBAAuB,GACxB,MAAM,eAAe,CAAA;AACtB,YAAY,EAAE,aAAa,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAA;AAGrF,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,cAAc,EACd,uBAAuB,GACxB,MAAM,cAAc,CAAA;AACrB,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAGhG,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,cAAc,EACd,qBAAqB,GACtB,MAAM,cAAc,CAAA;AACrB,YAAY,EACV,YAAY,EACZ,gBAAgB,EAChB,iBAAiB,EACjB,eAAe,GAChB,MAAM,cAAc,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/tools/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAA;AAClF,YAAY,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAG9C,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAA;AAC5E,YAAY,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAG/D,OAAO,EACL,aAAa,EACb,cAAc,EACd,oBAAoB,EACpB,mBAAmB,GACpB,MAAM,gBAAgB,CAAA;AACvB,YAAY,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAGrE,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AACpE,YAAY,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AAGnD,OAAO,EACL,mBAAmB,EACnB,oBAAoB,EACpB,gBAAgB,EAChB,qBAAqB,GACtB,MAAM,gBAAgB,CAAA;AACvB,YAAY,EAAE,cAAc,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAA;AAG5F,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACnB,eAAe,EACf,uBAAuB,GACxB,MAAM,eAAe,CAAA;AACtB,YAAY,EAAE,aAAa,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAA;AAGrF,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,cAAc,EACd,uBAAuB,GACxB,MAAM,cAAc,CAAA;AACrB,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAGhG,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,cAAc,EACd,qBAAqB,GACtB,MAAM,cAAc,CAAA;AACrB,YAAY,EACV,YAAY,EACZ,gBAAgB,EAChB,iBAAiB,EACjB,eAAe,GAChB,MAAM,cAAc,CAAA;AAGrB,OAAO,EACL,oBAAoB,EACpB,qBAAqB,EACrB,iBAAiB,EACjB,uBAAuB,GACxB,MAAM,kBAAkB,CAAA;AACzB,YAAY,EAAE,eAAe,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAA"}
@@ -17,4 +17,6 @@ export { validateToolSchema, validateInputSchema, executeValidate, formatValidat
17
17
  export { compareToolSchema, compareInputSchema, executeCompare, formatComparisonResults, } from './compare.js';
18
18
  // Analyze codebase tool (SMI-600)
19
19
  export { analyzeToolSchema, analyzeInputSchema, executeAnalyze, formatAnalysisResults, } from './analyze.js';
20
+ // Index local skills tool (SMI-1809)
21
+ export { indexLocalToolSchema, indexLocalInputSchema, executeIndexLocal, formatIndexLocalResults, } from './index-local.js';
20
22
  //# 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"}
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"}
@@ -0,0 +1,64 @@
1
+ /**
2
+ * @fileoverview Conflict Resolution Helper Functions for Skill Updates
3
+ * @module @skillsmith/mcp-server/tools/install.conflict-helpers
4
+ * @see SMI-1865
5
+ *
6
+ * Split from install.helpers.ts per governance code review (file size > 500 lines)
7
+ */
8
+ /**
9
+ * SMI-1865: Get base directory for skill backups
10
+ * Uses a function instead of constant to support HOME overrides in tests
11
+ */
12
+ export declare function getBackupsDir(): string;
13
+ /**
14
+ * SMI-1865: Compute SHA-256 hash of content for modification detection
15
+ */
16
+ export declare function hashContent(content: string): string;
17
+ /**
18
+ * SMI-1865: Result of modification detection
19
+ */
20
+ export interface ModificationResult {
21
+ /** Whether the file has been modified since installation */
22
+ modified: boolean;
23
+ /** SHA-256 hash of the current content */
24
+ currentHash: string;
25
+ /** SHA-256 hash of the original content at install time */
26
+ originalHash: string;
27
+ }
28
+ /**
29
+ * SMI-1865: Detect if a skill has been modified since installation
30
+ * @param installPath - Path to the installed skill directory
31
+ * @param originalHash - SHA-256 hash of the original SKILL.md at install time
32
+ * @returns ModificationResult indicating if the skill has been modified
33
+ */
34
+ export declare function detectModifications(installPath: string, originalHash: string): Promise<ModificationResult>;
35
+ /**
36
+ * SMI-1865: Create a timestamped backup of a skill before update
37
+ * @param skillName - Name of the skill (used for directory naming)
38
+ * @param installPath - Current install path of the skill
39
+ * @param reason - Reason for creating the backup (e.g., 'pre-update', 'conflict')
40
+ * @returns Path to the created backup directory
41
+ */
42
+ export declare function createSkillBackup(skillName: string, installPath: string, reason: string): Promise<string>;
43
+ /**
44
+ * SMI-1865: Store the original content of a skill at install time
45
+ * Used for three-way merge during conflict resolution
46
+ * @param skillName - Name of the skill
47
+ * @param content - Original SKILL.md content
48
+ * @param metadata - Additional metadata to store (version, source, etc.)
49
+ */
50
+ export declare function storeOriginal(skillName: string, content: string, metadata: Record<string, unknown>): Promise<void>;
51
+ /**
52
+ * SMI-1865: Load the original SKILL.md content stored at install time
53
+ * @param skillName - Name of the skill
54
+ * @returns Original content, or null if not found
55
+ */
56
+ export declare function loadOriginal(skillName: string): Promise<string | null>;
57
+ /**
58
+ * SMI-1865: Clean up old backups, keeping only the most recent ones
59
+ * Never deletes the .original directory
60
+ * @param skillName - Name of the skill
61
+ * @param keepCount - Number of most recent backups to keep (default: 3)
62
+ */
63
+ export declare function cleanupOldBackups(skillName: string, keepCount?: number): Promise<void>;
64
+ //# sourceMappingURL=install.conflict-helpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"install.conflict-helpers.d.ts","sourceRoot":"","sources":["../../../src/tools/install.conflict-helpers.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAWH;;;GAGG;AACH,wBAAgB,aAAa,IAAI,MAAM,CAEtC;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAEnD;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,4DAA4D;IAC5D,QAAQ,EAAE,OAAO,CAAA;IACjB,0CAA0C;IAC1C,WAAW,EAAE,MAAM,CAAA;IACnB,2DAA2D;IAC3D,YAAY,EAAE,MAAM,CAAA;CACrB;AAED;;;;;GAKG;AACH,wBAAsB,mBAAmB,CACvC,WAAW,EAAE,MAAM,EACnB,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,kBAAkB,CAAC,CAuB7B;AAED;;;;;;GAMG;AACH,wBAAsB,iBAAiB,CACrC,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,MAAM,CAAC,CAuBjB;AAqBD;;;;;;GAMG;AACH,wBAAsB,aAAa,CACjC,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAChC,OAAO,CAAC,IAAI,CAAC,CAWf;AAED;;;;GAIG;AACH,wBAAsB,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAW5E;AAED;;;;;GAKG;AACH,wBAAsB,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,GAAE,MAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CA2B/F"}
@@ -0,0 +1,165 @@
1
+ /**
2
+ * @fileoverview Conflict Resolution Helper Functions for Skill Updates
3
+ * @module @skillsmith/mcp-server/tools/install.conflict-helpers
4
+ * @see SMI-1865
5
+ *
6
+ * Split from install.helpers.ts per governance code review (file size > 500 lines)
7
+ */
8
+ import * as fs from 'fs/promises';
9
+ import * as path from 'path';
10
+ import * as os from 'os';
11
+ import { createHash } from 'crypto';
12
+ // ============================================================================
13
+ // Conflict Resolution Helpers (SMI-1865)
14
+ // ============================================================================
15
+ /**
16
+ * SMI-1865: Get base directory for skill backups
17
+ * Uses a function instead of constant to support HOME overrides in tests
18
+ */
19
+ export function getBackupsDir() {
20
+ return path.join(os.homedir(), '.claude', 'skills', '.backups');
21
+ }
22
+ /**
23
+ * SMI-1865: Compute SHA-256 hash of content for modification detection
24
+ */
25
+ export function hashContent(content) {
26
+ return createHash('sha256').update(content).digest('hex');
27
+ }
28
+ /**
29
+ * SMI-1865: Detect if a skill has been modified since installation
30
+ * @param installPath - Path to the installed skill directory
31
+ * @param originalHash - SHA-256 hash of the original SKILL.md at install time
32
+ * @returns ModificationResult indicating if the skill has been modified
33
+ */
34
+ export async function detectModifications(installPath, originalHash) {
35
+ const skillMdPath = path.join(installPath, 'SKILL.md');
36
+ try {
37
+ const currentContent = await fs.readFile(skillMdPath, 'utf-8');
38
+ const currentHash = hashContent(currentContent);
39
+ return {
40
+ modified: currentHash !== originalHash,
41
+ currentHash,
42
+ originalHash,
43
+ };
44
+ }
45
+ catch (error) {
46
+ // If file doesn't exist, consider it modified (deleted)
47
+ if (error.code === 'ENOENT') {
48
+ return {
49
+ modified: true,
50
+ currentHash: '',
51
+ originalHash,
52
+ };
53
+ }
54
+ throw error;
55
+ }
56
+ }
57
+ /**
58
+ * SMI-1865: Create a timestamped backup of a skill before update
59
+ * @param skillName - Name of the skill (used for directory naming)
60
+ * @param installPath - Current install path of the skill
61
+ * @param reason - Reason for creating the backup (e.g., 'pre-update', 'conflict')
62
+ * @returns Path to the created backup directory
63
+ */
64
+ export async function createSkillBackup(skillName, installPath, reason) {
65
+ const timestamp = new Date().toISOString().replace(/[:.]/g, '-');
66
+ const backupDir = path.join(getBackupsDir(), skillName, `${timestamp}_${reason}`);
67
+ // Create backup directory
68
+ await fs.mkdir(backupDir, { recursive: true });
69
+ // Copy all files from install path to backup
70
+ const entries = await fs.readdir(installPath, { withFileTypes: true });
71
+ for (const entry of entries) {
72
+ const srcPath = path.join(installPath, entry.name);
73
+ const destPath = path.join(backupDir, entry.name);
74
+ if (entry.isFile()) {
75
+ await fs.copyFile(srcPath, destPath);
76
+ }
77
+ else if (entry.isDirectory()) {
78
+ // Recursively copy directories
79
+ await copyDirectory(srcPath, destPath);
80
+ }
81
+ }
82
+ return backupDir;
83
+ }
84
+ /**
85
+ * SMI-1865: Recursively copy a directory
86
+ */
87
+ async function copyDirectory(src, dest) {
88
+ await fs.mkdir(dest, { recursive: true });
89
+ const entries = await fs.readdir(src, { withFileTypes: true });
90
+ for (const entry of entries) {
91
+ const srcPath = path.join(src, entry.name);
92
+ const destPath = path.join(dest, entry.name);
93
+ if (entry.isFile()) {
94
+ await fs.copyFile(srcPath, destPath);
95
+ }
96
+ else if (entry.isDirectory()) {
97
+ await copyDirectory(srcPath, destPath);
98
+ }
99
+ }
100
+ }
101
+ /**
102
+ * SMI-1865: Store the original content of a skill at install time
103
+ * Used for three-way merge during conflict resolution
104
+ * @param skillName - Name of the skill
105
+ * @param content - Original SKILL.md content
106
+ * @param metadata - Additional metadata to store (version, source, etc.)
107
+ */
108
+ export async function storeOriginal(skillName, content, metadata) {
109
+ const originalDir = path.join(getBackupsDir(), skillName, '.original');
110
+ // Create directory
111
+ await fs.mkdir(originalDir, { recursive: true });
112
+ // Store SKILL.md content
113
+ await fs.writeFile(path.join(originalDir, 'SKILL.md'), content, 'utf-8');
114
+ // Store metadata
115
+ await fs.writeFile(path.join(originalDir, 'metadata.json'), JSON.stringify(metadata, null, 2));
116
+ }
117
+ /**
118
+ * SMI-1865: Load the original SKILL.md content stored at install time
119
+ * @param skillName - Name of the skill
120
+ * @returns Original content, or null if not found
121
+ */
122
+ export async function loadOriginal(skillName) {
123
+ const originalPath = path.join(getBackupsDir(), skillName, '.original', 'SKILL.md');
124
+ try {
125
+ return await fs.readFile(originalPath, 'utf-8');
126
+ }
127
+ catch (error) {
128
+ if (error.code === 'ENOENT') {
129
+ return null;
130
+ }
131
+ throw error;
132
+ }
133
+ }
134
+ /**
135
+ * SMI-1865: Clean up old backups, keeping only the most recent ones
136
+ * Never deletes the .original directory
137
+ * @param skillName - Name of the skill
138
+ * @param keepCount - Number of most recent backups to keep (default: 3)
139
+ */
140
+ export async function cleanupOldBackups(skillName, keepCount = 3) {
141
+ const skillBackupDir = path.join(getBackupsDir(), skillName);
142
+ try {
143
+ const entries = await fs.readdir(skillBackupDir, { withFileTypes: true });
144
+ // Filter to only timestamped directories (not .original)
145
+ const backupDirs = entries
146
+ .filter((entry) => entry.isDirectory() && entry.name !== '.original')
147
+ .map((entry) => entry.name)
148
+ .sort()
149
+ .reverse(); // Most recent first (ISO timestamps sort correctly)
150
+ // Remove old backups beyond keepCount
151
+ const toDelete = backupDirs.slice(keepCount);
152
+ for (const dirName of toDelete) {
153
+ const dirPath = path.join(skillBackupDir, dirName);
154
+ await fs.rm(dirPath, { recursive: true, force: true });
155
+ }
156
+ }
157
+ catch (error) {
158
+ // If directory doesn't exist, nothing to clean up
159
+ if (error.code === 'ENOENT') {
160
+ return;
161
+ }
162
+ throw error;
163
+ }
164
+ }
165
+ //# sourceMappingURL=install.conflict-helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"install.conflict-helpers.js","sourceRoot":"","sources":["../../../src/tools/install.conflict-helpers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * @fileoverview Unit Tests for Install Conflict Helpers
3
+ * @module @skillsmith/mcp-server/tools/install.conflict-helpers.test
4
+ * @see SMI-1868, SMI-1879
5
+ *
6
+ * Tests cover:
7
+ * - hashContent: SHA-256 content hashing
8
+ * - detectModifications: Detect if skill files were modified
9
+ * - createSkillBackup: Create timestamped backups
10
+ * - storeOriginal: Store original content for merge
11
+ * - loadOriginal: Load stored original content
12
+ * - cleanupOldBackups: Manage backup retention
13
+ */
14
+ export {};
15
+ //# sourceMappingURL=install.conflict-helpers.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"install.conflict-helpers.test.d.ts","sourceRoot":"","sources":["../../../src/tools/install.conflict-helpers.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG"}