dsh-desktop-kit 2.2.0 → 2.7.2

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.
Files changed (128) hide show
  1. package/CHANGELOG.md +86 -0
  2. package/README.md +113 -27
  3. package/client.js +3121 -32
  4. package/docs/AGENT-HARNESS.md +144 -0
  5. package/docs/ARCHITECTURE.md +38 -7
  6. package/docs/COMPATIBILITY.md +5 -3
  7. package/docs/DEVELOPMENT.md +56 -0
  8. package/docs/INSTALL.md +20 -11
  9. package/docs/LAPTOP-INSTALL.md +96 -0
  10. package/docs/ROADMAP-3.0.md +353 -0
  11. package/docs/ROADMAP.md +1 -1
  12. package/docs/SUBAGENTS.md +25 -0
  13. package/docs/TEST-0.2.2.md +6 -6
  14. package/docs/TEST-2.3.0.md +49 -0
  15. package/docs/TEST-2.7.2.md +46 -0
  16. package/docs/TOKENS.md +2 -2
  17. package/docs/TROUBLESHOOTING.md +27 -0
  18. package/docs/UI-QA.md +28 -0
  19. package/docs/images/peak-toast-peak.png +0 -0
  20. package/docs/images/peak-toast-soon.png +0 -0
  21. package/docs/preview/peak-toast.html +155 -0
  22. package/doctor.ps1 +122 -0
  23. package/index.js +18 -1
  24. package/install.ps1 +99 -0
  25. package/package.json +29 -6
  26. package/plugins/dsh-agent-extensions/README.md +99 -0
  27. package/plugins/dsh-agent-extensions/index.js +167 -0
  28. package/plugins/dsh-agent-extensions/lib/agents.js +76 -0
  29. package/plugins/dsh-agent-extensions/lib/checkpoints.js +103 -0
  30. package/plugins/dsh-agent-extensions/lib/commands.js +255 -0
  31. package/plugins/dsh-agent-extensions/lib/hooks.js +182 -0
  32. package/plugins/dsh-agent-extensions/lib/policy.js +84 -0
  33. package/plugins/dsh-agent-extensions/lib/project.js +144 -0
  34. package/plugins/dsh-agent-extensions/lib/scaffold.js +151 -0
  35. package/plugins/dsh-agent-extensions/package.json +9 -0
  36. package/plugins/dsh-browser-qa/README.md +221 -0
  37. package/plugins/dsh-browser-qa/cordis.patch.yml +4 -0
  38. package/plugins/dsh-browser-qa/index.js +165 -0
  39. package/plugins/dsh-browser-qa/lib/cdp.js +224 -0
  40. package/plugins/dsh-browser-qa/lib/chrome.js +466 -0
  41. package/plugins/dsh-browser-qa/lib/pages.js +552 -0
  42. package/plugins/dsh-browser-qa/lib/qa.js +827 -0
  43. package/plugins/dsh-browser-qa/lib/ui-gate.js +256 -0
  44. package/plugins/dsh-browser-qa/package.json +31 -0
  45. package/plugins/dsh-checkpoints/README.md +22 -0
  46. package/plugins/dsh-checkpoints/cordis.patch.yml +3 -0
  47. package/plugins/dsh-checkpoints/index.js +80 -0
  48. package/plugins/dsh-checkpoints/lib/checkpoints.js +111 -0
  49. package/plugins/dsh-checkpoints/package.json +25 -0
  50. package/plugins/dsh-github-review/README.md +131 -0
  51. package/plugins/dsh-github-review/cordis.patch.yml +3 -0
  52. package/plugins/dsh-github-review/index.js +536 -0
  53. package/plugins/dsh-github-review/lib/gh.js +494 -0
  54. package/plugins/dsh-github-review/lib/normalize.js +662 -0
  55. package/plugins/dsh-github-review/package.json +28 -0
  56. package/plugins/dsh-guardrails/README.md +264 -0
  57. package/plugins/dsh-guardrails/cordis.patch.yml +5 -0
  58. package/plugins/dsh-guardrails/index.js +389 -0
  59. package/plugins/dsh-guardrails/lib/hooks.js +262 -0
  60. package/plugins/dsh-guardrails/lib/modes.js +77 -0
  61. package/plugins/dsh-guardrails/lib/policy.js +592 -0
  62. package/plugins/dsh-guardrails/lib/scan.js +451 -0
  63. package/plugins/dsh-guardrails/lib/secrets.js +274 -0
  64. package/plugins/dsh-guardrails/package.json +26 -0
  65. package/plugins/dsh-mcp-manager/README.md +78 -0
  66. package/plugins/dsh-mcp-manager/client.js +373 -0
  67. package/plugins/dsh-mcp-manager/index.js +159 -0
  68. package/plugins/dsh-mcp-manager/lib/api.js +250 -0
  69. package/plugins/dsh-mcp-manager/lib/client.js +219 -0
  70. package/plugins/dsh-mcp-manager/lib/config.js +217 -0
  71. package/plugins/dsh-mcp-manager/lib/manager.js +146 -0
  72. package/plugins/dsh-mcp-manager/package.json +18 -0
  73. package/plugins/dsh-mcp-manager/screenshots/modal-390.png +0 -0
  74. package/plugins/dsh-mcp-manager/screenshots/settings-1440.png +0 -0
  75. package/plugins/dsh-mcp-manager/screenshots/settings-390.png +0 -0
  76. package/plugins/dsh-memory-bridge/README.md +161 -0
  77. package/plugins/dsh-memory-bridge/client.js +2264 -0
  78. package/plugins/dsh-memory-bridge/cordis.patch.yml +5 -0
  79. package/plugins/dsh-memory-bridge/docs/images/conflicts.png +0 -0
  80. package/plugins/dsh-memory-bridge/docs/images/hero.png +0 -0
  81. package/plugins/dsh-memory-bridge/docs/images/settings-dark.png +0 -0
  82. package/plugins/dsh-memory-bridge/docs/images/settings-light.png +0 -0
  83. package/plugins/dsh-memory-bridge/docs/images/settings-mobile.png +0 -0
  84. package/plugins/dsh-memory-bridge/docs/images/setup.png +0 -0
  85. package/plugins/dsh-memory-bridge/icon.svg +13 -0
  86. package/plugins/dsh-memory-bridge/index.js +378 -0
  87. package/plugins/dsh-memory-bridge/lib/bridge.js +636 -0
  88. package/plugins/dsh-memory-bridge/lib/github.js +473 -0
  89. package/plugins/dsh-memory-bridge/lib/merge.js +205 -0
  90. package/plugins/dsh-memory-bridge/lib/portable.js +314 -0
  91. package/plugins/dsh-memory-bridge/lib/state.js +565 -0
  92. package/plugins/dsh-memory-bridge/lib/sync.js +984 -0
  93. package/plugins/dsh-memory-bridge/locale/en.json +6 -0
  94. package/plugins/dsh-memory-bridge/locale/ru.json +6 -0
  95. package/plugins/dsh-memory-bridge/package.json +67 -0
  96. package/plugins/dsh-peak-guard/README.md +16 -3
  97. package/plugins/dsh-peak-guard/client.js +223 -8
  98. package/plugins/dsh-peak-guard/package.json +1 -1
  99. package/plugins/dsh-plan-mode/README.md +24 -0
  100. package/plugins/dsh-plan-mode/cordis.patch.yml +3 -0
  101. package/plugins/dsh-plan-mode/index.js +103 -0
  102. package/plugins/dsh-plan-mode/lib/plan.js +89 -0
  103. package/plugins/dsh-plan-mode/package.json +18 -0
  104. package/plugins/dsh-profile-transfer/client.js +277 -17
  105. package/plugins/dsh-profile-transfer/index.js +10 -0
  106. package/plugins/dsh-profile-transfer/package.json +3 -1
  107. package/plugins/dsh-profile-transfer/transfer.js +101 -2
  108. package/plugins/dsh-project-memory/index.js +92 -2
  109. package/plugins/dsh-project-memory/package.json +1 -1
  110. package/plugins/dsh-repo-map/README.md +26 -0
  111. package/plugins/dsh-repo-map/cordis.patch.yml +3 -0
  112. package/plugins/dsh-repo-map/index.js +99 -0
  113. package/plugins/dsh-repo-map/lib/repo-map.js +170 -0
  114. package/plugins/dsh-repo-map/package.json +25 -0
  115. package/plugins/dsh-skill-autopilot/index.js +135 -11
  116. package/skills/delivery-gate/SKILL.md +31 -0
  117. package/skills/git-and-ci/SKILL.md +5 -1
  118. package/skills/manifest.json +31 -6
  119. package/skills/requirements-and-planning/SKILL.md +3 -0
  120. package/skills/research-first/SKILL.md +35 -0
  121. package/skills/research-first/references/query-patterns.md +20 -0
  122. package/skills/subagent-playbook/SKILL.md +36 -0
  123. package/skills/subagent-playbook/references/prompts.md +39 -0
  124. package/skills/ui-craft/SKILL.md +43 -0
  125. package/skills/visual-qa/SKILL.md +29 -0
  126. package/skills/visual-qa/references/commands.md +32 -0
  127. package/skills-baseline.json +246 -0
  128. package/uninstall.ps1 +74 -0
