@jingyi0605/codingns4dsh 0.2.1-rc.5 → 0.2.1-rc.7

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 (174) hide show
  1. package/README.en.md +4 -4
  2. package/README.md +5 -5
  3. package/data/build/dist/bootstrap/dsh-peer-host-preboot-shim.d.ts +1 -1
  4. package/data/build/dist/bootstrap/dsh-peer-host-preboot-shim.js +1 -1
  5. package/data/build/dist/client/bundle.js +1550 -148
  6. package/data/build/dist/client/bundle.js.map +1 -1
  7. package/data/build/dist/client/cli-slots.js +2 -2
  8. package/data/build/dist/client/cli-slots.js.map +1 -1
  9. package/data/build/dist/client/client.delegate-command.js +3 -2
  10. package/data/build/dist/client/client.delegate-command.js.map +1 -1
  11. package/data/build/dist/client/client.magpie-model-tag.js +24 -8
  12. package/data/build/dist/client/client.magpie-model-tag.js.map +1 -1
  13. package/data/build/dist/client/client.native-workspace-store.js +26 -15
  14. package/data/build/dist/client/client.native-workspace-store.js.map +1 -1
  15. package/data/build/dist/client/client.session-translation.js +25 -0
  16. package/data/build/dist/client/client.session-translation.js.map +1 -1
  17. package/data/build/dist/client/client.transport.js +224 -0
  18. package/data/build/dist/client/client.transport.js.map +1 -1
  19. package/data/build/dist/client/delegate-command.js +2 -1
  20. package/data/build/dist/client/delegate-command.js.map +1 -1
  21. package/data/build/dist/client/desktop-assistant.js +224 -0
  22. package/data/build/dist/client/features/index.d.ts +2 -1
  23. package/data/build/dist/client/features/index.d.ts.map +1 -1
  24. package/data/build/dist/client/features/index.js +3 -1
  25. package/data/build/dist/client/features/index.js.map +1 -1
  26. package/data/build/dist/client/features/magpie-management-page.d.ts +7 -3
  27. package/data/build/dist/client/features/magpie-management-page.d.ts.map +1 -1
  28. package/data/build/dist/client/features/magpie-management-page.js +142 -8
  29. package/data/build/dist/client/features/magpie-management-page.js.map +1 -1
  30. package/data/build/dist/client/features/workspace-mcp.d.ts +3 -0
  31. package/data/build/dist/client/features/workspace-mcp.d.ts.map +1 -0
  32. package/data/build/dist/client/features/workspace-mcp.js +320 -0
  33. package/data/build/dist/client/features/workspace-mcp.js.map +1 -0
  34. package/data/build/dist/client/locale.d.ts.map +1 -1
  35. package/data/build/dist/client/locale.js +180 -0
  36. package/data/build/dist/client/locale.js.map +1 -1
  37. package/data/build/dist/client/locales/magpie.d.ts.map +1 -1
  38. package/data/build/dist/client/locales/magpie.js +12 -0
  39. package/data/build/dist/client/locales/magpie.js.map +1 -1
  40. package/data/build/dist/client/locales/panels.d.ts.map +1 -1
  41. package/data/build/dist/client/locales/panels.js +18 -0
  42. package/data/build/dist/client/locales/panels.js.map +1 -1
  43. package/data/build/dist/client/locales/usage.d.ts.map +1 -1
  44. package/data/build/dist/client/locales/usage.js +14 -0
  45. package/data/build/dist/client/locales/usage.js.map +1 -1
  46. package/data/build/dist/client/magpie-model-tag.d.ts +4 -2
  47. package/data/build/dist/client/magpie-model-tag.d.ts.map +1 -1
  48. package/data/build/dist/client/magpie-model-tag.js +25 -8
  49. package/data/build/dist/client/magpie-model-tag.js.map +1 -1
  50. package/data/build/dist/client/native-model-translation-menu.d.ts +1 -0
  51. package/data/build/dist/client/native-model-translation-menu.d.ts.map +1 -1
  52. package/data/build/dist/client/native-model-translation-menu.js +2 -2
  53. package/data/build/dist/client/native-model-translation-menu.js.map +1 -1
  54. package/data/build/dist/client/session-translation-chat.d.ts.map +1 -1
  55. package/data/build/dist/client/session-translation-chat.js +6 -2
  56. package/data/build/dist/client/session-translation-chat.js.map +1 -1
  57. package/data/build/dist/client/settings-section.d.ts.map +1 -1
  58. package/data/build/dist/client/settings-section.js +6 -3
  59. package/data/build/dist/client/settings-section.js.map +1 -1
  60. package/data/build/dist/client/subscription-slot.d.ts.map +1 -1
  61. package/data/build/dist/client/subscription-slot.js +104 -11
  62. package/data/build/dist/client/subscription-slot.js.map +1 -1
  63. package/data/build/dist/dsh-capabilities/host/workspace-approval-adapter.d.ts +18 -0
  64. package/data/build/dist/dsh-capabilities/host/workspace-approval-adapter.d.ts.map +1 -0
  65. package/data/build/dist/dsh-capabilities/host/workspace-approval-adapter.js +172 -0
  66. package/data/build/dist/dsh-capabilities/host/workspace-approval-adapter.js.map +1 -0
  67. package/data/build/dist/dsh-capabilities/host/workspace-pending-questions-adapter.d.ts +28 -0
  68. package/data/build/dist/dsh-capabilities/host/workspace-pending-questions-adapter.d.ts.map +1 -0
  69. package/data/build/dist/dsh-capabilities/host/workspace-pending-questions-adapter.js +103 -0
  70. package/data/build/dist/dsh-capabilities/host/workspace-pending-questions-adapter.js.map +1 -0
  71. package/data/build/dist/dsh-capabilities/host/workspace-session-control-adapter.d.ts +26 -0
  72. package/data/build/dist/dsh-capabilities/host/workspace-session-control-adapter.d.ts.map +1 -0
  73. package/data/build/dist/dsh-capabilities/host/workspace-session-control-adapter.js +86 -0
  74. package/data/build/dist/dsh-capabilities/host/workspace-session-control-adapter.js.map +1 -0
  75. package/data/build/dist/dsh-capabilities/matrix.d.ts.map +1 -1
  76. package/data/build/dist/dsh-capabilities/matrix.js +17 -14
  77. package/data/build/dist/dsh-capabilities/matrix.js.map +1 -1
  78. package/data/build/dist/dsh-capabilities/routes.d.ts.map +1 -1
  79. package/data/build/dist/dsh-capabilities/routes.js +19 -10
  80. package/data/build/dist/dsh-capabilities/routes.js.map +1 -1
  81. package/data/build/dist/dsh-capabilities/types.d.ts +1 -1
  82. package/data/build/dist/dsh-capabilities/types.d.ts.map +1 -1
  83. package/data/build/dist/dsh-capabilities/types.js.map +1 -1
  84. package/data/build/dist/host/cli-adapters/claude-model-options.d.ts.map +1 -1
  85. package/data/build/dist/host/cli-adapters/claude-model-options.js +13 -2
  86. package/data/build/dist/host/cli-adapters/claude-model-options.js.map +1 -1
  87. package/data/build/dist/host/cli-adapters/dsh-message-projector.d.ts.map +1 -1
  88. package/data/build/dist/host/cli-adapters/dsh-message-projector.js +6 -2
  89. package/data/build/dist/host/cli-adapters/dsh-message-projector.js.map +1 -1
  90. package/data/build/dist/host/cli-adapters/feature.d.ts.map +1 -1
  91. package/data/build/dist/host/cli-adapters/feature.js +12 -4
  92. package/data/build/dist/host/cli-adapters/feature.js.map +1 -1
  93. package/data/build/dist/host/cli-adapters/magpie-usage.d.ts +13 -2
  94. package/data/build/dist/host/cli-adapters/magpie-usage.d.ts.map +1 -1
  95. package/data/build/dist/host/cli-adapters/magpie-usage.js +186 -14
  96. package/data/build/dist/host/cli-adapters/magpie-usage.js.map +1 -1
  97. package/data/build/dist/host/dsh-runtime-version.d.ts.map +1 -1
  98. package/data/build/dist/host/dsh-runtime-version.js +4 -1
  99. package/data/build/dist/host/dsh-runtime-version.js.map +1 -1
  100. package/data/build/dist/host/features/index.d.ts +1 -0
  101. package/data/build/dist/host/features/index.d.ts.map +1 -1
  102. package/data/build/dist/host/features/index.js +3 -0
  103. package/data/build/dist/host/features/index.js.map +1 -1
  104. package/data/build/dist/host/features/workspace-mcp.d.ts +9 -0
  105. package/data/build/dist/host/features/workspace-mcp.d.ts.map +1 -0
  106. package/data/build/dist/host/features/workspace-mcp.js +197 -0
  107. package/data/build/dist/host/features/workspace-mcp.js.map +1 -0
  108. package/data/build/dist/host/index.d.ts.map +1 -1
  109. package/data/build/dist/host/index.js +6 -2
  110. package/data/build/dist/host/index.js.map +1 -1
  111. package/data/build/dist/host/native-session-bridge.d.ts +2 -0
  112. package/data/build/dist/host/native-session-bridge.d.ts.map +1 -1
  113. package/data/build/dist/host/native-session-bridge.js +30 -0
  114. package/data/build/dist/host/native-session-bridge.js.map +1 -1
  115. package/data/build/dist/host/rpc.d.ts +4 -1
  116. package/data/build/dist/host/rpc.d.ts.map +1 -1
  117. package/data/build/dist/host/rpc.js +57 -9
  118. package/data/build/dist/host/rpc.js.map +1 -1
  119. package/data/build/dist/host/session-handle-eviction.d.ts +4 -2
  120. package/data/build/dist/host/session-handle-eviction.d.ts.map +1 -1
  121. package/data/build/dist/host/session-handle-eviction.js +10 -9
  122. package/data/build/dist/host/session-handle-eviction.js.map +1 -1
  123. package/data/build/dist/host/terminal/terminal-process-service.d.ts +22 -0
  124. package/data/build/dist/host/terminal/terminal-process-service.d.ts.map +1 -1
  125. package/data/build/dist/host/terminal/terminal-process-service.js +102 -0
  126. package/data/build/dist/host/terminal/terminal-process-service.js.map +1 -1
  127. package/data/build/dist/host/terminal/terminal-service.d.ts +5 -1
  128. package/data/build/dist/host/terminal/terminal-service.d.ts.map +1 -1
  129. package/data/build/dist/host/terminal/terminal-service.js +32 -0
  130. package/data/build/dist/host/terminal/terminal-service.js.map +1 -1
  131. package/data/build/dist/host/workspace-mcp/api-key-store.d.ts +16 -0
  132. package/data/build/dist/host/workspace-mcp/api-key-store.d.ts.map +1 -0
  133. package/data/build/dist/host/workspace-mcp/api-key-store.js +65 -0
  134. package/data/build/dist/host/workspace-mcp/api-key-store.js.map +1 -0
  135. package/data/build/dist/host/workspace-mcp/tools.d.ts +54 -0
  136. package/data/build/dist/host/workspace-mcp/tools.d.ts.map +1 -0
  137. package/data/build/dist/host/workspace-mcp/tools.js +800 -0
  138. package/data/build/dist/host/workspace-mcp/tools.js.map +1 -0
  139. package/data/build/dist/host/workspace-mcp/transport.d.ts +35 -0
  140. package/data/build/dist/host/workspace-mcp/transport.d.ts.map +1 -0
  141. package/data/build/dist/host/workspace-mcp/transport.js +575 -0
  142. package/data/build/dist/host/workspace-mcp/transport.js.map +1 -0
  143. package/data/build/dist/shared/contracts/cli-adapter.d.ts +2 -0
  144. package/data/build/dist/shared/contracts/cli-adapter.d.ts.map +1 -1
  145. package/data/build/dist/shared/contracts/errors.d.ts +2 -2
  146. package/data/build/dist/shared/contracts/errors.d.ts.map +1 -1
  147. package/data/build/dist/shared/contracts/errors.js +1 -1
  148. package/data/build/dist/shared/contracts/errors.js.map +1 -1
  149. package/data/build/dist/shared/contracts/magpie-management.d.ts +15 -1
  150. package/data/build/dist/shared/contracts/magpie-management.d.ts.map +1 -1
  151. package/data/build/dist/shared/contracts/session-translation.d.ts +4 -0
  152. package/data/build/dist/shared/contracts/session-translation.d.ts.map +1 -1
  153. package/data/build/dist/shared/contracts/session-translation.js +21 -0
  154. package/data/build/dist/shared/contracts/session-translation.js.map +1 -1
  155. package/data/build/dist/shared/contracts/subscription.d.ts +7 -0
  156. package/data/build/dist/shared/contracts/subscription.d.ts.map +1 -1
  157. package/data/build/dist/shared/contracts/subscription.js.map +1 -1
  158. package/data/build/dist/shared/contracts/terminal.d.ts +2 -0
  159. package/data/build/dist/shared/contracts/terminal.d.ts.map +1 -1
  160. package/data/build/dist/shared/contracts/version.d.ts +7 -7
  161. package/data/build/dist/shared/contracts/version.d.ts.map +1 -1
  162. package/data/build/dist/shared/contracts/version.js +11 -17
  163. package/data/build/dist/shared/contracts/version.js.map +1 -1
  164. package/data/build/dist/shared/index.d.ts +1 -1
  165. package/data/build/dist/shared/index.d.ts.map +1 -1
  166. package/data/build/dist/shared/index.js +1 -1
  167. package/data/build/dist/shared/index.js.map +1 -1
  168. package/package.json +3 -3
  169. package/profile/README.md +6 -6
  170. package/profile/package.json +3 -3
  171. package/profile/scripts/check-dsh-install.mjs +14 -1
  172. package/profile/version.json +2 -2
  173. package/scripts/check-dsh-install.mjs +14 -1
  174. package/version.json +2 -2
