@goodandready/dsh-goal 0.1.5 → 0.1.7
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/docs/design/DESIGN.md +15 -0
- package/lib/client.js +1566 -1422
- package/lib/command-handler.js +193 -192
- package/lib/goal-engine.js +65 -2
- package/lib/index.js +699 -593
- package/package.json +1 -1
package/docs/design/DESIGN.md
CHANGED
|
@@ -81,3 +81,18 @@
|
|
|
81
81
|
- Инъекция стилей в DOM изолирована атрибутом `data-dsh-plugin="dsh-goal"`.
|
|
82
82
|
- Серверная защита REST API: ограничение размера тела запроса до 256 КБ (413 Payload Too Large) и строгая валидация входящих параметров вех.
|
|
83
83
|
- Ограничение сессионной памяти: автоматическая ротация завершённых неактивных сессий в `GoalEngine.pruneInactiveSessions()`.
|
|
84
|
+
|
|
85
|
+
7. **2026-09-12 — Realtime SSE, Low-Latency AutoDrive, Smart Progress Guard, Crash Hydration и Web Audio (v0.1.6)**:
|
|
86
|
+
- **Realtime Server-Sent Events (`GET /dsh-goal/events`)**: Стриминг снимков состояния цели клиенту в реальном времени с периодическим keepalive-пингом (20s). Устраняет сетевую задержку поллинга при выполнении итераций.
|
|
87
|
+
- **Адаптивный fallback-поллинг**: При сбое SSE соединения клиент бесшовно переключается на адаптивный поллинг (1.5s при RUNNING, 8s при простое).
|
|
88
|
+
- **Low-Latency AutoDrive**: Замена статического `setTimeout(..., 300)` на микрозадачу/`setImmediate` в координаторе `onTurnEnd` для устранения искусственных задержек между шагами автономного цикла.
|
|
89
|
+
- **Smart Progress Guard**: Детекция застрявшего цикла агента (2 последовательных холостых хода без изменения/добавления вех) с автоматической паузой и фиксацией причины в логах во избежание перерасхода токенов.
|
|
90
|
+
- **Crash Hydration**: При перезапуске DSH цели, оставшиеся в статусе `RUNNING`, автоматически гидрируются в `PAUSED` с отметкой времени и пояснением оператору для ручного возобновления в 1 клик.
|
|
91
|
+
- **Web Audio Синтез**: Синтезированные пентатонические колокольчики через `window.AudioContext` при завершении цели (`COMPLETED` — мажорный аккорд, `FAILED` — минорный аккорд) с соблюдением настройки `enableSound`.
|
|
92
|
+
- **Milestone Integrity**: Статус выполнения вех строго контролируется агентом; чекбоксы ручной отметки в UI исключены в соответствии с архитектурным контрактом.
|
|
93
|
+
|
|
94
|
+
8. **2026-09-12 — Сессионная изоляция /goal, устойчивость SSE и строгая REST валидация (v0.1.7)**:
|
|
95
|
+
- **Сквозная сессионная изоляция в слеш-команде**: В `command-handler.js` метод `executeGoalSlashCommand` пробрасывает `sessionId` во все вызовы `engine` (`getSnapshot`, `startGoal`, `pause`, `resume`, `clear`), исключая мутацию глобальной сессии при работе в конкретном чате.
|
|
96
|
+
- **Устойчивость SSE с Exponential Backoff**: На клиенте внедрена автоматическая схема повторного подключения `EventSource` с возрастающей задержкой (от 2s до 30s) и рандомизированным джиттером для защиты от шторма переподключений.
|
|
97
|
+
- **Строгая REST валидация и Enum Guard**: Обработчик `POST /dsh-goal/action` валидирует непустой `title` при старте цели и проверяет допустимость статуса вехи по `MilestoneStatus` enum, возвращая внятный HTTP 400 Bad Request / 404 Not Found.
|
|
98
|
+
- **Безопасность файловой системы**: `GoalEngine.writeStateToDiskSync()` гарантированно создаёт отсутствующие родительские директории через `fs.mkdirSync(dir, { recursive: true })` перед созданием временного файла и атомарным переименованием.
|