@skillsmith/cli 0.6.3 → 0.6.5

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 (182) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/dist/.tsbuildinfo +1 -1
  3. package/dist/src/commands/__meta__/telemetry-coverage.test.d.ts +20 -0
  4. package/dist/src/commands/__meta__/telemetry-coverage.test.d.ts.map +1 -0
  5. package/dist/src/commands/__meta__/telemetry-coverage.test.js +118 -0
  6. package/dist/src/commands/__meta__/telemetry-coverage.test.js.map +1 -0
  7. package/dist/src/commands/ab-test.d.ts +1 -0
  8. package/dist/src/commands/ab-test.d.ts.map +1 -1
  9. package/dist/src/commands/ab-test.js +17 -8
  10. package/dist/src/commands/ab-test.js.map +1 -1
  11. package/dist/src/commands/analyze.d.ts +1 -0
  12. package/dist/src/commands/analyze.d.ts.map +1 -1
  13. package/dist/src/commands/analyze.js +32 -23
  14. package/dist/src/commands/analyze.js.map +1 -1
  15. package/dist/src/commands/audit-collisions.d.ts +1 -4
  16. package/dist/src/commands/audit-collisions.d.ts.map +1 -1
  17. package/dist/src/commands/audit-collisions.js +32 -23
  18. package/dist/src/commands/audit-collisions.js.map +1 -1
  19. package/dist/src/commands/audit-sources.action.d.ts +37 -0
  20. package/dist/src/commands/audit-sources.action.d.ts.map +1 -0
  21. package/dist/src/commands/audit-sources.action.js +321 -0
  22. package/dist/src/commands/audit-sources.action.js.map +1 -0
  23. package/dist/src/commands/audit-sources.d.ts +37 -0
  24. package/dist/src/commands/audit-sources.d.ts.map +1 -0
  25. package/dist/src/commands/audit-sources.js +55 -0
  26. package/dist/src/commands/audit-sources.js.map +1 -0
  27. package/dist/src/commands/audit-sources.test.d.ts +9 -0
  28. package/dist/src/commands/audit-sources.test.d.ts.map +1 -0
  29. package/dist/src/commands/audit-sources.test.js +228 -0
  30. package/dist/src/commands/audit-sources.test.js.map +1 -0
  31. package/dist/src/commands/audit.d.ts +2 -6
  32. package/dist/src/commands/audit.d.ts.map +1 -1
  33. package/dist/src/commands/audit.js +52 -31
  34. package/dist/src/commands/audit.js.map +1 -1
  35. package/dist/src/commands/author/index.d.ts +2 -1
  36. package/dist/src/commands/author/index.d.ts.map +1 -1
  37. package/dist/src/commands/author/index.js +4 -1
  38. package/dist/src/commands/author/index.js.map +1 -1
  39. package/dist/src/commands/author/init.action.d.ts +29 -0
  40. package/dist/src/commands/author/init.action.d.ts.map +1 -0
  41. package/dist/src/commands/author/init.action.js +131 -0
  42. package/dist/src/commands/author/init.action.js.map +1 -0
  43. package/dist/src/commands/author/init.d.ts +0 -14
  44. package/dist/src/commands/author/init.d.ts.map +1 -1
  45. package/dist/src/commands/author/init.js +3 -87
  46. package/dist/src/commands/author/init.js.map +1 -1
  47. package/dist/src/commands/author/mcp-init.d.ts +1 -0
  48. package/dist/src/commands/author/mcp-init.d.ts.map +1 -1
  49. package/dist/src/commands/author/mcp-init.js +21 -13
  50. package/dist/src/commands/author/mcp-init.js.map +1 -1
  51. package/dist/src/commands/author/subagent.d.ts +1 -0
  52. package/dist/src/commands/author/subagent.d.ts.map +1 -1
  53. package/dist/src/commands/author/subagent.js +23 -15
  54. package/dist/src/commands/author/subagent.js.map +1 -1
  55. package/dist/src/commands/author/transform.d.ts +1 -0
  56. package/dist/src/commands/author/transform.d.ts.map +1 -1
  57. package/dist/src/commands/author/transform.js +23 -15
  58. package/dist/src/commands/author/transform.js.map +1 -1
  59. package/dist/src/commands/config.d.ts +2 -0
  60. package/dist/src/commands/config.d.ts.map +1 -1
  61. package/dist/src/commands/config.js +43 -28
  62. package/dist/src/commands/config.js.map +1 -1
  63. package/dist/src/commands/create.d.ts +1 -0
  64. package/dist/src/commands/create.d.ts.map +1 -1
  65. package/dist/src/commands/create.js +28 -19
  66. package/dist/src/commands/create.js.map +1 -1
  67. package/dist/src/commands/diff.d.ts +4 -0
  68. package/dist/src/commands/diff.d.ts.map +1 -1
  69. package/dist/src/commands/diff.js +90 -54
  70. package/dist/src/commands/diff.js.map +1 -1
  71. package/dist/src/commands/diff.test.js +52 -0
  72. package/dist/src/commands/diff.test.js.map +1 -1
  73. package/dist/src/commands/import-local.d.ts +7 -0
  74. package/dist/src/commands/import-local.d.ts.map +1 -1
  75. package/dist/src/commands/import-local.js +43 -34
  76. package/dist/src/commands/import-local.js.map +1 -1
  77. package/dist/src/commands/import.d.ts +6 -0
  78. package/dist/src/commands/import.d.ts.map +1 -1
  79. package/dist/src/commands/import.js +23 -14
  80. package/dist/src/commands/import.js.map +1 -1
  81. package/dist/src/commands/info.d.ts +7 -0
  82. package/dist/src/commands/info.d.ts.map +1 -1
  83. package/dist/src/commands/info.js +77 -68
  84. package/dist/src/commands/info.js.map +1 -1
  85. package/dist/src/commands/install-skill.d.ts +3 -0
  86. package/dist/src/commands/install-skill.d.ts.map +1 -1
  87. package/dist/src/commands/install-skill.js +23 -15
  88. package/dist/src/commands/install-skill.js.map +1 -1
  89. package/dist/src/commands/install.d.ts +21 -0
  90. package/dist/src/commands/install.d.ts.map +1 -1
  91. package/dist/src/commands/install.js +154 -139
  92. package/dist/src/commands/install.js.map +1 -1
  93. package/dist/src/commands/login.d.ts +4 -0
  94. package/dist/src/commands/login.d.ts.map +1 -1
  95. package/dist/src/commands/login.js +56 -47
  96. package/dist/src/commands/login.js.map +1 -1
  97. package/dist/src/commands/logout.d.ts +1 -0
  98. package/dist/src/commands/logout.d.ts.map +1 -1
  99. package/dist/src/commands/logout.js +36 -27
  100. package/dist/src/commands/logout.js.map +1 -1
  101. package/dist/src/commands/manage.d.ts +3 -9
  102. package/dist/src/commands/manage.d.ts.map +1 -1
  103. package/dist/src/commands/manage.js +69 -45
  104. package/dist/src/commands/manage.js.map +1 -1
  105. package/dist/src/commands/merge.d.ts +7 -0
  106. package/dist/src/commands/merge.d.ts.map +1 -1
  107. package/dist/src/commands/merge.js +117 -108
  108. package/dist/src/commands/merge.js.map +1 -1
  109. package/dist/src/commands/pin.d.ts +2 -0
  110. package/dist/src/commands/pin.d.ts.map +1 -1
  111. package/dist/src/commands/pin.js +88 -73
  112. package/dist/src/commands/pin.js.map +1 -1
  113. package/dist/src/commands/recommend.d.ts +1 -0
  114. package/dist/src/commands/recommend.d.ts.map +1 -1
  115. package/dist/src/commands/recommend.js +35 -27
  116. package/dist/src/commands/recommend.js.map +1 -1
  117. package/dist/src/commands/search-formatters.d.ts +1 -0
  118. package/dist/src/commands/search-formatters.d.ts.map +1 -1
  119. package/dist/src/commands/search-formatters.js +3 -0
  120. package/dist/src/commands/search-formatters.js.map +1 -1
  121. package/dist/src/commands/search.action.d.ts +16 -0
  122. package/dist/src/commands/search.action.d.ts.map +1 -0
  123. package/dist/src/commands/search.action.js +384 -0
  124. package/dist/src/commands/search.action.js.map +1 -0
  125. package/dist/src/commands/search.d.ts +3 -0
  126. package/dist/src/commands/search.d.ts.map +1 -1
  127. package/dist/src/commands/search.js +5 -354
  128. package/dist/src/commands/search.js.map +1 -1
  129. package/dist/src/commands/sync.action.d.ts +39 -0
  130. package/dist/src/commands/sync.action.d.ts.map +1 -0
  131. package/dist/src/commands/sync.action.js +353 -0
  132. package/dist/src/commands/sync.action.js.map +1 -0
  133. package/dist/src/commands/sync.d.ts +3 -0
  134. package/dist/src/commands/sync.d.ts.map +1 -1
  135. package/dist/src/commands/sync.js +8 -310
  136. package/dist/src/commands/sync.js.map +1 -1
  137. package/dist/src/commands/telemetry.action.d.ts +38 -0
  138. package/dist/src/commands/telemetry.action.d.ts.map +1 -0
  139. package/dist/src/commands/telemetry.action.js +350 -0
  140. package/dist/src/commands/telemetry.action.js.map +1 -0
  141. package/dist/src/commands/telemetry.d.ts +5 -13
  142. package/dist/src/commands/telemetry.d.ts.map +1 -1
  143. package/dist/src/commands/telemetry.js +13 -302
  144. package/dist/src/commands/telemetry.js.map +1 -1
  145. package/dist/src/commands/whoami.d.ts +1 -0
  146. package/dist/src/commands/whoami.d.ts.map +1 -1
  147. package/dist/src/commands/whoami.js +29 -21
  148. package/dist/src/commands/whoami.js.map +1 -1
  149. package/dist/src/utils/open-database.d.ts +10 -2
  150. package/dist/src/utils/open-database.d.ts.map +1 -1
  151. package/dist/src/utils/open-database.js +15 -2
  152. package/dist/src/utils/open-database.js.map +1 -1
  153. package/dist/src/utils/skills-directory.d.ts.map +1 -1
  154. package/dist/src/utils/skills-directory.js +5 -1
  155. package/dist/src/utils/skills-directory.js.map +1 -1
  156. package/dist/tests/e2e/audit-sources-affix.test.d.ts +11 -0
  157. package/dist/tests/e2e/audit-sources-affix.test.d.ts.map +1 -0
  158. package/dist/tests/e2e/audit-sources-affix.test.js +121 -0
  159. package/dist/tests/e2e/audit-sources-affix.test.js.map +1 -0
  160. package/dist/tests/e2e/audit-sources-apply.test.d.ts +13 -0
  161. package/dist/tests/e2e/audit-sources-apply.test.d.ts.map +1 -0
  162. package/dist/tests/e2e/audit-sources-apply.test.js +166 -0
  163. package/dist/tests/e2e/audit-sources-apply.test.js.map +1 -0
  164. package/dist/tests/e2e/audit-sources-recovery.test.d.ts +15 -0
  165. package/dist/tests/e2e/audit-sources-recovery.test.d.ts.map +1 -0
  166. package/dist/tests/e2e/audit-sources-recovery.test.js +179 -0
  167. package/dist/tests/e2e/audit-sources-recovery.test.js.map +1 -0
  168. package/dist/tests/e2e/audit-sources-roundtrip.test.d.ts +23 -0
  169. package/dist/tests/e2e/audit-sources-roundtrip.test.d.ts.map +1 -0
  170. package/dist/tests/e2e/audit-sources-roundtrip.test.js +139 -0
  171. package/dist/tests/e2e/audit-sources-roundtrip.test.js.map +1 -0
  172. package/dist/tests/e2e/utils/source-recovery-fixture.d.ts +49 -0
  173. package/dist/tests/e2e/utils/source-recovery-fixture.d.ts.map +1 -0
  174. package/dist/tests/e2e/utils/source-recovery-fixture.js +106 -0
  175. package/dist/tests/e2e/utils/source-recovery-fixture.js.map +1 -0
  176. package/dist/tests/init.test.js +2 -1
  177. package/dist/tests/init.test.js.map +1 -1
  178. package/dist/tests/install-quarantine.test.d.ts +10 -0
  179. package/dist/tests/install-quarantine.test.d.ts.map +1 -0
  180. package/dist/tests/install-quarantine.test.js +86 -0
  181. package/dist/tests/install-quarantine.test.js.map +1 -0
  182. package/package.json +4 -5
