@aiwayds/dsh-mcp-adapter 0.4.0 → 0.4.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/README.md CHANGED
@@ -54,6 +54,18 @@ Or directly from git:
54
54
  dsh plugin --profile <name> add github:fan56/dsh-mcp-adapter
55
55
  ```
56
56
 
57
+ ## Uninstall
58
+
59
+ ```
60
+ dsh plugin --profile <name> remove @aiwayds/dsh-mcp-adapter
61
+ ```
62
+
63
+ The host reconciles the profile automatically: the `dsh.profile.bundles` entry is spliced out and the package's patch layer drops.
64
+
65
+ One thing deliberately **stays**: the `mcp-adapter:` section in `~/.dsh/settings.yaml` — the stable server ids (`1..99`) and the disabled gates. It is never pruned by design: if you reinstall the plugin, every server keeps the same id it had before.
66
+
67
+ To purge that state too, delete the `mcp-adapter:` section from `settings.yaml` yourself; ids will be re-allocated from scratch on reinstall.
68
+
57
69
  ## Config
58
70
 
59
71
  | key | default | meaning |
package/README.zh.md CHANGED
@@ -46,6 +46,18 @@
46
46
  dsh plugin --profile <name> add @aiwayds/dsh-mcp-adapter
47
47
  ```
48
48
 
49
+ ## 卸载
50
+
51
+ ```
52
+ dsh plugin --profile <name> remove @aiwayds/dsh-mcp-adapter
53
+ ```
54
+
55
+ 宿主会自动完成清理:`dsh.profile.bundles` 里对应的条目被拼接移除,插件的 patch 层随之失效。
56
+
57
+ 有一份状态被刻意**保留**:`~/.dsh/settings.yaml` 里的 `mcp-adapter:` 小节——stable server id(1..99)和 disabled 门闩。它按设计永不回收:重装本插件后,每个 server 仍沿用之前的 id。
58
+
59
+ 连这份状态也想清掉的话,请自行删除 `settings.yaml` 里的 `mcp-adapter:` 小节;重装时 id 会重新分配。
60
+
49
61
  ## 配置
50
62
 
51
63
  | 键 | 默认值 | 含义 |
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aiwayds/dsh-mcp-adapter",
3
- "version": "0.4.0",
3
+ "version": "0.4.1",
4
4
  "description": "dsh plugin: token-efficient prompt-side shim for the official MCP client — folds mcp__* tool schemas out of every assembled prompt and exposes two constant meta-tools (mcp_list / mcp_call) instead",
5
5
  "keywords": [
6
6
  "dsh",
@@ -11,9 +11,11 @@
11
11
  // 5. a real boot under a timeout must load the plugin tree without a
12
12
  // loader error (a healthy boot is silent and survives to the kill
13
13
  // signal; a broken plugin dies within ~1s with the loader error)
14
+ // 6. `dsh plugin --profile smoke remove <pkg>` must reconcile the profile
15
+ // back to stock — the post-removal dump no longer contains the entry
14
16
  //
15
- // Exit 0 = mounted and boots clean. Temp dir is kept and printed on failure,
16
- // removed on success.
17
+ // Exit 0 = mounted, boots clean, and removal restores the stock tree. Temp
18
+ // dir is kept and printed on failure, removed on success.
17
19
  //
18
20
  // dsh-mcp-adapter note: with no MCP servers configured the meta-tools mount
19
21
  // but nothing folds (idle); the smoke proves the plugin LOADS and APPLIES —
@@ -104,5 +106,14 @@ if (boot.signal !== 'SIGKILL' && boot.status !== 0) {
104
106
  fail(`dsh exited early with code ${boot.status} and no loader error — unexpected`, output)
105
107
  }
106
108
 
107
- console.log(`smoke-boot: PASS — ${ownName} composed into the scratch profile tree and booted clean in real dsh (${boot.signal === 'SIGKILL' ? `survived ${bootSeconds}s boot window` : `exited ${boot.status}`})`)
109
+ // Phase 3 — uninstall leg: removal must reconcile the profile tree back to stock.
110
+ const remove = spawnSync('dsh', ['plugin', '--profile', 'smoke', 'remove', ownName], { cwd: profile, encoding: 'utf8', env: dshEnv })
111
+ if (remove.status !== 0 || remove.error) fail('dsh plugin remove failed', `${remove.stdout}\n${remove.stderr}`)
112
+ const dumpAfter = spawnSync('dsh', ['--profile', 'smoke', '--dump-config'], { cwd: profile, encoding: 'utf8', env: dshEnv })
113
+ if (dumpAfter.status !== 0 || dumpAfter.error) fail('dsh --dump-config failed after removal', `${dumpAfter.stdout}\n${dumpAfter.stderr}`)
114
+ if (dumpAfter.stdout.includes('dsh-mcp-adapter')) {
115
+ fail('the composed tree still contains the plugin entry after removal', dumpAfter.stdout)
116
+ }
117
+
118
+ console.log(`smoke-boot: PASS — ${ownName} composed into the scratch profile tree and booted clean in real dsh (${boot.signal === 'SIGKILL' ? `survived ${bootSeconds}s boot window` : `exited ${boot.status}`}); removal restored the stock tree`)
108
119
  rmSync(work, { recursive: true, force: true })