Kshana voor JetBrains-IDE's
Install: Kshana — PNT simulator op de JetBrains Marketplace — of, in elke JetBrains-IDE, Settings → Plugins → Marketplace → search "Kshana".
Een native plug-in die de PNT-veerkrachtsimulator Kshana uitvoert vanuit elke JetBrains-IDE (IntelliJ IDEA, CLion, RustRover, PyCharm, …). Klik met de rechtermuisknop op een scenario .toml → Run Kshana Scenario; de kwaliteitsmaten en het resultaat-JSON stromen naar het toolvenster Kshana.
Vult de MCP-server aan (die JetBrains AI Assistant toegang tot Kshana geeft): deze plug-in is het menselijke pad met aanwijzen en klikken.
Wat het doet#
- Actie Run Kshana Scenario op elke
.toml(contextmenu's van editor en projectweergave) — voertkshana <file>uit en toont de uitvoer in het toolvenster Kshana. - Assess Receiver Trust op een scenario
receiver-trust.toml(kshana receiver-trust): de vertrouwenstijdlijn, met een score van 0-100 en redenen voor een vaartuig. Adviserende software, geen typegoedgekeurde navigatieapparatuur (IEC 61108, IEC 61162): de gezagvoerder of exploitant blijft verantwoordelijk voor de navigatie van het vaartuig. - Generate Training NMEA op een
nmea-scenario.toml(kshana nmea-scenario): synthetische brug-NMEA en een instructeurslog, naast het scenario geschreven. Alleen tekst; voor training, nooit voor de live navigatiesystemen van een vaartuig. - Build Interference Map op een ADS-B- of AIS-
.csv(projectweergave; vraagt om welke toegestane dataset het gaat) en Route Exposure op een routebestand (vraagt om de map met kaarten). Een gedegradeerde cel geeft interferentie niet aan als oorzaak; geen voorspelling. - Export Test-Bench Files op een scenario
.toml(kshana bench-export): voertuigbeweging, NMEA en gelabelde gebeurtenissen voor een GNSS-simulator in het laboratorium, naast het scenario geschreven. Het schrijft geen signaal; gebruik een simulator alleen waar dat is toegestaan. - Build Compliance Report op een runresultaat
.json(kshana compliance-report) en Tools → Show Compliance Mapping (kshana compliance-report --mapping): de koppeling met het openbare kader, getoond met de eigen verklaring van de engine woord voor woord. - Verify Evidence Pack op een map met een bewijspakket (projectweergave;
kshana evidence verify): vraagt om de publieke sleutel van de ondertekenaar (64 hexadecimale cijfers of een bestand.pub; altijd vastgepind, de plug-in accepteert nooit een niet-vastgepinde ondertekenaar) en optioneel om het volledige sessielogboek. Alleen een geverifieerd resultaat leest als geverifieerd; een intact pakket met een niet-vastgepinde ondertekenaar leest "NOT VERIFIED". - Render Trust Telemetry op een resultaat
receiver-trust.json(kshana trust-telemetry --result): Prometheus-tekst, CEF/LEEF-syslog-gebeurtenissen of Home Assistant MQTT-regels, afgedrukt in het venster van Kshana. Er wordt niets verzonden of aangeboden; de draaiende exporters blijven op de opdrachtregel. - Fit Sensor Parameters from IMU Log op een stilstaande IMU
.csv(kshana imu-fit): de accelerometer- en gyroparameters van de scenario'shybridenfusion, gefit met Allan-deviatie, afgedrukt in het venster van Kshana als een tabel[accel_classical]. Er wordt niets geschreven; de fit is MODELLED. - Validate Scenario (
kshana --validate), List Scenario Kinds (menu Tools;kshana kinds) en Assess Receiver Stream (een vaartuigsessie.tomlplus een opgeslagen NMEA-log die u kiest;kshana receiver-trust live --file, eenmaal gescoord zonder socket en zonder gate). - Insert Example Scenario (map in de projectweergave of menu Tools;
kshana example): kies een meegeleverd scenario en het wordt als nieuw.tomlgeschreven (nooit over een bestand heen). Export Scenario op een.toml(SP3, OMM, OEM, CZML, KML, GeoJSON, STK, SigMF; alleen gesimuleerde uitvoer), Animate Scenario (HTML of SVG, geopend in de browser) en Import Route op een route.geojson(vraagt om welk scenario). - Create Evidence Pack op een sessie
.tomlvoor ontvangervertrouwen (kshana receiver-trust evidence): vraagt om het venster, een sleutelbestand voor ondertekening dat u al hebt, en de uitvoermap. De plug-in maakt, leest of bewaart nooit een sleutel (kshana evidence keygenblijft op de opdrachtregel). Attach Timestamp op een pakketmap (kshana evidence attach-timestamp): Kshana controleert de handtekening van de tijdstempelautoriteit niet; voer zelfopenssl ts -verifyuit. - Nog steeds alleen op de opdrachtregel: de IQ-opdrachten,
evidence keygenenreceiver-trust live. - Een toolvenster Kshana onderaan dat de runconsole bevat.
- Niet in de plug-in:
kshana receiver-trust live(een langlopend streamproces met een gate en een optionele TCP-listener) enkshana trust-telemetryblijven op de opdrachtregel, omdat een IDE-actie een opdracht tot het einde uitvoert en zijn uitvoer toont; ziedocs/MARITIME-TRUST.md. - Settings → Tools → Kshana om naar het binaire bestand
kshanate wijzen (leeg → opgelost viaPATH; installeren metcargo install kshana).
De plug-in is puur platform (geen taalspecifieke afhankelijkheden), dus hij laadt in elke JetBrains-IDE op build 243 (2024,3) en nieuwer.
Bouwen en uitvoeren#
Vereist JDK 17+ (de build pint JDK 21) en de meegeleverde Gradle-wrapper.
cd ide/jetbrains
./gradlew test # unit tests (pure CLI helpers)
./gradlew buildPlugin # assembles build/distributions/kshana-jetbrains-<version>.zip
./gradlew runIde # launches a sandbox IDE with the plugin loaded
./gradlew verifyPlugin # JetBrains plugin-verifier compatibility check (downloads IDEs)
verifyPlugin controleert standaard de since-build, 2024,3. Om andere lijnen te controleren, noemt u ze als TYPE:VERSION (elke IDE is een download van ongeveer 1 GB):
KSHANA_VERIFY_IDES="IC:2024.3,IC:2025.2,IU:2026.2.3,IU:263.6259.32" ./gradlew verifyPlugin
De plug-in gebruikt op geen van die lijnen een verouderde of voor verwijdering geplande platform-API; houd dat zo (een keuzedialoog loopt via KshanaChooser, niet via Messages.showChooseDialog).
Installeer de gebouwde zip via Settings → Plugins → ⚙ → Install Plugin from Disk….
Indeling#
build.gradle.kts / settings.gradle.kts / gradle.properties build config (IntelliJ Platform Gradle Plugin 2.x)
src/main/kotlin/dev/kshana/ide/
KshanaCli.kt pure binary-resolution + command helpers (unit-tested)
KshanaSettings.kt persisted binary-path setting (app service)
KshanaConsole.kt per-project output console (project service)
KshanaToolWindowFactory.kt the "Kshana" tool window
RunScenarioAction.kt the Run-scenario action
KshanaRunner.kt runs one command in the background into the tool window
MarineActions.kt receiver trust, training NMEA, interference map, route exposure
KshanaConfigurable.kt Settings → Tools → Kshana
src/main/resources/META-INF/plugin.xml plugin descriptor
src/test/kotlin/.../KshanaCliTest.kt unit tests
Isolatie#
Net als mcp/ en xval/ is dit een zelfstandig Gradle-project, uitgesloten van de gepubliceerde crate kshana (/ide in het pakket exclude); de buildoutput staat in gitignore.
Licentie: AGPL-3.0-only (of een commerciële licentie van Ashforde OÜ — zie LICENSING.md van de repository).