@skillsmith/cli 0.4.3 → 0.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (117) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/src/commands/audit.d.ts +19 -0
  3. package/dist/src/commands/audit.d.ts.map +1 -0
  4. package/dist/src/commands/audit.js +134 -0
  5. package/dist/src/commands/audit.js.map +1 -0
  6. package/dist/src/commands/audit.test.d.ts +8 -0
  7. package/dist/src/commands/audit.test.d.ts.map +1 -0
  8. package/dist/src/commands/audit.test.js +97 -0
  9. package/dist/src/commands/audit.test.js.map +1 -0
  10. package/dist/src/commands/author/init.d.ts.map +1 -1
  11. package/dist/src/commands/author/init.js +4 -9
  12. package/dist/src/commands/author/init.js.map +1 -1
  13. package/dist/src/commands/create.d.ts +42 -0
  14. package/dist/src/commands/create.d.ts.map +1 -0
  15. package/dist/src/commands/create.js +325 -0
  16. package/dist/src/commands/create.js.map +1 -0
  17. package/dist/src/commands/diff.d.ts +17 -0
  18. package/dist/src/commands/diff.d.ts.map +1 -0
  19. package/dist/src/commands/diff.js +191 -0
  20. package/dist/src/commands/diff.js.map +1 -0
  21. package/dist/src/commands/diff.test.d.ts +6 -0
  22. package/dist/src/commands/diff.test.d.ts.map +1 -0
  23. package/dist/src/commands/diff.test.js +275 -0
  24. package/dist/src/commands/diff.test.js.map +1 -0
  25. package/dist/src/commands/index.d.ts +5 -0
  26. package/dist/src/commands/index.d.ts.map +1 -1
  27. package/dist/src/commands/index.js +10 -1
  28. package/dist/src/commands/index.js.map +1 -1
  29. package/dist/src/commands/install-skill.d.ts.map +1 -1
  30. package/dist/src/commands/install-skill.js +10 -3
  31. package/dist/src/commands/install-skill.js.map +1 -1
  32. package/dist/src/commands/install.d.ts +13 -0
  33. package/dist/src/commands/install.d.ts.map +1 -0
  34. package/dist/src/commands/install.js +213 -0
  35. package/dist/src/commands/install.js.map +1 -0
  36. package/dist/src/commands/manage.d.ts.map +1 -1
  37. package/dist/src/commands/manage.js +71 -27
  38. package/dist/src/commands/manage.js.map +1 -1
  39. package/dist/src/commands/pin.d.ts +24 -0
  40. package/dist/src/commands/pin.d.ts.map +1 -0
  41. package/dist/src/commands/pin.js +123 -0
  42. package/dist/src/commands/pin.js.map +1 -0
  43. package/dist/src/commands/pin.test.d.ts +6 -0
  44. package/dist/src/commands/pin.test.d.ts.map +1 -0
  45. package/dist/src/commands/pin.test.js +206 -0
  46. package/dist/src/commands/pin.test.js.map +1 -0
  47. package/dist/src/commands/search.d.ts.map +1 -1
  48. package/dist/src/commands/search.js +43 -3
  49. package/dist/src/commands/search.js.map +1 -1
  50. package/dist/src/commands/sync.d.ts.map +1 -1
  51. package/dist/src/commands/sync.js +3 -2
  52. package/dist/src/commands/sync.js.map +1 -1
  53. package/dist/src/index.d.ts +2 -1
  54. package/dist/src/index.d.ts.map +1 -1
  55. package/dist/src/index.js +16 -3
  56. package/dist/src/index.js.map +1 -1
  57. package/dist/src/templates/changelog.md.template.d.ts +8 -0
  58. package/dist/src/templates/changelog.md.template.d.ts.map +1 -0
  59. package/dist/src/templates/changelog.md.template.js +19 -0
  60. package/dist/src/templates/changelog.md.template.js.map +1 -0
  61. package/dist/src/templates/index.d.ts +1 -0
  62. package/dist/src/templates/index.d.ts.map +1 -1
  63. package/dist/src/templates/index.js +1 -0
  64. package/dist/src/templates/index.js.map +1 -1
  65. package/dist/src/templates/readme.md.template.d.ts +1 -1
  66. package/dist/src/templates/readme.md.template.d.ts.map +1 -1
  67. package/dist/src/templates/readme.md.template.js +1 -1
  68. package/dist/src/templates/skill.md.template.d.ts +1 -1
  69. package/dist/src/templates/skill.md.template.d.ts.map +1 -1
  70. package/dist/src/templates/skill.md.template.js +2 -4
  71. package/dist/src/templates/skill.md.template.js.map +1 -1
  72. package/dist/src/utils/license-validation.js +1 -1
  73. package/dist/src/utils/license-validation.js.map +1 -1
  74. package/dist/src/utils/manifest.d.ts +46 -0
  75. package/dist/src/utils/manifest.d.ts.map +1 -0
  76. package/dist/src/utils/manifest.js +55 -0
  77. package/dist/src/utils/manifest.js.map +1 -0
  78. package/dist/src/utils/skill-name.d.ts +19 -0
  79. package/dist/src/utils/skill-name.d.ts.map +1 -0
  80. package/dist/src/utils/skill-name.js +26 -0
  81. package/dist/src/utils/skill-name.js.map +1 -0
  82. package/dist/src/utils/skills-directory.d.ts +12 -3
  83. package/dist/src/utils/skills-directory.d.ts.map +1 -1
  84. package/dist/src/utils/skills-directory.js +63 -7
  85. package/dist/src/utils/skills-directory.js.map +1 -1
  86. package/dist/tests/create.test.d.ts +5 -0
  87. package/dist/tests/create.test.d.ts.map +1 -0
  88. package/dist/tests/create.test.js +449 -0
  89. package/dist/tests/create.test.js.map +1 -0
  90. package/dist/tests/install-skill.test.js +9 -4
  91. package/dist/tests/install-skill.test.js.map +1 -1
  92. package/dist/tests/license-validation.test.d.ts +8 -0
  93. package/dist/tests/license-validation.test.d.ts.map +1 -0
  94. package/dist/tests/license-validation.test.js +186 -0
  95. package/dist/tests/license-validation.test.js.map +1 -0
  96. package/dist/tests/manage.test.js +84 -0
  97. package/dist/tests/manage.test.js.map +1 -1
  98. package/dist/tests/recommend-helpers.test.d.ts +9 -0
  99. package/dist/tests/recommend-helpers.test.d.ts.map +1 -0
  100. package/dist/tests/recommend-helpers.test.js +308 -0
  101. package/dist/tests/recommend-helpers.test.js.map +1 -0
  102. package/dist/tests/recommend-scoring.test.d.ts +8 -0
  103. package/dist/tests/recommend-scoring.test.d.ts.map +1 -0
  104. package/dist/tests/recommend-scoring.test.js +184 -0
  105. package/dist/tests/recommend-scoring.test.js.map +1 -0
  106. package/dist/tests/tool-analyzer.test.d.ts +8 -0
  107. package/dist/tests/tool-analyzer.test.d.ts.map +1 -0
  108. package/dist/tests/tool-analyzer.test.js +149 -0
  109. package/dist/tests/tool-analyzer.test.js.map +1 -0
  110. package/dist/tests/unit/commands/install.test.d.ts +7 -0
  111. package/dist/tests/unit/commands/install.test.d.ts.map +1 -0
  112. package/dist/tests/unit/commands/install.test.js +407 -0
  113. package/dist/tests/unit/commands/install.test.js.map +1 -0
  114. package/dist/vitest.config.d.ts.map +1 -1
  115. package/dist/vitest.config.js +9 -3
  116. package/dist/vitest.config.js.map +1 -1
  117. package/package.json +4 -3