@@ -0,0 +1,144 @@
1
+ # Agent Harness — новые возможности kit 2.6.0
2
+
3
+ ## Repo Map (`repo_map`)
4
+
5
+ Локальная структурная карта проекта. Модель сначала смотрит «оглавление»,
6
+ потом читает только нужные файлы.
7
+
8
+ ```
9
+ repo_map action=map # топ файлов, символы, импорты
10
+ repo_map action=find query="login session auth"
11
+ repo_map action=stats
12
+ repo_map action=refresh
13
+ ```
14
+
15
+ - без сети и LLM, кэш 60 секунд;
16
+ - пропускает `node_modules`, `.git`, `dist`, `build`, `vendor`, `pgruntime`, `tmp`, `.dsh`;
17
+ - лимит 2500 файлов, карта от 10 до 60 записей.
18
+
19
+ ## Checkpoints (`checkpoint`)
20
+
21
+ Снимок workspace на git-объектах, без движения HEAD.
22
+
23
+ ```
24
+ checkpoint action=create label="before refactor"
25
+ checkpoint action=list
26
+ checkpoint action=restore id=cp-...
27
+ checkpoint action=delete id=cp-...
28
+ ```
29
+
30
+ - восстановление **не удаляет** файлы, созданные после снимка;
31
+ - перед откатом автоматически создаётся страховочный снимок;
32
+ - метаданные: `~/.dsh/checkpoints/<repo-hash>/<id>.json` (0700/0600);
33
+ - в снимок попадают все файлы, включая `.env` — это локальный приватный объект.
34
+
35
+ ## Project Rules (`.dsh/rules/*.md`)
36
+
37
+ Файлы правил проекта автоматически подмешиваются в промпт:
38
+
39
+ ```md
40
+ ---
41
+ always: true
42
+ ---
43
+ Используй pnpm, не npm. Отступы 4/8. Тесты перед коммитом — обязательны.
44
+ ```
45
+
46
+ - правила без `paths` или с `always: true` грузятся всегда;
47
+ - path-scoped правила (`paths:` без `always`) пока не грузятся автоматически —
48
+ это следующий шаг file-aware загрузчика;
49
+ - лимит 2.5 КБ, чтобы не съедать контекст.
50
+
51
+ ## Когда использовать
52
+
53
+ - новый проект/большой репозиторий → `repo_map`;
54
+ - рефакторинг, миграция, массовые правки → `checkpoint` до начала;
55
+ - конвенции команды → `.dsh/rules`, а не повторять в каждом промпте.
56
+
57
+ ## Guardrails (`guardrails`)
58
+
59
+ Реальные hooks DSH, не имитация:
60
+
61
+ - `tools/pre-execute` — deny/ask для `rm -rf /`, `git push --force`, `git reset --hard`, `DROP DATABASE`, `TRUNCATE`, disk wipe, shell-записи в `.env`/credentials;
62
+ - `fs/write-intent`, `fs/edit-intent`, `fs/delete-intent` — отказ на `.git`, `.ssh`, `.env`, `~/.dsh/.credentials.yaml`, `id_rsa*`, `*.pem`, `*.key`;
63
+ - `guardrails check` — ограниченный скан секретов (ключи, токены, `.env`), больших файлов, `git diff --check`;
64
+ - kill switch: `DSH_GUARDRAILS=off`; политика `~/.dsh/guardrails.json`.
65
+
66
+ ## Plan mode (`plan`)
67
+
68
+ `.dsh/PLAN.md` со статусами `draft → approved`:
69
+
70
+ ```
71
+ plan action=create content="# План..."
72
+ plan action=approve confirm=true # только после явного согласия пользователя
73
+ ```
74
+
75
+ Пока план `draft`, плагин вставляет в промпт запрет на правки кода. `confirm: true`
76
+ требуется обязательно; это prompt-гейт, жёсткая блокировка — у guardrails.
77
+
78
+ ## Agent loop contract
79
+
80
+ `dsh-skill-autopilot` вставляет `<quality-contract>` в каждый промпт:
81
+ сначала `web_search`/`web_fetch` и 2+ независимых источника, затем 2–3
82
+ конкретных референса/варианта; для UI — `browser_qa audit` на 390/768/1440
83
+ и исправление overflow/console/markup до слова «готово». Это поведенческий
84
+ контур, а не отдельная кнопка.
85
+
86
+ ## Browser QA (`browser_qa`)
87
+
88
+ Chrome/Edge через CDP, без npm-зависимостей:
89
+ ```
90
+ browser_qa action=audit url="http://localhost:3000" widths=[390,768,1440]
91
+ browser_qa action=shot url="..." width=390 height=844
92
+ ```
93
+
94
+ `audit` возвращает `horizontalOverflow`, до 25 overflow-элементов (вложенные
95
+ `overflow-x:hidden` не считаются), console errors, скриншоты по ширинам и
96
+ `markup`-проверку: alt, label у полей, доступные имена ссылок/кнопок, дубли
97
+ `id`, порядок заголовков, `lang`/`title`/viewport, положительный `tabindex`.
98
+ `shot` сохраняет PNG в `.dsh/browser-qa`. Chrome не остаётся висеть после вызова.
99
+
100
+ ## UI gate
101
+
102
+ После правок UI-файлов (`html/css/scss/jsx/tsx/vue/svelte/astro/mdx`)
103
+ `browser_qa` не даёт закрыть ход без чистого аудита:
104
+
105
+ - правка запоминает сессию и путь;
106
+ - `browser_qa audit` снимает флаг только при `overflow=0`, `console=0`,
107
+ `markup=0`;
108
+ - иначе на `agent/turn-stopping` агент получает `steer` с требованием
109
+ исправить и перепроверить;
110
+ - после четырёх напоминаний срабатывает предохранитель, чтобы не зациклиться.
111
+
112
+ Это реальный hook, а не только строка в промпте.
113
+
114
+ ## GitHub review (`github_review`)
115
+
116
+ Read-only PR/CI через `gh`:
117
+
118
+ ```
119
+ github_review action=status
120
+ github_review action=pr
121
+ github_review action=checks
122
+ github_review action=comments
123
+ github_review action=diff
124
+ ```
125
+
126
+ `comment` — только с `confirm: true`; merge/close/force-push отсутствуют.
127
+ Токены не логируются; вывод ограничен по байтам.
128
+
129
+ ## Eval (`tools/eval-run.mjs`)
130
+
131
+ ```
132
+ node tools/eval-run.mjs --full
133
+ ```
134
+
135
+ 10 проверок: skills, repo map, checkpoints, plan, guardrails, smoke, transfer,
136
+ browser QA, GitHub review, bridge. Отчёт `eval/latest.json`; baseline
137
+ `eval/baseline.json` показывает дельту.
138
+
139
+ ## Следующие шаги
140
+
141
+ - file-aware rules: `paths:` + реальный список изменяемых файлов;
142
+ - inline diff accept/reject UI;
143
+ - model/effort routing;
144
+ - MCP-рецепты и маркетплейс.
@@ -5,33 +5,40 @@
5
5
  ```
6
6
  dsh-desktop-kit/
7
7
  ├─ package.json пакет-«зонтик», который ставится через «Add plugin»
8
- ├─ index.js host-половина: монтирует семь плагинов дочерними
9
- ├─ client.js сгенерированная браузерная половина (5 плагинов)
8
+ ├─ index.js host-половина: монтирует четырнадцать плагинов дочерними
9
+ ├─ client.js сгенерированная браузерная половина (6 плагинов)
10
10
  ├─ cordis.patch.yml одна строка bundle → dsh-desktop-kit
11
11
  ├─ plugins/
12
12
  │ ├─ dsh-gkb-ru-ui/ русский UI, плитки, Skills Studio
13
13
  │ ├─ dsh-skill-autopilot/ маршрут навыков по сообщению
14
14
  │ ├─ dsh-token-lab/ замер контекста и панель
15
15
  │ ├─ dsh-peak-guard/ предупреждение о пиковом тарифе
16
- │ ├─ dsh-project-memory/
16
+ │ ├─ dsh-project-memory/ локальные досье и автожурнал
17
+ │ ├─ dsh-memory-bridge/ обмен досье: GitHub и USB
18
+ │ ├─ dsh-repo-map/ карта репозитория и поиск файлов
19
+ │ ├─ dsh-checkpoints/ git-снимки и безопасный откат
20
+ │ ├─ dsh-plan-mode/ PLAN.md и запрет правок до подтверждения
21
+ │ ├─ dsh-browser-qa/ скриншоты и overflow через Chrome/CDP
22
+ │ ├─ dsh-github-review/ PR, CI и комментарии через gh
23
+ │ ├─ dsh-guardrails/ политика опасных команд и защищённых путей
17
24
  │ ├─ dsh-session-move/
18
25
  │ └─ dsh-profile-transfer/
19
- ├─ skills/ 25 навыков (ядро + references)
26
+ ├─ skills/ 30 навыков (ядро + references)
20
27
  ├─ tools/ сборка, smoke, проверка бюджета навыков
21
28
  ├─ docs/ документация и hero-картинка
22
29
  └─ assets/ исходник hero.html (в npm не входит)
23
30
  ```
