partnercore-proxy 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (73) hide show
  1. package/CHANGELOG.md +54 -0
  2. package/LICENSE +22 -0
  3. package/README.md +234 -0
  4. package/dist/al/extension-manager.d.ts +52 -0
  5. package/dist/al/extension-manager.d.ts.map +1 -0
  6. package/dist/al/extension-manager.js +348 -0
  7. package/dist/al/extension-manager.js.map +1 -0
  8. package/dist/al/index.d.ts +3 -0
  9. package/dist/al/index.d.ts.map +1 -0
  10. package/dist/al/index.js +19 -0
  11. package/dist/al/index.js.map +1 -0
  12. package/dist/al/language-server.d.ts +134 -0
  13. package/dist/al/language-server.d.ts.map +1 -0
  14. package/dist/al/language-server.js +431 -0
  15. package/dist/al/language-server.js.map +1 -0
  16. package/dist/cli.d.ts +8 -0
  17. package/dist/cli.d.ts.map +1 -0
  18. package/dist/cli.js +207 -0
  19. package/dist/cli.js.map +1 -0
  20. package/dist/cloud/index.d.ts +2 -0
  21. package/dist/cloud/index.d.ts.map +1 -0
  22. package/dist/cloud/index.js +18 -0
  23. package/dist/cloud/index.js.map +1 -0
  24. package/dist/cloud/relay-client.d.ts +84 -0
  25. package/dist/cloud/relay-client.d.ts.map +1 -0
  26. package/dist/cloud/relay-client.js +211 -0
  27. package/dist/cloud/relay-client.js.map +1 -0
  28. package/dist/config/index.d.ts +3 -0
  29. package/dist/config/index.d.ts.map +1 -0
  30. package/dist/config/index.js +19 -0
  31. package/dist/config/index.js.map +1 -0
  32. package/dist/config/loader.d.ts +20 -0
  33. package/dist/config/loader.d.ts.map +1 -0
  34. package/dist/config/loader.js +136 -0
  35. package/dist/config/loader.js.map +1 -0
  36. package/dist/config/types.d.ts +51 -0
  37. package/dist/config/types.d.ts.map +1 -0
  38. package/dist/config/types.js +33 -0
  39. package/dist/config/types.js.map +1 -0
  40. package/dist/index.d.ts +13 -0
  41. package/dist/index.d.ts.map +1 -0
  42. package/dist/index.js +29 -0
  43. package/dist/index.js.map +1 -0
  44. package/dist/mcp/index.d.ts +2 -0
  45. package/dist/mcp/index.d.ts.map +1 -0
  46. package/dist/mcp/index.js +18 -0
  47. package/dist/mcp/index.js.map +1 -0
  48. package/dist/mcp/server.d.ts +33 -0
  49. package/dist/mcp/server.d.ts.map +1 -0
  50. package/dist/mcp/server.js +98 -0
  51. package/dist/mcp/server.js.map +1 -0
  52. package/dist/router/index.d.ts +2 -0
  53. package/dist/router/index.d.ts.map +1 -0
  54. package/dist/router/index.js +18 -0
  55. package/dist/router/index.js.map +1 -0
  56. package/dist/router/tool-router.d.ts +87 -0
  57. package/dist/router/tool-router.d.ts.map +1 -0
  58. package/dist/router/tool-router.js +557 -0
  59. package/dist/router/tool-router.js.map +1 -0
  60. package/dist/utils/index.d.ts +3 -0
  61. package/dist/utils/index.d.ts.map +1 -0
  62. package/dist/utils/index.js +19 -0
  63. package/dist/utils/index.js.map +1 -0
  64. package/dist/utils/logger.d.ts +20 -0
  65. package/dist/utils/logger.d.ts.map +1 -0
  66. package/dist/utils/logger.js +99 -0
  67. package/dist/utils/logger.js.map +1 -0
  68. package/dist/utils/security.d.ts +66 -0
  69. package/dist/utils/security.d.ts.map +1 -0
  70. package/dist/utils/security.js +358 -0
  71. package/dist/utils/security.js.map +1 -0
  72. package/mcp.json +125 -0
  73. package/package.json +107 -0
