@goodandready/dsh-goal 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 goodandready
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,47 @@
1
+ # @goodandready/dsh-goal
2
+
3
+ > **Goal Mode & Autonomous Execution Plugin for DeepSeek Harness (DSH)**
4
+
5
+ `dsh-goal` adds an autonomous goal-tracking loop with a sticky top status banner, milestone decomposition, live timer, and interactive controls (pause, resume, cancel, modal details).
6
+
7
+ ---
8
+
9
+ ## Features
10
+
11
+ - 🎯 **Sticky Top Goal Banner**: Minimalist header pinned above the chat showing the active goal, elapsed timer (`β€’ 2s`, `β€’ 1m 45s`), and controls.
12
+ - ⏸️ **Play / Pause / Cancel**: Instantly halt autonomous multi-turn loops or resume whenever ready.
13
+ - β›Ά **Milestone Modal Drawer**: Interactive checklist of sub-tasks with progress bar and execution logs.
14
+ - πŸ€– **Agent Tools**:
15
+ - `goal_set_milestones`: Autonomous breakdown of high-level goals into step-by-step tasks.
16
+ - `goal_update_progress`: Step-by-step milestone completion tracking.
17
+ - `goal_finish`: Goal completion with deliverable summary.
18
+ - βš™οΈ **Safety Limit & Settings**: Max iterations guardrail to prevent infinite agent loops.
19
+ - 🌐 **Bilingual**: Full English and Russian localization.
20
+
21
+ ---
22
+
23
+ ## Installation
24
+
25
+ ```bash
26
+ dsh plugin add @goodandready/dsh-goal
27
+ ```
28
+
29
+ ## Quick Start
30
+
31
+ 1. Start a goal in chat:
32
+ ```text
33
+ /goal Refactor auth tokens and write integration tests
34
+ ```
35
+ 2. Or use the REST API:
36
+ ```bash
37
+ curl -X POST http://localhost:3080/dsh-goal/action \
38
+ -H "Content-Type: application/json" \
39
+ -d '{"action":"start","title":"Optimize database queries"}'
40
+ ```
41
+ 3. Watch the sticky top banner update with live timer and milestones in real-time.
42
+
43
+ ---
44
+
45
+ ## License
46
+
47
+ MIT Β© [goodandready](https://goodandready.app)
package/README.ru.md ADDED
@@ -0,0 +1,51 @@
1
+ # @goodandready/dsh-goal
2
+
3
+ > **Плагин цСлСполагания ΠΈ Π°Π²Ρ‚ΠΎΠ½ΠΎΠΌΠ½ΠΎΠ³ΠΎ выполнСния Π·Π°Π΄Π°Ρ‡ (Goal Mode) для DeepSeek Harness**
4
+
5
+ `dsh-goal` внСдряСт Π² DeepSeek Harness Π°Π²Ρ‚ΠΎΠ½ΠΎΠΌΠ½Ρ‹ΠΉ Ρ€Π΅ΠΆΠΈΠΌ цСлСполагания с Π·Π°ΠΊΡ€Π΅ΠΏΠ»Ρ‘Π½Π½ΠΎΠΉ Π²Π΅Ρ€Ρ…Π½Π΅ΠΉ панСлью (Sticky Top Banner), Π΄Π΅ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡ†ΠΈΠ΅ΠΉ шагов Π½Π° Π²Π΅Ρ…ΠΈ (milestones), ΠΆΠΈΠ²Ρ‹ΠΌ Ρ‚Π°ΠΉΠΌΠ΅Ρ€ΠΎΠΌ ΠΈ ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΌ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ (ΠΏΠ°ΡƒΠ·Π°, ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ΅Π½ΠΈΠ΅, ΠΎΡ‚ΠΌΠ΅Π½Π°, ΠΎΠΊΠ½ΠΎ Π΄Π΅Ρ‚Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ чСклиста).
6
+
7
+ ---
8
+
9
+ ## ВозмоТности
10
+
11
+ - 🎯 **ЗакрСплённая панСль Ρ†Π΅Π»ΠΈ (Top Banner)**: компактная плашка Π½Π°Π΄ Ρ‡Π°Ρ‚ΠΎΠΌ Π² стилС Π½Π°Ρ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ UI DSH:
12
+ - Иконка мишСни 🎯;
13
+ - Π›Π΅ΠΉΠ±Π» «ВСкущая Ρ†Π΅Π»ΡŒΒ» ΠΈ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠΉ Π·Π°Π΄Π°Ρ‡ΠΈ;
14
+ - Π–ΠΈΠ²ΠΎΠΉ сСкундомСр выполнСния (`β€’ 2s`, `β€’ 14s`, `β€’ 2m 10s`);
15
+ - БыстрыС ΠΊΠ½ΠΎΠΏΠΊΠΈ: πŸ—‘ (ΡΠ±Ρ€ΠΎΡΠΈΡ‚ΡŒ/ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ), ⏸ / β–Ά (ΠΏΠ°ΡƒΠ·Π°/Π²ΠΎΠ·ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅), β›Ά (Ρ€Π°Π·Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ Π΄Π΅Ρ‚Π°Π»ΠΈ).
16
+ - β›Ά **МодальноС ΠΎΠΊΠ½ΠΎ чСклиста Π²Π΅Ρ…**: ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Ρ‹ΠΉ список ΠΏΠΎΠ΄Π·Π°Π΄Π°Ρ‡, прогрСсс-Π±Π°Ρ€ выполнСния (0–100%) ΠΈ Π»ΠΎΠ³ шагов.
17
+ - πŸ€– **Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ для ΠΌΠΎΠ΄Π΅Π»ΠΈ**:
18
+ - `goal_set_milestones` β€” Ρ€Π°Π·Π±ΠΈΠ΅Π½ΠΈΠ΅ Ρ†Π΅Π»ΠΈ Π½Π° этапы;
19
+ - `goal_update_progress` β€” фиксация выполнСния ΠΎΡ‡Π΅Ρ€Π΅Π΄Π½ΠΎΠ³ΠΎ этапа;
20
+ - `goal_finish` β€” Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠ΅ Ρ†Π΅Π»ΠΈ с ΠΈΡ‚ΠΎΠ³ΠΎΠ²Ρ‹ΠΌ Ρ€Π΅Π·ΡŽΠΌΠ΅.
21
+ - πŸ›‘οΈ **Safety Guardrails**: настраиваСмый Π»ΠΈΠΌΠΈΡ‚ шагов (maxIterations) для Π·Π°Ρ‰ΠΈΡ‚Ρ‹ ΠΎΡ‚ зацикливания.
22
+ - βš™οΈ **ΠšΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠ° настроСк**: ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠΌ Π²ΠΎ Π²ΠΊΠ»Π°Π΄ΠΊΠ΅ «Настройки β†’ ΠŸΠ»Π°Π³ΠΈΠ½Ρ‹Β».
23
+ - 🌐 **Локализация**: полная ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° русского ΠΈ английского языков.
24
+
25
+ ---
26
+
27
+ ## Установка
28
+
29
+ ```bash
30
+ dsh plugin add @goodandready/dsh-goal
31
+ ```
32
+
33
+ ## ИспользованиС
34
+
35
+ 1. ΠŸΠΎΡΡ‚Π°Π²ΡŒΡ‚Π΅ Ρ†Π΅Π»ΡŒ сообщСниСм Π² Ρ‡Π°Ρ‚Π΅:
36
+ ```text
37
+ /goal Π˜ΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ Π±Π°Π³ Π² Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ тСсты
38
+ ```
39
+ 2. Или ΠΎΡ‚ΠΏΡ€Π°Π²ΡŒΡ‚Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ Ρ‡Π΅Ρ€Π΅Π· REST API:
40
+ ```bash
41
+ curl -X POST http://localhost:3080/dsh-goal/action \
42
+ -H "Content-Type: application/json" \
43
+ -d '{"action":"start","title":"ΠŸΡ€ΠΈΠ²Π΅Ρ‚"}'
44
+ ```
45
+ 3. Π‘Π²Π΅Ρ€Ρ…Ρƒ появится панСль с Ρ‚Π°ΠΉΠΌΠ΅Ρ€ΠΎΠΌ ΠΈ ΠΊΠ½ΠΎΠΏΠΊΠ°ΠΌΠΈ управлСния.
46
+
47
+ ---
48
+
49
+ ## ЛицСнзия
50
+
51
+ MIT Β© [goodandready](https://goodandready.app)
@@ -0,0 +1,4 @@
1
+ - insert:
2
+ - id: dsh-goal
3
+ name: '@goodandready/dsh-goal'
4
+ config: {}
@@ -0,0 +1,72 @@
1
+ # DESIGN.md β€” Π”ΠΈΠ·Π°ΠΉΠ½-ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚ `dsh-goal`
2
+
3
+ ## 1. НазначСниС ΠΈ концСпция
4
+
5
+ Плагин `dsh-goal` Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ Π°Π²Ρ‚ΠΎΠ½ΠΎΠΌΠ½Ρ‹ΠΉ Ρ€Π΅ΠΆΠΈΠΌ достиТСния Ρ†Π΅Π»Π΅ΠΉ (Goal Mode) для **DeepSeek Harness** (DSH).
6
+ Π’ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½Π°Ρ Π΄ΠΎΠΌΠΈΠ½Π°Π½Ρ‚Π° β€” компактная закрСплённая вСрхняя панСль (Sticky Top Banner), ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°ΡŽΡ‰Π°Ρ Ρ‚Π΅ΠΊΡƒΡ‰ΡƒΡŽ Π°ΠΊΡ‚ΠΈΠ²Π½ΡƒΡŽ Ρ†Π΅Π»ΡŒ, сСкундомСр выполнСния ΠΈ ΠΊΠ½ΠΎΠΏΠΊΠΈ ΠΌΠ³Π½ΠΎΠ²Π΅Π½Π½ΠΎΠ³ΠΎ управлСния (πŸ—‘ сброс, ⏸ ΠΏΠ°ΡƒΠ·Π°/Π²ΠΎΠ·ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅, β›Ά Π΄Π΅Ρ‚Π°Π»ΠΈ/ΠΌΠΎΠ΄Π°Π»ΠΊΠ°).
7
+
8
+ ---
9
+
10
+ ## 2. ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠ΅ повСрхности (User Surfaces)
11
+
12
+ ### 2.1 Sticky Top Banner (ВСрхняя закрСплённая панСль Ρ†Π΅Π»ΠΈ)
13
+ - **РасполоТСниС**: ВСрхняя Ρ‡Π°ΡΡ‚ΡŒ ΠΎΠΊΠ½Π° Ρ‡Π°Ρ‚Π°/сСссии Π½Π°Π΄ Π»Π΅Π½Ρ‚ΠΎΠΉ сообщСний.
14
+ - **Π­Π»Π΅ΠΌΠ΅Π½Ρ‚Ρ‹ слСва Π½Π°ΠΏΡ€Π°Π²ΠΎ**:
15
+ 1. `IconTarget` (🎯 SVG 16x16, обводка `currentColor`);
16
+ 2. Π—Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ **«ВСкущая Ρ†Π΅Π»ΡŒΒ»** (вСс 600, `var(--dsw-alias-label-primary)`);
17
+ 3. ВСкст Ρ†Π΅Π»ΠΈ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€: Β«ΠΏΡ€ΠΈΠ²Π΅Ρ‚Β» ΠΈΠ»ΠΈ Β«Π˜ΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ Π±Π°Π³ Π² Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈΒ», Ρ†Π²Π΅Ρ‚ `var(--dsw-alias-label-secondary)`, `text-overflow: ellipsis`);
18
+ 4. Π Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π»ΡŒ ΠΈ Ρ‚Π°ΠΉΠΌΠ΅Ρ€: `β€’ 2s` (динамичСский счётчик `β€’ 14s`, `β€’ 2m 15s`, ΡˆΡ€ΠΈΡ„Ρ‚ `monospace`);
19
+ 5. ПанСль ΠΊΠ½ΠΎΠΏΠΎΠΊ справа:
20
+ - Кнопка **πŸ—‘ (ΠžΡ‡ΠΈΡΡ‚ΠΈΡ‚ΡŒ / ΠžΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ)**: Π΄ΠΈΠ°Π»ΠΎΠ³ подтвСрТдСния ΠΎΡ‚ΠΌΠ΅Π½Ρ‹/сброса Ρ†Π΅Π»ΠΈ;
21
+ - Кнопка **⏸ / β–Ά (ΠŸΠ°ΡƒΠ·Π° / ΠŸΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚ΡŒ)**: ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ Π°Π²Ρ‚ΠΎΠ½ΠΎΠΌΠ½Ρ‹ΠΌ Ρ†ΠΈΠΊΠ»ΠΎΠΌ (`RUNNING`) ΠΈ ΠΏΠ°ΡƒΠ·ΠΎΠΉ (`PAUSED`);
22
+ - Кнопка **β›Ά (Π Π°Π·Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ Π΄Π΅Ρ‚Π°Π»ΠΈ)**: ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ модального ΠΎΠΊΠ½Π° со списком Π²Π΅Ρ… ΠΈ Π»ΠΎΠ³ΠΎΠΌ.
23
+
24
+ ### 2.2 Modal Details Dialog (Окно Π΄Π΅ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ ΠΈ прогрСсса β›Ά)
25
+ - **Π¨Π°ΠΏΠΊΠ°**: НазваниС Ρ†Π΅Π»ΠΈ, статус-Π±Π΅ΠΉΠ΄ΠΆ (`Π’ процСссС`, `На ΠΏΠ°ΡƒΠ·Π΅`, `Π—Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΎ`), ΠΎΠ±Ρ‰ΠΈΠΉ ΠΏΡ€ΠΎΡ†Π΅Π½Ρ‚ выполнСния.
26
+ - **Π’Π΅Π»ΠΎ**:
27
+ - ЧСклист Π²Π΅Ρ… (Milestones): статус ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π²Π΅Ρ…ΠΈ (`pending` ⏳, `in_progress` πŸ”„, `completed` βœ…, `failed` ❌);
28
+ - Π›ΠΎΠ³ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΉ ΠΈ ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Ρ… Π²Ρ‹Π²ΠΎΠ΄ΠΎΠ² ΠΌΠΎΠ΄Π΅Π»ΠΈ;
29
+ - ΠœΠ΅Ρ‚Ρ€ΠΈΠΊΠΈ: ΠΎΠ±Ρ‰Π΅Π΅ врСмя, количСство ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΉ (turns), ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ Π»ΠΈΠΌΠΈΡ‚.
30
+ - **Π€ΡƒΡ‚Π΅Ρ€**: Кнопки Ρ€ΡƒΡ‡Π½ΠΎΠ³ΠΎ добавлСния шага, ΠΏΠ°ΡƒΠ·Ρ‹ ΠΈ закрытия.
31
+
32
+ ### 2.3 Settings Card (`settings.plugin.item`)
33
+ - Π Π°Π·ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ Π²ΠΎ Π²ΠΊΠ»Π°Π΄ΠΊΠ΅ «Настройки β†’ ΠŸΠ»Π°Π³ΠΈΠ½Ρ‹Β».
34
+ - ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹:
35
+ - `maxIterations`: максимальноС число Π°Π²Ρ‚ΠΎΠ½ΠΎΠΌΠ½Ρ‹Ρ… шагов Π΄ΠΎ ΠΏΡ€ΠΈΠ½ΡƒΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ остановки (Π΄Π΅Ρ„ΠΎΠ»Ρ‚: 25);
36
+ - `autoDrive`: автоматичСски Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ шаг ΠΌΠΎΠ΄Π΅Π»ΠΈ (Π΄Π΅Ρ„ΠΎΠ»Ρ‚: true);
37
+ - `enableSound`: Π·Π²ΡƒΠΊΠΎΠ²ΠΎΠΉ сигнал ΠΏΠΎ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠΈ Ρ†Π΅Π»ΠΈ (Π΄Π΅Ρ„ΠΎΠ»Ρ‚: true);
38
+ - `promptTemplate`: шаблон систСмного ΠΈΠ½ΠΆΠ΅ΠΊΡ‚Π° Π² контСкст ΠΌΠΎΠ΄Π΅Π»ΠΈ.
39
+
40
+ ---
41
+
42
+ ## 3. ЦвСтовая ΠΏΠ°Π»ΠΈΡ‚Ρ€Π° ΠΈ Ρ‚ΠΎΠΊΠ΅Π½Ρ‹ DSH
43
+
44
+ Плагин ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ систСмныС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ DSH:
45
+ - Π€ΠΎΠ½ΠΎΠ²Ρ‹ΠΉ слой: `var(--dsw-alias-bg-layer-3)` ΠΈ `var(--dsw-alias-bg-layer-2)`
46
+ - Π“Ρ€Π°Π½ΠΈΡ†Ρ‹: `var(--dsw-alias-border-l2)`
47
+ - ВСкст основной: `var(--dsw-alias-label-primary)`
48
+ - ВСкст Π²Ρ‚ΠΎΡ€ΠΈΡ‡Π½Ρ‹ΠΉ: `var(--dsw-alias-label-secondary)`
49
+ - ВСкст Ρ‚Ρ€Π΅Ρ‚ΠΈΡ‡Π½Ρ‹ΠΉ / ΠΌΠ΅Ρ‚ΠΊΠΈ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ: `var(--dsw-alias-label-tertiary)`
50
+ - АкцСнт/успСх: `var(--dsw-alias-status-success)`
51
+ - ΠŸΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠ΅/ΠΏΠ°ΡƒΠ·Π°: `var(--dsw-alias-status-warning)`
52
+ - Ошибка/ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅: `var(--dsw-alias-status-danger)`
53
+
54
+ ---
55
+
56
+ ## 4. Бостояния (State Machine)
57
+
58
+ | БостояниС | Π‘Π°Π½Π½Π΅Ρ€ | ДСйствия |
59
+ |---|---|---|
60
+ | `IDLE` | Π‘ΠΊΡ€Ρ‹Ρ‚ ΠΈΠ»ΠΈ Π½Π΅ΠΉΡ‚Ρ€Π°Π»ΡŒΠ½Ρ‹ΠΉ placeholder | Кнопка Β«ΠŸΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Ρ†Π΅Π»ΡŒΒ» |
61
+ | `RUNNING` | АктивСн, Ρ‚Π°ΠΉΠΌΠ΅Ρ€ Ρ‚ΠΈΠΊΠ°Π΅Ρ‚, ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ‚ΠΎΡ€ мишСни | πŸ—‘ ΠžΡ‚ΠΌΠ΅Π½Π°, ⏸ ΠŸΠ°ΡƒΠ·Π°, β›Ά Π”Π΅Ρ‚Π°Π»ΠΈ |
62
+ | `PAUSED` | АктивСн, Ρ‚Π°ΠΉΠΌΠ΅Ρ€ застыл, ΠΈΠΊΠΎΠ½ΠΊΠ° β–Ά вмСсто ⏸ | πŸ—‘ ΠžΡ‚ΠΌΠ΅Π½Π°, β–Ά Π’ΠΎΠ·ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ, β›Ά Π”Π΅Ρ‚Π°Π»ΠΈ |
63
+ | `COMPLETED` | АктивСн, зСлёная ΠΈΠΊΠΎΠ½ΠΊΠ° успСха, ΠΈΡ‚ΠΎΠ³ΠΎΠ²ΠΎΠ΅ врСмя | πŸ—‘ ΠžΡ‡ΠΈΡΡ‚ΠΈΡ‚ΡŒ, β›Ά ΠŸΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΎΡ‚Ρ‡Ρ‘Ρ‚ |
64
+ | `FAILED` | АктивСн, красная ΠΈΠΊΠΎΠ½ΠΊΠ° ошибки/Π»ΠΈΠΌΠΈΡ‚Π° | πŸ—‘ ΠžΡ‡ΠΈΡΡ‚ΠΈΡ‚ΡŒ, β›Ά Π›ΠΎΠ³ΠΈ ошибки |
65
+
66
+ ---
67
+
68
+ ## 5. Locked Design Decisions
69
+
70
+ 1. **Π•Π΄ΠΈΠ½Ρ‹ΠΉ прСфикс классов**: `.dsh-goal-*` Π²ΠΎ всСх CSS-ΠΏΡ€Π°Π²ΠΈΠ»Π°Ρ… Π²ΠΎ ΠΈΠ·Π±Π΅ΠΆΠ°Π½ΠΈΠ΅ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΠΎΠ² стилСй.
71
+ 2. **Π’ΠΎΡ‡Π½Ρ‹ΠΉ ΠΌΠ°ΠΊΠ΅Ρ‚ Π±Π°Π½Π½Π΅Ρ€Π°**: скруглСниС ΡƒΠ³Π»ΠΎΠ² 8–10px, шапка с отступами `8px 16px`, Π²Ρ‹Ρ€Π°Π²Π½ΠΈΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎ Ρ†Π΅Π½Ρ‚Ρ€Ρƒ, ΠΊΠ½ΠΎΠΏΠΊΠΈ дСйствий справа с `gap: 10px`.
72
+ 3. **Π‘Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΎΠ²**: всС `require('@deepseek-ai/dsh-client-ui-primitives')` ΠΎΠ±Ρ‘Ρ€Π½ΡƒΡ‚Ρ‹ Π² `try/catch` с SVG-Ρ„ΠΎΠ»Π»Π±Π΅ΠΊΠ°ΠΌΠΈ.