24
31
 
25
- ## Почему один пакет, а не семь зависимостей
32
+ ## Почему один пакет, а не четырнадцать зависимостей
26
33
 
27
34
  DSH ставит плагин как пакет профиля и загружает его клиентскую половину по имени пакета. Пакет-«зонтик» с зависимостями на подпакеты не годится: pnpm кладёт их в `node_modules/.pnpm`, а загрузчик ищет `dsh.client` у пакета, который указан в строке bundle. Поэтому зонтик **вендорит** исходники и объединяет половины сам.
28
35
 
29
36
  ## Host-половина
30
37
 
31
- `index.js` импортирует семь host-модулей и монтирует каждый через `ctx.plugin(plugin)`:
38
+ `index.js` импортирует четырнадцать host-модулей и монтирует каждый через `ctx.plugin(plugin)`:
32
39
 
33
40
  - у каждого дочернего плагина свой `inject`, поэтому отсутствующий сервис оставляет pending только этот плагин, а не весь набор;
34
- - отключение `dsh-desktop-kit` в списке плагинов снимает все семь;
41
+ - отключение `dsh-desktop-kit` в списке плагинов снимает все четырнадцать;
35
42
  - ошибка монтирования одного плагина логируется и не мешает остальным.
36
43
 
37
44
  При старте `installSkills()` вызывает `syncSkills()` из `lib/skills-sync.js`. Манифест `skills/manifest.json` хранит SHA-256 каждого навыка, состояние `~/.dsh/skills/.dsh-kit-skills.json` — что установлено. Неизменённые навыки обновляются с бэкапом в `.dsh-kit-backups/skills/`, изменённые пользователем не перезаписываются и попадают в `/kit conflicts`. Установка без state-файла принимается только при совпадении с базой из `skills-baseline.json`.
