Traducción automática, no revisada por un hablante nativo. El inglés es la referencia.

API e integracionesEditar en GitHubFuente: ide/jetbrains/README.md

Kshana para los IDE de JetBrains

Install: Kshana — PNT simulator en JetBrains Marketplace — o, en cualquier IDE de JetBrains, Settings → Plugins → Marketplace → buscar «Kshana».

Un plugin nativo que ejecuta el simulador de resiliencia PNT Kshana desde cualquier IDE de JetBrains (IntelliJ IDEA, CLion, RustRover, PyCharm, …). Haga clic con el botón derecho en un escenario .toml → Run Kshana Scenario; las figuras de mérito y el JSON de resultados se transmiten a la ventana de herramientas Kshana.

Complementa el servidor MCP (que da acceso a Kshana al AI Assistant de JetBrains): este plugin es la vía humana, de apuntar y hacer clic.

Qué hace#

  • Acción Run Kshana Scenario sobre cualquier .toml (menús contextuales del editor y de la vista de proyecto) — ejecuta kshana <file> y muestra la salida en la ventana de herramientas de Kshana.
  • Assess Receiver Trust sobre un escenario receiver-trust .toml (kshana receiver-trust): la cronología de confianza, con una puntuación de 0-100 y motivos para un buque. Software de carácter consultivo, no un equipo de navegación homologado (IEC 61108, IEC 61162): el operador sigue siendo responsable de la navegación del buque.
  • Generate Training NMEA sobre un nmea-scenario .toml (kshana nmea-scenario): NMEA sintético de puente y un registro de instructor, escritos junto al escenario. Solo texto; para formación, nunca para los sistemas de navegación en vivo de un buque.
  • Build Interference Map sobre un .csv de ADS-B o AIS (vista de proyecto; pregunta de qué conjunto de datos admitido se trata) y Route Exposure sobre un archivo de ruta (pregunta por la carpeta de mapas). Una celda degradada no identifica la interferencia como causa; no es una previsión.
  • Export Test-Bench Files sobre un escenario .toml (kshana bench-export): movimiento del vehículo, NMEA y eventos etiquetados para un simulador GNSS de laboratorio, escritos junto al escenario. No escribe ninguna señal; ejecute un simulador solo donde esté autorizado.
  • Build Compliance Report sobre un resultado de ejecución .json (kshana compliance-report) y Tools → Show Compliance Mapping (kshana compliance-report --mapping): la correspondencia con el marco público, mostrada con la propia declaración del motor palabra por palabra.
  • Verify Evidence Pack sobre una carpeta de paquete de evidencias (vista de proyecto; kshana evidence verify): pide la clave pública del firmante (64 dígitos hexadecimales o un archivo .pub; siempre fijada, el plugin nunca acepta un firmante sin fijar) y, opcionalmente, el registro completo de la sesión. Solo un resultado verificado se lee como verificado; un paquete íntegro con un firmante sin fijar se lee «NOT VERIFIED».
  • Render Trust Telemetry sobre un resultado receiver-trust .json (kshana trust-telemetry --result): texto de Prometheus, eventos syslog CEF/LEEF o líneas MQTT de Home Assistant impresos en la ventana de Kshana. No se envía ni se sirve nada; los exportadores en ejecución siguen en la línea de comandos.
  • Fit Sensor Parameters from IMU Log sobre un .csv de IMU estacionaria (kshana imu-fit): los parámetros del acelerómetro y del giróscopo de los escenarios hybrid y fusion ajustados mediante desviación de Allan, impresos en la ventana de Kshana como una tabla [accel_classical]. No se escribe nada; el ajuste es MODELLED.
  • Validate Scenario (kshana --validate), List Scenario Kinds (menú Tools; kshana kinds) y Assess Receiver Stream (una sesión de buque .toml más un registro NMEA almacenado que usted elige; kshana receiver-trust live --file, puntuado una sola vez, sin socket ni compuerta).
  • Insert Example Scenario (carpeta de la vista de proyecto o menú Tools; kshana example): elija un escenario incluido y se escribe como un nuevo .toml (nunca sobre un archivo existente). Export Scenario sobre un .toml (SP3, OMM, OEM, CZML, KML, GeoJSON, STK, SigMF; solo salida simulada), Animate Scenario (HTML o SVG, abierto en el navegador) e Import Route sobre una ruta .geojson (pregunta por el escenario).
  • Create Evidence Pack sobre una sesión de confianza del receptor .toml (kshana receiver-trust evidence): pide la ventana, un archivo de clave de firma que ya tenga y la carpeta de salida. El plugin nunca crea, lee ni almacena una clave (kshana evidence keygen sigue en la línea de comandos). Attach Timestamp sobre una carpeta de paquete (kshana evidence attach-timestamp): Kshana no comprueba la firma de la autoridad de sellado de tiempo; ejecute openssl ts -verify usted mismo.
  • Siguen estando solo en la línea de comandos: los comandos de IQ, evidence keygen y receiver-trust live.
  • Una ventana de herramientas inferior de Kshana que aloja la consola de ejecución.
  • No están en el plugin: kshana receiver-trust live (un proceso de flujo de larga duración con una compuerta y un receptor de conexiones TCP opcional) y kshana trust-telemetry siguen en la línea de comandos, porque una acción del IDE ejecuta un comando hasta su finalización y muestra su salida; véase docs/MARITIME-TRUST.md.
  • Settings → Tools → Kshana para apuntar al binario kshana (en blanco → se resuelve desde PATH; instálelo con cargo install kshana).

El plugin es de plataforma pura (sin dependencias específicas de un lenguaje), por lo que se carga en todos los IDE de JetBrains de la compilación 243 (2024,3) y posteriores.

Compilar y ejecutar#

Requiere JDK 17+ (la compilación fija JDK 21) y el wrapper de Gradle incluido.

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 comprueba por defecto la versión since-build, 2024,3. Para comprobar otras líneas, enúncielas como TYPE:VERSION (cada IDE es una descarga de unos 1 GB):

KSHANA_VERIFY_IDES="IC:2024.3,IC:2025.2,IU:2026.2.3,IU:263.6259.32" ./gradlew verifyPlugin

El plugin no usa ninguna API de plataforma obsoleta ni prevista para su eliminación en ninguna de ellas; manténgase así (un cuadro de diálogo de elección pasa por KshanaChooser, no por Messages.showChooseDialog).

Instale el zip compilado mediante Settings → Plugins → ⚙ → Install Plugin from Disk….

Estructura#

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

Aislamiento#

Como mcp/ y xval/, es un proyecto Gradle independiente, excluido del crate kshana publicado (/ide en el exclude del paquete); su salida de compilación está en gitignore.

Licencia: AGPL-3.0-only (o una licencia comercial de Ashforde OÜ — véase el LICENSING.md del repositorio).