Each extension's manifest declares an engines.ifcLiteSdk range
(e.g. >=2.0.0, ^2.1, 2.x). When the viewer SDK bumps, this
module decides which installed extensions need re-evaluation:
compatible — the declared range still matches the new
SDK version. Pass-through.
outdated — the range explicitly excludes the new SDK.
Needs migration / repair.
permissive — the range is so loose it accepts the new
SDK without comment, but the SDK bump crosses
a major version. Worth a re-test, even if the
range technically passes.
The matcher is small and dependency-free — semver in its full glory
is overkill for what extension manifests need. We support:
Single-version pins (2.0.0)
Range comparators (>=, >, <=, <, =, ^, ~)
Logical AND inside one range string (space-separated)
Wildcards (*, x, X) and the || OR operator are intentionally
not supported; manifests that use them parse but everything resolves
to permissive so the user is asked to confirm.
SDK-version compatibility checker.
Each extension's manifest declares an
engines.ifcLiteSdkrange (e.g.>=2.0.0,^2.1,2.x). When the viewer SDK bumps, this module decides which installed extensions need re-evaluation:compatible— the declared range still matches the new SDK version. Pass-through.outdated— the range explicitly excludes the new SDK. Needs migration / repair.permissive— the range is so loose it accepts the new SDK without comment, but the SDK bump crosses a major version. Worth a re-test, even if the range technically passes.The matcher is small and dependency-free — semver in its full glory is overkill for what extension manifests need. We support:
2.0.0)>=,>,<=,<,=,^,~)Wildcards (
*,x,X) and the||OR operator are intentionally not supported; manifests that use them parse but everything resolves topermissiveso the user is asked to confirm.Spec: docs/architecture/ai-customization/06-self-improvement.md §5.