@@ -65,6 +72,30 @@ RPC `/api/dsh-skill-autopilot/state|set|route` отдаёт состояние,
65
72
 
66
73
  Дайджест кэшируется по mtime секций, `scan.json`, git-head и хэшу последнего сообщения; auto-recall ищет до трёх релевантных строк досье по ключевым словам запроса. Блоки `AUTO-SCAN` обновляются заменой между маркерами, поэтому ручной текст секций не теряется. Записи проходят `redactText`; на POSIX каталог и файлы получают `0700/0600`.
67
74
 
75
+ ## Мост памяти между машинами
76
+
77
+ `dsh-memory-bridge` — часть, которая синхронизирует досье между машинами через GitHub.
78
+
79
+ - **Host** (`index.js`): фоновые синхронизации (старт, таймер 60 с, запись досье, конец хода), RPC `/api/dsh-memory-bridge/{status|configure|create-repo|set-enabled|set-options|sync-now|resolve-conflict|history|restore-version}`, скрытая команда `/sync` для восстановления.
80
+ - **Состояние** — только в `~/.dsh/memory-sync/`: `config.json`, `machine.json`, локальный клон `github/<repo>`, снимки `base/<проект>`, `conflicts/`, `backups/`. В `projects-memory/` мост не пишет ничего, кроме самих досье.
81
+ - **Цикл**: `fetch → reset к origin → 3-way merge (local/base/origin) → локальные файлы + файлы репозитория → commit → push`. Отклонённый push не форсируется: цикл повторяет fetch и слияние, поэтому параллельные правки двух машин объединяются.
82
+ - **Конфликты**: неаддитивные правки одной строки дают карточку с выбором; файл не перезаписывается, пока пользователь не решил.
83
+ - **Приватность**: `gh repo view --json visibility` перед clone/fetch; публичный или непроверяемый репозиторий останавливает синхронизацию.
84
+ - **Клиент**: `settings.section` id `memory-bridge`, order 35; мастер подключения, статус, конфликты, история и откат — мышкой.
85
+
86
+ `dsh-project-memory` при старте подхватывает уже существующую папку досье (пришла из обмена или архива) и переселяет реестр на локальный корень; `dsh-profile-transfer` сливает `projects-memory/registry.json` с локальным и пересчитывает пути с машины-источника.
87
+
88
+ ## Agent Harness (2.6–2.7)
89
+
90
+ Шесть host-плагинов добавляют инструменты и хуки, не раздувая системный промпт:
91
+
92
+ - **`dsh-repo-map`** — `repo_map`: файлы, языки, символы, импорты и ранжирование; отдаёт 5–15 релевантных файлов вместо чтения всего репозитория.
93
+ - **`dsh-checkpoints`** — `checkpoint`: снимок рабочего дерева (включая untracked) в `refs/dsh-checkpoints/<id>`; `create/list/restore/delete`, перед откатом — страховочный снимок. Метаданные в `~/.dsh/checkpoints/`.
94
+ - **`dsh-plan-mode`** — `plan`: `draft → approved` в `.dsh/PLAN.md`; правки кода блокируются, пока пользователь явно не подтвердит план (`plan action=approve confirm=true`).
95
+ - **`dsh-browser-qa`** — headless Chrome через CDP: скриншоты, адаптив 1440/768/390, горизонтальный overflow, ошибки консоли; без Playwright и внешних зависимостей.
96
+ - **`dsh-github-review`** — `github_review` поверх `gh`: `status`, `pr`, `checks`, `comments`, diff с жёсткими лимитами; read-only, комментарий — только по явному подтверждению.
97
+ - **`dsh-guardrails`** — `guardrails` (`status/check/policy`) + хуки `tools/pre-execute`, `fs/write-intent`, `fs/edit-intent`, `fs/delete-intent`: `deny`/`ask` для опасных shell-команд, защищённые пути, скан секретов и рабочего дерева. Политика — инспектируемый JSON, отключается `DSH_GUARDRAILS=off`.
98
+
68
99
  ## Skills Studio
