Kshana dla IDE JetBrains
Install: Kshana — PNT simulator w JetBrains Marketplace lub, w dowolnym IDE JetBrains, Settings → Plugins → Marketplace → search "Kshana".
Natywna wtyczka uruchamiająca symulator odporności PNT Kshana z wnętrza dowolnego IDE JetBrains (IntelliJ IDEA, CLion, RustRover, PyCharm, …). Kliknij prawym przyciskiem scenariusz .toml → Run Kshana Scenario; wskaźniki jakości i wynikowy JSON są strumieniowane do okna narzędzi Kshana.
Uzupełnia serwer MCP (który daje AI Assistant JetBrains dostęp do Kshana): ta wtyczka to ścieżka dla człowieka, metodą wskaż i kliknij.
Co robi#
- Akcja Run Kshana Scenario na dowolnym
.toml(menu kontekstowe edytora i widoku projektu): uruchamiakshana <file>i pokazuje wynik w oknie narzędzi Kshana. - Assess Receiver Trust na scenariuszu
receiver-trust.toml(kshana receiver-trust): oś czasu zaufania, z wynikiem 0-100 i powodami dla statku. Oprogramowanie wyłącznie doradcze, nie jest to sprzęt nawigacyjny z zatwierdzeniem typu (IEC 61108, IEC 61162): za nawigację statku odpowiada nadal operator. - Generate Training NMEA na
nmea-scenario.toml(kshana nmea-scenario): syntetyczne NMEA mostka i dziennik instruktora, zapisane obok scenariusza. Tylko tekst; do szkolenia, nigdy do działających systemów nawigacyjnych statku. - Build Interference Map na ADS-B lub AIS
.csv(widok projektu; pyta, który to zatwierdzony zbiór danych) oraz Route Exposure na pliku trasy (pyta o folder map). Komórka z pogorszeniem nie wskazuje zakłóceń jako przyczyny; to nie jest prognoza. - Export Test-Bench Files na scenariuszu
.toml(kshana bench-export): ruch pojazdu, NMEA i opisane zdarzenia dla laboratoryjnego symulatora GNSS, zapisane obok scenariusza. Nie zapisuje żadnego sygnału; symulator uruchamiaj tylko tam, gdzie jest to dozwolone. - Build Compliance Report na wyniku przebiegu
.json(kshana compliance-report) oraz Tools → Show Compliance Mapping (kshana compliance-report --mapping): odwzorowanie na publiczne ramy, pokazane ze stwierdzeniem silnika słowo w słowo. - Verify Evidence Pack na folderze pakietu dowodowego (widok projektu;
kshana evidence verify): pyta o klucz publiczny podpisującego (64 cyfr szesnastkowych lub plik.pub; zawsze przypięty, wtyczka nigdy nie przyjmuje nieprzypiętego podpisującego) i opcjonalnie o pełny dziennik sesji. Tylko wynik zweryfikowany jest przedstawiany jako zweryfikowany; nienaruszony pakiet z nieprzypiętym podpisującym jest przedstawiany jako „NOT VERIFIED”. - Render Trust Telemetry na wyniku
receiver-trust.json(kshana trust-telemetry --result): tekst Prometheus, zdarzenia syslog CEF/LEEF lub linie MQTT Home Assistant drukowane w oknie Kshana. Nic nie jest wysyłane ani udostępniane; działające eksportery pozostają w wierszu poleceń. - Fit Sensor Parameters from IMU Log na nieruchomym IMU
.csv(kshana imu-fit): parametry akcelerometru i żyroskopu scenariuszyhybridifusiondopasowane odchyleniem Allana, drukowane w oknie Kshana jako tabela[accel_classical]. Nic nie jest zapisywane; dopasowanie ma status MODELLED. - Validate Scenario (
kshana --validate), List Scenario Kinds (menu Tools;kshana kinds) i Assess Receiver Stream (sesja statku.tomlplus wybrany zapisany log NMEA;kshana receiver-trust live --file, oceniane jednorazowo, bez gniazda i bez bramki). - Insert Example Scenario (folder widoku projektu lub menu Tools;
kshana example): wybierz dołączony scenariusz, a zostanie zapisany jako nowy.toml(nigdy nad istniejącym plikiem). Export Scenario na.toml(SP3, OMM, OEM, CZML, KML, GeoJSON, STK, SigMF; tylko wynik symulowany), Animate Scenario (HTML lub SVG, otwierane w przeglądarce) i Import Route na trasie.geojson(pyta, który scenariusz). - Create Evidence Pack na sesji zaufania do odbiornika
.toml(kshana receiver-trust evidence): pyta o okno, plik klucza podpisu, który już masz, i folder wyjściowy. Wtyczka nigdy nie tworzy, nie czyta ani nie przechowuje klucza (kshana evidence keygenpozostaje w wierszu poleceń). Attach Timestamp na folderze pakietu (kshana evidence attach-timestamp): Kshana nie sprawdza podpisu urzędu znacznika czasu; uruchomopenssl ts -verifysamodzielnie. - Nadal tylko w wierszu poleceń: polecenia IQ,
evidence keygenireceiver-trust live. - Dolne okno narzędzi Kshana z konsolą przebiegów.
- Nie ma ich we wtyczce:
kshana receiver-trust live(długo działający proces strumieniowy z bramką i opcjonalnym nasłuchiwaczem TCP) ikshana trust-telemetrypozostają w wierszu poleceń, ponieważ akcja IDE uruchamia polecenie do końca i pokazuje jego wynik; zob.docs/MARITIME-TRUST.md. - Settings → Tools → Kshana, aby wskazać plik binarny
kshana(puste: rozwiązywany zPATH; instalacja przezcargo install kshana).
Wtyczka jest czysto platformowa (bez zależności od konkretnych języków), więc ładuje się w każdym IDE JetBrains w wersji kompilacji 243 (2024,3) i nowszej.
Budowanie i uruchamianie#
Wymaga JDK 17+ (kompilacja przypina JDK 21) oraz dołączonego wrappera Gradle.
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 domyślnie sprawdza since-build, 2024,3. Aby sprawdzić inne linie, podaj je jako TYPE:VERSION (każde IDE to pobranie około 1 GB):
KSHANA_VERIFY_IDES="IC:2024.3,IC:2025.2,IU:2026.2.3,IU:263.6259.32" ./gradlew verifyPlugin
Wtyczka nie używa na żadnym z nich przestarzałego ani przeznaczonego do usunięcia API platformy; tak ma pozostać (okno wyboru przechodzi przez KshanaChooser, a nie przez Messages.showChooseDialog).
Zainstaluj zbudowany plik zip przez Settings → Plugins → ⚙ → Install Plugin from Disk….
Układ#
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
Izolacja#
Podobnie jak mcp/ i xval/, jest to samodzielny projekt Gradle, wyłączony z opublikowanego crate kshana (/ide w pakiecie exclude); jego wynik budowania jest ignorowany przez git.
Licencja: AGPL-3.0-only (lub licencja komercyjna od Ashforde OÜ; zob. LICENSING.md w repozytorium).