Plugin Runner
The Plugin Runner is the analysis-tab surface for invoking installed plugins manually. It's where you'd validate a new plugin before wiring it up to a recurring KPI job, or one-shot a math function on a specific lap.
Find it at Analysis → Plugin Runner. Route:
/analysis/plugin-runner.
Layout
| Pane | What it shows |
|---|---|
| Left (280 px on ≥900 px width) | Installed plugins list, grouped under an Installed Plugins header |
| Right top | Metadata card: manifest id, row id, version, interfaces, capabilities, publisher, description |
| Right middle | One invocation card per interface: Math, KPI Processor, … |
| Right bottom | History card — last 10 invocations across all surfaces |
Math card
Function-name TextField + an args row builder. Each arg has:
- Kind dropdown:
number/text/duration - Value field
Hit Invoke to run the function. The result panel pretty-prints
the typed PluginValue (red border for error).
The form is pre-filled with the working rolling-avg-rpm demo so
first-time users can hit Invoke immediately.
KPI card
Lap id field + telemetry JSON textarea pre-filled with 20 RPM
samples. Hit Run to invoke KpiProcessorHandler.process(lapId, lap). Each KPI result renders in its own panel.
What you can do today
- See every installed plugin
- Invoke
mathandkpiProcessorinterfaces against arbitrary inputs - See the full invocation history (last 10) with timestamp, request, response
What's coming
- Math function dropdown (today the field is free-text) once
the server exposes
GET /plugins/:id/math/functions - In-browser execution via flutter_js so you don't round-trip to the server for every invocation
- Schedule a plugin to run automatically when new laps arrive (currently you have to hit Run manually)
- Capability-grant prompts — today capability requests are log-only; UI for granting / revoking is queued
- Inputs autocomplete from the selected session's actual telemetry