69
100
 
70
101
  Хост-часть `dsh-gkb-ru-ui`:
@@ -5,7 +5,9 @@
5
5
  | DSH | Состояние | Что проверено |
6
6
  |---|---|---|
7
7
  | `0.2.1-rc.5` | работает | **2.2 проверена вживую**: память проектов (авто-распознавание, автоскан, `brief`/`scan`, `/memory`, redaction), Skills Studio, Token Lab, автопилот, 25 навыков, синхронизация навыков с бэкапом |
8
- | `0.2.2-rc.1` | работает (2.2.0+) | **проверено 2026-11-06**: установка из репозитория, 4 плитки, 25 навыков, редактор с бэкапом, Token Lab (27 217 токенов / 24 узла), Peak Guard (карточка + бейдж), Session Move, Profile Transfer, память проектов (`/memory`, `scan.json`, дайджест), автопилот после фикса формата `user/message`, обновление 2.2.0 с сохранением правки навыка и `/kit status` (7/7). Отчёт: [TEST-0.2.2.md](TEST-0.2.2.md) |
8
+ | `0.2.2-rc.1` | работает (2.2.1+) | **проверено 2026-11-06**: установка из репозитория, 4 плитки, 25 навыков, редактор с бэкапом, Token Lab (27 217 токенов / 24 узла), Peak Guard (карточка + бейдж), Session Move, Profile Transfer, память проектов (`/memory`, `scan.json`, дайджест), автопилот после фикса формата `user/message`, обновление 2.2.0 с сохранением правки навыка и `/kit status` (7/7). Отчёт: [TEST-0.2.2.md](TEST-0.2.2.md) |
9
+ | `0.2.2-rc.1` | работает (2.7.2) | **проверено 2026-11-10**: 14 плагинов, 6 клиентских частей, 30 навыков, `/kit status` (14/14), полный `npm test` (включая 39 guardrails, browser QA, GitHub review, repo map, checkpoints, plan mode), 49 тестов переноса профиля, 35 тестов GitHub-моста, сборка и проверка клиента, `npm pack` и установка из tarball |
10
+ | `0.2.2-rc.1` | работала (2.3.0) | **проверено 2026-11-09**: 8 плагинов, 6 клиентских частей, 25 навыков, `/kit status` (8/8), 49 тестов переноса профиля, 35 тестов GitHub-моста; досье с другой машины подхватывается без дубля |
9
11
  | новее `0.2.2` | не проверено | API плагинов в 0.2.x ещё меняется; см. «Если сломалось» |
10
12
 
11
13
  ## Политика обновлений
