gitx.do 0.0.1

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 (167) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +156 -0
  3. package/dist/durable-object/object-store.d.ts +113 -0
  4. package/dist/durable-object/object-store.d.ts.map +1 -0
  5. package/dist/durable-object/object-store.js +387 -0
  6. package/dist/durable-object/object-store.js.map +1 -0
  7. package/dist/durable-object/schema.d.ts +17 -0
  8. package/dist/durable-object/schema.d.ts.map +1 -0
  9. package/dist/durable-object/schema.js +43 -0
  10. package/dist/durable-object/schema.js.map +1 -0
  11. package/dist/durable-object/wal.d.ts +111 -0
  12. package/dist/durable-object/wal.d.ts.map +1 -0
  13. package/dist/durable-object/wal.js +200 -0
  14. package/dist/durable-object/wal.js.map +1 -0
  15. package/dist/index.d.ts +24 -0
  16. package/dist/index.d.ts.map +1 -0
  17. package/dist/index.js +101 -0
  18. package/dist/index.js.map +1 -0
  19. package/dist/mcp/adapter.d.ts +231 -0
  20. package/dist/mcp/adapter.d.ts.map +1 -0
  21. package/dist/mcp/adapter.js +502 -0
  22. package/dist/mcp/adapter.js.map +1 -0
  23. package/dist/mcp/sandbox.d.ts +261 -0
  24. package/dist/mcp/sandbox.d.ts.map +1 -0
  25. package/dist/mcp/sandbox.js +983 -0
  26. package/dist/mcp/sandbox.js.map +1 -0
  27. package/dist/mcp/sdk-adapter.d.ts +413 -0
  28. package/dist/mcp/sdk-adapter.d.ts.map +1 -0
  29. package/dist/mcp/sdk-adapter.js +672 -0
  30. package/dist/mcp/sdk-adapter.js.map +1 -0
  31. package/dist/mcp/tools.d.ts +133 -0
  32. package/dist/mcp/tools.d.ts.map +1 -0
  33. package/dist/mcp/tools.js +1604 -0
  34. package/dist/mcp/tools.js.map +1 -0
  35. package/dist/ops/blame.d.ts +148 -0
  36. package/dist/ops/blame.d.ts.map +1 -0
  37. package/dist/ops/blame.js +754 -0
  38. package/dist/ops/blame.js.map +1 -0
  39. package/dist/ops/branch.d.ts +215 -0
  40. package/dist/ops/branch.d.ts.map +1 -0
  41. package/dist/ops/branch.js +608 -0
  42. package/dist/ops/branch.js.map +1 -0
  43. package/dist/ops/commit-traversal.d.ts +209 -0
  44. package/dist/ops/commit-traversal.d.ts.map +1 -0
  45. package/dist/ops/commit-traversal.js +755 -0
  46. package/dist/ops/commit-traversal.js.map +1 -0
  47. package/dist/ops/commit.d.ts +221 -0
  48. package/dist/ops/commit.d.ts.map +1 -0
  49. package/dist/ops/commit.js +606 -0
  50. package/dist/ops/commit.js.map +1 -0
  51. package/dist/ops/merge-base.d.ts +223 -0
  52. package/dist/ops/merge-base.d.ts.map +1 -0
  53. package/dist/ops/merge-base.js +581 -0
  54. package/dist/ops/merge-base.js.map +1 -0
  55. package/dist/ops/merge.d.ts +385 -0
  56. package/dist/ops/merge.d.ts.map +1 -0
  57. package/dist/ops/merge.js +1203 -0
  58. package/dist/ops/merge.js.map +1 -0
  59. package/dist/ops/tag.d.ts +182 -0
  60. package/dist/ops/tag.d.ts.map +1 -0
  61. package/dist/ops/tag.js +608 -0
  62. package/dist/ops/tag.js.map +1 -0
  63. package/dist/ops/tree-builder.d.ts +82 -0
  64. package/dist/ops/tree-builder.d.ts.map +1 -0
  65. package/dist/ops/tree-builder.js +246 -0
  66. package/dist/ops/tree-builder.js.map +1 -0
  67. package/dist/ops/tree-diff.d.ts +243 -0
  68. package/dist/ops/tree-diff.d.ts.map +1 -0
  69. package/dist/ops/tree-diff.js +657 -0
  70. package/dist/ops/tree-diff.js.map +1 -0
  71. package/dist/pack/delta.d.ts +68 -0
  72. package/dist/pack/delta.d.ts.map +1 -0
  73. package/dist/pack/delta.js +343 -0
  74. package/dist/pack/delta.js.map +1 -0
  75. package/dist/pack/format.d.ts +84 -0
  76. package/dist/pack/format.d.ts.map +1 -0
  77. package/dist/pack/format.js +261 -0
  78. package/dist/pack/format.js.map +1 -0
  79. package/dist/pack/full-generation.d.ts +327 -0
  80. package/dist/pack/full-generation.d.ts.map +1 -0
  81. package/dist/pack/full-generation.js +1159 -0
  82. package/dist/pack/full-generation.js.map +1 -0
  83. package/dist/pack/generation.d.ts +118 -0
  84. package/dist/pack/generation.d.ts.map +1 -0
  85. package/dist/pack/generation.js +459 -0
  86. package/dist/pack/generation.js.map +1 -0
  87. package/dist/pack/index.d.ts +181 -0
  88. package/dist/pack/index.d.ts.map +1 -0
  89. package/dist/pack/index.js +552 -0
  90. package/dist/pack/index.js.map +1 -0
  91. package/dist/refs/branch.d.ts +224 -0
  92. package/dist/refs/branch.d.ts.map +1 -0
  93. package/dist/refs/branch.js +170 -0
  94. package/dist/refs/branch.js.map +1 -0
  95. package/dist/refs/storage.d.ts +208 -0
  96. package/dist/refs/storage.d.ts.map +1 -0
  97. package/dist/refs/storage.js +421 -0
  98. package/dist/refs/storage.js.map +1 -0
  99. package/dist/refs/tag.d.ts +230 -0
  100. package/dist/refs/tag.d.ts.map +1 -0
  101. package/dist/refs/tag.js +188 -0
  102. package/dist/refs/tag.js.map +1 -0
  103. package/dist/storage/lru-cache.d.ts +188 -0
  104. package/dist/storage/lru-cache.d.ts.map +1 -0
  105. package/dist/storage/lru-cache.js +410 -0
  106. package/dist/storage/lru-cache.js.map +1 -0
  107. package/dist/storage/object-index.d.ts +140 -0
  108. package/dist/storage/object-index.d.ts.map +1 -0
  109. package/dist/storage/object-index.js +166 -0
  110. package/dist/storage/object-index.js.map +1 -0
  111. package/dist/storage/r2-pack.d.ts +394 -0
  112. package/dist/storage/r2-pack.d.ts.map +1 -0
  113. package/dist/storage/r2-pack.js +1062 -0
  114. package/dist/storage/r2-pack.js.map +1 -0
  115. package/dist/tiered/cdc-pipeline.d.ts +316 -0
  116. package/dist/tiered/cdc-pipeline.d.ts.map +1 -0
  117. package/dist/tiered/cdc-pipeline.js +771 -0
  118. package/dist/tiered/cdc-pipeline.js.map +1 -0
  119. package/dist/tiered/migration.d.ts +242 -0
  120. package/dist/tiered/migration.d.ts.map +1 -0
  121. package/dist/tiered/migration.js +592 -0
  122. package/dist/tiered/migration.js.map +1 -0
  123. package/dist/tiered/parquet-writer.d.ts +248 -0
  124. package/dist/tiered/parquet-writer.d.ts.map +1 -0
  125. package/dist/tiered/parquet-writer.js +555 -0
  126. package/dist/tiered/parquet-writer.js.map +1 -0
  127. package/dist/tiered/read-path.d.ts +141 -0
  128. package/dist/tiered/read-path.d.ts.map +1 -0
  129. package/dist/tiered/read-path.js +204 -0
  130. package/dist/tiered/read-path.js.map +1 -0
  131. package/dist/types/objects.d.ts +53 -0
  132. package/dist/types/objects.d.ts.map +1 -0
  133. package/dist/types/objects.js +291 -0
  134. package/dist/types/objects.js.map +1 -0
  135. package/dist/types/storage.d.ts +117 -0
  136. package/dist/types/storage.d.ts.map +1 -0
  137. package/dist/types/storage.js +8 -0
  138. package/dist/types/storage.js.map +1 -0
  139. package/dist/utils/hash.d.ts +31 -0
  140. package/dist/utils/hash.d.ts.map +1 -0
  141. package/dist/utils/hash.js +60 -0
  142. package/dist/utils/hash.js.map +1 -0
  143. package/dist/utils/sha1.d.ts +26 -0
  144. package/dist/utils/sha1.d.ts.map +1 -0
  145. package/dist/utils/sha1.js +127 -0
  146. package/dist/utils/sha1.js.map +1 -0
  147. package/dist/wire/capabilities.d.ts +236 -0
  148. package/dist/wire/capabilities.d.ts.map +1 -0
  149. package/dist/wire/capabilities.js +437 -0
  150. package/dist/wire/capabilities.js.map +1 -0
  151. package/dist/wire/pkt-line.d.ts +67 -0
  152. package/dist/wire/pkt-line.d.ts.map +1 -0
  153. package/dist/wire/pkt-line.js +145 -0
  154. package/dist/wire/pkt-line.js.map +1 -0
  155. package/dist/wire/receive-pack.d.ts +302 -0
  156. package/dist/wire/receive-pack.d.ts.map +1 -0
  157. package/dist/wire/receive-pack.js +885 -0
  158. package/dist/wire/receive-pack.js.map +1 -0
  159. package/dist/wire/smart-http.d.ts +321 -0
  160. package/dist/wire/smart-http.d.ts.map +1 -0
  161. package/dist/wire/smart-http.js +654 -0
  162. package/dist/wire/smart-http.js.map +1 -0
  163. package/dist/wire/upload-pack.d.ts +333 -0
  164. package/dist/wire/upload-pack.d.ts.map +1 -0
  165. package/dist/wire/upload-pack.js +850 -0
  166. package/dist/wire/upload-pack.js.map +1 -0
  167. package/package.json +61 -0
