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
package/dist/index.js ADDED
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ /**
3
+ * PartnerCore Proxy
4
+ *
5
+ * Local MCP proxy for AL Language Server integration.
6
+ * Bridges local AL development with PartnerCore Cloud MCP.
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 __exportStar = (this && this.__exportStar) || function(m, exports) {
20
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
21
+ };
22
+ Object.defineProperty(exports, "__esModule", { value: true });
23
+ __exportStar(require("./config/index.js"), exports);
24
+ __exportStar(require("./utils/index.js"), exports);
25
+ __exportStar(require("./al/index.js"), exports);
26
+ __exportStar(require("./cloud/index.js"), exports);
27
+ __exportStar(require("./router/index.js"), exports);
28
+ __exportStar(require("./mcp/index.js"), exports);
29
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;;;;;;;;;;;;;;AAEH,oDAAkC;AAClC,mDAAiC;AACjC,gDAA8B;AAC9B,mDAAiC;AACjC,oDAAkC;AAClC,iDAA+B"}
@@ -0,0 +1,2 @@
1
+ export * from './server.js';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/mcp/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC"}
@@ -0,0 +1,18 @@
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("./server.js"), exports);
18
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/mcp/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,8CAA4B"}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * MCP Server
3
+ *
4
+ * The main MCP server that exposes tools to AI assistants.
5
+ * Routes tool calls through the ToolRouter to appropriate handlers.
6
+ */
7
+ import { ToolRouter } from '../router/tool-router.js';
8
+ /**
9
+ * PartnerCore MCP Server
10
+ */
11
+ export declare class PartnerCoreMcpServer {
12
+ private server;
13
+ private router;
14
+ private logger;
15
+ constructor(router: ToolRouter);
16
+ /**
17
+ * Setup MCP request handlers
18
+ */
19
+ private setupHandlers;
20
+ /**
21
+ * Convert tool definitions to MCP format
22
+ */
23
+ private convertToMcpTools;
24
+ /**
25
+ * Start the server with stdio transport
26
+ */
27
+ start(): Promise<void>;
28
+ /**
29
+ * Stop the server
30
+ */
31
+ stop(): Promise<void>;
32
+ }
33
+ //# sourceMappingURL=server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AASH,OAAO,EAAE,UAAU,EAAkB,MAAM,0BAA0B,CAAC;AAGtE;;GAEG;AACH,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,MAAM,CAAa;IAC3B,OAAO,CAAC,MAAM,CAAe;gBAEjB,MAAM,EAAE,UAAU;IAkB9B;;OAEG;IACH,OAAO,CAAC,aAAa;IA0CrB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAQzB;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAS5B;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;CAI5B"}
@@ -0,0 +1,98 @@
1
+ "use strict";
2
+ /**
3
+ * MCP Server
4
+ *
5
+ * The main MCP server that exposes tools to AI assistants.
6
+ * Routes tool calls through the ToolRouter to appropriate handlers.
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.PartnerCoreMcpServer = void 0;
10
+ const index_js_1 = require("@modelcontextprotocol/sdk/server/index.js");
11
+ const stdio_js_1 = require("@modelcontextprotocol/sdk/server/stdio.js");
12
+ const types_js_1 = require("@modelcontextprotocol/sdk/types.js");
13
+ const logger_js_1 = require("../utils/logger.js");
14
+ /**
15
+ * PartnerCore MCP Server
16
+ */
17
+ class PartnerCoreMcpServer {
18
+ server;
19
+ router;
20
+ logger = (0, logger_js_1.getLogger)();
21
+ constructor(router) {
22
+ this.router = router;
23
+ this.server = new index_js_1.Server({
24
+ name: 'partnercore-proxy',
25
+ version: '0.1.0',
26
+ }, {
27
+ capabilities: {
28
+ tools: {},
29
+ },
30
+ });
31
+ this.setupHandlers();
32
+ }
33
+ /**
34
+ * Setup MCP request handlers
35
+ */
36
+ setupHandlers() {
37
+ // Handle tools/list
38
+ this.server.setRequestHandler(types_js_1.ListToolsRequestSchema, async () => {
39
+ const definitions = await this.router.getToolDefinitions();
40
+ const tools = this.convertToMcpTools(definitions);
41
+ this.logger.debug(`Returning ${tools.length} tools`);
42
+ return { tools };
43
+ });
44
+ // Handle tools/call
45
+ this.server.setRequestHandler(types_js_1.CallToolRequestSchema, async (request) => {
46
+ const { name, arguments: args } = request.params;
47
+ this.logger.info(`Tool call: ${name}`);
48
+ this.logger.debug(`Arguments: ${JSON.stringify(args)}`);
49
+ const result = await this.router.callTool({
50
+ name,
51
+ arguments: args,
52
+ });
53
+ return {
54
+ content: [
55
+ {
56
+ type: 'text',
57
+ text: typeof result.content === 'string'
58
+ ? result.content
59
+ : JSON.stringify(result.content, null, 2),
60
+ },
61
+ ],
62
+ isError: result.isError,
63
+ };
64
+ });
65
+ // Handle errors
66
+ this.server.onerror = (error) => {
67
+ this.logger.error('MCP Server error:', error);
68
+ };
69
+ }
70
+ /**
71
+ * Convert tool definitions to MCP format
72
+ */
73
+ convertToMcpTools(definitions) {
74
+ return definitions.map(def => ({
75
+ name: def.name,
76
+ description: def.description,
77
+ inputSchema: def.inputSchema,
78
+ }));
79
+ }
80
+ /**
81
+ * Start the server with stdio transport
82
+ */
83
+ async start() {
84
+ this.logger.info('Starting PartnerCore MCP Server...');
85
+ const transport = new stdio_js_1.StdioServerTransport();
86
+ await this.server.connect(transport);
87
+ this.logger.info('PartnerCore MCP Server running on stdio');
88
+ }
89
+ /**
90
+ * Stop the server
91
+ */
92
+ async stop() {
93
+ this.logger.info('Stopping PartnerCore MCP Server...');
94
+ await this.server.close();
95
+ }
96
+ }
97
+ exports.PartnerCoreMcpServer = PartnerCoreMcpServer;
98
+ //# sourceMappingURL=server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export * from './tool-router.js';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/router/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC"}
@@ -0,0 +1,18 @@
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("./tool-router.js"), exports);
18
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/router/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,mDAAiC"}
@@ -0,0 +1,87 @@
1
+ /**
2
+ * Tool Router
3
+ *
4
+ * Routes MCP tool calls to either local AL LSP or cloud PartnerCore server
5
+ * based on tool routing configuration.
6
+ */
7
+ import { ToolRouting } from '../config/types.js';
8
+ import { ALLanguageServer } from '../al/language-server.js';
9
+ import { CloudRelayClient } from '../cloud/relay-client.js';
10
+ /**
11
+ * Tool call input
12
+ */
13
+ export interface ToolCall {
14
+ name: string;
15
+ arguments: Record<string, unknown>;
16
+ }
17
+ /**
18
+ * Tool call result
19
+ */
20
+ export interface ToolResult {
21
+ success: boolean;
22
+ content: unknown;
23
+ isError?: boolean;
24
+ }
25
+ /**
26
+ * Tool definition for MCP
27
+ */
28
+ export interface ToolDefinition {
29
+ name: string;
30
+ description: string;
31
+ inputSchema: {
32
+ type: 'object';
33
+ properties: Record<string, unknown>;
34
+ required?: string[];
35
+ };
36
+ }
37
+ /**
38
+ * Tool Router
39
+ */
40
+ export declare class ToolRouter {
41
+ private routing;
42
+ private alServer;
43
+ private cloudClient;
44
+ private workspaceRoot;
45
+ private logger;
46
+ private localToolDefinitions;
47
+ constructor(workspaceRoot: string, customRouting?: ToolRouting[]);
48
+ /**
49
+ * Set the AL Language Server instance
50
+ */
51
+ setALServer(server: ALLanguageServer): void;
52
+ /**
53
+ * Set the Cloud Relay Client instance
54
+ */
55
+ setCloudClient(client: CloudRelayClient): void;
56
+ /**
57
+ * Get all available tool definitions
58
+ */
59
+ getToolDefinitions(): Promise<ToolDefinition[]>;
60
+ /**
61
+ * Route and execute a tool call
62
+ */
63
+ callTool(call: ToolCall): Promise<ToolResult>;
64
+ /**
65
+ * Handle local tool call (AL LSP or file system)
66
+ */
67
+ private handleLocalTool;
68
+ /**
69
+ * Handle cloud tool call
70
+ */
71
+ private handleCloudTool;
72
+ private handleGetSymbols;
73
+ private handleFindSymbol;
74
+ private handleFindReferences;
75
+ private handleGetDiagnostics;
76
+ private handleGoToDefinition;
77
+ private handleHover;
78
+ private handleCompletion;
79
+ private handleReadFile;
80
+ private handleWriteFile;
81
+ private handleListFiles;
82
+ private listFilesRecursive;
83
+ private matchesPattern;
84
+ private handleSearchFiles;
85
+ private initLocalToolDefinitions;
86
+ }
87
+ //# sourceMappingURL=tool-router.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-router.d.ts","sourceRoot":"","sources":["../../src/router/tool-router.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EAAwB,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACvE,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAU5D;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ,CAAC;QACf,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACpC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;KACrB,CAAC;CACH;AAED;;GAEG;AACH,qBAAa,UAAU;IACrB,OAAO,CAAC,OAAO,CAAiC;IAChD,OAAO,CAAC,QAAQ,CAAiC;IACjD,OAAO,CAAC,WAAW,CAAiC;IACpD,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,oBAAoB,CAAwB;gBAExC,aAAa,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,WAAW,EAAE;IAmBhE;;OAEG;IACH,WAAW,CAAC,MAAM,EAAE,gBAAgB,GAAG,IAAI;IAI3C;;OAEG;IACH,cAAc,CAAC,MAAM,EAAE,gBAAgB,GAAG,IAAI;IAI9C;;OAEG;IACG,kBAAkB,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;IAkBrD;;OAEG;IACG,QAAQ,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC,UAAU,CAAC;IAYnD;;OAEG;YACW,eAAe;IAyE7B;;OAEG;YACW,eAAe;YAuBf,gBAAgB;YAWhB,gBAAgB;YAWhB,oBAAoB;YAcpB,oBAAoB;YAWpB,oBAAoB;YAcpB,WAAW;YAcX,gBAAgB;IAiB9B,OAAO,CAAC,cAAc;IA6BtB,OAAO,CAAC,eAAe;IAyBvB,OAAO,CAAC,eAAe;IA2BvB,OAAO,CAAC,kBAAkB;IA2C1B,OAAO,CAAC,cAAc;IAWtB,OAAO,CAAC,iBAAiB;IA8CzB,OAAO,CAAC,wBAAwB;CA+IjC"}