@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.
- package/README.md +11 -0
- package/dist/.tsbuildinfo +1 -1
- package/dist/src/__tests__/LocalIndexer.test.js +158 -0
- package/dist/src/__tests__/LocalIndexer.test.js.map +1 -1
- package/dist/src/__tests__/compare.test.d.ts +8 -0
- package/dist/src/__tests__/compare.test.d.ts.map +1 -0
- package/dist/src/__tests__/compare.test.js +162 -0
- package/dist/src/__tests__/compare.test.js.map +1 -0
- package/dist/src/__tests__/context.async.test.d.ts +8 -0
- package/dist/src/__tests__/context.async.test.d.ts.map +1 -0
- package/dist/src/__tests__/context.async.test.js +223 -0
- package/dist/src/__tests__/context.async.test.js.map +1 -0
- package/dist/src/__tests__/middleware/errorFormatter.builders.test.d.ts +10 -0
- package/dist/src/__tests__/middleware/errorFormatter.builders.test.d.ts.map +1 -0
- package/dist/src/__tests__/middleware/errorFormatter.builders.test.js +93 -0
- package/dist/src/__tests__/middleware/errorFormatter.builders.test.js.map +1 -0
- package/dist/src/__tests__/middleware/license-renewal.test.d.ts +10 -0
- package/dist/src/__tests__/middleware/license-renewal.test.d.ts.map +1 -0
- package/dist/src/__tests__/middleware/license-renewal.test.js +152 -0
- package/dist/src/__tests__/middleware/license-renewal.test.js.map +1 -0
- package/dist/src/__tests__/middleware/quota-helpers.test.d.ts +9 -0
- package/dist/src/__tests__/middleware/quota-helpers.test.d.ts.map +1 -0
- package/dist/src/__tests__/middleware/quota-helpers.test.js +105 -0
- package/dist/src/__tests__/middleware/quota-helpers.test.js.map +1 -0
- package/dist/src/__tests__/middleware/quota.test.d.ts +12 -0
- package/dist/src/__tests__/middleware/quota.test.d.ts.map +1 -0
- package/dist/src/__tests__/middleware/quota.test.js +189 -0
- package/dist/src/__tests__/middleware/quota.test.js.map +1 -0
- package/dist/src/__tests__/recommend-online-path.test.d.ts +10 -0
- package/dist/src/__tests__/recommend-online-path.test.d.ts.map +1 -0
- package/dist/src/__tests__/recommend-online-path.test.js +225 -0
- package/dist/src/__tests__/recommend-online-path.test.js.map +1 -0
- package/dist/src/__tests__/recommend.test.d.ts +2 -0
- package/dist/src/__tests__/recommend.test.d.ts.map +1 -1
- package/dist/src/__tests__/recommend.test.js +14 -2
- package/dist/src/__tests__/recommend.test.js.map +1 -1
- package/dist/src/__tests__/search-online-path.test.d.ts +10 -0
- package/dist/src/__tests__/search-online-path.test.d.ts.map +1 -0
- package/dist/src/__tests__/search-online-path.test.js +140 -0
- package/dist/src/__tests__/search-online-path.test.js.map +1 -0
- package/dist/src/__tests__/search.test.js +153 -5
- package/dist/src/__tests__/search.test.js.map +1 -1
- package/dist/src/context/project-detector.d.ts.map +1 -1
- package/dist/src/context/project-detector.js +1 -0
- package/dist/src/context/project-detector.js.map +1 -1
- package/dist/src/context.async.d.ts +48 -0
- package/dist/src/context.async.d.ts.map +1 -0
- package/dist/src/context.async.js +217 -0
- package/dist/src/context.async.js.map +1 -0
- package/dist/src/context.d.ts +5 -145
- package/dist/src/context.d.ts.map +1 -1
- package/dist/src/context.helpers.d.ts +25 -0
- package/dist/src/context.helpers.d.ts.map +1 -0
- package/dist/src/context.helpers.js +49 -0
- package/dist/src/context.helpers.js.map +1 -0
- package/dist/src/context.js +13 -228
- package/dist/src/context.js.map +1 -1
- package/dist/src/context.types.d.ts +112 -0
- package/dist/src/context.types.d.ts.map +1 -0
- package/dist/src/context.types.js +10 -0
- package/dist/src/context.types.js.map +1 -0
- package/dist/src/health/readinessCheck.d.ts +1 -1
- package/dist/src/health/readinessCheck.d.ts.map +1 -1
- package/dist/src/index.js +25 -152
- package/dist/src/index.js.map +1 -1
- package/dist/src/indexer/FrontmatterParser.d.ts +6 -0
- package/dist/src/indexer/FrontmatterParser.d.ts.map +1 -1
- package/dist/src/indexer/FrontmatterParser.js +15 -0
- package/dist/src/indexer/FrontmatterParser.js.map +1 -1
- package/dist/src/indexer/LocalIndexer.d.ts +4 -0
- package/dist/src/indexer/LocalIndexer.d.ts.map +1 -1
- package/dist/src/indexer/LocalIndexer.js +3 -0
- package/dist/src/indexer/LocalIndexer.js.map +1 -1
- package/dist/src/middleware/degradation.d.ts.map +1 -1
- package/dist/src/middleware/degradation.js +8 -0
- package/dist/src/middleware/degradation.js.map +1 -1
- package/dist/src/middleware/errorFormatter.builders.d.ts +49 -0
- package/dist/src/middleware/errorFormatter.builders.d.ts.map +1 -0
- package/dist/src/middleware/errorFormatter.builders.js +237 -0
- package/dist/src/middleware/errorFormatter.builders.js.map +1 -0
- package/dist/src/middleware/errorFormatter.d.ts +5 -100
- package/dist/src/middleware/errorFormatter.d.ts.map +1 -1
- package/dist/src/middleware/errorFormatter.js +16 -238
- package/dist/src/middleware/errorFormatter.js.map +1 -1
- package/dist/src/middleware/errorFormatter.types.d.ts +81 -0
- package/dist/src/middleware/errorFormatter.types.d.ts.map +1 -0
- package/dist/src/middleware/errorFormatter.types.js +34 -0
- package/dist/src/middleware/errorFormatter.types.js.map +1 -0
- package/dist/src/middleware/toolFeatureMapping.d.ts +1 -1
- package/dist/src/middleware/toolFeatureMapping.d.ts.map +1 -1
- package/dist/src/middleware/toolFeatureMapping.js +10 -0
- package/dist/src/middleware/toolFeatureMapping.js.map +1 -1
- package/dist/src/tool-dispatch.d.ts +27 -0
- package/dist/src/tool-dispatch.d.ts.map +1 -0
- package/dist/src/tool-dispatch.js +142 -0
- package/dist/src/tool-dispatch.js.map +1 -0
- package/dist/src/tools/LocalSkillSearch.d.ts.map +1 -1
- package/dist/src/tools/LocalSkillSearch.js +4 -0
- package/dist/src/tools/LocalSkillSearch.js.map +1 -1
- package/dist/src/tools/compare.types.d.ts +5 -1
- package/dist/src/tools/compare.types.d.ts.map +1 -1
- package/dist/src/tools/compare.types.js.map +1 -1
- package/dist/src/tools/get-skill.d.ts.map +1 -1
- package/dist/src/tools/get-skill.js +30 -0
- package/dist/src/tools/get-skill.js.map +1 -1
- package/dist/src/tools/index.d.ts +8 -0
- package/dist/src/tools/index.d.ts.map +1 -1
- package/dist/src/tools/index.js +8 -0
- package/dist/src/tools/index.js.map +1 -1
- package/dist/src/tools/install.d.ts +7 -58
- package/dist/src/tools/install.d.ts.map +1 -1
- package/dist/src/tools/install.dep-helpers.d.ts +41 -0
- package/dist/src/tools/install.dep-helpers.d.ts.map +1 -0
- package/dist/src/tools/install.dep-helpers.js +68 -0
- package/dist/src/tools/install.dep-helpers.js.map +1 -0
- package/dist/src/tools/install.dep-helpers.test.d.ts +6 -0
- package/dist/src/tools/install.dep-helpers.test.d.ts.map +1 -0
- package/dist/src/tools/install.dep-helpers.test.js +109 -0
- package/dist/src/tools/install.dep-helpers.test.js.map +1 -0
- package/dist/src/tools/install.js +49 -109
- package/dist/src/tools/install.js.map +1 -1
- package/dist/src/tools/install.optimize.d.ts +46 -0
- package/dist/src/tools/install.optimize.d.ts.map +1 -0
- package/dist/src/tools/install.optimize.js +67 -0
- package/dist/src/tools/install.optimize.js.map +1 -0
- package/dist/src/tools/install.tool.d.ts +44 -0
- package/dist/src/tools/install.tool.d.ts.map +1 -0
- package/dist/src/tools/install.tool.js +44 -0
- package/dist/src/tools/install.tool.js.map +1 -0
- package/dist/src/tools/install.types.d.ts +14 -1
- package/dist/src/tools/install.types.d.ts.map +1 -1
- package/dist/src/tools/install.types.js.map +1 -1
- package/dist/src/tools/outdated.d.ts +101 -0
- package/dist/src/tools/outdated.d.ts.map +1 -0
- package/dist/src/tools/outdated.js +214 -0
- package/dist/src/tools/outdated.js.map +1 -0
- package/dist/src/tools/outdated.test.d.ts +6 -0
- package/dist/src/tools/outdated.test.d.ts.map +1 -0
- package/dist/src/tools/outdated.test.js +287 -0
- package/dist/src/tools/outdated.test.js.map +1 -0
- package/dist/src/tools/recommend.d.ts +2 -4
- package/dist/src/tools/recommend.d.ts.map +1 -1
- package/dist/src/tools/recommend.format.d.ts +28 -0
- package/dist/src/tools/recommend.format.d.ts.map +1 -0
- package/dist/src/tools/recommend.format.js +111 -0
- package/dist/src/tools/recommend.format.js.map +1 -0
- package/dist/src/tools/recommend.js +6 -97
- package/dist/src/tools/recommend.js.map +1 -1
- package/dist/src/tools/recommend.types.d.ts +2 -2
- package/dist/src/tools/search.d.ts +24 -21
- package/dist/src/tools/search.d.ts.map +1 -1
- package/dist/src/tools/search.formatter.d.ts +30 -0
- package/dist/src/tools/search.formatter.d.ts.map +1 -0
- package/dist/src/tools/search.formatter.js +64 -0
- package/dist/src/tools/search.formatter.js.map +1 -0
- package/dist/src/tools/search.js +55 -54
- package/dist/src/tools/search.js.map +1 -1
- package/dist/src/tools/skill-audit.d.ts +98 -0
- package/dist/src/tools/skill-audit.d.ts.map +1 -0
- package/dist/src/tools/skill-audit.js +105 -0
- package/dist/src/tools/skill-audit.js.map +1 -0
- package/dist/src/tools/skill-audit.test.d.ts +6 -0
- package/dist/src/tools/skill-audit.test.d.ts.map +1 -0
- package/dist/src/tools/skill-audit.test.js +121 -0
- package/dist/src/tools/skill-audit.test.js.map +1 -0
- package/dist/src/tools/skill-diff.d.ts +107 -0
- package/dist/src/tools/skill-diff.d.ts.map +1 -0
- package/dist/src/tools/skill-diff.js +268 -0
- package/dist/src/tools/skill-diff.js.map +1 -0
- package/dist/src/tools/skill-diff.test.d.ts +6 -0
- package/dist/src/tools/skill-diff.test.d.ts.map +1 -0
- package/dist/src/tools/skill-diff.test.js +260 -0
- package/dist/src/tools/skill-diff.test.js.map +1 -0
- package/dist/src/tools/skill-pack-audit.d.ts +96 -0
- package/dist/src/tools/skill-pack-audit.d.ts.map +1 -0
- package/dist/src/tools/skill-pack-audit.js +183 -0
- package/dist/src/tools/skill-pack-audit.js.map +1 -0
- package/dist/src/tools/skill-updates.d.ts +1 -1
- package/dist/src/tools/skill-updates.d.ts.map +1 -1
- package/dist/src/tools/uninstall.d.ts.map +1 -1
- package/dist/src/tools/uninstall.js +9 -0
- package/dist/src/tools/uninstall.js.map +1 -1
- package/dist/src/tools/validate.d.ts.map +1 -1
- package/dist/src/tools/validate.dep.test.d.ts +6 -0
- package/dist/src/tools/validate.dep.test.d.ts.map +1 -0
- package/dist/src/tools/validate.dep.test.js +77 -0
- package/dist/src/tools/validate.dep.test.js.map +1 -0
- package/dist/src/tools/validate.helpers.d.ts +12 -0
- package/dist/src/tools/validate.helpers.d.ts.map +1 -1
- package/dist/src/tools/validate.helpers.js +90 -19
- package/dist/src/tools/validate.helpers.js.map +1 -1
- package/dist/src/tools/validate.js +3 -1
- package/dist/src/tools/validate.js.map +1 -1
- package/dist/src/utils/validation.d.ts +13 -0
- package/dist/src/utils/validation.d.ts.map +1 -1
- package/dist/src/utils/validation.js +27 -0
- package/dist/src/utils/validation.js.map +1 -1
- package/dist/tests/health.test.js +4 -4
- package/dist/tests/health.test.js.map +1 -1
- package/dist/tests/integration/recommend.integration.test.js +3 -0
- package/dist/tests/integration/recommend.integration.test.js.map +1 -1
- package/dist/tests/integration/setup.d.ts +4 -1
- package/dist/tests/integration/setup.d.ts.map +1 -1
- package/dist/tests/integration/setup.js +6 -1
- package/dist/tests/integration/setup.js.map +1 -1
- package/dist/tests/integration/validate.integration.test.js +4 -2
- package/dist/tests/integration/validate.integration.test.js.map +1 -1
- package/dist/tests/recommend.test.js +3 -0
- package/dist/tests/recommend.test.js.map +1 -1
- package/dist/tests/unit/skill-pack-audit.test.d.ts +8 -0
- package/dist/tests/unit/skill-pack-audit.test.d.ts.map +1 -0
- package/dist/tests/unit/skill-pack-audit.test.js +342 -0
- package/dist/tests/unit/skill-pack-audit.test.js.map +1 -0
- package/dist/tests/unit/validate-helpers.test.js +99 -2
- package/dist/tests/unit/validate-helpers.test.js.map +1 -1
- package/dist/tests/validate.test.js +4 -0
- package/dist/tests/validate.test.js.map +1 -1
- package/package.json +2 -2
- package/server.json +2 -2
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Skillsmith Optimization Layer for skill installation
|
|
3
|
+
* @module @skillsmith/mcp-server/tools/install.optimize
|
|
4
|
+
* @see SMI-1788: Apply Skillsmith Optimization Layer
|
|
5
|
+
* @see SMI-2741: Split from install.ts to meet 500-line standard
|
|
6
|
+
*
|
|
7
|
+
* Handles the optional Skillsmith optimization step during skill installation:
|
|
8
|
+
* - Decomposition via TransformationService
|
|
9
|
+
* - Sub-skill generation
|
|
10
|
+
* - Subagent companion generation
|
|
11
|
+
* - CLAUDE.md snippet generation
|
|
12
|
+
*/
|
|
13
|
+
import type { Database } from '@skillsmith/core';
|
|
14
|
+
import type { OptimizationInfo } from './install.types.js';
|
|
15
|
+
/**
|
|
16
|
+
* Result of applying the Skillsmith optimization layer
|
|
17
|
+
*/
|
|
18
|
+
export interface OptimizeResult {
|
|
19
|
+
/** Final (possibly transformed) SKILL.md content */
|
|
20
|
+
finalSkillContent: string;
|
|
21
|
+
/** Generated sub-skill files */
|
|
22
|
+
subSkillFiles: Array<{
|
|
23
|
+
filename: string;
|
|
24
|
+
content: string;
|
|
25
|
+
}>;
|
|
26
|
+
/** Generated subagent content (optional) */
|
|
27
|
+
subagentContent: string | undefined;
|
|
28
|
+
/** Generated CLAUDE.md snippet (optional) */
|
|
29
|
+
claudeMdSnippet: string | undefined;
|
|
30
|
+
/** Optimization metadata */
|
|
31
|
+
optimizationInfo: OptimizationInfo;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Apply Skillsmith Optimization Layer to a skill's content.
|
|
35
|
+
*
|
|
36
|
+
* SMI-1788: Runs the TransformationService to decompose and optimize the skill.
|
|
37
|
+
* Falls back to original content if transformation fails.
|
|
38
|
+
*
|
|
39
|
+
* @param skillId - Skill identifier for the transformation
|
|
40
|
+
* @param skillName - Extracted skill name
|
|
41
|
+
* @param skillMdContent - Raw SKILL.md content
|
|
42
|
+
* @param db - Database instance for caching
|
|
43
|
+
* @returns Optimization result with transformed content and metadata
|
|
44
|
+
*/
|
|
45
|
+
export declare function applySkillOptimization(skillId: string, skillName: string, skillMdContent: string, db: Database): Promise<OptimizeResult>;
|
|
46
|
+
//# sourceMappingURL=install.optimize.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"install.optimize.d.ts","sourceRoot":"","sources":["../../../src/tools/install.optimize.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAGH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAChD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AAE1D;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,oDAAoD;IACpD,iBAAiB,EAAE,MAAM,CAAA;IACzB,gCAAgC;IAChC,aAAa,EAAE,KAAK,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IAC3D,4CAA4C;IAC5C,eAAe,EAAE,MAAM,GAAG,SAAS,CAAA;IACnC,6CAA6C;IAC7C,eAAe,EAAE,MAAM,GAAG,SAAS,CAAA;IACnC,4BAA4B;IAC5B,gBAAgB,EAAE,gBAAgB,CAAA;CACnC;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,sBAAsB,CAC1C,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,cAAc,EAAE,MAAM,EACtB,EAAE,EAAE,QAAQ,GACX,OAAO,CAAC,cAAc,CAAC,CAgDzB"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Skillsmith Optimization Layer for skill installation
|
|
3
|
+
* @module @skillsmith/mcp-server/tools/install.optimize
|
|
4
|
+
* @see SMI-1788: Apply Skillsmith Optimization Layer
|
|
5
|
+
* @see SMI-2741: Split from install.ts to meet 500-line standard
|
|
6
|
+
*
|
|
7
|
+
* Handles the optional Skillsmith optimization step during skill installation:
|
|
8
|
+
* - Decomposition via TransformationService
|
|
9
|
+
* - Sub-skill generation
|
|
10
|
+
* - Subagent companion generation
|
|
11
|
+
* - CLAUDE.md snippet generation
|
|
12
|
+
*/
|
|
13
|
+
import { TransformationService } from '@skillsmith/core';
|
|
14
|
+
/**
|
|
15
|
+
* Apply Skillsmith Optimization Layer to a skill's content.
|
|
16
|
+
*
|
|
17
|
+
* SMI-1788: Runs the TransformationService to decompose and optimize the skill.
|
|
18
|
+
* Falls back to original content if transformation fails.
|
|
19
|
+
*
|
|
20
|
+
* @param skillId - Skill identifier for the transformation
|
|
21
|
+
* @param skillName - Extracted skill name
|
|
22
|
+
* @param skillMdContent - Raw SKILL.md content
|
|
23
|
+
* @param db - Database instance for caching
|
|
24
|
+
* @returns Optimization result with transformed content and metadata
|
|
25
|
+
*/
|
|
26
|
+
export async function applySkillOptimization(skillId, skillName, skillMdContent, db) {
|
|
27
|
+
try {
|
|
28
|
+
const transformService = new TransformationService(db, {
|
|
29
|
+
cacheTtl: 3600, // 1 hour cache
|
|
30
|
+
version: '1.0.0',
|
|
31
|
+
});
|
|
32
|
+
// Extract skill name and description for transformation
|
|
33
|
+
const nameMatch = skillMdContent.match(/^name:\s*(.+)$/m);
|
|
34
|
+
const descMatch = skillMdContent.match(/^description:\s*(.+)$/m);
|
|
35
|
+
const extractedName = nameMatch ? nameMatch[1].trim() : skillName;
|
|
36
|
+
const extractedDesc = descMatch ? descMatch[1].trim() : '';
|
|
37
|
+
const transformResult = await transformService.transform(skillId, extractedName, extractedDesc, skillMdContent);
|
|
38
|
+
if (transformResult.transformed) {
|
|
39
|
+
return {
|
|
40
|
+
finalSkillContent: transformResult.mainSkillContent,
|
|
41
|
+
subSkillFiles: transformResult.subSkills,
|
|
42
|
+
subagentContent: transformResult.subagent?.content,
|
|
43
|
+
claudeMdSnippet: transformResult.claudeMdSnippet,
|
|
44
|
+
optimizationInfo: {
|
|
45
|
+
optimized: true,
|
|
46
|
+
subSkills: transformResult.subSkills.map((s) => s.filename),
|
|
47
|
+
subagentGenerated: !!transformResult.subagent?.content,
|
|
48
|
+
tokenReductionPercent: transformResult.stats.tokenReductionPercent,
|
|
49
|
+
originalLines: transformResult.stats.originalLines,
|
|
50
|
+
optimizedLines: transformResult.stats.optimizedLines,
|
|
51
|
+
},
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
catch (transformError) {
|
|
56
|
+
// Transformation failed - continue with original content
|
|
57
|
+
console.warn('[install] Optimization failed, using original content:', transformError);
|
|
58
|
+
}
|
|
59
|
+
return {
|
|
60
|
+
finalSkillContent: skillMdContent,
|
|
61
|
+
subSkillFiles: [],
|
|
62
|
+
subagentContent: undefined,
|
|
63
|
+
claudeMdSnippet: undefined,
|
|
64
|
+
optimizationInfo: { optimized: false },
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=install.optimize.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"install.optimize.js","sourceRoot":"","sources":["../../../src/tools/install.optimize.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAA;AAoBxD;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,OAAe,EACf,SAAiB,EACjB,cAAsB,EACtB,EAAY;IAEZ,IAAI,CAAC;QACH,MAAM,gBAAgB,GAAG,IAAI,qBAAqB,CAAC,EAAE,EAAE;YACrD,QAAQ,EAAE,IAAI,EAAE,eAAe;YAC/B,OAAO,EAAE,OAAO;SACjB,CAAC,CAAA;QAEF,wDAAwD;QACxD,MAAM,SAAS,GAAG,cAAc,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAA;QACzD,MAAM,SAAS,GAAG,cAAc,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAA;QAChE,MAAM,aAAa,GAAG,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS,CAAA;QACjE,MAAM,aAAa,GAAG,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;QAE1D,MAAM,eAAe,GAAG,MAAM,gBAAgB,CAAC,SAAS,CACtD,OAAO,EACP,aAAa,EACb,aAAa,EACb,cAAc,CACf,CAAA;QAED,IAAI,eAAe,CAAC,WAAW,EAAE,CAAC;YAChC,OAAO;gBACL,iBAAiB,EAAE,eAAe,CAAC,gBAAgB;gBACnD,aAAa,EAAE,eAAe,CAAC,SAAS;gBACxC,eAAe,EAAE,eAAe,CAAC,QAAQ,EAAE,OAAO;gBAClD,eAAe,EAAE,eAAe,CAAC,eAAe;gBAChD,gBAAgB,EAAE;oBAChB,SAAS,EAAE,IAAI;oBACf,SAAS,EAAE,eAAe,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC;oBAC3D,iBAAiB,EAAE,CAAC,CAAC,eAAe,CAAC,QAAQ,EAAE,OAAO;oBACtD,qBAAqB,EAAE,eAAe,CAAC,KAAK,CAAC,qBAAqB;oBAClE,aAAa,EAAE,eAAe,CAAC,KAAK,CAAC,aAAa;oBAClD,cAAc,EAAE,eAAe,CAAC,KAAK,CAAC,cAAc;iBACrD;aACF,CAAA;QACH,CAAC;IACH,CAAC;IAAC,OAAO,cAAc,EAAE,CAAC;QACxB,yDAAyD;QACzD,OAAO,CAAC,IAAI,CAAC,wDAAwD,EAAE,cAAc,CAAC,CAAA;IACxF,CAAC;IAED,OAAO;QACL,iBAAiB,EAAE,cAAc;QACjC,aAAa,EAAE,EAAE;QACjB,eAAe,EAAE,SAAS;QAC1B,eAAe,EAAE,SAAS;QAC1B,gBAAgB,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE;KACvC,CAAA;AACH,CAAC"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview MCP Tool Definition for install_skill
|
|
3
|
+
* @module @skillsmith/mcp-server/tools/install.tool
|
|
4
|
+
* @see SMI-2741: Split from install.ts to meet 500-line standard
|
|
5
|
+
*
|
|
6
|
+
* The MCP tool schema definition for the install_skill tool, extracted
|
|
7
|
+
* from install.ts to keep that file within the 500-line limit.
|
|
8
|
+
*/
|
|
9
|
+
/**
|
|
10
|
+
* MCP tool definition for install_skill
|
|
11
|
+
*/
|
|
12
|
+
export declare const installTool: {
|
|
13
|
+
name: string;
|
|
14
|
+
description: string;
|
|
15
|
+
inputSchema: {
|
|
16
|
+
type: "object";
|
|
17
|
+
properties: {
|
|
18
|
+
skillId: {
|
|
19
|
+
type: string;
|
|
20
|
+
description: string;
|
|
21
|
+
};
|
|
22
|
+
force: {
|
|
23
|
+
type: string;
|
|
24
|
+
description: string;
|
|
25
|
+
};
|
|
26
|
+
skipScan: {
|
|
27
|
+
type: string;
|
|
28
|
+
description: string;
|
|
29
|
+
};
|
|
30
|
+
skipOptimize: {
|
|
31
|
+
type: string;
|
|
32
|
+
description: string;
|
|
33
|
+
};
|
|
34
|
+
conflictAction: {
|
|
35
|
+
type: string;
|
|
36
|
+
enum: string[];
|
|
37
|
+
description: string;
|
|
38
|
+
};
|
|
39
|
+
};
|
|
40
|
+
required: string[];
|
|
41
|
+
};
|
|
42
|
+
};
|
|
43
|
+
export default installTool;
|
|
44
|
+
//# sourceMappingURL=install.tool.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"install.tool.d.ts","sourceRoot":"","sources":["../../../src/tools/install.tool.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH;;GAEG;AACH,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgCvB,CAAA;AAED,eAAe,WAAW,CAAA"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview MCP Tool Definition for install_skill
|
|
3
|
+
* @module @skillsmith/mcp-server/tools/install.tool
|
|
4
|
+
* @see SMI-2741: Split from install.ts to meet 500-line standard
|
|
5
|
+
*
|
|
6
|
+
* The MCP tool schema definition for the install_skill tool, extracted
|
|
7
|
+
* from install.ts to keep that file within the 500-line limit.
|
|
8
|
+
*/
|
|
9
|
+
/**
|
|
10
|
+
* MCP tool definition for install_skill
|
|
11
|
+
*/
|
|
12
|
+
export const installTool = {
|
|
13
|
+
name: 'install_skill',
|
|
14
|
+
description: 'Install a Claude Code skill from GitHub. Performs security scan and Skillsmith optimization before installation.',
|
|
15
|
+
inputSchema: {
|
|
16
|
+
type: 'object',
|
|
17
|
+
properties: {
|
|
18
|
+
skillId: {
|
|
19
|
+
type: 'string',
|
|
20
|
+
description: 'Skill ID (owner/repo/skill) or GitHub URL',
|
|
21
|
+
},
|
|
22
|
+
force: {
|
|
23
|
+
type: 'boolean',
|
|
24
|
+
description: 'Force reinstall if skill already exists',
|
|
25
|
+
},
|
|
26
|
+
skipScan: {
|
|
27
|
+
type: 'boolean',
|
|
28
|
+
description: 'Skip security scan (not recommended)',
|
|
29
|
+
},
|
|
30
|
+
skipOptimize: {
|
|
31
|
+
type: 'boolean',
|
|
32
|
+
description: 'Skip Skillsmith optimization (decomposition, subagent generation)',
|
|
33
|
+
},
|
|
34
|
+
conflictAction: {
|
|
35
|
+
type: 'string',
|
|
36
|
+
enum: ['overwrite', 'merge', 'cancel'],
|
|
37
|
+
description: 'Action when local modifications detected: overwrite (backup + replace), merge (three-way), or cancel',
|
|
38
|
+
},
|
|
39
|
+
},
|
|
40
|
+
required: ['skillId'],
|
|
41
|
+
},
|
|
42
|
+
};
|
|
43
|
+
export default installTool;
|
|
44
|
+
//# sourceMappingURL=install.tool.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"install.tool.js","sourceRoot":"","sources":["../../../src/tools/install.tool.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH;;GAEG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,IAAI,EAAE,eAAe;IACrB,WAAW,EACT,kHAAkH;IACpH,WAAW,EAAE;QACX,IAAI,EAAE,QAAiB;QACvB,UAAU,EAAE;YACV,OAAO,EAAE;gBACP,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,2CAA2C;aACzD;YACD,KAAK,EAAE;gBACL,IAAI,EAAE,SAAS;gBACf,WAAW,EAAE,yCAAyC;aACvD;YACD,QAAQ,EAAE;gBACR,IAAI,EAAE,SAAS;gBACf,WAAW,EAAE,sCAAsC;aACpD;YACD,YAAY,EAAE;gBACZ,IAAI,EAAE,SAAS;gBACf,WAAW,EAAE,mEAAmE;aACjF;YACD,cAAc,EAAE;gBACd,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,CAAC,WAAW,EAAE,OAAO,EAAE,QAAQ,CAAC;gBACtC,WAAW,EACT,sGAAsG;aACzG;SACF;QACD,QAAQ,EAAE,CAAC,SAAS,CAAC;KACtB;CACF,CAAA;AAED,eAAe,WAAW,CAAA"}
|
|
@@ -83,8 +83,8 @@ export declare const installInputSchema: z.ZodObject<{
|
|
|
83
83
|
/** SMI-1864: Action to take when a conflict is detected during update */
|
|
84
84
|
conflictAction: z.ZodOptional<z.ZodEnum<["overwrite", "merge", "cancel"]>>;
|
|
85
85
|
}, "strip", z.ZodTypeAny, {
|
|
86
|
-
skillId: string;
|
|
87
86
|
force: boolean;
|
|
87
|
+
skillId: string;
|
|
88
88
|
skipScan: boolean;
|
|
89
89
|
skipOptimize: boolean;
|
|
90
90
|
conflictAction?: "overwrite" | "merge" | "cancel" | undefined;
|
|
@@ -116,6 +116,8 @@ export interface InstallResult {
|
|
|
116
116
|
requiresAction?: ConflictAction[];
|
|
117
117
|
/** SMI-1895: Path to backup file created during conflict resolution */
|
|
118
118
|
backupPath?: string;
|
|
119
|
+
/** SMI-3137: Dependency intelligence extracted during install */
|
|
120
|
+
depIntel?: import('./install.dep-helpers.js').DepIntelResult;
|
|
119
121
|
}
|
|
120
122
|
/** Optimization info included in install result */
|
|
121
123
|
export interface OptimizationInfo {
|
|
@@ -145,11 +147,22 @@ export interface SkillManifestEntry {
|
|
|
145
147
|
name: string;
|
|
146
148
|
version: string;
|
|
147
149
|
source: string;
|
|
150
|
+
/**
|
|
151
|
+
* Absolute path where the skill is installed.
|
|
152
|
+
* Required by type, but runtime JSON may omit it — consumers must guard.
|
|
153
|
+
* @see SMI-3177
|
|
154
|
+
*/
|
|
148
155
|
installPath: string;
|
|
149
156
|
installedAt: string;
|
|
150
157
|
lastUpdated: string;
|
|
151
158
|
/** SMI-1864: SHA-256 hash of SKILL.md at install time for modification detection */
|
|
152
159
|
originalContentHash?: string;
|
|
160
|
+
/** SMI-skill-version-tracking Wave 1: SHA-256 hash of the content at last update */
|
|
161
|
+
contentHash?: string;
|
|
162
|
+
/** SMI-skill-version-tracking Wave 1: Pinned semver (Wave 2: update policy enforcement) */
|
|
163
|
+
pinnedVersion?: string;
|
|
164
|
+
/** SMI-skill-version-tracking Wave 1: How updates are handled (Wave 2: enforcement) */
|
|
165
|
+
updatePolicy?: 'auto' | 'manual' | 'never';
|
|
153
166
|
}
|
|
154
167
|
export interface SkillManifest {
|
|
155
168
|
version: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"install.types.d.ts","sourceRoot":"","sources":["../../../src/tools/install.types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AAClE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAQjD;;;GAGG;AACH,eAAO,MAAM,iBAAiB,EAAE,SAAS,SAAS,EAOjD,CAAA;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,SAAS,CAc7E;AAMD;;;;;;;;;GASG;AACH,eAAO,MAAM,0BAA0B,EAAE,MAAM,CAAC,SAAS,EAAE,cAAc,CA+BxE,CAAA;AAMD;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG,WAAW,GAAG,OAAO,GAAG,QAAQ,CAAA;AAE7D;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,mEAAmE;IACnE,qBAAqB,EAAE,OAAO,CAAA;IAC9B,gDAAgD;IAChD,SAAS,EAAE,MAAM,CAAA;IACjB,iDAAiD;IACjD,YAAY,EAAE,MAAM,CAAA;IACpB,2DAA2D;IAC3D,YAAY,EAAE,MAAM,CAAA;IACpB,4CAA4C;IAC5C,aAAa,EAAE,MAAM,EAAE,CAAA;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,4CAA4C;IAC5C,UAAU,EAAE,MAAM,CAAA;IAClB,oCAAoC;IACpC,KAAK,EAAE,MAAM,CAAA;IACb,qCAAqC;IACrC,QAAQ,EAAE,MAAM,CAAA;IAChB,kDAAkD;IAClD,IAAI,EAAE,MAAM,CAAA;CACb;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,yDAAyD;IACzD,OAAO,EAAE,OAAO,CAAA;IAChB,uCAAuC;IACvC,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,uDAAuD;IACvD,SAAS,CAAC,EAAE,aAAa,EAAE,CAAA;CAC5B;AAMD,oCAAoC;AACpC,eAAO,MAAM,kBAAkB;;;;IAI7B,iDAAiD;;IAEjD,yEAAyE;;;;;;;;;;;;;;EAKzE,CAAA;AAEF,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAA;AAE7D,mCAAmC;AACnC,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,OAAO,CAAA;IAChB,OAAO,EAAE,MAAM,CAAA;IACf,WAAW,EAAE,MAAM,CAAA;IACnB,cAAc,CAAC,EAAE,UAAU,CAAA;IAC3B,IAAI,CAAC,EAAE,MAAM,EAAE,CAAA;IACf,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,sDAAsD;IACtD,SAAS,CAAC,EAAE,SAAS,CAAA;IACrB,kEAAkE;IAClE,YAAY,CAAC,EAAE,gBAAgB,CAAA;IAC/B,qEAAqE;IACrE,QAAQ,CAAC,EAAE,YAAY,CAAA;IACvB,wEAAwE;IACxE,WAAW,CAAC,EAAE,WAAW,CAAA;IACzB,yEAAyE;IACzE,cAAc,CAAC,EAAE,cAAc,EAAE,CAAA;IACjC,uEAAuE;IACvE,UAAU,CAAC,EAAE,MAAM,CAAA;
|
|
1
|
+
{"version":3,"file":"install.types.d.ts","sourceRoot":"","sources":["../../../src/tools/install.types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"install.types.js","sourceRoot":"","sources":["../../../src/tools/install.types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAGvB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAA;AAC5B,OAAO,KAAK,EAAE,MAAM,IAAI,CAAA;AAExB,+EAA+E;AAC/E,wBAAwB;AACxB,+EAA+E;AAE/E;;;GAGG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAyB;IACrD,UAAU;IACV,SAAS;IACT,WAAW;IACX,OAAO;IACP,cAAc;IACd,SAAS;CACV,CAAA;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,iBAAiB,CAAC,KAAgC;IAChE,IAAI,CAAC,KAAK;QAAE,OAAO,SAAS,CAAA;IAC5B,MAAM,UAAU,GAAG,KAAK,CAAC,WAAW,EAAe,CAAA;IACnD,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,UAAU,CAAC;QAAE,OAAO,SAAS,CAAA;IAE7D,qEAAqE;IACrE,IAAI,UAAU,KAAK,UAAU,EAAE,CAAC;QAC9B,OAAO,CAAC,KAAK,CACX,0DAA0D;YACxD,iEAAiE,CACpE,CAAA;IACH,CAAC;IAED,OAAO,UAAU,CAAA;AACnB,CAAC;AAED,+EAA+E;AAC/E,wBAAwB;AACxB,+EAA+E;AAE/E;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAsC;IAC3E,QAAQ,EAAE;QACR,iDAAiD;QACjD,aAAa,EAAE,EAAE,EAAE,mCAAmC;QACtD,gBAAgB,EAAE,SAAS,EAAE,sBAAsB;KACpD;IACD,OAAO,EAAE;QACP,sEAAsE;QACtE,aAAa,EAAE,EAAE,EAAE,kCAAkC;QACrD,gBAAgB,EAAE,SAAS,EAAE,kCAAkC;KAChE;IACD,SAAS,EAAE;QACT,kDAAkD;QAClD,aAAa,EAAE,EAAE,EAAE,oBAAoB;QACvC,gBAAgB,EAAE,SAAS;KAC5B;IACD,KAAK,EAAE;QACL,2DAA2D;QAC3D,aAAa,EAAE,GAAG,EAAE,qCAAqC;QACzD,gBAAgB,EAAE,UAAU,EAAE,iCAAiC;KAChE;IACD,YAAY,EAAE;QACZ,0CAA0C;QAC1C,aAAa,EAAE,EAAE,EAAE,kCAAkC;QACrD,gBAAgB,EAAE,OAAO,EAAE,mBAAmB;KAC/C;IACD,OAAO,EAAE;QACP,+CAA+C;QAC/C,aAAa,EAAE,EAAE,EAAE,cAAc;QACjC,gBAAgB,EAAE,OAAO,EAAE,oBAAoB;KAChD;CACF,CAAA;AAqDD,+EAA+E;AAC/E,uBAAuB;AACvB,+EAA+E;AAE/E,oCAAoC;AACpC,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IACzC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,wBAAwB,CAAC;IAC7D,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,2BAA2B,CAAC;IACvE,QAAQ,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,sCAAsC,CAAC;IACrF,iDAAiD;IACjD,YAAY,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,8BAA8B,CAAC;IACjF,yEAAyE;IACzE,cAAc,EAAE,CAAC;SACd,IAAI,CAAC,CAAC,WAAW,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;SACtC,QAAQ,EAAE;SACV,QAAQ,CAAC,uEAAuE,CAAC;CACrF,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"install.types.js","sourceRoot":"","sources":["../../../src/tools/install.types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview skill_outdated MCP tool — check installed skills for updates and dependency status
|
|
3
|
+
* @module @skillsmith/mcp-server/tools/outdated
|
|
4
|
+
* @see SMI-3138: Wave 5 — Dependency intelligence outdated tool
|
|
5
|
+
*
|
|
6
|
+
* Reads the local manifest (~/.skillsmith/manifest.json), hashes each installed
|
|
7
|
+
* SKILL.md, and compares against the latest content hash in skill_versions.
|
|
8
|
+
* Optionally includes dependency satisfaction status from skill_dependencies.
|
|
9
|
+
*
|
|
10
|
+
* Tier gate: Community (null feature flag — no license required).
|
|
11
|
+
*
|
|
12
|
+
* Hash display: truncated to 8 chars for human readability (full hash stored).
|
|
13
|
+
*/
|
|
14
|
+
import { z } from 'zod';
|
|
15
|
+
import type { ToolContext } from '../context.js';
|
|
16
|
+
/**
|
|
17
|
+
* Input schema for skill_outdated tool
|
|
18
|
+
*/
|
|
19
|
+
export declare const outdatedInputSchema: z.ZodObject<{
|
|
20
|
+
/** Include dependency satisfaction status in results (default: true) */
|
|
21
|
+
include_deps: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
|
|
22
|
+
}, "strip", z.ZodTypeAny, {
|
|
23
|
+
include_deps: boolean;
|
|
24
|
+
}, {
|
|
25
|
+
include_deps?: boolean | undefined;
|
|
26
|
+
}>;
|
|
27
|
+
export type OutdatedInput = z.infer<typeof outdatedInputSchema>;
|
|
28
|
+
/**
|
|
29
|
+
* Dependency satisfaction details for a single skill
|
|
30
|
+
*/
|
|
31
|
+
export interface DependencyStatus {
|
|
32
|
+
total: number;
|
|
33
|
+
satisfied: string[];
|
|
34
|
+
missing: string[];
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Per-skill outdated information returned by the tool
|
|
38
|
+
*/
|
|
39
|
+
export interface OutdatedSkillInfo {
|
|
40
|
+
/** Registry skill identifier (e.g. "author/skill-name") */
|
|
41
|
+
id: string;
|
|
42
|
+
/** 8-char prefix of the locally-installed content hash */
|
|
43
|
+
installed_hash: string;
|
|
44
|
+
/** 8-char prefix of the latest registry hash */
|
|
45
|
+
latest_hash: string;
|
|
46
|
+
/** Status of the skill: current, outdated, or unknown (no registry data) */
|
|
47
|
+
status: 'current' | 'outdated' | 'unknown';
|
|
48
|
+
/** Semver from the latest version record, if available */
|
|
49
|
+
semver: string | null;
|
|
50
|
+
/** Dependency satisfaction details (omitted when include_deps is false) */
|
|
51
|
+
dependencies?: DependencyStatus;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Summary counts for the outdated check
|
|
55
|
+
*/
|
|
56
|
+
export interface OutdatedSummary {
|
|
57
|
+
total_installed: number;
|
|
58
|
+
outdated: number;
|
|
59
|
+
up_to_date: number;
|
|
60
|
+
unknown: number;
|
|
61
|
+
missing_deps: number;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Response from skill_outdated tool
|
|
65
|
+
*/
|
|
66
|
+
export interface OutdatedResponse {
|
|
67
|
+
skills: OutdatedSkillInfo[];
|
|
68
|
+
summary: OutdatedSummary;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* MCP tool definition for skill_outdated
|
|
72
|
+
*/
|
|
73
|
+
export declare const outdatedToolSchema: {
|
|
74
|
+
name: "skill_outdated";
|
|
75
|
+
description: string;
|
|
76
|
+
inputSchema: {
|
|
77
|
+
type: "object";
|
|
78
|
+
properties: {
|
|
79
|
+
include_deps: {
|
|
80
|
+
type: string;
|
|
81
|
+
description: string;
|
|
82
|
+
};
|
|
83
|
+
};
|
|
84
|
+
required: never[];
|
|
85
|
+
};
|
|
86
|
+
};
|
|
87
|
+
/**
|
|
88
|
+
* Execute the skill_outdated tool.
|
|
89
|
+
*
|
|
90
|
+
* 1. Reads the manifest. If missing/empty, returns an empty result.
|
|
91
|
+
* 2. For each installed skill, hashes the local SKILL.md and compares
|
|
92
|
+
* against the latest entry in skill_versions.
|
|
93
|
+
* 3. If include_deps is true, queries skill_dependencies for each skill
|
|
94
|
+
* and checks whether skill-type deps are installed.
|
|
95
|
+
*
|
|
96
|
+
* @param input Validated tool input
|
|
97
|
+
* @param context Tool context with database connection
|
|
98
|
+
* @returns OutdatedResponse with per-skill status and summary
|
|
99
|
+
*/
|
|
100
|
+
export declare function executeOutdated(input: OutdatedInput, context: ToolContext): Promise<OutdatedResponse>;
|
|
101
|
+
//# sourceMappingURL=outdated.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"outdated.d.ts","sourceRoot":"","sources":["../../../src/tools/outdated.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAKvB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAShD;;GAEG;AACH,eAAO,MAAM,mBAAmB;IAC9B,wEAAwE;;;;;;EAMxE,CAAA;AAEF,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAA;AAE/D;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAA;IACb,SAAS,EAAE,MAAM,EAAE,CAAA;IACnB,OAAO,EAAE,MAAM,EAAE,CAAA;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,2DAA2D;IAC3D,EAAE,EAAE,MAAM,CAAA;IACV,0DAA0D;IAC1D,cAAc,EAAE,MAAM,CAAA;IACtB,gDAAgD;IAChD,WAAW,EAAE,MAAM,CAAA;IACnB,4EAA4E;IAC5E,MAAM,EAAE,SAAS,GAAG,UAAU,GAAG,SAAS,CAAA;IAC1C,0DAA0D;IAC1D,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;IACrB,2EAA2E;IAC3E,YAAY,CAAC,EAAE,gBAAgB,CAAA;CAChC;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,eAAe,EAAE,MAAM,CAAA;IACvB,QAAQ,EAAE,MAAM,CAAA;IAChB,UAAU,EAAE,MAAM,CAAA;IAClB,OAAO,EAAE,MAAM,CAAA;IACf,YAAY,EAAE,MAAM,CAAA;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,iBAAiB,EAAE,CAAA;IAC3B,OAAO,EAAE,eAAe,CAAA;CACzB;AAMD;;GAEG;AACH,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;CAgB9B,CAAA;AA0DD;;;;;;;;;;;;GAYG;AACH,wBAAsB,eAAe,CACnC,KAAK,EAAE,aAAa,EACpB,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC,gBAAgB,CAAC,CA8G3B"}
|
|
@@ -0,0 +1,214 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview skill_outdated MCP tool — check installed skills for updates and dependency status
|
|
3
|
+
* @module @skillsmith/mcp-server/tools/outdated
|
|
4
|
+
* @see SMI-3138: Wave 5 — Dependency intelligence outdated tool
|
|
5
|
+
*
|
|
6
|
+
* Reads the local manifest (~/.skillsmith/manifest.json), hashes each installed
|
|
7
|
+
* SKILL.md, and compares against the latest content hash in skill_versions.
|
|
8
|
+
* Optionally includes dependency satisfaction status from skill_dependencies.
|
|
9
|
+
*
|
|
10
|
+
* Tier gate: Community (null feature flag — no license required).
|
|
11
|
+
*
|
|
12
|
+
* Hash display: truncated to 8 chars for human readability (full hash stored).
|
|
13
|
+
*/
|
|
14
|
+
import { z } from 'zod';
|
|
15
|
+
import { promises as fs } from 'fs';
|
|
16
|
+
import * as path from 'path';
|
|
17
|
+
import { SkillVersionRepository } from '@skillsmith/core';
|
|
18
|
+
import { hashContent } from './install.conflict-helpers.js';
|
|
19
|
+
import { loadManifest } from './install.helpers.js';
|
|
20
|
+
// ============================================================================
|
|
21
|
+
// Input / Output types
|
|
22
|
+
// ============================================================================
|
|
23
|
+
/**
|
|
24
|
+
* Input schema for skill_outdated tool
|
|
25
|
+
*/
|
|
26
|
+
export const outdatedInputSchema = z.object({
|
|
27
|
+
/** Include dependency satisfaction status in results (default: true) */
|
|
28
|
+
include_deps: z
|
|
29
|
+
.boolean()
|
|
30
|
+
.optional()
|
|
31
|
+
.default(true)
|
|
32
|
+
.describe('Include dependency satisfaction status (default: true)'),
|
|
33
|
+
});
|
|
34
|
+
// ============================================================================
|
|
35
|
+
// Tool schema (MCP tool definition)
|
|
36
|
+
// ============================================================================
|
|
37
|
+
/**
|
|
38
|
+
* MCP tool definition for skill_outdated
|
|
39
|
+
*/
|
|
40
|
+
export const outdatedToolSchema = {
|
|
41
|
+
name: 'skill_outdated',
|
|
42
|
+
description: 'Check installed skills for available updates and dependency satisfaction status. ' +
|
|
43
|
+
'Reads the local manifest, hashes each installed SKILL.md, and compares against the ' +
|
|
44
|
+
'latest registry state. Community tier — no license required.',
|
|
45
|
+
inputSchema: {
|
|
46
|
+
type: 'object',
|
|
47
|
+
properties: {
|
|
48
|
+
include_deps: {
|
|
49
|
+
type: 'boolean',
|
|
50
|
+
description: 'Include dependency satisfaction status (default: true)',
|
|
51
|
+
},
|
|
52
|
+
},
|
|
53
|
+
required: [],
|
|
54
|
+
},
|
|
55
|
+
};
|
|
56
|
+
// ============================================================================
|
|
57
|
+
// Helpers
|
|
58
|
+
// ============================================================================
|
|
59
|
+
/**
|
|
60
|
+
* Read and hash the installed SKILL.md content.
|
|
61
|
+
* Returns null if the file cannot be read.
|
|
62
|
+
*/
|
|
63
|
+
async function readInstalledHash(installPath) {
|
|
64
|
+
const skillMdPath = path.join(installPath, 'SKILL.md');
|
|
65
|
+
try {
|
|
66
|
+
const content = await fs.readFile(skillMdPath, 'utf-8');
|
|
67
|
+
return hashContent(content);
|
|
68
|
+
}
|
|
69
|
+
catch {
|
|
70
|
+
return null;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Check dependency satisfaction for a skill.
|
|
75
|
+
* - skill_hard / skill_soft / skill_peer: satisfied if dep_target is in installedSkillIds
|
|
76
|
+
* - mcp_server / model_minimum / other: marked satisfied (best-effort, can't verify)
|
|
77
|
+
*/
|
|
78
|
+
function checkDependencies(deps, installedSkillIds) {
|
|
79
|
+
const satisfied = [];
|
|
80
|
+
const missing = [];
|
|
81
|
+
for (const dep of deps) {
|
|
82
|
+
const label = `${dep.dep_type}:${dep.dep_target}`;
|
|
83
|
+
if (dep.dep_type === 'skill_hard' ||
|
|
84
|
+
dep.dep_type === 'skill_soft' ||
|
|
85
|
+
dep.dep_type === 'skill_peer') {
|
|
86
|
+
if (installedSkillIds.has(dep.dep_target)) {
|
|
87
|
+
satisfied.push(label);
|
|
88
|
+
}
|
|
89
|
+
else {
|
|
90
|
+
missing.push(label);
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
else {
|
|
94
|
+
// mcp_server, model_minimum, etc. — can't reliably verify, mark satisfied
|
|
95
|
+
satisfied.push(label);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
return { total: deps.length, satisfied, missing };
|
|
99
|
+
}
|
|
100
|
+
// ============================================================================
|
|
101
|
+
// Execution
|
|
102
|
+
// ============================================================================
|
|
103
|
+
/**
|
|
104
|
+
* Execute the skill_outdated tool.
|
|
105
|
+
*
|
|
106
|
+
* 1. Reads the manifest. If missing/empty, returns an empty result.
|
|
107
|
+
* 2. For each installed skill, hashes the local SKILL.md and compares
|
|
108
|
+
* against the latest entry in skill_versions.
|
|
109
|
+
* 3. If include_deps is true, queries skill_dependencies for each skill
|
|
110
|
+
* and checks whether skill-type deps are installed.
|
|
111
|
+
*
|
|
112
|
+
* @param input Validated tool input
|
|
113
|
+
* @param context Tool context with database connection
|
|
114
|
+
* @returns OutdatedResponse with per-skill status and summary
|
|
115
|
+
*/
|
|
116
|
+
export async function executeOutdated(input, context) {
|
|
117
|
+
const manifest = await loadManifest();
|
|
118
|
+
const entries = Object.values(manifest.installedSkills);
|
|
119
|
+
if (entries.length === 0) {
|
|
120
|
+
return {
|
|
121
|
+
skills: [],
|
|
122
|
+
summary: {
|
|
123
|
+
total_installed: 0,
|
|
124
|
+
outdated: 0,
|
|
125
|
+
up_to_date: 0,
|
|
126
|
+
unknown: 0,
|
|
127
|
+
missing_deps: 0,
|
|
128
|
+
},
|
|
129
|
+
};
|
|
130
|
+
}
|
|
131
|
+
const versionRepo = new SkillVersionRepository(context.db);
|
|
132
|
+
const depRepo = context.skillDependencyRepository;
|
|
133
|
+
// Build set of installed skill IDs for dependency checking — filter out corrupt entries
|
|
134
|
+
const installedSkillIds = new Set(entries.filter((e) => e.id).map((e) => e.id));
|
|
135
|
+
const skills = [];
|
|
136
|
+
let outdatedCount = 0;
|
|
137
|
+
let upToDateCount = 0;
|
|
138
|
+
let unknownCount = 0;
|
|
139
|
+
let missingDepsCount = 0;
|
|
140
|
+
for (const entry of entries) {
|
|
141
|
+
// SMI-3177: Skip corrupt manifest entries with missing installPath
|
|
142
|
+
if (!entry.installPath) {
|
|
143
|
+
console.warn(`[skill_outdated] Skipping corrupt manifest entry (missing installPath): ${entry.id ?? 'unknown'}`);
|
|
144
|
+
skills.push({
|
|
145
|
+
id: entry.id ?? 'unknown',
|
|
146
|
+
installed_hash: '--------',
|
|
147
|
+
latest_hash: '--------',
|
|
148
|
+
status: 'unknown',
|
|
149
|
+
semver: null,
|
|
150
|
+
...(input.include_deps ? { dependencies: { total: 0, satisfied: [], missing: [] } } : {}),
|
|
151
|
+
});
|
|
152
|
+
unknownCount++;
|
|
153
|
+
continue;
|
|
154
|
+
}
|
|
155
|
+
// Hash the currently installed SKILL.md
|
|
156
|
+
const localHash = await readInstalledHash(entry.installPath);
|
|
157
|
+
// Get latest version from registry cache
|
|
158
|
+
const history = await versionRepo.getVersionHistory(entry.id, 1);
|
|
159
|
+
let status;
|
|
160
|
+
let latestHash;
|
|
161
|
+
let semver = null;
|
|
162
|
+
if (history.length === 0 || localHash === null) {
|
|
163
|
+
status = 'unknown';
|
|
164
|
+
latestHash = localHash?.slice(0, 8) ?? '--------';
|
|
165
|
+
unknownCount++;
|
|
166
|
+
}
|
|
167
|
+
else {
|
|
168
|
+
const latest = history[0];
|
|
169
|
+
semver = latest.semver;
|
|
170
|
+
latestHash = latest.content_hash.slice(0, 8);
|
|
171
|
+
if (localHash === latest.content_hash) {
|
|
172
|
+
status = 'current';
|
|
173
|
+
upToDateCount++;
|
|
174
|
+
}
|
|
175
|
+
else {
|
|
176
|
+
status = 'outdated';
|
|
177
|
+
outdatedCount++;
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
const skillInfo = {
|
|
181
|
+
id: entry.id,
|
|
182
|
+
installed_hash: localHash?.slice(0, 8) ?? '--------',
|
|
183
|
+
latest_hash: latestHash,
|
|
184
|
+
status,
|
|
185
|
+
semver,
|
|
186
|
+
};
|
|
187
|
+
// Dependency satisfaction
|
|
188
|
+
if (input.include_deps) {
|
|
189
|
+
const deps = depRepo.getDependencies(entry.id);
|
|
190
|
+
if (deps.length > 0) {
|
|
191
|
+
const depStatus = checkDependencies(deps, installedSkillIds);
|
|
192
|
+
skillInfo.dependencies = depStatus;
|
|
193
|
+
if (depStatus.missing.length > 0) {
|
|
194
|
+
missingDepsCount++;
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
else {
|
|
198
|
+
skillInfo.dependencies = { total: 0, satisfied: [], missing: [] };
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
skills.push(skillInfo);
|
|
202
|
+
}
|
|
203
|
+
return {
|
|
204
|
+
skills,
|
|
205
|
+
summary: {
|
|
206
|
+
total_installed: entries.length,
|
|
207
|
+
outdated: outdatedCount,
|
|
208
|
+
up_to_date: upToDateCount,
|
|
209
|
+
unknown: unknownCount,
|
|
210
|
+
missing_deps: missingDepsCount,
|
|
211
|
+
},
|
|
212
|
+
};
|
|
213
|
+
}
|
|
214
|
+
//# sourceMappingURL=outdated.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"outdated.js","sourceRoot":"","sources":["../../../src/tools/outdated.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"outdated.test.d.ts","sourceRoot":"","sources":["../../../src/tools/outdated.test.ts"],"names":[],"mappings":"AAAA;;;GAGG"}
|