Skip to content

Commit c9ed495

Browse files
committed
refactor: use registryVersion field instead of parsing attempt messages
Add registryVersion to ResolveResult so shipped skills fallback doesn't need to regex-parse human readable log messages.
1 parent 8dab414 commit c9ed495

4 files changed

Lines changed: 7 additions & 5 deletions

File tree

src/commands/sync-parallel.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -401,7 +401,7 @@ async function syncBaseSkill(
401401
const localDeps = await readLocalDependencies(cwd).catch(() => [])
402402
const localVersion = localDeps.find(d => d.name === packageName)?.version
403403

404-
const { package: resolvedPkg, attempts } = await resolvePackageDocsWithAttempts(requestedTag ? packageSpec : packageName, {
404+
const { package: resolvedPkg, attempts, registryVersion } = await resolvePackageDocsWithAttempts(requestedTag ? packageSpec : packageName, {
405405
version: localVersion,
406406
cwd,
407407
onProgress: step => update(packageName, 'resolving', RESOLVE_STEP_LABELS[step]),
@@ -415,7 +415,7 @@ async function syncBaseSkill(
415415

416416
if (!resolved) {
417417
// Even without docs, the package may ship its own skills (skills-npm convention)
418-
const shippedVersion = localVersion || attempts.find(a => a.source === 'npm' && a.status === 'success')?.message?.match(/@(.+)$/)?.[1] || 'latest'
418+
const shippedVersion = localVersion || registryVersion || 'latest'
419419
const earlyShipped = handleShippedSkills(packageName, shippedVersion, cwd, config.agent, config.global)
420420
if (earlyShipped) {
421421
const shared = !config.global && getSharedSkillsDir(cwd)

src/commands/sync.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -291,7 +291,7 @@ async function syncSinglePackage(packageSpec: string, config: SyncConfig): Promi
291291

292292
if (!resolved) {
293293
// Even without docs, the package may ship its own skills (skills-npm convention)
294-
const shippedVersion = localVersion || resolveResult.attempts.find(a => a.source === 'npm' && a.status === 'success')?.message?.match(/@(.+)$/)?.[1] || 'latest'
294+
const shippedVersion = localVersion || resolveResult.registryVersion || 'latest'
295295
const earlyShipped = handleShippedSkills(packageName, shippedVersion, cwd, config.agent, config.global)
296296
if (earlyShipped) {
297297
const shared = !config.global && getSharedSkillsDir(cwd)

src/sources/npm.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -375,10 +375,10 @@ export async function resolvePackageDocsWithAttempts(packageName: string, option
375375

376376
// Must have at least one source
377377
if (!result.docsUrl && !result.llmsUrl && !result.readmeUrl && !result.gitDocsUrl) {
378-
return { package: null, attempts }
378+
return { package: null, attempts, registryVersion: pkg.version }
379379
}
380380

381-
return { package: result, attempts }
381+
return { package: result, attempts, registryVersion: pkg.version }
382382
}
383383

384384
/**

src/sources/types.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,4 +74,6 @@ export interface ResolveAttempt {
7474
export interface ResolveResult {
7575
package: ResolvedPackage | null
7676
attempts: ResolveAttempt[]
77+
/** npm registry version, available even when doc resolution fails */
78+
registryVersion?: string
7779
}

0 commit comments

Comments
 (0)