dsh-mcp-panel 0.3.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.
Files changed (71) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/README.es.md +48 -109
  3. package/README.hi.md +48 -109
  4. package/README.md +90 -79
  5. package/README.pt.md +48 -109
  6. package/README.zh.md +96 -86
  7. package/cordis.patch.yml +17 -4
  8. package/lib/client.js +1350 -48
  9. package/lib/client.js.map +1 -1
  10. package/lib/index.js +1191 -46
  11. package/lib/schemas-BhI7GrM5.js +4091 -0
  12. package/lib/typert.host.js +193 -4099
  13. package/lib/types/aggregate.d.ts +18 -1
  14. package/lib/types/aggregate.d.ts.map +1 -1
  15. package/lib/types/client/McpPanelTab.d.ts +12 -6
  16. package/lib/types/client/McpPanelTab.d.ts.map +1 -1
  17. package/lib/types/client/ServerEditor.d.ts +25 -0
  18. package/lib/types/client/ServerEditor.d.ts.map +1 -0
  19. package/lib/types/client/TrialConsole.d.ts +20 -0
  20. package/lib/types/client/TrialConsole.d.ts.map +1 -0
  21. package/lib/types/client/index.d.ts +7 -5
  22. package/lib/types/client/index.d.ts.map +1 -1
  23. package/lib/types/client/locales.d.ts +157 -1
  24. package/lib/types/client/locales.d.ts.map +1 -1
  25. package/lib/types/client/present.d.ts +6 -0
  26. package/lib/types/client/present.d.ts.map +1 -1
  27. package/lib/types/client/remote.d.ts +175 -2
  28. package/lib/types/client/remote.d.ts.map +1 -1
  29. package/lib/types/command.d.ts +32 -3
  30. package/lib/types/command.d.ts.map +1 -1
  31. package/lib/types/config.d.ts +41 -1
  32. package/lib/types/config.d.ts.map +1 -1
  33. package/lib/types/diagnostics.d.ts +55 -0
  34. package/lib/types/diagnostics.d.ts.map +1 -0
  35. package/lib/types/index.d.ts +32 -15
  36. package/lib/types/index.d.ts.map +1 -1
  37. package/lib/types/patch.d.ts +176 -0
  38. package/lib/types/patch.d.ts.map +1 -0
  39. package/lib/types/service.d.ts +73 -8
  40. package/lib/types/service.d.ts.map +1 -1
  41. package/lib/types/trial.d.ts +72 -0
  42. package/lib/types/trial.d.ts.map +1 -0
  43. package/lib/types/typert.host.d.ts +164 -0
  44. package/lib/types/typert.host.d.ts.map +1 -1
  45. package/lib/types/upstream.d.ts +44 -15
  46. package/lib/types/upstream.d.ts.map +1 -1
  47. package/lib/types/wire.d.ts +507 -10
  48. package/lib/types/wire.d.ts.map +1 -1
  49. package/lib/types/write.d.ts +30 -0
  50. package/lib/types/write.d.ts.map +1 -0
  51. package/package.json +44 -2
  52. package/src/aggregate.ts +79 -2
  53. package/src/client/McpPanelTab.tsx +138 -17
  54. package/src/client/ServerEditor.tsx +290 -0
  55. package/src/client/TrialConsole.tsx +145 -0
  56. package/src/client/index.ts +45 -18
  57. package/src/client/locales.ts +169 -5
  58. package/src/client/present.ts +9 -0
  59. package/src/client/remote.ts +17 -2
  60. package/src/client/styles.ts +201 -0
  61. package/src/command.ts +139 -18
  62. package/src/config.ts +88 -2
  63. package/src/diagnostics.ts +126 -0
  64. package/src/index.ts +49 -16
  65. package/src/patch.ts +493 -0
  66. package/src/probe.ts +1 -1
  67. package/src/service.ts +254 -9
  68. package/src/trial.ts +192 -0
  69. package/src/upstream.ts +45 -15
  70. package/src/wire.ts +292 -10
  71. package/src/write.ts +97 -0
package/CHANGELOG.md CHANGED
@@ -2,6 +2,24 @@
2
2
 
3
3
  All notable changes to this project are documented in this file.
4
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
+
5
23
  ## [0.3.0] - 2026-08-15
6
24
 
7
25
  ### Added
package/README.es.md CHANGED
@@ -1,141 +1,80 @@
1
1
  # dsh-mcp-panel
