Kshana für JetBrains-IDEs
Install: Kshana — PNT simulator im JetBrains Marketplace — oder in jeder JetBrains-IDE Settings → Plugins → Marketplace → nach „Kshana“ suchen.
Ein natives Plugin, das den PNT-Resilienz-Simulator Kshana aus jeder JetBrains-IDE heraus ausführt (IntelliJ IDEA, CLion, RustRover, PyCharm, …). Klicken Sie mit der rechten Maustaste auf ein Szenario .toml → Run Kshana Scenario; die Gütemaße und das Ergebnis-JSON laufen in das Werkzeugfenster Kshana.
Ergänzt den MCP-Server (der dem JetBrains-AI Assistant Zugriff auf Kshana gibt): Dieses Plugin ist der menschliche Weg per Zeigen und Klicken.
Was es tut#
- Aktion Run Kshana Scenario auf jeder
.toml(Kontextmenüs von Editor und Projektansicht) — führtkshana <file>aus und zeigt die Ausgabe im Werkzeugfenster Kshana. - Assess Receiver Trust auf einem Szenario
receiver-trust.toml(kshana receiver-trust): der Vertrauensverlauf, mit einem Wert von 0-100 und Gründen für ein Schiff. Beratende Software, keine typzugelassene Navigationsausrüstung (IEC 61108, IEC 61162): Der Betreiber bleibt für die Navigation des Schiffes verantwortlich. - Generate Training NMEA auf einem
nmea-scenario.toml(kshana nmea-scenario): synthetisches Brücken-NMEA und ein Ausbilderprotokoll, neben dem Szenario geschrieben. Nur Text; für Training, nie für die laufenden Navigationssysteme eines Schiffes. - Build Interference Map auf einer ADS-B- oder AIS-
.csv(Projektansicht; fragt, um welchen zugelassenen Datensatz es sich handelt) und Route Exposure auf einer Routendatei (fragt nach dem Ordner der Karten). Eine beeinträchtigte Zelle weist Störung nicht als Ursache nach; keine Vorhersage. - Export Test-Bench Files auf einem Szenario
.toml(kshana bench-export): Fahrzeugbewegung, NMEA und beschriftete Ereignisse für einen GNSS-Simulator im Labor, neben dem Szenario geschrieben. Es schreibt kein Signal; betreiben Sie einen Simulator nur dort, wo es genehmigt ist. - Build Compliance Report auf einem Laufergebnis
.json(kshana compliance-report) und Tools → Show Compliance Mapping (kshana compliance-report --mapping): die Zuordnung zu öffentlichen Rahmenwerken, gezeigt mit der eigenen Aussage der Engine Wort für Wort. - Verify Evidence Pack auf einem Nachweispaket-Ordner (Projektansicht;
kshana evidence verify): fragt nach dem öffentlichen Schlüssel des Signierenden (64 Hexziffern oder eine.pub-Datei; immer gepinnt, das Plugin akzeptiert nie einen ungepinnten Signierenden) und optional nach dem vollständigen Sitzungsprotokoll. Nur ein verifiziertes Ergebnis gilt als verifiziert; ein intaktes Paket mit ungepinntem Signierenden wird als „NOT VERIFIED“ angezeigt. - Render Trust Telemetry auf einem Ergebnis
.jsonder Artreceiver-trust(kshana trust-telemetry --result): Prometheus-Text, CEF/LEEF-Syslog-Ereignisse oder Home-Assistant-MQTT-Zeilen, im Kshana-Fenster ausgegeben. Nichts wird gesendet oder bereitgestellt; die laufenden Exporter bleiben auf der Kommandozeile. - Fit Sensor Parameters from IMU Log auf einer ruhenden IMU-
.csv(kshana imu-fit): die Beschleunigungsmesser- und Gyroparameter der Szenarienhybridundfusion, durch die Allan-Abweichung angepasst, als Tabelle[accel_classical]im Kshana-Fenster ausgegeben. Nichts wird geschrieben; die Anpassung ist MODELLED. - Validate Scenario (
kshana --validate), List Scenario Kinds (Menü Tools;kshana kinds) und Assess Receiver Stream (eine Schiffssitzung.tomlplus ein von Ihnen gewähltes gespeichertes NMEA-Protokoll;kshana receiver-trust live --file, einmal bewertet, ohne Socket und ohne Gate). - Insert Example Scenario (Ordner der Projektansicht oder Menü Tools;
kshana example): Wählen Sie ein mitgeliefertes Szenario, und es wird als neue.tomlgeschrieben (nie über eine Datei). Export Scenario auf einer.toml(SP3, OMM, OEM, CZML, KML, GeoJSON, STK, SigMF; nur simulierte Ausgabe), Animate Scenario (HTML oder SVG, im Browser geöffnet) und Import Route auf einer Route.geojson(fragt, welches Szenario). - Create Evidence Pack auf einer receiver-trust-Sitzung
.toml(kshana receiver-trust evidence): fragt nach dem Fenster, einer Signierschlüsseldatei, die Sie schon haben, und dem Ausgabeordner. Das Plugin erzeugt, liest oder speichert nie einen Schlüssel (kshana evidence keygenbleibt auf der Kommandozeile). Attach Timestamp auf einem Paketordner (kshana evidence attach-timestamp): Kshana prüft die Signatur der Zeitstempelautorität nicht; führen Sieopenssl ts -verifyselbst aus. - Weiterhin nur auf der Kommandozeile: die IQ-Befehle,
evidence keygenundreceiver-trust live. - Ein unteres Werkzeugfenster Kshana, das die Laufkonsole enthält.
- Nicht im Plugin:
kshana receiver-trust live(ein lang laufender Stromprozess mit einem Gate und einem optionalen TCP-Listener) undkshana trust-telemetrybleiben auf der Kommandozeile, weil eine IDE-Aktion einen Befehl bis zum Ende ausführt und seine Ausgabe zeigt; siehedocs/MARITIME-TRUST.md. - Settings → Tools → Kshana, um auf die Binärdatei
kshanazu zeigen (leer → ausPATHaufgelöst; Installation mitcargo install kshana).
Das Plugin ist rein plattformbasiert (keine sprachspezifischen Abhängigkeiten) und lädt daher in jeder JetBrains-IDE ab Build 243 (2024,3).
Bauen und ausführen#
Erfordert JDK 17+ (der Build legt JDK 21 fest) und den mitgelieferten 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 prüft standardmäßig den Since-Build 2024,3. Um weitere Linien zu prüfen, listen Sie sie als TYPE:VERSION auf (jede IDE ist ein Download von etwa 1 GB):
KSHANA_VERIFY_IDES="IC:2024.3,IC:2025.2,IU:2026.2.3,IU:263.6259.32" ./gradlew verifyPlugin
Das Plugin verwendet auf keiner davon eine veraltete oder zur Entfernung vorgesehene Plattform-API; das soll so bleiben (ein Auswahldialog läuft über KshanaChooser, nicht über Messages.showChooseDialog).
Installieren Sie das gebaute Zip über Settings → Plugins → ⚙ → Install Plugin from Disk….
Aufbau#
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
Isolation#
Wie mcp/ und xval/ ist dies ein eigenständiges Gradle-Projekt, ausgeschlossen aus dem veröffentlichten Crate kshana (/ide im Paket exclude); seine Build-Ausgabe steht in der gitignore.
Lizenz: AGPL-3.0-only (oder eine kommerzielle Lizenz von Ashforde OÜ — siehe die LICENSING.md des Repositorys).