@@ -0,0 +1,502 @@
1
+ /**
2
+ * MCP (Model Context Protocol) SDK Adapter
3
+ *
4
+ * This module provides an adapter that bridges the MCP protocol to git operations,
5
+ * handling request/response, tool registration/invocation, resource listing,
6
+ * and error handling.
7
+ */
8
+ import { gitTools } from './tools';
9
+ /**
10
+ * JSON-RPC 2.0 error codes and MCP-specific error codes
11
+ */
12
+ export var MCPErrorCode;
13
+ (function (MCPErrorCode) {
14
+ // JSON-RPC standard error codes
15
+ MCPErrorCode[MCPErrorCode["PARSE_ERROR"] = -32700] = "PARSE_ERROR";
16
+ MCPErrorCode[MCPErrorCode["INVALID_REQUEST"] = -32600] = "INVALID_REQUEST";
17
+ MCPErrorCode[MCPErrorCode["METHOD_NOT_FOUND"] = -32601] = "METHOD_NOT_FOUND";
18
+ MCPErrorCode[MCPErrorCode["INVALID_PARAMS"] = -32602] = "INVALID_PARAMS";
19
+ MCPErrorCode[MCPErrorCode["INTERNAL_ERROR"] = -32603] = "INTERNAL_ERROR";
20
+ // MCP-specific error codes (must be < -32000 per JSON-RPC spec)
21
+ MCPErrorCode[MCPErrorCode["RESOURCE_NOT_FOUND"] = -32001] = "RESOURCE_NOT_FOUND";
22
+ // TOOL_NOT_FOUND maps to METHOD_NOT_FOUND as tools are essentially methods
23
+ MCPErrorCode[MCPErrorCode["TOOL_NOT_FOUND"] = -32601] = "TOOL_NOT_FOUND";
24
+ MCPErrorCode[MCPErrorCode["PROMPT_NOT_FOUND"] = -32003] = "PROMPT_NOT_FOUND";
25
+ MCPErrorCode[MCPErrorCode["CAPABILITY_NOT_SUPPORTED"] = -32004] = "CAPABILITY_NOT_SUPPORTED";
26
+ })(MCPErrorCode || (MCPErrorCode = {}));
27
+ /**
28
+ * Custom error class for MCP errors
29
+ */
30
+ export class MCPError extends Error {
31
+ code;
32
+ data;
33
+ constructor(code, message, data) {
34
+ super(message);
35
+ this.code = code;
36
+ this.data = data;
37
+ this.name = 'MCPError';
38
+ }
39
+ toJSON() {
40
+ const result = {
41
+ code: this.code,
42
+ message: this.message,
43
+ };
44
+ if (this.data !== undefined) {
45
+ result.data = this.data;
46
+ }
47
+ return result;
48
+ }
49
+ }
50
+ /**
51
+ * MCP Adapter class that bridges MCP protocol to git operations
52
+ */
53
+ export class MCPAdapter {
54
+ config;
55
+ initialized = false;
56
+ tools = new Map();
57
+ resources = new Map();
58
+ prompts = new Map();
59
+ constructor(config) {
60
+ this.config = {
61
+ name: config?.name || 'gitx.do',
62
+ version: config?.version || '1.0.0',
63
+ capabilities: config?.capabilities || ['tools'],
64
+ };
65
+ }
66
+ /**
67
+ * Get the server configuration
68
+ */
69
+ getConfig() {
70
+ return { ...this.config };
71
+ }
72
+ /**
73
+ * Check if adapter has a specific capability
74
+ */
75
+ hasCapability(capability) {
76
+ return this.config.capabilities.includes(capability);
77
+ }
78
+ /**
79
+ * Check if the adapter is initialized
80
+ */
81
+ isInitialized() {
82
+ return this.initialized;
83
+ }
84
+ /**
85
+ * Start the MCP adapter
86
+ */
87
+ async start() {
88
+ if (this.initialized) {
89
+ throw new Error('MCP adapter is already initialized/started');
90
+ }
91
+ this.initialized = true;
92
+ }
93
+ /**
94
+ * Stop the MCP adapter
95
+ */
96
+ async stop() {
97
+ if (!this.initialized) {
98
+ throw new Error('MCP adapter is not initialized/not started');
99
+ }
100
+ this.initialized = false;
101
+ this.tools.clear();
102
+ this.resources.clear();
103
+ this.prompts.clear();
104
+ }
105
+ /**
106
+ * Register a tool
107
+ */
108
+ registerTool(toolInfo) {
109
+ if (this.tools.has(toolInfo.name)) {
110
+ throw new Error(`Tool '${toolInfo.name}' is already registered (duplicate)`);
111
+ }
112
+ this.tools.set(toolInfo.name, toolInfo);
113
+ }
114
+ /**
115
+ * Unregister a tool by name
116
+ */
117
+ unregisterTool(name) {
118
+ if (!this.tools.has(name)) {
119
+ throw new Error(`Tool '${name}' not found (does not exist)`);
120
+ }
121
+ this.tools.delete(name);
122
+ }
123
+ /**
124
+ * List all registered tools (without handlers)
125
+ */
126
+ listTools() {
127
+ const result = [];
128
+ for (const tool of this.tools.values()) {
129
+ result.push({
130
+ name: tool.name,
131
+ description: tool.description,
132
+ inputSchema: tool.inputSchema,
133
+ });
134
+ }
135
+ return result;
136
+ }
137
+ /**
138
+ * Get a tool by name (without handler)
139
+ */
140
+ getTool(name) {
141
+ const tool = this.tools.get(name);
142
+ if (!tool)
143
+ return undefined;
144
+ return {
145
+ name: tool.name,
146
+ description: tool.description,
147
+ inputSchema: tool.inputSchema,
148
+ };
149
+ }
150
+ /**
151
+ * Register all git tools
152
+ */
153
+ registerGitTools() {
154
+ for (const tool of gitTools) {
155
+ if (!this.tools.has(tool.name)) {
156
+ this.registerTool({
157
+ name: tool.name,
158
+ description: tool.description,
159
+ inputSchema: tool.inputSchema,
160
+ handler: tool.handler,
161
+ });
162
+ }
163
+ }
164
+ }
165
+ /**
166
+ * Register a resource
167
+ */
168
+ registerResource(resourceInfo) {
169
+ this.resources.set(resourceInfo.uri, resourceInfo);
170
+ }
171
+ /**
172
+ * Register a prompt
173
+ */
174
+ registerPrompt(promptInfo) {
175
+ this.prompts.set(promptInfo.name, promptInfo);
176
+ }
177
+ /**
178
+ * Handle a raw JSON string request
179
+ */
180
+ async handleRawRequest(rawRequest) {
181
+ let request;
182
+ try {
183
+ request = JSON.parse(rawRequest);
184
+ }
185
+ catch {
186
+ return {
187
+ jsonrpc: '2.0',
188
+ error: {
189
+ code: MCPErrorCode.PARSE_ERROR,
190
+ message: 'Parse error: Invalid JSON',
191
+ },
192
+ };
193
+ }
194
+ const response = await this.handleRequest(request);
195
+ return response ?? {
196
+ jsonrpc: '2.0',
197
+ error: {
198
+ code: MCPErrorCode.INVALID_REQUEST,
199
+ message: 'Invalid Request: notification without id',
200
+ },
201
+ };
202
+ }
203
+ /**
204
+ * Handle a batch of requests
205
+ */
206
+ async handleBatchRequest(requests) {
207
+ const responses = [];
208
+ for (const request of requests) {
209
+ const response = await this.handleRequest(request);
210
+ // Only include responses for requests with id (not notifications)
211
+ if (response !== undefined) {
212
+ responses.push(response);
213
+ }
214
+ }
215
+ return responses;
216
+ }
217
+ /**
218
+ * Handle a single MCP request
219
+ */
220
+ async handleRequest(request) {
221
+ // Handle notifications (no id) - they don't expect a response
222
+ if (request.id === undefined) {
223
+ // Process notification but don't return a response
224
+ return undefined;
225
+ }
226
+ // Validate jsonrpc version
227
+ if (request.jsonrpc !== '2.0') {
228
+ return this.errorResponse(request.id, MCPErrorCode.INVALID_REQUEST, 'Invalid Request: missing or invalid jsonrpc version');
229
+ }
230
+ try {
231
+ // Route to appropriate handler based on method
232
+ switch (request.method) {
233
+ case 'initialize':
234
+ return this.handleInitialize(request);
235
+ case 'tools/list':
236
+ return this.handleToolsList(request);
237
+ case 'tools/call':
238
+ return this.handleToolsCall(request);
239
+ case 'resources/list':
240
+ return this.handleResourcesList(request);
241
+ case 'resources/read':
242
+ return this.handleResourcesRead(request);
243
+ case 'prompts/list':
244
+ return this.handlePromptsList(request);
245
+ case 'prompts/get':
246
+ return this.handlePromptsGet(request);
247
+ default:
248
+ return this.errorResponse(request.id, MCPErrorCode.METHOD_NOT_FOUND, `Method not found: ${request.method}`);
249
+ }
250
+ }
251
+ catch (error) {
252
+ if (error instanceof MCPError) {
253
+ return this.errorResponse(request.id, error.code, error.message, error.data);
254
+ }
255
+ return this.errorResponse(request.id, MCPErrorCode.INTERNAL_ERROR, error instanceof Error ? error.message : 'Internal error');
256
+ }
257
+ }
258
+ /**
259
+ * Handle initialize request
260
+ */
261
+ handleInitialize(request) {
262
+ const params = request.params || {};
263
+ const protocolVersion = params.protocolVersion || '2024-11-05';
264
+ const capabilities = {};
265
+ if (this.hasCapability('tools')) {
266
+ capabilities.tools = {};
267
+ }
268
+ if (this.hasCapability('resources')) {
269
+ capabilities.resources = {};
270
+ }
271
+ if (this.hasCapability('prompts')) {
272
+ capabilities.prompts = {};
273
+ }
274
+ return {
275
+ jsonrpc: '2.0',
276
+ id: request.id,
277
+ result: {
278
+ protocolVersion,
279
+ serverInfo: {
280
+ name: this.config.name,
281
+ version: this.config.version,
282
+ },
283
+ capabilities,
284
+ },
285
+ };
286
+ }
287
+ /**
288
+ * Handle tools/list request
289
+ */
290
+ handleToolsList(request) {
291
+ if (!this.hasCapability('tools')) {
292
+ return this.errorResponse(request.id, MCPErrorCode.CAPABILITY_NOT_SUPPORTED, 'Tools capability is not supported');
293
+ }
294
+ return {
295
+ jsonrpc: '2.0',
296
+ id: request.id,
297
+ result: {
298
+ tools: this.listTools(),
299
+ },
300
+ };
301
+ }
302
+ /**
303
+ * Handle tools/call request
304
+ */
305
+ async handleToolsCall(request) {
306
+ if (!this.hasCapability('tools')) {
307
+ return this.errorResponse(request.id, MCPErrorCode.CAPABILITY_NOT_SUPPORTED, 'Tools capability is not supported');
308
+ }
309
+ const params = request.params || {};
310
+ const toolName = params.name;
311
+ const toolArgs = (params.arguments || {});
312
+ const tool = this.tools.get(toolName);
313
+ if (!tool) {
314
+ // Use TOOL_NOT_FOUND (which equals METHOD_NOT_FOUND) for non-existent tools
315
+ return this.errorResponse(request.id, MCPErrorCode.TOOL_NOT_FOUND, `Tool '${toolName}' not found (does not exist)`);
316
+ }
317
+ // Validate parameters
318
+ const validation = this.validateToolParams(tool, toolArgs);
319
+ if (!validation.valid) {
320
+ return this.errorResponse(request.id, MCPErrorCode.INVALID_PARAMS, validation.errors.join('; '));
321
+ }
322
+ // Execute tool
323
+ try {
324
+ const result = await tool.handler(toolArgs);
325
+ return {
326
+ jsonrpc: '2.0',
327
+ id: request.id,
328
+ result,
329
+ };
330
+ }
331
+ catch (error) {
332
+ // Tool execution errors are returned as successful responses with isError flag
333
+ return {
334
+ jsonrpc: '2.0',
335
+ id: request.id,
336
+ result: {
337
+ content: [
338
+ {
339
+ type: 'text',
340
+ text: error instanceof Error ? error.message : String(error),
341
+ },
342
+ ],
343
+ isError: true,
344
+ },
345
+ };
346
+ }
347
+ }
348
+ /**
349
+ * Validate tool parameters against schema
350
+ */
351
+ validateToolParams(tool, params) {
352
+ const errors = [];
353
+ const schema = tool.inputSchema;
354
+ // Check required parameters
355
+ if (schema.required) {
356
+ for (const requiredParam of schema.required) {
357
+ if (!(requiredParam in params) || params[requiredParam] === undefined) {
358
+ errors.push(`Missing required parameter: ${requiredParam}`);
359
+ }
360
+ }
361
+ }
362
+ // Check parameter types and constraints
363
+ if (schema.properties) {
364
+ for (const [key, value] of Object.entries(params)) {
365
+ const propSchema = schema.properties[key];
366
+ if (!propSchema)
367
+ continue;
368
+ // Type validation
369
+ const expectedType = propSchema.type;
370
+ const valueType = Array.isArray(value) ? 'array' : typeof value;
371
+ if (expectedType && valueType !== expectedType) {
372
+ errors.push(`Parameter '${key}' has invalid type: expected ${expectedType}, got ${valueType}`);
373
+ }
374
+ // Pattern validation for strings
375
+ if (expectedType === 'string' &&
376
+ typeof value === 'string' &&
377
+ propSchema.pattern) {
378
+ const pattern = new RegExp(propSchema.pattern);
379
+ if (!pattern.test(value)) {
380
+ errors.push(`Parameter '${key}' does not match pattern: ${propSchema.pattern}`);
381
+ }
382
+ }
383
+ }
384
+ }
385
+ return { valid: errors.length === 0, errors };
386
+ }
387
+ /**
388
+ * Handle resources/list request
389
+ */
390
+ handleResourcesList(request) {
391
+ if (!this.hasCapability('resources')) {
392
+ return this.errorResponse(request.id, MCPErrorCode.CAPABILITY_NOT_SUPPORTED, 'Resources capability is not supported');
393
+ }
394
+ const resources = Array.from(this.resources.values()).map((r) => ({
395
+ uri: r.uri,
396
+ name: r.name,
397
+ mimeType: r.mimeType,
398
+ description: r.description,
399
+ }));
400
+ return {
401
+ jsonrpc: '2.0',
402
+ id: request.id,
403
+ result: { resources },
404
+ };
405
+ }
406
+ /**
407
+ * Handle resources/read request
408
+ */
409
+ async handleResourcesRead(request) {
410
+ if (!this.hasCapability('resources')) {
411
+ return this.errorResponse(request.id, MCPErrorCode.CAPABILITY_NOT_SUPPORTED, 'Resources capability is not supported');
412
+ }
413
+ const params = request.params || {};
414
+ const uri = params.uri;
415
+ const resource = this.resources.get(uri);
416
+ if (!resource) {
417
+ return this.errorResponse(request.id, MCPErrorCode.RESOURCE_NOT_FOUND, `Resource not found: ${uri}`);
418
+ }
419
+ let content = '';
420
+ if (resource.handler) {
421
+ const result = await resource.handler();
422
+ content = result.content;
423
+ }
424
+ return {
425
+ jsonrpc: '2.0',
426
+ id: request.id,
427
+ result: {
428
+ contents: [
429
+ {
430
+ uri: resource.uri,
431
+ mimeType: resource.mimeType,
432
+ text: content,
433
+ },
434
+ ],
435
+ },
436
+ };
437
+ }
438
+ /**
439
+ * Handle prompts/list request
440
+ */
441
+ handlePromptsList(request) {
442
+ if (!this.hasCapability('prompts')) {
443
+ return this.errorResponse(request.id, MCPErrorCode.CAPABILITY_NOT_SUPPORTED, 'Prompts capability is not supported');
444
+ }
445
+ const prompts = Array.from(this.prompts.values()).map((p) => ({
446
+ name: p.name,
447
+ description: p.description,
448
+ arguments: p.arguments,
449
+ }));
450
+ return {
451
+ jsonrpc: '2.0',
452
+ id: request.id,
453
+ result: { prompts },
454
+ };
455
+ }
456
+ /**
457
+ * Handle prompts/get request
458
+ */
459
+ async handlePromptsGet(request) {
460
+ if (!this.hasCapability('prompts')) {
461
+ return this.errorResponse(request.id, MCPErrorCode.CAPABILITY_NOT_SUPPORTED, 'Prompts capability is not supported');
462
+ }
463
+ const params = request.params || {};
464
+ const name = params.name;
465
+ const args = (params.arguments || {});
466
+ const prompt = this.prompts.get(name);
467
+ if (!prompt) {
468
+ return this.errorResponse(request.id, MCPErrorCode.PROMPT_NOT_FOUND, `Prompt not found: ${name}`);
469
+ }
470
+ let messages = [];
471
+ if (prompt.handler) {
472
+ const result = await prompt.handler(args);
473
+ messages = result.messages;
474
+ }
475
+ return {
476
+ jsonrpc: '2.0',
477
+ id: request.id,
478
+ result: { messages },
479
+ };
480
+ }
481
+ /**
482
+ * Create an error response
483
+ */
484
+ errorResponse(id, code, message, data) {
485
+ const response = {
486
+ jsonrpc: '2.0',
487
+ id,
488
+ error: { code, message },
489
+ };
490
+ if (data !== undefined) {
491
+ response.error.data = data;
492
+ }
493
+ return response;
494
+ }
495
+ }
496
+ /**
497
+ * Factory function to create an MCP adapter
498
+ */
499
+ export function createMCPAdapter(config) {
500
+ return new MCPAdapter(config);
501
+ }
502
+ //# sourceMappingURL=adapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adapter.js","sourceRoot":"","sources":["../../src/mcp/adapter.ts"],"names":[],"mappings":"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"}