mirror of
https://github.com/software-mansion/argent.git
synced 2026-09-14 19:27:14 +08:00
b9d1f7fcb9
`argent update --local` re-synced the machine-wide skills store as well as the project's. `refreshArgentSkills` took no scope and acted on every store that tracked an argent skill, so a project-scoped update rewrote the skills every other project on the machine uses — pinning them, via the running package's own version, to a version the global binary is not. A store belongs to exactly one install: the global lock to the binary on PATH, a project's lock to whichever install serves that project. Callers now say which stores their update owns. The scope is required rather than defaulted, so a call site that forgets one is a compile error instead of a silent write to a shared store. This also closes the mirror case — a global update no longer rewrites a project's committed lock when that project runs a local install. Note the project scope is not "the local install's scope": a non-interactive global install writes a project lock too, and that lock tracks the global binary. The install mode is what tells them apart. The more damaging half was the prune. Obsolete skills are the difference against the running package's bundled set, and the removal carried `-g` for the global store — so an older install would classify everything added since as orphaned and delete it machine-wide. Between v0.15.0 and now that is two real skills. Pruning a store is now allowed only when it was last written by a version no newer than ours; an unreadable or unversioned lock means we cannot tell, so we leave it alone. Syncing stays unconditional — it is additive and recoverable, deletion is not. A store left untouched is now named in the output, so it does not just go quiet. Fixes #637