@@ -0,0 +1,557 @@
1
+ "use strict";
2
+ /**
3
+ * Tool Router
4
+ *
5
+ * Routes MCP tool calls to either local AL LSP or cloud PartnerCore server
6
+ * based on tool routing configuration.
7
+ */
8
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
9
+ if (k2 === undefined) k2 = k;
10
+ var desc = Object.getOwnPropertyDescriptor(m, k);
11
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
12
+ desc = { enumerable: true, get: function() { return m[k]; } };
13
+ }
14
+ Object.defineProperty(o, k2, desc);
15
+ }) : (function(o, m, k, k2) {
16
+ if (k2 === undefined) k2 = k;
17
+ o[k2] = m[k];
18
+ }));
19
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
20
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
21
+ }) : function(o, v) {
22
+ o["default"] = v;
23
+ });
24
+ var __importStar = (this && this.__importStar) || (function () {
25
+ var ownKeys = function(o) {
26
+ ownKeys = Object.getOwnPropertyNames || function (o) {
27
+ var ar = [];
28
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
29
+ return ar;
30
+ };
31
+ return ownKeys(o);
32
+ };
33
+ return function (mod) {
34
+ if (mod && mod.__esModule) return mod;
35
+ var result = {};
36
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
37
+ __setModuleDefault(result, mod);
38
+ return result;
39
+ };
40
+ })();
41
+ Object.defineProperty(exports, "__esModule", { value: true });
42
+ exports.ToolRouter = void 0;
43
+ const fs = __importStar(require("fs"));
44
+ const path = __importStar(require("path"));
45
+ const types_js_1 = require("../config/types.js");
46
+ const logger_js_1 = require("../utils/logger.js");
47
+ const security_js_1 = require("../utils/security.js");
48
+ /**
49
+ * Tool Router
50
+ */
51
+ class ToolRouter {
52
+ routing;
53
+ alServer = null;
54
+ cloudClient = null;
55
+ workspaceRoot;
56
+ logger = (0, logger_js_1.getLogger)();
57
+ localToolDefinitions = [];
58
+ constructor(workspaceRoot, customRouting) {
59
+ this.workspaceRoot = workspaceRoot;
60
+ this.routing = new Map();
61
+ // Apply default routing
62
+ for (const rule of types_js_1.DEFAULT_TOOL_ROUTING) {
63
+ this.routing.set(rule.tool, rule.route);
64
+ }
65
+ // Apply custom routing overrides
66
+ if (customRouting) {
67
+ for (const rule of customRouting) {
68
+ this.routing.set(rule.tool, rule.route);
69
+ }
70
+ }
71
+ this.initLocalToolDefinitions();
72
+ }
73
+ /**
74
+ * Set the AL Language Server instance
75
+ */
76
+ setALServer(server) {
77
+ this.alServer = server;
78
+ }
79
+ /**
80
+ * Set the Cloud Relay Client instance
81
+ */
82
+ setCloudClient(client) {
83
+ this.cloudClient = client;
84
+ }
85
+ /**
86
+ * Get all available tool definitions
87
+ */
88
+ async getToolDefinitions() {
89
+ const tools = [...this.localToolDefinitions];
90
+ // Get cloud tools
91
+ if (this.cloudClient) {
92
+ const cloudTools = await this.cloudClient.getTools();
93
+ for (const ct of cloudTools) {
94
+ tools.push({
95
+ name: ct.name,
96
+ description: ct.description,
97
+ inputSchema: ct.inputSchema,
98
+ });
99
+ }
100
+ }
101
+ return tools;
102
+ }
103
+ /**
104
+ * Route and execute a tool call
105
+ */
106
+ async callTool(call) {
107
+ const route = this.routing.get(call.name) || 'cloud';
108
+ this.logger.debug(`Routing tool ${call.name} to ${route}`);
109
+ if (route === 'local') {
110
+ return this.handleLocalTool(call);
111
+ }
112
+ else {
113
+ return this.handleCloudTool(call);
114
+ }
115
+ }
116
+ /**
117
+ * Handle local tool call (AL LSP or file system)
118
+ */
119
+ async handleLocalTool(call) {
120
+ try {
121
+ switch (call.name) {
122
+ case 'al_get_symbols':
123
+ return this.handleGetSymbols(call.arguments);
124
+ case 'al_find_symbol':
125
+ return this.handleFindSymbol(call.arguments);
126
+ case 'al_find_references':
127
+ return this.handleFindReferences(call.arguments);
128
+ case 'al_get_diagnostics':
129
+ return this.handleGetDiagnostics(call.arguments);
130
+ case 'al_go_to_definition':
131
+ return this.handleGoToDefinition(call.arguments);
132
+ case 'al_hover':
133
+ return this.handleHover(call.arguments);
134
+ case 'al_completion':
135
+ return this.handleCompletion(call.arguments);
136
+ case 'read_file':
137
+ return this.handleReadFile(call.arguments);
138
+ case 'write_file':
139
+ return this.handleWriteFile(call.arguments);
140
+ case 'list_files':
141
+ return this.handleListFiles(call.arguments);
142
+ case 'search_files':
143
+ return this.handleSearchFiles(call.arguments);
144
+ default:
145
+ return {
146
+ success: false,
147
+ content: `Unknown local tool: ${call.name}`,
148
+ isError: true,
149
+ };
150
+ }
151
+ }
152
+ catch (error) {
153
+ // Don't log full stack traces for expected errors
154
+ if (error instanceof security_js_1.SecurityError) {
155
+ this.logger.warn(`Security error in ${call.name}: ${error.code}`);
156
+ return {
157
+ success: false,
158
+ content: `Access denied: ${error.message}`,
159
+ isError: true,
160
+ };
161
+ }
162
+ if (error instanceof security_js_1.ValidationError) {
163
+ this.logger.debug(`Validation error in ${call.name}: ${error.message}`);
164
+ return {
165
+ success: false,
166
+ content: `Invalid input: ${error.message}`,
167
+ isError: true,
168
+ };
169
+ }
170
+ // Log unexpected errors (but sanitize the message)
171
+ this.logger.error(`Local tool error (${call.name}):`, error);
172
+ return {
173
+ success: false,
174
+ content: error instanceof Error ? error.message : 'An unexpected error occurred',
175
+ isError: true,
176
+ };
177
+ }
178
+ }
179
+ /**
180
+ * Handle cloud tool call
181
+ */
182
+ async handleCloudTool(call) {
183
+ if (!this.cloudClient) {
184
+ return {
185
+ success: false,
186
+ content: 'Cloud client not configured',
187
+ isError: true,
188
+ };
189
+ }
190
+ const response = await this.cloudClient.callTool({
191
+ name: call.name,
192
+ arguments: call.arguments,
193
+ });
194
+ return {
195
+ success: response.success,
196
+ content: response.success ? response.result : response.error,
197
+ isError: !response.success,
198
+ };
199
+ }
200
+ // ==================== AL LSP Tool Handlers ====================
201
+ async handleGetSymbols(args) {
202
+ if (!this.alServer) {
203
+ return { success: false, content: 'AL Language Server not initialized', isError: true };
204
+ }
205
+ const uri = args['uri'];
206
+ const symbols = await this.alServer.getDocumentSymbols(uri);
207
+ return { success: true, content: symbols };
208
+ }
209
+ async handleFindSymbol(args) {
210
+ if (!this.alServer) {
211
+ return { success: false, content: 'AL Language Server not initialized', isError: true };
212
+ }
213
+ const query = args['query'];
214
+ const symbols = await this.alServer.getWorkspaceSymbols(query);
215
+ return { success: true, content: symbols };
216
+ }
217
+ async handleFindReferences(args) {
218
+ if (!this.alServer) {
219
+ return { success: false, content: 'AL Language Server not initialized', isError: true };
220
+ }
221
+ const uri = args['uri'];
222
+ const line = args['line'];
223
+ const character = args['character'];
224
+ const references = await this.alServer.findReferences(uri, line, character);
225
+ return { success: true, content: references };
226
+ }
227
+ async handleGetDiagnostics(args) {
228
+ if (!this.alServer) {
229
+ return { success: false, content: 'AL Language Server not initialized', isError: true };
230
+ }
231
+ const uri = args['uri'];
232
+ const diagnostics = await this.alServer.getDiagnostics(uri);
233
+ return { success: true, content: diagnostics };
234
+ }
235
+ async handleGoToDefinition(args) {
236
+ if (!this.alServer) {
237
+ return { success: false, content: 'AL Language Server not initialized', isError: true };
238
+ }
239
+ const uri = args['uri'];
240
+ const line = args['line'];
241
+ const character = args['character'];
242
+ const locations = await this.alServer.goToDefinition(uri, line, character);
243
+ return { success: true, content: locations };
244
+ }
245
+ async handleHover(args) {
246
+ if (!this.alServer) {
247
+ return { success: false, content: 'AL Language Server not initialized', isError: true };
248
+ }
249
+ const uri = args['uri'];
250
+ const line = args['line'];
251
+ const character = args['character'];
252
+ const hover = await this.alServer.hover(uri, line, character);
253
+ return { success: true, content: hover };
254
+ }
255
+ async handleCompletion(args) {
256
+ if (!this.alServer) {
257
+ return { success: false, content: 'AL Language Server not initialized', isError: true };
258
+ }
259
+ const uri = args['uri'];
260
+ const line = args['line'];
261
+ const character = args['character'];
262
+ const completions = await this.alServer.getCompletions(uri, line, character);
263
+ return { success: true, content: completions };
264
+ }
265
+ // ==================== File System Tool Handlers ====================
266
+ // All file operations are sandboxed to the workspace root for security
267
+ handleReadFile(args) {
268
+ // Validate required arguments
269
+ (0, security_js_1.validateToolArgs)(args, ['path'], { path: 'string' });
270
+ const filePath = (0, security_js_1.sanitizeString)(args['path']);
271
+ // Security: Sanitize path to prevent directory traversal
272
+ const resolved = (0, security_js_1.sanitizePath)(filePath, this.workspaceRoot);
273
+ if (!fs.existsSync(resolved)) {
274
+ return { success: false, content: `File not found: ${filePath}`, isError: true };
275
+ }
276
+ const stat = fs.statSync(resolved);
277
+ if (!stat.isFile()) {
278
+ return { success: false, content: `Not a file: ${filePath}`, isError: true };
279
+ }
280
+ // Security: Limit file size to prevent memory exhaustion
281
+ const MAX_FILE_SIZE = 10 * 1024 * 1024; // 10MB
282
+ if (stat.size > MAX_FILE_SIZE) {
283
+ return { success: false, content: `File too large (max ${MAX_FILE_SIZE} bytes)`, isError: true };
284
+ }
285
+ const content = fs.readFileSync(resolved, 'utf-8');
286
+ return { success: true, content };
287
+ }
288
+ handleWriteFile(args) {
289
+ // Validate required arguments
290
+ (0, security_js_1.validateToolArgs)(args, ['path', 'content'], { path: 'string', content: 'string' });
291
+ const filePath = (0, security_js_1.sanitizeString)(args['path']);
292
+ const content = args['content'];
293
+ // Security: Sanitize path to prevent directory traversal
294
+ const resolved = (0, security_js_1.sanitizePath)(filePath, this.workspaceRoot);
295
+ const dir = path.dirname(resolved);
296
+ // Security: Limit content size
297
+ const MAX_CONTENT_SIZE = 10 * 1024 * 1024; // 10MB
298
+ if (content.length > MAX_CONTENT_SIZE) {
299
+ return { success: false, content: `Content too large (max ${MAX_CONTENT_SIZE} bytes)`, isError: true };
300
+ }
301
+ fs.mkdirSync(dir, { recursive: true });
302
+ fs.writeFileSync(resolved, content, 'utf-8');
303
+ // Return relative path in response (don't expose full paths)
304
+ const relativePath = path.relative(this.workspaceRoot, resolved);
305
+ return { success: true, content: `File written: ${relativePath}` };
306
+ }
307
+ handleListFiles(args) {
308
+ // Validate required arguments
309
+ (0, security_js_1.validateToolArgs)(args, ['path'], { path: 'string' });
310
+ const dirPath = (0, security_js_1.sanitizeString)(args['path']);
311
+ const pattern = args['pattern'] ? (0, security_js_1.sanitizeString)(args['pattern']) : undefined;
312
+ // Security: Sanitize path to prevent directory traversal
313
+ const resolved = (0, security_js_1.sanitizePath)(dirPath, this.workspaceRoot);
314
+ if (!fs.existsSync(resolved)) {
315
+ return { success: false, content: `Directory not found: ${dirPath}`, isError: true };
316
+ }
317
+ const stat = fs.statSync(resolved);
318
+ if (!stat.isDirectory()) {
319
+ return { success: false, content: `Not a directory: ${dirPath}`, isError: true };
320
+ }
321
+ const files = this.listFilesRecursive(resolved, pattern);
322
+ // Return relative paths for security
323
+ const relativePaths = files.map(f => path.relative(this.workspaceRoot, f));
324
+ return { success: true, content: relativePaths };
325
+ }
326
+ listFilesRecursive(dir, pattern, depth = 0) {
327
+ // Security: Limit recursion depth
328
+ const MAX_DEPTH = 20;
329
+ if (depth > MAX_DEPTH)
330
+ return [];
331
+ // Use imports from top of file (fs and path are already imported)
332
+ const results = [];
333
+ let entries;
334
+ try {
335
+ entries = fs.readdirSync(dir, { withFileTypes: true });
336
+ }
337
+ catch {
338
+ // Silently skip directories we can't read
339
+ return results;
340
+ }
341
+ // Security: Limit total files to prevent DoS
342
+ const MAX_FILES = 10000;
343
+ for (const entry of entries) {
344
+ if (results.length >= MAX_FILES)
345
+ break;
346
+ const fullPath = path.join(dir, entry.name);
347
+ // Security: Skip hidden files/directories and common ignored paths
348
+ if (entry.name.startsWith('.'))
349
+ continue;
350
+ if (entry.isDirectory()) {
351
+ // Skip common ignored directories
352
+ const ignoredDirs = ['node_modules', '.git', '.svn', 'dist', 'bin', 'obj', '.alpackages', '.snapshots'];
353
+ if (!ignoredDirs.includes(entry.name)) {
354
+ results.push(...this.listFilesRecursive(fullPath, pattern, depth + 1));
355
+ }
356
+ }
357
+ else {
358
+ if (!pattern || this.matchesPattern(entry.name, pattern)) {
359
+ results.push(fullPath);
360
+ }
361
+ }
362
+ }
363
+ return results;
364
+ }
365
+ matchesPattern(filename, pattern) {
366
+ // Security: Escape regex special characters except * and ?
367
+ const escaped = pattern
368
+ .replace(/[.+^${}()|[\]\\]/g, '\\$&')
369
+ .replace(/\*/g, '.*')
370
+ .replace(/\?/g, '.');
371
+ const regex = new RegExp(`^${escaped}$`, 'i');
372
+ return regex.test(filename);
373
+ }
374
+ handleSearchFiles(args) {
375
+ // Validate required arguments
376
+ (0, security_js_1.validateToolArgs)(args, ['path', 'query'], { path: 'string', query: 'string' });
377
+ const dirPath = (0, security_js_1.sanitizeString)(args['path']);
378
+ const query = (0, security_js_1.sanitizeString)(args['query'], 1000); // Limit query length
379
+ const filePattern = args['filePattern'] ? (0, security_js_1.sanitizeString)(args['filePattern']) : '*.al';
380
+ // Security: Sanitize path
381
+ const resolved = (0, security_js_1.sanitizePath)(dirPath, this.workspaceRoot);
382
+ const files = this.listFilesRecursive(resolved, filePattern);
383
+ const results = [];
384
+ const queryLower = query.toLowerCase();
385
+ // Security: Limit results
386
+ const MAX_RESULTS = 500;
387
+ for (const file of files) {
388
+ if (results.length >= MAX_RESULTS)
389
+ break;
390
+ try {
391
+ const content = fs.readFileSync(file, 'utf-8');
392
+ const lines = content.split('\n');
393
+ lines.forEach((line, index) => {
394
+ if (results.length >= MAX_RESULTS)
395
+ return;
396
+ if (line.toLowerCase().includes(queryLower)) {
397
+ results.push({
398
+ file: path.relative(this.workspaceRoot, file), // Return relative paths
399
+ line: index + 1,
400
+ content: line.trim().slice(0, 500), // Limit line length in results
401
+ });
402
+ }
403
+ });
404
+ }
405
+ catch {
406
+ // Skip files we can't read
407
+ }
408
+ }
409
+ return { success: true, content: results };
410
+ }
411
+ // ==================== Tool Definitions ====================
412
+ initLocalToolDefinitions() {
413
+ this.localToolDefinitions = [
414
+ {
415
+ name: 'al_get_symbols',
416
+ description: 'Get all symbols (procedures, fields, variables, etc.) in an AL file',
417
+ inputSchema: {
418
+ type: 'object',
419
+ properties: {
420
+ uri: {
421
+ type: 'string',
422
+ description: 'File URI (e.g., file:///C:/project/src/MyTable.Table.al)',
423
+ },
424
+ },
425
+ required: ['uri'],
426
+ },
427
+ },
428
+ {
429
+ name: 'al_find_symbol',
430
+ description: 'Search for symbols by name across the workspace',
431
+ inputSchema: {
432
+ type: 'object',
433
+ properties: {
434
+ query: {
435
+ type: 'string',
436
+ description: 'Symbol name to search for',
437
+ },
438
+ },
439
+ required: ['query'],
440
+ },
441
+ },
442
+ {
443
+ name: 'al_find_references',
444
+ description: 'Find all references to a symbol at a specific position',
445
+ inputSchema: {
446
+ type: 'object',
447
+ properties: {
448
+ uri: { type: 'string', description: 'File URI' },
449
+ line: { type: 'number', description: 'Line number (0-based)' },
450
+ character: { type: 'number', description: 'Character position (0-based)' },
451
+ },
452
+ required: ['uri', 'line', 'character'],
453
+ },
454
+ },
455
+ {
456
+ name: 'al_get_diagnostics',
457
+ description: 'Get compiler diagnostics (errors, warnings) for an AL file',
458
+ inputSchema: {
459
+ type: 'object',
460
+ properties: {
461
+ uri: { type: 'string', description: 'File URI' },
462
+ },
463
+ required: ['uri'],
464
+ },
465
+ },
466
+ {
467
+ name: 'al_go_to_definition',
468
+ description: 'Go to the definition of a symbol at a specific position',
469
+ inputSchema: {
470
+ type: 'object',
471
+ properties: {
472
+ uri: { type: 'string', description: 'File URI' },
473
+ line: { type: 'number', description: 'Line number (0-based)' },
474
+ character: { type: 'number', description: 'Character position (0-based)' },
475
+ },
476
+ required: ['uri', 'line', 'character'],
477
+ },
478
+ },
479
+ {
480
+ name: 'al_hover',
481
+ description: 'Get hover information (type info, documentation) for a position',
482
+ inputSchema: {
483
+ type: 'object',
484
+ properties: {
485
+ uri: { type: 'string', description: 'File URI' },
486
+ line: { type: 'number', description: 'Line number (0-based)' },
487
+ character: { type: 'number', description: 'Character position (0-based)' },
488
+ },
489
+ required: ['uri', 'line', 'character'],
490
+ },
491
+ },
492
+ {
493
+ name: 'al_completion',
494
+ description: 'Get code completion suggestions at a position',
495
+ inputSchema: {
496
+ type: 'object',
497
+ properties: {
498
+ uri: { type: 'string', description: 'File URI' },
499
+ line: { type: 'number', description: 'Line number (0-based)' },
500
+ character: { type: 'number', description: 'Character position (0-based)' },
501
+ },
502
+ required: ['uri', 'line', 'character'],
503
+ },
504
+ },
505
+ {
506
+ name: 'read_file',
507
+ description: 'Read the contents of a file',
508
+ inputSchema: {
509
+ type: 'object',
510
+ properties: {
511
+ path: { type: 'string', description: 'File path' },
512
+ },
513
+ required: ['path'],
514
+ },
515
+ },
516
+ {
517
+ name: 'write_file',
518
+ description: 'Write content to a file',
519
+ inputSchema: {
520
+ type: 'object',
521
+ properties: {
522
+ path: { type: 'string', description: 'File path' },
523
+ content: { type: 'string', description: 'File content' },
524
+ },
525
+ required: ['path', 'content'],
526
+ },
527
+ },
528
+ {
529
+ name: 'list_files',
530
+ description: 'List files in a directory',
531
+ inputSchema: {
532
+ type: 'object',
533
+ properties: {
534
+ path: { type: 'string', description: 'Directory path' },
535
+ pattern: { type: 'string', description: 'File pattern (e.g., *.al)' },
536
+ },
537
+ required: ['path'],
538
+ },
539
+ },
540
+ {
541
+ name: 'search_files',
542
+ description: 'Search for text in files',
543
+ inputSchema: {
544
+ type: 'object',
545
+ properties: {
546
+ path: { type: 'string', description: 'Directory path' },
547
+ query: { type: 'string', description: 'Search query' },
548
+ filePattern: { type: 'string', description: 'File pattern (default: *.al)' },
549
+ },
550
+ required: ['path', 'query'],
551
+ },
552
+ },
553
+ ];
554
+ }
555
+ }
556
+ exports.ToolRouter = ToolRouter;
557
+ //# sourceMappingURL=tool-router.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-router.js","sourceRoot":"","sources":["../../src/router/tool-router.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export * from './logger.js';
2
+ export * from './security.js';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC"}
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./logger.js"), exports);
18
+ __exportStar(require("./security.js"), exports);
19
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,8CAA4B;AAC5B,gDAA8B"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Logger utility for PartnerCore Proxy
3
+ *
4
+ * Security: This logger automatically masks sensitive data like API keys,
5
+ * passwords, and tokens to prevent accidental exposure in logs.
6
+ */
7
+ import winston from 'winston';
8
+ /**
9
+ * Create and configure the logger
10
+ */
11
+ export declare function createLogger(level?: string): winston.Logger;
12
+ /**
13
+ * Get the logger instance (creates one if not exists)
14
+ */
15
+ export declare function getLogger(): winston.Logger;
16
+ /**
17
+ * Set log level dynamically
18
+ */
19
+ export declare function setLogLevel(level: string): void;
20
+ //# sourceMappingURL=logger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,OAAO,MAAM,SAAS,CAAC;AA+C9B;;GAEG;AACH,wBAAgB,YAAY,CAAC,KAAK,GAAE,MAAe,GAAG,OAAO,CAAC,MAAM,CA+BnE;AAED;;GAEG;AACH,wBAAgB,SAAS,IAAI,OAAO,CAAC,MAAM,CAK1C;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAG/C"}