@@ -2,275 +2,15 @@
2
2
  * SMI-744: Interactive Search Mode
3
3
  *
4
4
  * Provides interactive CLI for searching skills with filters and pagination.
5
+ *
6
+ * SMI-5127: Action implementation moved to search.action.ts.
7
+ * This file retains only the commander factory function and re-exports.
5
8
  */
6
9
  import { Command } from 'commander';
7
- import { input, checkbox, number, select } from '@inquirer/prompts';
8
- import chalk from 'chalk';
9
- import ora from 'ora';
10
- import { SearchService, SkillRepository, SkillDependencyRepository, SkillInstallationService, } from '@skillsmith/core';
11
- // SMI-5039: lazy embedding-capability probe. CLI `search` is the only
12
- // embedding-relevant command — it surfaces a degraded-search warning to the
13
- // operator without blocking the FTS fallback path. The probe is hard-bounded
14
- // at 2 s, stderr-only, and never throws; `SKILLSMITH_QUIET=true` suppresses
15
- // the warning line for scripted use.
16
- import { probeEmbeddingCapability } from '@skillsmith/core/embeddings/probe';
17
- import { openCliDatabase } from '../utils/open-database.js';
18
- import { autoSyncIfEmpty, isLocalIndexEmpty, formatEmptyIndexHint } from './search.helpers.js';
19
10
  import { DEFAULT_DB_PATH } from '../config.js';
