Tradução automática, não revista por um falante nativo. O inglês é a referência.

APIs e integraçõesEditar no GitHubFonte: ide/jetbrains/README.md

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) — executa kshana <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 .csv de 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 .json de 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 .csv de IMU estacionária (kshana imu-fit): os parâmetros de acelerômetro e giroscópio dos cenários hybrid e fusion ajustados 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 .toml mais 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 .geojson de rota (pergunta qual cenário).
  • Create Evidence Pack em um .toml de 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 keygen permanece 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ê mesmo openssl ts -verify.
  • Ainda apenas na linha de comando: os comandos de IQ, evidence keygen e receiver-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) e kshana trust-telemetry permanecem na linha de comando, porque uma ação do IDE executa um comando até o fim e mostra a sua saída; veja docs/MARITIME-TRUST.md.
  • Settings → Tools → Kshana para apontar para o binário kshana (em branco → resolvido a partir de PATH; instale com cargo 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).