dsh-mcp-panel 0.2.0 → 0.3.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/CHANGELOG.md +95 -0
- package/README.es.md +17 -5
- package/README.hi.md +17 -5
- package/README.md +17 -5
- package/README.pt.md +17 -5
- package/README.zh.md +17 -5
- package/THIRD_PARTY_NOTICES.md +11 -0
- package/docs/optimization-plan-v2.zh.md +325 -0
- package/docs/optimization-plan.zh.md +157 -0
- package/docs/research-notes.zh.md +114 -0
- package/docs/upstream-proposal.md +150 -0
- package/lib/client.js +283 -130
- package/lib/client.js.map +1 -1
- package/lib/index.js +87 -19
- package/lib/typert.host.js +2 -1
- package/lib/types/client/McpPanelTab.d.ts.map +1 -1
- package/lib/types/client/locales.d.ts +12 -0
- package/lib/types/client/locales.d.ts.map +1 -1
- package/lib/types/client/present.d.ts +29 -1
- package/lib/types/client/present.d.ts.map +1 -1
- package/lib/types/client/remote.d.ts +9 -9
- package/lib/types/command.d.ts +6 -0
- package/lib/types/command.d.ts.map +1 -1
- package/lib/types/probe.d.ts.map +1 -1
- package/lib/types/service.d.ts +11 -2
- package/lib/types/service.d.ts.map +1 -1
- package/lib/types/typert.host.d.ts +9 -9
- package/lib/types/wire.d.ts +21 -21
- package/lib/types/wire.d.ts.map +1 -1
- package/package.json +18 -8
- package/src/client/McpPanelTab.tsx +68 -14
- package/src/client/locales.ts +12 -0
- package/src/client/present.ts +49 -1
- package/src/client/styles.ts +32 -0
- package/src/command.ts +39 -4
- package/src/probe.ts +1 -1
- package/src/service.ts +62 -10
- package/src/wire.ts +3 -3
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to this project are documented in this file.
|
|
4
|
+
|
|
5
|
+
## [0.3.0] - 2026-08-15
|
|
6
|
+
|
|
7
|
+
### Added
|
|
8
|
+
|
|
9
|
+
- Panel at a glance: a summary line above the cards (total servers, connected, with errors — counted from the same badge codes the rows show), a server search box that filters cards by name or target, and expand-all / collapse-all buttons (multi-card expansion replaces the single-open accordion).
|
|
10
|
+
- Release pipeline: `scripts/release.mjs` (version bump + changelog stamp + full gate + commit + annotated tag, with revert on failure), `scripts/check-tag-version.mjs` (tag/version tripwire for CI), `scripts/changelog-section.mjs` (prints one version's changelog section), and the tag-triggered `release` workflow — gate again → npm publish with provenance → GitHub Release with the packed tarball attached and notes from the changelog.
|
|
11
|
+
- Package metadata: `homepage`, `bugs`, and `author` fields.
|
|
12
|
+
|
|
13
|
+
### Changed
|
|
14
|
+
|
|
15
|
+
- The dependency line actually lands: typescript 7.0.2 (the TS7 build the tsconfigs were already prepared for), vitest 4.1.10, jsdom 30.0.1 — the full gate suite stays green. The 0.2.1 changelog had claimed these bumps prematurely; that claim is removed from the 0.2.1 entry.
|
|
16
|
+
|
|
17
|
+
### Engineering
|
|
18
|
+
|
|
19
|
+
- 109 tests (up from 105): summary counting, server-filter matching, and their agreement with badge derivation.
|
|
20
|
+
|
|
21
|
+
## [0.2.1] - 2026-08-14
|
|
22
|
+
|
|
23
|
+
### Fixed
|
|
24
|
+
|
|
25
|
+
- CI never passed: `pnpm/action-setup` had no pnpm version to install (no `packageManager` field and no `version` input). Added `packageManager: pnpm@11.7.0`, upgraded the actions (checkout@v7, setup-node@v7, pnpm/action-setup@v6), and pinned the pnpm version explicitly in `compat.yml` (its subdirectory checkout has no workspace-root `package.json` to auto-detect from).
|
|
26
|
+
- Probe targeting for rows nested under loader groups: `rawEndpoint` compared the group-composed `entry.id` (`include:…`) against the snapshot namespace derived from `entry.options.id`, so group-nested rows without an explicit `serverName` could never be probed.
|
|
27
|
+
- Upstream `mcp/status` payloads are validated before storage — a malformed payload (unknown phase, non-numeric counts) previously flowed into the snapshot verbatim and got the whole `mcpPanel/status` response rejected by the strict Typert codec on the client.
|
|
28
|
+
- Reconnect counting is idempotent per observed attempt: re-observing the same payload (HMR remount, event + query seed) no longer double counts; `connected`/`disposed` resets the counter so the next outage counts from attempt 1.
|
|
29
|
+
- `/mcp <server> disable|enable` on a leftover (unconfigured) `mcp__` namespace emitted a malformed `- set: { id: , … }` suggestion — it now refuses with a localized explanation, and listings mark those rows `unconfigured` instead of `disabled`.
|
|
30
|
+
- Job lifecycle states outside the panel vocabulary render as `unknown` (muted) instead of failing the wire codec or throwing at render.
|
|
31
|
+
- Repaired mojibake (corrupted em-dashes/arrows) in `docs/upstream-proposal.md`; its status header now points at the implemented fork branch and the Discussions handoff.
|
|
32
|
+
|
|
33
|
+
### Changed
|
|
34
|
+
|
|
35
|
+
- The tab polls on a short cadence while any probe is running, so probe rows and the disabled probe button settle even when `refreshIntervalMs` is `0`.
|
|
36
|
+
- The tab's error state now shows the underlying failure message instead of a generic notice.
|
|
37
|
+
- Badges no longer double-announce to screen readers (dropped `role="img"`/`aria-label`; the label is visible text).
|
|
38
|
+
- The `/mcp` command hint is served from the localized message dictionaries.
|
|
39
|
+
|
|
40
|
+
### Engineering
|
|
41
|
+
|
|
42
|
+
- tsdown config migrated off the deprecated `external`/`noExternal` options to `deps.neverBundle`/`deps.alwaysBundle`/`deps.onlyBundle`.
|
|
43
|
+
- Removed `baseUrl` from the tsconfigs (dropped in TypeScript 7; `paths` resolves relative to the config file), unblocking the typescript@7 line.
|
|
44
|
+
- `files` now ships `docs/`, `CHANGELOG.md`, `THIRD_PARTY_NOTICES.md`, and all five READMEs (the published tarball was missing `docs/upstream-proposal.md`, which the READMEs link to).
|
|
45
|
+
- 105 tests (up from 96): observation validation and idempotent reconnect counting, nested-row probe targeting, leftover-namespace command behavior, and unknown job-state presentation.
|
|
46
|
+
|
|
47
|
+
## [0.2.0] - 2026-08-14
|
|
48
|
+
|
|
49
|
+
### Added
|
|
50
|
+
|
|
51
|
+
- Panel probe action (`mcpPanel/probe`): one-click connectivity probe of one streamable-http server from the settings tab; results stay panel-only.
|
|
52
|
+
- Passive background probes (`passiveProbeEnabled` / `passiveProbeIntervalMs`) with per-server reachability badges kept separate from connection status.
|
|
53
|
+
- Suggested panel polling (`refreshIntervalMs`); the tab refreshes automatically on the suggested interval.
|
|
54
|
+
- `/mcp` output language (`outputLanguage: 'en' | 'zh' | 'es' | 'pt' | 'hi'`); renderers parameterized on a message dictionary, patch lines stay machine-identical.
|
|
55
|
+
- Probe record cap (`maxProbes`) and upstream event freshness (`observedAt` → "last event Ns ago").
|
|
56
|
+
- `/mcp <server> probe` command action: start a panel-only probe from the command surface.
|
|
57
|
+
- Panel detail row for config-declared policy facts (`configuredNote`: reconnect budget, fail-fast, tool timeout).
|
|
58
|
+
- Probe rows show local start/end wall-clock times; the probe button disables while a probe for that server is running.
|
|
59
|
+
- Panel polish: focus-visible rings, attempt x/y budget row, bounded server-info display in probe details.
|
|
60
|
+
|
|
61
|
+
### Changed
|
|
62
|
+
|
|
63
|
+
- Tool filter input is now per-card: one query per expanded server, no cross-card leakage.
|
|
64
|
+
- Polling pauses while the document is hidden and refreshes on visibility regain.
|
|
65
|
+
- URL fragment credentials (`#token=…`) are redacted like query credentials, in URLs and free text.
|
|
66
|
+
- Leftover (unconfigured) `mcp__` namespaces badge as "unknown" instead of "disabled".
|
|
67
|
+
- The settings tab keeps following the app UI language (en/zh — the harness locale face supports those two codes today); the `/mcp` command language is the separate five-language `outputLanguage` config.
|
|
68
|
+
|
|
69
|
+
### Engineering
|
|
70
|
+
|
|
71
|
+
- `.gitattributes` pins LF line endings so Windows checkouts stop producing CRLF diff noise.
|
|
72
|
+
- Version-consistency tripwire: the probe's MCP `clientInfo.version` must equal the package version.
|
|
73
|
+
- CI restores typecheck: `typecheck:ci` resolves the npm-published `0.1.0-rc.6` type faces (new client-* devDeps, no checkout paths); CI matrix runs Node 22 + 24 on Ubuntu + Windows.
|
|
74
|
+
- Monthly harness-compat job (`.github/workflows/compat.yml`): packs the plugin, installs it into a fresh web profile of a pinned deepseek-harness SHA, and boots it end to end.
|
|
75
|
+
- `scripts/verify-headless.mjs` now replicates the launcher's `prepareProfile` steps (flat module fallback heal, empty root-config write) and locates the installation anchor by walking up (plus `DSH_INSTALL_ANCHOR` override) — it works for plugin repos checked out at any depth under the harness.
|
|
76
|
+
- Upstream `mcp/status` seam: implemented in a deepseek-harness branch (`feat/mcp-client-status-observability-seam`) with tests, docs, and an Agent Note; the panel consumes it unchanged — verified end to end with a real `server-everything` row reporting `status: connected (source: upstream-event)`.
|
|
77
|
+
|
|
78
|
+
## [0.1.0] - 2026-08-14
|
|
79
|
+
|
|
80
|
+
Initial release.
|
|
81
|
+
|
|
82
|
+
### Added
|
|
83
|
+
|
|
84
|
+
- Read-only MCP management panel for the official `@deepseek-ai/dsh-mcp-client`:
|
|
85
|
+
- `/mcp` command (list, per-server detail, `tools`, controlled `disable`/`enable` patch suggestions), model-readable and session-log reconstructable.
|
|
86
|
+
- Settings → Plugins → **MCP** tab (panel-only snapshot over the `mcpPanel` Typert Remote namespace): transport/target, status badges, tool inventory, sanitized errors, reconnect counts, probe results.
|
|
87
|
+
- `mcp_probe` one-shot Streamable HTTP connectivity probe (background job, panel-only results).
|
|
88
|
+
- Display sanitization (URL query credentials, userinfo passwords, header values, bearer tokens, JWTs, env-var credentials).
|
|
89
|
+
- Consumption of the proposed upstream `mcp/status` seam (typed event + query service, feature-detected; honest `unknown`/`derived` fallback).
|
|
90
|
+
- Hand-written `./typert` host manifest + client Remote contribution sharing one canonical descriptor.
|
|
91
|
+
- 58 unit tests; headless verification script; Apache-2.0; five-language READMEs.
|
|
92
|
+
|
|
93
|
+
### Verified
|
|
94
|
+
|
|
95
|
+
- Against a source checkout of deepseek-harness (workspace packages `0.1.0-rc.5`, mainline `7b9644f`): headless `/mcp` end-to-end (13 real tools enumerated), live web profile (gateway RPC, client bundle, boot manifest).
|
package/README.es.md
CHANGED
|
@@ -5,6 +5,9 @@
|
|
|
5
5
|
[English](README.md) · [简体中文](README.zh.md) · [Español](README.es.md) · [Português](README.pt.md) · [हिन्दी](README.hi.md)
|
|
6
6
|
|
|
7
7
|
[](LICENSE)
|
|
8
|
+
[](https://www.npmjs.com/package/dsh-mcp-panel)
|
|
9
|
+
[](https://www.npmjs.com/package/dsh-mcp-panel)
|
|
10
|
+
[](https://github.com/PerryLink/dsh-mcp-panel/actions/workflows/ci.yml)
|
|
8
11
|
[](https://github.com/topics/dsh-plugin)
|
|
9
12
|
[](https://github.com/deepseek-ai/deepseek-harness)
|
|
10
13
|
|
|
@@ -13,14 +16,16 @@
|
|
|
13
16
|
## Compatibilidad
|
|
14
17
|
|
|
15
18
|
- **Runtime**: DeepSeek Harness ≥ `0.1.0-rc.5` (las peerDependencies fijan la línea `0.1.0-rc.6`).
|
|
19
|
+
- **Última versión**: v0.3.0 (2026-08-15) — compuerta completa en verde con la cadena TypeScript 7 / Vitest 4 / jsdom 30, 109 pruebas.
|
|
16
20
|
- **Última verificación**: 2026-08-14 contra un checkout del código fuente de deepseek-harness (paquetes del workspace en `0.1.0-rc.5`, mainline `7b9644f`) — `/mcp` headless de extremo a extremo más un perfil web en vivo; evidencia en [docs/research-notes.zh.md](docs/research-notes.zh.md). Reverificado el mismo día contra mainline `47f9438` con la rama de la costura `mcp/status` (`feat/mcp-client-status-observability-seam`): una fila real de `server-everything` muestra `status: connected (source: upstream-event)` a través del plugin empaquetado, más el flujo de compatibilidad fiel al lanzador; registro en [docs/optimization-plan-v2.zh.md](docs/optimization-plan-v2.zh.md).
|
|
17
21
|
|
|
18
22
|
## Qué obtienes
|
|
19
23
|
|
|
20
24
|
| Superficie | Qué muestra |
|
|
21
25
|
|---|---|
|
|
22
|
-
| **Comando `/mcp`** | transporte, destino, número de herramientas, estado de conexión, último error, contador de reconexiones — legible por el modelo y reconstruible desde el log,
|
|
26
|
+
| **Comando `/mcp`** | transporte, destino, número de herramientas, estado de conexión, último error, contador de reconexiones — legible por el modelo y reconstruible desde el log, cinco idiomas de salida (`outputLanguage: en\|zh\|es\|pt\|hi`) |
|
|
23
27
|
| **Ajustes → Plugins → pestaña MCP** | la misma instantánea en solo lectura, con insignias de estado, listas de herramientas expandibles, errores saneados y resultados de sondas |
|
|
28
|
+
| **De un vistazo** | recuentos de resumen sobre las tarjetas, un buscador de servidores y botones de expandir/contraer todo |
|
|
24
29
|
| **Botón de sonda del panel** | sonda de conectividad de un clic para un servidor streamable-http desde la pestaña; los resultados siguen siendo solo del panel |
|
|
25
30
|
| **Sondas pasivas** | insignias de alcanzabilidad opcionales en segundo plano por servidor, separadas del estado de conexión |
|
|
26
31
|
| **Refresco automático** | el host sugiere un intervalo de refresco (`refreshIntervalMs`); la pestaña consulta y se pausa mientras está oculta |
|
|
@@ -30,7 +35,10 @@
|
|
|
30
35
|
## Inicio rápido
|
|
31
36
|
|
|
32
37
|
```sh
|
|
33
|
-
|
|
38
|
+
# canal git (compila mediante el script prepare del paquete)
|
|
39
|
+
dsh plugin --profile web add github:PerryLink/dsh-mcp-panel#v0.3.0
|
|
40
|
+
# canal npm (tarball publicado, sin aprobación de compilación)
|
|
41
|
+
dsh plugin --profile web add dsh-mcp-panel@0.3.0
|
|
34
42
|
```
|
|
35
43
|
|
|
36
44
|
Reinicia (o deja que la superficie web recargue su `cordis.patch.yml`) y ejecuta:
|
|
@@ -114,13 +122,17 @@ respaldo compartido `$DSH_HOME/profiles/node_modules`) y añade la fila a `cordi
|
|
|
114
122
|
|
|
115
123
|
```sh
|
|
116
124
|
pnpm install
|
|
117
|
-
pnpm run typecheck
|
|
118
|
-
pnpm
|
|
119
|
-
pnpm
|
|
125
|
+
pnpm run typecheck # compuerta local: resuelve las caras de tipo frescas del checkout del harness vía rutas tsconfig
|
|
126
|
+
pnpm run typecheck:ci # compuerta npm: resuelve las caras de tipo publicadas 0.1.0-rc.6 (lo que ejecuta CI)
|
|
127
|
+
pnpm test # 109 pruebas: extremos del saneador, agrupación, tolerancia de agregación, salida del comando (5 idiomas), control de sondas, cableado del cliente, presentador (insignias/resumen/filtro)
|
|
128
|
+
pnpm run build # declaraciones tsc → lib/types; tsdown → lib/index.js + lib/typert.host.js + lib/client.js
|
|
120
129
|
pnpm run verify:self-contained
|
|
130
|
+
pnpm run verify:artifacts
|
|
121
131
|
pnpm pack
|
|
122
132
|
```
|
|
123
133
|
|
|
134
|
+
Publicación: `node scripts/release.mjs <x.y.z>` sube la versión, sella el CHANGELOG, vuelve a ejecutar la compuerta, hace commit y crea el tag; al empujar el tag se publican npm y el GitHub Release automáticamente (ver [CONTRIBUTING.md](CONTRIBUTING.md)).
|
|
135
|
+
|
|
124
136
|
Verificación contra un checkout real del harness:
|
|
125
137
|
`node --import tsx/esm scripts/verify-headless.mjs` arranca el perfil web completo en proceso (puerto efímero) e imprime la salida exacta de `/mcp`, `/mcp <server> tools` y `/mcp <server> disable`.
|
|
126
138
|
|
package/README.hi.md
CHANGED
|
@@ -5,6 +5,9 @@
|
|
|
5
5
|
[English](README.md) · [简体中文](README.zh.md) · [Español](README.es.md) · [Português](README.pt.md) · [हिन्दी](README.hi.md)
|
|
6
6
|
|
|
7
7
|
[](LICENSE)
|
|
8
|
+
[](https://www.npmjs.com/package/dsh-mcp-panel)
|
|
9
|
+
[](https://www.npmjs.com/package/dsh-mcp-panel)
|
|
10
|
+
[](https://github.com/PerryLink/dsh-mcp-panel/actions/workflows/ci.yml)
|
|
8
11
|
[](https://github.com/topics/dsh-plugin)
|
|
9
12
|
[](https://github.com/deepseek-ai/deepseek-harness)
|
|
10
13
|
|
|
@@ -13,14 +16,16 @@
|
|
|
13
16
|
## संगतता
|
|
14
17
|
|
|
15
18
|
- **रनटाइम**: DeepSeek Harness ≥ `0.1.0-rc.5` (peerDependencies `0.1.0-rc.6` पैकेज लाइन पिन करती हैं)।
|
|
19
|
+
- **नवीनतम संस्करण**: v0.3.0 (2026-08-15) — TypeScript 7 / Vitest 4 / jsdom 30 टूलचेन पर पूरा द्वार हरा, 109 टेस्ट।
|
|
16
20
|
- **अंतिम सत्यापन**: 2026-08-14, deepseek-harness के सोर्स checkout के विरुद्ध (workspace पैकेज `0.1.0-rc.5`, mainline `7b9644f`) — headless `/mcp` एंड-टू-एंड + लाइव वेब प्रोफ़ाइल; प्रमाण [docs/research-notes.zh.md](docs/research-notes.zh.md) में। उसी दिन mainline `47f9438` + `mcp/status` सीम ब्रांच (`feat/mcp-client-status-observability-seam`) के विरुद्ध पुनः सत्यापित: असली `server-everything` पंक्ति पैक किए गए प्लगइन से `status: connected (source: upstream-event)` दिखाती है, साथ ही लॉन्चर-समतुल्य संगतता प्रवाह; रिकॉर्ड [docs/optimization-plan-v2.zh.md](docs/optimization-plan-v2.zh.md) में।
|
|
17
21
|
|
|
18
22
|
## आपको क्या मिलता है
|
|
19
23
|
|
|
20
24
|
| सतह | क्या दिखाती है |
|
|
21
25
|
|---|---|
|
|
22
|
-
| **`/mcp` कमांड** | ट्रांसपोर्ट, टार्गेट, टूल काउंट, कनेक्शन स्टेटस, अंतिम एरर, रीकनेक्ट काउंट — मॉडल-रीडेबल और लॉग से रीकंस्ट्रक्टेबल,
|
|
26
|
+
| **`/mcp` कमांड** | ट्रांसपोर्ट, टार्गेट, टूल काउंट, कनेक्शन स्टेटस, अंतिम एरर, रीकनेक्ट काउंट — मॉडल-रीडेबल और लॉग से रीकंस्ट्रक्टेबल, पाँच आउटपुट भाषाएँ (`outputLanguage: en\|zh\|es\|pt\|hi`) |
|
|
23
27
|
| **सेटिंग्स → प्लगइन्स → MCP टैब** | वही स्नैपशॉट रीड-ओनली: स्टेटस बैज, विस्तार योग्य टूल सूचियाँ, सैनिटाइज़्ड एरर, प्रोब परिणाम |
|
|
28
|
+
| **एक नज़र में** | कार्ड के ऊपर सारांश गिनती, सर्वर खोज बॉक्स, और सभी विस्तार/संकुचन बटन |
|
|
24
29
|
| **पैनल प्रोब बटन** | टैब से एक streamable-http सर्वर की एक-क्लिक कनेक्टिविटी प्रोब; परिणाम केवल पैनल में रहते हैं |
|
|
25
30
|
| **पैसिव प्रोब** | प्रति सर्वर वैकल्पिक बैकग्राउंड रीचेबिलिटी बैज, कनेक्शन स्टेटस से अलग |
|
|
26
31
|
| **ऑटो रिफ्रेश** | होस्ट एक रिफ्रेश अंतराल सुझाता है (`refreshIntervalMs`); टैब पोल करता है और छिपा होने पर रुक जाता है |
|
|
@@ -30,7 +35,10 @@
|
|
|
30
35
|
## त्वरित शुरुआत
|
|
31
36
|
|
|
32
37
|
```sh
|
|
33
|
-
|
|
38
|
+
# git चैनल (पैकेज के prepare स्क्रिप्ट से बिल्ड होता है)
|
|
39
|
+
dsh plugin --profile web add github:PerryLink/dsh-mcp-panel#v0.3.0
|
|
40
|
+
# npm चैनल (प्रकाशित tarball, बिल्ड अनुमोदन की आवश्यकता नहीं)
|
|
41
|
+
dsh plugin --profile web add dsh-mcp-panel@0.3.0
|
|
34
42
|
```
|
|
35
43
|
|
|
36
44
|
फिर रीस्टार्ट करें (या वेब सतह को अपनी `cordis.patch.yml` हॉट-रीलोड करने दें) और चलाएँ:
|
|
@@ -114,13 +122,17 @@ MCP servers (1):
|
|
|
114
122
|
|
|
115
123
|
```sh
|
|
116
124
|
pnpm install
|
|
117
|
-
pnpm run typecheck
|
|
118
|
-
pnpm
|
|
119
|
-
pnpm
|
|
125
|
+
pnpm run typecheck # स्थानीय द्वार: tsconfig पथों से harness checkout के ताज़ा टाइप फेस
|
|
126
|
+
pnpm run typecheck:ci # npm द्वार: प्रकाशित 0.1.0-rc.6 टाइप फेस (जो CI चलाता है)
|
|
127
|
+
pnpm test # 109 टेस्ट: सैनिटाइज़र चरम मामले, समूहन, एग्रीगेशन सहनशीलता, कमांड आउटपुट (5 भाषाएँ), प्रोब गेटिंग, क्लाइंट वायरिंग, प्रेज़ेंटर (बैज/सारांश/फ़िल्टर)
|
|
128
|
+
pnpm run build # tsc डिक्लेरेशन → lib/types; tsdown → lib/index.js + lib/typert.host.js + lib/client.js
|
|
120
129
|
pnpm run verify:self-contained
|
|
130
|
+
pnpm run verify:artifacts
|
|
121
131
|
pnpm pack
|
|
122
132
|
```
|
|
123
133
|
|
|
134
|
+
रिलीज़: `node scripts/release.mjs <x.y.z>` संस्करण बढ़ाता है, CHANGELOG पर मुहर लगाता है, द्वार फिर चलाता है, कमिट और टैग करता है; टैग पुश करने पर npm और GitHub Release अपने आप प्रकाशित होते हैं (देखें [CONTRIBUTING.md](CONTRIBUTING.md))।
|
|
135
|
+
|
|
124
136
|
असली harness checkout के विरुद्ध सत्यापन:
|
|
125
137
|
`node --import tsx/esm scripts/verify-headless.mjs` पूरे वेब प्रोफ़ाइल को प्रोसेस में बूट करता है (क्षणिक पोर्ट) और `/mcp`, `/mcp <server> tools`, `/mcp <server> disable` का सटीक आउटपुट छापता है।
|
|
126
138
|
|
package/README.md
CHANGED
|
@@ -5,6 +5,9 @@
|
|
|
5
5
|
[English](README.md) · [简体中文](README.zh.md) · [Español](README.es.md) · [Português](README.pt.md) · [हिन्दी](README.hi.md)
|
|
6
6
|
|
|
7
7
|
[](LICENSE)
|
|
8
|
+
[](https://www.npmjs.com/package/dsh-mcp-panel)
|
|
9
|
+
[](https://www.npmjs.com/package/dsh-mcp-panel)
|
|
10
|
+
[](https://github.com/PerryLink/dsh-mcp-panel/actions/workflows/ci.yml)
|
|
8
11
|
[](https://github.com/topics/dsh-plugin)
|
|
9
12
|
[](https://github.com/deepseek-ai/deepseek-harness)
|
|
10
13
|
|
|
@@ -13,14 +16,16 @@
|
|
|
13
16
|
## Compatibility
|
|
14
17
|
|
|
15
18
|
- **Runtime**: DeepSeek Harness ≥ `0.1.0-rc.5` (peer dependencies pin the `0.1.0-rc.6` package line).
|
|
19
|
+
- **Latest release**: v0.3.0 (2026-08-15) — full gate green on the TypeScript 7 / Vitest 4 / jsdom 30 toolchain, 109 tests.
|
|
16
20
|
- **Last verified**: 2026-08-14 against a source checkout of deepseek-harness (workspace packages at `0.1.0-rc.5`, mainline `7b9644f`) — headless `/mcp` end-to-end plus a live web profile; evidence in [docs/research-notes.zh.md](docs/research-notes.zh.md). Re-verified the same day against mainline `47f9438` with the `mcp/status` seam branch (`feat/mcp-client-status-observability-seam`): a real `server-everything` row renders `status: connected (source: upstream-event)` through the packed plugin, plus the launcher-faithful compat flow; record in [docs/optimization-plan-v2.zh.md](docs/optimization-plan-v2.zh.md).
|
|
17
21
|
|
|
18
22
|
## What you get
|
|
19
23
|
|
|
20
24
|
| Surface | What it shows |
|
|
21
25
|
|---|---|
|
|
22
|
-
| **`/mcp` command** | transport, target, tool count, connection status, last error, reconnect count — model-readable, session-log reconstructable,
|
|
26
|
+
| **`/mcp` command** | transport, target, tool count, connection status, last error, reconnect count — model-readable, session-log reconstructable, five output languages (`outputLanguage: en\|zh\|es\|pt\|hi`) |
|
|
23
27
|
| **Settings → Plugins → MCP tab** | the same snapshot read-only, with status badges, expandable tool lists, sanitized errors, probe results |
|
|
28
|
+
| **At a glance** | summary counts above the cards, a server search box, and expand-all / collapse-all buttons |
|
|
24
29
|
| **Panel probe button** | one-click connectivity probe of one streamable-http server from the tab; results stay panel-only |
|
|
25
30
|
| **Passive probes** | optional background reachability badges per server, kept separate from connection status |
|
|
26
31
|
| **Auto refresh** | the host suggests a refresh interval (`refreshIntervalMs`); the tab polls and pauses while hidden |
|
|
@@ -30,7 +35,10 @@
|
|
|
30
35
|
## Quick start
|
|
31
36
|
|
|
32
37
|
```sh
|
|
33
|
-
|
|
38
|
+
# git channel (builds via the package's prepare script)
|
|
39
|
+
dsh plugin --profile web add github:PerryLink/dsh-mcp-panel#v0.3.0
|
|
40
|
+
# npm channel (published tarball, no build approval needed)
|
|
41
|
+
dsh plugin --profile web add dsh-mcp-panel@0.3.0
|
|
34
42
|
```
|
|
35
43
|
|
|
36
44
|
Then restart (or let the web surface hot-reload its `cordis.patch.yml`) and:
|
|
@@ -114,13 +122,17 @@ Found a security issue? Open a GitHub issue **without** pasting secrets, keys, o
|
|
|
114
122
|
|
|
115
123
|
```sh
|
|
116
124
|
pnpm install
|
|
117
|
-
pnpm run typecheck
|
|
118
|
-
pnpm
|
|
119
|
-
pnpm
|
|
125
|
+
pnpm run typecheck # local gate: resolves the harness checkout's fresh type faces via tsconfig paths
|
|
126
|
+
pnpm run typecheck:ci # npm gate: resolves the published 0.1.0-rc.6 type faces (what CI runs)
|
|
127
|
+
pnpm test # 109 tests: sanitizer extremes, grouping, aggregation tolerance, command output (5 languages), probe gating, client wiring, presenter (badges, summary, filter)
|
|
128
|
+
pnpm run build # tsc declarations → lib/types; tsdown → lib/index.js + lib/typert.host.js + lib/client.js
|
|
120
129
|
pnpm run verify:self-contained
|
|
130
|
+
pnpm run verify:artifacts
|
|
121
131
|
pnpm pack
|
|
122
132
|
```
|
|
123
133
|
|
|
134
|
+
Release: `node scripts/release.mjs <x.y.z>` bumps the version, stamps the changelog, re-runs the gate, commits and tags; pushing the tag publishes npm + the GitHub Release automatically (see [CONTRIBUTING.md](CONTRIBUTING.md)).
|
|
135
|
+
|
|
124
136
|
Verification against a real harness checkout:
|
|
125
137
|
`node --import tsx/esm scripts/verify-headless.mjs` boots the full web profile in process (ephemeral port) and prints the exact `/mcp`, `/mcp <server> tools`, and `/mcp <server> disable` output.
|
|
126
138
|
|
package/README.pt.md
CHANGED
|
@@ -5,6 +5,9 @@
|
|
|
5
5
|
[English](README.md) · [简体中文](README.zh.md) · [Español](README.es.md) · [Português](README.pt.md) · [हिन्दी](README.hi.md)
|
|
6
6
|
|
|
7
7
|
[](LICENSE)
|
|
8
|
+
[](https://www.npmjs.com/package/dsh-mcp-panel)
|
|
9
|
+
[](https://www.npmjs.com/package/dsh-mcp-panel)
|
|
10
|
+
[](https://github.com/PerryLink/dsh-mcp-panel/actions/workflows/ci.yml)
|
|
8
11
|
[](https://github.com/topics/dsh-plugin)
|
|
9
12
|
[](https://github.com/deepseek-ai/deepseek-harness)
|
|
10
13
|
|
|
@@ -13,14 +16,16 @@
|
|
|
13
16
|
## Compatibilidade
|
|
14
17
|
|
|
15
18
|
- **Runtime**: DeepSeek Harness ≥ `0.1.0-rc.5` (as peerDependencies fixam a linha `0.1.0-rc.6`).
|
|
19
|
+
- **Última versão**: v0.3.0 (2026-08-15) — porta completa em verde com a cadeia TypeScript 7 / Vitest 4 / jsdom 30, 109 testes.
|
|
16
20
|
- **Última verificação**: 2026-08-14 contra um checkout do código-fonte do deepseek-harness (pacotes do workspace em `0.1.0-rc.5`, mainline `7b9644f`) — `/mcp` headless de ponta a ponta mais um perfil web ao vivo; evidências em [docs/research-notes.zh.md](docs/research-notes.zh.md). Reverificado no mesmo dia contra mainline `47f9438` com o ramo da costura `mcp/status` (`feat/mcp-client-status-observability-seam`): uma linha real de `server-everything` mostra `status: connected (source: upstream-event)` através do plugin empacotado, além do fluxo de compatibilidade fiel ao lançador; registro em [docs/optimization-plan-v2.zh.md](docs/optimization-plan-v2.zh.md).
|
|
17
21
|
|
|
18
22
|
## O que você ganha
|
|
19
23
|
|
|
20
24
|
| Superfície | O que mostra |
|
|
21
25
|
|---|---|
|
|
22
|
-
| **Comando `/mcp`** | transporte, alvo, contagem de ferramentas, status de conexão, último erro, contador de reconexões — legível pelo modelo e reconstruível pelo log,
|
|
26
|
+
| **Comando `/mcp`** | transporte, alvo, contagem de ferramentas, status de conexão, último erro, contador de reconexões — legível pelo modelo e reconstruível pelo log, cinco idiomas de saída (`outputLanguage: en\|zh\|es\|pt\|hi`) |
|
|
23
27
|
| **Configurações → Plugins → aba MCP** | o mesmo snapshot somente leitura, com selos de status, listas expansíveis de ferramentas, erros sanitizados e resultados de sondas |
|
|
28
|
+
| **De relance** | contagens de resumo acima dos cartões, um campo de busca de servidores e botões de expandir/recolher tudo |
|
|
24
29
|
| **Botão de sonda do painel** | sonda de conectividade em um clique para um servidor streamable-http a partir da aba; os resultados continuam somente do painel |
|
|
25
30
|
| **Sondas passivas** | selos de alcançabilidade opcionais em segundo plano por servidor, separados do status de conexão |
|
|
26
31
|
| **Atualização automática** | o host sugere um intervalo de atualização (`refreshIntervalMs`); a aba consulta e pausa enquanto oculta |
|
|
@@ -30,7 +35,10 @@
|
|
|
30
35
|
## Início rápido
|
|
31
36
|
|
|
32
37
|
```sh
|
|
33
|
-
|
|
38
|
+
# canal git (compila pelo script prepare do pacote)
|
|
39
|
+
dsh plugin --profile web add github:PerryLink/dsh-mcp-panel#v0.3.0
|
|
40
|
+
# canal npm (tarball publicado, sem aprovação de compilação)
|
|
41
|
+
dsh plugin --profile web add dsh-mcp-panel@0.3.0
|
|
34
42
|
```
|
|
35
43
|
|
|
36
44
|
Reinicie (ou deixe a superfície web recarregar seu `cordis.patch.yml`) e execute:
|
|
@@ -114,13 +122,17 @@ Encontrou um problema de segurança? Abra uma issue no GitHub **sem** colar segr
|
|
|
114
122
|
|
|
115
123
|
```sh
|
|
116
124
|
pnpm install
|
|
117
|
-
pnpm run typecheck
|
|
118
|
-
pnpm
|
|
119
|
-
pnpm
|
|
125
|
+
pnpm run typecheck # porta local: resolve as faces de tipo frescas do checkout do harness via caminhos tsconfig
|
|
126
|
+
pnpm run typecheck:ci # porta npm: resolve as faces de tipo publicadas 0.1.0-rc.6 (o que o CI executa)
|
|
127
|
+
pnpm test # 109 testes: extremos do sanitizador, agrupamento, tolerância de agregação, saída do comando (5 idiomas), controle de sondas, fiação do cliente, apresentador (selos/resumo/filtro)
|
|
128
|
+
pnpm run build # declarações tsc → lib/types; tsdown → lib/index.js + lib/typert.host.js + lib/client.js
|
|
120
129
|
pnpm run verify:self-contained
|
|
130
|
+
pnpm run verify:artifacts
|
|
121
131
|
pnpm pack
|
|
122
132
|
```
|
|
123
133
|
|
|
134
|
+
Publicação: `node scripts/release.mjs <x.y.z>` sobe a versão, sela o CHANGELOG, reexecuta a porta, faz commit e cria a tag; ao empurrar a tag, npm e GitHub Release são publicados automaticamente (ver [CONTRIBUTING.md](CONTRIBUTING.md)).
|
|
135
|
+
|
|
124
136
|
Verificação contra um checkout real do harness:
|
|
125
137
|
`node --import tsx/esm scripts/verify-headless.mjs` inicializa o perfil web completo em processo (porta efêmera) e imprime a saída exata de `/mcp`, `/mcp <server> tools` e `/mcp <server> disable`.
|
|
126
138
|
|
package/README.zh.md
CHANGED
|
@@ -5,6 +5,9 @@
|
|
|
5
5
|
[English](README.md) · [简体中文](README.zh.md) · [Español](README.es.md) · [Português](README.pt.md) · [हिन्दी](README.hi.md)
|
|
6
6
|
|
|
7
7
|
[](LICENSE)
|
|
8
|
+
[](https://www.npmjs.com/package/dsh-mcp-panel)
|
|
9
|
+
[](https://www.npmjs.com/package/dsh-mcp-panel)
|
|
10
|
+
[](https://github.com/PerryLink/dsh-mcp-panel/actions/workflows/ci.yml)
|
|
8
11
|
[](https://github.com/topics/dsh-plugin)
|
|
9
12
|
[](https://github.com/deepseek-ai/deepseek-harness)
|
|
10
13
|
|
|
@@ -13,14 +16,16 @@
|
|
|
13
16
|
## 兼容性
|
|
14
17
|
|
|
15
18
|
- **运行时**:DeepSeek Harness ≥ `0.1.0-rc.5`(peerDependencies 固定 `0.1.0-rc.6` 包线)。
|
|
19
|
+
- **最新版本**:v0.3.0(2026-08-15)——TypeScript 7 / Vitest 4 / jsdom 30 工具链下全门禁通过,109 个测试。
|
|
16
20
|
- **最后验证**:2026-08-14,针对 deepseek-harness 源码 checkout(workspace 包 `0.1.0-rc.5`,mainline `7b9644f`)——headless `/mcp` 端到端 + 实时 web profile;证据见 [docs/research-notes.zh.md](docs/research-notes.zh.md)。同日对 mainline `47f9438` + `mcp/status` seam 分支(`feat/mcp-client-status-observability-seam`)复验:真实 `server-everything` 行经打包插件渲染 `status: connected (source: upstream-event)`,并跑通与启动器一致的全流程;记录见 [docs/optimization-plan-v2.zh.md](docs/optimization-plan-v2.zh.md)。
|
|
17
21
|
|
|
18
22
|
## 你能得到什么
|
|
19
23
|
|
|
20
24
|
| 界面 | 展示内容 |
|
|
21
25
|
|---|---|
|
|
22
|
-
| **`/mcp` 命令** | transport
|
|
26
|
+
| **`/mcp` 命令** | transport、目标、工具数、连接状态、最近错误、重连计数——模型可读、可日志重建,支持五种输出语言(`outputLanguage: en\|zh\|es\|pt\|hi`) |
|
|
23
27
|
| **设置 → 插件 → MCP 页签** | 同一快照的只读视图:状态徽标、可展开工具清单、脱敏错误、探测结果 |
|
|
28
|
+
| **一览即得** | 卡片上方的统计汇总、服务器搜索框、全部展开/折叠按钮 |
|
|
24
29
|
| **面板探测按钮** | 从页签对单个 streamable-http 服务器一键发起连通性探测;结果仍仅面板可见 |
|
|
25
30
|
| **被动探测** | 可选的每服务器后台可达性徽标,与连接状态严格分离展示 |
|
|
26
31
|
| **自动刷新** | 宿主建议刷新间隔(`refreshIntervalMs`);页签轮询并在后台隐藏时暂停 |
|
|
@@ -30,7 +35,10 @@
|
|
|
30
35
|
## 快速上手
|
|
31
36
|
|
|
32
37
|
```sh
|
|
33
|
-
|
|
38
|
+
# git 通道(经包的 prepare 脚本构建)
|
|
39
|
+
dsh plugin --profile web add github:PerryLink/dsh-mcp-panel#v0.3.0
|
|
40
|
+
# npm 通道(已发布产物,免构建放行)
|
|
41
|
+
dsh plugin --profile web add dsh-mcp-panel@0.3.0
|
|
34
42
|
```
|
|
35
43
|
|
|
36
44
|
重启(或让 web 面板热重载 `cordis.patch.yml`),然后:
|
|
@@ -114,13 +122,17 @@ MCP servers (1):
|
|
|
114
122
|
|
|
115
123
|
```sh
|
|
116
124
|
pnpm install
|
|
117
|
-
pnpm run typecheck
|
|
118
|
-
pnpm
|
|
119
|
-
pnpm
|
|
125
|
+
pnpm run typecheck # 本地门禁:经 tsconfig paths 解析 harness checkout 的最新类型面
|
|
126
|
+
pnpm run typecheck:ci # npm 门禁:解析已发布的 0.1.0-rc.6 类型面(CI 实际执行)
|
|
127
|
+
pnpm test # 109 个测试:脱敏极端用例、分组、聚合容错、命令输出(五语言)、探测门控、客户端接线、presenter(徽标/汇总/过滤)
|
|
128
|
+
pnpm run build # tsc 声明 → lib/types;tsdown → lib/index.js + lib/typert.host.js + lib/client.js
|
|
120
129
|
pnpm run verify:self-contained
|
|
130
|
+
pnpm run verify:artifacts
|
|
121
131
|
pnpm pack
|
|
122
132
|
```
|
|
123
133
|
|
|
134
|
+
发布:`node scripts/release.mjs <x.y.z>` 会改版本号、盖章 CHANGELOG、重跑门禁并提交打 tag;推送 tag 后自动发布 npm 与 GitHub Release(见 [CONTRIBUTING.md](CONTRIBUTING.md))。
|
|
135
|
+
|
|
124
136
|
对真实 harness checkout 的验证:
|
|
125
137
|
`node --import tsx/esm scripts/verify-headless.mjs` 在进程内启动完整 web profile(临时端口),打印真实的 `/mcp`、`/mcp <server> tools`、`/mcp <server> disable` 输出。
|
|
126
138
|
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
# Third-party notices
|
|
2
|
+
|
|
3
|
+
This distribution bundles the following third-party software:
|
|
4
|
+
|
|
5
|
+
## zod
|
|
6
|
+
|
|
7
|
+
- License: MIT
|
|
8
|
+
- Copyright: Colin McDonnell and contributors
|
|
9
|
+
- Homepage: https://github.com/colinhacks/zod
|
|
10
|
+
- Bundled into `lib/typert.host.js` (host face) and `lib/client.js` (browser face)
|
|
11
|
+
as the runtime behind the hand-written Typert wire schemas. No source is modified.
|