dsh-mcp-panel 0.2.0 → 0.4.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 +113 -0
- package/README.es.md +50 -99
- package/README.hi.md +50 -99
- package/README.md +96 -73
- package/README.pt.md +50 -99
- package/README.zh.md +100 -78
- package/THIRD_PARTY_NOTICES.md +11 -0
- package/cordis.patch.yml +17 -4
- 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 +1630 -175
- package/lib/client.js.map +1 -1
- package/lib/index.js +1269 -56
- package/lib/schemas-BhI7GrM5.js +4091 -0
- package/lib/typert.host.js +195 -4100
- package/lib/types/aggregate.d.ts +18 -1
- package/lib/types/aggregate.d.ts.map +1 -1
- package/lib/types/client/McpPanelTab.d.ts +12 -6
- package/lib/types/client/McpPanelTab.d.ts.map +1 -1
- package/lib/types/client/ServerEditor.d.ts +25 -0
- package/lib/types/client/ServerEditor.d.ts.map +1 -0
- package/lib/types/client/TrialConsole.d.ts +20 -0
- package/lib/types/client/TrialConsole.d.ts.map +1 -0
- package/lib/types/client/index.d.ts +7 -5
- package/lib/types/client/index.d.ts.map +1 -1
- package/lib/types/client/locales.d.ts +169 -1
- package/lib/types/client/locales.d.ts.map +1 -1
- package/lib/types/client/present.d.ts +35 -1
- package/lib/types/client/present.d.ts.map +1 -1
- package/lib/types/client/remote.d.ts +184 -11
- package/lib/types/client/remote.d.ts.map +1 -1
- package/lib/types/command.d.ts +38 -3
- package/lib/types/command.d.ts.map +1 -1
- package/lib/types/config.d.ts +41 -1
- package/lib/types/config.d.ts.map +1 -1
- package/lib/types/diagnostics.d.ts +55 -0
- package/lib/types/diagnostics.d.ts.map +1 -0
- package/lib/types/index.d.ts +32 -15
- package/lib/types/index.d.ts.map +1 -1
- package/lib/types/patch.d.ts +176 -0
- package/lib/types/patch.d.ts.map +1 -0
- package/lib/types/probe.d.ts.map +1 -1
- package/lib/types/service.d.ts +84 -10
- package/lib/types/service.d.ts.map +1 -1
- package/lib/types/trial.d.ts +72 -0
- package/lib/types/trial.d.ts.map +1 -0
- package/lib/types/typert.host.d.ts +173 -9
- package/lib/types/typert.host.d.ts.map +1 -1
- package/lib/types/upstream.d.ts +44 -15
- package/lib/types/upstream.d.ts.map +1 -1
- package/lib/types/wire.d.ts +528 -31
- package/lib/types/wire.d.ts.map +1 -1
- package/lib/types/write.d.ts +30 -0
- package/lib/types/write.d.ts.map +1 -0
- package/package.json +61 -9
- package/src/aggregate.ts +79 -2
- package/src/client/McpPanelTab.tsx +205 -30
- package/src/client/ServerEditor.tsx +290 -0
- package/src/client/TrialConsole.tsx +145 -0
- package/src/client/index.ts +45 -18
- package/src/client/locales.ts +181 -5
- package/src/client/present.ts +58 -1
- package/src/client/remote.ts +17 -2
- package/src/client/styles.ts +233 -0
- package/src/command.ts +173 -17
- package/src/config.ts +88 -2
- package/src/diagnostics.ts +126 -0
- package/src/index.ts +49 -16
- package/src/patch.ts +493 -0
- package/src/probe.ts +1 -1
- package/src/service.ts +316 -19
- package/src/trial.ts +192 -0
- package/src/upstream.ts +45 -15
- package/src/wire.ts +295 -13
- package/src/write.ts +97 -0
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to this project are documented in this file.
|
|
4
|
+
|
|
5
|
+
## [0.4.0] - 2026-08-16
|
|
6
|
+
|
|
7
|
+
### Added
|
|
8
|
+
|
|
9
|
+
- **MCP management console** (the official `@deepseek-ai/dsh-mcp-client` stays the only bridge; this plugin is now its full experience layer):
|
|
10
|
+
- **Server CRUD in the Settings tab**: add/edit/remove servers through a visual form (stdio and streamable-http shapes); every edit renders as an APPEND-ONLY `cordis.patch.yml` operation (`insert` / `set` / `set disabled: true` — the patch vocabulary has no remove, so removal disables the row and keeps it re-enableable). One-click copy, or approval-gated write: the host asks `ctx.approval` when an agent with an open turn exists, otherwise the explicit interactive confirmation is the approval channel; every write first copies the file to a timestamped backup and prunes to the newest `backupCount`.
|
|
11
|
+
- **Tool trial console**: pick a server → registered `mcp__*` tools → JSON arguments → call through the OFFICIAL `ctx.tools.execute()` pipeline (pre-execute permission policy, approval asks, guards, and post-execute all stay in force). Results show the canonical JSON value plus the rendered content, capped by `trialMaxResultChars`; panel-only, never model context. `/mcp <server> call <tool> [json]` exposes the same pipeline to the model with approval routed through the command's agent.
|
|
12
|
+
- **Health diagnostics**: `/mcp <server> health` and per-card suggestion lists derived from sanitized error text (ENOENT → dependency missing, ECONNREFUSED, ETIMEDOUT, 401/403/404, DNS, rate limit, reconnect exhaustion, failed fiber). Child exit codes / stderr tails are honestly labeled "pending upstream support" until the official client exposes them (proposed in the harness `docs/upstream-proposal.md`).
|
|
13
|
+
- **Capabilities board**: Resources/Prompts availability is feature-detected against a proposed upstream catalog seam; today the console clearly labels both "pending upstream support" (the official client bridges tools only).
|
|
14
|
+
- Config: `trialEnabled` / `trialTimeoutMs` / `trialMaxResultChars` / `writeEnabled` (kill switch) / `backupCount`, all with Schemastery schema, fail-loud bounds, and explicit `resolveConfig` re-validation.
|
|
15
|
+
- The panel injects NO prompt sections; the only model-facing text it adds remains the two tool/command descriptions.
|
|
16
|
+
|
|
17
|
+
### Changed
|
|
18
|
+
|
|
19
|
+
- The snapshot now carries sanitized per-server config views (env/header VALUES never leave the host — keys only, with keep-semantics re-merge for edits), derived diagnostics, and the trial/write policy; the upstream seam consumption now also carries the proposed `exitCode`/`stderrTail` fields when present.
|
|
20
|
+
- `/mcp` usage now documents `call` and `health`; the command output stays model-readable and log-reconstructable.
|
|
21
|
+
- Sanitization rules unchanged and extended over the new surfaces: fragment previews never contain `!!js` expressions and never echo secret values.
|
|
22
|
+
|
|
23
|
+
## [0.3.0] - 2026-08-15
|
|
24
|
+
|
|
25
|
+
### Added
|
|
26
|
+
|
|
27
|
+
- 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).
|
|
28
|
+
- 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.
|
|
29
|
+
- Package metadata: `homepage`, `bugs`, and `author` fields.
|
|
30
|
+
|
|
31
|
+
### Changed
|
|
32
|
+
|
|
33
|
+
- 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.
|
|
34
|
+
|
|
35
|
+
### Engineering
|
|
36
|
+
|
|
37
|
+
- 109 tests (up from 105): summary counting, server-filter matching, and their agreement with badge derivation.
|
|
38
|
+
|
|
39
|
+
## [0.2.1] - 2026-08-14
|
|
40
|
+
|
|
41
|
+
### Fixed
|
|
42
|
+
|
|
43
|
+
- 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).
|
|
44
|
+
- 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.
|
|
45
|
+
- 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.
|
|
46
|
+
- 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.
|
|
47
|
+
- `/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`.
|
|
48
|
+
- Job lifecycle states outside the panel vocabulary render as `unknown` (muted) instead of failing the wire codec or throwing at render.
|
|
49
|
+
- 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.
|
|
50
|
+
|
|
51
|
+
### Changed
|
|
52
|
+
|
|
53
|
+
- 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`.
|
|
54
|
+
- The tab's error state now shows the underlying failure message instead of a generic notice.
|
|
55
|
+
- Badges no longer double-announce to screen readers (dropped `role="img"`/`aria-label`; the label is visible text).
|
|
56
|
+
- The `/mcp` command hint is served from the localized message dictionaries.
|
|
57
|
+
|
|
58
|
+
### Engineering
|
|
59
|
+
|
|
60
|
+
- tsdown config migrated off the deprecated `external`/`noExternal` options to `deps.neverBundle`/`deps.alwaysBundle`/`deps.onlyBundle`.
|
|
61
|
+
- Removed `baseUrl` from the tsconfigs (dropped in TypeScript 7; `paths` resolves relative to the config file), unblocking the typescript@7 line.
|
|
62
|
+
- `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).
|
|
63
|
+
- 105 tests (up from 96): observation validation and idempotent reconnect counting, nested-row probe targeting, leftover-namespace command behavior, and unknown job-state presentation.
|
|
64
|
+
|
|
65
|
+
## [0.2.0] - 2026-08-14
|
|
66
|
+
|
|
67
|
+
### Added
|
|
68
|
+
|
|
69
|
+
- Panel probe action (`mcpPanel/probe`): one-click connectivity probe of one streamable-http server from the settings tab; results stay panel-only.
|
|
70
|
+
- Passive background probes (`passiveProbeEnabled` / `passiveProbeIntervalMs`) with per-server reachability badges kept separate from connection status.
|
|
71
|
+
- Suggested panel polling (`refreshIntervalMs`); the tab refreshes automatically on the suggested interval.
|
|
72
|
+
- `/mcp` output language (`outputLanguage: 'en' | 'zh' | 'es' | 'pt' | 'hi'`); renderers parameterized on a message dictionary, patch lines stay machine-identical.
|
|
73
|
+
- Probe record cap (`maxProbes`) and upstream event freshness (`observedAt` → "last event Ns ago").
|
|
74
|
+
- `/mcp <server> probe` command action: start a panel-only probe from the command surface.
|
|
75
|
+
- Panel detail row for config-declared policy facts (`configuredNote`: reconnect budget, fail-fast, tool timeout).
|
|
76
|
+
- Probe rows show local start/end wall-clock times; the probe button disables while a probe for that server is running.
|
|
77
|
+
- Panel polish: focus-visible rings, attempt x/y budget row, bounded server-info display in probe details.
|
|
78
|
+
|
|
79
|
+
### Changed
|
|
80
|
+
|
|
81
|
+
- Tool filter input is now per-card: one query per expanded server, no cross-card leakage.
|
|
82
|
+
- Polling pauses while the document is hidden and refreshes on visibility regain.
|
|
83
|
+
- URL fragment credentials (`#token=…`) are redacted like query credentials, in URLs and free text.
|
|
84
|
+
- Leftover (unconfigured) `mcp__` namespaces badge as "unknown" instead of "disabled".
|
|
85
|
+
- 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.
|
|
86
|
+
|
|
87
|
+
### Engineering
|
|
88
|
+
|
|
89
|
+
- `.gitattributes` pins LF line endings so Windows checkouts stop producing CRLF diff noise.
|
|
90
|
+
- Version-consistency tripwire: the probe's MCP `clientInfo.version` must equal the package version.
|
|
91
|
+
- 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.
|
|
92
|
+
- 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.
|
|
93
|
+
- `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.
|
|
94
|
+
- 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)`.
|
|
95
|
+
|
|
96
|
+
## [0.1.0] - 2026-08-14
|
|
97
|
+
|
|
98
|
+
Initial release.
|
|
99
|
+
|
|
100
|
+
### Added
|
|
101
|
+
|
|
102
|
+
- Read-only MCP management panel for the official `@deepseek-ai/dsh-mcp-client`:
|
|
103
|
+
- `/mcp` command (list, per-server detail, `tools`, controlled `disable`/`enable` patch suggestions), model-readable and session-log reconstructable.
|
|
104
|
+
- 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.
|
|
105
|
+
- `mcp_probe` one-shot Streamable HTTP connectivity probe (background job, panel-only results).
|
|
106
|
+
- Display sanitization (URL query credentials, userinfo passwords, header values, bearer tokens, JWTs, env-var credentials).
|
|
107
|
+
- Consumption of the proposed upstream `mcp/status` seam (typed event + query service, feature-detected; honest `unknown`/`derived` fallback).
|
|
108
|
+
- Hand-written `./typert` host manifest + client Remote contribution sharing one canonical descriptor.
|
|
109
|
+
- 58 unit tests; headless verification script; Apache-2.0; five-language READMEs.
|
|
110
|
+
|
|
111
|
+
### Verified
|
|
112
|
+
|
|
113
|
+
- 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
|
@@ -1,129 +1,80 @@
|
|
|
1
1
|
# dsh-mcp-panel
|
|
2
2
|
|
|
3
|
-
**
|
|
3
|
+
**Consola de gestión MCP para el cliente MCP oficial de DeepSeek Harness: añade, edita, elimina y prueba servidores MCP desde una página de ajustes, con estado honesto, diagnósticos de salud y escrituras de perfil seguras y reversibles.**
|
|
4
4
|
|
|
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://github.com/PerryLink/dsh-mcp-panel/actions/workflows/ci.yml)
|
|
8
10
|
[](https://github.com/topics/dsh-plugin)
|
|
9
|
-
[](https://github.com/deepseek-ai/deepseek-harness)
|
|
10
11
|
|
|
11
|
-
|
|
12
|
+
## Arquitectura: el cliente oficial es el puente; este plugin es la consola
|
|
12
13
|
|
|
13
|
-
|
|
14
|
+
[`@deepseek-ai/dsh-mcp-client`](https://github.com/deepseek-ai/deepseek-harness/tree/master/packages/mcp/mcp-client) es el **único puente**: una instancia por servidor MCP, configurada como fila escrita a mano en `cordis.yml`, que conecta el transporte, sincroniza herramientas y registra los nombres `mcp__<servidor>__<herramienta>`. Este plugin nunca lo sustituye: es la **capa de experiencia** encima:
|
|
14
15
|
|
|
15
|
-
- **Runtime**: DeepSeek Harness ≥ `0.1.0-rc.5` (las peerDependencies fijan la línea `0.1.0-rc.6`).
|
|
16
|
-
- **Ú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
|
-
|
|
18
|
-
## Qué obtienes
|
|
19
|
-
|
|
20
|
-
| Superficie | Qué muestra |
|
|
21
|
-
|---|---|
|
|
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, bilingüe (`outputLanguage: en\|zh`) |
|
|
23
|
-
| **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 |
|
|
24
|
-
| **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
|
-
| **Sondas pasivas** | insignias de alcanzabilidad opcionales en segundo plano por servidor, separadas del estado de conexión |
|
|
26
|
-
| **Refresco automático** | el host sugiere un intervalo de refresco (`refreshIntervalMs`); la pestaña consulta y se pausa mientras está oculta |
|
|
27
|
-
| **`/mcp <server> disable\|enable`** | la línea exacta de `cordis.patch.yml` a aplicar — una *sugerencia*, nunca una escritura |
|
|
28
|
-
| **Herramienta `mcp_probe`** | sonda de conectividad de un solo uso para Streamable HTTP como tarea en segundo plano; los resultados son **solo del panel** |
|
|
29
|
-
|
|
30
|
-
## Inicio rápido
|
|
31
|
-
|
|
32
|
-
```sh
|
|
33
|
-
dsh plugin --profile web add github:PerryLink/dsh-mcp-panel#v0.2.0
|
|
34
|
-
```
|
|
35
|
-
|
|
36
|
-
Reinicia (o deja que la superficie web recargue su `cordis.patch.yml`) y ejecuta:
|
|
37
|
-
|
|
38
|
-
```text
|
|
39
|
-
/mcp
|
|
40
|
-
/mcp everything tools
|
|
41
|
-
/mcp everything disable
|
|
42
|
-
```
|
|
43
|
-
|
|
44
|
-
```text
|
|
45
|
-
MCP servers (1):
|
|
46
|
-
- everything [mcp-everything] stdio node …/server-everything/dist/index.js
|
|
47
|
-
| 13 tools | enabled | status: unknown (source: derived) | reconnects: — | last error: —
|
|
48
16
|
```
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
-
|
|
55
|
-
- id: mcp-panel
|
|
56
|
-
name: dsh-mcp-panel
|
|
57
|
-
config:
|
|
58
|
-
probeEnabled: true
|
|
59
|
-
probeTimeoutMs: 10000
|
|
17
|
+
profile/composición dsh-mcp-client (puente) dsh-mcp-panel (consola)
|
|
18
|
+
- id: mcp-github • transporte • comando /mcp
|
|
19
|
+
name: '@deepseek-ai/…' • sincronización de tools • Ajustes → Plugins → MCP:
|
|
20
|
+
config: { serverName, … } • herramientas mcp__* CRUD, banco de pruebas,
|
|
21
|
+
- id: mcp-panel • seam mcp/status ◄─estado─► diagnósticos, sondas
|
|
22
|
+
name: dsh-mcp-panel
|
|
60
23
|
```
|
|
61
24
|
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
1. Quita la fila `mcp-panel` de `cordis.patch.yml` (la superficie web la recarga en caliente; otras superficies se reinician).
|
|
65
|
-
2. Elimina el paquete del `node_modules` del perfil (o del respaldo compartido `profiles/node_modules`).
|
|
66
|
-
3. Verifica con `dsh web --dump-config` que no quede ninguna fila `mcp-panel`.
|
|
25
|
+
La consola **lee** a través del seam `mcp/status` (evento + servicio `mcpStatus`), el registro de herramientas y el loader; **escribe** solo en la capa de parches del perfil: solo anexa, con aprobación y copia de seguridad automática. Transporte, OAuth y protocolo permanecen intactos.
|
|
67
26
|
|
|
68
|
-
##
|
|
27
|
+
## Consola vs. cordis.yml escrito a mano
|
|
69
28
|
|
|
70
|
-
|
|
71
|
-
- **Sin estado falso.** Los campos de conexión sin datos upstream muestran `unknown` / `—`, con `statusSource: derived`.
|
|
72
|
-
- **Visualización saneada.** Las credenciales en query strings, contraseñas userinfo, valores de cabeceras, tokens bearer y JWT se redactan antes de renderizar; las `headers` configuradas nunca entran en ninguna instantánea.
|
|
73
|
-
- **Resultados solo del panel.** Los detalles de las sondas viven en la pestaña de ajustes, nunca en el contexto del modelo; `/mcp` es la superficie legible por el modelo y es totalmente reconstruible desde el log de sesión.
|
|
74
|
-
- **Sin cambios en mcp-client.** Transporte, OAuth y protocolo quedan intactos — la brecha de observabilidad la cubre la [propuesta upstream](docs/upstream-proposal.md), que este plugin ya consume (evento tipado `mcp/status` + servicio de consulta `mcpStatus`, detectados en tiempo de ejecución).
|
|
75
|
-
|
|
76
|
-
## Configuración
|
|
77
|
-
|
|
78
|
-
| Campo | Por defecto | Descripción |
|
|
29
|
+
| | cordis.yml a mano | Consola dsh-mcp-panel |
|
|
79
30
|
|---|---|---|
|
|
80
|
-
|
|
|
81
|
-
|
|
|
82
|
-
|
|
|
83
|
-
|
|
|
84
|
-
|
|
|
85
|
-
|
|
|
86
|
-
| `passiveProbeIntervalMs` | `60000` | Intervalo de la sonda pasiva en milisegundos |
|
|
31
|
+
| Añadir servidor | Editar YAML | Formulario → fragmento de parche → **copiar** o **escribir** (aprobación + copia de seguridad) |
|
|
32
|
+
| Editar servidor | Editar YAML y reiniciar | Formulario precargado; los secretos sin cambios conservan su valor en el host |
|
|
33
|
+
| Eliminar servidor | Borrar la fila | Operación `set disabled: true` (el vocabulario de parches no tiene remove); re-habilitable |
|
|
34
|
+
| Ver estado | Leer logs | Insignias + reconexiones + último error, en vivo desde `mcp/status` |
|
|
35
|
+
| Probar una herramienta | Pedírselo al modelo | Banco de pruebas → pipeline oficial `ctx.tools.execute()` (permisos y aprobación en vigor) |
|
|
36
|
+
| Diagnosticar | grep de logs | `/mcp <servidor> health` con sugerencias derivadas |
|
|
87
37
|
|
|
88
|
-
##
|
|
38
|
+
## Qué obtienes
|
|
89
39
|
|
|
90
|
-
-
|
|
91
|
-
-
|
|
92
|
-
- **
|
|
93
|
-
-
|
|
40
|
+
- **`/mcp`**: fila por servidor — transporte, destino, número de herramientas, estado de conexión (honesto: `unknown` sin datos upstream), último error, reconexiones; legible por el modelo, reconstruible desde el log de sesión, cinco idiomas de salida.
|
|
41
|
+
- **`/mcp <servidor> tools | health | call <tool> [json] | disable | enable`**: lista de herramientas; diagnósticos derivados (ENOENT → dependencia faltante, ECONNREFUSED, timeouts, 401/403/404, DNS, rate limit, reconexión agotada); llamada de prueba por el **pipeline oficial** (permisos + aprobación en vigor); sugerencias de parche exactas.
|
|
42
|
+
- **Ajustes → Plugins → MCP**: tarjetas de estado con insignias y diagnósticos, **CRUD de servidores** (fragmentos `insert`/`set`/`set disabled`, copia al portapapeles o escritura con aprobación y copia de seguridad `cordis.patch.yml.bak-<ts>`), **banco de pruebas de herramientas** (resultado JSON canónico + contenido renderizado, limitado por `trialMaxResultChars`, solo panel), y el **tablero de capacidades**: Resources y Prompts marcados como *pendientes de soporte upstream* (el cliente oficial hoy solo puentea herramientas).
|
|
43
|
+
- **Sondas**: conectividad Streamable HTTP de un clic o pasiva (resultados solo del panel).
|
|
94
44
|
|
|
95
|
-
##
|
|
45
|
+
## Inicio rápido
|
|
96
46
|
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
47
|
+
```sh
|
|
48
|
+
dsh plugin --profile web add github:PerryLink/dsh-mcp-panel#v0.4.0
|
|
49
|
+
# o el canal npm:
|
|
50
|
+
dsh plugin --profile web add dsh-mcp-panel@0.4.0
|
|
51
|
+
```
|
|
102
52
|
|
|
103
|
-
|
|
53
|
+
Reinicia (o deja que la superficie web recargue `cordis.patch.yml`) y abre **Ajustes → Plugins → MCP**, o ejecuta `/mcp`.
|
|
104
54
|
|
|
105
|
-
|
|
55
|
+
## Honesto por contrato
|
|
106
56
|
|
|
107
|
-
|
|
57
|
+
- **El puente sigue siendo el puente**: sin cambios de transporte/OAuth/protocolo.
|
|
58
|
+
- **Sin estado falso**: `unknown` / `—` con `statusSource: 'derived'` sin datos upstream; códigos de salida y stderr nunca inventados (etiquetados *pendiente de soporte upstream*).
|
|
59
|
+
- **Visualización saneada**: credenciales en URLs, userinfo, valores de headers, tokens bearer y JWTs redactados; los **valores** de env/headers nunca salen del host (el editor ve solo claves).
|
|
60
|
+
- **Escrituras solo-anexar, con aprobación y respaldo**: la consola nunca reescribe `cordis.patch.yml`; con servicio de aprobación y un agente en turno abierto pregunta a `ctx.approval` (solo `allowed-once` procede); si no, la confirmación interactiva es el canal de aprobación. `writeEnabled: false` es el interruptor de seguridad.
|
|
61
|
+
- **Sin inyección de prompts**: la consola no registra secciones de prompt; solo las descripciones de sus dos herramientas/comandos, en el estilo minimalista del cliente oficial.
|
|
108
62
|
|
|
109
|
-
|
|
110
|
-
- **Mitad navegador** — un bundle `dsh.client` (servido en `/plugins/dsh-mcp-panel/client.js`) monta el mismo descriptor mediante `ctx.remote.$mount` y registra una entrada `settings.plugins.tab` de solo lectura (`id: mcp`). El presentador es una función pura; los estilos tienen alcance y usan tokens de tema.
|
|
111
|
-
- **El comando `/mcp`** pasa por el registro de comandos estándar — cada línea aterriza en los eventos de sesión `command/run` + `command/done`.
|
|
63
|
+
## Config
|
|
112
64
|
|
|
113
|
-
|
|
65
|
+
| Clave | Valor | Descripción |
|
|
66
|
+
|---|---|---|
|
|
67
|
+
| `probeEnabled` / `probeTimeoutMs` / `maxProbes` | `true` / `10000` / `10` | herramienta de sonda, tiempo límite, registros mostrados |
|
|
68
|
+
| `refreshIntervalMs` | `0` | refresco sugerido del panel (`0` = bajo demanda) |
|
|
69
|
+
| `outputLanguage` | `en` | idioma de `/mcp`: `en\|zh\|es\|pt\|hi` |
|
|
70
|
+
| `passiveProbeEnabled` / `passiveProbeIntervalMs` | `false` / `60000` | sondas pasivas y su intervalo |
|
|
71
|
+
| `trialEnabled` / `trialTimeoutMs` / `trialMaxResultChars` | `true` / `120000` / `60000` | banco de pruebas y sus límites |
|
|
72
|
+
| `writeEnabled` / `backupCount` | `true` / `5` | interruptor de escrituras; copias de seguridad retenidas |
|
|
114
73
|
|
|
115
|
-
|
|
116
|
-
pnpm install
|
|
117
|
-
pnpm run typecheck
|
|
118
|
-
pnpm test # 96 pruebas: extremos del saneador, agrupación, tolerancia de agregación, salida del comando (5 idiomas), control de sondas, cableado del cliente, presentador
|
|
119
|
-
pnpm run build # declaraciones tsc → lib/types; tsdown → lib/index.js + lib/typert.host.js + lib/client.js
|
|
120
|
-
pnpm run verify:self-contained
|
|
121
|
-
pnpm pack
|
|
122
|
-
```
|
|
74
|
+
## Resources y Prompts
|
|
123
75
|
|
|
124
|
-
|
|
125
|
-
`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`.
|
|
76
|
+
El cliente oficial documenta "Tools are the only bridged MCP capability": ambos están diferidos. La consola detecta un seam de catálogo propuesto y mostrará listas de solo lectura cuando llegue; hasta entonces el tablero marca *pendiente de soporte upstream* (addendum en `docs/upstream-proposal.md` del harness).
|
|
126
77
|
|
|
127
78
|
## Licencia
|
|
128
79
|
|
|
129
|
-
|
|
80
|
+
Apache-2.0 — véase [LICENSE](LICENSE).
|
package/README.hi.md
CHANGED
|
@@ -1,129 +1,80 @@
|
|
|
1
1
|
# dsh-mcp-panel
|
|
2
2
|
|
|
3
|
-
**DeepSeek Harness के आधिकारिक MCP क्लाइंट के लिए
|
|
3
|
+
**DeepSeek Harness के आधिकारिक MCP क्लाइंट के लिए MCP प्रबंधन कंसोल — सेटिंग्स पेज से MCP सर्वर जोड़ें, बदलें, हटाएँ और टूल आज़माएँ; ईमानदार स्थिति, स्वास्थ्य निदान और सुरक्षित, वापस लाने योग्य प्रोफ़ाइल लेखन के साथ।**
|
|
4
4
|
|
|
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://github.com/PerryLink/dsh-mcp-panel/actions/workflows/ci.yml)
|
|
8
10
|
[](https://github.com/topics/dsh-plugin)
|
|
9
|
-
[](https://github.com/deepseek-ai/deepseek-harness)
|
|
10
11
|
|
|
11
|
-
|
|
12
|
+
## आर्किटेक्चर: आधिकारिक क्लाइंट पुल है; यह प्लगइन कंसोल है
|
|
12
13
|
|
|
13
|
-
|
|
14
|
+
[`@deepseek-ai/dsh-mcp-client`](https://github.com/deepseek-ai/deepseek-harness/tree/master/packages/mcp/mcp-client) **एकमात्र पुल** है: प्रति MCP सर्वर एक इंस्टेंस, हाथ से लिखी `cordis.yml` पंक्ति के रूप में, जो ट्रांसपोर्ट जोड़ता है, टूल सिंक करता है और `mcp__<server>__<tool>` नाम पंजीकृत करता है। यह प्लगइन उसे कभी नहीं बदलता: यह उसके ऊपर की **अनुभव परत** है:
|
|
14
15
|
|
|
15
|
-
- **रनटाइम**: DeepSeek Harness ≥ `0.1.0-rc.5` (peerDependencies `0.1.0-rc.6` पैकेज लाइन पिन करती हैं)।
|
|
16
|
-
- **अंतिम सत्यापन**: 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
|
-
|
|
18
|
-
## आपको क्या मिलता है
|
|
19
|
-
|
|
20
|
-
| सतह | क्या दिखाती है |
|
|
21
|
-
|---|---|
|
|
22
|
-
| **`/mcp` कमांड** | ट्रांसपोर्ट, टार्गेट, टूल काउंट, कनेक्शन स्टेटस, अंतिम एरर, रीकनेक्ट काउंट — मॉडल-रीडेबल और लॉग से रीकंस्ट्रक्टेबल, द्विभाषी (`outputLanguage: en\|zh`) |
|
|
23
|
-
| **सेटिंग्स → प्लगइन्स → MCP टैब** | वही स्नैपशॉट रीड-ओनली: स्टेटस बैज, विस्तार योग्य टूल सूचियाँ, सैनिटाइज़्ड एरर, प्रोब परिणाम |
|
|
24
|
-
| **पैनल प्रोब बटन** | टैब से एक streamable-http सर्वर की एक-क्लिक कनेक्टिविटी प्रोब; परिणाम केवल पैनल में रहते हैं |
|
|
25
|
-
| **पैसिव प्रोब** | प्रति सर्वर वैकल्पिक बैकग्राउंड रीचेबिलिटी बैज, कनेक्शन स्टेटस से अलग |
|
|
26
|
-
| **ऑटो रिफ्रेश** | होस्ट एक रिफ्रेश अंतराल सुझाता है (`refreshIntervalMs`); टैब पोल करता है और छिपा होने पर रुक जाता है |
|
|
27
|
-
| **`/mcp <server> disable\|enable`** | लागू करने के लिए सटीक `cordis.patch.yml` लाइन — एक *सुझाव*, कभी लिखावट नहीं |
|
|
28
|
-
| **`mcp_probe` टूल** | Streamable HTTP एंडपॉइंट की एक-बार कनेक्टिविटी प्रोब (बैकग्राउंड जॉब); परिणाम **केवल पैनल में** |
|
|
29
|
-
|
|
30
|
-
## त्वरित शुरुआत
|
|
31
|
-
|
|
32
|
-
```sh
|
|
33
|
-
dsh plugin --profile web add github:PerryLink/dsh-mcp-panel#v0.2.0
|
|
34
16
|
```
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
/
|
|
40
|
-
|
|
41
|
-
/mcp everything disable
|
|
42
|
-
```
|
|
43
|
-
|
|
44
|
-
```text
|
|
45
|
-
MCP servers (1):
|
|
46
|
-
- everything [mcp-everything] stdio node …/server-everything/dist/index.js
|
|
47
|
-
| 13 tools | enabled | status: unknown (source: derived) | reconnects: — | last error: —
|
|
48
|
-
```
|
|
49
|
-
|
|
50
|
-
मैन्युअल इंस्टॉल: `dsh-mcp-panel` को प्रोफ़ाइल के `node_modules` (या साझा
|
|
51
|
-
`$DSH_HOME/profiles/node_modules` फ़ॉलबैक) में रखें और `cordis.patch.yml` में यह लाइन जोड़ें:
|
|
52
|
-
|
|
53
|
-
```yaml
|
|
54
|
-
- insert:
|
|
55
|
-
- id: mcp-panel
|
|
56
|
-
name: dsh-mcp-panel
|
|
57
|
-
config:
|
|
58
|
-
probeEnabled: true
|
|
59
|
-
probeTimeoutMs: 10000
|
|
17
|
+
profile/composition dsh-mcp-client (पुल) dsh-mcp-panel (कंसोल)
|
|
18
|
+
- id: mcp-github • ट्रांसपोर्ट • /mcp कमांड
|
|
19
|
+
name: '@deepseek-ai/…' • टूल सिंक • सेटिंग्स → प्लगइन्स → MCP:
|
|
20
|
+
config: { serverName, … } • mcp__* टूल CRUD, ट्रायल कंसोल,
|
|
21
|
+
- id: mcp-panel • mcp/status seam ◄─स्थिति─► निदान, प्रोब
|
|
22
|
+
name: dsh-mcp-panel
|
|
60
23
|
```
|
|
61
24
|
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
1. `cordis.patch.yml` से `mcp-panel` लाइन हटाएँ (वेब सतह इसे हॉट-रीलोड करती है; अन्य सतहें रीस्टार्ट करें)।
|
|
65
|
-
2. प्रोफ़ाइल के `node_modules` (या साझा `profiles/node_modules` फ़ॉलबैक) से पैकेज हटाएँ।
|
|
66
|
-
3. `dsh web --dump-config` से पुष्टि करें कि कोई `mcp-panel` लाइन नहीं बची।
|
|
67
|
-
|
|
68
|
-
## अनुबंध द्वारा ईमानदारी
|
|
25
|
+
कंसोल `mcp/status` seam (इवेंट + `mcpStatus` सेवा), टूल रजिस्ट्री और loader से **पढ़ता** है; **लिखता** केवल प्रोफ़ाइल की patch परत में — केवल जोड़ता है, अनुमोदन के साथ, स्वचालित बैकअप के साथ। ट्रांसपोर्ट, OAuth और प्रोटोकॉल अछूते रहते हैं।
|
|
69
26
|
|
|
70
|
-
|
|
71
|
-
- **नकली स्टेटस नहीं।** अपस्ट्रीम डेटा के बिना कनेक्शन फ़ील्ड `unknown` / `—` दिखाते हैं, साथ में `statusSource: derived`।
|
|
72
|
-
- **सैनिटाइज़्ड प्रदर्शन।** URL क्वेरी क्रेडेंशियल, userinfo पासवर्ड, हेडर मान, बियरर टोकन और JWT रेंडरिंग से पहले हटा दिए जाते हैं; कॉन्फ़िगर किए गए `headers` किसी भी स्नैपशॉट में नहीं जाते।
|
|
73
|
-
- **केवल-पैनल परिणाम।** प्रोब विवरण सेटिंग्स टैब में रहते हैं, मॉडल संदर्भ में कभी नहीं; `/mcp` आउटपुट मॉडल-रीडेबल सतह है और सेशन लॉग से पूरी तरह रीकंस्ट्रक्टेबल है।
|
|
74
|
-
- **mcp-client में कोई बदलाव नहीं।** ट्रांसपोर्ट, OAuth और प्रोटोकॉल अछूते रहते हैं — ऑब्ज़र्वेबिलिटी का अंतर [upstream proposal](docs/upstream-proposal.md) से ढका जाता है, जिसे यह प्लगइन पहले से उपभोग करता है (टाइप्ड `mcp/status` इवेंट + `mcpStatus` क्वेरी सेवा, रनटाइम फ़ीचर-डिटेक्शन)।
|
|
27
|
+
## कंसोल बनाम हाथ से लिखा cordis.yml
|
|
75
28
|
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
| फ़ील्ड | डिफ़ॉल्ट | विवरण |
|
|
29
|
+
| | हाथ से लिखा cordis.yml | dsh-mcp-panel कंसोल |
|
|
79
30
|
|---|---|---|
|
|
80
|
-
|
|
|
81
|
-
|
|
|
82
|
-
|
|
|
83
|
-
|
|
|
84
|
-
|
|
|
85
|
-
|
|
|
86
|
-
| `passiveProbeIntervalMs` | `60000` | पैसिव प्रोब अंतराल (मिलीसेकंड) |
|
|
31
|
+
| सर्वर जोड़ें | YAML संपादित करें | फ़ॉर्म → patch अंश → **कॉपी** या **लिखें** (अनुमोदन + बैकअप) |
|
|
32
|
+
| सर्वर बदलें | YAML संपादित करें, रीस्टार्ट करें | पहले से भरा फ़ॉर्म; बिना बदले सीक्रेट host पर ही रहते हैं |
|
|
33
|
+
| सर्वर हटाएँ | पंक्ति मिटाएँ | `set disabled: true` ऑपरेशन (patch शब्दावली में remove नहीं है); कभी भी फिर से सक्षम करने योग्य |
|
|
34
|
+
| स्थिति देखें | लॉग पढ़ें | बैज + रीकनेक्ट + अंतिम त्रुटि, `mcp/status` से लाइव |
|
|
35
|
+
| टूल आज़माएँ | मॉडल से कहें | ट्रायल कंसोल → आधिकारिक `ctx.tools.execute()` पाइपलाइन (अनुमतियाँ और अनुमोदन लागू) |
|
|
36
|
+
| निदान करें | लॉग grep करें | `/mcp <server> health` व्युत्पन्न सुझावों के साथ |
|
|
87
37
|
|
|
88
|
-
##
|
|
38
|
+
## क्या मिलता है
|
|
89
39
|
|
|
90
|
-
-
|
|
91
|
-
-
|
|
92
|
-
-
|
|
93
|
-
-
|
|
40
|
+
- **`/mcp`**: प्रति सर्वर एक पंक्ति — ट्रांसपोर्ट, लक्ष्य, टूल गिनती, कनेक्शन स्थिति (ईमानदार: upstream डेटा के बिना `unknown`), अंतिम त्रुटि, रीकनेक्ट; मॉडल-पठनीय, सत्र लॉग से पुनर्निर्माण योग्य, पाँच आउटपुट भाषाएँ।
|
|
41
|
+
- **`/mcp <server> tools | health | call <tool> [json] | disable | enable`**: टूल सूची; व्युत्पन्न निदान (ENOENT → अनुपलब्ध निर्भरता, ECONNREFUSED, टाइमआउट, 401/403/404, DNS, दर सीमा, रीकनेक्ट समाप्त); **आधिकारिक पाइपलाइन** से परीक्षण कॉल (अनुमतियाँ + अनुमोदन लागू); सटीक patch सुझाव।
|
|
42
|
+
- **सेटिंग्स → प्लगइन्स → MCP**: बैज और निदान वाले स्थिति कार्ड, **सर्वर CRUD** (`insert`/`set`/`set disabled` अंश, क्लिपबोर्ड कॉपी या अनुमोदन + `cordis.patch.yml.bak-<ts>` बैकअप के साथ लेखन), **टूल ट्रायल कंसोल** (कैनोनिकल JSON परिणाम + रेंडर सामग्री, `trialMaxResultChars` द्वारा सीमित, केवल पैनल) और **क्षमता बोर्ड**: Resources व Prompts *upstream समर्थन की प्रतीक्षा में* चिह्नित (आज आधिकारिक क्लाइंट केवल टूल जोड़ता है)।
|
|
43
|
+
- **प्रोब**: एक-क्लिक या निष्क्रिय Streamable HTTP कनेक्टिविटी जाँच (परिणाम केवल पैनल)।
|
|
94
44
|
|
|
95
|
-
##
|
|
45
|
+
## त्वरित शुरुआत
|
|
96
46
|
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
47
|
+
```sh
|
|
48
|
+
dsh plugin --profile web add github:PerryLink/dsh-mcp-panel#v0.4.0
|
|
49
|
+
# या npm चैनल:
|
|
50
|
+
dsh plugin --profile web add dsh-mcp-panel@0.4.0
|
|
51
|
+
```
|
|
102
52
|
|
|
103
|
-
|
|
53
|
+
रीस्टार्ट करें (या वेब सतह को `cordis.patch.yml` हॉट-रीलोड करने दें) और **सेटिंग्स → प्लगइन्स → MCP** खोलें, या `/mcp` चलाएँ।
|
|
104
54
|
|
|
105
|
-
|
|
55
|
+
## अनुबंध के अनुसार ईमानदार
|
|
106
56
|
|
|
107
|
-
|
|
57
|
+
- **पुल पुल ही रहता है**: ट्रांसपोर्ट/OAuth/प्रोटोकॉल में कोई बदलाव नहीं।
|
|
58
|
+
- **कोई नकली स्थिति नहीं**: upstream डेटा के बिना `unknown` / `—` और `statusSource: 'derived'`; एग्ज़िट कोड व stderr कभी गढ़े नहीं जाते (*upstream समर्थन की प्रतीक्षा में* चिह्नित)।
|
|
59
|
+
- **सेनेटाइज़्ड प्रदर्शन**: URL क्रेडेंशियल, userinfo, हेडर मान, बियरर टोकन और JWT रिडैक्ट होते हैं; env/headers के **मान** कभी host से बाहर नहीं जाते (संपादक केवल कुंजियाँ देखता है)।
|
|
60
|
+
- **लेखन केवल-जोड़ने वाला, अनुमोदित, बैकअप सहित**: कंसोल कभी `cordis.patch.yml` को दोबारा नहीं लिखता; अनुमोदन सेवा और खुले टर्न वाला एजेंट होने पर `ctx.approval` से पूछता है (केवल `allowed-once` आगे बढ़ता है); अन्यथा इंटरैक्टिव पुष्टि ही अनुमोदन माध्यम है। `writeEnabled: false` कठोर स्विच है।
|
|
61
|
+
- **कोई प्रॉम्प्ट इंजेक्शन नहीं**: कंसोल कोई प्रॉम्प्ट अनुभाग पंजीकृत नहीं करता; केवल उसके दो टूल/कमांड विवरण, आधिकारिक क्लाइंट की न्यूनतम शैली में।
|
|
108
62
|
|
|
109
|
-
|
|
110
|
-
- **ब्राउज़र आधा** — एक `dsh.client` बंडल (`/plugins/dsh-mcp-panel/client.js` पर सर्व किया गया) उसी डिस्क्रिप्टर को `ctx.remote.$mount` से माउंट करता है और रीड-ओनली `settings.plugins.tab` एंट्री (`id: mcp`) पंजीकृत करता है। प्रेज़ेंटर एक शुद्ध फ़ंक्शन है; स्टाइल स्कोप्ड हैं और थीम टोकन का उपयोग करते हैं।
|
|
111
|
-
- **`/mcp` कमांड** मानक कमांड रजिस्ट्री से गुज़रता है — हर पंक्ति `command/run` + `command/done` सेशन इवेंट में दर्ज होती है।
|
|
63
|
+
## कॉन्फ़िगरेशन
|
|
112
64
|
|
|
113
|
-
|
|
65
|
+
| कुंजी | मान | विवरण |
|
|
66
|
+
|---|---|---|
|
|
67
|
+
| `probeEnabled` / `probeTimeoutMs` / `maxProbes` | `true` / `10000` / `10` | प्रोब टूल, समय सीमा, दिखाए गए रिकॉर्ड |
|
|
68
|
+
| `refreshIntervalMs` | `0` | सुझाया गया पैनल रीफ़्रेश (`0` = मांग पर) |
|
|
69
|
+
| `outputLanguage` | `en` | `/mcp` भाषा: `en\|zh\|es\|pt\|hi` |
|
|
70
|
+
| `passiveProbeEnabled` / `passiveProbeIntervalMs` | `false` / `60000` | निष्क्रिय प्रोब और अंतराल |
|
|
71
|
+
| `trialEnabled` / `trialTimeoutMs` / `trialMaxResultChars` | `true` / `120000` / `60000` | ट्रायल कंसोल और उसकी सीमाएँ |
|
|
72
|
+
| `writeEnabled` / `backupCount` | `true` / `5` | लेखन स्विच; रखे गए बैकअप |
|
|
114
73
|
|
|
115
|
-
|
|
116
|
-
pnpm install
|
|
117
|
-
pnpm run typecheck
|
|
118
|
-
pnpm test # 96 टेस्ट: सैनिटाइज़र चरम मामले, समूहन, एग्रीगेशन सहनशीलता, कमांड आउटपुट (5 भाषाएँ), प्रोब गेटिंग, क्लाइंट वायरिंग, प्रेज़ेंटर
|
|
119
|
-
pnpm run build # tsc डिक्लेरेशन → lib/types; tsdown → lib/index.js + lib/typert.host.js + lib/client.js
|
|
120
|
-
pnpm run verify:self-contained
|
|
121
|
-
pnpm pack
|
|
122
|
-
```
|
|
74
|
+
## Resources और Prompts
|
|
123
75
|
|
|
124
|
-
|
|
125
|
-
`node --import tsx/esm scripts/verify-headless.mjs` पूरे वेब प्रोफ़ाइल को प्रोसेस में बूट करता है (क्षणिक पोर्ट) और `/mcp`, `/mcp <server> tools`, `/mcp <server> disable` का सटीक आउटपुट छापता है।
|
|
76
|
+
आधिकारिक क्लाइंट दस्तावेज़ कहता है "Tools are the only bridged MCP capability": दोनों स्थगित हैं। कंसोल प्रस्तावित कैटलॉग seam को फ़ीचर-डिटेक्ट करता है और उसके आते ही रीड-ओनली सूचियाँ दिखाएगा; तब तक क्षमता बोर्ड *upstream समर्थन की प्रतीक्षा में* दर्शाता है (harness के `docs/upstream-proposal.md` में अनुपूरक)।
|
|
126
77
|
|
|
127
78
|
## लाइसेंस
|
|
128
79
|
|
|
129
|
-
|
|
80
|
+
Apache-2.0 — देखें [LICENSE](LICENSE)।
|