# πŸ“¦ @goodandready/dsh-shadow-auditor

Π€ΠΎΠ½ΠΎΠ²Ρ‹ΠΉ Π°ΡƒΠ΄ΠΈΡ‚ΠΎΡ€ бСзопасности, сканСр ΡƒΡ‚Π΅Ρ‡Π΅ΠΊ ΠΊΠ»ΡŽΡ‡Π΅ΠΉ ΠΈ Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ дСструктивных ΠΊΠΎΠΌΠ°Π½Π΄ для DeepSeek Harness

npm version license DSH Plugin Node version

ВсС ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρ‹ Π°Π²Ρ‚ΠΎΡ€Π°

πŸ‡¬πŸ‡§ English β€’ πŸ‡·πŸ‡Ί Русский β€’ πŸ‡¨πŸ‡³ δΈ­ζ–‡θ―΄ζ˜Ž

⭐ Если Π²Π°ΠΌ нравится этот ΠΏΠ»Π°Π³ΠΈΠ½, ΠΏΠΎΡΡ‚Π°Π²ΡŒΡ‚Π΅ Π΅ΠΌΡƒ Π·Π²Π΅Π·Π΄Ρƒ Π½Π° GitHub β€” это ΠΏΠΎΠΊΠ°ΠΆΠ΅Ρ‚ ΠΌΠ½Π΅, Ρ‡Ρ‚ΠΎ ΠΏΠ»Π°Π³ΠΈΠ½ Π²Π°ΠΌ ΠΏΠΎΠ»Π΅Π·Π΅Π½, ΠΈ Π±ΡƒΠ΄Π΅Ρ‚ ΠΌΠΎΡ‚ΠΈΠ²ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ мСня Ρ€Π°Π·Π²ΠΈΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ дальшС.

