Extension points
Most of what a plugin declares is about its own service. An extension point
is different: a published place where a plugin may add a row to lemonfiber
itself. At the revision this site pins there are two extension points, and both
belong to the doctor — a check it runs, and the remedy it shows when that check
does not pass. Each one below names what a manifest has to declare in
[requires] to use it.
The rules every row keeps
Section titled “The rules every row keeps”- Namespaced. A contributed id is
<plugin-id>:<name>, and may not take an id a bundled row holds, by exact name or inside a family the bundled rows own. - A check has a remedy. Every contributed check needs at least one, and a
remedy’s
fornames a check of the same plugin. - Rendered, never run. A remedy is text the error renderer shows you. A repair that acts would be a recipe, and recipes are not run by this build.
- Its own service only. A contributed check asks the plugin’s own service and nothing else.
- Beside, not instead. A contributed check runs alongside the bundled ones and cannot replace, reorder or silence one.
A contributed check runs with every lemonfiber doctor, and on its own with
lemonfiber doctor --only <plugin-id>:<name>. One that does not hold is raised
as
PLUGIN-1,
carrying the plugin’s own remedy. There is no dashboard panel, command or
acting repair a plugin can add; those places are fixed.
The contract, with its reasons, is extension points.
Every point
Section titled “Every point”Read out of contract/extension-points.json at the revision this site pins,
which is also what lemonfiber plugin extension-points prints. The fields a row
carries are defined in the manifest.
doctor.check
A check the doctor runs, alongside the bundled ones.
- A plugin declares
doctor.contribute- It lands in
- the diagnostics register
- It is run by
- the check engine — independent, bounded, four verdicts, a remedy on anything that does not pass
- Every row carries
idtitlecategoryrequestexpectwhyfixture- A row may carry
timeout_sserviceexpected
timeout_s runs from 1 to 30, and is 10 when a row leaves it out
category is one of environmentstoragenetworkvpncredentialsservicesprovidersqueueconfig
Ids the bundled rows already hold
config.aggregator-guardedconfig.credential-permissionsconfig.download-clientconfig.household-tellingcredentials.credentials.indexerenvironment.apienvironment.autostartenvironment.composeenvironment.enginenetwork.bindingsproviders.indexer.providers.indexersproviders.usenetproviders.usenet.services.decline-keyservices.quality-guidesservices.releasesservices.releases.services.request-gate-recordstorage.hardlinksstorage.modestorage.permissionsstorage.quality-headroomstorage.single-mountstorage.spacevpn.egress-matchvpn.egress-sourcesvpn.killswitchvpn.port-forwardvpn.port-forward-clientvpn.tunnelvpn.tunnel-restoredvpn.unprotected
doctor.remedy
What to do about a contributed check that did not pass.
- A plugin declares
doctor.contribute- It lands in
- the remedies a finding carries
- It is run by
- the error renderer — rendered, never executed
- Every row carries
idforactionwhy- A row may carry
detail
Ids the bundled rows already hold
No bundled row holds an id here.