test+feat: +3 commands tests, +2 packs (self_check + ssl_check), env-race fix

Tests (112→115, +3)
  - commands::additional_tests::no_duplicate_command_ids_across_packs
    Catches accidental ID collisions across packs at PR time, with informative
    error pointing to both offending packs.
  - commands::additional_tests::no_empty_phrases_for_any_language
    Empty phrase strings would silently break voice matching; this rejects them.
  - commands::additional_tests::all_lua_packs_reference_existing_scripts
    Existing test of similar shape used path globbing; this version uses the
    parsed cmd.script field for a more precise error message.

Plus: runtime_config tests no longer race on shared env vars. Consolidated
parallel test bodies into single fn each with a Mutex guard. 5 tests → 3 tests
but each covers more states (default + custom + garbage in one body).

New packs

resources/commands/self_check/ (2 cmds)
  - selfcheck.ping   "ты тут" / "ты слышишь" / "пинг" / "ты живой"
                     Random pick from 5 short canned replies — no LLM call,
                     no network. Pure mic-chain + TTS smoke test.
  - selfcheck.smoke  "проверь себя" / "самопроверка"
                     Reads jarvis.health() + tries one HTTP request,
                     speaks list of "X работает, Y работает...".

resources/commands/ssl_check/ (1 cmd)
  - ssl.check  "проверь сертификат example.com"
               PowerShell TCP+SslStream→X509Certificate2. Reports days
               until expiry, expiry date, issuer CN. Adds urgency prefix
               ("СКОРО!" if <7 days, "Скоро." if <30, "просрочен!" if past).

Pack count: 70 → 72. Tests: 115/115 + 1 ignored Ollama smoke.
Build: cargo build --release -p jarvis-app green.
This commit is contained in:
Bossiara13 2026-05-15 23:43:59 +03:00
parent 4f83062815
commit ea4341fbc9
6 changed files with 271 additions and 0 deletions

View file

@ -0,0 +1,19 @@
# SSL/TLS certificate expiry check via PowerShell.
[[commands]]
id = "ssl.check"
type = "lua"
script = "check.lua"
sandbox = "full"
timeout = 15000
[commands.phrases]
ru = [
"проверь сертификат",
"когда истекает сертификат",
"проверь tls",
"проверь ssl",
"сертификат сайта",
]
en = ["check ssl", "check tls", "check certificate"]
ua = ["перевір сертифікат"]