dsh-mcp-panel 0.2.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/LICENSE +201 -0
- package/README.es.md +129 -0
- package/README.hi.md +129 -0
- package/README.md +129 -0
- package/README.pt.md +129 -0
- package/README.zh.md +129 -0
- package/cordis.patch.yml +23 -0
- package/lib/client.js +5045 -0
- package/lib/client.js.map +1 -0
- package/lib/index.js +1079 -0
- package/lib/typert.host.js +4261 -0
- package/lib/types/aggregate.d.ts +92 -0
- package/lib/types/aggregate.d.ts.map +1 -0
- package/lib/types/client/McpPanelTab.d.ts +16 -0
- package/lib/types/client/McpPanelTab.d.ts.map +1 -0
- package/lib/types/client/index.d.ts +35 -0
- package/lib/types/client/index.d.ts.map +1 -0
- package/lib/types/client/locales.d.ts +90 -0
- package/lib/types/client/locales.d.ts.map +1 -0
- package/lib/types/client/present.d.ts +79 -0
- package/lib/types/client/present.d.ts.map +1 -0
- package/lib/types/client/remote.d.ts +119 -0
- package/lib/types/client/remote.d.ts.map +1 -0
- package/lib/types/client/styles.d.ts +12 -0
- package/lib/types/client/styles.d.ts.map +1 -0
- package/lib/types/command.d.ts +122 -0
- package/lib/types/command.d.ts.map +1 -0
- package/lib/types/config.d.ts +63 -0
- package/lib/types/config.d.ts.map +1 -0
- package/lib/types/grouping.d.ts +49 -0
- package/lib/types/grouping.d.ts.map +1 -0
- package/lib/types/index.d.ts +41 -0
- package/lib/types/index.d.ts.map +1 -0
- package/lib/types/probe.d.ts +67 -0
- package/lib/types/probe.d.ts.map +1 -0
- package/lib/types/sanitize.d.ts +42 -0
- package/lib/types/sanitize.d.ts.map +1 -0
- package/lib/types/service.d.ts +107 -0
- package/lib/types/service.d.ts.map +1 -0
- package/lib/types/typert.host.d.ts +110 -0
- package/lib/types/typert.host.d.ts.map +1 -0
- package/lib/types/upstream.d.ts +67 -0
- package/lib/types/upstream.d.ts.map +1 -0
- package/lib/types/wire.d.ts +342 -0
- package/lib/types/wire.d.ts.map +1 -0
- package/package.json +111 -0
- package/src/aggregate.ts +248 -0
- package/src/client/McpPanelTab.tsx +257 -0
- package/src/client/index.ts +87 -0
- package/src/client/locales.ts +92 -0
- package/src/client/present.ts +127 -0
- package/src/client/remote.ts +35 -0
- package/src/client/styles.ts +235 -0
- package/src/command.ts +387 -0
- package/src/config.ts +110 -0
- package/src/grouping.ts +109 -0
- package/src/index.ts +86 -0
- package/src/probe.ts +198 -0
- package/src/sanitize.ts +115 -0
- package/src/service.ts +279 -0
- package/src/typert.host.ts +25 -0
- package/src/upstream.ts +72 -0
- package/src/wire.ts +221 -0
|
@@ -0,0 +1,342 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The panel's wire vocabulary: the snapshot types served over the `mcpPanel`
|
|
3
|
+
* Remote namespace, their zod v4 validation schema (the strict codec both
|
|
4
|
+
* Typert faces carry), and the single invocation descriptor shared by the
|
|
5
|
+
* host `./typert` manifest and the client Remote contribution. One canonical
|
|
6
|
+
* source for both faces keeps the host and client codecs from ever drifting
|
|
7
|
+
* apart.
|
|
8
|
+
*
|
|
9
|
+
* @module dsh-mcp-panel/wire
|
|
10
|
+
*/
|
|
11
|
+
import { z } from 'zod';
|
|
12
|
+
/** Transport recorded for one configured mcp-client row. */
|
|
13
|
+
export type McpTransport = 'stdio' | 'streamable-http' | 'unknown';
|
|
14
|
+
/** Cordis Fiber phases projected for display; `null` = no fiber observed. */
|
|
15
|
+
export type McpFiberPhase = 'pending' | 'loading' | 'active' | 'failed' | 'unloading' | null;
|
|
16
|
+
/** Connection phase from the proposed upstream `mcp/status` seam, plus `unknown`. */
|
|
17
|
+
export type McpConnectionPhase = 'connecting' | 'connected' | 'waiting' | 'exhausted' | 'disposed' | 'unknown';
|
|
18
|
+
/** Provenance of the connection fields: upstream events or derived facts only. */
|
|
19
|
+
export type McpStatusSource = 'upstream-event' | 'derived';
|
|
20
|
+
/** One MCP tool's model-facing view (public name + one-line description). */
|
|
21
|
+
export interface McpToolView {
|
|
22
|
+
/** Public tool name (`mcp__<server>__<raw>` or its deterministic normalized form). */
|
|
23
|
+
name: string;
|
|
24
|
+
/** Server-provided description; empty when absent. */
|
|
25
|
+
description: string;
|
|
26
|
+
}
|
|
27
|
+
/** One MCP server's read-only status view. */
|
|
28
|
+
export interface McpServerView {
|
|
29
|
+
/** Stable namespace from plugin config. */
|
|
30
|
+
serverName: string;
|
|
31
|
+
/** Loader entry id carrying the mcp-client row. */
|
|
32
|
+
entryId: string;
|
|
33
|
+
/** Declared transport; `unknown` when the row is not an mcp-client row or is malformed. */
|
|
34
|
+
transport: McpTransport;
|
|
35
|
+
/** Display target: the command line (stdio) or the sanitized URL (streamable-http). */
|
|
36
|
+
target: string;
|
|
37
|
+
/** Effective loader disabled state (includes parent groups and `!!js` evaluation). */
|
|
38
|
+
enabled: boolean;
|
|
39
|
+
/** Cordis fiber phase of the row; `null` when no fiber exists. */
|
|
40
|
+
fiberPhase: McpFiberPhase;
|
|
41
|
+
/** Config-declared policy facts (reconnect budget, fail-fast, tool timeout); `null` = defaults. */
|
|
42
|
+
configuredNote: string | null;
|
|
43
|
+
/** Registered tools from `ctx.tools.schemas()` under `mcp__<server>__`. */
|
|
44
|
+
toolCount: number;
|
|
45
|
+
/** The model-visible tools; empty for a server with none registered. */
|
|
46
|
+
tools: readonly McpToolView[];
|
|
47
|
+
/** Connection phase; `unknown` when no upstream status was observed. */
|
|
48
|
+
phase: McpConnectionPhase;
|
|
49
|
+
/** Failed attempts in the current outage (upstream); `-1` when unknown. */
|
|
50
|
+
attempt: number;
|
|
51
|
+
/** Resolved reconnect budget (upstream); `-1` when unknown. */
|
|
52
|
+
maxAttempts: number;
|
|
53
|
+
/** Scheduled backoff delay while `waiting`; `null` otherwise or unknown. */
|
|
54
|
+
delayMs: number | null;
|
|
55
|
+
/** Reconnect attempts observed this process; `-1` when unknown. */
|
|
56
|
+
reconnectCount: number;
|
|
57
|
+
/** Most recent error, sanitized for display; `null` when none or unknown. */
|
|
58
|
+
lastError: string | null;
|
|
59
|
+
/** Epoch ms of the last successful connect (upstream); `null` otherwise or unknown. */
|
|
60
|
+
connectedAt: number | null;
|
|
61
|
+
/** Epoch ms when this process last received an upstream status event; `null` without one. */
|
|
62
|
+
observedAt: number | null;
|
|
63
|
+
/** Passive-probe reachability (`null` = probing disabled or never run). */
|
|
64
|
+
probeState: 'reachable' | 'unreachable' | null;
|
|
65
|
+
/** Epoch ms of the latest passive-probe settlement; `null` without one. */
|
|
66
|
+
probeCheckedAt: number | null;
|
|
67
|
+
/** Where the connection fields came from. */
|
|
68
|
+
statusSource: McpStatusSource;
|
|
69
|
+
}
|
|
70
|
+
/** One background connectivity probe (panel-only; never model context). */
|
|
71
|
+
export interface McpProbeView {
|
|
72
|
+
/** Background-job id (`mcp-probe-N`). */
|
|
73
|
+
id: string;
|
|
74
|
+
/** Server the probe targeted. */
|
|
75
|
+
serverName: string;
|
|
76
|
+
/** Job lifecycle state. */
|
|
77
|
+
status: 'running' | 'stopping' | 'completed' | 'killed' | 'failed';
|
|
78
|
+
/** Epoch ms when the probe started. */
|
|
79
|
+
startedAt: number;
|
|
80
|
+
/** Epoch ms when the probe settled; `null` while running. */
|
|
81
|
+
finishedAt: number | null;
|
|
82
|
+
/** Sanitized one-line detail (HTTP status, latency, server info, or error). */
|
|
83
|
+
detail: string | null;
|
|
84
|
+
}
|
|
85
|
+
/** The complete panel snapshot served by `mcpPanel/status`. */
|
|
86
|
+
export interface McpPanelSnapshot {
|
|
87
|
+
/** True when the proposed upstream `mcp/status` seam produced data this process. */
|
|
88
|
+
observed: boolean;
|
|
89
|
+
/** Absolute path of the profile patch layer that disable/enable suggestions name. */
|
|
90
|
+
patchFile: string | null;
|
|
91
|
+
/** Suggested panel refresh interval in ms; `0` = the tab refreshes on demand only. */
|
|
92
|
+
refreshIntervalMs: number;
|
|
93
|
+
/** One row per server namespace (configured rows first, leftover namespaces last). */
|
|
94
|
+
servers: readonly McpServerView[];
|
|
95
|
+
/** Connectivity probes this process, newest first. */
|
|
96
|
+
probes: readonly McpProbeView[];
|
|
97
|
+
}
|
|
98
|
+
/** Strict wire schema for {@link McpPanelSnapshot} (zod v4, both Typert faces). */
|
|
99
|
+
export declare const MCP_PANEL_SNAPSHOT_SCHEMA: z.ZodObject<{
|
|
100
|
+
observed: z.ZodBoolean;
|
|
101
|
+
patchFile: z.ZodNullable<z.ZodString>;
|
|
102
|
+
refreshIntervalMs: z.ZodNumber;
|
|
103
|
+
servers: z.ZodArray<z.ZodObject<{
|
|
104
|
+
serverName: z.ZodString;
|
|
105
|
+
entryId: z.ZodString;
|
|
106
|
+
transport: z.ZodUnion<readonly [z.ZodLiteral<"stdio">, z.ZodLiteral<"streamable-http">, z.ZodLiteral<"unknown">]>;
|
|
107
|
+
target: z.ZodString;
|
|
108
|
+
enabled: z.ZodBoolean;
|
|
109
|
+
fiberPhase: z.ZodUnion<readonly [z.ZodLiteral<"pending">, z.ZodLiteral<"loading">, z.ZodLiteral<"active">, z.ZodLiteral<"failed">, z.ZodLiteral<"unloading">, z.ZodNull]>;
|
|
110
|
+
configuredNote: z.ZodNullable<z.ZodString>;
|
|
111
|
+
toolCount: z.ZodNumber;
|
|
112
|
+
tools: z.ZodArray<z.ZodObject<{
|
|
113
|
+
name: z.ZodString;
|
|
114
|
+
description: z.ZodString;
|
|
115
|
+
}, z.core.$strip>>;
|
|
116
|
+
phase: z.ZodUnion<readonly [z.ZodLiteral<"connecting">, z.ZodLiteral<"connected">, z.ZodLiteral<"waiting">, z.ZodLiteral<"exhausted">, z.ZodLiteral<"disposed">, z.ZodLiteral<"unknown">]>;
|
|
117
|
+
attempt: z.ZodNumber;
|
|
118
|
+
maxAttempts: z.ZodNumber;
|
|
119
|
+
delayMs: z.ZodNullable<z.ZodNumber>;
|
|
120
|
+
reconnectCount: z.ZodNumber;
|
|
121
|
+
lastError: z.ZodNullable<z.ZodString>;
|
|
122
|
+
connectedAt: z.ZodNullable<z.ZodNumber>;
|
|
123
|
+
observedAt: z.ZodNullable<z.ZodNumber>;
|
|
124
|
+
probeState: z.ZodUnion<readonly [z.ZodLiteral<"reachable">, z.ZodLiteral<"unreachable">, z.ZodNull]>;
|
|
125
|
+
probeCheckedAt: z.ZodNullable<z.ZodNumber>;
|
|
126
|
+
statusSource: z.ZodUnion<readonly [z.ZodLiteral<"upstream-event">, z.ZodLiteral<"derived">]>;
|
|
127
|
+
}, z.core.$strip>>;
|
|
128
|
+
probes: z.ZodArray<z.ZodObject<{
|
|
129
|
+
id: z.ZodString;
|
|
130
|
+
serverName: z.ZodString;
|
|
131
|
+
status: z.ZodUnion<readonly [z.ZodLiteral<"running">, z.ZodLiteral<"stopping">, z.ZodLiteral<"completed">, z.ZodLiteral<"killed">, z.ZodLiteral<"failed">]>;
|
|
132
|
+
startedAt: z.ZodNumber;
|
|
133
|
+
finishedAt: z.ZodNullable<z.ZodNumber>;
|
|
134
|
+
detail: z.ZodNullable<z.ZodString>;
|
|
135
|
+
}, z.core.$strip>>;
|
|
136
|
+
}, z.core.$strip>;
|
|
137
|
+
/**
|
|
138
|
+
* The `mcpPanel/status` invocation descriptor, shared verbatim by the host
|
|
139
|
+
* `TYPERT` manifest (`src/typert.host.ts`) and the client
|
|
140
|
+
* `TypertRemoteContribution` (`src/client/remote.ts`). Hand-written in the
|
|
141
|
+
* exact shape the Typert generator emits; validated by the typert loader and
|
|
142
|
+
* the client registry at mount time.
|
|
143
|
+
*/
|
|
144
|
+
export declare const MCP_PANEL_STATUS_DESCRIPTOR: Readonly<{
|
|
145
|
+
readonly id: "dsh-mcp-panel#mcpPanel/status";
|
|
146
|
+
readonly service: "mcpPanel";
|
|
147
|
+
readonly namespace: "mcpPanel";
|
|
148
|
+
readonly method: "status";
|
|
149
|
+
readonly invocation: Readonly<{
|
|
150
|
+
kind: "direct";
|
|
151
|
+
}>;
|
|
152
|
+
readonly parameters: readonly never[];
|
|
153
|
+
readonly result: Readonly<{
|
|
154
|
+
mode: "strict";
|
|
155
|
+
typeSymbol: "dsh-mcp-panel/types#McpPanelSnapshot";
|
|
156
|
+
schema: z.ZodObject<{
|
|
157
|
+
observed: z.ZodBoolean;
|
|
158
|
+
patchFile: z.ZodNullable<z.ZodString>;
|
|
159
|
+
refreshIntervalMs: z.ZodNumber;
|
|
160
|
+
servers: z.ZodArray<z.ZodObject<{
|
|
161
|
+
serverName: z.ZodString;
|
|
162
|
+
entryId: z.ZodString;
|
|
163
|
+
transport: z.ZodUnion<readonly [z.ZodLiteral<"stdio">, z.ZodLiteral<"streamable-http">, z.ZodLiteral<"unknown">]>;
|
|
164
|
+
target: z.ZodString;
|
|
165
|
+
enabled: z.ZodBoolean;
|
|
166
|
+
fiberPhase: z.ZodUnion<readonly [z.ZodLiteral<"pending">, z.ZodLiteral<"loading">, z.ZodLiteral<"active">, z.ZodLiteral<"failed">, z.ZodLiteral<"unloading">, z.ZodNull]>;
|
|
167
|
+
configuredNote: z.ZodNullable<z.ZodString>;
|
|
168
|
+
toolCount: z.ZodNumber;
|
|
169
|
+
tools: z.ZodArray<z.ZodObject<{
|
|
170
|
+
name: z.ZodString;
|
|
171
|
+
description: z.ZodString;
|
|
172
|
+
}, z.core.$strip>>;
|
|
173
|
+
phase: z.ZodUnion<readonly [z.ZodLiteral<"connecting">, z.ZodLiteral<"connected">, z.ZodLiteral<"waiting">, z.ZodLiteral<"exhausted">, z.ZodLiteral<"disposed">, z.ZodLiteral<"unknown">]>;
|
|
174
|
+
attempt: z.ZodNumber;
|
|
175
|
+
maxAttempts: z.ZodNumber;
|
|
176
|
+
delayMs: z.ZodNullable<z.ZodNumber>;
|
|
177
|
+
reconnectCount: z.ZodNumber;
|
|
178
|
+
lastError: z.ZodNullable<z.ZodString>;
|
|
179
|
+
connectedAt: z.ZodNullable<z.ZodNumber>;
|
|
180
|
+
observedAt: z.ZodNullable<z.ZodNumber>;
|
|
181
|
+
probeState: z.ZodUnion<readonly [z.ZodLiteral<"reachable">, z.ZodLiteral<"unreachable">, z.ZodNull]>;
|
|
182
|
+
probeCheckedAt: z.ZodNullable<z.ZodNumber>;
|
|
183
|
+
statusSource: z.ZodUnion<readonly [z.ZodLiteral<"upstream-event">, z.ZodLiteral<"derived">]>;
|
|
184
|
+
}, z.core.$strip>>;
|
|
185
|
+
probes: z.ZodArray<z.ZodObject<{
|
|
186
|
+
id: z.ZodString;
|
|
187
|
+
serverName: z.ZodString;
|
|
188
|
+
status: z.ZodUnion<readonly [z.ZodLiteral<"running">, z.ZodLiteral<"stopping">, z.ZodLiteral<"completed">, z.ZodLiteral<"killed">, z.ZodLiteral<"failed">]>;
|
|
189
|
+
startedAt: z.ZodNumber;
|
|
190
|
+
finishedAt: z.ZodNullable<z.ZodNumber>;
|
|
191
|
+
detail: z.ZodNullable<z.ZodString>;
|
|
192
|
+
}, z.core.$strip>>;
|
|
193
|
+
}, z.core.$strip>;
|
|
194
|
+
}>;
|
|
195
|
+
readonly sourceLocation: Readonly<{
|
|
196
|
+
file: "src/wire.ts";
|
|
197
|
+
line: 1;
|
|
198
|
+
column: 1;
|
|
199
|
+
}>;
|
|
200
|
+
}>;
|
|
201
|
+
/** Result of the `mcpPanel/probe` invocation: a started panel-only probe. */
|
|
202
|
+
export interface ProbeStarted {
|
|
203
|
+
/** Background-job id (`mcp-probe-N`). */
|
|
204
|
+
jobId: string;
|
|
205
|
+
/** Where the result lands: the settings tab, never model context. */
|
|
206
|
+
note: string;
|
|
207
|
+
}
|
|
208
|
+
/** Strict wire schema for {@link ProbeStarted}. */
|
|
209
|
+
export declare const PROBE_STARTED_SCHEMA: z.ZodObject<{
|
|
210
|
+
jobId: z.ZodString;
|
|
211
|
+
note: z.ZodString;
|
|
212
|
+
}, z.core.$strip>;
|
|
213
|
+
/**
|
|
214
|
+
* The `mcpPanel/probe` invocation descriptor: start a one-shot probe from the
|
|
215
|
+
* settings panel (same background-job mechanics as the `mcp_probe` tool).
|
|
216
|
+
*/
|
|
217
|
+
export declare const MCP_PANEL_PROBE_DESCRIPTOR: Readonly<{
|
|
218
|
+
readonly id: "dsh-mcp-panel#mcpPanel/probe";
|
|
219
|
+
readonly service: "mcpPanel";
|
|
220
|
+
readonly namespace: "mcpPanel";
|
|
221
|
+
readonly method: "probe";
|
|
222
|
+
readonly invocation: Readonly<{
|
|
223
|
+
kind: "direct";
|
|
224
|
+
}>;
|
|
225
|
+
readonly parameters: readonly Readonly<{
|
|
226
|
+
name: string;
|
|
227
|
+
wire: string;
|
|
228
|
+
source: "json";
|
|
229
|
+
codec: Readonly<{
|
|
230
|
+
mode: "strict";
|
|
231
|
+
typeSymbol: "dsh-mcp-panel/types#ProbeRequestServerName";
|
|
232
|
+
schema: z.ZodString;
|
|
233
|
+
}>;
|
|
234
|
+
}>[];
|
|
235
|
+
readonly result: Readonly<{
|
|
236
|
+
mode: "strict";
|
|
237
|
+
typeSymbol: "dsh-mcp-panel/types#ProbeStarted";
|
|
238
|
+
schema: z.ZodObject<{
|
|
239
|
+
jobId: z.ZodString;
|
|
240
|
+
note: z.ZodString;
|
|
241
|
+
}, z.core.$strip>;
|
|
242
|
+
}>;
|
|
243
|
+
readonly sourceLocation: Readonly<{
|
|
244
|
+
file: "src/wire.ts";
|
|
245
|
+
line: 1;
|
|
246
|
+
column: 1;
|
|
247
|
+
}>;
|
|
248
|
+
}>;
|
|
249
|
+
/**
|
|
250
|
+
* The canonical invocation list both Typert faces register — the host
|
|
251
|
+
* manifest and the client contribution share these exact descriptor objects,
|
|
252
|
+
* so the two wire codecs can never drift apart.
|
|
253
|
+
*/
|
|
254
|
+
export declare const MCP_PANEL_INVOCATIONS: readonly (Readonly<{
|
|
255
|
+
readonly id: "dsh-mcp-panel#mcpPanel/status";
|
|
256
|
+
readonly service: "mcpPanel";
|
|
257
|
+
readonly namespace: "mcpPanel";
|
|
258
|
+
readonly method: "status";
|
|
259
|
+
readonly invocation: Readonly<{
|
|
260
|
+
kind: "direct";
|
|
261
|
+
}>;
|
|
262
|
+
readonly parameters: readonly never[];
|
|
263
|
+
readonly result: Readonly<{
|
|
264
|
+
mode: "strict";
|
|
265
|
+
typeSymbol: "dsh-mcp-panel/types#McpPanelSnapshot";
|
|
266
|
+
schema: z.ZodObject<{
|
|
267
|
+
observed: z.ZodBoolean;
|
|
268
|
+
patchFile: z.ZodNullable<z.ZodString>;
|
|
269
|
+
refreshIntervalMs: z.ZodNumber;
|
|
270
|
+
servers: z.ZodArray<z.ZodObject<{
|
|
271
|
+
serverName: z.ZodString;
|
|
272
|
+
entryId: z.ZodString;
|
|
273
|
+
transport: z.ZodUnion<readonly [z.ZodLiteral<"stdio">, z.ZodLiteral<"streamable-http">, z.ZodLiteral<"unknown">]>;
|
|
274
|
+
target: z.ZodString;
|
|
275
|
+
enabled: z.ZodBoolean;
|
|
276
|
+
fiberPhase: z.ZodUnion<readonly [z.ZodLiteral<"pending">, z.ZodLiteral<"loading">, z.ZodLiteral<"active">, z.ZodLiteral<"failed">, z.ZodLiteral<"unloading">, z.ZodNull]>;
|
|
277
|
+
configuredNote: z.ZodNullable<z.ZodString>;
|
|
278
|
+
toolCount: z.ZodNumber;
|
|
279
|
+
tools: z.ZodArray<z.ZodObject<{
|
|
280
|
+
name: z.ZodString;
|
|
281
|
+
description: z.ZodString;
|
|
282
|
+
}, z.core.$strip>>;
|
|
283
|
+
phase: z.ZodUnion<readonly [z.ZodLiteral<"connecting">, z.ZodLiteral<"connected">, z.ZodLiteral<"waiting">, z.ZodLiteral<"exhausted">, z.ZodLiteral<"disposed">, z.ZodLiteral<"unknown">]>;
|
|
284
|
+
attempt: z.ZodNumber;
|
|
285
|
+
maxAttempts: z.ZodNumber;
|
|
286
|
+
delayMs: z.ZodNullable<z.ZodNumber>;
|
|
287
|
+
reconnectCount: z.ZodNumber;
|
|
288
|
+
lastError: z.ZodNullable<z.ZodString>;
|
|
289
|
+
connectedAt: z.ZodNullable<z.ZodNumber>;
|
|
290
|
+
observedAt: z.ZodNullable<z.ZodNumber>;
|
|
291
|
+
probeState: z.ZodUnion<readonly [z.ZodLiteral<"reachable">, z.ZodLiteral<"unreachable">, z.ZodNull]>;
|
|
292
|
+
probeCheckedAt: z.ZodNullable<z.ZodNumber>;
|
|
293
|
+
statusSource: z.ZodUnion<readonly [z.ZodLiteral<"upstream-event">, z.ZodLiteral<"derived">]>;
|
|
294
|
+
}, z.core.$strip>>;
|
|
295
|
+
probes: z.ZodArray<z.ZodObject<{
|
|
296
|
+
id: z.ZodString;
|
|
297
|
+
serverName: z.ZodString;
|
|
298
|
+
status: z.ZodUnion<readonly [z.ZodLiteral<"running">, z.ZodLiteral<"stopping">, z.ZodLiteral<"completed">, z.ZodLiteral<"killed">, z.ZodLiteral<"failed">]>;
|
|
299
|
+
startedAt: z.ZodNumber;
|
|
300
|
+
finishedAt: z.ZodNullable<z.ZodNumber>;
|
|
301
|
+
detail: z.ZodNullable<z.ZodString>;
|
|
302
|
+
}, z.core.$strip>>;
|
|
303
|
+
}, z.core.$strip>;
|
|
304
|
+
}>;
|
|
305
|
+
readonly sourceLocation: Readonly<{
|
|
306
|
+
file: "src/wire.ts";
|
|
307
|
+
line: 1;
|
|
308
|
+
column: 1;
|
|
309
|
+
}>;
|
|
310
|
+
}> | Readonly<{
|
|
311
|
+
readonly id: "dsh-mcp-panel#mcpPanel/probe";
|
|
312
|
+
readonly service: "mcpPanel";
|
|
313
|
+
readonly namespace: "mcpPanel";
|
|
314
|
+
readonly method: "probe";
|
|
315
|
+
readonly invocation: Readonly<{
|
|
316
|
+
kind: "direct";
|
|
317
|
+
}>;
|
|
318
|
+
readonly parameters: readonly Readonly<{
|
|
319
|
+
name: string;
|
|
320
|
+
wire: string;
|
|
321
|
+
source: "json";
|
|
322
|
+
codec: Readonly<{
|
|
323
|
+
mode: "strict";
|
|
324
|
+
typeSymbol: "dsh-mcp-panel/types#ProbeRequestServerName";
|
|
325
|
+
schema: z.ZodString;
|
|
326
|
+
}>;
|
|
327
|
+
}>[];
|
|
328
|
+
readonly result: Readonly<{
|
|
329
|
+
mode: "strict";
|
|
330
|
+
typeSymbol: "dsh-mcp-panel/types#ProbeStarted";
|
|
331
|
+
schema: z.ZodObject<{
|
|
332
|
+
jobId: z.ZodString;
|
|
333
|
+
note: z.ZodString;
|
|
334
|
+
}, z.core.$strip>;
|
|
335
|
+
}>;
|
|
336
|
+
readonly sourceLocation: Readonly<{
|
|
337
|
+
file: "src/wire.ts";
|
|
338
|
+
line: 1;
|
|
339
|
+
column: 1;
|
|
340
|
+
}>;
|
|
341
|
+
}>)[];
|
|
342
|
+
//# sourceMappingURL=wire.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wire.d.ts","sourceRoot":"","sources":["../../src/wire.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "dsh-mcp-panel",
|
|
3
|
+
"version": "0.2.0",
|
|
4
|
+
"description": "Read-only runtime management panel for the official DeepSeek Harness MCP client: /mcp command, a Settings page MCP tab with connection status, recent errors, reconnect counts and tool inventory (sanitized for display), controlled enable/disable patch suggestions, and an optional one-shot Streamable HTTP connectivity probe.",
|
|
5
|
+
"repository": {
|
|
6
|
+
"type": "git",
|
|
7
|
+
"url": "git+https://github.com/PerryLink/dsh-mcp-panel.git"
|
|
8
|
+
},
|
|
9
|
+
"private": false,
|
|
10
|
+
"type": "module",
|
|
11
|
+
"main": "./lib/index.js",
|
|
12
|
+
"types": "./lib/types/index.d.ts",
|
|
13
|
+
"exports": {
|
|
14
|
+
".": {
|
|
15
|
+
"types": "./lib/types/index.d.ts",
|
|
16
|
+
"default": "./lib/index.js"
|
|
17
|
+
},
|
|
18
|
+
"./typert": {
|
|
19
|
+
"types": "./lib/types/typert.host.d.ts",
|
|
20
|
+
"default": "./lib/typert.host.js"
|
|
21
|
+
},
|
|
22
|
+
"./client": {
|
|
23
|
+
"types": "./lib/types/client/index.d.ts",
|
|
24
|
+
"default": "./lib/client.js"
|
|
25
|
+
},
|
|
26
|
+
"./package.json": "./package.json"
|
|
27
|
+
},
|
|
28
|
+
"files": [
|
|
29
|
+
"lib",
|
|
30
|
+
"src",
|
|
31
|
+
"cordis.patch.yml",
|
|
32
|
+
"README.md",
|
|
33
|
+
"README.zh.md",
|
|
34
|
+
"LICENSE"
|
|
35
|
+
],
|
|
36
|
+
"dsh": {
|
|
37
|
+
"bundle": {
|
|
38
|
+
"patch": "./cordis.patch.yml"
|
|
39
|
+
},
|
|
40
|
+
"client": {
|
|
41
|
+
"platform": "web",
|
|
42
|
+
"inject": [
|
|
43
|
+
"@deepseek-ai/dsh-client-connection",
|
|
44
|
+
"@deepseek-ai/dsh-client-runtime",
|
|
45
|
+
"@deepseek-ai/dsh-client-locale",
|
|
46
|
+
"@deepseek-ai/dsh-client-ui-settings"
|
|
47
|
+
]
|
|
48
|
+
}
|
|
49
|
+
},
|
|
50
|
+
"keywords": [
|
|
51
|
+
"dsh",
|
|
52
|
+
"dsh-plugin",
|
|
53
|
+
"deepseek-harness",
|
|
54
|
+
"deepseek",
|
|
55
|
+
"cordis",
|
|
56
|
+
"mcp",
|
|
57
|
+
"mcp-client",
|
|
58
|
+
"observability",
|
|
59
|
+
"panel"
|
|
60
|
+
],
|
|
61
|
+
"engines": {
|
|
62
|
+
"node": "^22.19.0 || >=24.0.0"
|
|
63
|
+
},
|
|
64
|
+
"peerDependencies": {
|
|
65
|
+
"@deepseek-ai/cordis": "^4.0.1",
|
|
66
|
+
"@deepseek-ai/cordis-plugin-loader": "^1.0.2",
|
|
67
|
+
"@deepseek-ai/schemastery": "^3.18.0",
|
|
68
|
+
"@deepseek-ai/dsh-commands": "0.1.0-rc.6",
|
|
69
|
+
"@deepseek-ai/dsh-jobs": "0.1.0-rc.6",
|
|
70
|
+
"@deepseek-ai/dsh-tools": "0.1.0-rc.6",
|
|
71
|
+
"@deepseek-ai/dsh-typert-protocol": "0.1.0-rc.6"
|
|
72
|
+
},
|
|
73
|
+
"dependencies": {
|
|
74
|
+
"tsdown": "^0.22.14",
|
|
75
|
+
"typescript": "^5.9.0",
|
|
76
|
+
"zod": "^4.4.3"
|
|
77
|
+
},
|
|
78
|
+
"devDependencies": {
|
|
79
|
+
"@deepseek-ai/cordis": "^4.0.1",
|
|
80
|
+
"@deepseek-ai/cordis-plugin-loader": "^1.0.2",
|
|
81
|
+
"@deepseek-ai/schemastery": "^3.18.0",
|
|
82
|
+
"@deepseek-ai/dsh-agent": "0.1.0-rc.6",
|
|
83
|
+
"@deepseek-ai/dsh-client-connection": "0.1.0-rc.6",
|
|
84
|
+
"@deepseek-ai/dsh-client-locale": "0.1.0-rc.6",
|
|
85
|
+
"@deepseek-ai/dsh-client-runtime": "0.1.0-rc.6",
|
|
86
|
+
"@deepseek-ai/dsh-client-ui-settings": "0.1.0-rc.6",
|
|
87
|
+
"@deepseek-ai/dsh-client-ui-slots": "0.1.0-rc.6",
|
|
88
|
+
"@deepseek-ai/dsh-commands": "0.1.0-rc.6",
|
|
89
|
+
"@deepseek-ai/dsh-jobs": "0.1.0-rc.6",
|
|
90
|
+
"@deepseek-ai/dsh-session": "0.1.0-rc.6",
|
|
91
|
+
"@deepseek-ai/dsh-tools": "0.1.0-rc.6",
|
|
92
|
+
"@deepseek-ai/dsh-typert-protocol": "0.1.0-rc.6",
|
|
93
|
+
"@types/node": "^22.19.0",
|
|
94
|
+
"@types/react": "18.3.31",
|
|
95
|
+
"jsdom": "^26.1.0",
|
|
96
|
+
"react": "18.3.1",
|
|
97
|
+
"react-dom": "18.3.1",
|
|
98
|
+
"vitest": "^3.2.0"
|
|
99
|
+
},
|
|
100
|
+
"scripts": {
|
|
101
|
+
"build": "node scripts/prepare.mjs",
|
|
102
|
+
"typecheck": "tsc --noEmit",
|
|
103
|
+
"typecheck:ci": "tsc -p tsconfig.ci.json --noEmit",
|
|
104
|
+
"test": "vitest run",
|
|
105
|
+
"test:watch": "vitest",
|
|
106
|
+
"prepare": "node scripts/prepare.mjs",
|
|
107
|
+
"verify:self-contained": "node scripts/verify-self-contained.mjs",
|
|
108
|
+
"verify:artifacts": "node scripts/verify-artifacts.mjs"
|
|
109
|
+
},
|
|
110
|
+
"license": "Apache-2.0"
|
|
111
|
+
}
|