@kya-os/mcp-i-cloudflare 1.6.0 → 1.6.2-canary.clientinfo.20251125185654
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/dist/adapter.d.ts +2 -1
- package/dist/adapter.d.ts.map +1 -1
- package/dist/adapter.js +14 -2
- package/dist/adapter.js.map +1 -1
- package/dist/agent.d.ts +14 -0
- package/dist/agent.d.ts.map +1 -1
- package/dist/agent.js +47 -0
- package/dist/agent.js.map +1 -1
- package/dist/app.d.ts.map +1 -1
- package/dist/app.js +139 -1
- package/dist/app.js.map +1 -1
- package/dist/utils/client-info.d.ts +69 -0
- package/dist/utils/client-info.d.ts.map +1 -0
- package/dist/utils/client-info.js +178 -0
- package/dist/utils/client-info.js.map +1 -0
- package/dist/utils/error-formatter.d.ts +103 -0
- package/dist/utils/error-formatter.d.ts.map +1 -0
- package/dist/utils/error-formatter.js +245 -0
- package/dist/utils/error-formatter.js.map +1 -0
- package/dist/utils/initialize-context.d.ts +91 -0
- package/dist/utils/initialize-context.d.ts.map +1 -0
- package/dist/utils/initialize-context.js +169 -0
- package/dist/utils/initialize-context.js.map +1 -0
- package/dist/utils/oauth-identity.d.ts +58 -0
- package/dist/utils/oauth-identity.d.ts.map +1 -0
- package/dist/utils/oauth-identity.js +215 -0
- package/dist/utils/oauth-identity.js.map +1 -0
- package/package.json +1 -1
- package/dist/services/oauth-service.d.ts +0 -66
- package/dist/services/oauth-service.d.ts.map +0 -1
- package/dist/services/oauth-service.js +0 -223
- package/dist/services/oauth-service.js.map +0 -1
- package/dist/services/tool-context-builder.d.ts +0 -55
- package/dist/services/tool-context-builder.d.ts.map +0 -1
- package/dist/services/tool-context-builder.js +0 -124
- package/dist/services/tool-context-builder.js.map +0 -1
- package/dist/types/tool-context.d.ts +0 -35
- package/dist/types/tool-context.d.ts.map +0 -1
- package/dist/types/tool-context.js +0 -13
- package/dist/types/tool-context.js.map +0 -1
package/dist/app.js
CHANGED
|
@@ -147,6 +147,119 @@ export function createMCPIApp(options) {
|
|
|
147
147
|
const server = await getMcpiServer(c.env);
|
|
148
148
|
return server.handleRequest(c.req.raw, c.executionCtx);
|
|
149
149
|
});
|
|
150
|
+
// Special handling for /admin/clear-cache to route through DO
|
|
151
|
+
// This ensures cache invalidation happens at the DO's edge location
|
|
152
|
+
app.post("/admin/clear-cache", async (c) => {
|
|
153
|
+
console.log("[App] Admin clear-cache route hit - routing through DO for edge cache consistency");
|
|
154
|
+
// Map environment first (needed for auth and DO routing)
|
|
155
|
+
const mappedEnv = options.envPrefix
|
|
156
|
+
? mapPrefixedEnv(c.env, options.envPrefix)
|
|
157
|
+
: c.env;
|
|
158
|
+
// SECURITY: Validate API key before any cache operations
|
|
159
|
+
// This prevents unauthenticated cache clearing which could enable DoS attacks
|
|
160
|
+
const authHeader = c.req.raw.headers.get("Authorization");
|
|
161
|
+
if (!authHeader || !authHeader.startsWith("Bearer ")) {
|
|
162
|
+
console.warn("[App] Admin clear-cache: Missing or invalid Authorization header");
|
|
163
|
+
return new Response(JSON.stringify({
|
|
164
|
+
success: false,
|
|
165
|
+
error: {
|
|
166
|
+
code: "unauthorized",
|
|
167
|
+
message: "Unauthorized - Missing or invalid Authorization header",
|
|
168
|
+
},
|
|
169
|
+
}), {
|
|
170
|
+
status: 401,
|
|
171
|
+
headers: {
|
|
172
|
+
"Content-Type": "application/json",
|
|
173
|
+
"Access-Control-Allow-Origin": "*",
|
|
174
|
+
}
|
|
175
|
+
});
|
|
176
|
+
}
|
|
177
|
+
// Clone the request body BEFORE any operations that might consume it
|
|
178
|
+
// This ensures the fallback can still read the body if DO routing fails
|
|
179
|
+
let requestBodyText = null;
|
|
180
|
+
try {
|
|
181
|
+
requestBodyText = await c.req.raw.clone().text();
|
|
182
|
+
}
|
|
183
|
+
catch (e) {
|
|
184
|
+
console.warn("[App] Failed to clone request body:", e);
|
|
185
|
+
}
|
|
186
|
+
try {
|
|
187
|
+
// Get server instance for potential fallback
|
|
188
|
+
const server = await getMcpiServer(c.env);
|
|
189
|
+
// Get agent namespace from environment
|
|
190
|
+
// Try both prefixed and non-prefixed names
|
|
191
|
+
const prefixUpper = options.envPrefix?.toUpperCase();
|
|
192
|
+
const agentNamespace = mappedEnv.AGENT ||
|
|
193
|
+
(prefixUpper && c.env[`${prefixUpper}_AGENT`]) ||
|
|
194
|
+
c.env.AGENT;
|
|
195
|
+
if (!agentNamespace) {
|
|
196
|
+
console.warn("[App] AGENT namespace not found, falling back to AdminService cache clear");
|
|
197
|
+
// Fall back to regular AdminService handling (cache clear at this edge location)
|
|
198
|
+
// Create new request with cloned body for AdminService
|
|
199
|
+
const fallbackRequest = new Request(c.req.raw.url, {
|
|
200
|
+
method: c.req.raw.method,
|
|
201
|
+
headers: c.req.raw.headers,
|
|
202
|
+
body: requestBodyText,
|
|
203
|
+
});
|
|
204
|
+
return server.handleRequest(fallbackRequest, c.executionCtx);
|
|
205
|
+
}
|
|
206
|
+
// Create a deterministic DO ID for admin operations
|
|
207
|
+
// Using "admin-cache-clear" ensures we always route to the same DO for cache operations
|
|
208
|
+
const doId = agentNamespace.idFromName("admin-cache-clear");
|
|
209
|
+
const doStub = agentNamespace.get(doId);
|
|
210
|
+
// Forward the request to the DO for cache clearing
|
|
211
|
+
// The DO will clear cache at its pinned edge location
|
|
212
|
+
// Use cloned body text instead of streaming body to avoid consumption issues
|
|
213
|
+
const doCacheRequest = new Request(new URL("/_do/cache-clear", c.req.url).toString(), {
|
|
214
|
+
method: "POST",
|
|
215
|
+
headers: c.req.raw.headers,
|
|
216
|
+
body: requestBodyText,
|
|
217
|
+
});
|
|
218
|
+
console.log("[App] Forwarding cache-clear to DO:", {
|
|
219
|
+
doId: doId.toString(),
|
|
220
|
+
url: doCacheRequest.url,
|
|
221
|
+
});
|
|
222
|
+
const doResponse = await doStub.fetch(doCacheRequest);
|
|
223
|
+
const doResult = await doResponse.json();
|
|
224
|
+
console.log("[App] DO cache-clear result:", {
|
|
225
|
+
status: doResponse.status,
|
|
226
|
+
success: doResult?.success,
|
|
227
|
+
});
|
|
228
|
+
// Return the result from the DO
|
|
229
|
+
return new Response(JSON.stringify(doResult), {
|
|
230
|
+
status: doResponse.status,
|
|
231
|
+
headers: {
|
|
232
|
+
"Content-Type": "application/json",
|
|
233
|
+
"Access-Control-Allow-Origin": "*",
|
|
234
|
+
"Access-Control-Allow-Methods": "GET, POST, PUT, DELETE, OPTIONS",
|
|
235
|
+
"Access-Control-Allow-Headers": "Content-Type, Authorization",
|
|
236
|
+
},
|
|
237
|
+
});
|
|
238
|
+
}
|
|
239
|
+
catch (error) {
|
|
240
|
+
console.error("[App] Admin clear-cache DO routing error:", error);
|
|
241
|
+
// Fall back to regular AdminService handling on error
|
|
242
|
+
// Use cloned body for the fallback request
|
|
243
|
+
try {
|
|
244
|
+
const server = await getMcpiServer(c.env);
|
|
245
|
+
console.warn("[App] Falling back to AdminService cache clear");
|
|
246
|
+
// Create new request with cloned body for AdminService
|
|
247
|
+
const fallbackRequest = new Request(c.req.raw.url, {
|
|
248
|
+
method: c.req.raw.method,
|
|
249
|
+
headers: c.req.raw.headers,
|
|
250
|
+
body: requestBodyText,
|
|
251
|
+
});
|
|
252
|
+
return server.handleRequest(fallbackRequest, c.executionCtx);
|
|
253
|
+
}
|
|
254
|
+
catch (fallbackError) {
|
|
255
|
+
return new Response(JSON.stringify({
|
|
256
|
+
success: false,
|
|
257
|
+
error: `Cache clear failed: ${error?.message || "Unknown error"}`,
|
|
258
|
+
fallback_error: fallbackError?.message,
|
|
259
|
+
}), { status: 500, headers: { "Content-Type": "application/json" } });
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
});
|
|
150
263
|
app.all("/admin/*", async (c) => {
|
|
151
264
|
console.log("[App] Admin route (wildcard) requested:", {
|
|
152
265
|
pathname: c.req.path,
|
|
@@ -158,8 +271,25 @@ export function createMCPIApp(options) {
|
|
|
158
271
|
});
|
|
159
272
|
// Internal cache-clear endpoint that routes through a Durable Object
|
|
160
273
|
// This ensures cache clear happens at the DO's edge location, bypassing KV edge caching issues
|
|
274
|
+
// SECURITY: Requires same API key authentication as /admin/clear-cache
|
|
161
275
|
app.post("/_internal/do-cache-clear", async (c) => {
|
|
162
276
|
console.log("[App] Internal DO cache-clear route hit");
|
|
277
|
+
// SECURITY: Validate API key before any cache operations
|
|
278
|
+
// This prevents unauthenticated cache clearing which could enable DoS attacks
|
|
279
|
+
const authHeader = c.req.raw.headers.get("Authorization");
|
|
280
|
+
if (!authHeader || !authHeader.startsWith("Bearer ")) {
|
|
281
|
+
console.warn("[App] Internal cache-clear: Missing or invalid Authorization header");
|
|
282
|
+
return new Response(JSON.stringify({
|
|
283
|
+
success: false,
|
|
284
|
+
error: {
|
|
285
|
+
code: "unauthorized",
|
|
286
|
+
message: "Unauthorized - Missing or invalid Authorization header",
|
|
287
|
+
},
|
|
288
|
+
}), {
|
|
289
|
+
status: 401,
|
|
290
|
+
headers: { "Content-Type": "application/json" }
|
|
291
|
+
});
|
|
292
|
+
}
|
|
163
293
|
try {
|
|
164
294
|
// Map environment
|
|
165
295
|
const mappedEnv = options.envPrefix
|
|
@@ -175,6 +305,14 @@ export function createMCPIApp(options) {
|
|
|
175
305
|
error: "AGENT Durable Object namespace not configured",
|
|
176
306
|
}), { status: 500, headers: { "Content-Type": "application/json" } });
|
|
177
307
|
}
|
|
308
|
+
// Clone body text before forwarding to avoid stream consumption issues
|
|
309
|
+
let requestBodyText = null;
|
|
310
|
+
try {
|
|
311
|
+
requestBodyText = await c.req.raw.clone().text();
|
|
312
|
+
}
|
|
313
|
+
catch (e) {
|
|
314
|
+
console.warn("[App] Failed to clone request body:", e);
|
|
315
|
+
}
|
|
178
316
|
// Create a deterministic DO ID for admin operations
|
|
179
317
|
// Using "admin-cache-clear" ensures we always route to the same DO for cache operations
|
|
180
318
|
const doId = agentNamespace.idFromName("admin-cache-clear");
|
|
@@ -184,7 +322,7 @@ export function createMCPIApp(options) {
|
|
|
184
322
|
const internalRequest = new Request(c.req.url.replace("/_internal/do-cache-clear", "/_do/cache-clear"), {
|
|
185
323
|
method: "POST",
|
|
186
324
|
headers: c.req.raw.headers,
|
|
187
|
-
body:
|
|
325
|
+
body: requestBodyText,
|
|
188
326
|
});
|
|
189
327
|
console.log("[App] Forwarding cache-clear to DO:", {
|
|
190
328
|
doId: doId.toString(),
|
package/dist/app.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app.js","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"app.js","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Client Info Utilities
|
|
3
|
+
*
|
|
4
|
+
* Handles MCP client information extraction, normalization, and handshake payload preparation.
|
|
5
|
+
* This consolidates logic for working with client metadata across initialize and handshake.
|
|
6
|
+
*/
|
|
7
|
+
import type { HandshakeRequest, MCPClientCapabilities } from "@kya-os/contracts/handshake";
|
|
8
|
+
import type { MCPClientInfo as SessionClientInfo } from "../types/client";
|
|
9
|
+
/**
|
|
10
|
+
* Initialize context with client information
|
|
11
|
+
*/
|
|
12
|
+
export interface InitializeContext {
|
|
13
|
+
timestamp: number;
|
|
14
|
+
protocolVersion?: string;
|
|
15
|
+
capabilities?: MCPClientCapabilities;
|
|
16
|
+
clientInfo?: Partial<SessionClientInfo>;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Normalize client info from various formats
|
|
20
|
+
*
|
|
21
|
+
* @param value Client info from request (could be from initialize or handshake)
|
|
22
|
+
* @returns Normalized client info or undefined if invalid
|
|
23
|
+
*/
|
|
24
|
+
export declare function normalizeClientInfo(value: unknown): Partial<SessionClientInfo> | undefined;
|
|
25
|
+
/**
|
|
26
|
+
* Extract MCP client information from handshake request and initialize context
|
|
27
|
+
*
|
|
28
|
+
* @param request Handshake request
|
|
29
|
+
* @param initializeContext Optional context from previous initialize call
|
|
30
|
+
* @returns Extracted and normalized client info or undefined
|
|
31
|
+
*/
|
|
32
|
+
export declare function extractMCPClient(request: HandshakeRequest, initializeContext?: InitializeContext): SessionClientInfo | undefined;
|
|
33
|
+
/**
|
|
34
|
+
* Prepare handshake payload with client information from initialize context
|
|
35
|
+
*
|
|
36
|
+
* @param params Original handshake request parameters
|
|
37
|
+
* @param initializeContext Optional context from previous initialize call
|
|
38
|
+
* @returns Enhanced handshake request with client info
|
|
39
|
+
*/
|
|
40
|
+
export declare function prepareHandshakePayload(params: HandshakeRequest, initializeContext?: InitializeContext): HandshakeRequest;
|
|
41
|
+
/**
|
|
42
|
+
* Clone capabilities object (deep copy)
|
|
43
|
+
*
|
|
44
|
+
* @param capabilities Capabilities to clone
|
|
45
|
+
* @returns Cloned capabilities or undefined
|
|
46
|
+
*/
|
|
47
|
+
export declare function cloneCapabilities(capabilities: unknown): MCPClientCapabilities | undefined;
|
|
48
|
+
/**
|
|
49
|
+
* Type guard for record objects
|
|
50
|
+
*
|
|
51
|
+
* @param value Value to check
|
|
52
|
+
* @returns true if value is a record object
|
|
53
|
+
*/
|
|
54
|
+
export declare function isRecord(value: unknown): value is Record<string, unknown>;
|
|
55
|
+
/**
|
|
56
|
+
* Extract client ID from client info if available
|
|
57
|
+
*
|
|
58
|
+
* @param clientInfo Client info object
|
|
59
|
+
* @returns Client ID or undefined
|
|
60
|
+
*/
|
|
61
|
+
export declare function extractClientId(clientInfo: unknown): string | undefined;
|
|
62
|
+
/**
|
|
63
|
+
* Merge client info from multiple sources
|
|
64
|
+
*
|
|
65
|
+
* @param sources Array of potential client info sources (later sources override earlier)
|
|
66
|
+
* @returns Merged client info
|
|
67
|
+
*/
|
|
68
|
+
export declare function mergeClientInfo(...sources: (Partial<SessionClientInfo> | undefined)[]): Partial<SessionClientInfo>;
|
|
69
|
+
//# sourceMappingURL=client-info.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client-info.d.ts","sourceRoot":"","sources":["../../src/utils/client-info.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AAC3F,OAAO,KAAK,EAAE,aAAa,IAAI,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAE1E;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,YAAY,CAAC,EAAE,qBAAqB,CAAC;IACrC,UAAU,CAAC,EAAE,OAAO,CAAC,iBAAiB,CAAC,CAAC;CACzC;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,OAAO,GACb,OAAO,CAAC,iBAAiB,CAAC,GAAG,SAAS,CAuCxC;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,gBAAgB,EACzB,iBAAiB,CAAC,EAAE,iBAAiB,GACpC,iBAAiB,GAAG,SAAS,CAkD/B;AAED;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,gBAAgB,EACxB,iBAAiB,CAAC,EAAE,iBAAiB,GACpC,gBAAgB,CA8BlB;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAC/B,YAAY,EAAE,OAAO,GACpB,qBAAqB,GAAG,SAAS,CAMnC;AAED;;;;;GAKG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAEzE;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,UAAU,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAWvE;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAC7B,GAAG,OAAO,EAAE,CAAC,OAAO,CAAC,iBAAiB,CAAC,GAAG,SAAS,CAAC,EAAE,GACrD,OAAO,CAAC,iBAAiB,CAAC,CAU5B"}
|
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Client Info Utilities
|
|
3
|
+
*
|
|
4
|
+
* Handles MCP client information extraction, normalization, and handshake payload preparation.
|
|
5
|
+
* This consolidates logic for working with client metadata across initialize and handshake.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Normalize client info from various formats
|
|
9
|
+
*
|
|
10
|
+
* @param value Client info from request (could be from initialize or handshake)
|
|
11
|
+
* @returns Normalized client info or undefined if invalid
|
|
12
|
+
*/
|
|
13
|
+
export function normalizeClientInfo(value) {
|
|
14
|
+
if (!isRecord(value)) {
|
|
15
|
+
return undefined;
|
|
16
|
+
}
|
|
17
|
+
const normalized = {};
|
|
18
|
+
const record = value;
|
|
19
|
+
const name = record.name;
|
|
20
|
+
if (typeof name === "string" && name.trim().length > 0) {
|
|
21
|
+
normalized.name = name.trim();
|
|
22
|
+
}
|
|
23
|
+
const title = record.title;
|
|
24
|
+
if (typeof title === "string" && title.trim().length > 0) {
|
|
25
|
+
normalized.title = title.trim();
|
|
26
|
+
}
|
|
27
|
+
const version = record.version;
|
|
28
|
+
if (typeof version === "string" && version.trim().length > 0) {
|
|
29
|
+
normalized.version = version.trim();
|
|
30
|
+
}
|
|
31
|
+
const platform = record.platform;
|
|
32
|
+
if (typeof platform === "string" && platform.trim().length > 0) {
|
|
33
|
+
normalized.platform = platform.trim();
|
|
34
|
+
}
|
|
35
|
+
const vendor = record.vendor;
|
|
36
|
+
if (typeof vendor === "string" && vendor.trim().length > 0) {
|
|
37
|
+
normalized.vendor = vendor.trim();
|
|
38
|
+
}
|
|
39
|
+
const persistentId = record.persistentId;
|
|
40
|
+
if (typeof persistentId === "string" && persistentId.trim().length > 0) {
|
|
41
|
+
normalized.persistentId = persistentId.trim();
|
|
42
|
+
}
|
|
43
|
+
return Object.keys(normalized).length > 0 ? normalized : undefined;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Extract MCP client information from handshake request and initialize context
|
|
47
|
+
*
|
|
48
|
+
* @param request Handshake request
|
|
49
|
+
* @param initializeContext Optional context from previous initialize call
|
|
50
|
+
* @returns Extracted and normalized client info or undefined
|
|
51
|
+
*/
|
|
52
|
+
export function extractMCPClient(request, initializeContext) {
|
|
53
|
+
const fromHandshake = normalizeClientInfo(request.clientInfo);
|
|
54
|
+
const merged = {
|
|
55
|
+
...(initializeContext?.clientInfo ?? {}),
|
|
56
|
+
...(fromHandshake ?? {}),
|
|
57
|
+
};
|
|
58
|
+
const handshakeClientId = isRecord(request.clientInfo) &&
|
|
59
|
+
typeof request.clientInfo.clientId === "string" &&
|
|
60
|
+
request.clientInfo.clientId.trim().length > 0
|
|
61
|
+
? request.clientInfo.clientId.trim()
|
|
62
|
+
: undefined;
|
|
63
|
+
const hasClientMetadata = Object.keys(merged).length > 0 ||
|
|
64
|
+
handshakeClientId ||
|
|
65
|
+
typeof request.clientProtocolVersion === "string" ||
|
|
66
|
+
isRecord(request.clientCapabilities);
|
|
67
|
+
if (!hasClientMetadata) {
|
|
68
|
+
return undefined;
|
|
69
|
+
}
|
|
70
|
+
const nameValue = merged.name;
|
|
71
|
+
const name = typeof nameValue === "string" && nameValue.trim().length > 0
|
|
72
|
+
? nameValue.trim()
|
|
73
|
+
: "unknown";
|
|
74
|
+
const clientId = handshakeClientId || crypto.randomUUID();
|
|
75
|
+
const capabilities = isRecord(request.clientCapabilities)
|
|
76
|
+
? request.clientCapabilities
|
|
77
|
+
: initializeContext?.capabilities;
|
|
78
|
+
return {
|
|
79
|
+
name,
|
|
80
|
+
title: merged.title,
|
|
81
|
+
version: merged.version,
|
|
82
|
+
platform: merged.platform,
|
|
83
|
+
vendor: merged.vendor,
|
|
84
|
+
persistentId: merged.persistentId,
|
|
85
|
+
protocolVersion: request.clientProtocolVersion ??
|
|
86
|
+
initializeContext?.protocolVersion ??
|
|
87
|
+
merged.protocolVersion,
|
|
88
|
+
capabilities,
|
|
89
|
+
clientId,
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Prepare handshake payload with client information from initialize context
|
|
94
|
+
*
|
|
95
|
+
* @param params Original handshake request parameters
|
|
96
|
+
* @param initializeContext Optional context from previous initialize call
|
|
97
|
+
* @returns Enhanced handshake request with client info
|
|
98
|
+
*/
|
|
99
|
+
export function prepareHandshakePayload(params, initializeContext) {
|
|
100
|
+
const payload = {
|
|
101
|
+
...params,
|
|
102
|
+
};
|
|
103
|
+
if (!payload.clientProtocolVersion && initializeContext?.protocolVersion) {
|
|
104
|
+
payload.clientProtocolVersion = initializeContext.protocolVersion;
|
|
105
|
+
}
|
|
106
|
+
if (!payload.clientCapabilities && initializeContext?.capabilities) {
|
|
107
|
+
payload.clientCapabilities = initializeContext.capabilities;
|
|
108
|
+
}
|
|
109
|
+
if (!payload.clientInfo && initializeContext?.clientInfo?.name) {
|
|
110
|
+
const source = initializeContext.clientInfo;
|
|
111
|
+
const name = source.name;
|
|
112
|
+
if (!name) {
|
|
113
|
+
return payload;
|
|
114
|
+
}
|
|
115
|
+
payload.clientInfo = {
|
|
116
|
+
name,
|
|
117
|
+
...(source.title ? { title: source.title } : {}),
|
|
118
|
+
...(source.version ? { version: source.version } : {}),
|
|
119
|
+
...(source.platform ? { platform: source.platform } : {}),
|
|
120
|
+
...(source.vendor ? { vendor: source.vendor } : {}),
|
|
121
|
+
...(source.persistentId ? { persistentId: source.persistentId } : {}),
|
|
122
|
+
};
|
|
123
|
+
}
|
|
124
|
+
return payload;
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Clone capabilities object (deep copy)
|
|
128
|
+
*
|
|
129
|
+
* @param capabilities Capabilities to clone
|
|
130
|
+
* @returns Cloned capabilities or undefined
|
|
131
|
+
*/
|
|
132
|
+
export function cloneCapabilities(capabilities) {
|
|
133
|
+
if (!isRecord(capabilities)) {
|
|
134
|
+
return undefined;
|
|
135
|
+
}
|
|
136
|
+
return JSON.parse(JSON.stringify(capabilities));
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* Type guard for record objects
|
|
140
|
+
*
|
|
141
|
+
* @param value Value to check
|
|
142
|
+
* @returns true if value is a record object
|
|
143
|
+
*/
|
|
144
|
+
export function isRecord(value) {
|
|
145
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* Extract client ID from client info if available
|
|
149
|
+
*
|
|
150
|
+
* @param clientInfo Client info object
|
|
151
|
+
* @returns Client ID or undefined
|
|
152
|
+
*/
|
|
153
|
+
export function extractClientId(clientInfo) {
|
|
154
|
+
if (!isRecord(clientInfo)) {
|
|
155
|
+
return undefined;
|
|
156
|
+
}
|
|
157
|
+
const clientId = clientInfo.clientId;
|
|
158
|
+
if (typeof clientId === "string" && clientId.trim().length > 0) {
|
|
159
|
+
return clientId.trim();
|
|
160
|
+
}
|
|
161
|
+
return undefined;
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* Merge client info from multiple sources
|
|
165
|
+
*
|
|
166
|
+
* @param sources Array of potential client info sources (later sources override earlier)
|
|
167
|
+
* @returns Merged client info
|
|
168
|
+
*/
|
|
169
|
+
export function mergeClientInfo(...sources) {
|
|
170
|
+
const merged = {};
|
|
171
|
+
for (const source of sources) {
|
|
172
|
+
if (source) {
|
|
173
|
+
Object.assign(merged, source);
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
return merged;
|
|
177
|
+
}
|
|
178
|
+
//# sourceMappingURL=client-info.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client-info.js","sourceRoot":"","sources":["../../src/utils/client-info.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Error Formatter Utility
|
|
3
|
+
*
|
|
4
|
+
* Provides consistent JSON-RPC error response formatting for all error types.
|
|
5
|
+
* Handles special cases like DelegationRequiredError and OAuthRequiredError.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* JSON-RPC error response structure
|
|
9
|
+
*/
|
|
10
|
+
export interface JsonRpcErrorResponse {
|
|
11
|
+
jsonrpc: string;
|
|
12
|
+
id: unknown;
|
|
13
|
+
error: {
|
|
14
|
+
code: number;
|
|
15
|
+
message: string;
|
|
16
|
+
data?: any;
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Error codes for different error types
|
|
21
|
+
*/
|
|
22
|
+
export declare const ERROR_CODES: {
|
|
23
|
+
readonly PARSE_ERROR: -32700;
|
|
24
|
+
readonly INVALID_REQUEST: -32600;
|
|
25
|
+
readonly METHOD_NOT_FOUND: -32601;
|
|
26
|
+
readonly INVALID_PARAMS: -32602;
|
|
27
|
+
readonly INTERNAL_ERROR: -32603;
|
|
28
|
+
readonly DELEGATION_REQUIRED: -32001;
|
|
29
|
+
readonly OAUTH_REQUIRED: -32002;
|
|
30
|
+
readonly AUTHORIZATION_REQUIRED: -32003;
|
|
31
|
+
readonly SESSION_EXPIRED: -32004;
|
|
32
|
+
};
|
|
33
|
+
/**
|
|
34
|
+
* Format a generic error into JSON-RPC response
|
|
35
|
+
*
|
|
36
|
+
* @param error The error to format
|
|
37
|
+
* @param id Request ID from JSON-RPC request
|
|
38
|
+
* @returns Formatted JSON-RPC error response
|
|
39
|
+
*/
|
|
40
|
+
export declare function formatJsonRpcError(error: unknown, id: unknown): JsonRpcErrorResponse;
|
|
41
|
+
/**
|
|
42
|
+
* Format DelegationRequiredError into JSON-RPC response
|
|
43
|
+
*
|
|
44
|
+
* @param error Delegation required error
|
|
45
|
+
* @param id Request ID
|
|
46
|
+
* @returns Formatted error response with consent URL
|
|
47
|
+
*/
|
|
48
|
+
export declare function formatDelegationError(error: any, id: unknown): JsonRpcErrorResponse;
|
|
49
|
+
/**
|
|
50
|
+
* Format OAuthRequiredError into JSON-RPC response
|
|
51
|
+
*
|
|
52
|
+
* @param error OAuth required error
|
|
53
|
+
* @param id Request ID
|
|
54
|
+
* @returns Formatted error response with OAuth URL
|
|
55
|
+
*/
|
|
56
|
+
export declare function formatOAuthError(error: any, id: unknown): JsonRpcErrorResponse;
|
|
57
|
+
/**
|
|
58
|
+
* Check if error is a DelegationRequiredError
|
|
59
|
+
*
|
|
60
|
+
* @param error Error to check
|
|
61
|
+
* @returns true if it's a delegation required error
|
|
62
|
+
*/
|
|
63
|
+
export declare function isDelegationRequiredError(error: unknown): boolean;
|
|
64
|
+
/**
|
|
65
|
+
* Check if error is an OAuthRequiredError
|
|
66
|
+
*
|
|
67
|
+
* @param error Error to check
|
|
68
|
+
* @returns true if it's an OAuth required error
|
|
69
|
+
*/
|
|
70
|
+
export declare function isOAuthRequiredError(error: unknown): boolean;
|
|
71
|
+
/**
|
|
72
|
+
* Format method not found error
|
|
73
|
+
*
|
|
74
|
+
* @param method The method that was not found
|
|
75
|
+
* @param id Request ID
|
|
76
|
+
* @returns Formatted error response
|
|
77
|
+
*/
|
|
78
|
+
export declare function formatMethodNotFoundError(method: string, id: unknown): JsonRpcErrorResponse;
|
|
79
|
+
/**
|
|
80
|
+
* Format tool not found error
|
|
81
|
+
*
|
|
82
|
+
* @param toolName The tool that was not found
|
|
83
|
+
* @param id Request ID
|
|
84
|
+
* @returns Formatted error response
|
|
85
|
+
*/
|
|
86
|
+
export declare function formatToolNotFoundError(toolName: string, id: unknown): JsonRpcErrorResponse;
|
|
87
|
+
/**
|
|
88
|
+
* Format session expired error
|
|
89
|
+
*
|
|
90
|
+
* @param sessionId The expired session ID
|
|
91
|
+
* @param id Request ID
|
|
92
|
+
* @returns Formatted error response
|
|
93
|
+
*/
|
|
94
|
+
export declare function formatSessionExpiredError(sessionId: string, id: unknown): JsonRpcErrorResponse;
|
|
95
|
+
/**
|
|
96
|
+
* Create a success response wrapper
|
|
97
|
+
*
|
|
98
|
+
* @param result The result to wrap
|
|
99
|
+
* @param id Request ID
|
|
100
|
+
* @returns JSON-RPC success response
|
|
101
|
+
*/
|
|
102
|
+
export declare function formatSuccessResponse(result: any, id: unknown): any;
|
|
103
|
+
//# sourceMappingURL=error-formatter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"error-formatter.d.ts","sourceRoot":"","sources":["../../src/utils/error-formatter.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,MAAM,CAAC;IAChB,EAAE,EAAE,OAAO,CAAC;IACZ,KAAK,EAAE;QACL,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,CAAC,EAAE,GAAG,CAAC;KACZ,CAAC;CACH;AAED;;GAEG;AACH,eAAO,MAAM,WAAW;;;;;;;;;;CAad,CAAC;AAEX;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,GAAG,oBAAoB,CAoDpF;AAED;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,OAAO,GAAG,oBAAoB,CA4BnF;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,OAAO,GAAG,oBAAoB,CA8B9E;AAED;;;;;GAKG;AACH,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAWjE;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAW5D;AAED;;;;;;GAMG;AACH,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,GAAG,oBAAoB,CAS3F;AAED;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,GAAG,oBAAoB,CAS3F;AAED;;;;;;GAMG;AACH,wBAAgB,yBAAyB,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,GAAG,oBAAoB,CAY9F;AAED;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE,EAAE,OAAO,GAAG,GAAG,CAMnE"}
|