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.
- package/CHANGELOG.md +54 -0
- package/LICENSE +22 -0
- package/README.md +234 -0
- package/dist/al/extension-manager.d.ts +52 -0
- package/dist/al/extension-manager.d.ts.map +1 -0
- package/dist/al/extension-manager.js +348 -0
- package/dist/al/extension-manager.js.map +1 -0
- package/dist/al/index.d.ts +3 -0
- package/dist/al/index.d.ts.map +1 -0
- package/dist/al/index.js +19 -0
- package/dist/al/index.js.map +1 -0
- package/dist/al/language-server.d.ts +134 -0
- package/dist/al/language-server.d.ts.map +1 -0
- package/dist/al/language-server.js +431 -0
- package/dist/al/language-server.js.map +1 -0
- package/dist/cli.d.ts +8 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +207 -0
- package/dist/cli.js.map +1 -0
- package/dist/cloud/index.d.ts +2 -0
- package/dist/cloud/index.d.ts.map +1 -0
- package/dist/cloud/index.js +18 -0
- package/dist/cloud/index.js.map +1 -0
- package/dist/cloud/relay-client.d.ts +84 -0
- package/dist/cloud/relay-client.d.ts.map +1 -0
- package/dist/cloud/relay-client.js +211 -0
- package/dist/cloud/relay-client.js.map +1 -0
- package/dist/config/index.d.ts +3 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +19 -0
- package/dist/config/index.js.map +1 -0
- package/dist/config/loader.d.ts +20 -0
- package/dist/config/loader.d.ts.map +1 -0
- package/dist/config/loader.js +136 -0
- package/dist/config/loader.js.map +1 -0
- package/dist/config/types.d.ts +51 -0
- package/dist/config/types.d.ts.map +1 -0
- package/dist/config/types.js +33 -0
- package/dist/config/types.js.map +1 -0
- package/dist/index.d.ts +13 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +29 -0
- package/dist/index.js.map +1 -0
- package/dist/mcp/index.d.ts +2 -0
- package/dist/mcp/index.d.ts.map +1 -0
- package/dist/mcp/index.js +18 -0
- package/dist/mcp/index.js.map +1 -0
- package/dist/mcp/server.d.ts +33 -0
- package/dist/mcp/server.d.ts.map +1 -0
- package/dist/mcp/server.js +98 -0
- package/dist/mcp/server.js.map +1 -0
- package/dist/router/index.d.ts +2 -0
- package/dist/router/index.d.ts.map +1 -0
- package/dist/router/index.js +18 -0
- package/dist/router/index.js.map +1 -0
- package/dist/router/tool-router.d.ts +87 -0
- package/dist/router/tool-router.d.ts.map +1 -0
- package/dist/router/tool-router.js +557 -0
- package/dist/router/tool-router.js.map +1 -0
- package/dist/utils/index.d.ts +3 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +19 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/logger.d.ts +20 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +99 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/security.d.ts +66 -0
- package/dist/utils/security.d.ts.map +1 -0
- package/dist/utils/security.js +358 -0
- package/dist/utils/security.js.map +1 -0
- package/mcp.json +125 -0
- package/package.json +107 -0
|
@@ -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 @@
|
|
|
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"}
|
package/dist/index.d.ts
ADDED
|
@@ -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"}
|