Kshana para IDEs JetBrains
Install: Kshana — PNT simulator no JetBrains Marketplace — ou, em qualquer IDE JetBrains, Settings → Plugins → Marketplace → pesquise "Kshana".
Um plugin nativo que executa o simulador de resiliência de PNT Kshana de dentro de qualquer IDE JetBrains (IntelliJ IDEA, CLion, RustRover, PyCharm, …). Clique com o botão direito em um cenário .toml → Run Kshana Scenario; as figuras de mérito e o JSON do resultado são transmitidos para a janela de ferramentas Kshana.
Complementa o servidor MCP (que dá ao AI Assistant da JetBrains acesso ao Kshana): este plugin é o caminho humano, de apontar e clicar.
O que faz#
- Ação Run Kshana Scenario em qualquer
.toml(menus de contexto do editor e da visão do projeto) — executakshana <file>e mostra a saída na janela de ferramentas do Kshana. - Assess Receiver Trust em um cenário
receiver-trust.toml(kshana receiver-trust): a linha do tempo de confiança, com uma pontuação de 0 a 100 e os motivos para uma embarcação. Software de caráter consultivo, não um equipamento de navegação homologado (IEC 61108, IEC 61162): o operador continua responsável pela navegação da embarcação. - Generate Training NMEA em um
nmea-scenario.toml(kshana nmea-scenario): NMEA de ponte sintético e um log de instrutor, gravados ao lado do cenário. Apenas texto; para treinamento, nunca para os sistemas de navegação em operação de uma embarcação. - Build Interference Map em um
.csvde ADS-B ou de AIS (visão do projeto; pergunta de qual conjunto de dados aprovado se trata) e Route Exposure em um arquivo de rota (pergunta pela pasta de mapas). Uma célula degradada não identifica a interferência como causa; não é uma previsão. - Export Test-Bench Files em um cenário
.toml(kshana bench-export): movimento do veículo, NMEA e eventos rotulados para um simulador GNSS de laboratório, gravados ao lado do cenário. Não grava nenhum sinal; execute um simulador apenas onde isso for permitido. - Build Compliance Report em um
.jsonde resultado de execução (kshana compliance-report) e Tools → Show Compliance Mapping (kshana compliance-report --mapping): o mapeamento do arcabouço público, mostrado com a própria declaração do motor, palavra por palavra. - Verify Evidence Pack em uma pasta de pacote de evidências (visão do projeto;
kshana evidence verify): pede a chave pública do signatário (64 dígitos hexadecimais ou um arquivo.pub; sempre fixada, o plugin nunca aceita um signatário não fixado) e, opcionalmente, o log completo da sessão. Somente um resultado verificado aparece como verificado; um pacote íntegro com signatário não fixado aparece como "NOT VERIFIED". - Render Trust Telemetry em um resultado
receiver-trust.json(kshana trust-telemetry --result): texto do Prometheus, eventos de syslog CEF/LEEF ou linhas MQTT do Home Assistant impressos na janela do Kshana. Nada é enviado nem servido; os exportadores em execução permanecem na linha de comando. - Fit Sensor Parameters from IMU Log em um
.csvde IMU estacionária (kshana imu-fit): os parâmetros de acelerômetro e giroscópio dos cenárioshybridefusionajustados por desvio de Allan, impressos na janela do Kshana como uma tabela[accel_classical]. Nada é gravado; o ajuste é MODELLED. - Validate Scenario (
kshana --validate), List Scenario Kinds (menu Tools;kshana kinds) e Assess Receiver Stream (uma sessão de embarcação.tomlmais um log NMEA armazenado que você escolhe;kshana receiver-trust live --file, pontuado uma vez, sem socket e sem gate). - Insert Example Scenario (pasta da visão do projeto ou menu Tools;
kshana example): escolha um cenário incluído e ele é gravado como um novo.toml(nunca sobre um arquivo). Export Scenario em um.toml(SP3, OMM, OEM, CZML, KML, GeoJSON, STK, SigMF; apenas saída simulada), Animate Scenario (HTML ou SVG, aberto no navegador) e Import Route em um.geojsonde rota (pergunta qual cenário). - Create Evidence Pack em um
.tomlde sessão de confiança do receptor (kshana receiver-trust evidence): pede a janela, um arquivo de chave de assinatura que você já tenha e a pasta de saída. O plugin nunca cria, lê nem armazena uma chave (kshana evidence keygenpermanece na linha de comando). Attach Timestamp em uma pasta de pacote (kshana evidence attach-timestamp): o Kshana não verifica a assinatura da autoridade de carimbo de tempo; execute você mesmoopenssl ts -verify. - Ainda apenas na linha de comando: os comandos de IQ,
evidence keygenereceiver-trust live. - Uma janela de ferramentas Kshana na parte inferior, que hospeda o console de execução.
- Não está no plugin:
kshana receiver-trust live(um processo de fluxo de longa duração, com um gate e um listener TCP opcional) ekshana trust-telemetrypermanecem na linha de comando, porque uma ação do IDE executa um comando até o fim e mostra a sua saída; vejadocs/MARITIME-TRUST.md. - Settings → Tools → Kshana para apontar para o binário
kshana(em branco → resolvido a partir dePATH; instale comcargo install kshana).
O plugin é de plataforma pura (sem dependências específicas de linguagem), de modo que carrega em todo IDE JetBrains na build 243 (2024,3) e posteriores.
Compilar e executar#
Requer JDK 17+ (a build fixa o JDK 21) e o wrapper do Gradle incluído.
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 verifica por padrão o since-build, 2024,3. Para verificar outras linhas, liste-as como TYPE:VERSION (cada IDE é um download de cerca de 1 GB):
KSHANA_VERIFY_IDES="IC:2024.3,IC:2025.2,IU:2026.2.3,IU:263.6259.32" ./gradlew verifyPlugin
O plugin não usa nenhuma API de plataforma obsoleta ou com remoção prevista em nenhuma delas; mantenha assim (uma caixa de diálogo de escolha passa por KshanaChooser, não por Messages.showChooseDialog).
Instale o zip compilado por Settings → Plugins → ⚙ → Install Plugin from Disk….
Estrutura#
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
Isolamento#
Como mcp/ e xval/, este é um projeto Gradle independente, excluído do crate kshana publicado (/ide no exclude do pacote); a sua saída de build é ignorada pelo git.
Licença: AGPL-3.0-only (ou uma licença comercial da Ashforde OÜ — veja o LICENSING.md do repositório).