# πŸ“¦ @goodandready/dsh-issue-reporter

БСзопасная ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠ° ΠΏΡ€ΠΎΠ²Π΅Ρ€Π΅Π½Π½Ρ‹Ρ… ΠΎΡ‚Ρ‡Ρ‘Ρ‚ΠΎΠ² ΠΎΠ± ΠΎΡˆΠΈΠ±ΠΊΠ°Ρ… ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ² Π² GitHub для DeepSeek Harness

npm version license DSH Plugin Node version

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

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

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

πŸ› Если Π²Ρ‹ нашли Π±Π°Π³ ΠΈΠ»ΠΈ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠΈΡ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π», создайтС issue Π½Π° GitHub Π½Π° любом языкС β€” я Ρ€Π°ΡΡΠΌΠΎΡ‚Ρ€ΡŽ вашС ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Π΅ ΠΈΠ΄Π΅ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… вСрсий ΠΏΠ»Π°Π³ΠΈΠ½Π°.
--- ## ⚑ ΠžΠ±Π·ΠΎΡ€ ΠΈ Ρ€Π΅ΡˆΠ°Π΅ΠΌΠ°Ρ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° ΠŸΡ€ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ΠΈΠ»ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ Π°Π²Ρ‚ΠΎΠ½ΠΎΠΌΠ½Ρ‹Ρ… Π·Π°Π΄Π°Ρ‡ Π² **DeepSeek Harness** ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ рСгулярно ΡΡ‚Π°Π»ΠΊΠΈΠ²Π°ΡŽΡ‚ΡΡ со сбоями установлСнных ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ² экосистСмы. БоставлСниС ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠ³ΠΎ Π±Π°Π³-Ρ€Π΅ΠΏΠΎΡ€Ρ‚Π° Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ ΠΎΡ‚Π½ΠΈΠΌΠ°Π΅Ρ‚ ΠΌΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ: Π½ΡƒΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ ΠΏΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ ΠΏΠ»Π°Π³ΠΈΠ½Π°, ΡΡ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ шаги воспроизвСдСния ΠΈ случайно Π½Π΅ ΡΠ»ΠΈΡ‚ΡŒ Π² ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ доступ Ρ‚ΠΎΠΊΠ΅Π½Ρ‹, ΠΏΠ°Ρ€ΠΎΠ»ΠΈ ΠΈΠ»ΠΈ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹Π΅ ΠΏΡƒΡ‚ΠΈ. **`@goodandready/dsh-issue-reporter`** Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΡƒ качСствСнных upstream-ΠΎΡ‚Ρ‡Ρ‘Ρ‚ΠΎΠ² ΠΎΠ± ΠΎΡˆΠΈΠ±ΠΊΠ°Ρ…: * **Авто-сканированиС ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ²**: считываСт Ρ‚Π΅ΠΊΡƒΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ DSH ΠΈ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ установлСнныС ΠΏΠ»Π°Π³ΠΈΠ½Ρ‹ с ΠΏΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ рСпозиториями Π½Π° GitHub. * **Умная Π³Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²ΠΊΠ°**: раздСляСт Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹Π΅ ΠΏΠ»Π°Π³ΠΈΠ½Ρ‹ ядра `@deepseek-ai/` ΠΈ сторонниС ΠΏΠ»Π°Π³ΠΈΠ½Ρ‹ сообщСства Π² Π΄Π²Π° нСзависимых списка. * **Π—Π°Ρ‰ΠΈΡ‚Π° приватности ΠΈ санитизация**: автоматичСски Π²Ρ‹Ρ€Π΅Π·Π°Π΅Ρ‚ ΠΈ маскируСт API-Ρ‚ΠΎΠΊΠ΅Π½Ρ‹, ссылки Π½Π° ΡƒΡ‡Ρ‘Ρ‚Π½Ρ‹Π΅ записи, Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½Ρ‹Π΅ ΠΏΡƒΡ‚ΠΈ ΠΈ email-адрСса. * **Поиск Π΄ΡƒΠ±Π»ΠΈΠΊΠ°Ρ‚ΠΎΠ²**: провСряСт ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹Π΅ issue Π² Ρ†Π΅Π»Π΅Π²ΠΎΠΌ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ для прСдотвращСния ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΠΎΠ². * **ΠŸΡ€ΠΈΠΊΡ€Π΅ΠΏΠ»Π΅Π½ΠΈΠ΅ ΡΠΊΡ€ΠΈΠ½ΡˆΠΎΡ‚ΠΎΠ²**: ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ Π΄ΠΎ 5 ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ Ρ‡Π΅Ρ€Π΅Π· ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ CLI GitHub (`gh issue create --attach`) с изоляциСй Π²ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°Ρ…. * **ΠšΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ**: Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ явного подтвСрТдСния (`confirm: true`) ΠΈ прСдпросмотра ΠΎΡ‡ΠΈΡ‰Π΅Π½Π½ΠΎΠ³ΠΎ тСкста ΠΏΠ΅Ρ€Π΅Π΄ созданиСм issue. --- ## πŸ—οΈ АрхитСктура ```mermaid graph LR A[ΠšΠ°Ρ‚Π°Π»ΠΎΠ³ ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ² DSH] --> B[lib/index.js] B --> C[lib/domain.js
Валидация, Π“Ρ€ΡƒΠΏΠΏΡ‹, Банитизация] B --> D[lib/github.js
OAuth & REST ΠΊΠ»ΠΈΠ΅Π½Ρ‚] B --> E[lib/attachments.js
Π—Π°Π³Ρ€ΡƒΠ·ΠΊΠ° ΡΠΊΡ€ΠΈΠ½ΡˆΠΎΡ‚ΠΎΠ²] C --> F[lib/client.js
ΠšΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠ° настроСк] F --> G[ΠžΡ‡ΠΈΡ‰Π΅Π½Π½Ρ‹ΠΉ прСдпросмотр ΠΈ Π΄ΡƒΠ±Π»ΠΈΠΊΠ°Ρ‚Ρ‹] G --> H{Π―Π²Π½ΠΎΠ΅ ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½ΠΈΠ΅} H -->|Π‘Π΅Π· ΡΠΊΡ€ΠΈΠ½ΡˆΠΎΡ‚ΠΎΠ²| I[GitHub REST issue API] H -->|Π‘ΠΎ ΡΠΊΡ€ΠΈΠ½ΡˆΠΎΡ‚Π°ΠΌΠΈ| J[gh issue create --attach] D --> K[DSH Credentials] ``` --- ## ✨ ΠšΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ возмоТности ### 1. ΠšΠ°Ρ‚Π°Π»ΠΎΠ³ ΠΈ Ρ€Π°Π·Π΄Π΅Π»ΡŒΠ½Π°Ρ Π³Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²ΠΊΠ° Плагин сканируСт установлСнныС ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ DSH. ΠŸΠ°ΠΊΠ΅Ρ‚Ρ‹ Π±Π΅Π· ΠΏΡƒΠ±Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ GitHub-рСпозитория ΠΈΠ»ΠΈ с Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½Ρ‹ΠΌΠΈ ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΎΡ‚Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΠΎΠ²Ρ‹Π²Π°ΡŽΡ‚ΡΡ. ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡ‹Π΅ Ρ†Π΅Π»ΠΈ Ρ€Π°ΡΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ΡΡ ΠΏΠΎ Π΄Π²ΡƒΠΌ Π±Π»ΠΎΠΊΠ°ΠΌ: * **НативныС ΠΏΠ»Π°Π³ΠΈΠ½Ρ‹ DSH**: ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ со скоупом `@deepseek-ai/`. * **Π‘Ρ‚ΠΎΡ€ΠΎΠ½Π½ΠΈΠ΅ ΠΏΠ»Π°Π³ΠΈΠ½Ρ‹**: всС ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ дополнСния экосистСмы. НаТатиС Π½Π° строку любого ΠΏΠ»Π°Π³ΠΈΠ½Π° ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅Ρ‚ Ρ„ΠΎΡ€ΠΌΡƒ составлСния ΠΎΡ‚Ρ‡Ρ‘Ρ‚Π°. ### 2. Авторизация Ρ‡Π΅Ρ€Π΅Π· GitHub OAuth Device Flow ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚Π° происходит Π² 1 ΠΊΠ»ΠΈΠΊ Ρ‡Π΅Ρ€Π΅Π· стандартный ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ Device Flow: * ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΠΉ 8-Π·Π½Π°Ρ‡Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ ΠΈ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚ Π½Π° страницу Π°ΠΊΡ‚ΠΈΠ²Π°Ρ†ΠΈΠΈ GitHub. * Π—Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Π΅Ρ‚ΡΡ скоуп `repo` для создания issue ΠΈ поиска Π΄ΡƒΠ±Π»ΠΈΠΊΠ°Ρ‚ΠΎΠ². * ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹ΠΉ OAuth-Ρ‚ΠΎΠΊΠ΅Π½ сохраняСтся Π² бСзопасном Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ **DSH Credentials** (`tokenEnv: GITHUB_ISSUE_REPORTER_TOKEN`). * Кнопка **Sign out** ΠΌΠΎΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½ΠΎ ΠΎΡ‚Π·Ρ‹Π²Π°Π΅Ρ‚ Ρ‚ΠΎΠΊΠ΅Π½ ΠΈ позволяСт ΡΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΡƒΡ‡Ρ‘Ρ‚Π½ΡƒΡŽ запись. ### 3. Π Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ ΠΎΡ‚Ρ‡Ρ‘Ρ‚ΠΎΠ² ΠΈ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒ приватности Π€ΠΎΡ€ΠΌΠ° ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ структурированныС Π΄Π°Π½Π½Ρ‹Π΅: Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ, наблюдаСмоС ΠΈ ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅, шаги воспроизвСдСния ΠΈ ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠ΅. БэкСнд автоматичСски ΠΎΡ‡ΠΈΡ‰Π°Π΅Ρ‚ Ρ‡Π΅Ρ€Π½ΠΎΠ²ΠΈΠΊ ΠΎΡ‚ ΠΊΠΎΠ½Ρ„ΠΈΠ΄Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… (Ρ‚ΠΎΠΊΠ΅Π½Ρ‹, ΠΏΠ°Ρ€ΠΎΠ»ΠΈ, ΠΏΡƒΡ‚ΠΈ Π²ΠΈΠ΄Π° `/home/...`, email) ΠΈ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ список замаскированных Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΏΠ΅Ρ€Π΅Π΄ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΎΠΉ. Если Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ Π½Π΅ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Ρ‘Π½, ΠΏΠ»Π°Π³ΠΈΠ½ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ Π³ΠΎΡ‚ΠΎΠ²ΡƒΡŽ Π²Π΅Π±-ссылку с ΠΏΡ€Π΅Π΄Π·Π°ΠΏΠΎΠ»Π½Π΅Π½Π½ΠΎΠΉ Ρ„ΠΎΡ€ΠΌΠΎΠΉ issue для Ρ€ΡƒΡ‡Π½ΠΎΠΉ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅. ### 5. Автономный инструмСнт для Π°Π³Π΅Π½Ρ‚ΠΎΠ² (`report_issue`) РСгистрируСт инструмСнт Π² Cordis `ctx.tools`, позволяя Π°Π²Ρ‚ΠΎΠ½ΠΎΠΌΠ½Ρ‹ΠΌ Π°Π³Π΅Π½Ρ‚Π°ΠΌ ΠΈ оркСстраторам ΠΏΠΎΠ΄Π³ΠΎΡ‚Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒ ΠΈΠ»ΠΈ ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ структурированныС Π±Π°Π³-Ρ€Π΅ΠΏΠΎΡ€Ρ‚Ρ‹ ΠΏΡ€ΠΈ сбоях установлСнных ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ². ### 6. AI-оптимизация ΠΈ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ шагов воспроизвСдСния Π˜Π½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΡ с `ctx.llm` Ρ‡Π΅Ρ€Π΅Π· `POST /dsh-issue-reporter/ai/optimize` позволяСт Π² ΠΎΠ΄ΠΈΠ½ ΠΊΠ»ΠΈΠΊ ΠΏΡ€Π΅Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Ρ€Π°Π·Ρ€ΠΎΠ·Π½Π΅Π½Π½Ρ‹Π΅ Π·Π°ΠΌΠ΅Ρ‚ΠΊΠΈ ΠΎΠ± ошибкС Π² Π°ΠΊΠΊΡƒΡ€Π°Ρ‚Π½Ρ‹Π΅ шаги воспроизвСдСния ΠΈ понятный Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ. ### 7. Π–ΡƒΡ€Π½Π°Π» сСссии ΠΈ Π²Ρ‹Π±ΠΎΡ€ сниппСтов ΠŸΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ‚ ΠΏΡ€ΠΎΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ Π½Π΅Π΄Π°Π²Π½ΠΈΠ΅ Π»ΠΎΠ³ΠΈ сСссии DSH Ρ‡Π΅Ρ€Π΅Π· `GET /dsh-issue-reporter/logs` с автоматичСской дСсСнсибилизациСй сСкрСтов ΠΈ ΠΏΡ€ΠΈΠΊΡ€Π΅ΠΏΠ»ΡΡ‚ΡŒ Π½ΡƒΠΆΠ½Ρ‹Π΅ строки ΠΊ ΠΎΡ‚Ρ‡Π΅Ρ‚Ρƒ. ### 8. ΠžΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Π½ΠΈΠ΅ статуса ΠΎΡ‚ΠΏΡ€Π°Π²Π»Π΅Π½Π½Ρ‹Ρ… Ρ‚ΠΈΠΊΠ΅Ρ‚ΠΎΠ² Π’ΠΊΠ»Π°Π΄ΠΊΠ° «Мои ΠΎΡ‚Ρ‡Π΅Ρ‚Ρ‹Β» Ρ…Ρ€Π°Π½ΠΈΡ‚ ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ созданных ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠΉ ΠΈ выполняСт ΠΏΠ°ΠΊΠ΅Ρ‚Π½ΡƒΡŽ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ статусов (`POST /dsh-issue-reporter/issues/batch-status`), отобраТая Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠ΅ состояниС (open/closed) ΠΈ количСство ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π². ### 9. Π£ΠΌΠ½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΊΠΈ ΠΈ Π°Π²Ρ‚ΠΎΡ‚Π΅Π³ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π—Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Π΅Ρ‚ доступныС ΠΌΠ΅Ρ‚ΠΊΠΈ рСпозитория Ρ‡Π΅Ρ€Π΅Π· `POST /dsh-issue-reporter/labels` ΠΈ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ Ρ€Π΅Π»Π΅Π²Π°Π½Ρ‚Π½Ρ‹Π΅ Ρ‚Π΅Π³ΠΈ (`bug`, `ui`, `performance`, `auth`). ### 10. АвтообновлСниС ΠΏΠ»Π°Π³ΠΈΠ½Π° Π² ΠΎΠ΄ΠΈΠ½ ΠΊΠ»ΠΈΠΊ ВстроСнный ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ обновлСния ΠΈΠ· npm-рССстра: провСряСт Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ свСТСй вСрсии ΠΈ позволяСт ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΏΠ»Π°Π³ΠΈΠ½ прямо ΠΈΠ· ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ настроСк. ### 4. Поиск Π΄ΡƒΠ±Π»ΠΈΠΊΠ°Ρ‚ΠΎΠ² ΠŸΠ΅Ρ€Π΅Π΄ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΎΠΉ ΠΏΠ»Π°Π³ΠΈΠ½ выполняСт поиск ΠΏΠΎ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ issue Π² Ρ†Π΅Π»Π΅Π²ΠΎΠΌ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ ΠΏΠΎ ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹ΠΌ словам ΠΈ Ρ€Π°Π½ΠΆΠΈΡ€ΡƒΠ΅Ρ‚ Π΄ΠΎ 5 Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΏΠΎΡ…ΠΎΠΆΠΈΡ… Ρ‚ΠΈΠΊΠ΅Ρ‚ΠΎΠ², защищая Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ ΠΎΡ‚ Π΄ΡƒΠ±Π»ΠΈΠΊΠ°Ρ‚ΠΎΠ². ### 5. Π‘ΠΊΡ€ΠΈΠ½ΡˆΠΎΡ‚Ρ‹ Ρ‡Π΅Ρ€Π΅Π· GitHub CLI ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ΡΡ ΠΏΡ€ΠΈΠΊΡ€Π΅ΠΏΠ»Π΅Π½ΠΈΠ΅ Π΄ΠΎ 5 ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ (PNG, JPG, GIF, WebP; Π΄ΠΎ 8 ΠœΠ‘ Π½Π° Ρ„Π°ΠΉΠ», Π΄ΠΎ 20 ΠœΠ‘ суммарно): * Π€Π°ΠΉΠ»Ρ‹ ΡƒΠ΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ΡΡ Π² памяти Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π° Π΄ΠΎ наТатия ΠΊΠ½ΠΎΠΏΠΊΠΈ создания. * Π—Π°Π³Ρ€ΡƒΠ·ΠΊΠ° Π½Π° GitHub выполняСтся Ρ‡Π΅Ρ€Π΅Π· ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ CLI `gh issue create --attach` Π²ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΌ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎ удаляСтся послС Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ. * ΠžΠ±Ρ‹Ρ‡Π½Ρ‹Π΅ тСкстовыС ΠΎΡ‚Ρ‡Ρ‘Ρ‚Ρ‹ ΡΠΎΠ·Π΄Π°ΡŽΡ‚ΡΡ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ Ρ‡Π΅Ρ€Π΅Π· GitHub REST API. ### 6. Вставка ΠΈΠ· Π±ΡƒΡ„Π΅Ρ€Π° ΠΎΠ±ΠΌΠ΅Π½Π° (Ctrl+V) ΠΈ Drag-and-Drop (v0.1.1) ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ΡΡ быстрая вставка ΡΠΊΡ€ΠΈΠ½ΡˆΠΎΡ‚ΠΎΠ² прямо ΠΈΠ· Π±ΡƒΡ„Π΅Ρ€Π° ΠΎΠ±ΠΌΠ΅Π½Π° (`Ctrl+V` ΠΏΡ€ΠΈ снятии ΡΠΊΡ€ΠΈΠ½ΡˆΠΎΡ‚Π° Π½ΠΎΠΆΠ½ΠΈΡ†Π°ΠΌΠΈ ΠΈΠ»ΠΈ `PrtSc`) ΠΈ пСрСтаскиваниС ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ Π² ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΡƒΡŽ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ Dropzone с ΠΌΠ³Π½ΠΎΠ²Π΅Π½Π½Ρ‹ΠΌ ΠΏΠΎΠΊΠ°Π·ΠΎΠΌ ΠΌΠΈΠ½ΠΈΠ°Ρ‚ΡŽΡ€. ### 7. АвтоматичСская диагностика окруТСния ΠΈ сбоСв (v0.1.1) Плагин автоматичСски собираСт Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎΠ± ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠΈ (вСрсия Node.js, ОБ, Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π°, вСрсия DSH ΠΈ ΠΏΠ»Π°Π³ΠΈΠ½Π°) ΠΈ маскируСт Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΡƒΡ‚ΠΈ. Для ΡƒΠΏΠ°Π²ΡˆΠΈΡ… ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ² (`failed`) доступна ΠΊΠ½ΠΎΠΏΠΊΠ° быстрого Ρ€Π΅ΠΏΠΎΡ€Ρ‚Π° с Π·Π°Ρ…Π²Π°Ρ‡Π΅Π½Π½Ρ‹ΠΌ тСкстом ошибки. ### 8. Навигация ΠΏΠΎ Π²ΠΊΠ»Π°Π΄ΠΊΠ°ΠΌ ΠΈ быстрый поиск (v0.1.1) Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡ ΠΎΡ„ΠΎΡ€ΠΌΠ»Π΅Π½ Π² Π΅Π΄ΠΈΠ½ΠΎΠΌ Π΄ΠΈΠ·Π°ΠΉΠ½-ΠΊΠΎΠ΄Π΅ `dsh-clinebot` с Π²ΠΊΠ»Π°Π΄ΠΊΠ°ΠΌΠΈ: Β«ΠšΠ°Ρ‚Π°Π»ΠΎΠ³ ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ²Β», Β«Π Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ ΠΎΡ‚Ρ‡Ρ‘Ρ‚Π°Β», «Мои ΠΎΡ‚Ρ‡Ρ‘Ρ‚Ρ‹Β» ΠΈ «Авторизация». Над ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠΌ доступно ΠΏΠΎΠ»Π΅ ΠΆΠΈΠ²ΠΎΠ³ΠΎ поиска для ΠΌΠ³Π½ΠΎΠ²Π΅Π½Π½ΠΎΠΉ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΠΈ. ### 9. ΠžΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Π½ΠΈΠ΅ ΠΎΡ‚ΠΏΡ€Π°Π²Π»Π΅Π½Π½Ρ‹Ρ… Ρ‚ΠΈΠΊΠ΅Ρ‚ΠΎΠ² (v0.1.1) Π’ΠΊΠ»Π°Π΄ΠΊΠ° «Мои ΠΎΡ‚Ρ‡Ρ‘Ρ‚Ρ‹Β» сохраняСт ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ ΠΎΡ‚ΠΏΡ€Π°Π²Π»Π΅Π½Π½Ρ‹Ρ… Ρ‚ΠΈΠΊΠ΅Ρ‚ΠΎΠ² ΠΈ позволяСт Π² ΠΎΠ΄ΠΈΠ½ ΠΊΠ»ΠΈΠΊ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡ‚ΡŒ ΠΈΡ… Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ статус (`Open` / `Closed`) ΠΈ количСство ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π². ### 10. ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Gitea ΠΈ Forgejo (v0.1.1) Помимо ΠΏΡƒΠ±Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ GitHub, ΠΏΠ»Π°Π³ΠΈΠ½ распознаёт Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΈ self-hosted инстансов Gitea / Forgejo ΠΈ ΡƒΠΌΠ΅Π΅Ρ‚ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ issue Ρ‡Π΅Ρ€Π΅Π· Gitea REST API. --- ## πŸ“¦ Установка Установка Π² ΠΏΡ€ΠΎΡ„ΠΈΠ»ΡŒ `web` DeepSeek Harness: ```bash dsh plugin --profile web add @goodandready/dsh-issue-reporter ``` ΠŸΠ΅Ρ€Π΅Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚Π΅ экзСмпляр DSH ΠΈ ΠΎΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ **Настройки β†’ ΠŸΠ»Π°Π³ΠΈΠ½Ρ‹ β†’ GitHub Issue Reporter**. --- ## βš™οΈ Настройка GitHub OAuth App 1. Π’ настройках GitHub (Developer settings β†’ OAuth Apps) создайтС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. 2. Π’ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ Π³Π°Π»ΠΎΡ‡ΠΊΡƒ **Enable Device Flow**. 3. Π£ΠΊΠ°ΠΆΠΈΡ‚Π΅ ΠΏΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹ΠΉ Client ID Π² `settings.yaml` ΠΏΠ»Π°Π³ΠΈΠ½Π° Π² ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π΅ `appClientId`. 4. Π’ Π²Π΅Π±-интСрфСйсС DSH Π½Π°ΠΆΠΌΠΈΡ‚Π΅ **Sign in with GitHub**, ΠΏΠ΅Ρ€Π΅ΠΉΠ΄ΠΈΡ‚Π΅ ΠΏΠΎ ссылкС ΠΈ Π²Π²Π΅Π΄ΠΈΡ‚Π΅ ΠΊΠΎΠ΄. --- ## πŸ”§ ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ (`settings.yaml`) ```yaml # settings.yaml dsh-issue-reporter: # ΠŸΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹ΠΉ Client ID созданного GitHub OAuth App appClientId: "ВАШ_GITHUB_OAUTH_CLIENT_ID" # Бсылка Π½Π° DSH Credentials для хранСния Ρ‚ΠΎΠΊΠ΅Π½Π° tokenEnv: "GITHUB_ISSUE_REPORTER_TOKEN" # Π‘Π°Π·ΠΎΠ²Ρ‹ΠΉ адрСс API GitHub apiBaseUrl: "https://api.github.com" # Π’Π°ΠΉΠΌΠ°ΡƒΡ‚ сСтСвых запросов ΠΈ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΡΠΊΡ€ΠΈΠ½ΡˆΠΎΡ‚ΠΎΠ² (мс) timeoutMs: 30000 # ΠŸΡƒΡ‚ΡŒ ΠΊ Π±ΠΈΠ½Π°Ρ€Π½ΠΈΠΊΡƒ GitHub CLI ghPath: "gh" ``` | ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ | Π’ΠΈΠΏ | По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ | ОписаниС | |:---|:---|:---|:---| | `appClientId` | `string` | `""` | ΠŸΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹ΠΉ Client ID OAuth-прилоТСния с Π²ΠΊΠ»ΡŽΡ‡Ρ‘Π½Π½Ρ‹ΠΌ Device Flow | | `tokenEnv` | `string` | `"GITHUB_ISSUE_REPORTER_TOKEN"` | Имя ссылки Π² DSH Credentials для хранСния OAuth-Ρ‚ΠΎΠΊΠ΅Π½Π° | | `apiBaseUrl` | `string` | `"https://api.github.com"` | Π‘Π°Π·ΠΎΠ²Ρ‹ΠΉ URL API GitHub | | `timeoutMs` | `number` | `30000` | Π’Π°ΠΉΠΌΠ°ΡƒΡ‚ HTTP-запросов ΠΈ выполнСния CLI Π² миллисСкундах | | `ghPath` | `string` | `"gh"` | Имя ΠΈΠ»ΠΈ Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½Ρ‹ΠΉ ΠΏΡƒΡ‚ΡŒ ΠΊ исполняСмому Ρ„Π°ΠΉΠ»Ρƒ `gh` Π½Π° хостС | --- ## πŸ”Œ HTTP-ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚Ρ‹ ВсС ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚Ρ‹ Π·Π°Ρ‰ΠΈΡ‰Π΅Π½Ρ‹ сСссионной Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ DSH ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΎΠΉ Same-Origin. | ΠœΠ΅Ρ‚ΠΎΠ΄ ΠΈ ΠΏΡƒΡ‚ΡŒ | НазначСниС | Π’Π½Π΅ΡˆΠ½ΡΡ запись | |:---|:---|:---| | `GET /dsh-issue-reporter/status` | ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ статуса ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ ΠΈ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π° ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ² | НСт | | `POST /dsh-issue-reporter/device/start` | Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡ Device Flow ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° устройства | НСт | | `POST /dsh-issue-reporter/device/poll` | ΠžΠΏΡ€ΠΎΡ статуса Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈ сохранСниС Ρ‚ΠΎΠΊΠ΅Π½Π° | DSH Credentials | | `POST /dsh-issue-reporter/device/logout` | Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ сохранённого Ρ‚ΠΎΠΊΠ΅Π½Π° ΠΏΡ€ΠΈ Π²Ρ‹Ρ…ΠΎΠ΄Π΅ | DSH Credentials | | `POST /dsh-issue-reporter/draft` | ГСнСрация ΠΎΡ‡ΠΈΡ‰Π΅Π½Π½ΠΎΠ³ΠΎ ΠΎΡ‚ ΠΊΠΎΠ½Ρ„ΠΈΠ΄Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… Ρ‡Π΅Ρ€Π½ΠΎΠ²ΠΈΠΊΠ° | НСт | | `POST /dsh-issue-reporter/duplicates` | Поиск ΠΈ Ρ€Π°Π½ΠΆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎΡ…ΠΎΠΆΠΈΡ… issue | Read-only GitHub | | `POST /dsh-issue-reporter/create` | Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€ΠΆΠ΄Ρ‘Π½Π½ΠΎΠ³ΠΎ issue Ρ‡Π΅Ρ€Π΅Π· REST API ΠΈΠ»ΠΈ `gh` | GitHub Issue | --- ## πŸ› οΈ ΠžΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΡ ΠΈ диагностика | Π‘ΠΈΠΌΠΏΡ‚ΠΎΠΌ | ΠŸΡ€ΠΈΡ‡ΠΈΠ½Π° ΠΈ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ | |:---|:---| | `GitHub sign-in is not configured` | Π£ΠΊΠ°ΠΆΠΈΡ‚Π΅ ΠΏΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹ΠΉ `appClientId` Π² `settings.yaml`. | | `404 Not Found` ΠΏΡ€ΠΈ Π²Ρ…ΠΎΠ΄Π΅ | Запрос ΠΊΠΎΠ΄Π° устройства Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒΡΡ Π½Π° `github.com`, Π° Π½Π΅ Π½Π° `api.github.com`. | | `Resource not accessible by integration` | Π£ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Ρ‘Π½Π½ΠΎΠ³ΠΎ Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚Π° Π½Π΅Ρ‚ ΠΏΡ€Π°Π² Π½Π° запись Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ, Π»ΠΈΠ±ΠΎ устарСл Ρ‚ΠΎΠΊΠ΅Π½. Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ Sign Out ΠΈ Π²ΠΎΠΉΠ΄ΠΈΡ‚Π΅ снова. | | Ошибка Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΡΠΊΡ€ΠΈΠ½ΡˆΠΎΡ‚ΠΎΠ² | Π£Π±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ Π½Π° сСрвСрС установлСн GitHub CLI (`gh` вСрсии 2.99 ΠΈΠ»ΠΈ Π²Ρ‹ΡˆΠ΅). | | Кнопка ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ нСдоступна для ΠΏΠ»Π°Π³ΠΈΠ½Π° | Π’ `package.json` ΠΏΠ»Π°Π³ΠΈΠ½Π° Π½Π΅ ΡƒΠΊΠ°Π·Π°Π½Π° валидная ссылка Π½Π° ΠΏΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹ΠΉ GitHub-Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ. | --- ## πŸ”’ Π‘Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ * **БСзопасноС Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅**: Ρ‚ΠΎΠΊΠ΅Π½Ρ‹ ΠΆΠΈΠ²ΡƒΡ‚ ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π² сСрвисС DSH Credentials ΠΈ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΠΏΠ΅Ρ€Π΅Π΄Π°ΡŽΡ‚ΡΡ Π² Ρ‚Π΅Π»ΠΎ issue, URL ΠΈΠ»ΠΈ Π»ΠΎΠ³ΠΈ. * **Авто-санитизация**: маскированиС ΠΏΡ€ΠΈΠ²Π°Ρ‚Π½Ρ‹Ρ… Ρ‚ΠΎΠΊΠ΅Π½ΠΎΠ², ΠΊΠ»ΡŽΡ‡Π΅ΠΉ, ΠΏΠ°Ρ€ΠΎΠ»Π΅ΠΉ, Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΡƒΡ‚Π΅ΠΉ ΠΈ email-адрСсов. * **Π˜Π·ΠΎΠ»ΡΡ†ΠΈΡ Π²Π»ΠΎΠΆΠ΅Π½ΠΈΠΉ**: Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ ΡΠΊΡ€ΠΈΠ½ΡˆΠΎΡ‚ΠΎΠ² ΡƒΠ΄Π°Π»ΡΡŽΡ‚ΡΡ сразу ΠΆΠ΅ послС Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ `gh`. * **Π―Π²Π½ΠΎΠ΅ согласиС**: Π½ΠΈ ΠΎΠ΄ΠΈΠ½ ΠΎΡ‚Ρ‡Ρ‘Ρ‚ Π½Π΅ создаётся Π±Π΅Π· ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ просмотра ΠΈ явной установки Ρ„Π»Π°Π³Π° `confirm: true`. --- ## πŸ“„ ЛицСнзия MIT Β© [GooDAnDReaDY](https://github.com/GooDAnDReaDY)