20
- import { sanitizeError } from '../utils/sanitize.js';
21
- import { PAGE_SIZE } from './search-types.js';
22
- import { TRUST_TIER_COLORS, displayResults, displaySkillDetails } from './search-formatters.js';
11
+ import { searchAction } from './search.action.js';
23
12
  export { PAGE_SIZE } from './search-types.js';
24
13
  export { TRUST_TIER_COLORS, formatSecurityStatus, formatSkillRow, displayResults, displaySkillDetails, getTrustTierColor, } from './search-formatters.js';
25
- /**
26
- * Run interactive search loop using state machine pattern (SMI-759)
27
- * Uses iterative while loop instead of recursion for new searches.
28
- */
29
- async function runInteractiveSearch(dbPath) {
30
- const db = await openCliDatabase(dbPath);
31
- // SMI-4917 Bug 3: bootstrap the local registry on a first-time search.
32
- await autoSyncIfEmpty(db);
33
- const searchService = new SearchService(db);
34
- console.log(chalk.bold.blue('\n=== Skillsmith Interactive Search ===\n'));
35
- try {
36
- // State machine: phase controls the loop behavior
37
- let phase = 'collect_query';
38
- let state = null;
39
- // Main state machine loop - replaces recursive calls
40
- while (phase !== 'exit') {
41
- // Phase: Collect search query and filters
42
- if (phase === 'collect_query') {
43
- // Step 1: Enter search query (optional if filters will be provided)
44
- const query = await input({
45
- message: 'Enter search query (or press Enter to browse with filters):',
46
- default: '',
47
- });
48
- // Step 2: Filter by trust tier
49
- const trustTiers = await checkbox({
50
- message: 'Filter by trust tier (select with space, enter to continue):',
51
- choices: [
52
- { name: chalk.green('Verified'), value: 'verified' },
53
- { name: chalk.blue('Curated'), value: 'curated' },
54
- { name: chalk.yellow('Community'), value: 'community' },
55
- { name: chalk.red('Experimental'), value: 'experimental' },
56
- { name: chalk.gray('Unknown'), value: 'unknown' },
57
- { name: chalk.cyan('Local'), value: 'local' },
58
- ],
59
- });
60
- // Step 3: Minimum quality score
61
- const minQualityScore = await number({
62
- message: 'Minimum quality score (0-100, leave empty for no filter):',
63
- default: 0,
64
- min: 0,
65
- max: 100,
66
- });
67
- // Validate: require query OR at least one filter
68
- const hasQuery = query.trim().length > 0;
69
- const hasFilters = trustTiers.length > 0 || (minQualityScore !== undefined && minQualityScore > 0);
70
- if (!hasQuery && !hasFilters) {
71
- console.log(chalk.red('Please provide a search query or select at least one filter.'));
72
- continue; // Stay in collect_query phase
73
- }
74
- state = {
75
- query,
76
- trustTiers,
77
- minQualityScore: (minQualityScore || 0) / 100,
78
- offset: 0,
79
- };
80
- phase = 'searching';
81
- continue;
82
- }
83
- // Phase: Search and display results
84
- if (phase === 'searching' && state !== null) {
85
- // Build search options - only add optional properties when they have values
86
- const searchOptions = {
87
- query: state.query,
88
- limit: PAGE_SIZE,
89
- offset: state.offset,
90
- };
91
- // Add optional filters only when they have values (exactOptionalPropertyTypes)
92
- if (state.minQualityScore > 0) {
93
- searchOptions.minQualityScore = state.minQualityScore;
94
- }
95
- // Filter by first selected trust tier (API only supports one)
96
- if (state.trustTiers.length === 1 && state.trustTiers[0] !== undefined) {
97
- searchOptions.trustTier = state.trustTiers[0];
98
- }
99
- // Execute search
100
- const results = searchService.search(searchOptions);
101
- // If filtering by multiple trust tiers, filter client-side
102
- let filteredItems = results.items;
103
- const trustTiersForFilter = state.trustTiers;
104
- if (trustTiersForFilter.length > 1) {
105
- filteredItems = results.items.filter((r) => trustTiersForFilter.includes(r.skill.trustTier));
106
- }
107
- if (results.items.length === 0) {
108
- // SMI-4926: distinguish an empty/unsynced local index from a no-match.
109
- if (isLocalIndexEmpty(db)) {
110
- console.log(formatEmptyIndexHint(db));
111
- }
112
- else {
113
- displayResults(filteredItems, results.total, state.offset, PAGE_SIZE);
114
- }
115
- phase = 'exit';
116
- continue;
117
- }
118
- displayResults(filteredItems, results.total, state.offset, PAGE_SIZE);
119
- // Build action choices
120
- const choices = [];
121
- // Add skill selection options
122
- for (let i = 0; i < filteredItems.length; i++) {
123
- const skill = filteredItems[i].skill;
124
- const colorFn = TRUST_TIER_COLORS[skill.trustTier];
125
- choices.push({
126
- name: `${i + 1}. ${colorFn(skill.name)} - View details`,
127
- value: `view_${i}`,
128
- });
129
- }
130
- // Add navigation options
131
- choices.push({ name: chalk.dim('---'), value: 'separator' });
132
- if (state.offset > 0) {
133
- choices.push({ name: chalk.cyan('<< Previous page'), value: 'prev' });
134
- }
135
- if (results.hasMore) {
136
- choices.push({ name: chalk.cyan('Next page >>'), value: 'next' });
137
- }
138
- choices.push({ name: chalk.magenta('New search'), value: 'new' });
139
- choices.push({ name: chalk.red('Exit'), value: 'exit' });
140
- const action = await select({
141
- message: 'Select a skill to view or navigate:',
142
- choices,
143
- });
144
- if (action === 'separator') {
145
- continue;
146
- }
147
- else if (action === 'exit') {
148
- phase = 'exit';
149
- }
150
- else if (action === 'new') {
151
- // SMI-759: Reset to collect_query phase instead of recursive call
152
- phase = 'collect_query';
153
- console.log(chalk.bold.blue('\n=== New Search ===\n'));
154
- }
155
- else if (action === 'prev') {
156
- state.offset = Math.max(0, state.offset - PAGE_SIZE);
157
- }
158
- else if (action === 'next') {
159
- state.offset += PAGE_SIZE;
160
- }
161
- else if (action.startsWith('view_')) {
162
- const index = parseInt(action.replace('view_', ''), 10);
163
- const selectedResult = filteredItems[index];
164
- if (selectedResult) {
165
- displaySkillDetails(selectedResult);
166
- // Ask what to do next
167
- const nextAction = await select({
168
- message: 'What would you like to do?',
169
- choices: [
170
- { name: 'Back to results', value: 'back' },
171
- { name: 'Install this skill', value: 'install' },
172
- { name: 'Exit', value: 'exit' },
173
- ],
174
- });
175
- if (nextAction === 'install') {
176
- const installSpinner = ora('Installing skill...').start();
177
- try {
178
- const skillRepo = new SkillRepository(db);
179
- const skillDependencyRepo = new SkillDependencyRepository(db);
180
- const registryLookup = {
181
- async lookup(sid) {
182
- const s = skillRepo.findById(sid);
183
- if (!s || !s.repoUrl)
184
- return null;
185
- return {
186
- repoUrl: s.repoUrl,
187
- name: s.name,
188
- trustTier: s.trustTier,
189
- quarantined: false,
190
- };
191
- },
192
- };
193
- const installService = new SkillInstallationService({
194
- db,
195
- skillRepo,
196
- skillDependencyRepo,
197
- registryLookup,
198
- onProgress: (_stage, detail) => {
199
- installSpinner.text = detail;
200
- },
201
- });
202
- const installResult = await installService.install(selectedResult.skill.id, {});
203
- if (installResult.success) {
204
- installSpinner.succeed(chalk.green(`Installed "${selectedResult.skill.name}" successfully`));
205
- if (installResult.installPath) {
206
- console.log(chalk.dim(` Path: ${installResult.installPath}`));
207
- }
208
- }
209
- else {
210
- installSpinner.fail(chalk.red(`Installation failed: ${installResult.error}`));
211
- }
212
- }
213
- catch (installError) {
214
- installSpinner.fail(chalk.red(`Installation error: ${installError instanceof Error ? installError.message : String(installError)}`));
215
- }
216
- }
217
- else if (nextAction === 'exit') {
218
- phase = 'exit';
219
- }
220
- }
221
- }
222
- }
223
- }
224
- }
225
- finally {
226
- db.close();
227
- }
228
- console.log(chalk.dim('\nGoodbye!\n'));
229
- }
230
- /**
231
- * Run non-interactive search
232
- */
233
- async function runSearch(query, options) {
234
- const db = await openCliDatabase(options.db);
235
- // SMI-4917 Bug 3: bootstrap the local registry on a first-time search.
236
- await autoSyncIfEmpty(db);
237
- const searchService = new SearchService(db);
238
- try {
239
- // Build search options - only add optional properties when they have values
240
- const searchOptions = {
241
- query,
242
- limit: options.limit,
243
- };
244
- // Add optional filters only when they have values (exactOptionalPropertyTypes)
245
- if (options.tier !== undefined) {
246
- searchOptions.trustTier = options.tier;
247
- }
248
- if (options.category !== undefined) {
249
- searchOptions.category = options.category;
250
- }
251
- if (options.minScore !== undefined) {
252
- searchOptions.minQualityScore = options.minScore / 100;
253
- }
254
- // SMI-825: Security filters
255
- if (options.safeOnly !== undefined) {
256
- searchOptions.safeOnly = options.safeOnly;
257
- }
258
- if (options.maxRisk !== undefined) {
259
- searchOptions.maxRiskScore = options.maxRisk;
260
- }
261
- const results = searchService.search(searchOptions);
262
- // SMI-4926: an empty local index produces 0 results that look like a
263
- // genuine no-match — surface a sync-state-aware hint instead.
264
- if (results.items.length === 0 && isLocalIndexEmpty(db)) {
265
- console.log(formatEmptyIndexHint(db));
266
- return;
267
- }
268
- displayResults(results.items, results.total, 0, options.limit);
269
- }
270
- finally {
271
- db.close();
272
- }
273
- }
274
14
  /**
275
15
  * Create search command
276
16
  */
