@alavida/agentpack
Version:
Compiler-driven lifecycle CLI for source-backed agent skills
44 lines (36 loc) • 1.44 kB
JavaScript
import {
ensureResolvedExportIsValid,
loadSkillTargetContext,
resolveSingleSkillTarget,
} from '../../domain/skills/skill-target-resolution.js';
export function collectAuthoredDependencyPackageDirs(repoRoot, rootResolved, { cwd = repoRoot } = {}) {
const context = loadSkillTargetContext(repoRoot, { includeInstalled: false });
const authoredGraph = context.authoredGraph;
if (!authoredGraph || !rootResolved?.export) return [];
const queue = [rootResolved.export.id];
const seenExports = new Set();
const seenPackages = new Set([rootResolved.package.packageName]);
const packageDirs = [];
while (queue.length > 0) {
const exportId = queue.shift();
if (seenExports.has(exportId)) continue;
seenExports.add(exportId);
const exportNode = authoredGraph.exports?.[exportId];
if (!exportNode?.compiled) continue;
for (const skillImport of Object.values(exportNode.compiled.skillImports || {})) {
let dependency;
try {
dependency = ensureResolvedExportIsValid(
resolveSingleSkillTarget(repoRoot, skillImport.target, { includeInstalled: false, cwd })
);
} catch {
continue;
}
queue.push(dependency.export.id);
if (seenPackages.has(dependency.package.packageName)) continue;
seenPackages.add(dependency.package.packageName);
packageDirs.push(dependency.package.packageDir);
}
}
return packageDirs;
}