clawdhub 0.0.1 → 0.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (57) hide show
  1. package/bin/clawdhub.js +0 -0
  2. package/dist/cli/commands/auth.js +1 -1
  3. package/dist/cli/commands/auth.js.map +1 -1
  4. package/dist/cli/commands/delete.d.ts +11 -0
  5. package/dist/cli/commands/delete.js +65 -0
  6. package/dist/cli/commands/delete.js.map +1 -0
  7. package/dist/cli/commands/delete.test.d.ts +1 -0
  8. package/dist/cli/commands/delete.test.js +52 -0
  9. package/dist/cli/commands/delete.test.js.map +1 -0
  10. package/dist/cli/commands/publish.js +1 -5
  11. package/dist/cli/commands/publish.js.map +1 -1
  12. package/dist/cli/commands/publish.test.js +23 -4
  13. package/dist/cli/commands/publish.test.js.map +1 -1
  14. package/dist/cli/commands/skills.js +1 -1
  15. package/dist/cli/commands/skills.js.map +1 -1
  16. package/dist/cli/commands/sync.d.ts +1 -0
  17. package/dist/cli/commands/sync.js +316 -123
  18. package/dist/cli/commands/sync.js.map +1 -1
  19. package/dist/cli/commands/sync.test.js +161 -25
  20. package/dist/cli/commands/sync.test.js.map +1 -1
  21. package/dist/cli/registry.js +23 -8
  22. package/dist/cli/registry.js.map +1 -1
  23. package/dist/cli/registry.test.d.ts +1 -0
  24. package/dist/cli/registry.test.js +48 -0
  25. package/dist/cli/registry.test.js.map +1 -0
  26. package/dist/cli/types.d.ts +1 -0
  27. package/dist/cli.js +28 -2
  28. package/dist/cli.js.map +1 -1
  29. package/dist/config.d.ts +1 -1
  30. package/dist/config.js +1 -1
  31. package/dist/config.js.map +1 -1
  32. package/dist/discovery.js +1 -1
  33. package/dist/discovery.js.map +1 -1
  34. package/dist/http.d.ts +1 -1
  35. package/dist/http.js +1 -1
  36. package/dist/http.js.map +1 -1
  37. package/dist/http.test.js +1 -1
  38. package/dist/http.test.js.map +1 -1
  39. package/dist/schema/ark.d.ts +4 -0
  40. package/dist/schema/ark.js +26 -0
  41. package/dist/schema/ark.js.map +1 -0
  42. package/dist/schema/index.d.ts +5 -0
  43. package/dist/schema/index.js +5 -0
  44. package/dist/schema/index.js.map +1 -0
  45. package/dist/schema/routes.d.ts +12 -0
  46. package/dist/schema/routes.js +13 -0
  47. package/dist/schema/routes.js.map +1 -0
  48. package/dist/schema/schemas.d.ts +151 -0
  49. package/dist/schema/schemas.js +118 -0
  50. package/dist/schema/schemas.js.map +1 -0
  51. package/dist/schema/textFiles.d.ts +5 -0
  52. package/dist/schema/textFiles.js +66 -0
  53. package/dist/schema/textFiles.js.map +1 -0
  54. package/dist/skills.d.ts +1 -1
  55. package/dist/skills.js +1 -1
  56. package/dist/skills.js.map +1 -1
  57. package/package.json +2 -2
@@ -1,10 +1,12 @@
1
+ import { createHash } from 'node:crypto';
2
+ import { realpath } from 'node:fs/promises';
1
3
  import { homedir } from 'node:os';
2
4
  import { resolve } from 'node:path';
3
- import { intro, isCancel, multiselect, note, outro, text } from '@clack/prompts';
4
- import { ApiCliWhoamiResponseSchema, ApiRoutes, ApiSkillMetaResponseSchema, ApiSkillResolveResponseSchema, } from 'clawdhub-schema';
5
+ import { intro, isCancel, multiselect, outro } from '@clack/prompts';
5
6
  import semver from 'semver';
