Kshana pour les IDE JetBrains
Install: Kshana — PNT simulator sur la JetBrains Marketplace — ou, dans tout IDE JetBrains, Settings → Plugins → Marketplace → rechercher « Kshana ».
Un plugin natif qui exécute le simulateur de résilience PNT Kshana depuis n'importe quel IDE JetBrains (IntelliJ IDEA, CLion, RustRover, PyCharm, …). Clic droit sur un scénario .toml → Run Kshana Scenario ; les indicateurs de performance et le JSON de résultat s'affichent en continu dans la fenêtre d'outils Kshana.
Complète le serveur MCP (qui donne à l'AI Assistant de JetBrains l'accès à Kshana) : ce plugin est la voie humaine, au pointer-cliquer.
Ce qu'il fait#
- Action Run Kshana Scenario sur tout
.toml(menus contextuels de l'éditeur et de la vue du projet) — exécutekshana <file>et affiche la sortie dans la fenêtre d'outils Kshana. - Assess Receiver Trust sur un scénario
receiver-trust.toml(kshana receiver-trust) : la chronologie de confiance, avec un score de 0 à 100 et les raisons pour un navire. Logiciel à titre consultatif, et non un équipement de navigation homologué (IEC 61108, IEC 61162) : l'opérateur reste responsable de la navigation du navire. - Generate Training NMEA sur un
nmea-scenario.toml(kshana nmea-scenario) : du NMEA de passerelle synthétique et un journal d'instructeur, écrits à côté du scénario. Texte seulement ; pour l'entraînement, jamais pour les systèmes de navigation réels d'un navire. - Build Interference Map sur un
.csvADS-B ou AIS (vue du projet ; demande de quel jeu de données approuvé il s'agit) et Route Exposure sur un fichier d'itinéraire (demande le dossier de cartes). Une cellule dégradée n'identifie pas l'interférence comme cause ; ce n'est pas une prévision. - Export Test-Bench Files sur un scénario
.toml(kshana bench-export) : mouvement du véhicule, NMEA et événements étiquetés pour un simulateur GNSS de laboratoire, écrits à côté du scénario. Il n'écrit aucun signal ; n'exécutez un simulateur que là où c'est autorisé. - Build Compliance Report sur un résultat d'exécution
.json(kshana compliance-report) et Tools → Show Compliance Mapping (kshana compliance-report --mapping) : la correspondance avec le cadre public, affichée avec la propre déclaration du moteur mot pour mot. - Verify Evidence Pack sur un dossier de paquet de preuves (vue du projet ;
kshana evidence verify) : demande la clé publique du signataire (64 chiffres hexadécimaux ou un fichier.pub; toujours épinglée, le plugin n'accepte jamais un signataire non épinglé) et facultativement le journal de session complet. Seul un résultat vérifié est présenté comme vérifié ; un paquet intact avec un signataire non épinglé est présenté comme « NOT VERIFIED ». - Render Trust Telemetry sur un résultat
receiver-trust.json(kshana trust-telemetry --result) : du texte Prometheus, des événements syslog CEF/LEEF ou des lignes MQTT Home Assistant affichés dans la fenêtre Kshana. Rien n'est envoyé ni servi ; les exportateurs en cours d'exécution restent en ligne de commande. - Fit Sensor Parameters from IMU Log sur un
.csvIMU stationnaire (kshana imu-fit) : les paramètres d'accéléromètre et de gyroscope des scénarioshybridetfusionajustés par la déviation d'Allan, affichés dans la fenêtre Kshana sous forme de tableau[accel_classical]. Rien n'est écrit ; l'ajustement est MODELLED. - Validate Scenario (
kshana --validate), List Scenario Kinds (menu Tools ;kshana kinds) et Assess Receiver Stream (une session de navire.tomlplus un journal NMEA enregistré que vous choisissez ;kshana receiver-trust live --file, noté une fois sans socket ni barrière). - Insert Example Scenario (dossier de la vue du projet ou menu Tools ;
kshana example) : choisissez un scénario fourni et il est écrit comme un nouveau.toml(jamais par-dessus un fichier). Export Scenario sur un.toml(SP3, OMM, OEM, CZML, KML, GeoJSON, STK, SigMF ; sortie simulée uniquement), Animate Scenario (HTML ou SVG, ouvert dans le navigateur) et Import Route sur un.geojsond'itinéraire (demande quel scénario). - Create Evidence Pack sur une session de confiance du récepteur
.toml(kshana receiver-trust evidence) : demande la fenêtre, un fichier de clé de signature que vous possédez déjà, et le dossier de sortie. Le plugin ne crée, ne lit ni ne stocke jamais de clé (kshana evidence keygenreste en ligne de commande). Attach Timestamp sur un dossier de paquet (kshana evidence attach-timestamp) : Kshana ne vérifie pas la signature de l'autorité d'horodatage ; exécutez vous-mêmeopenssl ts -verify. - Toujours en ligne de commande uniquement : les commandes IQ,
evidence keygenetreceiver-trust live. - Une fenêtre d'outils Kshana en bas qui héberge la console d'exécution.
- Pas dans le plugin :
kshana receiver-trust live(un processus de flux de longue durée avec une barrière et un écouteur TCP facultatif) etkshana trust-telemetryrestent en ligne de commande, car une action d'IDE exécute une commande jusqu'à son terme et affiche sa sortie ; voirdocs/MARITIME-TRUST.md. - Settings → Tools → Kshana pour désigner le binaire
kshana(vide → résolu depuisPATH; installer aveccargo install kshana).
Le plugin est purement de plateforme (aucune dépendance propre à un langage), il se charge donc dans tout IDE JetBrains de build 243 (2024,3) et plus récent.
Compilation et exécution#
Nécessite JDK 17+ (la compilation fige JDK 21) et le wrapper Gradle fourni.
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 vérifie par défaut le since-build, 2024,3. Pour vérifier d'autres lignes, listez-les sous la forme TYPE:VERSION (chaque IDE est un téléchargement d'environ 1 Go) :
KSHANA_VERIFY_IDES="IC:2024.3,IC:2025.2,IU:2026.2.3,IU:263.6259.32" ./gradlew verifyPlugin
Le plugin n'utilise aucune API de plateforme obsolète ou prévue pour suppression sur aucune de ces lignes ; il faut qu'il en reste ainsi (une boîte de dialogue de choix passe par KshanaChooser, et non par Messages.showChooseDialog).
Installez le zip compilé via Settings → Plugins → ⚙ → Install Plugin from Disk….
Organisation#
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#
Comme mcp/ et xval/, il s'agit d'un projet Gradle autonome, exclu de la crate kshana publiée (/ide dans le exclude du paquet) ; sa sortie de compilation est ignorée par git.
Licence : AGPL-3.0-only (ou une licence commerciale d'Ashforde OÜ — voir le LICENSING.md du dépôt).