πŸ› Если Π²Ρ‹ нашли Π±Π°Π³ ΠΈΠ»ΠΈ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠΈΡ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π», создайтС issue Π½Π° GitHub Π½Π° любом языкС β€” я Ρ€Π°ΡΡΠΌΠΎΡ‚Ρ€ΡŽ вашС ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Π΅ ΠΈΠ΄Π΅ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… вСрсий ΠΏΠ»Π°Π³ΠΈΠ½Π°.
--- ## ⚑ ΠžΠ±Π·ΠΎΡ€ **`dsh-shadow-auditor`** обСспСчиваСт Π½Π΅ΠΏΡ€Π΅Ρ€Ρ‹Π²Π½Ρ‹ΠΉ Ρ„ΠΎΠ½ΠΎΠ²Ρ‹ΠΉ Π°ΡƒΠ΄ΠΈΡ‚ бСзопасности ΠΈ Π·Π°Ρ‰ΠΈΡ‚Ρƒ ΠΎΡ‚ выполнСния опасных ΠΊΠΎΠΌΠ°Π½Π΄ для Π°Π³Π΅Π½Ρ‚ΠΎΠ² **DeepSeek Harness**. ΠŸΡ€ΠΈ написании ΠΊΠΎΠ΄Π°, Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΈΠ»ΠΈ запускС Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΊΠΎΠΌΠ°Π½Π΄ Π°Π²Ρ‚ΠΎΠ½ΠΎΠΌΠ½Ρ‹ΠΌΠΈ Π°Π³Π΅Π½Ρ‚Π°ΠΌΠΈ сущСствуСт риск случайной ΡƒΡ‚Π΅Ρ‡ΠΊΠΈ API-ΠΊΠ»ΡŽΡ‡Π΅ΠΉ, Ρ‚ΠΎΠΊΠ΅Π½ΠΎΠ² доступа ΠΈΠ»ΠΈ выполнСния Ρ€Π°Π·Ρ€ΡƒΡˆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… скриптов (`rm -rf /`, Ρ„ΠΎΡ€ΠΊ-Π±ΠΎΠΌΠ±, случайной пСрСзаписи систСмных Ρ„Π°ΠΉΠ»ΠΎΠ²). Плагин дСйствуСт ΠΊΠ°ΠΊ внутрипроцСссный Ρ„Π°Π΅Ρ€Π²ΠΎΠ» бСзопасности, провСряя Π΄ΠΈΡ„Ρ‹ ΠΊΠΎΠ΄Π° Π½Π° Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ сСкрСтов ΠΈ блокируя дСструктивныС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π² Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π΅. ```mermaid graph LR subgraph AgentExecution [ДСйствия Π°Π³Π΅Π½Ρ‚Π° DSH] Agent[πŸ€– АгСнт: ΠŸΠΈΡˆΠ΅Ρ‚ ΠΊΠΎΠ΄ / ЗапускаСт ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ] --> Intercept{ΠŸΠ΅Ρ€Π΅Ρ…Π²Π°Ρ‚Ρ‡ΠΈΠΊ бСзопасности} end subgraph SecurityEngines [Π―Π΄Ρ€ΠΎ dsh-shadow-auditor] Intercept --> SecretScan[πŸ”‘ Π‘ΠΊΠ°Π½Π΅Ρ€ сСкрСтов ΠΈ Ρ‚ΠΎΠΊΠ΅Π½ΠΎΠ²] Intercept --> CmdGuard[πŸ›‘οΈ Π€Π°Π΅Ρ€Π²ΠΎΠ» Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΊΠΎΠΌΠ°Π½Π΄] end subgraph Enforcement [ΠšΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒ ΠΈ ΠΆΡƒΡ€Π½Π°Π»] SecretScan -->|БСзопасно| Pass[βœ… Π Π°Π·Ρ€Π΅ΡˆΠΈΡ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅] SecretScan -->|ΠžΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½ сСкрСт| Block1[β›” Π‘Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ° ΠΈ маскированиС Ρ‚ΠΎΠΊΠ΅Π½Π°] CmdGuard -->|БСзопасно| Pass CmdGuard -->|Опасная ΠΊΠΎΠΌΠ°Π½Π΄Π°| Block2[β›” Π‘Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ° ΠΈ запрос подтвСрТдСния] Block1 --> AuditLog[πŸ“‹ Π–ΡƒΡ€Π½Π°Π» Π°ΡƒΠ΄ΠΈΡ‚Π° бСзопасности] Block2 --> AuditLog end style AgentExecution fill:#1e1e2e,stroke:#89b4fa,stroke-width:2px,color:#cdd6f4 style SecurityEngines fill:#181825,stroke:#cba6f7,stroke-width:2px,color:#cdd6f4 style Enforcement fill:#11111b,stroke:#a6e3a1,stroke-width:2px,color:#cdd6f4 ``` --- ## ✨ ΠšΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ возмоТности ### 1. πŸ”‘ Π‘ΠΊΠ°Π½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΡƒΡ‚Π΅Ρ‡Π΅ΠΊ ΠΊΠ»ΡŽΡ‡Π΅ΠΉ ΠΈ ΠΏΠ°Ρ€ΠΎΠ»Π΅ΠΉ (`lib/guards/secrets.js`) * Π‘ΠΊΠ°Π½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π΄ΠΈΡ„ΠΎΠ² Π½Π° API-ΠΊΠ»ΡŽΡ‡ΠΈ, ΠΏΡ€ΠΈΠ²Π°Ρ‚Π½Ρ‹Π΅ сСртификаты, RSA/SSH ΠΊΠ»ΡŽΡ‡ΠΈ ΠΈ Ρ‚ΠΎΠΊΠ΅Π½Ρ‹ Π±Π°Π· Π΄Π°Π½Π½Ρ‹Ρ…; * Π‘Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ° ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ ΠΊΠΎΠ½Ρ„ΠΈΠ΄Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… Π΄ΠΎ фиксации Π² ΠΊΠΎΠΌΠΌΠΈΡ‚Π°Ρ… ΠΈΠ»ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Π½Π°Ρ€ΡƒΠΆΡƒ; * АвтоматичСская Π·Π°ΠΌΠ΅Π½Π° сСкрСтов Π½Π° `[REDACTED]` Π² ΠΆΡƒΡ€Π½Π°Π»Π°Ρ…. ### 2. πŸ›‘οΈ Π—Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ опасных ΠΊΠΎΠΌΠ°Π½Π΄ (`lib/guards/command.js`) * БинтаксичСский Π°Π½Π°Π»ΠΈΠ· Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΊΠΎΠΌΠ°Π½Π΄ ΠΏΠ΅Ρ€Π΅Π΄ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ; * ΠŸΠ΅Ρ€Π΅Ρ…Π²Π°Ρ‚ опасных ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½ΠΎΠ² (`rm -rf /`, дСструктивный `dd`, сброс Π±Π°Π· Π΄Π°Π½Π½Ρ‹Ρ…, снос ΠΏΡ€Π°Π² доступа); * Π—Π°Ρ‰ΠΈΡ‚Π° Π³Ρ€Π°Π½ΠΈΡ† воркспСйса (#103): строгая Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ° рСкурсивных ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠΉ, Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½Π½Ρ‹Ρ… Π² ΠΊΠΎΡ€Π΅Π½ΡŒ (`/`, `~`, `.`) ΠΈΠ»ΠΈ Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Ρ‹ сСссионного ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°; * Π—Π°Ρ‰ΠΈΡ‚Π° систСмных прСфиксов (#105): бСзусловная Π·Π°Ρ‰ΠΈΡ‚Π° критичСских ΠΏΡƒΡ‚Π΅ΠΉ (`~/.dsh`, `~/.claude`, `~/.ssh`, `/etc`, `/usr`, систСмныС ΠΏΠ°ΠΏΠΊΠΈ Windows); * ΠŸΡ€ΠΎΠΏΡƒΡΠΊ сухой ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ (#104): распознаваниС Π²Π΅Ρ€ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… Ρ„Π»Π°Π³ΠΎΠ² (`-WhatIf`, `-Confirm`, `--dry-run`, `git clean -n`) Π±Π΅Π· Π»ΠΎΠΆΠ½Ρ‹Ρ… срабатываний; * Π’Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠ΅ явного подтвСрТдСния ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ для рискованных сцСнариСв. ### 3. πŸ“‹ НастраиваСмыС ΠΏΡ€Π°Π²ΠΈΠ»Π° ΠΈ панСль Web UI (`lib/client.js`) * Π“ΠΈΠ±ΠΊΠΎΠ΅ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΡ€Π°Π²ΠΈΠ»Π°ΠΌΠΈ бСзопасности; * Π˜Π½Π΄ΠΈΠΊΠ°Ρ‚ΠΎΡ€ статуса ΠΈ ΠΆΡƒΡ€Π½Π°Π» ΠΈΠ½Ρ†ΠΈΠ΄Π΅Π½Ρ‚ΠΎΠ² бСзопасности Π² интСрфСйсС DSH. ### 4. πŸͺ ΠœΠ½ΠΎΠ³ΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²Ρ‹ΠΉ ΠΏΠ΅Ρ€Π΅Ρ…Π²Π°Ρ‚ ΠΆΠΈΠ·Π½Π΅Π½Π½ΠΎΠ³ΠΎ Ρ†ΠΈΠΊΠ»Π° (`lib/guards/lifecycle-hooks.js`) * **ΠŸΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚Π½Π°Ρ рСгистрация Ρ…ΡƒΠΊΠΎΠ² (`prepend: true`)** (#125): Π“Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π²ΠΎ Π³Π»Π°Π²Π΅ ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² Cordis Π΄ΠΎ выполнСния сторонних Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠΉ; * **БСзусловная Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ° критичСских ΡƒΠ³Ρ€ΠΎΠ· (`secretBlockCritical`)** (#124): ДСструктивныС ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ высокой опасности (ΡƒΠ½ΠΈΡ‡Ρ‚ΠΎΠΆΠ΅Π½ΠΈΠ΅ корня, Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ дисков, ΡƒΡ‚Π΅Ρ‡ΠΊΠ° AWS/ΠΏΡ€ΠΈΠ²Π°Ρ‚Π½Ρ‹Ρ… ΠΊΠ»ΡŽΡ‡Π΅ΠΉ) Π±Π»ΠΎΠΊΠΈΡ€ΡƒΡŽΡ‚ΡΡ бСзусловно Π΄Π°ΠΆΠ΅ Π² Ρ€Π΅ΠΆΠΈΠΌΠ°Ρ… `audit_only` ΠΈΠ»ΠΈ `warning`; * **Π˜Π½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ Ρ€Π΅ΠΆΠΈΠΌ подтвСрТдСния (`ask`)** (#108): Π˜Π½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΡ с сСрвисом ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½ΠΈΠΉ DSH Π½Π° этапС `tools/pre-execute` с Π²ΠΎΠ·Π²Ρ€Π°Ρ‚ΠΎΠΌ `{ kind: 'ask', reason, displayReason }` ΠΏΡ€ΠΈ ΠΏΠΎΠ΄ΠΎΠ·Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… опСрациях; * **ΠŸΡ€Π΅Π΄Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΡ входящих ΠΏΡ€ΠΎΠΌΠΏΡ‚ΠΎΠ² (`agent/pre-step`)** (#110): Π‘ΠΊΠ°Π½ΠΈΡ€ΡƒΠ΅Ρ‚ сообщСния ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ Π΄ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Π² модСль, ΠΌΠ³Π½ΠΎΠ²Π΅Π½Π½ΠΎ отклоняя ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠΈ ΠΈΠ½ΡŠΠ΅ΠΊΡ†ΠΈΠΉ ΠΈ Π΄ΠΆΠ΅ΠΉΠ»Π±Ρ€Π΅ΠΉΠΊΠΎΠ² (`{ kind: 'reject' }`); * **Банитизация Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² инструмСнтов (`tools/post-execute`)** (#111): ΠŸΠ΅Ρ€Π΅Ρ…Π²Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ Π²Ρ‹Π²ΠΎΠ΄ инструмСнтов ΠΈ маскируСт Π½Π°ΠΉΠ΄Π΅Π½Π½Ρ‹Π΅ ΡƒΡ‡Π΅Ρ‚Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈ сСкрСты Π΄ΠΎ ΠΈΡ… попадания Π² контСкст ΠΌΠΎΠ΄Π΅Π»ΠΈ. --- ## πŸ› οΈ Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ Π°Π³Π΅Π½Ρ‚Π° (3 инструмСнта) | Имя инструмСнта | ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ | ОписаниС | |---|---|---| | `shadow_auditor_scan_diff` | `diff: string` | ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡΠ΅Ρ‚ Π΄ΠΈΡ„ ΠΊΠΎΠ΄Π° Π½Π° Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ ΠΏΡ€ΠΈΠ²Π°Ρ‚Π½Ρ‹Ρ… ΠΊΠ»ΡŽΡ‡Π΅ΠΉ ΠΈ Ρ‚ΠΎΠΊΠ΅Π½ΠΎΠ² | | `shadow_auditor_check_command` | `command: string` | ΠžΡ†Π΅Π½ΠΈΠ²Π°Π΅Ρ‚ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»ΡŒΠ½ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ Π½Π° Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π΄ запуском | | `shadow_auditor_rules_list` | *(Π½Π΅Ρ‚)* | Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ список Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹Ρ… ΠΏΡ€Π°Π²ΠΈΠ» бСзопасности ΠΈ Ρ€Π΅ΠΆΠΈΠΌΠΎΠ² | --- ## πŸ“¦ Быстрая установка ```bash dsh plugin --profile web add @goodandready/dsh-shadow-auditor ``` --- ## βš™οΈ ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ (`settings.yaml`) ```yaml dsh-shadow-auditor: strictSecretScanning: true # Π‘Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΈ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½ΠΈΠΈ ΠΊΠ»ΡŽΡ‡Π΅ΠΉ Π² ΠΊΠΎΠ΄Π΅ blockDangerousCommands: true # Π‘Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π°Π·Ρ€ΡƒΡˆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π΅ secretBlockCritical: true # БСзусловно Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ критичСскиС ΡƒΠ³Ρ€ΠΎΠ·Ρ‹ Π² ΠΎΠ±Ρ…ΠΎΠ΄ мягких Ρ€Π΅ΠΆΠΈΠΌΠΎΠ² enableReversibleMasking: true # ΠžΠ±Ρ€Π°Ρ‚ΠΈΠΌΠΎ Π·Π°ΠΌΠ΅Π½ΡΡ‚ΡŒ сСкрСты ΠΈ ΠŸΠ”Π½ плСйсхолдСрами shellGuardMode: 'enforce' # Π Π΅ΠΆΠΈΠΌ Π·Π°Ρ‰ΠΈΡ‚Ρ‹ ΠΊΠΎΠΌΠ°Π½Π΄: enforce (Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ°), audit_only (Π»ΠΎΠ³), ask (запрос ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ) diffGateMode: 'warning' # Π Π΅ΠΆΠΈΠΌ Π³Π΅ΠΉΡ‚Π° Π΄ΠΈΡ„Ρ„ΠΎΠ²: disabled, warning ΠΈΠ»ΠΈ block enableAuditBadge: true # ΠžΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒ Π±Π΅ΠΉΠ΄ΠΆ бСзопасности Π² интСрфСйсС ΠΈ Π΄ΠΈΠ°Π»ΠΎΠ³Π°Ρ… подтвСрТдСния enableAuditLog: true # ВСсти пСрсистСнтный JSONL-ΠΆΡƒΡ€Π½Π°Π» Π°ΡƒΠ΄ΠΈΡ‚Π° с Ρ€ΠΎΡ‚Π°Ρ†ΠΈΠ΅ΠΉ maxFileSizeMb: 50 # Π‘ΠΆΠΈΠΌΠ°Ρ‚ΡŒ Π² .gz Π»ΠΎΠ³ΠΈ большС 50 ΠœΠ‘ retentionDays: 30 # Π‘Ρ€ΠΎΠΊ хранСния сТатых Π»ΠΎΠ³ΠΎΠ² Π°ΡƒΠ΄ΠΈΡ‚Π° Π² днях ``` --- ### πŸ”’ Π”Π²ΠΈΠΆΠΎΠΊ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΠΌΠΎΠ³ΠΎ маскирования ΠΈ подстановки плСйсхолдСров ΠŸΡ€ΠΈ Π²ΠΊΠ»ΡŽΡ‡Ρ‘Π½Π½ΠΎΠΉ ΠΎΠΏΡ†ΠΈΠΈ `enableReversibleMasking` (ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ: `true`) входящиС ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠ΅ ΠΏΡ€ΠΎΠΌΠΏΡ‚Ρ‹ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡŽΡ‚ΡΡ Π½Π° шагС `agent/pre-step`. ΠžΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½Π½Ρ‹Π΅ Ρ‚ΠΎΠΊΠ΅Π½Ρ‹, API-ΠΊΠ»ΡŽΡ‡ΠΈ, ΠΏΡ€ΠΈΠ²Π°Ρ‚Π½Ρ‹Π΅ ΠΊΠ»ΡŽΡ‡ΠΈ, email-адрСса, IPv4-адрСса ΠΈ Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Ρ‹ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΠΌΠΎ Π·Π°ΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ ΠΌΠΎΠ½ΠΎΡ‚ΠΎΠ½Π½Ρ‹ΠΌΠΈ плСйсхолдСрами (``, ``, ``). * **ΠŸΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ΅ использованиС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ**: ΠŸΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽΡ‰ΠΈΠ΅ΡΡ Π² ΠΏΡ€Π΅Π΄Π΅Π»Π°Ρ… ΠΎΠ΄Π½ΠΎΠΉ сСссии значСния ΡΠΎΡ…Ρ€Π°Π½ΡΡŽΡ‚ Π΅Π΄ΠΈΠ½Ρ‹ΠΉ присвоСнный плСйсхолдСр. * **Π—Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ ΠΊΠΎΠ»Π»ΠΈΠ·ΠΈΠΉ прСфиксов**: ВосстановлСниС исходных Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ строго сортируСтся ΠΏΠΎ ΡƒΠ±Ρ‹Π²Π°Π½ΠΈΡŽ Π΄Π»ΠΈΠ½Ρ‹ плСйсхолдСров (`` ΠΏΠ΅Ρ€Π΅Π΄ ``), ΠΈΡΠΊΠ»ΡŽΡ‡Π°Ρ ΠΏΠΎΠ²Ρ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠ΅ подстрок. * **БСссионная ΠΊΠΎΠΌΠ°Π½Π΄Π° восстановлСния**: Авторизованный ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΠΎΡΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ исходный тСкст локально Π² Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π΅: ```text /shadow-auditor restore ``` * **Π˜Π½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ чистоты Π»ΠΎΠ³ΠΎΠ² сСссии**: ΠŸΡ€ΠΎΠΌΠΏΡ‚Ρ‹, отправляСмыС Π² LLM, ΠΈ сохраняСмыС JSONL-ΠΆΡƒΡ€Π½Π°Π»Ρ‹ Π°ΡƒΠ΄ΠΈΡ‚Π° Π½Π΅ содСрТат сырых сСкрСтов. --- --- ## πŸ”„ Π˜ΡΡ‚ΠΎΡ€ΠΈΡ Ρ€Π΅Π»ΠΈΠ·ΠΎΠ² ### v0.2.9 (Π­Π²ΠΎΠ»ΡŽΡ†ΠΈΡ бСзопасности ΠΈ каноничСская локализация) - **ΠšΠ°Π½ΠΎΠ½ΠΈΡ‡Π΅ΡΠΊΠΈΠΉ языковой стандарт**: ΠŸΠΎΠ»Π½Ρ‹ΠΉ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ ΠΊΠΎΠ΄Π° ΠΈ UI Π½Π° английский (`en`) ΠΈ китайский (`zh`); русская локализация вСдётся Ρ‡Π΅Ρ€Π΅Π· `goodandready/dsh-russian-lang`. - **Чистота дистрибутива**: Π˜ΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Π½Π΅Ρ€Π΅Π»ΠΈΠ·Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ² (`AGENTS.md`, `index.md`) ΠΈΠ· рСпозитория; строгий ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒ Π»ΠΈΠΌΠΈΡ‚Π° $\le 256$ ΠšΠ‘ Π½Π° Ρ„Π°ΠΉΠ». - **Π–ΡƒΡ€Π½Π°Π» ΠΏΠ΅Ρ€Π΅Ρ…Π²Π°Ρ‚ΠΎΠ² Π² Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΌ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ**: Π˜Π½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½Π°Ρ Π»Π΅Π½Ρ‚Π° событий Π°ΡƒΠ΄ΠΈΡ‚Π° с Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°ΠΌΠΈ ΠΏΠΎ Ρ‚ΠΈΠΏΠ°ΠΌ ΡƒΠ³Ρ€ΠΎΠ· (All, Shell Guard, Diff Gate, High Risk). - **ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠ΅ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ бСзопасности**: Настройка рСгулярных Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ для Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ ΠΊΠΎΠΌΠ°Π½Π΄ ΠΈ масок Ρ‡ΡƒΠ²ΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ², ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚Π΅Π»ΡŒ Ρ€Π΅ΠΆΠΈΠΌΠΎΠ² Enforce / Audit-only. - **Π˜Π½ΡΠΏΠ΅ΠΊΡ‚ΠΎΡ€ Diff Gate ΠΈ бСзопасныС Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΈ**: Π’ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΉ инспСктор с подсвСткой Π½Π°Ρ€ΡƒΡˆΠ΅Π½ΠΈΠΉ ΠΈ Π³ΠΎΡ‚ΠΎΠ²Ρ‹ΠΌΠΈ подсказками бСзопасного исправлСния ΠΊΠΎΠ΄Π°. - **ΠœΠΎΠ½ΠΈΡ‚ΠΎΡ€ цСлостности Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΈ якорных сСкрСтов**: Π—Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ нСсанкционированного доступа ΠΊ `.env`, `settings.yaml`, SSH-ΠΊΠ»ΡŽΡ‡Π°ΠΌ ΠΈ ΠΊΠΎΠ½Ρ„ΠΈΠ΄Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΌ Ρ„Π°ΠΉΠ»Π°ΠΌ. - **Экспорт ΠΎΡ‚Ρ‡Ρ‘Ρ‚ΠΎΠ² комплаСнса**: Экспорт аудиторского слСда Π² JSON ΠΈΠ»ΠΈ Markdown-Π²Π΅Π΄ΠΎΠΌΠΎΡΡ‚ΡŒ Π² ΠΎΠ΄ΠΈΠ½ ΠΊΠ»ΠΈΠΊ ΠΈΠ· интСрфСйса. ### v0.2.8 (Унификация UI ΠΈ синхронизация настроСк) * **Π•Π΄ΠΈΠ½Ρ‹ΠΉ ΡΡ‚ΠΈΠ»ΡŒ интСрфСйса (Π² стилС `dsh-clinebot`)**: ΠšΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠ° настроСк ΠΏΠ΅Ρ€Π΅Ρ€Π°Π±ΠΎΡ‚Π°Π½Π° Π½Π° 4 структурированных ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ Ρ€Π°Π·Π΄Π΅Π»ΠΎΠ² с Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΌΠΈ Π΄ΠΈΠ·Π°ΠΉΠ½-Ρ‚ΠΎΠΊΠ΅Π½Π°ΠΌΠΈ DSH (`--dsw-alias-*`), Π°Π΄Π°ΠΏΡ‚ΠΈΠ²Π½ΠΎΠΉ сСткой, Π±Π΅ΠΉΠ΄ΠΆΠ°ΠΌΠΈ статуса ΠΈ Π²Ρ‹Π²Π΅Ρ€Π΅Π½Π½ΠΎΠΉ Ρ‚ΠΈΠΏΠΎΠ³Ρ€Π°Ρ„ΠΈΠΊΠΎΠΉ. * **Полная синхронизация настроСк**: Π’ состояниС Ρ„ΠΎΡ€ΠΌΡ‹ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹ ΠΈ синхронизированы поля `diffGateMode`, `enableSastScan` ΠΈ `enablePromptInjectionScan`. * **УсилСниС ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ошибок**: Π—Π°ΠΌΠ΅Π½Π΅Π½Ρ‹ Π½Π΅ΠΌΡ‹Π΅ catch-Π±Π»ΠΎΠΊΠΈ Π½Π° Π»ΠΎΠ³ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ‡Π΅Ρ€Π΅Π· Π»ΠΎΠ³Π³Π΅Ρ€ ΠΏΠ»Π°Π³ΠΈΠ½Π°. * **Π Π°ΡΡˆΠΈΡ€Π΅Π½Π½ΠΎΠ΅ тСстированиС**: Π”ΠΎΠ±Π°Π²Π»Π΅Π½ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ Π½Π°Π±ΠΎΡ€ тСстов `test/ui-and-stability-028.test.mjs` (всС 26 тСстов ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ ΠΏΡ€ΠΎΠΉΠ΄Π΅Π½Ρ‹). ### v0.2.7 (ΠŸΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΠ΅ ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΈ устранСниС Π»ΠΎΠΆΠ½Ρ‹Ρ… срабатываний) * **УстранСниС Π»ΠΎΠΆΠ½Ρ‹Ρ… срабатываний secret-write**: ИмСна Ρ„Π°ΠΉΠ»ΠΎΠ² Π²Ρ€ΠΎΠ΄Π΅ `check_token.js` ΠΈΠ»ΠΈ `test_secret.py` большС Π½Π΅ Π±Π»ΠΎΠΊΠΈΡ€ΡƒΡŽΡ‚ΡΡ ΠΊΠ°ΠΊ запись сСкрСтов; Π·Π°Ρ‰ΠΈΡ‰Π°ΡŽΡ‚ΡΡ ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Π΅ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π° (`.env`, `.credentials`, ΠΊΠ»ΡŽΡ‡ΠΈ SSH/PEM). * **Π€ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΡ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π² Π² SAST**: ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ, содСрТащиС SQL-запросы ΠΈΠ»ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ `eval`, большС Π½Π΅ Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‚ Π»ΠΎΠΆΠ½Ρ‹Ρ… ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠΉ. Π Π°Π·Ρ€Π΅ΡˆΠ΅Π½Ρ‹ бСзопасныС ΠΏΡƒΡ‚ΠΈ Ρ‡Π΅Ρ€Π΅Π· `import.meta.url` ΠΈ `__dirname`. * **ΠžΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ рСсурсов Diff Gate**: Π‘Ρ‚Ρ€ΠΎΠΊΠΈ Π΄Π»ΠΈΠ½Π½Π΅Π΅ 2048 символов ΠΎΠ±Ρ€Π΅Π·Π°ΡŽΡ‚ΡΡ ΠΏΠ΅Ρ€Π΅Π΄ Π°Π½Π°Π»ΠΈΠ·ΠΎΠΌ для Π·Π°Ρ‰ΠΈΡ‚Ρ‹ ΠΎΡ‚ зависаний Π½Π° ΠΌΠΈΠ½ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… Π±Π°Π½Π΄Π»Π°Ρ…; тСстовыС Ρ„Π°ΠΉΠ»Ρ‹ ΠΏΡ€ΠΎΠΏΡƒΡΠΊΠ°ΡŽΡ‚ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ Π½Π° prompt injection. * **БСзопасная ΠΊΠΎΠΌΠ°Π½Π΄Π° /audit**: Команда Π² Ρ‡Π°Ρ‚Π΅ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Ρ‡ΠΈΡ‚Π°Π΅Ρ‚ послСдниС 50 записСй (`readRecent`), прСдотвращая ΠΏΠ΅Ρ€Π΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ памяти Π½Π° Π±ΠΎΠ»ΡŒΡˆΠΈΡ… ΠΆΡƒΡ€Π½Π°Π»Π°Ρ… (ΠΏΠΎΠ»Π½Ρ‹ΠΉ Π»ΠΎΠ³ доступСн Ρ‡Π΅Ρ€Π΅Π· `--all`). * **ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ опроса Π²ΠΊΠ»Π°Π΄ΠΊΠΈ**: Π€ΠΎΠ½ΠΎΠ²Ρ‹ΠΉ опрос `AuditShieldChip` приостанавливаСтся, Ссли Π²ΠΊΠ»Π°Π΄ΠΊΠ° Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π° скрыта (`document.hidden`). ### v0.2.6 (Шлюз бСзопасности ΠΊΠΎΠ΄Π° Code-Security Diff Gate) * **Шлюз бСзопасности ΠΊΠΎΠ΄Π° (`lib/diff-gate/`)**: Анализ Π΄ΠΈΡ„Ρ„ΠΎΠ² ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Ρ„Π°ΠΉΠ»ΠΎΠ² Π½Π° Π³Ρ€Π°Π½ΠΈΡ†Π΅ утвСрТдСния/примСнСния Π°Π³Π΅Π½Ρ‚ΠΎΠΌ. * **Нормализованная схСма Π½Π°Ρ…ΠΎΠ΄ΠΎΠΊ**: Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ замСчания со ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½Ρ‹ΠΌΠΈ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π°ΠΌΠΈ (`SEC-*`, `SAST-*`, `PI-*`), уровнями опасности, объяснСниСм риска ΠΈ рСкомСндациями (suggestion-only). * **Π£Π»ΡƒΡ‡ΡˆΠ΅Π½Π½Ρ‹ΠΉ Π΄Π΅Ρ‚Π΅ΠΊΡ‚ΠΎΡ€ сСкрСтов**: Анализ энтропии Π¨Π΅Π½Π½ΠΎΠ½Π° для высокоэнтропийных строк ΠΈ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½Ρ‹Π΅ ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½Ρ‹ ΠΊΠ»ΡŽΡ‡Π΅ΠΉ. * **ВстроСнный SAST-Π΄Π²ΠΈΠΆΠΎΠΊ**: Π”Π΅Ρ‚Π΅ΠΊΡ‚ SQL-ΠΈΠ½ΡŠΠ΅ΠΊΡ†ΠΈΠΉ, внСдрСния шСлл-ΠΊΠΎΠΌΠ°Π½Π΄, path traversal, Π·Π°Ρ…Π°Ρ€Π΄ΠΊΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… ΠΏΠ°Ρ€ΠΎΠ»Π΅ΠΉ ΠΈ динамичСского выполнСния ΠΊΠΎΠ΄Π° (`eval`). * **ЭвристичСский Π΄Π΅Ρ‚Π΅ΠΊΡ‚ Prompt-Injection**: ВыявлСниС ΠΏΠΎΠΏΡ‹Ρ‚ΠΎΠΊ ΠΎΠ±Ρ…ΠΎΠ΄Π° инструкций, Π΄ΠΆΠ΅ΠΉΠ»Π±Ρ€Π΅ΠΉΠΊΠΎΠ² ΠΈ ΡƒΡ‚Π΅Ρ‡ΠΊΠΈ систСмного контСкста Π² измСняСмых Ρ„Π°ΠΉΠ»Π°Ρ…. * **Π Π΅ΠΆΠΈΠΌΡ‹ шлюза (`disabled`, `warning`, `block`)**: Настройка Ρ‡Π΅Ρ€Π΅Π· ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΡƒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ²; Ρ€Π΅ΠΆΠΈΠΌ `block` останавливаСт критичСскиС ΡƒΠ³Ρ€ΠΎΠ·Ρ‹. * **ПодавлСниС Π»ΠΎΠΆΠ½Ρ‹Ρ… срабатываний**: ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Ρ‚ΠΎΡ‡Π΅Ρ‡Π½Ρ‹Ρ… ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π² `// shadow-audit-ignore: `. ### v0.2.5 (КомплСксноС ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎΡΡ‚ΠΈ, памяти ΠΈ UI-Ρ‰ΠΈΡ‚Π°) * **Π—Π½Π°Ρ‡ΠΎΠΊ Ρ‰ΠΈΡ‚Π° бСзопасности Π² шапкС сСссии (`conversation.session.header.utilities`)**: Нативный ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ `AuditShieldChip` со статусом Π² Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΌ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ. * **Π—Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ OOM Π² `AuditRecorder`**: ΠœΠ΅Ρ‚ΠΎΠ΄ `readRecent(limit)` Ρ‡ΠΈΡ‚Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ свСТиС записи Π±Π΅Π· распаковки сТатых Π°Ρ€Ρ…ΠΈΠ²ΠΎΠ². * **Блэш-ΠΊΠΎΠΌΠ°Π½Π΄Π° `--limit=N`**: По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Π° `/audit` Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ послСдниС 50 записСй. * **УстранСниС ΡƒΡ‚Π΅Ρ‡Π΅ΠΊ памяти сСссий**: ΠžΡ‡ΠΈΡΡ‚ΠΊΠ° кэшСй Ρ…ΠΎΠ΄ΠΎΠ² ΠΈ событий ΠΏΠΎ событиям уничтоТСния сСссий с ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΏΠΎ LRU. * **УстранСниС Π»ΠΎΠΆΠ½Ρ‹Ρ… срабатываний ΠΊΠΎΠΌΠ°Π½Π΄**: Π Π°Π·Ρ€Π΅ΡˆΠ΅Π½Ρ‹ бСзопасныС Π²Ρ‹Π·ΠΎΠ²Ρ‹ `grep -i kill`, `systemctl status`, `systemctl is-active`. * **Π‘Π½ΠΈΠΆΠ΅Π½ΠΈΠ΅ ΠΊΠΎΠ³Π½ΠΈΡ‚ΠΈΠ²Π½ΠΎΠΉ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Π½Π° LLM**: Π£Π΄Π°Π»Π΅Π½ ΠΈΠ·Π±Ρ‹Ρ‚ΠΎΡ‡Π½Ρ‹ΠΉ инструмСнт `shadow_auditor_rules_list`. ### v0.2.4 (Π˜ΡΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΡ авторских стандартов DSH ΠΈ UI-ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ) * **ΠŸΠΎΠ»Π½ΠΎΡ‚Π° ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² Π² ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠ΅ настроСк Web UI**: Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚Π΅Π»ΡŒ записи ΠΆΡƒΡ€Π½Π°Π»Π° (`enableAuditLog`), Π»ΠΈΠΌΠΈΡ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° Ρ„Π°ΠΉΠ»Π° Π² ΠœΠ‘ (`maxFileSizeMb`) ΠΈ срок хранСния Π°Ρ€Ρ…ΠΈΠ²ΠΎΠ² (`retentionDays`) с Π»ΠΎΠΊΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ Π½Π° русском ΠΈ английском языках (#34). * **УстранСниС Π΄Π²ΠΎΠΉΠ½ΠΎΠΉ рСгистрации слотов**: ΡƒΠ΄Π°Π»Ρ‘Π½ ΠΎΡ‚Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΉ Ρ‚Π°ΠΉΠΌΠ΅Ρ€ `setTimeout` с запасным ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΎΠΌ Π² `settings.section`; ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠ° рСгистрируСтся Π°Ρ‚ΠΎΠΌΠ°Ρ€Π½ΠΎ Π² Ρ†Π΅Π»Π΅Π²ΠΎΠΉ слот `settings.plugin.item` (#35). * **Π‘Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ° Ρ„ΠΎΡ€ΠΌΡ‹ ΠΏΡ€ΠΈ нСдоступности настроСк**: Ссли снимок настроСк находится Π² статусС `unavailable`, поля Π²Π²ΠΎΠ΄Π° ΠΈ ΠΊΠ½ΠΎΠΏΠΊΠ° сохранСния ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ΡΡ (`disabled: true`), Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ выводится понятноС ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠ΅ (#32). * **ΠžΡ‡ΠΈΡΡ‚ΠΊΠ° Π½Π΅ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… зависимостСй**: ΡƒΠ΄Π°Π»Ρ‘Π½ Π½Π΅ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ ΠΏΠ°ΠΊΠ΅Ρ‚ `@deepseek-ai/dsh-credentials` ΠΈΠ· `peerDependencies` Π² `package.json` (#33). * **Π˜Π·ΠΎΠ»ΡΡ†ΠΈΡ стилСй**: ΠΊ Ρ‚Π΅Π³Ρƒ стилСй ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ `data-dsh-plugin="dsh-shadow-auditor"` для Π·Π°Ρ‰ΠΈΡ‚Ρ‹ ΠΎΡ‚ очистки стилСй сосСдними ΠΏΠ»Π°Π³ΠΈΠ½Π°ΠΌΠΈ. * **Π”ΠΈΠ·Π°ΠΉΠ½-ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚**: Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ `docs/design/DESIGN.md`, Ρ„ΠΈΠΊΡΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ ΡΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ повСрхностСй ΠΈ состояний ΠΏΠ»Π°Π³ΠΈΠ½Π°. ### v0.2.3 (Π˜ΡΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π»ΠΎΠΆΠ½Ρ‹Ρ… срабатываний Π΄Π΅Ρ‚Π΅ΠΊΡ‚Π° ΡΠΊΡΡ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΠΈ) * **УстранСниС Π»ΠΎΠΆΠ½Ρ‹Ρ… Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΎΠΊ Π»Π΅Π³ΠΈΡ‚ΠΈΠΌΠ½Ρ‹Ρ… API-запросов**: Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΎ Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ ΠΈ ΠΈΠ·Π²Π»Π΅Ρ‡Π΅Π½ΠΈΠ΅ ΠΊΠ»ΡŽΡ‡Π΅ΠΉ ΠΈΠ· ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΉ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, `K=$(grep KEY ~/.dsh/.credentials.yaml) && curl ... -H "Authorization: Bearer $K"`). * **Π’ΠΎΡ‡Π΅Ρ‡Π½Ρ‹ΠΉ Π°Π½Π°Π»ΠΈΠ· сСтСвой ΡΠΊΡΡ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΠΈ**: Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ° срабатываСт строго ΠΏΡ€ΠΈ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ΅ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ² сСкрСтов ΠΊΠ°ΠΊ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ (`-d @.env`, `-F file=@...`, `--post-file=...`), прямого ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€Π° (`cat .env | curl/nc`) ΠΈΠ»ΠΈ пСрСнаправлСния Π²Π²ΠΎΠ΄Π° (`< .env`), Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΡ€ΠΈ ΡƒΠ΄Π°Π»Ρ‘Π½Π½ΠΎΠΉ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π΅ Ρ‡Π΅Ρ€Π΅Π· `scp/rsync`. ### v0.2.0 (ΠšΠΎΠΌΠΏΠ»Π΅ΠΊΡΠ½Ρ‹ΠΉ Π°ΡƒΠ΄ΠΈΡ‚, скоринг риска ΠΈ Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ ΡΠΊΡΡ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΠΈ) * **Блэш-ΠΊΠΎΠΌΠ°Π½Π΄Π° `/audit` Π² Ρ‡Π°Ρ‚Π΅ DSH**: Π²Ρ‹Π²ΠΎΠ΄ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ вСдомости (Operation Bill) прямо Π² пСрСписку β€” счётчик Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² инструмСнтов, сводка рисков (Π±Π°Π»Π»Ρ‹ 0–100), Ρ‚Π°Π±Π»ΠΈΡ†Π° ΠΏΠΎΠ΄ΠΎΠ·Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ ΠΈ список ΠΏΠ΅Ρ€Π΅Ρ…Π²Π°Ρ‡Π΅Π½Π½Ρ‹Ρ… дСйствий. Π€Π»Π°Π³ΠΈ: `--turn` (послСдний Ρ…ΠΎΠ΄), `--all` (вся история), `--json` (для скриптов), `--since=YYYY-MM-DD`, `--limit=N` (ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ 50). * **Π”ΠΎΠ»Π³ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠ΅ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ `AuditRecorder`**: Π»ΠΎΠ³ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ событий Π² `/shadow-auditor/.jsonl` Ρ‡Π΅Ρ€Π΅Π· ΡΠ΅Ρ€ΠΈΠ°Π»ΠΈΠ·ΡƒΡŽΡ‰ΡƒΡŽ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ Promise (Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ Π³ΠΎΠ½ΠΎΠΊ ΠΏΡ€ΠΈ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Ρ‹Ρ… Π·Π°Π΄Π°Ρ‡Π°Ρ…), автосТатиС Π² `.gz` ΠΏΡ€ΠΈ ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ΅Π½ΠΈΠΈ 50 ΠœΠ‘ ΠΈ ротация Π°Ρ€Ρ…ΠΈΠ²ΠΎΠ² ΡΡ‚Π°Ρ€ΡˆΠ΅ 30 Π΄Π½Π΅ΠΉ. * **Π“Π»ΡƒΠ±ΠΎΠΊΠΈΠ΅ Ρ…ΡƒΠΊΠΈ Ρ‚Π΅Π»Π΅ΠΌΠ΅Ρ‚Ρ€ΠΈΠΈ ядра DSH**: Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΠ΅Ρ€Π΅Ρ…Π²Π°Ρ‚ `tools/result` для фиксации Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ исхода выполнСния инструмСнтов (`result.isError`), сохранСниС санитизированных сообщСний ΠΎΠ± ΠΎΡˆΠΈΠ±ΠΊΠ°Ρ… ΠΈ Π³Ρ€Π°Π½ΠΈΡ† Ρ…ΠΎΠ΄ΠΎΠ² Ρ‡Π΅Ρ€Π΅Π· `session/event` (`turn/end`). * **Π—Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ сСтСвой ΡΠΊΡΡ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΠΈ сСкрСтов**: Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ° сСтСвых ΡƒΡ‚ΠΈΠ»ΠΈΡ‚ (`curl`, `wget`, `scp`, `ssh`, `nc`, `socat` ΠΈ Π΄Ρ€.), Ссли Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ содСрТат ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ ΠΊ Ρ„Π°ΠΉΠ»Π°ΠΌ ΠΊΠ»ΡŽΡ‡Π΅ΠΉ (`.env`, `id_rsa`, `.git-credentials` ΠΈ Π΄Ρ€.). * **Π—Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ шСлл-Ρ€Π΅Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΠ² Π²Π½Π΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°**: Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ° ΠΏΠ΅Ρ€Π΅Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠΉ `>` ΠΈ `>>` Π² систСмныС ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΈ (`/etc/`, `~/.bashrc`, `%USERPROFILE%`, cron). * **Π£ΠΌΠ½Ρ‹ΠΉ `git push --force`**: Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ° `--force` ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ для Π·Π°Ρ‰ΠΈΡ‰Ρ‘Π½Π½Ρ‹Ρ… Π²Π΅Ρ‚ΠΎΠΊ (`main`, `master`, `prod`) ΠΈ remotes; сохранСна свобода пСрСбазирования Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… Ρ„ΠΈΡ‡Π΅-Π²Π΅Ρ‚ΠΎΠΊ. * **Π”Π΅Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ скоринг рисков (0–100)**: автоматичСскоС присвоСниС Π±Π°Π»Π»ΠΎΠ² ΠΈ Ρ‚Π΅Π³ΠΎΠ² риска Π±Π΅Π· привлСчСния LLM, ΡΠΊΠΎΠ»ΡŒΠ·ΡΡ‰Π΅Π΅ 10-ΠΌΠΈΠ½ΡƒΡ‚Π½ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ накоплСния ΡˆΡ‚Ρ€Π°Ρ„ΠΎΠ² Π·Π° Π°Π½ΠΎΠΌΠ°Π»ΡŒΠ½ΡƒΡŽ частоту Π²Ρ‹Π·ΠΎΠ²ΠΎΠ². * **РСкурсивная санитизация Π΄Π°Π½Π½Ρ‹Ρ… Π΄ΠΎ сходимости**: ΠΌΠΎΠ΄ΡƒΠ»ΡŒ `redactText` / `redactValue` ΠΎΡ‡ΠΈΡ‰Π°Π΅Ρ‚ Π³Π»ΡƒΠ±ΠΎΠΊΠΈΠ΅ структуры ΠΎΡ‚ Ρ‚ΠΎΠΊΠ΅Π½ΠΎΠ², ΠΏΠ°Ρ€ΠΎΠ»Π΅ΠΉ ΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ `.env` Π΄ΠΎ Π½Π΅ΠΏΠΎΠ΄Π²ΠΈΠΆΠ½ΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠΈ. ### v0.1.4 (Hotfix рСгистрации слота настроСк) * **Асинхронная рСгистрация слота (`settings.plugin.item`)**: рСгистрация ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ настроСк ΠΏΠ΅Ρ€Π΅Π²Π΅Π΄Π΅Π½Π° Π½Π° `ctx.slots.inject`, Ρ‡Ρ‚ΠΎ ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΎΡˆΠΈΠ±ΠΊΡƒ Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊΠ° ядра ΠΏΡ€ΠΈ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠΈ ΠΊ Π΅Ρ‰Ρ‘ Π½Π΅ ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Π½ΠΎΠΌΡƒ слоту (`slot is not declared`). * **Запасной Ρ€Π°Π·Π΄Π΅Π» (`settings.section`)**: Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ автоматичСский fallback Π½Π° ΠΏΠ΅Ρ€ΡΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π°Π·Π΄Π΅Π» настроСк с Ρ‚Π°ΠΉΠΌΠ΅Ρ€ΠΎΠΌ ΠΈ очисткой Ρ‡Π΅Ρ€Π΅Π· `ctx.effect`, Ссли Π² Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ сборкС DSH отсутствуСт слот ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ². ### v0.1.3 (Hotfix бСзопасности ΠΈ ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎΡΡ‚ΠΈ) * **УсилСнный Ρ€Π°Π·Π±ΠΎΡ€ Ρ†Π΅ΠΏΠΎΡ‡Π΅ΠΊ ΠΊΠΎΠΌΠ°Π½Π΄ (`findDangerous`)**: Π°Π½Π°Π»ΠΈΠ· составных Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»ΡŒΠ½Ρ‹Ρ… Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ (`&&`, `||`, `;`, пСрСнос строк) ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΎΠ±Ρ…ΠΎΠ΄ Ρ„Π°Π΅Ρ€Π²ΠΎΠ»Π° Ρ€Π°Π·Ρ€Π΅ΡˆΡ‘Π½Π½Ρ‹ΠΌΠΈ ΠΏΠΎΠ΄ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌΠΈ (`systemctl status && rm -rf /`). * **Π’ΠΎΡ‡Π½ΠΎΠ΅ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ сСкрСтов (`scanSecrets`)**: устранСна лоТная Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΡ Π±ΠΎΠ΅Π²Ρ‹Ρ… Ρ‚ΠΎΠΊΠ΅Π½ΠΎΠ² ΠΈ ΠΊΠ»ΡŽΡ‡Π΅ΠΉ, содСрТащих подстроку "example". * **АвтоматичСскоС маскированиС Ρ‚ΠΎΠΊΠ΅Π½ΠΎΠ² (`maskSecret`)**: ΠΏΠ΅Ρ€Π΅Ρ…Π²Π°Ρ‡Π΅Π½Π½Ρ‹Π΅ сСкрСты ΠΌΠ°ΡΠΊΠΈΡ€ΡƒΡŽΡ‚ΡΡ (`sk-pr...****...1234`) ΠΏΠ΅Ρ€Π΅Π΄ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π΅ΠΉ Π² HTTP API ΠΈ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ Π² Web UI. * **НСограничСнноС сканированиС Ρ„Π°ΠΉΠ»ΠΎΠ²**: снято ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ Π½Π° Ρ€Π°Π·ΠΌΠ΅Ρ€ провСряСмого Ρ„Π°ΠΉΠ»Π° (Ρ€Π°Π½Π΅Π΅ ΠΏΠ΅Ρ€Π²Ρ‹Π΅ 8 ΠšΠ‘), Ρ„Π°ΠΉΠ»Ρ‹ любого Ρ€Π°Π·ΠΌΠ΅Ρ€Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡŽΡ‚ΡΡ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ. * **ΠšΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½Ρ‹ΠΉ ΠΆΠΈΠ·Π½Π΅Π½Π½Ρ‹ΠΉ Ρ†ΠΈΠΊΠ» Cordis**: рСгистрация инструмСнтов ΠΈΠ·ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Π½Π° Π² `ctx.effect` с автоматичСской очисткой ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π΅Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ΅; исправлСн контСкст события `approval/asked`. * **ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ Web UI**: ΡƒΠ΄Π°Π»Ρ‘Π½ ΠΏΠ°Ρ€Π°Π·ΠΈΡ‚Π½Ρ‹ΠΉ сброс Ρ„ΠΎΡ€ΠΌΡ‹ ΠΏΠΎ Ρ‚Π°ΠΉΠΌΠ΅Ρ€Ρƒ, опрос статуса Π°ΡƒΠ΄ΠΈΡ‚Π° выполняСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΈ раскрытой ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠ΅, ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‰Π΅Π½Ρ‹ ΡƒΡ‚Π΅Ρ‡ΠΊΠΈ памяти. * **ΠšΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ API**: Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ HTTP-Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ `Cache-Control: no-store` для Ρ€ΠΎΡƒΡ‚Π° `/dsh-shadow-auditor/audit`. --- ## πŸ“„ ЛицСнзия MIT Β© [GooDAnDReaDY](https://github.com/GooDAnDReaDY) ## ИзмСнСния Π² v0.2.11 - Бтандартизация описаний Π½Π°Ρ…ΠΎΠ΄ΠΎΠΊ Π½Π° английском ΠΈ китайском языках, 0 ΠΊΠΈΡ€ΠΈΠ»Π»ΠΈΡ†Ρ‹ Π² ΠΊΠΎΠ΄Π΅ (#47) - ΠœΠΎΠ΄ΡƒΠ»ΡŒ one-click обновлСния ΠΈΠ· ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ настроСк DSH (#48) - Π—Π°Ρ‰ΠΈΡ‚Π° HTTP-ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΎΠ² Π°ΡƒΠ΄ΠΈΡ‚Π° с ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° GET ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΎΠΉ источника (#49) - Π˜ΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΡ… ΠΏΠ»Π°Π½ΠΎΠ² ΠΈΠ· git-индСкса ΠΈ Ρ€Π΅Π»ΠΈΠ·Π½ΠΎΠ³ΠΎ tarball (#50) - ΠžΡ‡ΠΈΡΡ‚ΠΊΠ° Ρ€Π°Π±ΠΎΡ‡Π΅Π³ΠΎ Π΄Π΅Ρ€Π΅Π²Π° ΠΎΡ‚ ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠΈΡ… .tgz Π°Ρ€Ρ…ΠΈΠ²ΠΎΠ² (#51) - ΠŸΠΎΠ»Π½Ρ‹ΠΉ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ стилСй Π½Π° Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹Π΅ CSS-Ρ‚ΠΎΠΊΠ΅Π½Ρ‹ Ρ‚Π΅ΠΌΡ‹ DSH Π±Π΅Π· hex ΠΈ rgba (#52) - ОбъявлСниС состава клиСнтских зависимостСй Π² dsh.client.inject (#53) - ΠœΠ΅Ρ‚Ρ€ΠΈΠΊΠΈ ΠΈ Π»ΠΎΠ³ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ошибок записи Π°ΡƒΠ΄ΠΈΡ‚Π° ΠΈ Π½Π΅Ρ‡ΠΈΡ‚Π°Π΅ΠΌΡ‹Ρ… строк (#54) - РСгистрация словарСй Π»ΠΎΠΊΠ°Π»Π΅ΠΉ Π²Π½ΡƒΡ‚Ρ€ΠΈ ctx.effect с ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠΉ отпиской (#55) ## ИзмСнСния Π² v0.2.10 Выпуск устраняСт Π΄Π²Π° Π»ΠΎΠΆΠ½Ρ‹Ρ… срабатывания Π·Π°Ρ‰ΠΈΡ‚Ρ‹ ΠΊΠΎΠΌΠ°Π½Π΄, сохраняСт Π·Π°ΠΏΡ€Π΅Ρ‚ Π½Π° рСкурсивноС ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΈ запись Π² Π·Π°Ρ‰ΠΈΡ‰Ρ‘Π½Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹, Π° Ρ‚Π°ΠΊΠΆΠ΅ добавляСт Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΡƒΡŽ ΠΎΡ‚Π»Π°Π΄ΠΎΡ‡Π½ΡƒΡŽ диагностику best-effort-сбоСв. Π—Π°Ρ‰ΠΈΡ‚Π½Ρ‹ΠΉ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ Ρ€Π°Π·Ρ€Π΅ΡˆΠ°Π΅Ρ‚ rm -f, Ссли Π½Π΅Ρ‚ рСкурсивного Ρ„Π»Π°Π³Π°. rm -r, rm -rf ΠΈ Ρ€Π°Π·Π΄Π΅Π»ΡŒΠ½ΠΎ ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Π΅ рСкурсивныС Ρ„Π»Π°Π³ΠΈ ΠΎΡΡ‚Π°ΡŽΡ‚ΡΡ Π·Π°Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌΠΈ. Записи Π² Π·Π°Ρ‰ΠΈΡ‰Ρ‘Π½Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡŽΡ‚ΡΡ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ shell-ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΈ этапа ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€Π°, поэтому ΠΏΠ΅Ρ€Π΅Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ stderr Π² ΠΎΠ΄Π½ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Π΅ Π½Π΅ влияСт Π½Π° ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅ Ρ‡Ρ‚Π΅Π½ΠΈΠ΅. grep, cat ΠΈ sed Π±Π΅Π· Ρ€Π΅ΠΆΠΈΠΌΠ° измСнСния Π½Π° мСстС ΠΌΠΎΠ³ΡƒΡ‚ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ settings.yaml; запись Ρ‡Π΅Ρ€Π΅Π· ΠΏΠ΅Ρ€Π΅Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅, tee ΠΈΠ»ΠΈ sed -i остаётся Π·Π°Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ. Анализатор ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Π΅Ρ‚ Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π»ΠΈ Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ ΠΈ экранированиС. Π­Ρ‚ΠΈ измСнСния Π½Π΅ Π·Π°Ρ‚Ρ€Π°Π³ΠΈΠ²Π°ΡŽΡ‚ ΠΏΡ€Π°Π²ΠΈΠ»Π° сСти, SQL, управлСния слуТбами, Π·Π°Ρ‰ΠΈΡ‰Ρ‘Π½Π½Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ Git, записи Π½Π° устройства ΠΈ Π²Ρ‹Ρ…ΠΎΠ΄Π° ΠΈΠ· Ρ€Π°Π±ΠΎΡ‡Π΅ΠΉ области. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° ΠΊΠΎΠΌΠ°Π½Π΄ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π° ΠΈ Π½Π΅ являСтся ΠΏΠΎΠ»Π½Ρ‹ΠΌ Bash AST.