Namespace Serenity.Editor.PackageBootstrapper
Classes
RestorePayloadEntry
One restorable file shipped as a payload: where it belongs, its GUID, and its original meta.
RestorePayloadIndex
JsonUtility-compatible wrapper for the restore-payload index shipped next to the payloads.
RestorePayloadPlanner
Selects the shipped assets at hostage risk during an additive package upgrade and names their restore
payloads. A shipped file is at hostage risk when its GUID appears in the PREVIOUS release's snapshot at
a different path — a moved or renamed file: in an upgrading project the old copy still holds that GUID
during import, so Unity silently skips the incoming file. Plain payload copies (.bytes) always
import — no GUID can block them — which lets the cleaner restore the blocked files afterwards without a
package re-import. Pure: no Unity API calls, so it is unit-testable without a running editor.
SerenityAiAgentSkillsInstaller
Installs the Serenity agent skills bundled under Assets/Serenity/Documentation/Skills into the project-level skill directories of the selected AI coding agents. Every agent reads the same open Agent Skills format (a folder with a SKILL.md manifest); only the destination directory differs per agent. The bundled copies are inert where they sit; agents never scan under Assets/.
SerenityPackageDependencyInstaller
Standalone dependency installer that lives in a zero-dependency Editor assembly. Detects missing Unity packages required by Serenity and installs them sequentially.
This assembly (Serenity.PackageBootstrapper.Editor) has no references to
any Serenity runtime or editor assembly and no references to optional Unity packages.
It compiles even when the rest of Serenity cannot, which is exactly the scenario it
exists to fix.
- UnityEditor.InitializeOnLoadMethodAttribute startup hook runs once per editor session and shows a confirmation dialog when packages are missing.
- Menu item
Tools/Serenity/Install Required Unity Packagesfor manual use. - Packages install one at a time via UnityEditor.PackageManager.Client.Add(System.String).
State is stored in UnityEditor.SessionState so it survives domain reloads but resets each editor session, preventing repeated popup spam.
SerenityPackageExporter
Exports the Serenity .unitypackage for Asset Store distribution, automatically excluding paths that should not ship to customers (tests, examples, documentation build tools, etc.).
ShippedAssetEntry
A shipped asset's identity as of a package export: its GUID and project path.
ShippedAssetsManifest
JsonUtility-compatible wrapper for the shipped-assets snapshot committed at each export.
TombstonePlanner
Plans the tombstones that make the first upgrade over an old install fully self-contained. For every path the previous release shipped under the owned framework roots that the current version no longer ships, the package carries an inert file at that exact path with that exact previous-release GUID: on import Unity overwrites the customer's orphan in place (same path + GUID = a normal asset update), so no stale code survives to break compilation, the just-imported cleaner loads in the SAME session, and it silently sweeps the tombstones — they are deliberately absent from the shipped snapshot. Pure: no Unity API calls, so it is unit-testable without a running editor.