@@ -13,7 +15,7 @@
13
15
  - **Нет жёстких версий DSH.** Пакет не объявляет `engines.dsh` и не тянет `@deepseek-ai/*`: диапазон сам стал бы причиной «плагины несовместимы» после обновления клиента.
14
16
  - **Нет потери правок.** Навыки обновляются по SHA-256-манифесту; изменённые пользователем остаются нетронутыми, перед заменой — бэкап. Состояние: `~/.dsh/skills/.dsh-kit-skills.json`; команда `/kit conflicts`.
15
17
  - **Изоляция.** Каждый дочерний хост-плагин монтируется отдельно; каждая клиентская часть набора изолирована — ошибка одной не снимает остальные. Диагностика: `window.__DSH_DESKTOP_KIT__`, `doctor.ps1`.
16
- - **Проверка перед релизом.** Матрица выше обновляется отчётом `docs/TEST-<версия>.md`; для нового DSH прогоняются установка из репозитория, все 7 плагинов и `/kit status`.
18
+ - **Проверка перед релизом.** Матрица выше обновляется отчётом `docs/TEST-<версия>.md`; для нового DSH прогоняются установка из репозитория, все 14 плагинов и `/kit status`.
17
19
  - **Откат.** Предыдущая версия ставится поверх; навыки возвращаются из `.dsh-kit-backups/skills/`. Полный протокол — [UPGRADING.md](UPGRADING.md).
18
20
 
19
21
  ### 0.2.2-rc.1: что отличается
@@ -68,7 +70,7 @@ DSH 0.2.2 при старте проверяет `engines.dsh` и peer-диап
68
70
  4. Запущен `dsh --profile probe --no-open --port 58888`.
69
71
  5. В HTML boot-графа присутствует `dsh-desktop-kit/client.js`.
70
72
  6. Headless Chromium + CDP: `EXCEPTIONS []`, ни одной неактивированной записи, `window.__DSH_PEAK_GUARD__` и `window.__DSH_SESSION_MOVE__` — объекты, режим пика `peak` (09:0x МСК).
71
- 7. После старта хоста в `DSH_HOME/skills` появились все 25 навыков.
73
+ 7. После старта хоста в `DSH_HOME/skills` появились все 30 навыков.
72
74
  8. **2.0:** пакет поставлен в живой профиль `desktop` через Plugin Manager (локальная папка), хост применился без перезапуска; Skills Studio сохранила и откатила навык (бэкап в `.dsh-kit-backups`), Token Lab показал фактический замер 402k токенов, автопилот выдал маршрут по сообщению; `node tools/smoke-tests.mjs` — 2/2, `skill-cost --check` — все ядра в бюджете.
73
75
  9. **2.1:** `node tools/memory-tests.mjs` — распознавание, скан, redaction, дайджест, `brief`/`scan`, авто-блок; живой профиль перезагружен, для проекта `dsh` создан `scan.json` и блоки `AUTO-SCAN`.
74
76
 
@@ -0,0 +1,56 @@
1
+ # Разработка и выпуск
2
+
3
+ ## Быстрый цикл
4
+
5
+ ```powershell
6
+ npm test # полный набор: kit, плагины, guardrails, browser QA, GitHub review
7
+ npm run skills:check # 30 навыков, бюджеты ядер
8
+ node tools/check-client.mjs client.js
9
+ node tools/smoke-tests.mjs
10
+ ```
11
+
12
+ Перед коммитом можно включить локальный hook:
13
+
14
+ ```powershell
15
+ git config core.hooksPath .githooks
16
+ ```
17
+
18
+ Он проверяет `git diff --check`, актуальность `client.js`, навыки и smoke-тесты. Полный `npm test` остаётся ответственностью CI и релиза.
19
+
20
+ ## Релиз одной командой
21
+
22
+ ```powershell
23
+ npm run release -- --dry-run # показать план, ничего не менять
24
+ npm run release # проверки + сборка + release/*.tgz + sha256
25
+ npm run release -- --bump patch # поднять версию и собрать
26
+ npm run release -- --skip-tests # быстрая локальная упаковка
27
+ npm run release -- --publish # опубликовать готовый tarball
28
+ ```
29
+
30
+ Скрипт `tools/release.mjs`:
31
+
32
+ 1. при `--bump` меняет версию в `package.json` и пересобирает `client.js` и `skills/manifest.json`;
33
+ 2. запускает `validate-skills`, `skill-cost --check`, `check-client` и `npm test` (если не `--skip-tests`);
34
+ 3. делает `npm pack` в `release/`, пишет `release/checksums.txt` с SHA-256;
35
+ 4. **не публикует** без `--publish` — печатает точную команду.
36
+
37
+ После `--bump` не забудьте обновить версии в README, `docs/` и `CHANGELOG.md` — скрипт намеренно не правит тексты.
38
+
39
+ Публикация (после `npm login --auth-type=web` и снятия security hold):
40
+
41
+ ```powershell
42
+ npm run release -- --publish
43
+ npm view dsh-desktop-kit version
44
+ ```
45
+
46
+ ## CI
47
+
48
+ - `.github/workflows/test.yml` — тесты на Windows, Node 20/24, push в `main` и PR.
49
+ - `.github/workflows/release.yml` — по тегу `v*` или вручную: `npm test`, tarball, `checksums.txt`, artifact в Actions. Публикация в npm намеренно не автоматизирована, пока нет trusted publishing/токена.
50
+
51
+ ## Что ещё автоматизировать
52
+
53
+ - `eval-run.mjs` — детерминированный health-check харнесса; можно добавить его в nightly CI.
54
+ - `browser_qa` — UI-аудит на 390/768/1440; подключать к PR, затрагивающим клиент.
55
+ - `guardrails check` — скан секретов/запрещённых путей перед релизом.
56
+ - `repo_map` и `checkpoint` — перед крупным рефакторингом, а не после.
package/docs/INSTALL.md CHANGED
@@ -11,7 +11,7 @@
11
11
  В DSH: **Плагины → Add plugin** → вставьте:
12
12
 
13
13
  ```
14
- dsh-desktop-kit@2.2.0
14
+ dsh-desktop-kit@2.7.2
15
15
  ```
16
16
 
17
17
  Либо локально: `npm i dsh-desktop-kit@2.0.0` — но для GUI всё равно нужен Add plugin/bundle.
@@ -42,7 +42,7 @@ dsh-desktop-kit@2.2.0
42
42
 
43
43
  Плагин сам:
44
44
  - добавит один bundle `dsh-desktop-kit` в профиль;
45
- - смонтирует семь плагинов как дочерние;
45
+ - смонтирует четырнадцать плагинов как дочерние;
46
46
  - скопирует недостающие навыки в `~/.dsh/skills`.
47
47
 
48
48
  ## Способ 2. Скрипт
@@ -61,13 +61,19 @@ powershell -ExecutionPolicy Bypass -File .\install.ps1
61
61
 
62
62
  Скрипт делает бэкап `package.json` и `cordis.patch.yml`, вызывает `dsh plugin add` и включает bundle.
63
63
 
64
- ## Способ 3. Отдельные плагины
64
+ ## Один пакет
65
65
 
66
- Добавьте в «Add plugin» путь к папке нужного плагина из `plugins/` (см. таблицу в README). Каждый плагин самостоятелен: свой `cordis.patch.yml`, свой клиентский бандл.
66
+ Все 16 плагинов уже входят в `dsh-desktop-kit`. Не добавляйте папки из `plugins/` отдельно: это внутренние исходники, а не самостоятельные пакеты. В профиле должна быть одна зависимость `dsh-desktop-kit` и один bundle.
67
+
68
+ ## Автонастройка
69
+
70
+ При первом запуске kit сам создаёт `~/.dsh/mcp.json`, `~/.dsh/mcp.README.md` и в каждом проекте — `.dsh/` с `agents/`, `commands/`, `rules/`, `hooks.json`, `verify.json`, `mcp.json`, `PROJECT.md`, `README.md` и `.gitignore`. Существующие файлы не перезаписываются.
71
+
72
+ Trust-маркеры (`hooks.trusted`, `mcp.trusted`) **не создаются**: выполнение hooks и запуск проектных MCP-серверов остаётся явным решением. Для них есть `/hooks trust` и `/mcp trust`.
67
73
 
68
74
  ## Проверка после установки
69
75
 
70
- 1. **Плагины**: в списке появился `dsh-desktop-kit` (или отдельные плагины), переключатель включён.
76
+ 1. **Плагины**: в списке появился один `dsh-desktop-kit`, переключатель включён.
71
77
  2. **Сайдбар**: внизу — плитки «Навыки», «Токены», «Баланс», «Расход» (нужен вход в аккаунт DeepSeek; на экране входа сайдбар скрыт). На узком окне плитки скрыты, каталог открывает кнопка «Навыки» внизу справа.
72
78
  3. **Skills Studio**: плитка «Навыки» → карточки со стоимостью ядра → «Редактировать»; `Ctrl+S` сохраняет, копия — в `~/.dsh/skills/.dsh-kit-backups`.
73
79
  4. **Token Lab**: плитка «Токены» → состав контекста, топ-6 узлов, давление на окно.
@@ -77,6 +83,8 @@ powershell -ExecutionPolicy Bypass -File .\install.ps1
77
83
  8. **Навыки**: `~/.dsh/skills` содержит 25 папок, каждое ядро ≤ 6k токенов.
78
84
  9. **Перенос**: Настройки → «Перенос и резервные копии».
79
85
  10. **Перемещение чатов**: правый клик по чату → «Переместить в рабочую область…».
86
+ 11. **Автонастройка**: `~/.dsh/mcp.json` существует, в проекте есть `.dsh/PROJECT.md`; `/mcp list` и `/doctor` показывают конфиг.
87
+ 12. **MCP UI**: Настройки → **MCP**; добавьте пресет GitHub/PostgreSQL/Filesystem, проверьте статус и Tools. После подключения откройте новый чат — tools появятся в toolset.
80
88
 
81
89
  Диагностика: `powershell -ExecutionPolicy Bypass -File .\doctor.ps1`.
82
90
 
@@ -88,11 +96,12 @@ powershell -ExecutionPolicy Bypass -File .\uninstall.ps1
88
96
 
89
97
  Навыки остаются (они ваши). Удалить и их: `-RemoveSkills`.
90
98
 
91
- ## Ручная установка без скрипта и UI
99
+ ## Ручная установка без скрипта
92
100
 