@@ -1 +1 @@
1
- {"version":3,"file":"manage.d.ts","sourceRoot":"","sources":["../../../src/commands/manage.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AASnC,OAAO,EAAE,kBAAkB,EAAE,KAAK,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAsBtF;;GAEG;AACH,iBAAS,kBAAkB,CAAC,MAAM,EAAE,cAAc,EAAE,GAAG,IAAI,CAoC1D;AAkLD;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,OAAO,CAa3C;AAED;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,OAAO,CAuB7C;AAED;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,OAAO,CAkB7C;AAED,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,CAAA"}
1
+ {"version":3,"file":"manage.d.ts","sourceRoot":"","sources":["../../../src/commands/manage.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAkBnC,OAAO,EAAE,kBAAkB,EAAE,KAAK,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAsBtF;;GAEG;AACH,iBAAS,kBAAkB,CAAC,MAAM,EAAE,cAAc,EAAE,GAAG,IAAI,CAoC1D;AAmND;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,OAAO,CAyB3C;AAED;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,OAAO,CAuB7C;AAED;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,OAAO,CAoB7C;AAED,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,CAAA"}
@@ -8,9 +8,10 @@ import { confirm } from '@inquirer/prompts';
8
8
  import chalk from 'chalk';
9
9
  import Table from 'cli-table3';
10
10
  import ora from 'ora';
11
- import { rm } from 'fs/promises';
12
- import { createDatabaseAsync, SkillRepository } from '@skillsmith/core';
13
- import { DEFAULT_DB_PATH } from '../config.js';
11
+ import { mkdir } from 'fs/promises';
12
+ import { dirname } from 'path';
13
+ import { createDatabaseAsync, initializeSchema, SkillRepository, SkillDependencyRepository, SkillInstallationService, } from '@skillsmith/core';
14
+ import { DEFAULT_DB_PATH, DEFAULT_SKILLS_DIR, DEFAULT_MANIFEST_PATH } from '../config.js';
14
15
  import { sanitizeError } from '../utils/sanitize.js';
15
16
  import { getInstalledSkills } from '../utils/skills-directory.js';
16
17
  /**
@@ -30,7 +31,7 @@ const TRUST_TIER_COLORS = {
30
31
  function displaySkillsTable(skills) {
31
32
  if (skills.length === 0) {
32
33
  console.log(chalk.yellow('\nNo skills installed.\n'));
33
- console.log(chalk.dim('Install skills with: skillsmith install <skill-name>\n'));
34
+ console.log(chalk.dim('Install skills with: skillsmith install <author/skill-name>\n'));
34
35
  return;
35
36
  }
36
37
  const table = new Table({
@@ -120,11 +121,10 @@ async function updateSkill(skillName, dbPath) {
120
121
  return false;
121
122
  }
122
123
  const updateSpinner = ora(`Updating ${skillName}...`).start();
123
- // In a real implementation, this would fetch and install the new version
124
- // For now, we just simulate success
125
- await new Promise((resolve) => setTimeout(resolve, 1000));
126
- updateSpinner.succeed(`Successfully updated ${skillName}`);
127
- return true;
124
+ updateSpinner.stop();
125
+ // SMI-skill-version-tracking Wave 1: updateSkill not yet implemented
126
+ // Wave 2 will wire this to the install tool with conflict resolution.
127
+ throw new Error('updateSkill not yet implemented');
128
128
  }
129
129
  catch (error) {
130
130
  spinner.fail(`Failed to update ${skillName}: ${sanitizeError(error)}`);
@@ -160,16 +160,18 @@ async function updateAllSkills(dbPath) {
160
160
  console.log();
161
161
  }
162
162
  /**
163
- * Remove a skill
163
+ * Remove a skill using SkillInstallationService for manifest-aware removal.
164
+ * Falls back to direct removal for orphan skills (on disk but not in manifest).
164
165
  */
165
- async function removeSkill(skillName, force) {
166
- const installed = await getInstalledSkills();
167
- const skill = installed.find((s) => s.name.toLowerCase() === skillName.toLowerCase());
168
- if (!skill) {
169
- console.log(chalk.red(`Skill "${skillName}" is not installed`));
170
- return false;
171
- }
166
+ async function removeSkill(skillName, force, dbPath) {
167
+ // Show skill info and confirm before proceeding (unless --force)
172
168
  if (!force) {
169
+ const installed = await getInstalledSkills();
170
+ const skill = installed.find((s) => s.name.toLowerCase() === skillName.toLowerCase());
171
+ if (!skill) {
172
+ console.log(chalk.red(`Skill "${skillName}" is not installed`));
173
+ return false;
174
+ }
173
175
  console.log(chalk.bold(`\nSkill to remove:`));
174
176
  console.log(` Name: ${skill.name}`);
175
177
  console.log(` Version: ${skill.version || 'N/A'}`);
@@ -184,16 +186,47 @@ async function removeSkill(skillName, force) {
184
186
  return false;
185
187
  }
186
188
  }
187
- const spinner = ora(`Removing ${skill.name}...`).start();
189
+ const spinner = ora(`Removing ${skillName}...`).start();
190
+ // Ensure database directory exists before opening
191
+ await mkdir(dirname(dbPath), { recursive: true });
192
+ const db = await createDatabaseAsync(dbPath);
193
+ initializeSchema(db);
188
194
  try {
189
- await rm(skill.path, { recursive: true, force: true });
190
- spinner.succeed(`Successfully removed ${skill.name}`);
191
- return true;
195
+ const skillRepo = new SkillRepository(db);
196
+ const skillDependencyRepo = new SkillDependencyRepository(db);
197
+ const service = new SkillInstallationService({
198
+ db,
199
+ skillRepo,
200
+ skillDependencyRepo,
201
+ skillsDir: DEFAULT_SKILLS_DIR,
202
+ manifestPath: DEFAULT_MANIFEST_PATH,
203
+ onProgress: (_stage, detail) => {
204
+ spinner.text = detail;
205
+ },
206
+ });
207
+ const result = await service.uninstall(skillName, { force });
208
+ if (result.success) {
209
+ spinner.succeed(`Successfully removed ${skillName}`);
210
+ if (result.warning) {
211
+ console.log(chalk.yellow(` Warning: ${result.warning}`));
212
+ }
213
+ return true;
214
+ }
215
+ else {
216
+ spinner.fail(result.message);
217
+ if (result.warning) {
218
+ console.log(chalk.yellow(` ${result.warning}`));
219
+ }
220
+ return false;
221
+ }
192
222
  }
193
223
  catch (error) {
194
- spinner.fail(`Failed to remove ${skill.name}: ${sanitizeError(error)}`);
224
+ spinner.fail(`Failed to remove ${skillName}: ${sanitizeError(error)}`);
195
225
  return false;
196
226
  }
227
+ finally {
228
+ db.close();
229
+ }
197
230
  }
198
231
  /**
199
232
  * Create list command
@@ -202,10 +235,19 @@ export function createListCommand() {
202
235
  return new Command('list')
203
236
  .alias('ls')
204
237
  .description('List all installed skills')
205
- .action(async () => {
238
+ .option('-d, --db <path>', 'Database file path', DEFAULT_DB_PATH)
239
+ .option('--outdated', 'Show only skills with available updates (requires Individual tier)')
240
+ .action(async (opts) => {
206
241
  try {
207
- const skills = await getInstalledSkills();
208
- displaySkillsTable(skills);
242
+ const dbPath = opts['db'];
243
+ const outdated = opts['outdated'] ?? false;
244
+ const skills = await getInstalledSkills(dbPath);
245
+ const filtered = outdated ? skills.filter((s) => s.hasUpdates) : skills;
246
+ if (outdated && filtered.length === 0) {
247
+ console.log(chalk.green('\nAll installed skills are up to date.\n'));
248
+ return;
249
+ }
250
+ displaySkillsTable(filtered);
209
251
  }
210
252
  catch (error) {
211
253
  console.error(chalk.red('Error listing skills:'), sanitizeError(error));
@@ -248,11 +290,13 @@ export function createRemoveCommand() {
248
290
  .alias('uninstall')
249
291
  .description('Remove an installed skill')
250
292
  .argument('<skill>', 'Skill name to remove')
251
- .option('-f, --force', 'Skip confirmation prompt')
293
+ .option('-f, --force', 'Skip confirmation prompt and force removal of modified/orphan skills')
294
+ .option('-d, --db <path>', 'Database file path', DEFAULT_DB_PATH)
252
295
  .action(async (skillName, opts) => {
253
296
  const force = opts['force'] ?? false;
297
+ const dbPath = opts['db'] ?? DEFAULT_DB_PATH;
254
298
  try {
255
- const success = await removeSkill(skillName, force);
299
+ const success = await removeSkill(skillName, force, dbPath);
256
300
  process.exit(success ? 0 : 1);
257
301
  }
258
302
  catch (error) {
@@ -1 +1 @@
1
- {"version":3,"file":"manage.js","sourceRoot":"","sources":["../../../src/commands/manage.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"manage.js","sourceRoot":"","sources":["../../../src/commands/manage.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * @fileoverview skillsmith pin / unpin — content-hash pinning for installed skills
3
+ * @module @skillsmith/cli/commands/pin
4
+ * @see SMI-skill-version-tracking Wave 2
5
+ *
6
+ * pin <name>: writes the current contentHash as pinnedVersion in the manifest
7
+ * unpin <name>: removes pinnedVersion from the manifest entry
8
+ *
9
+ * The pinnedVersion field is an 8-char truncated content hash that the
10
+ * skill_updates tool (Wave 1) and install flow (future Wave 3) can use
11
+ * to enforce an update hold.
12
+ *
13
+ * Tier gate: Individual (requires requireTier('individual')).
14
+ */
15
+ import { Command } from 'commander';
16
+ /**
17
+ * Create the pin command
18
+ */
19
+ export declare function createPinCommand(): Command;
20
+ /**
21
+ * Create the unpin command
22
+ */
23
+ export declare function createUnpinCommand(): Command;
24
+ //# sourceMappingURL=pin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pin.d.ts","sourceRoot":"","sources":["../../../src/commands/pin.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAuBnC;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,OAAO,CAwD1C;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,OAAO,CA2C5C"}
@@ -0,0 +1,123 @@
1
+ /**
2
+ * @fileoverview skillsmith pin / unpin — content-hash pinning for installed skills
3
+ * @module @skillsmith/cli/commands/pin
4
+ * @see SMI-skill-version-tracking Wave 2
5
+ *
6
+ * pin <name>: writes the current contentHash as pinnedVersion in the manifest
7
+ * unpin <name>: removes pinnedVersion from the manifest entry
8
+ *
9
+ * The pinnedVersion field is an 8-char truncated content hash that the
10
+ * skill_updates tool (Wave 1) and install flow (future Wave 3) can use
11
+ * to enforce an update hold.
12
+ *
13
+ * Tier gate: Individual (requires requireTier('individual')).
14
+ */
15
+ import { Command } from 'commander';
16
+ import chalk from 'chalk';
17
+ import { requireTier } from '../utils/require-tier.js';
18
+ import { sanitizeError } from '../utils/sanitize.js';
19
+ import { loadManifest, updateManifestEntry } from '../utils/manifest.js';
20
+ // ============================================================================
21
+ // Helpers
22
+ // ============================================================================
23
+ /**
24
+ * Truncate a full content hash to its 8-char human-readable prefix.
25
+ * If the hash is already short (e.g. the manifest stores an 8-char value),
26
+ * the full value is returned as-is.
27
+ */
28
+ function truncateHash(hash) {
29
+ return hash.slice(0, 8);
30
+ }
31
+ // ============================================================================
32
+ // Command factories
33
+ // ============================================================================
34
+ /**
35
+ * Create the pin command
36
+ */
37
+ export function createPinCommand() {
38
+ return new Command('pin')
39
+ .description('Pin an installed skill to its current content hash (Individual tier)')
40
+ .argument('<skill>', 'Skill name to pin')
41
+ .action(async (skillName) => {
42
+ try {
43
+ await requireTier('individual');
44
+ const manifest = await loadManifest();
45
+ const entry = manifest.installedSkills[skillName];
46
+ if (!entry) {
47
+ console.error(chalk.red(`Skill "${skillName}" not found in manifest. ` +
48
+ `Install the skill first with: skillsmith setup`));
49
+ process.exit(1);
50
+ }
51
+ const hash = entry.contentHash ?? entry.originalContentHash ?? null;
52
+ if (!hash) {
53
+ console.warn(chalk.yellow(`Warning: No content hash available for "${skillName}". ` +
54
+ `Reinstall the skill to record a hash.`));
55
+ process.exit(1);
56
+ }
57
+ const pinHash = truncateHash(hash);
58
+ await updateManifestEntry((m) => {
59
+ const existingEntry = m.installedSkills[skillName];
60
+ if (!existingEntry)
61
+ return m;
62
+ return {
63
+ ...m,
64
+ installedSkills: {
65
+ ...m.installedSkills,
66
+ [skillName]: {
67
+ ...existingEntry,
68
+ pinnedVersion: pinHash,
69
+ },
70
+ },
71
+ };
72
+ });
73
+ console.log(chalk.green(`Pinned ${skillName} to content hash ${pinHash}`));
74
+ }
75
+ catch (error) {
76
+ console.error(chalk.red('Error:'), sanitizeError(error));
77
+ process.exit(1);
78
+ }
79
+ });
80
+ }
81
+ /**
82
+ * Create the unpin command
83
+ */
84
+ export function createUnpinCommand() {
85
+ return new Command('unpin')
86
+ .description('Remove the content-hash pin from an installed skill (Individual tier)')
87
+ .argument('<skill>', 'Skill name to unpin')
88
+ .action(async (skillName) => {
89
+ try {
90
+ await requireTier('individual');
91
+ const manifest = await loadManifest();
92
+ const entry = manifest.installedSkills[skillName];
93
+ if (!entry) {
94
+ console.error(chalk.red(`Skill "${skillName}" not found in manifest.`));
95
+ process.exit(1);
96
+ }
97
+ if (!entry.pinnedVersion) {
98
+ console.log(chalk.dim(`Skill "${skillName}" is not pinned.`));
99
+ return;
100
+ }
101
+ const previousPin = entry.pinnedVersion;
102
+ await updateManifestEntry((m) => {
103
+ const existingEntry = m.installedSkills[skillName];
104
+ if (!existingEntry)
105
+ return m;
106
+ const { pinnedVersion: _removed, ...rest } = existingEntry;
107
+ return {
108
+ ...m,
109
+ installedSkills: {
110
+ ...m.installedSkills,
111
+ [skillName]: rest,
112
+ },
113
+ };
114
+ });
115
+ console.log(chalk.green(`Unpinned ${skillName} (was pinned to ${previousPin})`));
116
+ }
117
+ catch (error) {
118
+ console.error(chalk.red('Error:'), sanitizeError(error));
119
+ process.exit(1);
120
+ }
121
+ });
122
+ }
123
+ //# sourceMappingURL=pin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pin.js","sourceRoot":"","sources":["../../../src/commands/pin.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * @fileoverview Tests for pin.ts — pin/unpin manifest commands
3
+ * @see SMI-skill-version-tracking Wave 2
4
+ */
5
+ export {};
6
+ //# sourceMappingURL=pin.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pin.test.d.ts","sourceRoot":"","sources":["../../../src/commands/pin.test.ts"],"names":[],"mappings":"AAAA;;;GAGG"}
@@ -0,0 +1,206 @@
1
+ /**
2
+ * @fileoverview Tests for pin.ts — pin/unpin manifest commands
3
+ * @see SMI-skill-version-tracking Wave 2
4
+ */
5
+ import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest';
6
+ // ============================================================================
7
+ // Module mocks — must be declared before imports that use them
8
+ // ============================================================================
9
+ vi.mock('../utils/require-tier.js', () => ({
10
+ requireTier: vi.fn().mockResolvedValue(undefined),
11
+ }));
12
+ const mockLoadManifest = vi.fn();
13
+ const mockUpdateManifestEntry = vi.fn();
14
+ vi.mock('../utils/manifest.js', () => ({
15
+ loadManifest: () => mockLoadManifest(),
16
+ updateManifestEntry: (fn) => mockUpdateManifestEntry(fn),
17
+ }));
18
+ // ============================================================================
19
+ // Import after mocks are set up
20
+ // ============================================================================
21
+ import { createPinCommand, createUnpinCommand } from './pin.js';
22
+ // ============================================================================
23
+ // Helpers
24
+ // ============================================================================
25
+ function buildManifest(overrides = {}) {
26
+ return {
27
+ version: '1.0.0',
28
+ installedSkills: {
29
+ 'commit-helper': {
30
+ id: 'anthropic/commit-helper',
31
+ name: 'commit-helper',
32
+ version: '1.0.0',
33
+ source: 'https://github.com/anthropic/commit-helper',
34
+ installPath: '/home/user/.claude/skills/commit-helper',
35
+ installedAt: '2024-01-01T00:00:00.000Z',
36
+ lastUpdated: '2024-01-01T00:00:00.000Z',
37
+ contentHash: 'a3f7b2c1d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0c1d2e3f4a5b6c7d8e9f0a1',
38
+ originalContentHash: 'a3f7b2c1d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0c1d2e3f4a5b6c7d8e9f0a1',
39
+ },
40
+ ...overrides,
41
+ },
42
+ };
43
+ }
44
+ /**
45
+ * Run a commander command programmatically with the given argv.
46
+ * Captures console output and process.exit calls.
47
+ */
48
+ async function runCommand(cmd, argv) {
49
+ const output = [];
50
+ const exitCode = { value: null };
51
+ const consoleSpy = vi.spyOn(console, 'log').mockImplementation((...args) => {
52
+ output.push(args.join(' '));
53
+ });
54
+ const errorSpy = vi.spyOn(console, 'error').mockImplementation((...args) => {
55
+ output.push(args.join(' '));
56
+ });
57
+ const warnSpy = vi.spyOn(console, 'warn').mockImplementation((...args) => {
58
+ output.push(args.join(' '));
59
+ });
60
+ const exitSpy = vi.spyOn(process, 'exit').mockImplementation((code) => {
61
+ exitCode.value = typeof code === 'number' ? code : null;
62
+ throw new Error(`process.exit(${code})`);
63
+ });
64
+ try {
65
+ await cmd.parseAsync(['node', 'test', ...argv]);
66
+ }
67
+ catch (e) {
68
+ // Swallow process.exit throws
69
+ const msg = e instanceof Error ? e.message : String(e);
70
+ if (!msg.startsWith('process.exit'))
71
+ throw e;
72
+ }
73
+ finally {
74
+ consoleSpy.mockRestore();
75
+ errorSpy.mockRestore();
76
+ warnSpy.mockRestore();
77
+ exitSpy.mockRestore();
78
+ }
79
+ return { exitCode: exitCode.value, consoleOutput: output };
80
+ }
81
+ // ============================================================================
82
+ // Tests
83
+ // ============================================================================
84
+ describe('createPinCommand', () => {
85
+ beforeEach(() => {
86
+ vi.clearAllMocks();
87
+ });
88
+ afterEach(() => {
89
+ vi.clearAllMocks();
90
+ });
91
+ it('writes pinnedVersion (8-char hash) to manifest entry', async () => {
92
+ const manifest = buildManifest();
93
+ mockLoadManifest.mockResolvedValue(manifest);
94
+ let capturedUpdateFn = null;
95
+ mockUpdateManifestEntry.mockImplementation(async (fn) => {
96
+ capturedUpdateFn = fn;
97
+ });
98
+ const cmd = createPinCommand();
99
+ const { exitCode, consoleOutput } = await runCommand(cmd, ['commit-helper']);
100
+ expect(exitCode).toBeNull();
101
+ expect(mockUpdateManifestEntry).toHaveBeenCalledOnce();
102
+ // Apply the update function and verify pinnedVersion is set
103
+ const updated = capturedUpdateFn(manifest);
104
+ const entry = updated.installedSkills['commit-helper'];
105
+ expect(entry.pinnedVersion).toBe('a3f7b2c1');
106
+ expect(consoleOutput.join(' ')).toContain('a3f7b2c1');
107
+ });
108
+ it('uses contentHash first, falls back to originalContentHash', async () => {
109
+ const manifest = buildManifest({
110
+ 'no-content-hash': {
111
+ id: 'test/no-content-hash',
112
+ name: 'no-content-hash',
113
+ version: '1.0.0',
114
+ source: 'https://github.com/test/no-content-hash',
115
+ installPath: '/home/user/.claude/skills/no-content-hash',
116
+ installedAt: '2024-01-01T00:00:00.000Z',
117
+ lastUpdated: '2024-01-01T00:00:00.000Z',
118
+ originalContentHash: 'deadbeef1234567890abcdef',
119
+ },
120
+ });
121
+ mockLoadManifest.mockResolvedValue(manifest);
122
+ let capturedUpdateFn = null;
123
+ mockUpdateManifestEntry.mockImplementation(async (fn) => {
124
+ capturedUpdateFn = fn;
125
+ });
126
+ const cmd = createPinCommand();
127
+ await runCommand(cmd, ['no-content-hash']);
128
+ const updated = capturedUpdateFn(manifest);
129
+ expect(updated.installedSkills['no-content-hash']?.pinnedVersion).toBe('deadbeef');
130
+ });
131
+ it('exits with error when skill is not in manifest', async () => {
132
+ mockLoadManifest.mockResolvedValue(buildManifest());
133
+ const cmd = createPinCommand();
134
+ const { exitCode } = await runCommand(cmd, ['nonexistent-skill']);
135
+ expect(exitCode).toBe(1);
136
+ });
137
+ it('exits with warning when no hash is available', async () => {
138
+ const manifest = buildManifest({
139
+ 'no-hash-skill': {
140
+ id: 'test/no-hash-skill',
141
+ name: 'no-hash-skill',
142
+ version: '1.0.0',
143
+ source: 'https://github.com/test/no-hash-skill',
144
+ installPath: '/home/user/.claude/skills/no-hash-skill',
145
+ installedAt: '2024-01-01T00:00:00.000Z',
146
+ lastUpdated: '2024-01-01T00:00:00.000Z',
147
+ },
148
+ });
149
+ mockLoadManifest.mockResolvedValue(manifest);
150
+ const cmd = createPinCommand();
151
+ const { exitCode } = await runCommand(cmd, ['no-hash-skill']);
152
+ expect(exitCode).toBe(1);
153
+ });
154
+ });
155
+ describe('createUnpinCommand', () => {
156
+ beforeEach(() => {
157
+ vi.clearAllMocks();
158
+ });
159
+ afterEach(() => {
160
+ vi.clearAllMocks();
161
+ });
162
+ it('removes pinnedVersion from manifest entry', async () => {
163
+ const manifest = buildManifest({
164
+ 'commit-helper': {
165
+ id: 'anthropic/commit-helper',
166
+ name: 'commit-helper',
167
+ version: '1.0.0',
168
+ source: 'https://github.com/anthropic/commit-helper',
169
+ installPath: '/home/user/.claude/skills/commit-helper',
170
+ installedAt: '2024-01-01T00:00:00.000Z',
171
+ lastUpdated: '2024-01-01T00:00:00.000Z',
172
+ contentHash: 'a3f7b2c1d4e5f6a7b8c9d0e1f2a3b4c5',
173
+ pinnedVersion: 'a3f7b2c1',
174
+ },
175
+ });
176
+ mockLoadManifest.mockResolvedValue(manifest);
177
+ let capturedUpdateFn = null;
178
+ mockUpdateManifestEntry.mockImplementation(async (fn) => {
179
+ capturedUpdateFn = fn;
180
+ });
181
+ const cmd = createUnpinCommand();
182
+ const { exitCode, consoleOutput } = await runCommand(cmd, ['commit-helper']);
183
+ expect(exitCode).toBeNull();
184
+ expect(mockUpdateManifestEntry).toHaveBeenCalledOnce();
185
+ // Apply the update function and verify pinnedVersion is removed
186
+ const updated = capturedUpdateFn(manifest);
187
+ expect(updated.installedSkills['commit-helper']?.pinnedVersion).toBeUndefined();
188
+ expect(consoleOutput.join(' ')).toContain('Unpinned');
189
+ });
190
+ it('prints dim message when skill is not pinned (no-op)', async () => {
191
+ const manifest = buildManifest();
192
+ mockLoadManifest.mockResolvedValue(manifest);
193
+ const cmd = createUnpinCommand();
194
+ const { exitCode, consoleOutput } = await runCommand(cmd, ['commit-helper']);
195
+ expect(exitCode).toBeNull();
196
+ expect(mockUpdateManifestEntry).not.toHaveBeenCalled();
197
+ expect(consoleOutput.join(' ')).toContain('not pinned');
198
+ });
199
+ it('exits with error when skill is not in manifest', async () => {
200
+ mockLoadManifest.mockResolvedValue(buildManifest());
201
+ const cmd = createUnpinCommand();
202
+ const { exitCode } = await runCommand(cmd, ['nonexistent-skill']);
203
+ expect(exitCode).toBe(1);
204
+ });
205
+ });
206
+ //# sourceMappingURL=pin.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pin.test.js","sourceRoot":"","sources":["../../../src/commands/pin.test.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../../src/commands/search.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAenC,YAAY,EAAE,sBAAsB,EAAE,WAAW,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAA;AAClG,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAC7C,OAAO,EACL,iBAAiB,EACjB,oBAAoB,EACpB,cAAc,EACd,cAAc,EACd,mBAAmB,EACnB,iBAAiB,GAClB,MAAM,wBAAwB,CAAA;AAyO/B;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,OAAO,CAkJ7C;AAED,eAAe,mBAAmB,CAAA"}
1
+ {"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../../src/commands/search.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAsBnC,YAAY,EAAE,sBAAsB,EAAE,WAAW,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAA;AAClG,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAC7C,OAAO,EACL,iBAAiB,EACjB,oBAAoB,EACpB,cAAc,EACd,cAAc,EACd,mBAAmB,EACnB,iBAAiB,GAClB,MAAM,wBAAwB,CAAA;AAmR/B;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,OAAO,CAkJ7C;AAED,eAAe,mBAAmB,CAAA"}