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,2 @@
1
+ export * from './relay-client.js';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cloud/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,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("./relay-client.js"), exports);
18
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cloud/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,oDAAkC"}
@@ -0,0 +1,84 @@
1
+ /**
2
+ * Cloud Relay Client
3
+ *
4
+ * Handles communication with the PartnerCore Cloud MCP server.
5
+ * Routes cloud-bound tool calls and handles authentication.
6
+ */
7
+ /**
8
+ * Tool call request
9
+ */
10
+ export interface ToolCallRequest {
11
+ name: string;
12
+ arguments: Record<string, unknown>;
13
+ }
14
+ /**
15
+ * Tool call response
16
+ */
17
+ export interface ToolCallResponse {
18
+ success: boolean;
19
+ result?: unknown;
20
+ error?: string;
21
+ }
22
+ /**
23
+ * Available cloud tools
24
+ */
25
+ export interface CloudToolDefinition {
26
+ name: string;
27
+ description: string;
28
+ inputSchema: Record<string, unknown>;
29
+ }
30
+ /**
31
+ * Cloud Relay Client configuration
32
+ */
33
+ export interface CloudRelayConfig {
34
+ cloudUrl: string;
35
+ apiKey: string;
36
+ customerNo?: string;
37
+ resourceNo?: string;
38
+ }
39
+ /**
40
+ * Cloud Relay Client
41
+ */
42
+ export declare class CloudRelayClient {
43
+ private client;
44
+ private logger;
45
+ private toolsCache;
46
+ constructor(config: CloudRelayConfig | string, apiKey?: string);
47
+ /**
48
+ * Check if connection to cloud is available
49
+ */
50
+ checkConnection(): Promise<boolean>;
51
+ /**
52
+ * Get available tools from cloud server
53
+ */
54
+ getTools(): Promise<CloudToolDefinition[]>;
55
+ /**
56
+ * Call a tool on the cloud server
57
+ */
58
+ callTool(request: ToolCallRequest): Promise<ToolCallResponse>;
59
+ /**
60
+ * Stream a tool call (for long operations)
61
+ */
62
+ streamToolCall(request: ToolCallRequest, onChunk: (chunk: string) => void): Promise<ToolCallResponse>;
63
+ /**
64
+ * Search knowledge base
65
+ */
66
+ searchKnowledgeBase(query: string, filters?: Record<string, unknown>): Promise<unknown[]>;
67
+ /**
68
+ * Get templates
69
+ */
70
+ getTemplates(type?: string): Promise<unknown[]>;
71
+ /**
72
+ * Validate subscription/API key
73
+ */
74
+ validateSubscription(): Promise<{
75
+ valid: boolean;
76
+ tier?: string;
77
+ features?: string[];
78
+ }>;
79
+ /**
80
+ * Clear tools cache (call when reconnecting)
81
+ */
82
+ clearCache(): void;
83
+ }
84
+ //# sourceMappingURL=relay-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"relay-client.d.ts","sourceRoot":"","sources":["../../src/cloud/relay-client.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACtC;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,UAAU,CAAsC;gBAE5C,MAAM,EAAE,gBAAgB,GAAG,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM;IAyD9D;;OAEG;IACG,eAAe,IAAI,OAAO,CAAC,OAAO,CAAC;IAWzC;;OAEG;IACG,QAAQ,IAAI,OAAO,CAAC,mBAAmB,EAAE,CAAC;IAgBhD;;OAEG;IACG,QAAQ,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAoBnE;;OAEG;IACG,cAAc,CAClB,OAAO,EAAE,eAAe,EACxB,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,GAC/B,OAAO,CAAC,gBAAgB,CAAC;IA4C5B;;OAEG;IACG,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAc/F;;OAEG;IACG,YAAY,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAYrD;;OAEG;IACG,oBAAoB,IAAI,OAAO,CAAC;QAAE,KAAK,EAAE,OAAO,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;IAY7F;;OAEG;IACH,UAAU,IAAI,IAAI;CAGnB"}
@@ -0,0 +1,211 @@
1
+ "use strict";
2
+ /**
3
+ * Cloud Relay Client
4
+ *
5
+ * Handles communication with the PartnerCore Cloud MCP server.
6
+ * Routes cloud-bound tool calls and handles authentication.
7
+ */
8
+ var __importDefault = (this && this.__importDefault) || function (mod) {
9
+ return (mod && mod.__esModule) ? mod : { "default": mod };
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.CloudRelayClient = void 0;
13
+ const axios_1 = __importDefault(require("axios"));
14
+ const logger_js_1 = require("../utils/logger.js");
15
+ /**
16
+ * Cloud Relay Client
17
+ */
18
+ class CloudRelayClient {
19
+ client;
20
+ logger = (0, logger_js_1.getLogger)();
21
+ toolsCache = null;
22
+ constructor(config, apiKey) {
23
+ // Support both old (cloudUrl, apiKey) and new (config object) signatures
24
+ const cloudUrl = typeof config === 'string' ? config : config.cloudUrl;
25
+ const key = typeof config === 'string' ? (apiKey ?? '') : config.apiKey;
26
+ const customerNo = typeof config === 'object' ? config.customerNo : undefined;
27
+ const resourceNo = typeof config === 'object' ? config.resourceNo : undefined;
28
+ const headers = {
29
+ 'Content-Type': 'application/json',
30
+ 'X-API-Key': key, // PartnerCore uses X-API-Key header
31
+ 'X-Client-Type': 'partnercore-proxy',
32
+ };
33
+ // Add optional customer/resource headers if provided
34
+ if (customerNo) {
35
+ headers['X-Customer-No'] = customerNo;
36
+ }
37
+ if (resourceNo) {
38
+ headers['X-Resource-No'] = resourceNo;
39
+ }
40
+ this.client = axios_1.default.create({
41
+ baseURL: cloudUrl,
42
+ timeout: 60000, // 60 second timeout for long operations
43
+ headers,
44
+ });
45
+ // Add request interceptor for logging
46
+ this.client.interceptors.request.use((config) => {
47
+ this.logger.debug(`Cloud request: ${config.method?.toUpperCase()} ${config.url}`);
48
+ return config;
49
+ }, (error) => {
50
+ this.logger.error('Cloud request error:', error);
51
+ return Promise.reject(error);
52
+ });
53
+ // Add response interceptor for error handling
54
+ this.client.interceptors.response.use((response) => {
55
+ return response;
56
+ }, (error) => {
57
+ if (error.response) {
58
+ this.logger.error(`Cloud response error: ${error.response.status} ${error.response.statusText}`);
59
+ }
60
+ else if (error.request) {
61
+ this.logger.error('Cloud request failed: No response received');
62
+ }
63
+ else {
64
+ this.logger.error('Cloud request failed:', error.message);
65
+ }
66
+ return Promise.reject(error);
67
+ });
68
+ }
69
+ /**
70
+ * Check if connection to cloud is available
71
+ */
72
+ async checkConnection() {
73
+ try {
74
+ await this.client.get('/health');
75
+ this.logger.info('Cloud MCP connection verified');
76
+ return true;
77
+ }
78
+ catch {
79
+ this.logger.warn('Cloud MCP connection unavailable');
80
+ return false;
81
+ }
82
+ }
83
+ /**
84
+ * Get available tools from cloud server
85
+ */
86
+ async getTools() {
87
+ if (this.toolsCache) {
88
+ return this.toolsCache;
89
+ }
90
+ try {
91
+ const response = await this.client.get('/mcp/tools');
92
+ this.toolsCache = response.data.tools;
93
+ this.logger.info(`Loaded ${this.toolsCache.length} cloud tools`);
94
+ return this.toolsCache;
95
+ }
96
+ catch (error) {
97
+ this.logger.error('Failed to get cloud tools:', error);
98
+ return [];
99
+ }
100
+ }
101
+ /**
102
+ * Call a tool on the cloud server
103
+ */
104
+ async callTool(request) {
105
+ this.logger.debug(`Calling cloud tool: ${request.name}`);
106
+ try {
107
+ const response = await this.client.post('/mcp/call', {
108
+ name: request.name,
109
+ arguments: request.arguments,
110
+ });
111
+ return response.data;
112
+ }
113
+ catch (error) {
114
+ const axiosError = error;
115
+ return {
116
+ success: false,
117
+ error: axiosError.response?.data?.error || axiosError.message || 'Unknown error',
118
+ };
119
+ }
120
+ }
121
+ /**
122
+ * Stream a tool call (for long operations)
123
+ */
124
+ async streamToolCall(request, onChunk) {
125
+ this.logger.debug(`Streaming cloud tool: ${request.name}`);
126
+ try {
127
+ const response = await this.client.post('/mcp/stream', {
128
+ name: request.name,
129
+ arguments: request.arguments,
130
+ }, {
131
+ responseType: 'stream',
132
+ });
133
+ // The stream is already typed as Readable from the generic parameter
134
+ const stream = response.data;
135
+ return new Promise((resolve, reject) => {
136
+ let fullContent = '';
137
+ stream.on('data', (chunk) => {
138
+ const text = chunk.toString();
139
+ fullContent += text;
140
+ onChunk(text);
141
+ });
142
+ stream.on('end', () => {
143
+ resolve({
144
+ success: true,
145
+ result: fullContent,
146
+ });
147
+ });
148
+ stream.on('error', (error) => {
149
+ reject(error);
150
+ });
151
+ });
152
+ }
153
+ catch (error) {
154
+ const axiosError = error;
155
+ return {
156
+ success: false,
157
+ error: axiosError.response?.data?.error || axiosError.message || 'Unknown error',
158
+ };
159
+ }
160
+ }
161
+ /**
162
+ * Search knowledge base
163
+ */
164
+ async searchKnowledgeBase(query, filters) {
165
+ try {
166
+ const response = await this.client.post('/mcp/kb/search', {
167
+ query,
168
+ filters,
169
+ });
170
+ return response.data.results;
171
+ }
172
+ catch (error) {
173
+ this.logger.error('KB search failed:', error);
174
+ return [];
175
+ }
176
+ }
177
+ /**
178
+ * Get templates
179
+ */
180
+ async getTemplates(type) {
181
+ try {
182
+ const params = type ? { type } : {};
183
+ const response = await this.client.get('/mcp/templates', { params });
184
+ return response.data.templates;
185
+ }
186
+ catch (error) {
187
+ this.logger.error('Get templates failed:', error);
188
+ return [];
189
+ }
190
+ }
191
+ /**
192
+ * Validate subscription/API key
193
+ */
194
+ async validateSubscription() {
195
+ try {
196
+ const response = await this.client.get('/auth/validate');
197
+ return response.data;
198
+ }
199
+ catch {
200
+ return { valid: false };
201
+ }
202
+ }
203
+ /**
204
+ * Clear tools cache (call when reconnecting)
205
+ */
206
+ clearCache() {
207
+ this.toolsCache = null;
208
+ }
209
+ }
210
+ exports.CloudRelayClient = CloudRelayClient;
211
+ //# sourceMappingURL=relay-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"relay-client.js","sourceRoot":"","sources":["../../src/cloud/relay-client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export * from './types.js';
2
+ export * from './loader.js';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,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("./types.js"), exports);
18
+ __exportStar(require("./loader.js"), exports);
19
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,6CAA2B;AAC3B,8CAA4B"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Configuration loader for PartnerCore Proxy
3
+ */
4
+ import { ProxyConfig } from './types.js';
5
+ /**
6
+ * Load configuration from environment variables and defaults
7
+ */
8
+ export declare function loadConfig(): ProxyConfig;
9
+ /**
10
+ * Validate configuration
11
+ */
12
+ export declare function validateConfig(config: ProxyConfig): {
13
+ valid: boolean;
14
+ errors: string[];
15
+ };
16
+ /**
17
+ * Find app.json in workspace and return its contents
18
+ */
19
+ export declare function loadAppJson(workspaceRoot: string): Record<string, unknown> | null;
20
+ //# sourceMappingURL=loader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../src/config/loader.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH,OAAO,EAAE,WAAW,EAAY,MAAM,YAAY,CAAC;AA+BnD;;GAEG;AACH,wBAAgB,UAAU,IAAI,WAAW,CAexC;AAqBD;;GAEG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,WAAW,GAAG;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,EAAE,CAAA;CAAE,CAuBxF;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAajF"}
@@ -0,0 +1,136 @@
1
+ "use strict";
2
+ /**
3
+ * Configuration loader for PartnerCore Proxy
4
+ */
5
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ var desc = Object.getOwnPropertyDescriptor(m, k);
8
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
9
+ desc = { enumerable: true, get: function() { return m[k]; } };
10
+ }
11
+ Object.defineProperty(o, k2, desc);
12
+ }) : (function(o, m, k, k2) {
13
+ if (k2 === undefined) k2 = k;
14
+ o[k2] = m[k];
15
+ }));
16
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
17
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
18
+ }) : function(o, v) {
19
+ o["default"] = v;
20
+ });
21
+ var __importStar = (this && this.__importStar) || (function () {
22
+ var ownKeys = function(o) {
23
+ ownKeys = Object.getOwnPropertyNames || function (o) {
24
+ var ar = [];
25
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
26
+ return ar;
27
+ };
28
+ return ownKeys(o);
29
+ };
30
+ return function (mod) {
31
+ if (mod && mod.__esModule) return mod;
32
+ var result = {};
33
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
34
+ __setModuleDefault(result, mod);
35
+ return result;
36
+ };
37
+ })();
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.loadConfig = loadConfig;
40
+ exports.validateConfig = validateConfig;
41
+ exports.loadAppJson = loadAppJson;
42
+ const dotenv_1 = require("dotenv");
43
+ const path = __importStar(require("path"));
44
+ const fs = __importStar(require("fs"));
45
+ /**
46
+ * Environment endpoints
47
+ */
48
+ const ENDPOINTS = {
49
+ production: 'https://partnercore-mcp-prod.agreeablebush-0fe29c4e.eastus.azurecontainerapps.io',
50
+ uat: 'https://partnercore-mcp-uat.happysand-4085830a.eastus.azurecontainerapps.io',
51
+ };
52
+ /**
53
+ * Get the cloud URL based on environment
54
+ */
55
+ function getCloudUrl() {
56
+ // Explicit URL takes precedence
57
+ if (process.env['PARTNERCORE_CLOUD_URL']) {
58
+ return process.env['PARTNERCORE_CLOUD_URL'];
59
+ }
60
+ // Check for environment setting
61
+ const env = (process.env['PARTNERCORE_ENV'] || 'production').toLowerCase();
62
+ if (env === 'uat') {
63
+ return ENDPOINTS.uat;
64
+ }
65
+ return ENDPOINTS.production;
66
+ }
67
+ /**
68
+ * Load configuration from environment variables and defaults
69
+ */
70
+ function loadConfig() {
71
+ // Load .env file if present
72
+ (0, dotenv_1.config)();
73
+ const al = loadALConfig();
74
+ return {
75
+ cloudUrl: getCloudUrl(),
76
+ apiKey: process.env['PARTNERCORE_API_KEY'] || '',
77
+ customerNo: process.env['PARTNERCORE_CUSTOMER_NO'],
78
+ resourceNo: process.env['PARTNERCORE_RESOURCE_NO'],
79
+ port: parseInt(process.env['PROXY_PORT'] || '3100', 10),
80
+ logLevel: process.env['LOG_LEVEL'] || 'info',
81
+ al,
82
+ };
83
+ }
84
+ /**
85
+ * Load AL-specific configuration
86
+ */
87
+ function loadALConfig() {
88
+ const workspaceRoot = process.env['AL_WORKSPACE_ROOT'] || process.cwd();
89
+ const extensionCachePath = path.join(process.env['HOME'] || process.env['USERPROFILE'] || '.', '.partnercore', 'al-extension');
90
+ return {
91
+ extensionVersion: process.env['AL_EXTENSION_VERSION'] || 'latest',
92
+ workspaceRoot,
93
+ extensionPath: process.env['AL_EXTENSION_PATH'],
94
+ extensionCachePath,
95
+ };
96
+ }
97
+ /**
98
+ * Validate configuration
99
+ */
100
+ function validateConfig(config) {
101
+ const errors = [];
102
+ // API key is required for cloud features
103
+ if (!config.apiKey) {
104
+ errors.push('PARTNERCORE_API_KEY is required for cloud features');
105
+ }
106
+ // Validate workspace root exists
107
+ if (!fs.existsSync(config.al.workspaceRoot)) {
108
+ errors.push(`AL workspace root does not exist: ${config.al.workspaceRoot}`);
109
+ }
110
+ // Check for app.json in workspace
111
+ const appJsonPath = path.join(config.al.workspaceRoot, 'app.json');
112
+ if (!fs.existsSync(appJsonPath)) {
113
+ errors.push(`app.json not found in workspace: ${appJsonPath}`);
114
+ }
115
+ return {
116
+ valid: errors.length === 0,
117
+ errors,
118
+ };
119
+ }
120
+ /**
121
+ * Find app.json in workspace and return its contents
122
+ */
123
+ function loadAppJson(workspaceRoot) {
124
+ const appJsonPath = path.join(workspaceRoot, 'app.json');
125
+ if (!fs.existsSync(appJsonPath)) {
126
+ return null;
127
+ }
128
+ try {
129
+ const content = fs.readFileSync(appJsonPath, 'utf-8');
130
+ return JSON.parse(content);
131
+ }
132
+ catch {
133
+ return null;
134
+ }
135
+ }
136
+ //# sourceMappingURL=loader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loader.js","sourceRoot":"","sources":["../../src/config/loader.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,51 @@
1
+ /**
2
+ * Configuration types for PartnerCore Proxy
3
+ */
4
+ export interface ProxyConfig {
5
+ /** PartnerCore Cloud MCP URL */
6
+ cloudUrl: string;
7
+ /** API key for cloud authentication */
8
+ apiKey: string;
9
+ /** Optional: Customer number for cloud authentication */
10
+ customerNo?: string;
11
+ /** Optional: Resource number for cloud authentication */
12
+ resourceNo?: string;
13
+ /** Local proxy port (for stdio MCP server) */
14
+ port: number;
15
+ /** Log level */
16
+ logLevel: 'debug' | 'info' | 'warn' | 'error';
17
+ /** AL-specific configuration */
18
+ al: ALConfig;
19
+ }
20
+ export interface ALConfig {
21
+ /** AL extension version to use (or 'latest') */
22
+ extensionVersion: string;
23
+ /** Path to AL workspace root (containing app.json) */
24
+ workspaceRoot: string;
25
+ /** Optional: path to existing AL extension */
26
+ extensionPath?: string;
27
+ /** Path to store downloaded extensions */
28
+ extensionCachePath: string;
29
+ }
30
+ export interface ALExtensionInfo {
31
+ /** Path to extension directory */
32
+ path: string;
33
+ /** Path to EditorServices.Host executable */
34
+ editorServicesPath: string;
35
+ /** Extension version */
36
+ version: string;
37
+ }
38
+ /**
39
+ * Tool routing configuration
40
+ */
41
+ export interface ToolRouting {
42
+ /** Tool name */
43
+ tool: string;
44
+ /** Route: 'local' for AL LSP, 'cloud' for PartnerCore server */
45
+ route: 'local' | 'cloud';
46
+ }
47
+ /**
48
+ * Default tool routing rules
49
+ */
50
+ export declare const DEFAULT_TOOL_ROUTING: ToolRouting[];
51
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/config/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,WAAW;IAC1B,gCAAgC;IAChC,QAAQ,EAAE,MAAM,CAAC;IAEjB,uCAAuC;IACvC,MAAM,EAAE,MAAM,CAAC;IAEf,yDAAyD;IACzD,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,yDAAyD;IACzD,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,8CAA8C;IAC9C,IAAI,EAAE,MAAM,CAAC;IAEb,gBAAgB;IAChB,QAAQ,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;IAE9C,gCAAgC;IAChC,EAAE,EAAE,QAAQ,CAAC;CACd;AAED,MAAM,WAAW,QAAQ;IACvB,gDAAgD;IAChD,gBAAgB,EAAE,MAAM,CAAC;IAEzB,sDAAsD;IACtD,aAAa,EAAE,MAAM,CAAC;IAEtB,8CAA8C;IAC9C,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB,0CAA0C;IAC1C,kBAAkB,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,eAAe;IAC9B,kCAAkC;IAClC,IAAI,EAAE,MAAM,CAAC;IAEb,6CAA6C;IAC7C,kBAAkB,EAAE,MAAM,CAAC;IAE3B,wBAAwB;IACxB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,gBAAgB;IAChB,IAAI,EAAE,MAAM,CAAC;IAEb,gEAAgE;IAChE,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC;CAC1B;AAED;;GAEG;AACH,eAAO,MAAM,oBAAoB,EAAE,WAAW,EAwB7C,CAAC"}
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+ /**
3
+ * Configuration types for PartnerCore Proxy
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.DEFAULT_TOOL_ROUTING = void 0;
7
+ /**
8
+ * Default tool routing rules
9
+ */
10
+ exports.DEFAULT_TOOL_ROUTING = [
11
+ // Local AL LSP tools
12
+ { tool: 'al_get_symbols', route: 'local' },
13
+ { tool: 'al_find_symbol', route: 'local' },
14
+ { tool: 'al_find_references', route: 'local' },
15
+ { tool: 'al_get_diagnostics', route: 'local' },
16
+ { tool: 'al_go_to_definition', route: 'local' },
17
+ { tool: 'al_hover', route: 'local' },
18
+ { tool: 'al_completion', route: 'local' },
19
+ // Local file tools
20
+ { tool: 'read_file', route: 'local' },
21
+ { tool: 'write_file', route: 'local' },
22
+ { tool: 'list_files', route: 'local' },
23
+ { tool: 'search_files', route: 'local' },
24
+ // Cloud tools (routed to PartnerCore server)
25
+ { tool: 'partnercore_review', route: 'cloud' },
26
+ { tool: 'partnercore_improve', route: 'cloud' },
27
+ { tool: 'partnercore_analyze', route: 'cloud' },
28
+ { tool: 'partnercore_validate', route: 'cloud' },
29
+ { tool: 'partnercore_kb_search', route: 'cloud' },
30
+ { tool: 'partnercore_template', route: 'cloud' },
31
+ { tool: 'partnercore_generate', route: 'cloud' },
32
+ ];
33
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/config/types.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AA6DH;;GAEG;AACU,QAAA,oBAAoB,GAAkB;IACjD,qBAAqB;IACrB,EAAE,IAAI,EAAE,gBAAgB,EAAE,KAAK,EAAE,OAAO,EAAE;IAC1C,EAAE,IAAI,EAAE,gBAAgB,EAAE,KAAK,EAAE,OAAO,EAAE;IAC1C,EAAE,IAAI,EAAE,oBAAoB,EAAE,KAAK,EAAE,OAAO,EAAE;IAC9C,EAAE,IAAI,EAAE,oBAAoB,EAAE,KAAK,EAAE,OAAO,EAAE;IAC9C,EAAE,IAAI,EAAE,qBAAqB,EAAE,KAAK,EAAE,OAAO,EAAE;IAC/C,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,OAAO,EAAE;IACpC,EAAE,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,OAAO,EAAE;IAEzC,mBAAmB;IACnB,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,OAAO,EAAE;IACrC,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,OAAO,EAAE;IACtC,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,OAAO,EAAE;IACtC,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,OAAO,EAAE;IAExC,6CAA6C;IAC7C,EAAE,IAAI,EAAE,oBAAoB,EAAE,KAAK,EAAE,OAAO,EAAE;IAC9C,EAAE,IAAI,EAAE,qBAAqB,EAAE,KAAK,EAAE,OAAO,EAAE;IAC/C,EAAE,IAAI,EAAE,qBAAqB,EAAE,KAAK,EAAE,OAAO,EAAE;IAC/C,EAAE,IAAI,EAAE,sBAAsB,EAAE,KAAK,EAAE,OAAO,EAAE;IAChD,EAAE,IAAI,EAAE,uBAAuB,EAAE,KAAK,EAAE,OAAO,EAAE;IACjD,EAAE,IAAI,EAAE,sBAAsB,EAAE,KAAK,EAAE,OAAO,EAAE;IAChD,EAAE,IAAI,EAAE,sBAAsB,EAAE,KAAK,EAAE,OAAO,EAAE;CACjD,CAAC"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * PartnerCore Proxy
3
+ *
4
+ * Local MCP proxy for AL Language Server integration.
5
+ * Bridges local AL development with PartnerCore Cloud MCP.
6
+ */
7
+ export * from './config/index.js';
8
+ export * from './utils/index.js';
9
+ export * from './al/index.js';
10
+ export * from './cloud/index.js';
11
+ export * from './router/index.js';
12
+ export * from './mcp/index.js';
13
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC"}