Files
PaperClipAI/packages
nickyleachandPaperclip bb88ff93f6 fix(adapter-utils): remove a lane-owned Gemini skill link without a recursive call
removeMaintainerOnlySkillSymlinks checked a manifest-named entry's shape,
then removed it with fs.rm(recursive, force) in every case. A concurrent
process could replace an approved symlink with a populated directory in
the gap between the check and the removal; the recursive call would then
delete that directory's contents.

Branch the removal on the shape the check confirmed: fs.unlink for a
symlink, so a directory swapped in during the race fails the unlink
instead of being deleted, and fs.rm(recursive) only for a directory the
check already approved.

Co-authored-by: Paperclip <noreply@paperclip.ing>
2026-09-11 17:32:18 +00:00
..