6
7
  import { readGlobalConfig } from '../../config.js';
7
8
  import { apiRequest, downloadZip } from '../../http.js';
9
+ import { ApiCliTelemetrySyncResponseSchema, ApiCliWhoamiResponseSchema, ApiRoutes, ApiSkillMetaResponseSchema, ApiSkillResolveResponseSchema, } from '../../schema/index.js';
8
10
  import { hashSkillFiles, hashSkillZip, listTextFiles } from '../../skills.js';
9
11
  import { getRegistry } from '../registry.js';
10
12
  import { findSkillFolders, getFallbackSkillRoots } from '../scanSkills.js';
@@ -19,86 +21,68 @@ export async function cmdSync(opts, options, inputAllowed) {
19
21
  fail('Not logged in. Run: clawdhub login');
20
22
  const registry = await getRegistryWithAuth(opts, token);
21
23
  const selectedRoots = buildScanRoots(opts, options.root);
24
+ const concurrency = normalizeConcurrency(options.concurrency);
22
25
  const spinner = createSpinner('Scanning for local skills');
23
- let scan = await scanRoots(selectedRoots);
24
- if (scan.skills.length === 0) {
26
+ const primaryScan = await scanRoots(selectedRoots);
27
+ let scan = primaryScan;
28
+ let telemetryScan = primaryScan;
29
+ if (primaryScan.skills.length === 0) {
25
30
  const fallback = getFallbackSkillRoots(opts.workdir);
26
- scan = await scanRoots(fallback);
31
+ const fallbackScan = await scanRoots(fallback);
27
32
  spinner.stop();
28
- if (scan.skills.length === 0)
33
+ telemetryScan = mergeScan(primaryScan, fallbackScan);
34
+ scan = fallbackScan;
35
+ if (fallbackScan.skills.length === 0)
29
36
  fail('No skills found (checked workdir and known Clawdis/Clawd locations)');
30
- note(`No skills in workdir. Found ${scan.skills.length} in legacy locations.`, formatList(scan.rootsWithSkills, 10));
37
+ printSection(`No skills in workdir. Found ${fallbackScan.skills.length} in fallback locations.`, formatList(fallbackScan.rootsWithSkills, 10));
31
38
  }
32
39
  else {
33
40
  spinner.stop();
34
41
  }
35
- let skills = scan.skills;
36
- skills = await maybeSelectLocalSkills(skills, {
37
- allowPrompt,
38
- all: Boolean(options.all),
39
- });
40
- if (skills.length === 0) {
41
- outro('Nothing selected.');
42
- return;
42
+ const deduped = dedupeSkillsBySlug(scan.skills);
43
+ const skills = deduped.skills;
44
+ if (deduped.duplicates.length > 0) {
45
+ printSection('Skipped duplicate slugs', formatCommaList(deduped.duplicates, 16));
43
46
  }
44
- const candidatesSpinner = createSpinner('Checking registry sync state');
45
- const candidates = [];
46
- let supportsResolve = null;
47
+ const parsingSpinner = createSpinner('Parsing local skills');
48
+ const locals = [];
47
49
  try {
48
- for (const skill of skills) {
50
+ let done = 0;
51
+ const parsed = await mapWithConcurrency(skills, Math.min(concurrency, 12), async (skill) => {
49
52
  const filesOnDisk = await listTextFiles(skill.folder);
50
53
  const hashed = hashSkillFiles(filesOnDisk);
51
- const fingerprint = hashed.fingerprint;
52
- const meta = await apiRequest(registry, { method: 'GET', path: `${ApiRoutes.skill}?slug=${encodeURIComponent(skill.slug)}` }, ApiSkillMetaResponseSchema).catch(() => null);
53
- const latestVersion = meta?.latestVersion?.version ?? null;
54
- if (!latestVersion) {
55
- candidates.push({
56
- ...skill,
57
- fingerprint,
58
- fileCount: filesOnDisk.length,
59
- status: 'new',
60
- matchVersion: null,
61
- latestVersion: null,
62
- });
63
- continue;
64
- }
65
- let matchVersion = null;
66
- if (supportsResolve !== false) {
67
- try {
68
- const resolved = await apiRequest(registry, {
69
- method: 'GET',
70
- path: `${ApiRoutes.skillResolve}?slug=${encodeURIComponent(skill.slug)}&hash=${encodeURIComponent(fingerprint)}`,
71
- }, ApiSkillResolveResponseSchema);
72
- supportsResolve = true;
73
- matchVersion = resolved.match?.version ?? null;
74
- }
75
- catch (error) {
76
- const message = formatError(error);
77
- if (/skill not found/i.test(message)) {
78
- matchVersion = null;
79
- }
80
- else if (/no matching routes found/i.test(message) || /not found/i.test(message)) {
81
- supportsResolve = false;
82
- }
83
- else {
84
- throw error;
85
- }
86
- }
87
- }
88
- if (supportsResolve === false) {
89
- const zip = await downloadZip(registry, { slug: skill.slug, version: latestVersion });
90
- const remote = hashSkillZip(zip).fingerprint;
91
- matchVersion = remote === fingerprint ? latestVersion : null;
92
- }
93
- candidates.push({
54
+ done += 1;
55
+ parsingSpinner.text = `Parsing local skills ${done}/${skills.length}`;
56
+ return {
94
57
  ...skill,
95
- fingerprint,
58
+ fingerprint: hashed.fingerprint,
96
59
  fileCount: filesOnDisk.length,
97
- status: matchVersion ? 'synced' : 'update',
98
- matchVersion,
99
- latestVersion,
100
- });
101
- }
60
+ };
61
+ });
62
+ locals.push(...parsed);
63
+ }
64
+ catch (error) {
65
+ parsingSpinner.fail(formatError(error));
66
+ throw error;
67
+ }
68
+ finally {
69
+ parsingSpinner.stop();
70
+ }
71
+ const candidatesSpinner = createSpinner('Checking registry sync state');
72
+ const candidates = [];
73
+ const resolveSupport = { value: null };
74
+ try {
75
+ let done = 0;
76
+ const resolved = await mapWithConcurrency(locals, Math.min(concurrency, 16), async (skill) => {
77
+ try {
78
+ return await checkRegistrySyncState(registry, skill, resolveSupport);
79
+ }
80
+ finally {
81
+ done += 1;
82
+ candidatesSpinner.text = `Checking registry sync state ${done}/${locals.length}`;
83
+ }
84
+ });
85
+ candidates.push(...resolved);
102
86
  }
103
87
  catch (error) {
104
88
  candidatesSpinner.fail(formatError(error));
@@ -107,22 +91,30 @@ export async function cmdSync(opts, options, inputAllowed) {
107
91
  finally {
108
92
  candidatesSpinner.stop();
109
93
  }
94
+ await reportTelemetryIfEnabled({
95
+ token,
96
+ registry,
97
+ scan: telemetryScan,
98
+ candidates,
99
+ });
110
100
  const synced = candidates.filter((candidate) => candidate.status === 'synced');
111
- if (synced.length > 0) {
112
- const lines = synced
113
- .map((candidate) => `${candidate.slug} synced (${candidate.matchVersion ?? 'unknown'})`)
114
- .join('\n');
115
- note('Already synced', lines);
116
- }
117
101
  const actionable = candidates.filter((candidate) => candidate.status !== 'synced');
102
+ const bump = options.bump ?? 'patch';
118
103
  if (actionable.length === 0) {
119
- outro('Everything is already synced.');
104
+ if (synced.length > 0) {
105
+ printSection('Already synced', formatCommaList(synced.map(formatSyncedSummary), 16));
106
+ }
107
+ outro('Nothing to sync.');
120
108
  return;
121
109
  }
110
+ printSection('To sync', formatBulletList(actionable.map((candidate) => formatActionableLine(candidate, bump)), 20));
111
+ if (synced.length > 0) {
112
+ printSection('Already synced', formatSyncedDisplay(synced));
113
+ }
122
114
  const selected = await selectToUpload(actionable, {
123
115
  allowPrompt,
124
116
  all: Boolean(options.all),
125
- bump: options.bump ?? 'patch',
117
+ bump,
126
118
  });
127
119
  if (selected.length === 0) {
128
120
  outro('Nothing selected.');
@@ -132,7 +124,6 @@ export async function cmdSync(opts, options, inputAllowed) {
132
124
  outro(`Dry run: would upload ${selected.length} skill(s).`);
133
125
  return;
134
126
  }
135
- const bump = options.bump ?? 'patch';
136
127
  const tags = options.tags ?? 'latest';
137
128
  for (const skill of selected) {
138
129
  const { publishVersion, changelog } = await resolvePublishMeta(skill, {
@@ -150,15 +141,136 @@ export async function cmdSync(opts, options, inputAllowed) {
150
141
  }
151
142
  outro(`Uploaded ${selected.length} skill(s).`);
152
143
  }
144
+ async function reportTelemetryIfEnabled(params) {
145
+ if (isTelemetryDisabled())
146
+ return;
147
+ const versionBySlug = new Map();
148
+ for (const candidate of params.candidates) {
149
+ versionBySlug.set(candidate.slug, candidate.matchVersion ?? null);
150
+ }
151
+ const roots = params.scan.roots.map((root) => ({
152
+ rootId: rootTelemetryId(root),
153
+ label: formatRootLabel(root),
154
+ skills: (params.scan.skillsByRoot[root] ?? []).map((skill) => ({
155
+ slug: skill.slug,
156
+ version: versionBySlug.get(skill.slug) ?? null,
157
+ })),
158
+ }));
159
+ try {
160
+ await apiRequest(params.registry, {
161
+ method: 'POST',
162
+ path: ApiRoutes.cliTelemetrySync,
163
+ token: params.token,
164
+ body: { roots },
165
+ }, ApiCliTelemetrySyncResponseSchema);
166
+ }
167
+ catch {
168
+ // ignore telemetry failures
169
+ }
170
+ }
171
+ function isTelemetryDisabled() {
172
+ const raw = process.env.CLAWDHUB_DISABLE_TELEMETRY;
173
+ if (!raw)
174
+ return false;
175
+ return ['1', 'true', 'yes', 'on'].includes(raw.trim().toLowerCase());
176
+ }
153
177
  function buildScanRoots(opts, extraRoots) {
154
178
  const roots = [opts.workdir, opts.dir, ...(extraRoots ?? [])];
155
179
  return Array.from(new Set(roots.map((root) => resolve(root))));
156
180
  }
181
+ function normalizeConcurrency(value) {
182
+ const raw = typeof value === 'number' ? value : 4;
183
+ const rounded = Number.isFinite(raw) ? Math.round(raw) : 4;
184
+ return Math.min(32, Math.max(1, rounded));
185
+ }
186
+ async function mapWithConcurrency(items, limit, fn) {
187
+ const results = Array.from({ length: items.length });
188
+ let nextIndex = 0;
189
+ const workerCount = Math.min(Math.max(1, limit), items.length || 1);
190
+ async function worker() {
191
+ while (true) {
192
+ const index = nextIndex;
193
+ nextIndex += 1;
194
+ if (index >= items.length)
195
+ return;
196
+ results[index] = await fn(items[index]);
197
+ }
198
+ }
199
+ await Promise.all(Array.from({ length: workerCount }, () => worker()));
200
+ return results;
201
+ }
202
+ async function checkRegistrySyncState(registry, skill, resolveSupport) {
203
+ if (resolveSupport.value !== false) {
204
+ try {
205
+ const resolved = await apiRequest(registry, {
206
+ method: 'GET',
207
+ path: `${ApiRoutes.skillResolve}?slug=${encodeURIComponent(skill.slug)}&hash=${encodeURIComponent(skill.fingerprint)}`,
208
+ }, ApiSkillResolveResponseSchema);
209
+ resolveSupport.value = true;
210
+ const latestVersion = resolved.latestVersion?.version ?? null;
211
+ const matchVersion = resolved.match?.version ?? null;
212
+ if (!latestVersion) {
213
+ return {
214
+ ...skill,
215
+ status: 'new',
216
+ matchVersion: null,
217
+ latestVersion: null,
218
+ };
219
+ }
220
+ return {
221
+ ...skill,
222
+ status: matchVersion ? 'synced' : 'update',
223
+ matchVersion,
224
+ latestVersion,
225
+ };
226
+ }
227
+ catch (error) {
228
+ const message = formatError(error);
229
+ if (/skill not found/i.test(message) || /HTTP 404/i.test(message)) {
230
+ resolveSupport.value = true;
231
+ return {
232
+ ...skill,
233
+ status: 'new',
234
+ matchVersion: null,
235
+ latestVersion: null,
236
+ };
237
+ }
238
+ if (/no matching routes found/i.test(message)) {
239
+ resolveSupport.value = false;
240
+ }
241
+ else {
242
+ throw error;
243
+ }
244
+ }
245
+ }
246
+ const meta = await apiRequest(registry, { method: 'GET', path: `${ApiRoutes.skill}?slug=${encodeURIComponent(skill.slug)}` }, ApiSkillMetaResponseSchema).catch(() => null);
247
+ const latestVersion = meta?.latestVersion?.version ?? null;
248
+ if (!latestVersion) {
249
+ return {
250
+ ...skill,
251
+ status: 'new',
252
+ matchVersion: null,
253
+ latestVersion: null,
254
+ };
255
+ }
256
+ const zip = await downloadZip(registry, { slug: skill.slug, version: latestVersion });
257
+ const remote = hashSkillZip(zip).fingerprint;
258
+ const matchVersion = remote === skill.fingerprint ? latestVersion : null;
259
+ return {
260
+ ...skill,
261
+ status: matchVersion ? 'synced' : 'update',
262
+ matchVersion,
263
+ latestVersion,
264
+ };
265
+ }
157
266
  async function scanRoots(roots) {
158
267
  const all = [];
159
268
  const rootsWithSkills = [];
160
- for (const root of roots) {
269
+ const uniqueRoots = await dedupeRoots(roots);
270
+ const skillsByRoot = {};
271
+ for (const root of uniqueRoots) {
161
272
  const found = await findSkillFolders(root);
273
+ skillsByRoot[root] = found;
162
274
  if (found.length > 0)
163
275
  rootsWithSkills.push(root);
164
276
  all.push(...found);
@@ -167,32 +279,40 @@ async function scanRoots(roots) {
167
279
  for (const folder of all) {
168
280
  byFolder.set(folder.folder, folder);
169
281
  }
170
- return { skills: Array.from(byFolder.values()), rootsWithSkills };
282
+ return {
283
+ roots: uniqueRoots,
284
+ skillsByRoot,
285
+ skills: Array.from(byFolder.values()),
286
+ rootsWithSkills,
287
+ };
171
288
  }
172
- async function maybeSelectLocalSkills(skills, params) {
173
- if (params.all || !params.allowPrompt)
174
- return skills;
175
- if (skills.length <= 30)
176
- return skills;
177
- const valueByKey = new Map();
178
- const choices = skills.map((skill) => {
179
- const key = skill.folder;
180
- valueByKey.set(key, skill);
181
- return {
182
- value: key,
183
- label: skill.slug,
184
- hint: abbreviatePath(skill.folder),
185
- };
186
- });
187
- const picked = await multiselect({
188
- message: `Found ${skills.length} local skills — select what to sync`,
189
- options: choices,
190
- initialValues: [],
191
- required: false,
192
- });
193
- if (isCancel(picked))
194
- fail('Canceled');
195
- return picked.map((key) => valueByKey.get(String(key))).filter(Boolean);
289
+ function mergeScan(left, right) {
290
+ const mergedRoots = Array.from(new Set([...left.roots, ...right.roots]));
291
+ const skillsByRoot = {};
292
+ for (const root of mergedRoots) {
293
+ skillsByRoot[root] = right.skillsByRoot[root] ?? left.skillsByRoot[root] ?? [];
294
+ }
295
+ const byFolder = new Map();
296
+ for (const entry of [...left.skills, ...right.skills]) {
297
+ byFolder.set(entry.folder, entry);
298
+ }
299
+ const skills = Array.from(byFolder.values());
300
+ const rootsWithSkills = mergedRoots.filter((root) => (skillsByRoot[root]?.length ?? 0) > 0);
301
+ return { roots: mergedRoots, skillsByRoot, skills, rootsWithSkills };
302
+ }
303
+ async function dedupeRoots(roots) {
304
+ const seen = new Set();
305
+ const unique = [];
306
+ for (const root of roots) {
307
+ const resolved = resolve(root);
308
+ const canonical = await realpath(resolved).catch(() => null);
309
+ const key = canonical ?? resolved;
310
+ if (seen.has(key))
311
+ continue;
312
+ seen.add(key);
313
+ unique.push(key);
314
+ }
315
+ return unique;
196
316
  }
197
317
  async function selectToUpload(candidates, params) {
198
318
  if (params.all || !params.allowPrompt)
@@ -201,19 +321,16 @@ async function selectToUpload(candidates, params) {
201
321
  const choices = candidates.map((candidate) => {
202
322
  const key = candidate.folder;
203
323
  valueByKey.set(key, candidate);
204
- const latest = candidate.latestVersion;
205
- const next = latest ? semver.inc(latest, params.bump) : null;
206
- const status = candidate.status === 'new' ? 'NEW' : latest && next ? `UPDATE ${latest} → ${next}` : 'UPDATE';
207
324
  return {
208
325
  value: key,
209
- label: `${candidate.slug} ${status}`,
210
- hint: candidate.folder,
326
+ label: `${candidate.slug} ${formatActionableStatus(candidate, params.bump)}`,
327
+ hint: `${abbreviatePath(candidate.folder)} | ${candidate.fileCount} files`,
211
328
  };
212
329
  });
213
330
  const picked = await multiselect({
214
331
  message: 'Select skills to upload',
215
332
  options: choices,
216
- initialValues: candidates.length <= 10 ? choices.map((choice) => choice.value) : [],
333
+ initialValues: choices.map((choice) => choice.value),
217
334
  required: false,
218
335
  });
219
336
  if (isCancel(picked))
@@ -234,20 +351,7 @@ async function resolvePublishMeta(skill, params) {
234
351
  const fromFlag = params.changelogFlag?.trim();
235
352
  if (fromFlag)
236
353
  return { publishVersion, changelog: fromFlag };
237
- if (!params.allowPrompt) {
238
- return { publishVersion, changelog: 'Sync update' };
239
- }
240
- const entered = await text({
241
- message: `Changelog for ${skill.slug}@${publishVersion}`,
242
- placeholder: 'What changed?',
243
- defaultValue: 'Sync update',
244
- });
245
- if (isCancel(entered))
246
- fail('Canceled');
247
- const changelog = String(entered ?? '').trim();
248
- if (!changelog)
249
- fail('--changelog required for updates');
250
- return { publishVersion, changelog };
354
+ return { publishVersion, changelog: '' };
251
355
  }
252
356
  async function getRegistryWithAuth(opts, token) {
253
357
  const registry = await getRegistry(opts, { cache: true });
@@ -264,10 +368,99 @@ function formatList(values, max) {
264
368
  const rest = values.length - head.length;
265
369
  return [...head, `… +${rest} more`].join('\n');
266
370
  }
371
+ function printSection(title, body) {
372
+ const trimmed = body?.trim();
373
+ if (!trimmed) {
374
+ console.log(title);
375
+ return;
376
+ }
377
+ if (trimmed.includes('\n')) {
378
+ console.log(`\n${title}\n${trimmed}`);
379
+ return;
380
+ }
381
+ console.log(`${title}: ${trimmed}`);
382
+ }
267
383
  function abbreviatePath(value) {
268
384
  const home = homedir();
269
385
  if (value.startsWith(home))
270
386
  return `~${value.slice(home.length)}`;
271
387
  return value;
272
388
  }
389
+ function rootTelemetryId(value) {
390
+ return createHash('sha256').update(value).digest('hex');
391
+ }
392
+ function formatRootLabel(value) {
393
+ const home = homedir();
394
+ if (value === home)
395
+ return '~';
396
+ const normalized = value.replaceAll('\\', '/');
397
+ const normalizedHome = home.replaceAll('\\', '/');
398
+ const isHome = normalized === normalizedHome || normalized.startsWith(`${normalizedHome}/`);
399
+ const stripped = isHome ? normalized.slice(normalizedHome.length).replace(/^\//, '') : normalized;
400
+ const parts = stripped.split('/').filter(Boolean);
401
+ const tail = parts.slice(-2).join('/');
402
+ if (!tail)
403
+ return isHome ? '~' : '…';
404
+ return isHome ? `~/${tail}` : `…/${tail}`;
405
+ }
406
+ function dedupeSkillsBySlug(skills) {
407
+ const bySlug = new Map();
408
+ for (const skill of skills) {
409
+ const existing = bySlug.get(skill.slug);
410
+ if (existing)
411
+ existing.push(skill);
412
+ else
413
+ bySlug.set(skill.slug, [skill]);
414
+ }
415
+ const unique = [];
416
+ const duplicates = [];
417
+ for (const [slug, entries] of bySlug.entries()) {
418
+ unique.push(entries[0]);
419
+ if (entries.length > 1)
420
+ duplicates.push(`${slug} (${entries.length})`);
421
+ }
422
+ return { skills: unique, duplicates };
423
+ }
424
+ function formatActionableStatus(candidate, bump) {
425
+ if (candidate.status === 'new')
426
+ return 'NEW';
427
+ const latest = candidate.latestVersion;
428
+ const next = latest ? semver.inc(latest, bump) : null;
429
+ if (latest && next)
430
+ return `UPDATE ${latest} → ${next}`;
431
+ return 'UPDATE';
432
+ }
433
+ function formatActionableLine(candidate, bump) {
434
+ return `${candidate.slug} ${formatActionableStatus(candidate, bump)} (${candidate.fileCount} files)`;
435
+ }
436
+ function formatSyncedLine(candidate) {
437
+ const version = candidate.matchVersion ?? candidate.latestVersion ?? 'unknown';
438
+ return `${candidate.slug} synced (${version})`;
439
+ }
440
+ function formatSyncedSummary(candidate) {
441
+ const version = candidate.matchVersion ?? candidate.latestVersion;
442
+ return version ? `${candidate.slug}@${version}` : candidate.slug;
443
+ }
444
+ function formatBulletList(lines, max) {
445
+ if (lines.length <= max)
446
+ return lines.map((line) => `- ${line}`).join('\n');
447
+ const head = lines.slice(0, max);
448
+ const rest = lines.length - head.length;
449
+ return [...head, `... +${rest} more`].map((line) => `- ${line}`).join('\n');
450
+ }
451
+ function formatSyncedDisplay(synced) {
452
+ const lines = synced.map(formatSyncedLine);
453
+ if (lines.length <= 12)
454
+ return formatBulletList(lines, 12);
455
+ return formatCommaList(synced.map(formatSyncedSummary), 24);
456
+ }
457
+ function formatCommaList(values, max) {
458
+ if (values.length === 0)
459
+ return '';
460
+ if (values.length <= max)
461
+ return values.join(', ');
462
+ const head = values.slice(0, Math.max(1, max - 1));
463
+ const rest = values.length - head.length;
464
+ return `${head.join(', ')}, ... +${rest} more`;
465
+ }
273
466
  //# sourceMappingURL=sync.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"sync.js","sourceRoot":"","sources":["../../../src/cli/commands/sync.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sync.js","sourceRoot":"","sources":["../../../src/cli/commands/sync.ts"],"names":[],"mappings":"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"}