@@ -301,96 +41,7 @@ Quality Score Formula:
301
41
  // SMI-825: Security filters
302
42
  .option('--safe-only', 'Only show skills that passed security scan')
303
43
  .option('--max-risk <number>', 'Maximum risk score (0-100, lower is safer)')
304
- .action(async (query, opts) => {
305
- try {
306
- // SMI-5039: lazy probe — only fires on the search command, NOT on
307
- // --version / --help (those short-circuit at commander level before
308
- // any .action runs). Honors SKILLSMITH_QUIET=true for scripted use.
309
- // Probe cannot throw; safe to await unconditionally.
310
- await probeEmbeddingCapability();
311
- const interactive = opts['interactive'];
312
- const dbPath = opts['db'];
313
- const limit = parseInt(opts['limit'], 10);
314
- const tier = opts['tier'];
315
- const category = opts['category'];
316
- const minScore = opts['min-score'] ? parseInt(opts['min-score'], 10) : undefined;
317
- // SMI-825: Security filters
318
- const safeOnly = opts['safe-only'];
319
- const maxRisk = opts['max-risk'] ? parseInt(opts['max-risk'], 10) : undefined;
320
- if (interactive) {
321
- await runInteractiveSearch(dbPath);
322
- }
323
- else if (query) {
324
- // Query provided - run search with optional filters
325
- const searchOpts = {
326
- db: dbPath,
327
- limit,
328
- };
329
- if (tier !== undefined) {
330
- searchOpts.tier = tier;
331
- }
332
- if (category !== undefined) {
333
- searchOpts.category = category;
334
- }
335
- if (minScore !== undefined) {
336
- searchOpts.minScore = minScore;
337
- }
338
- // SMI-825: Security filters
339
- if (safeOnly !== undefined) {
340
- searchOpts.safeOnly = safeOnly;
341
- }
342
- if (maxRisk !== undefined) {
343
- searchOpts.maxRisk = maxRisk;
344
- }
345
- await runSearch(query, searchOpts);
346
- }
347
- else if (tier !== undefined ||
348
- category !== undefined ||
349
- minScore !== undefined ||
350
- safeOnly !== undefined ||
351
- maxRisk !== undefined) {
352
- // No query but filters provided - run filter-only search
353
- console.log(chalk.blue('Running filter-only search...'));
354
- const searchOpts = {
355
- db: dbPath,
356
- limit,
357
- };
358
- if (tier !== undefined) {
359
- searchOpts.tier = tier;
360
- }
361
- if (category !== undefined) {
362
- searchOpts.category = category;
363
- }
364
- if (minScore !== undefined) {
365
- searchOpts.minScore = minScore;
366
- }
367
- // SMI-825: Security filters
368
- if (safeOnly !== undefined) {
369
- searchOpts.safeOnly = safeOnly;
370
- }
371
- if (maxRisk !== undefined) {
372
- searchOpts.maxRisk = maxRisk;
373
- }
374
- await runSearch('', searchOpts);
375
- }
376
- else {
377
- // No query and no filters
378
- console.log(chalk.yellow('Please provide a search query, filters (--tier, --category, --min-score, --safe-only, --max-risk), or use -i for interactive mode'));
379
- console.log(chalk.dim('Examples:'));
380
- console.log(chalk.dim(' skillsmith search "authentication"'));
381
- console.log(chalk.dim(' skillsmith search --tier verified'));
382
- console.log(chalk.dim(' skillsmith search --category security'));
383
- console.log(chalk.dim(' skillsmith search --tier community --min-score 70'));
384
- console.log(chalk.dim(' skillsmith search --safe-only'));
385
- console.log(chalk.dim(' skillsmith search --max-risk 30'));
386
- console.log(chalk.dim(' skillsmith search -i'));
387
- }
388
- }
389
- catch (error) {
390
- console.error(chalk.red('Search error:'), sanitizeError(error));
391
- process.exit(1);
392
- }
393
- });
44
+ .action(searchAction);
394
45
  return cmd;