2
2
 
3
- **Panel de gestión en tiempo de ejecución, de solo lectura, para el cliente MCP oficial de DeepSeek Harness: consulta el estado, las herramientas, los errores y los contadores de reconexión de cada servidor MCP sin tocar tu configuración.**
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](https://img.shields.io/badge/license-Apache%202.0-blue.svg)](LICENSE)
8
8
  [![npm](https://img.shields.io/npm/v/dsh-mcp-panel)](https://www.npmjs.com/package/dsh-mcp-panel)
9
- [![downloads](https://img.shields.io/npm/dm/dsh-mcp-panel)](https://www.npmjs.com/package/dsh-mcp-panel)
10
9
  [![CI](https://github.com/PerryLink/dsh-mcp-panel/actions/workflows/ci.yml/badge.svg)](https://github.com/PerryLink/dsh-mcp-panel/actions/workflows/ci.yml)
11
10
  [![dsh-plugin](https://img.shields.io/badge/ecosystem-dsh--plugin-8b5cf6)](https://github.com/topics/dsh-plugin)
12
- [![deepseek-harness](https://img.shields.io/badge/runtime-deepseek--harness-4f46e5)](https://github.com/deepseek-ai/deepseek-harness)
13
11
 
14
- > 🔭 **La observabilidad primero.** [`@deepseek-ai/dsh-mcp-client`](https://github.com/deepseek-ai/deepseek-harness/tree/master/packages/mcp/mcp-client) mantiene privado su estado de conexión: solo registra logs. Este plugin muestra todo lo que *sí* puede observar (configuración, registro de herramientas, estado del Loader) y dice **"unknown"** para lo que no puede, en lugar de adivinar. También propone la costura mínima que haría el estado real: consulta la [propuesta upstream](docs/upstream-proposal.md).
12
+ ## Arquitectura: el cliente oficial es el puente; este plugin es la consola
15
13
 
16
- ## Compatibilidad
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:
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.
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).
21
-
22
- ## Qué obtienes
23
-
24
- | Superficie | Qué muestra |
25
- |---|---|
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`) |
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 |
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 |
30
- | **Sondas pasivas** | insignias de alcanzabilidad opcionales en segundo plano por servidor, separadas del estado de conexión |
31
- | **Refresco automático** | el host sugiere un intervalo de refresco (`refreshIntervalMs`); la pestaña consulta y se pausa mientras está oculta |
32
- | **`/mcp <server> disable\|enable`** | la línea exacta de `cordis.patch.yml` a aplicar — una *sugerencia*, nunca una escritura |
33
- | **Herramienta `mcp_probe`** | sonda de conectividad de un solo uso para Streamable HTTP como tarea en segundo plano; los resultados son **solo del panel** |
34
-
35
- ## Inicio rápido
36
-
37
- ```sh
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
42
16
  ```
43
-
44
- Reinicia (o deja que la superficie web recargue su `cordis.patch.yml`) y ejecuta:
45
-
46
- ```text
47
- /mcp
48
- /mcp everything tools
49
- /mcp everything disable
50
- ```
51
-
52
- ```text
53
- MCP servers (1):
54
- - everything [mcp-everything] stdio node …/server-everything/dist/index.js
55
- | 13 tools | enabled | status: unknown (source: derived) | reconnects: — | last error: —
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
56
23
  ```
57
24
 
58
- Instalación manual: coloca `dsh-mcp-panel` en el `node_modules` del perfil (o en el
59
- respaldo compartido `$DSH_HOME/profiles/node_modules`) y añade la fila a `cordis.patch.yml`:
60
-
61
- ```yaml
62
- - insert:
63
- - id: mcp-panel
64
- name: dsh-mcp-panel
65
- config:
66
- probeEnabled: true
67
- probeTimeoutMs: 10000
68
- ```
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.
69
26
 
70
- ### Desinstalación
27
+ ## Consola vs. cordis.yml escrito a mano
71
28
 
72
- 1. Quita la fila `mcp-panel` de `cordis.patch.yml` (la superficie web la recarga en caliente; otras superficies se reinician).
73
- 2. Elimina el paquete del `node_modules` del perfil (o del respaldo compartido `profiles/node_modules`).
74
- 3. Verifica con `dsh web --dump-config` que no quede ninguna fila `mcp-panel`.
75
-
76
- ## Honestidad por contrato
77
-
78
- - **Solo lectura.** Nunca se escribe ningún archivo de configuración. `disable`/`enable` imprime una sugerencia que tú aplicas.
79
- - **Sin estado falso.** Los campos de conexión sin datos upstream muestran `unknown` / `—`, con `statusSource: derived`.
80
- - **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.
81
- - **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.
82
- - **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).
83
-
84
- ## Configuración
85
-
86
- | Campo | Por defecto | Descripción |
29
+ | | cordis.yml a mano | Consola dsh-mcp-panel |
87
30
  |---|---|---|
88
- | `probeEnabled` | `true` | Registra la herramienta `mcp_probe` (requiere `ctx.jobs` en la composición) |
89
- | `probeTimeoutMs` | `10000` | Tiempo límite por sonda |
90
- | `maxProbes` | `10` | Límite de registros de sonda mostrados en el panel |
91
- | `refreshIntervalMs` | `0` | Intervalo de refresco sugerido para el panel en ms (`0` = solo bajo demanda) |
92
- | `outputLanguage` | `en` | Idioma de salida del comando `/mcp` (`en` \| `zh` \| `es` \| `pt` \| `hi`) |
93
- | `passiveProbeEnabled` | `false` | Sondear periódicamente servidores streamable-http en segundo plano |
94
- | `passiveProbeIntervalMs` | `60000` | Intervalo de la sonda pasiva en milisegundos |
95
-
96
- ## Permisos y datos
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 |
97
37
 
98
- - **Lee**: filas del Loader, el registro de herramientas (nombres `mcp__<server>__`) y, cuando upstream lo implemente, eventos `mcp/status`.
99
- - **Escribe**: nada. Ningún archivo de configuración se modifica jamás.
100
- - **Red**: solo la sonda de un solo uso `mcp_probe` (y la sonda pasiva opcional) envía una petición MCP `initialize` a los endpoints que tú configuraste; las cabeceras configuradas se usan para la petición y nunca se muestran ni registran.
101
- - Sin telemetría, sin servicios externos, sin trabajo en segundo plano salvo los temporizadores de sonda opcionales.
38
+ ## Qué obtienes
102
39
 
103
- ## Solución de problemas
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).
104
44
 
105
- - ¿La fila no aparece? Ejecuta `dsh web --dump-config` y comprueba que el insert `mcp-panel` se aplicó con un id único.
106
- - El panel muestra `status: unknown (source: derived)` — esperado hasta que la costura upstream aterrice; consulta [docs/upstream-proposal.md](docs/upstream-proposal.md).
107
- - ¿El panel se ve desactualizado? Establece `refreshIntervalMs` a un valor positivo (p. ej. `5000`) en la fila de configuración `mcp-panel` para consultar automáticamente.
108
- - El log de arranque muestra un fiber `mcp-panel` FAILED — el paquete debe resolverse desde el perfil (el `name: dsh-mcp-panel` desnudo se resuelve vía el `node_modules` del perfil o el respaldo compartido).
109
- - Rollback: quita la fila (ver Desinstalación).
45
+ ## Inicio rápido
110
46
 
111
- ## Seguridad
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
+ ```
112
52
 
113
- ¿Encontraste un problema de seguridad? Abre un issue de GitHub **sin** pegar secretos, claves o tokens — redáctalo todo primero. Este plugin mantiene las credenciales de tus servidores MCP configurados solo en memoria para las peticiones de sonda; nunca llegan a logs ni instantáneas.
53
+ Reinicia (o deja que la superficie web recargue `cordis.patch.yml`) y abre **Ajustes Plugins MCP**, o ejecuta `/mcp`.
114
54
 
115
- ## Cómo funciona
55
+ ## Honesto por contrato
116
56
 
117
- - **Mitad host** un servicio Typert Remote `mcpPanel` ensambla la instantánea desde tres fuentes de solo lectura: filas del Loader (entradas `@deepseek-ai/dsh-mcp-client`), `ctx.tools.schemas()` agrupadas por el espacio de nombres `mcp__<server>__`, y observaciones upstream `mcp/status`. El manifiesto `./typert` escrito a mano registra `mcpPanel/status` en el gateway; `zod` se incluye en el bundle, de modo que la mitad host es autocontenida.
118
- - **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.
119
- - **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`.
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.
120
62
 
121
- ## Desarrollo
63
+ ## Config
122
64
 
123
- ```sh
124
- pnpm install
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
129
- pnpm run verify:self-contained
130
- pnpm run verify:artifacts
131
- pnpm pack
132
- ```
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 |
133
73
 
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)).
74
+ ## Resources y Prompts
135
75
 
136
- Verificación contra un checkout real del harness:
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`.
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).
138
77
 
139
78
  ## Licencia
140
79
 
141
- [Apache License 2.0](LICENSE) © 2026 colaboradores de dsh-mcp-panel
80
+ Apache-2.0 — véase [LICENSE](LICENSE).
package/README.hi.md CHANGED
@@ -1,141 +1,80 @@
1
1
  # dsh-mcp-panel
2
2
 
3
- **DeepSeek Harness के आधिकारिक MCP क्लाइंट के लिए रीड-ओनली रनटाइम प्रबंधन पैनलहर 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](https://img.shields.io/badge/license-Apache%202.0-blue.svg)](LICENSE)
8
8
  [![npm](https://img.shields.io/npm/v/dsh-mcp-panel)](https://www.npmjs.com/package/dsh-mcp-panel)
9
- [![downloads](https://img.shields.io/npm/dm/dsh-mcp-panel)](https://www.npmjs.com/package/dsh-mcp-panel)
10
9
  [![CI](https://github.com/PerryLink/dsh-mcp-panel/actions/workflows/ci.yml/badge.svg)](https://github.com/PerryLink/dsh-mcp-panel/actions/workflows/ci.yml)
11
10
  [![dsh-plugin](https://img.shields.io/badge/ecosystem-dsh--plugin-8b5cf6)](https://github.com/topics/dsh-plugin)
12
- [![deepseek-harness](https://img.shields.io/badge/runtime-deepseek--harness-4f46e5)](https://github.com/deepseek-ai/deepseek-harness)
13
11
 
14
- > 🔭 **ऑब्ज़र्वेबिलिटी सबसे पहले।** [`@deepseek-ai/dsh-mcp-client`](https://github.com/deepseek-ai/deepseek-harness/tree/master/packages/mcp/mcp-client) अपना कनेक्शन स्टेट निजी रखता है — सिर्फ़ लॉग। यह प्लगइन वह सब दिखाता है जो *देखा जा सकता है* (कॉन्फ़िगरेशन, टूल रजिस्ट्री, Loader स्टेट) और जो नहीं देखा जा सकता उसके लिए अनुमान लगाने की बजाय साफ़-साफ़ **"unknown"** कहता है। यह वह न्यूनतम अपस्ट्रीम सीम भी प्रस्तावित करता है जिससे स्टेटस वास्तविक बनेगा: देखें [upstream proposal](docs/upstream-proposal.md)।
12
+ ## आर्किटेक्चर: आधिकारिक क्लाइंट पुल है; यह प्लगइन कंसोल है
15
13
 
16
- ## संगतता
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>` नाम पंजीकृत करता है। यह प्लगइन उसे कभी नहीं बदलता: यह उसके ऊपर की **अनुभव परत** है:
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 टेस्ट।
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) में।
21
-
22
- ## आपको क्या मिलता है
23
-
24
- | सतह | क्या दिखाती है |
25
- |---|---|
26
- | **`/mcp` कमांड** | ट्रांसपोर्ट, टार्गेट, टूल काउंट, कनेक्शन स्टेटस, अंतिम एरर, रीकनेक्ट काउंट — मॉडल-रीडेबल और लॉग से रीकंस्ट्रक्टेबल, पाँच आउटपुट भाषाएँ (`outputLanguage: en\|zh\|es\|pt\|hi`) |
27
- | **सेटिंग्स → प्लगइन्स → MCP टैब** | वही स्नैपशॉट रीड-ओनली: स्टेटस बैज, विस्तार योग्य टूल सूचियाँ, सैनिटाइज़्ड एरर, प्रोब परिणाम |
28
- | **एक नज़र में** | कार्ड के ऊपर सारांश गिनती, सर्वर खोज बॉक्स, और सभी विस्तार/संकुचन बटन |
29
- | **पैनल प्रोब बटन** | टैब से एक streamable-http सर्वर की एक-क्लिक कनेक्टिविटी प्रोब; परिणाम केवल पैनल में रहते हैं |
30
- | **पैसिव प्रोब** | प्रति सर्वर वैकल्पिक बैकग्राउंड रीचेबिलिटी बैज, कनेक्शन स्टेटस से अलग |
31
- | **ऑटो रिफ्रेश** | होस्ट एक रिफ्रेश अंतराल सुझाता है (`refreshIntervalMs`); टैब पोल करता है और छिपा होने पर रुक जाता है |
32
- | **`/mcp <server> disable\|enable`** | लागू करने के लिए सटीक `cordis.patch.yml` लाइन — एक *सुझाव*, कभी लिखावट नहीं |
33
- | **`mcp_probe` टूल** | Streamable HTTP एंडपॉइंट की एक-बार कनेक्टिविटी प्रोब (बैकग्राउंड जॉब); परिणाम **केवल पैनल में** |
34
-
35
- ## त्वरित शुरुआत
36
-
37
- ```sh
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
42
16
  ```
43
-
44
- फिर रीस्टार्ट करें (या वेब सतह को अपनी `cordis.patch.yml` हॉट-रीलोड करने दें) और चलाएँ:
45
-
46
- ```text
47
- /mcp
48
- /mcp everything tools
49
- /mcp everything disable
50
- ```
51
-
52
- ```text
53
- MCP servers (1):
54
- - everything [mcp-everything] stdio node …/server-everything/dist/index.js
55
- | 13 tools | enabled | status: unknown (source: derived) | reconnects: — | last error: —
56
- ```
57
-
58
- मैन्युअल इंस्टॉल: `dsh-mcp-panel` को प्रोफ़ाइल के `node_modules` (या साझा
59
- `$DSH_HOME/profiles/node_modules` फ़ॉलबैक) में रखें और `cordis.patch.yml` में यह लाइन जोड़ें:
60
-
61
- ```yaml
62
- - insert:
63
- - id: mcp-panel
64
- name: dsh-mcp-panel
65
- config:
66
- probeEnabled: true
67
- 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
68
23
  ```
69
24
 
70
- ### अनइंस्टॉल
25
+ कंसोल `mcp/status` seam (इवेंट + `mcpStatus` सेवा), टूल रजिस्ट्री और loader से **पढ़ता** है; **लिखता** केवल प्रोफ़ाइल की patch परत में — केवल जोड़ता है, अनुमोदन के साथ, स्वचालित बैकअप के साथ। ट्रांसपोर्ट, OAuth और प्रोटोकॉल अछूते रहते हैं।
71
26
 
72
- 1. `cordis.patch.yml` से `mcp-panel` लाइन हटाएँ (वेब सतह इसे हॉट-रीलोड करती है; अन्य सतहें रीस्टार्ट करें)।
73
- 2. प्रोफ़ाइल के `node_modules` (या साझा `profiles/node_modules` फ़ॉलबैक) से पैकेज हटाएँ।
74
- 3. `dsh web --dump-config` से पुष्टि करें कि कोई `mcp-panel` लाइन नहीं बची।
27
+ ## कंसोल बनाम हाथ से लिखा cordis.yml
75
28
 
76
- ## अनुबंध द्वारा ईमानदारी
77
-
78
- - **रीड-ओनली।** कोई कॉन्फ़िगरेशन फ़ाइल कभी नहीं लिखी जाती। `disable`/`enable` एक सुझाव छापता है जिसे आप स्वयं लागू करते हैं।
79
- - **नकली स्टेटस नहीं।** अपस्ट्रीम डेटा के बिना कनेक्शन फ़ील्ड `unknown` / `—` दिखाते हैं, साथ में `statusSource: derived`।
80
- - **सैनिटाइज़्ड प्रदर्शन।** URL क्वेरी क्रेडेंशियल, userinfo पासवर्ड, हेडर मान, बियरर टोकन और JWT रेंडरिंग से पहले हटा दिए जाते हैं; कॉन्फ़िगर किए गए `headers` किसी भी स्नैपशॉट में नहीं जाते।
81
- - **केवल-पैनल परिणाम।** प्रोब विवरण सेटिंग्स टैब में रहते हैं, मॉडल संदर्भ में कभी नहीं; `/mcp` आउटपुट मॉडल-रीडेबल सतह है और सेशन लॉग से पूरी तरह रीकंस्ट्रक्टेबल है।
82
- - **mcp-client में कोई बदलाव नहीं।** ट्रांसपोर्ट, OAuth और प्रोटोकॉल अछूते रहते हैं — ऑब्ज़र्वेबिलिटी का अंतर [upstream proposal](docs/upstream-proposal.md) से ढका जाता है, जिसे यह प्लगइन पहले से उपभोग करता है (टाइप्ड `mcp/status` इवेंट + `mcpStatus` क्वेरी सेवा, रनटाइम फ़ीचर-डिटेक्शन)।
83
-
84
- ## कॉन्फ़िगरेशन
85
-
86
- | फ़ील्ड | डिफ़ॉल्ट | विवरण |
29
+ | | हाथ से लिखा cordis.yml | dsh-mcp-panel कंसोल |
87
30
  |---|---|---|
88
- | `probeEnabled` | `true` | `mcp_probe` टूल पंजीकृत करें (रचना में `ctx.jobs` चाहिए) |
89
- | `probeTimeoutMs` | `10000` | प्रति प्रोब समय-सीमा |
90
- | `maxProbes` | `10` | पैनल में दिखाए जाने वाले प्रोब रिकॉर्ड की सीमा |
91
- | `refreshIntervalMs` | `0` | पैनल के लिए सुझाया गया रिफ्रेश अंतराल (ms; `0` = केवल मांग पर) |
92
- | `outputLanguage` | `en` | `/mcp` कमांड की आउटपुट भाषा (`en` \| `zh` \| `es` \| `pt` \| `hi`) |
93
- | `passiveProbeEnabled` | `false` | streamable-http सर्वरों की बैकग्राउंड में आवधिक प्रोब |
94
- | `passiveProbeIntervalMs` | `60000` | पैसिव प्रोब अंतराल (मिलीसेकंड) |
95
-
96
- ## अनुमतियाँ और डेटा
31
+ | सर्वर जोड़ें | YAML संपादित करें | फ़ॉर्म patch अंश → **कॉपी** या **लिखें** (अनुमोदन + बैकअप) |
32
+ | सर्वर बदलें | YAML संपादित करें, रीस्टार्ट करें | पहले से भरा फ़ॉर्म; बिना बदले सीक्रेट host पर ही रहते हैं |
33
+ | सर्वर हटाएँ | पंक्ति मिटाएँ | `set disabled: true` ऑपरेशन (patch शब्दावली में remove नहीं है); कभी भी फिर से सक्षम करने योग्य |
34
+ | स्थिति देखें | लॉग पढ़ें | बैज + रीकनेक्ट + अंतिम त्रुटि, `mcp/status` से लाइव |
35
+ | टूल आज़माएँ | मॉडल से कहें | ट्रायल कंसोल आधिकारिक `ctx.tools.execute()` पाइपलाइन (अनुमतियाँ और अनुमोदन लागू) |
36
+ | निदान करें | लॉग grep करें | `/mcp <server> health` व्युत्पन्न सुझावों के साथ |
97
37
 
98
- - **पढ़ता है**: Loader पंक्तियाँ, टूल रजिस्ट्री (`mcp__<server>__` नाम), और upstream लागू होने पर `mcp/status` इवेंट।
99
- - **लिखता है**: कुछ नहीं। कोई कॉन्फ़िगरेशन फ़ाइल कभी संशोधित नहीं होती।
100
- - **नेटवर्क**: केवल एक-बार `mcp_probe` (और वैकल्पिक पैसिव प्रोब) आपके कॉन्फ़िगर किए एंडपॉइंट्स पर एक MCP `initialize` अनुरोध भेजती है; कॉन्फ़िगर किए हेडर केवल अनुरोध के लिए उपयोग होते हैं और कभी प्रदर्शित या लॉग नहीं होते।
101
- - कोई टेलीमेट्री नहीं, कोई बाहरी सेवा नहीं, वैकल्पिक प्रोब टाइमर के अलावा कोई बैकग्राउंड कार्य नहीं।
38
+ ## क्या मिलता है
102
39
 
103
- ## समस्या निवारण
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 कनेक्टिविटी जाँच (परिणाम केवल पैनल)।
104
44
 
105
- - लाइन दिखाई नहीं दे रही? `dsh web --dump-config` चलाएँ और जाँचें कि `mcp-panel` insert अद्वितीय id के साथ लागू हुआ।
106
- - पैनल `status: unknown (source: derived)` दिखाता है — upstream सीम आने तक अपेक्षित; देखें [docs/upstream-proposal.md](docs/upstream-proposal.md)।
107
- - पैनल पुराना लग रहा है? `mcp-panel` कॉन्फ़िग लाइन में `refreshIntervalMs` को सकारात्मक मान (जैसे `5000`) पर सेट करें ताकि स्वतः पोल हो।
108
- - बूट लॉग में FAILED `mcp-panel` fiber — पैकेज को प्रोफ़ाइल से रिज़ॉल्व होना चाहिए (बेयर `name: dsh-mcp-panel` प्रोफ़ाइल के `node_modules` या साझा फ़ॉलबैक से रिज़ॉल्व होता है)।
109
- - रोलबैक: लाइन हटाएँ (अनइंस्टॉल देखें)।
45
+ ## त्वरित शुरुआत
110
46
 
111
- ## सुरक्षा
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
+ ```
112
52
 
113
- सुरक्षा समस्या मिली? GitHub issue खोलें **बिना** सीक्रेट, की या टोकन चिपकाए पहले सब रिडैक्ट करें। यह प्लगइन आपके कॉन्फ़िगर किए MCP सर्वरों की क्रेडेंशियल केवल प्रोब अनुरोधों के लिए मेमोरी में रखता है; वे कभी लॉग या स्नैपशॉट तक नहीं पहुँचते।
53
+ रीस्टार्ट करें (या वेब सतह को `cordis.patch.yml` हॉट-रीलोड करने दें) और **सेटिंग्स प्लगइन्स MCP** खोलें, या `/mcp` चलाएँ।
114
54
 
115
- ## यह कैसे काम करता है
55
+ ## अनुबंध के अनुसार ईमानदार
116
56
 
117
- - **होस्ट आधा** एक `mcpPanel` Typert Remote सेवा तीन रीड-ओनली स्रोतों से स्नैपशॉट बनाती है: Loader पंक्तियाँ (`@deepseek-ai/dsh-mcp-client` एंट्री), `mcp__<server>__` नेमस्पेस से समूहित `ctx.tools.schemas()`, और अपस्ट्रीम `mcp/status` ऑब्ज़र्वेशन। हाथ से लिखा `./typert` मैनिफ़ेस्ट `mcpPanel/status` को गेटवे में पंजीकृत करता है; `zod` बंडल में शामिल है, इसलिए होस्ट आधा स्व-निहित है।
118
- - **ब्राउज़र आधा** एक `dsh.client` बंडल (`/plugins/dsh-mcp-panel/client.js` पर सर्व किया गया) उसी डिस्क्रिप्टर को `ctx.remote.$mount` से माउंट करता है और रीड-ओनली `settings.plugins.tab` एंट्री (`id: mcp`) पंजीकृत करता है। प्रेज़ेंटर एक शुद्ध फ़ंक्शन है; स्टाइल स्कोप्ड हैं और थीम टोकन का उपयोग करते हैं।
119
- - **`/mcp` कमांड** मानक कमांड रजिस्ट्री से गुज़रता है हर पंक्ति `command/run` + `command/done` सेशन इवेंट में दर्ज होती है।
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
+ - **कोई प्रॉम्प्ट इंजेक्शन नहीं**: कंसोल कोई प्रॉम्प्ट अनुभाग पंजीकृत नहीं करता; केवल उसके दो टूल/कमांड विवरण, आधिकारिक क्लाइंट की न्यूनतम शैली में।
120
62
 
121
- ## विकास
63
+ ## कॉन्फ़िगरेशन
122
64
 
123
- ```sh
124
- pnpm install
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
129
- pnpm run verify:self-contained
130
- pnpm run verify:artifacts
131
- pnpm pack
132
- ```
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` | लेखन स्विच; रखे गए बैकअप |
133
73
 
134
- रिलीज़: `node scripts/release.mjs <x.y.z>` संस्करण बढ़ाता है, CHANGELOG पर मुहर लगाता है, द्वार फिर चलाता है, कमिट और टैग करता है; टैग पुश करने पर npm और GitHub Release अपने आप प्रकाशित होते हैं (देखें [CONTRIBUTING.md](CONTRIBUTING.md))।
74
+ ## Resources और Prompts
135
75
 
136
- असली harness checkout के विरुद्ध सत्यापन:
137
- `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` में अनुपूरक)।
138
77
 
139
78
  ## लाइसेंस
140
79
 
141
- [Apache License 2.0](LICENSE) © 2026 dsh-mcp-panel योगदानकर्ता
80
+ Apache-2.0 — देखें [LICENSE](LICENSE)