93
- 1. Скопируйте папки плагинов в `%USERPROFILE%\.dsh\local-plugins\`.
94
- 2. В `%USERPROFILE%\.dsh\profiles\desktop\package.json`:
95
- - в `dependencies` добавьте `"dsh-desktop-kit": "link:<путь к репозиторию>"` (прямые слэши);
101
+ 1. В `%USERPROFILE%\.dsh\profiles\desktop\package.json`:
102
+ - в `dependencies` добавьте `"dsh-desktop-kit": "link:<путь к репозиторию>"` (прямые слэши) или версию из npm;
96
103
  - в `dsh.profile.bundles` добавьте `"dsh-desktop-kit"`.
97
- 3. Выполните `dsh plugin --profile desktop install` (встроенный pnpm DSH).
98
- 4. Перезапустите DSH.
104
+ 2. Выполните `dsh plugin --profile desktop install` (встроенный pnpm DSH).
105
+ 3. Перезапустите DSH.
106
+
107
+ Никакие папки из `plugins/` копировать в `local-plugins` не нужно.
@@ -0,0 +1,96 @@
1
+ # Установка kit на другой машине (ноутбук)
2
+
3
+ Репозиторий приватный. Нужен доступ к GitHub под `Bulavackii` и DSH
4
+ `0.2.2-rc.1` (или совместимый 0.2.x).
5
+
6
+ ## 1. Клонировать
7
+
8
+ ```powershell
9
+ git clone https://github.com/Bulavackii/dsh-desktop-kit.git
10
+ cd dsh-desktop-kit
11
+ ```
12
+
13
+ Если включён SSH:
14
+
15
+ ```powershell
16
+ git clone git@github.com:Bulavackii/dsh-desktop-kit.git
17
+ ```
18
+
19
+ ## 2. Установить bundle
20
+
21
+ **Предпочтительно — через UI DSH:**
22
+
23
+ 1. Открой DSH → Plugins (Плагины).
24
+ 2. «Установить из локальной папки» / Add local bundle.
25
+ 3. Укажи папку `dsh-desktop-kit`.
26
+ 4. Перезапусти профиль/обнови страницу.
27
+
28
+ **Через агента DSH** можно просто сказать:
29
+
30
+ > Установи bundle `dsh-desktop-kit` из `C:\путь\dsh-desktop-kit`.
31
+
32
+ Проверка после установки: в Plugins kit показывает **14/14** плагинов,
33
+ версия **2.7.1**, а команда `/kit status` пишет `Плагины: 14/14`.
34
+
35
+ ## 3. Что произойдёт автоматически
36
+
37
+ - 30 навыков синхронизируются в `~/.dsh/skills` (твои правки не
38
+ перезаписываются, конфликты видны в `/kit conflicts`);
39
+ - появятся инструменты `repo_map`, `checkpoint`, `plan`, `guardrails`,
40
+ `browser_qa`, `github_review`;
41
+ - quality-контракт и авто-загрузка компактных навыков включатся вместе с kit.
42
+
43
+ ## 4. Донастроить
44
+
45
+ - **GitHub PR/CI**: `gh auth login` (нужен `repo` scope).
46
+ - **Browser QA**: установленный Chrome или Edge; проверка — `browser_qa action=status`.
47
+ - **Guardrails**: по умолчанию включены; `DSH_GUARDRAILS=off` — аварийный
48
+ выключатель. Политика при необходимости: `~/.dsh/guardrails.json`.
49
+ - **План**: `.dsh/PLAN.md` в проекте; `plan action=approve confirm=true` — только
50
+ после явного согласования.
51
+
52
+ ## 5. Не устанавливай bridge дважды
53
+
54
+ Kit уже содержит `dsh-memory-bridge`. Отдельно репозиторий
55
+ `dsh-memory-bridge` нужен для standalone-режима или резервной копии; если
56
+ поставить и kit, и standalone-плагин, будут конфликты plugin id.
57
+
58
+ ## 6. Обновление с ноутбука
59
+
60
+ ```powershell
61
+ cd dsh-desktop-kit
62
+ git pull origin main
63
+ ```
64
+
65
+ Затем переустанови bundle из той же папки (Plugins → переустановить/Reinstall)
66
+ и перезапусти DSH. Навыки обновятся через `/kit sync`; локальные правки
67
+ сохранятся.
68
+
69
+ ## 7. Быстрая проверка
70
+
71
+ ```text
72
+ /kit status
73
+ repo_map action=stats
74
+ guardrails action=status
75
+ browser_qa action=status
76
+ github_review action=status
77
+ ```
78
+
79
+ Ожидаемо: 16 плагинов, 30 навыков, guardrails ON, Chrome найден, gh
80
+ авторизован (если настроен).
81
+
82
+ ## 8. Если что-то пошло не так
83
+
84
+ - **DSH не видит bundle** — проверь, что папка содержит `package.json`,
85
+ `cordis.patch.yml` и `client.js`; перезапусти профиль.
86
+ - **Навыки не появились** — `/kit sync`; при конфликте — `/kit conflicts`.
87
+ - **Guardrails блокирует запись** — это защищённый путь (`.env`, ключи,
88
+ `.git`); отключи аварийно `DSH_GUARDRAILS=off` и сообщи, что именно
89
+ блокируется.
90
+ - **Browser QA не находит Chrome** — задай `CHROME_PATH` или поставь Edge.
91
+
92
+ ## Версии
93
+
94
+ - kit: `v2.7.1` / package `2.7.1`
95
+ - bridge (внутри kit): `2.3.1`
96
+ - минимум DSH: `0.2.1-rc.5`, проверено на `0.2.2-rc.1`