395
46
  }
396
47
  export default createSearchCommand;
@@ -1 +1 @@
1
- {"version":3,"file":"search.js","sourceRoot":"","sources":["../../../src/commands/search.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"search.js","sourceRoot":"","sources":["../../../src/commands/search.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAIjD,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;AAE/B;;GAEG;AACH,MAAM,UAAU,mBAAmB;IACjC,MAAM,GAAG,GAAG,IAAI,OAAO,CAAC,QAAQ,CAAC;SAC9B,WAAW,CACV;;;;;;;;;;;;;;6EAcuE,CACxE;SACA,QAAQ,CACP,SAAS,EACT,+EAA+E,CAChF;SACA,MAAM,CAAC,mBAAmB,EAAE,gCAAgC,CAAC;SAC7D,MAAM,CAAC,iBAAiB,EAAE,oBAAoB,EAAE,eAAe,CAAC;SAChE,MAAM,CAAC,sBAAsB,EAAE,yBAAyB,EAAE,IAAI,CAAC;SAC/D,MAAM,CACL,mBAAmB,EACnB,mFAAmF,CACpF;SACA,MAAM,CACL,2BAA2B,EAC3B,0FAA0F,CAC3F;SACA,MAAM,CAAC,0BAA0B,EAAE,sDAAsD,CAAC;QAC3F,4BAA4B;SAC3B,MAAM,CAAC,aAAa,EAAE,4CAA4C,CAAC;SACnE,MAAM,CAAC,qBAAqB,EAAE,4CAA4C,CAAC;SAC3E,MAAM,CAAC,YAAY,CAAC,CAAA;IAEvB,OAAO,GAAG,CAAA;AACZ,CAAC;AAED,eAAe,mBAAmB,CAAA"}
@@ -0,0 +1,39 @@
1
+ /**
2
+ * SMI-5127: Sync command action implementations + telemetry wrappers.
3
+ *
4
+ * Sibling-split from sync.ts following the <command>.action.ts convention
5
+ * established by SMI-5040. The four impl functions are extracted here and
6
+ * wrapped with withTelemetry so the CLI_DISPATCHER_MAP coverage test can
7
+ * assert 100% telemetry coverage without importing the full commander tree.
8
+ *
9
+ * Opts-adaptation choice: each *ActionImpl accepts the same typed options
10
+ * struct that the sync.ts factory closures were building — the factory
11
+ * closures remain in sync.ts, do the same Record<string,…> → typed cast they
12
+ * always did, then call the wrapped action. This keeps sync.ts factories
13
+ * identical to before (no signature churn) and keeps sync.action.ts free of
14
+ * commander imports.
15
+ */
16
+ export declare const syncAction: (options: {
17
+ dbPath: string;
18
+ force: boolean;
19
+ dryRun: boolean;
20
+ json: boolean;
21
+ }) => Promise<void>;
22
+ export declare const syncStatusAction: (options: {
23
+ dbPath: string;
24
+ json: boolean;
25
+ }) => Promise<void>;
26
+ export declare const syncHistoryAction: (options: {
27
+ dbPath: string;
28
+ limit: number;
29
+ json: boolean;
30
+ }) => Promise<void>;
31
+ export declare const syncConfigAction: (options: {
32
+ dbPath: string;
33
+ enable: boolean | undefined;
34
+ disable: boolean | undefined;
35
+ frequency: string | undefined;
36
+ show: boolean | undefined;
37
+ json: boolean;
38
+ }) => Promise<void>;
39
+ //# sourceMappingURL=sync.action.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sync.action.d.ts","sourceRoot":"","sources":["../../../src/commands/sync.action.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAkZH,eAAO,MAAM,UAAU;YAnXb,MAAM;WACP,OAAO;YACN,OAAO;UACT,OAAO;mBAoXb,CAAA;AAEF,eAAO,MAAM,gBAAgB;YA5Q0B,MAAM;UAAQ,OAAO;mBAgR1E,CAAA;AAEF,eAAO,MAAM,iBAAiB;YA1KpB,MAAM;WACP,MAAM;UACP,OAAO;mBA4Kb,CAAA;AAEF,eAAO,MAAM,gBAAgB;YAnGnB,MAAM;YACN,OAAO,GAAG,SAAS;aAClB,OAAO,GAAG,SAAS;eACjB,MAAM,GAAG,SAAS;UACvB,OAAO,GAAG,SAAS;UACnB,OAAO;mBAkGb,CAAA"}