dsh-desktop-kit 2.2.0 → 2.2.1

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/CHANGELOG.md CHANGED
@@ -1,5 +1,11 @@
1
1
  # Changelog
2
2
 
3
+ ## 2.2.1 — 2026-11-06
4
+
5
+ - В npm-пакет добавлены `install.ps1`, `uninstall.ps1` и `doctor.ps1` — документация ссылается на них, но в 2.2.0 их не было в tarball.
6
+ - Манифест навыков пересобран под 2.2.1; хэши не изменились.
7
+ - Проверка: 25 навыков, тесты, `/kit` на 0.2.2.
8
+
3
9
  ## 2.2.0 — 2026-11-06
4
10
 
5
11
  Безопасные обновления: пакет больше не оставляет старые навыки «навсегда» и не затирает правки пользователя.
package/README.md CHANGED
@@ -4,9 +4,9 @@
4
4
 
5
5
  Набор из **7 плагинов и 25 навыков** для DeepSeek Harness 0.2.x: русский интерфейс, автопилот навыков, токен-лаборатория, студия навыков, память проектов, перенос чатов и резервные копии профиля.
6
6
 
7
- ![DSH Desktop Kit 2.2](https://cdn.jsdelivr.net/npm/dsh-desktop-kit@2.2.0/docs/images/hero.png)
7
+ ![DSH Desktop Kit 2.2](https://cdn.jsdelivr.net/npm/dsh-desktop-kit@2.2.1/docs/images/hero.png)
8
8
 
9
- **v2.2.0** · MIT · проверено на DSH `0.2.1-rc.5` и `0.2.2-rc.1` (Windows 11) · без внешних зависимостей и телеметрии
9
+ **v2.2.1** · MIT · проверено на DSH `0.2.1-rc.5` и `0.2.2-rc.1` (Windows 11) · без внешних зависимостей и телеметрии
10
10
 
11
11
  ---
12
12
 
@@ -60,19 +60,19 @@
60
60
 
61
61
  ### Skills Studio: каталог, стоимость и редактор
62
62
 
63
- ![Каталог навыков](https://cdn.jsdelivr.net/npm/dsh-desktop-kit@2.2.0/plugins/dsh-gkb-ru-ui/screenshots/02-skills-1440-light.png)
63
+ ![Каталог навыков](https://cdn.jsdelivr.net/npm/dsh-desktop-kit@2.2.1/plugins/dsh-gkb-ru-ui/screenshots/02-skills-1440-light.png)
64
64
 
65
- ![Редактор навыка](https://cdn.jsdelivr.net/npm/dsh-desktop-kit@2.2.0/plugins/dsh-gkb-ru-ui/screenshots/03-skills-editor-1440-light.png)
65
+ ![Редактор навыка](https://cdn.jsdelivr.net/npm/dsh-desktop-kit@2.2.1/plugins/dsh-gkb-ru-ui/screenshots/03-skills-editor-1440-light.png)
66
66
 
67
67
  ### Token Lab: куда уходит контекст
68
68
 
69
- ![Токен-лаборатория](https://cdn.jsdelivr.net/npm/dsh-desktop-kit@2.2.0/plugins/dsh-token-lab/screenshots/01-token-lab-1440-light.png)
69
+ ![Токен-лаборатория](https://cdn.jsdelivr.net/npm/dsh-desktop-kit@2.2.1/plugins/dsh-token-lab/screenshots/01-token-lab-1440-light.png)
70
70
 
71
71
  ### Тёмная тема и мобильный
72
72
 
73
- ![Тёмная тема](https://cdn.jsdelivr.net/npm/dsh-desktop-kit@2.2.0/plugins/dsh-gkb-ru-ui/screenshots/04-skills-1440-dark.png)
73
+ ![Тёмная тема](https://cdn.jsdelivr.net/npm/dsh-desktop-kit@2.2.1/plugins/dsh-gkb-ru-ui/screenshots/04-skills-1440-dark.png)
74
74
 
75
- <img src="https://cdn.jsdelivr.net/npm/dsh-desktop-kit@2.2.0/plugins/dsh-gkb-ru-ui/screenshots/05-skills-390-light.png" alt="Каталог навыков на 390 px" width="390">
75
+ <img src="https://cdn.jsdelivr.net/npm/dsh-desktop-kit@2.2.1/plugins/dsh-gkb-ru-ui/screenshots/05-skills-390-light.png" alt="Каталог навыков на 390 px" width="390">
76
76
 
77
77
  ## Окно-напоминание: пиковый тариф
78
78
 
@@ -82,11 +82,11 @@ DeepSeek включает двойной тариф в пиковые часы (
82
82
  - **в окне** — красная карточка: причина, границы окна в местном времени и UTC, живой отсчёт до конца и рекомендация, когда вернуться;
83
83
  - **после окна** — карточка исчезает; состояние всегда доступно через `window.__DSH_PEAK_GUARD__.state()`.
84
84
 
85
- ![Окно-напоминание: светлая тема](https://cdn.jsdelivr.net/npm/dsh-desktop-kit@2.2.0/plugins/dsh-peak-guard/screenshots/03-peak-card-1440-light.png)
85
+ ![Окно-напоминание: светлая тема](https://cdn.jsdelivr.net/npm/dsh-desktop-kit@2.2.1/plugins/dsh-peak-guard/screenshots/03-peak-card-1440-light.png)
86
86
 
87
- ![Окно-напоминание: тёмная тема](https://cdn.jsdelivr.net/npm/dsh-desktop-kit@2.2.0/plugins/dsh-peak-guard/screenshots/04-peak-card-1440-dark.png)
87
+ ![Окно-напоминание: тёмная тема](https://cdn.jsdelivr.net/npm/dsh-desktop-kit@2.2.1/plugins/dsh-peak-guard/screenshots/04-peak-card-1440-dark.png)
88
88
 
89
- <img src="https://cdn.jsdelivr.net/npm/dsh-desktop-kit@2.2.0/plugins/dsh-peak-guard/screenshots/05-peak-card-390-light.png" alt="Окно-напоминание на 390 px" width="390">
89
+ <img src="https://cdn.jsdelivr.net/npm/dsh-desktop-kit@2.2.1/plugins/dsh-peak-guard/screenshots/05-peak-card-390-light.png" alt="Окно-напоминание на 390 px" width="390">
90
90
 
91
91
  Подробности и настройки — [plugins/dsh-peak-guard/README.md](plugins/dsh-peak-guard/README.md).
92
92
 
package/client.js CHANGED
@@ -4155,7 +4155,7 @@ var(--dsw-alias-bg-layer-1,#fff);box-shadow:inset 0 1px 0 color-mix(in srgb,#fff
4155
4155
  if (__kitErrors.length <= 5) console.error("[dsh-desktop-kit] registration failed:", label, message);
4156
4156
  };
4157
4157
  try {
4158
- window.__DSH_DESKTOP_KIT__ = { version: "2.2.0", parts: __partNames, errors: __kitErrors, ready: false };
4158
+ window.__DSH_DESKTOP_KIT__ = { version: "2.2.1", parts: __partNames, errors: __kitErrors, ready: false };
4159
4159
  } catch {}
4160
4160
  const __inject = [];
4161
4161
  for (const __part of __parts) {
@@ -5,7 +5,7 @@
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
9
  | новее `0.2.2` | не проверено | API плагинов в 0.2.x ещё меняется; см. «Если сломалось» |
10
10
 
11
11
  ## Политика обновлений
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.2.1
15
15
  ```
16
16
 
17
17
  Либо локально: `npm i dsh-desktop-kit@2.0.0` — но для GUI всё равно нужен Add plugin/bundle.
@@ -1,6 +1,6 @@
1
1
  # Тест на DeepSeek Harness 0.2.2-rc.1 (win-x64)
2
2
 
3
- Дата: **2026-11-06** · пакет: **dsh-desktop-kit 2.2.0** (первый прогон — 2.1.3, фикс автопилота — 2.1.4) · ОС: Windows 11.
3
+ Дата: **2026-11-06** · пакет: **dsh-desktop-kit 2.2.1** (первый прогон — 2.1.3, фикс автопилота — 2.1.4) · ОС: Windows 11.
4
4
 
5
5
  ## Стенд
6
6
 
package/doctor.ps1 ADDED
@@ -0,0 +1,122 @@
1
+ #requires -Version 5.1
2
+ <#
3
+ .SYNOPSIS
4
+ Report whether dsh-desktop-kit is installed and enabled.
5
+ #>
6
+ param(
7
+ [string]$Profile = "desktop",
8
+ [string]$DshHome = ""
9
+ )
10
+
11
+ $ErrorActionPreference = "Continue"
12
+
13
+ if ([string]::IsNullOrWhiteSpace($DshHome)) {
14
+ if ($env:DSH_HOME) { $DshHome = $env:DSH_HOME } else { $DshHome = Join-Path $env:USERPROFILE ".dsh" }
15
+ }
16
+
17
+ $profileDir = Join-Path $DshHome "profiles\$Profile"
18
+ $profileJson = Join-Path $profileDir "package.json"
19
+
20
+ Write-Host "DSH home: $DshHome"
21
+ Write-Host "Profile: $profileDir"
22
+
23
+ $dsh = $null
24
+ $command = Get-Command dsh -ErrorAction SilentlyContinue
25
+ if ($command) { $dsh = $command.Source }
26
+ if (-not $dsh) {
27
+ $fallback = Join-Path ${env:LOCALAPPDATA} "Programs\DeepSeek Harness\resources\runtime\cli\bin\dsh.cmd"
28
+ if (Test-Path $fallback) { $dsh = $fallback }
29
+ }
30
+ if ($dsh) {
31
+ $version = & $dsh --version 2>$null
32
+ Write-Host "DSH CLI: $version"
33
+ } else {
34
+ Write-Host "DSH CLI: not found" -ForegroundColor Yellow
35
+ }
36
+
37
+ if (-not (Test-Path $profileJson)) {
38
+ Write-Host "Profile manifest not found." -ForegroundColor Red
39
+ exit 1
40
+ }
41
+
42
+ $json = Get-Content -Path $profileJson -Raw | ConvertFrom-Json
43
+ $issues = 0
44
+
45
+ $dependency = $null
46
+ if ($json.dependencies) { $dependency = $json.dependencies.'dsh-desktop-kit' }
47
+ if ($dependency) {
48
+ Write-Host "Package: $dependency" -ForegroundColor Green
49
+ } else {
50
+ Write-Host "Package: not installed" -ForegroundColor Red
51
+ $issues += 1
52
+ }
53
+
54
+ $bundles = @()
55
+ if ($json.dsh -and $json.dsh.profile -and $json.dsh.profile.bundles) { $bundles = @($json.dsh.profile.bundles) }
56
+ if ($bundles -contains "dsh-desktop-kit") {
57
+ Write-Host "Bundle: enabled" -ForegroundColor Green
58
+ } else {
59
+ Write-Host "Bundle: not enabled" -ForegroundColor Red
60
+ $issues += 1
61
+ }
62
+
63
+ $link = Join-Path $profileDir "node_modules\dsh-desktop-kit"
64
+ if (Test-Path $link) {
65
+ Write-Host "Link: $((Get-Item $link).Target)" -ForegroundColor Green
66
+ $kitPackage = Join-Path $link "package.json"
67
+ if (Test-Path $kitPackage) {
68
+ $kit = Get-Content -Path $kitPackage -Raw | ConvertFrom-Json
69
+ Write-Host "Kit: $($kit.version)" -ForegroundColor Green
70
+ }
71
+ } else {
72
+ Write-Host "Link: missing (run install.ps1 again)" -ForegroundColor Red
73
+ $issues += 1
74
+ }
75
+
76
+ $statePath = Join-Path $DshHome "skills\.dsh-kit-skills.json"
77
+ if (Test-Path $statePath) {
78
+ try {
79
+ $state = Get-Content -Path $statePath -Raw | ConvertFrom-Json
80
+ $skillNames = @()
81
+ if ($state.skills) { $skillNames = @($state.skills.PSObject.Properties | ForEach-Object { $_.Name } | Where-Object { $_ }) }
82
+ $conflictNames = @()
83
+ if ($state.conflicts) { $conflictNames = @($state.conflicts.PSObject.Properties | ForEach-Object { $_.Name } | Where-Object { $_ }) }
84
+ Write-Host "Skill sync: $($skillNames.Count) packaged, $($conflictNames.Count) conflicts, updated $($state.updatedAt)" -ForegroundColor Green
85
+ if ($conflictNames.Count -gt 0) {
86
+ Write-Host "Skill conflicts (your edits were kept): $($conflictNames -join ', ')" -ForegroundColor Yellow
87
+ Write-Host " /kit conflicts - list; /kit sync - update without overwriting"
88
+ }
89
+ } catch {
90
+ Write-Host "Skill sync: state file is unreadable ($($_.Exception.Message))" -ForegroundColor Yellow
91
+ }
92
+ } else {
93
+ Write-Host "Skill sync: not written yet (start DSH once or run /kit sync)" -ForegroundColor Yellow
94
+ }
95
+
96
+ $pinned = @()
97
+ foreach ($name in @($json.dependencies.PSObject.Properties.Name)) {
98
+ if ($name -like "@deepseek-ai/*") { $pinned += $name }
99
+ }
100
+ if ($pinned.Count -gt 0) {
101
+ Write-Host "Pinned @deepseek-ai packages (possible 'incompatible plugins' after a DSH update):" -ForegroundColor Yellow
102
+ $pinned | ForEach-Object { Write-Host " $_" }
103
+ } else {
104
+ Write-Host "Pinned packages: none" -ForegroundColor Green
105
+ }
106
+
107
+ $skillsDir = Join-Path $DshHome "skills"
108
+ if (Test-Path $skillsDir) {
109
+ $count = (Get-ChildItem $skillsDir -Directory | Measure-Object).Count
110
+ Write-Host "Skills: $count" -ForegroundColor Green
111
+ } else {
112
+ Write-Host "Skills: folder missing (the kit creates it on first start)" -ForegroundColor Yellow
113
+ }
114
+
115
+ if ($issues -eq 0) {
116
+ Write-Host ""
117
+ Write-Host "Everything is in place." -ForegroundColor Green
118
+ exit 0
119
+ }
120
+ Write-Host ""
121
+ Write-Host "$issues problem(s) found." -ForegroundColor Red
122
+ exit 1
package/install.ps1 ADDED
@@ -0,0 +1,99 @@
1
+ #requires -Version 5.1
2
+ <#
3
+ .SYNOPSIS
4
+ Install dsh-desktop-kit into a DeepSeek Harness profile.
5
+
6
+ .DESCRIPTION
7
+ Copies nothing into the profile outside pnpm's own dependency install:
8
+ the kit is linked from this repository, the bundle is added to
9
+ dsh.profile.bundles, and the DSH launcher is asked to run pnpm.
10
+ Skills are copied by the kit itself on its first start.
11
+
12
+ .PARAMETER Profile
13
+ DSH profile name, default "desktop".
14
+
15
+ .PARAMETER DshHome
16
+ DSH home; defaults to $env:DSH_HOME or %USERPROFILE%\.dsh.
17
+
18
+ .PARAMETER RepoPath
19
+ Repository root; defaults to this script's folder.
20
+ #>
21
+ param(
22
+ [string]$Profile = "desktop",
23
+ [string]$DshHome = "",
24
+ [string]$RepoPath = ""
25
+ )
26
+
27
+ $ErrorActionPreference = "Stop"
28
+
29
+ function Write-Step([string]$Text) {
30
+ Write-Host ""
31
+ Write-Host "==> $Text" -ForegroundColor Cyan
32
+ }
33
+
34
+ if ([string]::IsNullOrWhiteSpace($RepoPath)) { $RepoPath = $PSScriptRoot }
35
+ if (-not (Test-Path (Join-Path $RepoPath "package.json"))) {
36
+ throw "package.json not found in $RepoPath"
37
+ }
38
+ if ([string]::IsNullOrWhiteSpace($DshHome)) {
39
+ if ($env:DSH_HOME) { $DshHome = $env:DSH_HOME } else { $DshHome = Join-Path $env:USERPROFILE ".dsh" }
40
+ }
41
+
42
+ $profileDir = Join-Path $DshHome "profiles\$Profile"
43
+ $profileJson = Join-Path $profileDir "package.json"
44
+
45
+ Write-Step "Checking the DSH environment"
46
+ $dsh = $null
47
+ $command = Get-Command dsh -ErrorAction SilentlyContinue
48
+ if ($command) { $dsh = $command.Source }
49
+ if (-not $dsh) {
50
+ $fallback = Join-Path ${env:LOCALAPPDATA} "Programs\DeepSeek Harness\resources\runtime\cli\bin\dsh.cmd"
51
+ if (Test-Path $fallback) { $dsh = $fallback }
52
+ }
53
+ if (-not $dsh) { throw "dsh CLI not found. Install DeepSeek Harness, run it once, then retry." }
54
+ if (-not (Test-Path $profileJson)) {
55
+ throw "Profile '$Profile' does not exist ($profileDir). Start DSH once, close it, then retry."
56
+ }
57
+
58
+ Write-Host "dsh: $dsh"
59
+ Write-Host "DSH home: $DshHome"
60
+ Write-Host "Profile: $Profile"
61
+ Write-Host "Repository: $RepoPath"
62
+
63
+ $running = Get-Process -Name "DeepSeek Harness" -ErrorAction SilentlyContinue
64
+ if ($running) {
65
+ Write-Host "DSH is running. Close it before installing so the profile is not written twice." -ForegroundColor Yellow
66
+ }
67
+
68
+ Write-Step "Backing up the profile manifest"
69
+ $stamp = Get-Date -Format "yyyyMMdd-HHmmss"
70
+ $backupDir = Join-Path $profileDir ("backup-kit-" + $stamp)
71
+ New-Item -ItemType Directory -Path $backupDir -Force | Out-Null
72
+ Copy-Item $profileJson (Join-Path $backupDir "package.json") -Force
73
+ $patchFile = Join-Path $profileDir "cordis.patch.yml"
74
+ if (Test-Path $patchFile) { Copy-Item $patchFile (Join-Path $backupDir "cordis.patch.yml") -Force }
75
+ Write-Host "Backup: $backupDir"
76
+
77
+ Write-Step "Installing the package through the DSH launcher (pnpm)"
78
+ & $dsh plugin --profile $Profile add $RepoPath
79
+ if ($LASTEXITCODE -ne 0) {
80
+ throw "dsh plugin add exited with code $LASTEXITCODE. See the output above."
81
+ }
82
+
83
+ Write-Step "Enabling the bundle in the profile manifest"
84
+ $json = Get-Content -Path $profileJson -Raw | ConvertFrom-Json
85
+ if ($null -eq $json.dsh) { $json | Add-Member -NotePropertyName dsh -NotePropertyValue ([pscustomobject]@{}) }
86
+ if ($null -eq $json.dsh.profile) { $json.dsh | Add-Member -NotePropertyName profile -NotePropertyValue ([pscustomobject]@{}) }
87
+ $bundles = @()
88
+ if ($json.dsh.profile.bundles) { $bundles = @($json.dsh.profile.bundles) }
89
+ if ($bundles -notcontains "dsh-desktop-kit") { $bundles += "dsh-desktop-kit" }
90
+ $json.dsh.profile | Add-Member -NotePropertyName bundles -NotePropertyValue $bundles -Force
91
+ $jsonText = $json | ConvertTo-Json -Depth 20
92
+ [System.IO.File]::WriteAllText($profileJson, $jsonText, (New-Object System.Text.UTF8Encoding($false)))
93
+
94
+ Write-Step "Done"
95
+ Write-Host "1. Start DeepSeek Harness (restart it if it was running)." -ForegroundColor Green
96
+ Write-Host "2. Settings -> Plugins: 'dsh-desktop-kit' is enabled." -ForegroundColor Green
97
+ Write-Host "3. The kit copies missing skills into $DshHome\skills on first start." -ForegroundColor Green
98
+ Write-Host ""
99
+ Write-Host "Rollback: run uninstall.ps1, or restore package.json from $backupDir." -ForegroundColor DarkGray
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dsh-desktop-kit",
3
- "version": "2.2.0",
3
+ "version": "2.2.1",
4
4
  "description": "DeepSeek Harness desktop kit 2.2: update-safe self-applying skills, live token lab, Skills Studio, self-scanning project memory, Russian UI, peak guard, chat move and profile transfer.",
5
5
  "keywords": [
6
6
  "deepseek-harness",
@@ -34,6 +34,9 @@
34
34
  "README.md",
35
35
  "CHANGELOG.md",
36
36
  "LICENSE",
37
+ "doctor.ps1",
38
+ "install.ps1",
39
+ "uninstall.ps1",
37
40
  "lib/**",
38
41
  "docs/**",
39
42
  "skills-baseline.json",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "schema": 1,
3
- "kitVersion": "2.2.0",
4
- "generatedAt": "2026-11-06T11:56:16.796Z",
3
+ "kitVersion": "2.2.1",
4
+ "generatedAt": "2026-11-06T12:03:12.122Z",
5
5
  "skills": {
6
6
  "code-review-checklist": {
7
7
  "hash": "e665bf72cfbfb77948a3cd6df6ebced38777f9aff543d7b9c80b2ced8cccc662",
@@ -54,6 +54,33 @@
54
54
  "ui-design-system": "19244221171995b758dbad02f2e3602859308370b50cc37d93c6f2a6d44cd6f1",
55
55
  "web-research": "9bf4d8ba6d2a0fc39c241cdd9f5fe54835af28872473aa617941589c526387c8",
56
56
  "wow-design": "81139f32fc759f438a36eb4c0212ed3ea17df9d8075e909580e12bc47a0848dd"
57
+ },
58
+ "2.2.1": {
59
+ "code-review-checklist": "e665bf72cfbfb77948a3cd6df6ebced38777f9aff543d7b9c80b2ced8cccc662",
60
+ "content-writing": "a21b26ff814e0337d03eeb587b200a1dc66e7de91bfea0f32840ddf8884deeee",
61
+ "context-economy": "bc8fa2e15327d21cf9ebd187b0df5f620d6a5b617976fa88910ae7877eb46b75",
62
+ "database-safety": "56f43f6bac270aefce34355e2a932192e4d17725d8faec5f91f476792b28c617",
63
+ "debugging-playbook": "0d70b8102f04d29774e466efd81abb448c84a6537a2ca3438f6931a2d6fe0c3a",
64
+ "design-critique": "bbc6ca34b0b76798d581dcd78e83a59040dfac028b5e10d8e7a9be28225410b8",
65
+ "dev-workflow": "832d36da6d3dc3e6e7d1feb18c38260ed8669c7702dffbd2d7a96fc9bc93d22f",
66
+ "git-and-ci": "0681041edb935da2c124265bbdacd3b6a0a96c7f163323960cff8c8ea67fd2f4",
67
+ "pg-upgrade-verify": "d734178c5dad317fc55842215bbeeba85230cdd8e7b0ea46d74eed92910b8dea",
68
+ "project-deep-dive": "a70355f2a40b42a6ff03e745ba42389549b4efe4f392c98033fe5073f946452e",
69
+ "project-memory-maintenance": "648f175093f6a86e20157156d8731b8e9602badedc79188e77160b18832f4893",
70
+ "release-and-deploy": "e6ed27856b00e8759d31659162290307c16e203d2b5d28fcacb574be17fc795b",
71
+ "requirements-and-planning": "532cbccfb2d0f7eca06343927aba100bd653145ccd9b9173ca50299194631a05",
72
+ "security-review": "8665b2c469de8e83aca670021d5c335fa8c9b93b8dc6bb866759e6062b1abde4",
73
+ "seo": "ed48ebc4c1278f857ff430f9a5ec55f638c2f9ba07cc406185cfb94be18ee80d",
74
+ "service-desk-conventions": "22ae6c29b7debb0154d183bc732795b67557aeaa0ac906d7b038134aea8ba39a",
75
+ "service-desk-db-safety": "672c08d25e0a9262aeb0eec27b6daa2a619fade6ff3269bc2b9dc27e22c83d28",
76
+ "service-desk-release": "1bd0c03f772bf4b79ec4e887f5d0ebd564653bafd3d0d33d70f6c934afdcce47",
77
+ "service-desk-testing": "eaff64154a596590684308cdccb3f55099240589b57c0f506a85e5b38ddf5ac5",
78
+ "service-desk-ui": "a3a0e78ab147f4837e4ca9736f4d87cf77a6638c2db7c5859629df70abdd2c1c",
79
+ "skills-router": "63c2dcdeb07dd4af464a30a8065465bd06b73e4caa8aa874802e5188d4d5a4ae",
80
+ "testing-strategy": "773fdf1e389e59841b7766862f8890a11fba4a2fce42a2022b9c4bfaae8f6ecc",
81
+ "ui-design-system": "19244221171995b758dbad02f2e3602859308370b50cc37d93c6f2a6d44cd6f1",
82
+ "web-research": "9bf4d8ba6d2a0fc39c241cdd9f5fe54835af28872473aa617941589c526387c8",
83
+ "wow-design": "81139f32fc759f438a36eb4c0212ed3ea17df9d8075e909580e12bc47a0848dd"
57
84
  }
58
85
  }
59
86
  }
package/uninstall.ps1 ADDED
@@ -0,0 +1,74 @@
1
+ #requires -Version 5.1
2
+ <#
3
+ .SYNOPSIS
4
+ Remove dsh-desktop-kit from a DSH profile.
5
+
6
+ .PARAMETER RemoveSkills
7
+ Also delete the bundled skill folders from the DSH home.
8
+ #>
9
+ param(
10
+ [string]$Profile = "desktop",
11
+ [string]$DshHome = "",
12
+ [switch]$RemoveSkills
13
+ )
14
+
15
+ $ErrorActionPreference = "Stop"
16
+
17
+ function Write-Step([string]$Text) {
18
+ Write-Host ""
19
+ Write-Host "==> $Text" -ForegroundColor Cyan
20
+ }
21
+
22
+ if ([string]::IsNullOrWhiteSpace($DshHome)) {
23
+ if ($env:DSH_HOME) { $DshHome = $env:DSH_HOME } else { $DshHome = Join-Path $env:USERPROFILE ".dsh" }
24
+ }
25
+
26
+ $profileDir = Join-Path $DshHome "profiles\$Profile"
27
+ $profileJson = Join-Path $profileDir "package.json"
28
+ if (-not (Test-Path $profileJson)) { throw "Profile manifest not found: $profileJson" }
29
+
30
+ $dsh = $null
31
+ $command = Get-Command dsh -ErrorAction SilentlyContinue
32
+ if ($command) { $dsh = $command.Source }
33
+ if (-not $dsh) {
34
+ $fallback = Join-Path ${env:LOCALAPPDATA} "Programs\DeepSeek Harness\resources\runtime\cli\bin\dsh.cmd"
35
+ if (Test-Path $fallback) { $dsh = $fallback }
36
+ }
37
+
38
+ $stamp = Get-Date -Format "yyyyMMdd-HHmmss"
39
+ $backupDir = Join-Path $profileDir ("backup-kit-remove-" + $stamp)
40
+ New-Item -ItemType Directory -Path $backupDir -Force | Out-Null
41
+ Copy-Item $profileJson (Join-Path $backupDir "package.json") -Force
42
+
43
+ Write-Step "Disabling the bundle"
44
+ $json = Get-Content -Path $profileJson -Raw | ConvertFrom-Json
45
+ if ($json.dsh -and $json.dsh.profile -and $json.dsh.profile.bundles) {
46
+ $json.dsh.profile.bundles = @($json.dsh.profile.bundles | Where-Object { $_ -ne "dsh-desktop-kit" })
47
+ }
48
+ [System.IO.File]::WriteAllText($profileJson, ($json | ConvertTo-Json -Depth 20), (New-Object System.Text.UTF8Encoding($false)))
49
+
50
+ Write-Step "Removing the package"
51
+ if ($dsh) {
52
+ & $dsh plugin --profile $Profile remove dsh-desktop-kit
53
+ if ($LASTEXITCODE -ne 0) { Write-Host "pnpm remove exited with $LASTEXITCODE; remove the dependency by hand if it stays." -ForegroundColor Yellow }
54
+ } else {
55
+ Write-Host "dsh CLI not found; edit package.json by hand." -ForegroundColor Yellow
56
+ }
57
+
58
+ if ($RemoveSkills) {
59
+ Write-Step "Removing bundled skills"
60
+ $skillsDir = Join-Path $DshHome "skills"
61
+ $source = Join-Path $PSScriptRoot "skills"
62
+ if ((Test-Path $skillsDir) -and (Test-Path $source)) {
63
+ foreach ($entry in Get-ChildItem $source -Directory) {
64
+ $target = Join-Path $skillsDir $entry.Name
65
+ if (Test-Path $target) {
66
+ Remove-Item $target -Recurse -Force
67
+ Write-Host "removed $($entry.Name)"
68
+ }
69
+ }
70
+ }
71
+ }
72
+
73
+ Write-Step "Done"
74
+ Write-Host "Restart DeepSeek Harness. Backup: $backupDir" -ForegroundColor Green