@@ -0,0 +1,575 @@
1
+ import { timingSafeEqual } from 'node:crypto';
2
+ import { createServer } from 'node:http';
3
+ const HOST = '127.0.0.1';
4
+ const PATH = '/mcp';
5
+ const DEFAULT_PROTOCOL_VERSION = '2025-11-25';
6
+ const SUPPORTED_PROTOCOL_VERSIONS = [
7
+ '2025-03-26',
8
+ '2025-06-18',
9
+ '2025-11-25',
10
+ ];
11
+ const SUPPORTED_VERSIONS = ['2026-07-28', ...SUPPORTED_PROTOCOL_VERSIONS];
12
+ const SUPPORTED_LEGACY_PROTOCOL_VERSIONS = new Set(SUPPORTED_PROTOCOL_VERSIONS);
13
+ const MAX_API_KEY_BYTES = 4096;
14
+ const DEFAULT_MAX_BODY_BYTES = 1024 * 1024;
15
+ const DEFAULT_MAX_RESPONSE_BYTES = 1024 * 1024;
16
+ const DEFAULT_MAX_CONCURRENT_REQUESTS = 16;
17
+ const DEFAULT_MAX_CONCURRENT_CALLS = 8;
18
+ const DEFAULT_MAX_WAIT_MS = 30_000;
19
+ const HARD_MAX_BODY_BYTES = 4 * 1024 * 1024;
20
+ const HARD_MAX_RESPONSE_BYTES = 4 * 1024 * 1024;
21
+ const HARD_MAX_CONCURRENT_REQUESTS = 64;
22
+ const HARD_MAX_CONCURRENT_CALLS = 32;
23
+ const HARD_MAX_WAIT_MS = 60_000;
24
+ const MIN_RESPONSE_BYTES = 128;
25
+ const MODERN_PROTOCOL_VERSION = '2026-07-28';
26
+ /**
27
+ * Starts the HTTP binding for the workspace MCP JSON-RPC subset. Tool discovery and
28
+ * execution remain injected callbacks so feature ownership stays outside this module.
29
+ */
30
+ export async function startWorkspaceMcpTransport(options) {
31
+ const apiKey = options.apiKey;
32
+ if (typeof apiKey !== 'string' || apiKey.length === 0)
33
+ return inactiveTransport();
34
+ if (Buffer.byteLength(apiKey, 'utf8') > MAX_API_KEY_BYTES)
35
+ throw new RangeError('Workspace MCP API key is too long');
36
+ const limits = {
37
+ maxBodyBytes: boundedOption(options.maxBodyBytes, DEFAULT_MAX_BODY_BYTES, HARD_MAX_BODY_BYTES),
38
+ maxResponseBytes: boundedOption(options.maxResponseBytes, DEFAULT_MAX_RESPONSE_BYTES, HARD_MAX_RESPONSE_BYTES, MIN_RESPONSE_BYTES),
39
+ maxConcurrentRequests: boundedOption(options.maxConcurrentRequests, DEFAULT_MAX_CONCURRENT_REQUESTS, HARD_MAX_CONCURRENT_REQUESTS),
40
+ maxConcurrentCalls: boundedOption(options.maxConcurrentCalls, DEFAULT_MAX_CONCURRENT_CALLS, HARD_MAX_CONCURRENT_CALLS),
41
+ maxWaitMs: boundedOption(options.maxWaitMs, DEFAULT_MAX_WAIT_MS, HARD_MAX_WAIT_MS),
42
+ };
43
+ let currentKey = apiKey;
44
+ let closed = false;
45
+ let revoked = false;
46
+ let activeRequests = 0;
47
+ let activeCalls = 0;
48
+ const lifetime = new AbortController();
49
+ let closePromise;
50
+ const server = createServer({ maxHeaderSize: 8192 }, (request, response) => {
51
+ if (closed) {
52
+ writeJson(response, 503, { error: 'transport unavailable' }, limits.maxResponseBytes);
53
+ return;
54
+ }
55
+ if (activeRequests >= limits.maxConcurrentRequests) {
56
+ response.setHeader('connection', 'close');
57
+ writeJson(response, 503, { error: 'request capacity exceeded' }, limits.maxResponseBytes);
58
+ return;
59
+ }
60
+ activeRequests += 1;
61
+ void handleHttpRequest(request, response, options, limits, () => currentKey, () => activeCalls, (delta) => { activeCalls += delta; }, lifetime.signal)
62
+ .catch(() => {
63
+ writeJson(response, 500, { error: 'internal server error' }, limits.maxResponseBytes);
64
+ })
65
+ .finally(() => { activeRequests -= 1; });
66
+ });
67
+ server.requestTimeout = HARD_MAX_WAIT_MS + 10_000;
68
+ server.headersTimeout = 10_000;
69
+ await new Promise((resolve, reject) => {
70
+ const onError = (error) => { reject(error); };
71
+ server.once('error', onError);
72
+ server.listen(0, HOST, () => {
73
+ server.off('error', onError);
74
+ resolve();
75
+ });
76
+ });
77
+ const address = server.address();
78
+ if (typeof address !== 'object' || address === null) {
79
+ await new Promise((resolve) => server.close(() => resolve()));
80
+ throw new Error('Workspace MCP listener did not bind to a TCP address');
81
+ }
82
+ const url = `http://${HOST}:${String(address.port)}${PATH}`;
83
+ const stop = (revoke) => {
84
+ if (revoke && !revoked) {
85
+ revoked = true;
86
+ currentKey = null;
87
+ lifetime.abort();
88
+ }
89
+ if (closePromise !== undefined)
90
+ return closePromise;
91
+ closed = true;
92
+ closePromise = new Promise((resolve) => {
93
+ server.close(() => {
94
+ currentKey = null;
95
+ resolve();
96
+ });
97
+ server.closeIdleConnections();
98
+ });
99
+ return closePromise;
100
+ };
101
+ return {
102
+ get active() { return !closed; },
103
+ url,
104
+ revoke: () => stop(true),
105
+ close: () => stop(false),
106
+ };
107
+ }
108
+ function inactiveTransport() {
109
+ return {
110
+ active: false,
111
+ url: null,
112
+ revoke: async () => undefined,
113
+ close: async () => undefined,
114
+ };
115
+ }
116
+ async function handleHttpRequest(request, response, options, limits, getKey, getActiveCalls, adjustActiveCalls, lifetime) {
117
+ const requestLifetime = new AbortController();
118
+ const abortRequest = () => requestLifetime.abort();
119
+ request.once('aborted', abortRequest);
120
+ response.once('close', () => { if (!response.writableEnded)
121
+ abortRequest(); });
122
+ const requestSignal = AbortSignal.any([lifetime, requestLifetime.signal]);
123
+ const key = getKey();
124
+ if (key === null || !authorized(request, key)) {
125
+ writeJson(response, 401, { error: 'unauthorized' }, limits.maxResponseBytes);
126
+ return;
127
+ }
128
+ const origin = request.headers.origin;
129
+ if (typeof origin === 'string' && !isSafeLoopbackOrigin(origin)) {
130
+ writeJson(response, 403, { error: 'forbidden origin' }, limits.maxResponseBytes);
131
+ return;
132
+ }
133
+ if (request.url !== PATH) {
134
+ writeJson(response, 404, { error: 'not found' }, limits.maxResponseBytes);
135
+ return;
136
+ }
137
+ if (request.method !== 'POST') {
138
+ response.setHeader('allow', 'POST');
139
+ writeJson(response, 405, { error: 'method not allowed' }, limits.maxResponseBytes);
140
+ return;
141
+ }
142
+ if (!isJsonContentType(request.headers['content-type'])) {
143
+ writeJson(response, 415, { error: 'application/json required' }, limits.maxResponseBytes);
144
+ return;
145
+ }
146
+ const contentLength = parseContentLength(request.headers['content-length']);
147
+ if (contentLength !== undefined && contentLength > limits.maxBodyBytes) {
148
+ request.resume();
149
+ writeJson(response, 413, { error: 'request body too large' }, limits.maxResponseBytes);
150
+ return;
151
+ }
152
+ const body = await readBody(request, response, limits.maxBodyBytes);
153
+ if (body === undefined) {
154
+ writeJson(response, 413, { error: 'request body too large' }, limits.maxResponseBytes);
155
+ return;
156
+ }
157
+ let parsed;
158
+ try {
159
+ parsed = JSON.parse(body);
160
+ }
161
+ catch {
162
+ writeRpc(response, 400, rpcError(null, -32700, 'Parse error'), limits.maxResponseBytes);
163
+ return;
164
+ }
165
+ const requestMessage = parseRequest(parsed);
166
+ if (requestMessage === undefined) {
167
+ writeRpc(response, 400, rpcError(null, -32600, 'Invalid Request'), limits.maxResponseBytes);
168
+ return;
169
+ }
170
+ if (!acceptsMcpResponse(request.headers.accept)) {
171
+ writeJson(response, 406, { error: 'application/json and text/event-stream are required in Accept' }, limits.maxResponseBytes);
172
+ return;
173
+ }
174
+ const modernRequest = isModernRequest(requestMessage);
175
+ const protocolVersion = modernRequest ? String(protocolVersionFromMeta(requestMessage)) : String(request.headers['mcp-protocol-version'] ?? DEFAULT_PROTOCOL_VERSION);
176
+ let toolCatalog;
177
+ if (modernRequest) {
178
+ const requestedVersion = protocolVersionFromMeta(requestMessage);
179
+ const headerVersion = request.headers['mcp-protocol-version'];
180
+ if (typeof requestedVersion !== 'string' || typeof headerVersion !== 'string' || requestedVersion !== headerVersion) {
181
+ writeRpc(response, 400, rpcError(requestMessage.id ?? null, -32020, 'Protocol version header mismatch'), limits.maxResponseBytes);
182
+ return;
183
+ }
184
+ if (requestedVersion !== '2026-07-28') {
185
+ writeRpc(response, 400, {
186
+ ...rpcError(requestMessage.id ?? null, -32022, 'Unsupported protocol version'),
187
+ error: { code: -32022, message: 'Unsupported protocol version', data: { supported: SUPPORTED_VERSIONS, requested: requestedVersion } },
188
+ }, limits.maxResponseBytes);
189
+ return;
190
+ }
191
+ if (!hasClientInfoMeta(requestMessage)) {
192
+ writeRpc(response, 400, rpcError(requestMessage.id ?? null, -32021, 'Missing required client metadata'), limits.maxResponseBytes);
193
+ return;
194
+ }
195
+ if (request.headers['mcp-method'] !== requestMessage.method) {
196
+ writeRpc(response, 400, rpcError(requestMessage.id ?? null, -32020, 'Mcp-Method header mismatch'), limits.maxResponseBytes);
197
+ return;
198
+ }
199
+ if (requestMessage.method === 'tools/call') {
200
+ const name = asRecord(requestMessage.params)?.name;
201
+ if (typeof name !== 'string' || request.headers['mcp-name'] !== name) {
202
+ writeRpc(response, 400, rpcError(requestMessage.id ?? null, -32020, 'Mcp-Name header mismatch'), limits.maxResponseBytes);
203
+ return;
204
+ }
205
+ toolCatalog = await safeReadToolCatalog(options, requestSignal, limits.maxWaitMs);
206
+ const schema = toolCatalog.find((tool) => tool.name === name)?.inputSchema;
207
+ if (schema === undefined || !validateArguments(schema, asRecord(requestMessage.params)?.arguments ?? {})) {
208
+ writeRpc(response, 200, rpcError(requestMessage.id ?? null, -32602, 'Invalid params'), limits.maxResponseBytes);
209
+ return;
210
+ }
211
+ }
212
+ if (requestMessage.method === 'server/discover' && !isEmptyObjectExceptMeta(requestMessage.params)) {
213
+ writeRpc(response, 200, rpcError(requestMessage.id ?? null, -32602, 'Invalid params'), limits.maxResponseBytes);
214
+ return;
215
+ }
216
+ }
217
+ else if (request.headers['mcp-protocol-version'] !== undefined && !SUPPORTED_LEGACY_PROTOCOL_VERSIONS.has(String(request.headers['mcp-protocol-version']))) {
218
+ writeRpc(response, 400, {
219
+ ...rpcError(requestMessage.id ?? null, -32022, 'Unsupported protocol version'),
220
+ error: { code: -32022, message: 'Unsupported protocol version', data: { supported: SUPPORTED_VERSIONS, requested: String(request.headers['mcp-protocol-version']) } },
221
+ }, limits.maxResponseBytes);
222
+ return;
223
+ }
224
+ if (requestMessage.id === undefined) {
225
+ if (isModernRequest(requestMessage) || requestMessage.method !== 'notifications/initialized') {
226
+ writeRpc(response, 400, rpcError(null, -32600, 'Invalid Request'), limits.maxResponseBytes);
227
+ return;
228
+ }
229
+ response.statusCode = 202;
230
+ response.end();
231
+ return;
232
+ }
233
+ const id = requestMessage.id;
234
+ try {
235
+ const result = await dispatch(requestMessage, options, limits, getActiveCalls, adjustActiveCalls, requestSignal, modernRequest, protocolVersion, toolCatalog);
236
+ writeRpc(response, 200, { jsonrpc: '2.0', id, result: result === undefined ? null : result }, limits.maxResponseBytes);
237
+ }
238
+ catch (error) {
239
+ if (error instanceof DispatchLimitError) {
240
+ writeRpc(response, 503, rpcError(id, -32000, 'Tool call capacity exceeded'), limits.maxResponseBytes);
241
+ }
242
+ else if (error instanceof DispatchTimeoutError) {
243
+ writeRpc(response, 200, rpcError(id, -32001, 'Request timed out'), limits.maxResponseBytes);
244
+ }
245
+ else if (error instanceof MethodNotFoundError) {
246
+ writeRpc(response, isModernRequest(requestMessage) ? 404 : 200, rpcError(id, -32601, 'Method not found'), limits.maxResponseBytes);
247
+ }
248
+ else if (error instanceof UnsupportedProtocolVersionError) {
249
+ writeRpc(response, 400, {
250
+ ...rpcError(id, -32022, 'Unsupported protocol version'),
251
+ error: { code: -32022, message: 'Unsupported protocol version', data: { supported: SUPPORTED_VERSIONS, requested: error.requested } },
252
+ }, limits.maxResponseBytes);
253
+ }
254
+ else if (error instanceof InvalidParamsError) {
255
+ writeRpc(response, 200, rpcError(id, -32602, 'Invalid params'), limits.maxResponseBytes);
256
+ }
257
+ else if (requestSignal.aborted || error instanceof DispatchRevokedError) {
258
+ writeRpc(response, 503, rpcError(id, -32000, 'Transport revoked'), limits.maxResponseBytes);
259
+ }
260
+ else {
261
+ writeRpc(response, 200, rpcError(id, -32603, 'Internal error'), limits.maxResponseBytes);
262
+ }
263
+ }
264
+ }
265
+ async function dispatch(request, options, limits, getActiveCalls, adjustActiveCalls, lifetime, modernRequest, protocolVersion, validatedCatalog) {
266
+ switch (request.method) {
267
+ case 'server/discover':
268
+ return {
269
+ resultType: 'complete',
270
+ supportedVersions: SUPPORTED_VERSIONS,
271
+ capabilities: { tools: {}, resources: {} },
272
+ _meta: { 'io.modelcontextprotocol/serverInfo': options.serverInfo ?? { name: 'codingns-workspace-mcp', version: '0.1.0' } },
273
+ };
274
+ case 'initialize': {
275
+ if (request.params !== undefined && !isRecord(request.params))
276
+ throw new InvalidParamsError();
277
+ const params = asRecord(request.params);
278
+ const requestedVersion = params?.protocolVersion;
279
+ if (requestedVersion !== undefined && (typeof requestedVersion !== 'string' || !SUPPORTED_LEGACY_PROTOCOL_VERSIONS.has(requestedVersion))) {
280
+ throw new UnsupportedProtocolVersionError(requestedVersion);
281
+ }
282
+ const protocolVersion = typeof requestedVersion === 'string' ? requestedVersion : DEFAULT_PROTOCOL_VERSION;
283
+ return {
284
+ protocolVersion: requestedVersion === undefined ? DEFAULT_PROTOCOL_VERSION : protocolVersion,
285
+ capabilities: { tools: {} },
286
+ serverInfo: options.serverInfo ?? { name: 'codingns-workspace-mcp', version: '0.1.0' },
287
+ };
288
+ }
289
+ case 'notifications/initialized':
290
+ throw new MethodNotFoundError();
291
+ case 'ping':
292
+ return {};
293
+ case 'tools/list': {
294
+ if (request.params !== undefined && !isRecord(request.params))
295
+ throw new InvalidParamsError();
296
+ const result = await safeReadToolCatalog(options, lifetime, limits.maxWaitMs);
297
+ return modernRequest && protocolVersion === MODERN_PROTOCOL_VERSION ? { resultType: 'complete', tools: result } : { tools: result };
298
+ }
299
+ case 'tools/call': {
300
+ const params = asRecord(request.params);
301
+ const name = params?.name;
302
+ const args = params?.arguments;
303
+ if (typeof name !== 'string' || name.length === 0 || (args !== undefined && !isRecord(args))) {
304
+ throw new InvalidParamsError();
305
+ }
306
+ const catalog = validatedCatalog ?? await safeReadToolCatalog(options, lifetime, limits.maxWaitMs);
307
+ const tool = catalog.find((item) => item.name === name);
308
+ if (tool === undefined)
309
+ throw new MethodNotFoundError();
310
+ if (!validateArguments(tool.inputSchema, args ?? {}))
311
+ throw new InvalidParamsError();
312
+ if (getActiveCalls() >= limits.maxConcurrentCalls)
313
+ throw new DispatchLimitError();
314
+ adjustActiveCalls(1);
315
+ try {
316
+ const result = await invokeBounded((signal) => options.callTool(name, args ?? {}, signal), lifetime, limits.maxWaitMs, () => adjustActiveCalls(-1));
317
+ return normalizeToolResult(result, modernRequest);
318
+ }
319
+ catch (error) {
320
+ if (lifetime.aborted)
321
+ throw new DispatchRevokedError();
322
+ throw error;
323
+ }
324
+ }
325
+ default:
326
+ throw new MethodNotFoundError();
327
+ }
328
+ }
329
+ function normalizeToolResult(value, modernRequest) {
330
+ if (modernRequest)
331
+ return value;
332
+ const result = asRecord(value);
333
+ if (result === undefined || !Object.hasOwn(result, 'resultType'))
334
+ return value;
335
+ const { resultType: _resultType, ...legacyResult } = result;
336
+ return legacyResult;
337
+ }
338
+ class DispatchLimitError extends Error {
339
+ }
340
+ class DispatchTimeoutError extends Error {
341
+ }
342
+ class DispatchRevokedError extends Error {
343
+ }
344
+ class MethodNotFoundError extends Error {
345
+ }
346
+ class InvalidParamsError extends Error {
347
+ }
348
+ class UnsupportedProtocolVersionError extends Error {
349
+ requested;
350
+ constructor(requested) {
351
+ super('Unsupported protocol version');
352
+ this.requested = requested;
353
+ }
354
+ }
355
+ function invokeBounded(callback, lifetime, maxWaitMs, onSettled) {
356
+ const controller = new AbortController();
357
+ const signal = AbortSignal.any([lifetime, controller.signal]);
358
+ const operation = Promise.resolve().then(() => callback(signal));
359
+ if (onSettled !== undefined)
360
+ void operation.then(onSettled, onSettled);
361
+ return new Promise((resolve, reject) => {
362
+ const timeout = setTimeout(() => {
363
+ controller.abort();
364
+ reject(new DispatchTimeoutError());
365
+ }, maxWaitMs);
366
+ timeout.unref?.();
367
+ const onRevoke = () => reject(new DispatchRevokedError());
368
+ lifetime.addEventListener('abort', onRevoke, { once: true });
369
+ operation.then(resolve, reject).finally(() => {
370
+ clearTimeout(timeout);
371
+ lifetime.removeEventListener('abort', onRevoke);
372
+ });
373
+ });
374
+ }
375
+ function parseRequest(value) {
376
+ if (!isRecord(value) || value.jsonrpc !== '2.0' || typeof value.method !== 'string' || value.method.length === 0)
377
+ return undefined;
378
+ const id = value.id;
379
+ if (id !== undefined && id !== null && typeof id !== 'string' && typeof id !== 'number')
380
+ return undefined;
381
+ if (typeof id === 'number' && !Number.isFinite(id))
382
+ return undefined;
383
+ return {
384
+ jsonrpc: '2.0',
385
+ ...(id === undefined ? {} : { id }),
386
+ method: value.method,
387
+ ...(value.params === undefined ? {} : { params: value.params }),
388
+ };
389
+ }
390
+ async function safeReadToolCatalog(options, lifetime, maxWaitMs) {
391
+ const tools = await invokeBounded((signal) => options.listTools(signal), lifetime, maxWaitMs);
392
+ if (!Array.isArray(tools))
393
+ throw new TypeError('Invalid tool catalog');
394
+ return tools;
395
+ }
396
+ function validateArguments(schema, value) {
397
+ const objectSchema = asRecord(schema);
398
+ const objectValue = asRecord(value);
399
+ if (objectSchema === undefined || objectSchema.type !== 'object' || objectValue === undefined)
400
+ return false;
401
+ const properties = asRecord(objectSchema.properties) ?? {};
402
+ const required = Array.isArray(objectSchema.required) ? objectSchema.required : [];
403
+ if (required.some((key) => typeof key !== 'string' || !Object.hasOwn(objectValue, key)))
404
+ return false;
405
+ if (objectSchema.additionalProperties === false && Object.keys(objectValue).some((key) => !Object.hasOwn(properties, key)))
406
+ return false;
407
+ if (typeof objectSchema.minProperties === 'number' && Object.keys(objectValue).length < objectSchema.minProperties)
408
+ return false;
409
+ if (typeof objectSchema.maxProperties === 'number' && Object.keys(objectValue).length > objectSchema.maxProperties)
410
+ return false;
411
+ for (const [key, item] of Object.entries(objectValue)) {
412
+ const propertySchema = asRecord(properties[key]);
413
+ if (propertySchema === undefined || !validateSchemaValue(propertySchema, item))
414
+ return false;
415
+ }
416
+ return true;
417
+ }
418
+ function validateSchemaValue(schema, value) {
419
+ switch (schema.type) {
420
+ case 'string':
421
+ return typeof value === 'string'
422
+ && (typeof schema.minLength !== 'number' || value.length >= schema.minLength)
423
+ && (typeof schema.maxLength !== 'number' || value.length <= schema.maxLength);
424
+ case 'integer':
425
+ return typeof value === 'number' && Number.isSafeInteger(value)
426
+ && (typeof schema.minimum !== 'number' || value >= schema.minimum)
427
+ && (typeof schema.maximum !== 'number' || value <= schema.maximum);
428
+ case 'array':
429
+ if (!Array.isArray(value) || typeof schema.items !== 'object' || schema.items === null || Array.isArray(schema.items))
430
+ return false;
431
+ if (typeof schema.minItems === 'number' && value.length < schema.minItems)
432
+ return false;
433
+ if (typeof schema.maxItems === 'number' && value.length > schema.maxItems)
434
+ return false;
435
+ return value.every((item) => validateSchemaValue(schema.items, item));
436
+ case 'object':
437
+ return validateArguments(schema, value);
438
+ default:
439
+ return false;
440
+ }
441
+ }
442
+ function isModernRequest(request) {
443
+ const params = asRecord(request.params);
444
+ const meta = asRecord(params?._meta);
445
+ return typeof meta?.['io.modelcontextprotocol/protocolVersion'] === 'string';
446
+ }
447
+ function protocolVersionFromMeta(request) {
448
+ const params = asRecord(request.params);
449
+ const meta = asRecord(params?._meta);
450
+ return meta?.['io.modelcontextprotocol/protocolVersion'];
451
+ }
452
+ function hasClientInfoMeta(request) {
453
+ const params = asRecord(request.params);
454
+ const meta = asRecord(params?._meta);
455
+ return isRecord(meta?.['io.modelcontextprotocol/clientInfo']) && isRecord(meta?.['io.modelcontextprotocol/clientCapabilities']);
456
+ }
457
+ function isEmptyObjectExceptMeta(value) {
458
+ const params = asRecord(value);
459
+ return params !== undefined && Object.keys(params).every((key) => key === '_meta');
460
+ }
461
+ function isSafeLoopbackOrigin(value) {
462
+ try {
463
+ const origin = new URL(value);
464
+ return (origin.protocol === 'http:' || origin.protocol === 'https:')
465
+ && (origin.hostname === '127.0.0.1' || origin.hostname === 'localhost' || origin.hostname === '[::1]')
466
+ && origin.href === `${origin.origin}/`
467
+ && origin.pathname === '/' && origin.search === '' && origin.hash === '';
468
+ }
469
+ catch {
470
+ return false;
471
+ }
472
+ }
473
+ function acceptsMcpResponse(value) {
474
+ if (value === undefined)
475
+ return false;
476
+ const types = value.split(',').map((part) => part.split(';', 1)[0]?.trim().toLowerCase());
477
+ return types.includes('application/json') && types.includes('text/event-stream');
478
+ }
479
+ function authorized(request, apiKey) {
480
+ const header = request.headers.authorization;
481
+ const hasBearer = typeof header === 'string' && header.startsWith('Bearer ');
482
+ const provided = Buffer.from(hasBearer ? header.slice(7) : '', 'utf8');
483
+ const expected = Buffer.from(apiKey, 'utf8');
484
+ const candidate = Buffer.alloc(expected.length);
485
+ provided.copy(candidate, 0, 0, expected.length);
486
+ const equal = timingSafeEqual(expected, candidate);
487
+ return hasBearer && provided.length === expected.length && equal;
488
+ }
489
+ function readBody(request, response, maxBytes) {
490
+ return new Promise((resolve) => {
491
+ const chunks = [];
492
+ let size = 0;
493
+ let oversized = false;
494
+ request.on('data', (chunk) => {
495
+ if (oversized)
496
+ return;
497
+ size += chunk.length;
498
+ if (size > maxBytes) {
499
+ oversized = true;
500
+ chunks.length = 0;
501
+ request.pause();
502
+ request.removeAllListeners('data');
503
+ request.resume();
504
+ response.setHeader('connection', 'close');
505
+ resolve(undefined);
506
+ return;
507
+ }
508
+ chunks.push(chunk);
509
+ });
510
+ request.on('end', () => resolve(oversized ? undefined : Buffer.concat(chunks).toString('utf8')));
511
+ request.on('error', () => resolve(undefined));
512
+ request.on('aborted', () => resolve(undefined));
513
+ });
514
+ }
515
+ function writeRpc(response, status, message, maxBytes) {
516
+ writeJson(response, status, message, maxBytes, rpcError(message.id, -32603, 'Internal error'));
517
+ }
518
+ function writeJson(response, status, value, maxBytes, fallback) {
519
+ if (response.headersSent || response.writableEnded)
520
+ return;
521
+ let body;
522
+ try {
523
+ body = JSON.stringify(value);
524
+ }
525
+ catch {
526
+ body = '';
527
+ }
528
+ if (body === '' || Buffer.byteLength(body, 'utf8') > maxBytes) {
529
+ const safeFallback = fallback ?? { error: 'response too large' };
530
+ try {
531
+ body = JSON.stringify(safeFallback);
532
+ }
533
+ catch {
534
+ body = '';
535
+ }
536
+ if (body === '' || Buffer.byteLength(body, 'utf8') > maxBytes) {
537
+ body = '{"jsonrpc":"2.0","id":null,"error":{"code":-32603,"message":"Response too large"}}';
538
+ }
539
+ if (Buffer.byteLength(body, 'utf8') > maxBytes)
540
+ body = '{}';
541
+ status = 500;
542
+ }
543
+ response.statusCode = status;
544
+ response.setHeader('content-type', 'application/json; charset=utf-8');
545
+ response.setHeader('cache-control', 'no-store');
546
+ response.setHeader('x-content-type-options', 'nosniff');
547
+ response.end(body);
548
+ }
549
+ function rpcError(id, code, message) {
550
+ return { jsonrpc: '2.0', id, error: { code, message } };
551
+ }
552
+ function asRecord(value) {
553
+ return isRecord(value) ? value : undefined;
554
+ }
555
+ function isRecord(value) {
556
+ return typeof value === 'object' && value !== null && !Array.isArray(value);
557
+ }
558
+ function isJsonContentType(value) {
559
+ return typeof value === 'string' && /^application\/json(?:\s*;|\s*$)/iu.test(value);
560
+ }
561
+ function parseContentLength(value) {
562
+ if (value === undefined || !/^\d+$/u.test(value))
563
+ return undefined;
564
+ const length = Number(value);
565
+ return Number.isSafeInteger(length) ? length : undefined;
566
+ }
567
+ function boundedOption(value, fallback, max, min = 1) {
568
+ if (value === undefined)
569
+ return fallback;
570
+ if (!Number.isSafeInteger(value) || value < min || value > max) {
571
+ throw new RangeError(`Workspace MCP limit must be an integer from ${String(min)} to ${String(max)}`);
572
+ }
573
+ return value;
574
+ }
575
+ //# sourceMappingURL=transport.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transport.js","sourceRoot":"","sources":["../../../../../src/host/workspace-mcp/transport.ts"],"names":[],"mappings":"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"}
@@ -72,6 +72,8 @@ export interface CodingNsCliModel {
72
72
  readonly efforts: readonly string[];
73
73
  /** Transient Host catalog marker; never persisted as session model provenance. */
74
74
  readonly source?: 'magpie';
75
+ /** Provider ID from the verified Magpie catalog; not the model owner or a resolved auto route. */
76
+ readonly magpieProviderId?: string;
75
77
  /** Provider-declared context capacity and token limits; absent means unknown. */
76
78
  readonly contextWindow?: number;
77
79
  readonly maxInputTokens?: number;