partnercore-proxy 0.1.2 → 0.1.4
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/dist/cli.js +6 -9
- package/dist/cli.js.map +1 -1
- package/dist/cloud/relay-client.d.ts +24 -8
- package/dist/cloud/relay-client.d.ts.map +1 -1
- package/dist/cloud/relay-client.js +202 -58
- package/dist/cloud/relay-client.js.map +1 -1
- package/dist/utils/security.d.ts +1 -1
- package/dist/utils/security.d.ts.map +1 -1
- package/dist/utils/security.js +13 -19
- package/dist/utils/security.js.map +1 -1
- package/package.json +1 -1
package/dist/cli.js
CHANGED
|
@@ -53,7 +53,7 @@ const program = new commander_1.Command();
|
|
|
53
53
|
program
|
|
54
54
|
.name('partnercore-proxy')
|
|
55
55
|
.description('Local MCP proxy for AL Language Server integration')
|
|
56
|
-
.version('0.1.
|
|
56
|
+
.version('0.1.4');
|
|
57
57
|
program
|
|
58
58
|
.command('start')
|
|
59
59
|
.description('Start the MCP proxy server')
|
|
@@ -136,9 +136,9 @@ async function startServer(options) {
|
|
|
136
136
|
});
|
|
137
137
|
const connected = await cloudClient.checkConnection();
|
|
138
138
|
if (connected) {
|
|
139
|
-
const
|
|
140
|
-
if (
|
|
141
|
-
logger.info(
|
|
139
|
+
const apiKeyValid = await cloudClient.validateApiKey();
|
|
140
|
+
if (apiKeyValid) {
|
|
141
|
+
logger.info('Cloud connected and API key validated');
|
|
142
142
|
}
|
|
143
143
|
else {
|
|
144
144
|
logger.warn('Cloud connection available but API key invalid');
|
|
@@ -222,12 +222,9 @@ async function checkConfiguration() {
|
|
|
222
222
|
});
|
|
223
223
|
const connected = await cloudClient.checkConnection();
|
|
224
224
|
if (connected) {
|
|
225
|
-
const
|
|
225
|
+
const apiKeyValid = await cloudClient.validateApiKey();
|
|
226
226
|
console.log(' ✓ Connected');
|
|
227
|
-
console.log(`
|
|
228
|
-
if (subscription.features) {
|
|
229
|
-
console.log(` Features: ${subscription.features.join(', ')}`);
|
|
230
|
-
}
|
|
227
|
+
console.log(` API Key: ${apiKeyValid ? 'valid' : 'invalid'}`);
|
|
231
228
|
}
|
|
232
229
|
else {
|
|
233
230
|
console.log(' ✗ Not connected');
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";;AAEA;;;;GAIG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,yCAAoC;AACpC,uCAAyB;AACzB,2CAA6B;AAC7B,kDAAiF;AACjF,iDAA4D;AAC5D,oEAA+D;AAC/D,gEAA2D;AAC3D,6DAA2D;AAC3D,4DAAqD;AACrD,+CAAuD;AAEvD,MAAM,OAAO,GAAG,IAAI,mBAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,mBAAmB,CAAC;KACzB,WAAW,CAAC,oDAAoD,CAAC;KACjE,OAAO,CAAC,OAAO,CAAC,CAAC;AAQpB,OAAO;KACJ,OAAO,CAAC,OAAO,CAAC;KAChB,WAAW,CAAC,4BAA4B,CAAC;KACzC,MAAM,CAAC,wBAAwB,EAAE,yCAAyC,CAAC;KAC3E,MAAM,CAAC,eAAe,EAAE,wBAAwB,CAAC;KACjD,MAAM,CAAC,YAAY,EAAE,6CAA6C,CAAC;KACnE,MAAM,CAAC,CAAC,OAAqB,EAAE,EAAE;IAChC,KAAK,WAAW,CAAC,OAAO,CAAC,CAAC;AAC5B,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,OAAO,CAAC;KAChB,WAAW,CAAC,qCAAqC,CAAC;KAClD,MAAM,CAAC,GAAG,EAAE;IACX,KAAK,kBAAkB,EAAE,CAAC;AAC5B,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,oBAAoB,CAAC;KAC7B,WAAW,CAAC,2CAA2C,CAAC;KACxD,MAAM,CAAC,GAAG,EAAE;IACX,KAAK,iBAAiB,EAAE,CAAC;AAC3B,CAAC,CAAC,CAAC;AAEL,OAAO,CAAC,KAAK,EAAE,CAAC;AAEhB;;GAEG;AACH,KAAK,UAAU,WAAW,CAAC,OAAqB;IAC9C,oBAAoB;IACpB,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC;IACpD,IAAA,wBAAY,EAAC,QAAQ,CAAC,CAAC;IACvB,MAAM,MAAM,GAAG,IAAA,qBAAS,GAAE,CAAC;IAE3B,MAAM,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC;IAE7C,qBAAqB;IACrB,MAAM,MAAM,GAAG,IAAA,sBAAU,GAAE,CAAC;IAE5B,gDAAgD;IAChD,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;QACtB,MAAM,CAAC,EAAE,CAAC,aAAa,GAAG,OAAO,CAAC,SAAS,CAAC;IAC9C,CAAC;SAAM,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,aAAa,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC,EAAE,CAAC;QACtG,8CAA8C;QAC9C,MAAM,QAAQ,GAAG,IAAA,2BAAe,GAAE,CAAC;QACnC,IAAI,QAAQ,EAAE,CAAC;YACb,MAAM,CAAC,EAAE,CAAC,aAAa,GAAG,QAAQ,CAAC;YACnC,MAAM,CAAC,IAAI,CAAC,+BAA+B,QAAQ,EAAE,CAAC,CAAC;QACzD,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,IAAI,CAAC,gFAAgF,CAAC,CAAC;QAChG,CAAC;IACH,CAAC;IAED,yBAAyB;IACzB,MAAM,UAAU,GAAG,IAAA,0BAAc,EAAC,MAAM,CAAC,CAAC;IAC1C,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;QACtB,KAAK,MAAM,KAAK,IAAI,UAAU,CAAC,MAAM,EAAE,CAAC;YACtC,MAAM,CAAC,KAAK,CAAC,wBAAwB,KAAK,EAAE,CAAC,CAAC;QAChD,CAAC;IACH,CAAC;IACD,0BAA0B;IAC1B,KAAK,MAAM,OAAO,IAAI,UAAU,CAAC,QAAQ,EAAE,CAAC;QAC1C,MAAM,CAAC,IAAI,CAAC,0BAA0B,OAAO,EAAE,CAAC,CAAC;IACnD,CAAC;IAED,0BAA0B;IAC1B,MAAM,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;IAC5C,MAAM,gBAAgB,GAAG,IAAI,yCAAkB,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAC3D,MAAM,aAAa,GAAG,MAAM,gBAAgB,CAAC,YAAY,EAAE,CAAC;IAC5D,MAAM,CAAC,IAAI,CAAC,uBAAuB,aAAa,CAAC,OAAO,EAAE,CAAC,CAAC;IAE5D,4EAA4E;IAC5E,MAAM,aAAa,GAAG,MAAM,CAAC,EAAE,CAAC,aAAa,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IAC/D,MAAM,CAAC,IAAI,CAAC,oBAAoB,aAAa,EAAE,CAAC,CAAC;IACjD,MAAM,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC;IAC9C,MAAM,QAAQ,GAAG,IAAI,qCAAgB,CAAC,aAAa,EAAE,aAAa,CAAC,CAAC;IACpE,MAAM,QAAQ,CAAC,UAAU,EAAE,CAAC;IAE5B,uCAAuC;IACvC,IAAI,WAAyC,CAAC;IAE9C,IAAI,OAAO,CAAC,KAAK,KAAK,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QAC7C,MAAM,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC;QAClD,WAAW,GAAG,IAAI,kCAAgB,CAAC;YACjC,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,UAAU,EAAE,MAAM,CAAC,UAAU;YAC7B,UAAU,EAAE,MAAM,CAAC,UAAU;SAC9B,CAAC,CAAC;QAEH,MAAM,SAAS,GAAG,MAAM,WAAW,CAAC,eAAe,EAAE,CAAC;QACtD,IAAI,SAAS,EAAE,CAAC;YACd,MAAM,WAAW,GAAG,MAAM,WAAW,CAAC,cAAc,EAAE,CAAC;YACvD,IAAI,WAAW,EAAE,CAAC;gBAChB,MAAM,CAAC,IAAI,CAAC,uCAAuC,CAAC,CAAC;YACvD,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,IAAI,CAAC,gDAAgD,CAAC,CAAC;YAChE,CAAC;QACH,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,IAAI,CAAC,sDAAsD,CAAC,CAAC;YACpE,WAAW,GAAG,SAAS,CAAC;QAC1B,CAAC;IACH,CAAC;SAAM,CAAC;QACN,MAAM,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;IAC5C,CAAC;IAED,0EAA0E;IAC1E,MAAM,MAAM,GAAG,IAAI,2BAAU,CAAC,MAAM,CAAC,EAAE,CAAC,aAAa,IAAI,SAAS,CAAC,CAAC;IACpE,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;IAC7B,IAAI,WAAW,EAAE,CAAC;QAChB,MAAM,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;IACrC,CAAC;IAED,wBAAwB;IACxB,MAAM,MAAM,GAAG,IAAI,gCAAoB,CAAC,MAAM,CAAC,CAAC;IAEhD,kBAAkB;IAClB,MAAM,QAAQ,GAAG,KAAK,IAAmB,EAAE;QACzC,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QAChC,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;QACpB,MAAM,QAAQ,CAAC,QAAQ,EAAE,CAAC;QAC1B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC;IAEF,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,KAAK,QAAQ,EAAE,CAAC,CAAC;IAC5C,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,KAAK,QAAQ,EAAE,CAAC,CAAC;IAE7C,eAAe;IACf,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;AACvB,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,kBAAkB;IAC/B,IAAA,wBAAY,EAAC,MAAM,CAAC,CAAC;IACrB,MAAM,MAAM,GAAG,IAAA,qBAAS,GAAE,CAAC;IAE3B,MAAM,CAAC,IAAI,CAAC,+CAA+C,CAAC,CAAC;IAE7D,MAAM,MAAM,GAAG,IAAA,sBAAU,GAAE,CAAC;IAE5B,sBAAsB;IACtB,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;IAC9B,OAAO,CAAC,GAAG,CAAC,gBAAgB,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC/C,OAAO,CAAC,GAAG,CAAC,cAAc,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;IACnE,OAAO,CAAC,GAAG,CAAC,gBAAgB,MAAM,CAAC,EAAE,CAAC,aAAa,EAAE,CAAC,CAAC;IACvD,OAAO,CAAC,GAAG,CAAC,wBAAwB,MAAM,CAAC,EAAE,CAAC,gBAAgB,EAAE,CAAC,CAAC;IAClE,OAAO,CAAC,GAAG,EAAE,CAAC;IAEd,yBAAyB;IACzB,MAAM,UAAU,GAAG,IAAA,0BAAc,EAAC,MAAM,CAAC,CAAC;IAC1C,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;IAC3B,IAAI,UAAU,CAAC,KAAK,EAAE,CAAC;QACrB,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;IACzC,CAAC;SAAM,CAAC;QACN,KAAK,MAAM,KAAK,IAAI,UAAU,CAAC,MAAM,EAAE,CAAC;YACtC,OAAO,CAAC,GAAG,CAAC,OAAO,KAAK,EAAE,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC;IACD,OAAO,CAAC,GAAG,EAAE,CAAC;IAEd,qBAAqB;IACrB,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;IAC7B,MAAM,gBAAgB,GAAG,IAAI,yCAAkB,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAC3D,IAAI,CAAC;QACH,MAAM,aAAa,GAAG,MAAM,gBAAgB,CAAC,YAAY,EAAE,CAAC;QAC5D,OAAO,CAAC,GAAG,CAAC,cAAc,aAAa,CAAC,OAAO,EAAE,CAAC,CAAC;QACnD,OAAO,CAAC,GAAG,CAAC,WAAW,aAAa,CAAC,IAAI,EAAE,CAAC,CAAC;IAC/C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,GAAG,CAAC,kBAAkB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC;IAC5F,CAAC;IACD,OAAO,CAAC,GAAG,EAAE,CAAC;IAEd,yBAAyB;IACzB,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;IACjC,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QAClB,MAAM,WAAW,GAAG,IAAI,kCAAgB,CAAC;YACvC,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,UAAU,EAAE,MAAM,CAAC,UAAU;YAC7B,UAAU,EAAE,MAAM,CAAC,UAAU;SAC9B,CAAC,CAAC;QACH,MAAM,SAAS,GAAG,MAAM,WAAW,CAAC,eAAe,EAAE,CAAC;QACtD,IAAI,SAAS,EAAE,CAAC;YACd,MAAM,WAAW,GAAG,MAAM,WAAW,CAAC,cAAc,EAAE,CAAC;YACvD,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;YAC7B,OAAO,CAAC,GAAG,CAAC,cAAc,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC;QACjE,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;QACnC,CAAC;IACH,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC;IAC3C,CAAC;AACH,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,iBAAiB;IAC9B,IAAA,wBAAY,EAAC,MAAM,CAAC,CAAC;IACrB,MAAM,MAAM,GAAG,IAAA,qBAAS,GAAE,CAAC;IAE3B,MAAM,CAAC,IAAI,CAAC,sCAAsC,CAAC,CAAC;IAEpD,MAAM,MAAM,GAAG,IAAA,sBAAU,GAAE,CAAC;IAC5B,MAAM,gBAAgB,GAAG,IAAI,yCAAkB,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAE3D,IAAI,CAAC;QACH,MAAM,aAAa,GAAG,MAAM,gBAAgB,CAAC,YAAY,EAAE,CAAC;QAC5D,MAAM,CAAC,IAAI,CAAC,eAAe,aAAa,CAAC,OAAO,EAAE,CAAC,CAAC;QACpD,MAAM,CAAC,IAAI,CAAC,SAAS,aAAa,CAAC,IAAI,EAAE,CAAC,CAAC;IAC7C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,KAAK,CAAC,+BAA+B,EAAE,KAAK,CAAC,CAAC;QACrD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* Cloud Relay Client
|
|
3
3
|
*
|
|
4
4
|
* Handles communication with the PartnerCore Cloud MCP server.
|
|
5
|
-
*
|
|
5
|
+
* Uses JSON-RPC protocol to communicate with /mcp endpoint.
|
|
6
6
|
*/
|
|
7
7
|
/**
|
|
8
8
|
* Tool call request
|
|
@@ -38,16 +38,36 @@ export interface CloudRelayConfig {
|
|
|
38
38
|
}
|
|
39
39
|
/**
|
|
40
40
|
* Cloud Relay Client
|
|
41
|
+
*
|
|
42
|
+
* Communicates with PartnerCore Cloud MCP server using JSON-RPC protocol.
|
|
41
43
|
*/
|
|
42
44
|
export declare class CloudRelayClient {
|
|
43
45
|
private client;
|
|
44
46
|
private logger;
|
|
45
47
|
private toolsCache;
|
|
48
|
+
private requestId;
|
|
49
|
+
private initialized;
|
|
46
50
|
constructor(config: CloudRelayConfig | string, apiKey?: string);
|
|
51
|
+
/**
|
|
52
|
+
* Generate next request ID
|
|
53
|
+
*/
|
|
54
|
+
private nextId;
|
|
55
|
+
/**
|
|
56
|
+
* Send JSON-RPC request to /mcp endpoint
|
|
57
|
+
*/
|
|
58
|
+
private rpcCall;
|
|
59
|
+
/**
|
|
60
|
+
* Initialize connection with cloud MCP server
|
|
61
|
+
*/
|
|
62
|
+
initialize(): Promise<boolean>;
|
|
47
63
|
/**
|
|
48
64
|
* Check if connection to cloud is available
|
|
49
65
|
*/
|
|
50
66
|
checkConnection(): Promise<boolean>;
|
|
67
|
+
/**
|
|
68
|
+
* Validate API key by trying to list tools
|
|
69
|
+
*/
|
|
70
|
+
validateApiKey(): Promise<boolean>;
|
|
51
71
|
/**
|
|
52
72
|
* Get available tools from cloud server
|
|
53
73
|
*/
|
|
@@ -57,19 +77,15 @@ export declare class CloudRelayClient {
|
|
|
57
77
|
*/
|
|
58
78
|
callTool(request: ToolCallRequest): Promise<ToolCallResponse>;
|
|
59
79
|
/**
|
|
60
|
-
*
|
|
61
|
-
*/
|
|
62
|
-
streamToolCall(request: ToolCallRequest, onChunk: (chunk: string) => void): Promise<ToolCallResponse>;
|
|
63
|
-
/**
|
|
64
|
-
* Search knowledge base
|
|
80
|
+
* Search knowledge base using al-assistant learn action
|
|
65
81
|
*/
|
|
66
82
|
searchKnowledgeBase(query: string, filters?: Record<string, unknown>): Promise<unknown[]>;
|
|
67
83
|
/**
|
|
68
|
-
* Get templates
|
|
84
|
+
* Get templates using al-assistant list-templates action
|
|
69
85
|
*/
|
|
70
86
|
getTemplates(type?: string): Promise<unknown[]>;
|
|
71
87
|
/**
|
|
72
|
-
* Validate subscription
|
|
88
|
+
* Validate subscription using al-assistant status action
|
|
73
89
|
*/
|
|
74
90
|
validateSubscription(): Promise<{
|
|
75
91
|
valid: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"relay-client.d.ts","sourceRoot":"","sources":["../../src/cloud/relay-client.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;
|
|
1
|
+
{"version":3,"file":"relay-client.d.ts","sourceRoot":"","sources":["../../src/cloud/relay-client.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AA6BH;;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;;;;GAIG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,UAAU,CAAsC;IACxD,OAAO,CAAC,SAAS,CAAK;IACtB,OAAO,CAAC,WAAW,CAAS;gBAEhB,MAAM,EAAE,gBAAgB,GAAG,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM;IAyD9D;;OAEG;IACH,OAAO,CAAC,MAAM;IAId;;OAEG;YACW,OAAO;IAiBrB;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,OAAO,CAAC;IA6BpC;;OAEG;IACG,eAAe,IAAI,OAAO,CAAC,OAAO,CAAC;IAYzC;;OAEG;IACG,cAAc,IAAI,OAAO,CAAC,OAAO,CAAC;IA0BxC;;OAEG;IACG,QAAQ,IAAI,OAAO,CAAC,mBAAmB,EAAE,CAAC;IA2BhD;;OAEG;IACG,QAAQ,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,gBAAgB,CAAC;IA+CnE;;OAEG;IACG,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IA0C/F;;OAEG;IACG,YAAY,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAuCrD;;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;IAwB7F;;OAEG;IACH,UAAU,IAAI,IAAI;CAInB"}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* Cloud Relay Client
|
|
4
4
|
*
|
|
5
5
|
* Handles communication with the PartnerCore Cloud MCP server.
|
|
6
|
-
*
|
|
6
|
+
* Uses JSON-RPC protocol to communicate with /mcp endpoint.
|
|
7
7
|
*/
|
|
8
8
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
9
9
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
@@ -14,11 +14,15 @@ const axios_1 = __importDefault(require("axios"));
|
|
|
14
14
|
const logger_js_1 = require("../utils/logger.js");
|
|
15
15
|
/**
|
|
16
16
|
* Cloud Relay Client
|
|
17
|
+
*
|
|
18
|
+
* Communicates with PartnerCore Cloud MCP server using JSON-RPC protocol.
|
|
17
19
|
*/
|
|
18
20
|
class CloudRelayClient {
|
|
19
21
|
client;
|
|
20
22
|
logger = (0, logger_js_1.getLogger)();
|
|
21
23
|
toolsCache = null;
|
|
24
|
+
requestId = 0;
|
|
25
|
+
initialized = false;
|
|
22
26
|
constructor(config, apiKey) {
|
|
23
27
|
// Support both old (cloudUrl, apiKey) and new (config object) signatures
|
|
24
28
|
const cloudUrl = typeof config === 'string' ? config : config.cloudUrl;
|
|
@@ -43,9 +47,9 @@ class CloudRelayClient {
|
|
|
43
47
|
headers,
|
|
44
48
|
});
|
|
45
49
|
// Add request interceptor for logging
|
|
46
|
-
this.client.interceptors.request.use((
|
|
47
|
-
this.logger.debug(`Cloud request: ${
|
|
48
|
-
return
|
|
50
|
+
this.client.interceptors.request.use((reqConfig) => {
|
|
51
|
+
this.logger.debug(`Cloud request: ${reqConfig.method?.toUpperCase()} ${reqConfig.url}`);
|
|
52
|
+
return reqConfig;
|
|
49
53
|
}, (error) => {
|
|
50
54
|
this.logger.error('Cloud request error:', error);
|
|
51
55
|
return Promise.reject(error);
|
|
@@ -66,11 +70,66 @@ class CloudRelayClient {
|
|
|
66
70
|
return Promise.reject(error);
|
|
67
71
|
});
|
|
68
72
|
}
|
|
73
|
+
/**
|
|
74
|
+
* Generate next request ID
|
|
75
|
+
*/
|
|
76
|
+
nextId() {
|
|
77
|
+
return ++this.requestId;
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Send JSON-RPC request to /mcp endpoint
|
|
81
|
+
*/
|
|
82
|
+
async rpcCall(method, params) {
|
|
83
|
+
const request = {
|
|
84
|
+
jsonrpc: '2.0',
|
|
85
|
+
method,
|
|
86
|
+
params,
|
|
87
|
+
id: this.nextId(),
|
|
88
|
+
};
|
|
89
|
+
try {
|
|
90
|
+
const response = await this.client.post('/mcp', request);
|
|
91
|
+
return response.data;
|
|
92
|
+
}
|
|
93
|
+
catch (error) {
|
|
94
|
+
const axiosError = error;
|
|
95
|
+
throw new Error(axiosError.message || 'RPC call failed');
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Initialize connection with cloud MCP server
|
|
100
|
+
*/
|
|
101
|
+
async initialize() {
|
|
102
|
+
if (this.initialized) {
|
|
103
|
+
return true;
|
|
104
|
+
}
|
|
105
|
+
try {
|
|
106
|
+
const response = await this.rpcCall('initialize', {
|
|
107
|
+
protocolVersion: '2024-11-05',
|
|
108
|
+
capabilities: {},
|
|
109
|
+
clientInfo: {
|
|
110
|
+
name: 'partnercore-proxy',
|
|
111
|
+
version: '0.1.2',
|
|
112
|
+
},
|
|
113
|
+
});
|
|
114
|
+
if (response.error) {
|
|
115
|
+
this.logger.error(`Initialize failed: ${response.error.message}`);
|
|
116
|
+
return false;
|
|
117
|
+
}
|
|
118
|
+
this.initialized = true;
|
|
119
|
+
this.logger.info('Cloud MCP initialized successfully');
|
|
120
|
+
return true;
|
|
121
|
+
}
|
|
122
|
+
catch (error) {
|
|
123
|
+
this.logger.error('Failed to initialize cloud MCP:', error);
|
|
124
|
+
return false;
|
|
125
|
+
}
|
|
126
|
+
}
|
|
69
127
|
/**
|
|
70
128
|
* Check if connection to cloud is available
|
|
71
129
|
*/
|
|
72
130
|
async checkConnection() {
|
|
73
131
|
try {
|
|
132
|
+
// Use /health endpoint for connection check
|
|
74
133
|
await this.client.get('/health');
|
|
75
134
|
this.logger.info('Cloud MCP connection verified');
|
|
76
135
|
return true;
|
|
@@ -80,6 +139,32 @@ class CloudRelayClient {
|
|
|
80
139
|
return false;
|
|
81
140
|
}
|
|
82
141
|
}
|
|
142
|
+
/**
|
|
143
|
+
* Validate API key by trying to list tools
|
|
144
|
+
*/
|
|
145
|
+
async validateApiKey() {
|
|
146
|
+
try {
|
|
147
|
+
// Initialize first
|
|
148
|
+
if (!this.initialized) {
|
|
149
|
+
const initOk = await this.initialize();
|
|
150
|
+
if (!initOk) {
|
|
151
|
+
return false;
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
// Try to list tools - this will fail if API key is invalid
|
|
155
|
+
const response = await this.rpcCall('tools/list');
|
|
156
|
+
if (response.error) {
|
|
157
|
+
this.logger.warn(`API key validation failed: ${response.error.message}`);
|
|
158
|
+
return false;
|
|
159
|
+
}
|
|
160
|
+
this.logger.info('API key validated successfully');
|
|
161
|
+
return true;
|
|
162
|
+
}
|
|
163
|
+
catch {
|
|
164
|
+
this.logger.warn('Cloud connection available but API key invalid');
|
|
165
|
+
return false;
|
|
166
|
+
}
|
|
167
|
+
}
|
|
83
168
|
/**
|
|
84
169
|
* Get available tools from cloud server
|
|
85
170
|
*/
|
|
@@ -88,8 +173,16 @@ class CloudRelayClient {
|
|
|
88
173
|
return this.toolsCache;
|
|
89
174
|
}
|
|
90
175
|
try {
|
|
91
|
-
|
|
92
|
-
this.
|
|
176
|
+
// Ensure initialized
|
|
177
|
+
if (!this.initialized) {
|
|
178
|
+
await this.initialize();
|
|
179
|
+
}
|
|
180
|
+
const response = await this.rpcCall('tools/list');
|
|
181
|
+
if (response.error) {
|
|
182
|
+
this.logger.error(`Get tools failed: ${response.error.message}`);
|
|
183
|
+
return [];
|
|
184
|
+
}
|
|
185
|
+
this.toolsCache = response.result?.tools || [];
|
|
93
186
|
this.logger.info(`Loaded ${this.toolsCache.length} cloud tools`);
|
|
94
187
|
return this.toolsCache;
|
|
95
188
|
}
|
|
@@ -104,52 +197,36 @@ class CloudRelayClient {
|
|
|
104
197
|
async callTool(request) {
|
|
105
198
|
this.logger.debug(`Calling cloud tool: ${request.name}`);
|
|
106
199
|
try {
|
|
107
|
-
|
|
200
|
+
// Ensure initialized
|
|
201
|
+
if (!this.initialized) {
|
|
202
|
+
await this.initialize();
|
|
203
|
+
}
|
|
204
|
+
const response = await this.rpcCall('tools/call', {
|
|
108
205
|
name: request.name,
|
|
109
206
|
arguments: request.arguments,
|
|
110
207
|
});
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
208
|
+
if (response.error) {
|
|
209
|
+
return {
|
|
210
|
+
success: false,
|
|
211
|
+
error: response.error.message,
|
|
212
|
+
};
|
|
213
|
+
}
|
|
214
|
+
// Extract text content from MCP response
|
|
215
|
+
const content = response.result?.content;
|
|
216
|
+
if (content && Array.isArray(content) && content.length > 0) {
|
|
217
|
+
const textContent = content.find(c => c.type === 'text');
|
|
218
|
+
if (textContent) {
|
|
219
|
+
return {
|
|
220
|
+
success: true,
|
|
221
|
+
result: textContent.text,
|
|
222
|
+
};
|
|
223
|
+
}
|
|
224
|
+
}
|
|
115
225
|
return {
|
|
116
|
-
success:
|
|
117
|
-
|
|
226
|
+
success: true,
|
|
227
|
+
result: response.result,
|
|
118
228
|
};
|
|
119
229
|
}
|
|
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
230
|
catch (error) {
|
|
154
231
|
const axiosError = error;
|
|
155
232
|
return {
|
|
@@ -159,15 +236,42 @@ class CloudRelayClient {
|
|
|
159
236
|
}
|
|
160
237
|
}
|
|
161
238
|
/**
|
|
162
|
-
* Search knowledge base
|
|
239
|
+
* Search knowledge base using al-assistant learn action
|
|
163
240
|
*/
|
|
164
241
|
async searchKnowledgeBase(query, filters) {
|
|
165
242
|
try {
|
|
166
|
-
const response = await this.
|
|
167
|
-
|
|
168
|
-
|
|
243
|
+
const response = await this.callTool({
|
|
244
|
+
name: 'al-assistant',
|
|
245
|
+
arguments: {
|
|
246
|
+
action: 'learn',
|
|
247
|
+
params: {
|
|
248
|
+
query,
|
|
249
|
+
...filters,
|
|
250
|
+
},
|
|
251
|
+
},
|
|
169
252
|
});
|
|
170
|
-
|
|
253
|
+
if (!response.success) {
|
|
254
|
+
this.logger.error('KB search failed:', response.error);
|
|
255
|
+
return [];
|
|
256
|
+
}
|
|
257
|
+
// Try to parse as JSON if it's a string
|
|
258
|
+
if (typeof response.result === 'string') {
|
|
259
|
+
try {
|
|
260
|
+
const parsed = JSON.parse(response.result);
|
|
261
|
+
if (Array.isArray(parsed)) {
|
|
262
|
+
return parsed;
|
|
263
|
+
}
|
|
264
|
+
return [parsed];
|
|
265
|
+
}
|
|
266
|
+
catch {
|
|
267
|
+
return [{ content: response.result }];
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
const result = response.result;
|
|
271
|
+
if (Array.isArray(result)) {
|
|
272
|
+
return result;
|
|
273
|
+
}
|
|
274
|
+
return [result];
|
|
171
275
|
}
|
|
172
276
|
catch (error) {
|
|
173
277
|
this.logger.error('KB search failed:', error);
|
|
@@ -175,13 +279,39 @@ class CloudRelayClient {
|
|
|
175
279
|
}
|
|
176
280
|
}
|
|
177
281
|
/**
|
|
178
|
-
* Get templates
|
|
282
|
+
* Get templates using al-assistant list-templates action
|
|
179
283
|
*/
|
|
180
284
|
async getTemplates(type) {
|
|
181
285
|
try {
|
|
182
|
-
const
|
|
183
|
-
|
|
184
|
-
|
|
286
|
+
const response = await this.callTool({
|
|
287
|
+
name: 'al-assistant',
|
|
288
|
+
arguments: {
|
|
289
|
+
action: 'list-templates',
|
|
290
|
+
params: type ? { category: type } : {},
|
|
291
|
+
},
|
|
292
|
+
});
|
|
293
|
+
if (!response.success) {
|
|
294
|
+
this.logger.error('Get templates failed:', response.error);
|
|
295
|
+
return [];
|
|
296
|
+
}
|
|
297
|
+
// Try to parse as JSON if it's a string
|
|
298
|
+
if (typeof response.result === 'string') {
|
|
299
|
+
try {
|
|
300
|
+
const parsed = JSON.parse(response.result);
|
|
301
|
+
if (Array.isArray(parsed)) {
|
|
302
|
+
return parsed;
|
|
303
|
+
}
|
|
304
|
+
return [parsed];
|
|
305
|
+
}
|
|
306
|
+
catch {
|
|
307
|
+
return [{ content: response.result }];
|
|
308
|
+
}
|
|
309
|
+
}
|
|
310
|
+
const result = response.result;
|
|
311
|
+
if (Array.isArray(result)) {
|
|
312
|
+
return result;
|
|
313
|
+
}
|
|
314
|
+
return [result];
|
|
185
315
|
}
|
|
186
316
|
catch (error) {
|
|
187
317
|
this.logger.error('Get templates failed:', error);
|
|
@@ -189,12 +319,25 @@ class CloudRelayClient {
|
|
|
189
319
|
}
|
|
190
320
|
}
|
|
191
321
|
/**
|
|
192
|
-
* Validate subscription
|
|
322
|
+
* Validate subscription using al-assistant status action
|
|
193
323
|
*/
|
|
194
324
|
async validateSubscription() {
|
|
195
325
|
try {
|
|
196
|
-
const response = await this.
|
|
197
|
-
|
|
326
|
+
const response = await this.callTool({
|
|
327
|
+
name: 'al-assistant',
|
|
328
|
+
arguments: {
|
|
329
|
+
action: 'status',
|
|
330
|
+
params: {},
|
|
331
|
+
},
|
|
332
|
+
});
|
|
333
|
+
if (!response.success) {
|
|
334
|
+
return { valid: false };
|
|
335
|
+
}
|
|
336
|
+
return {
|
|
337
|
+
valid: true,
|
|
338
|
+
tier: 'standard',
|
|
339
|
+
features: ['learn', 'generate', 'process', 'review'],
|
|
340
|
+
};
|
|
198
341
|
}
|
|
199
342
|
catch {
|
|
200
343
|
return { valid: false };
|
|
@@ -205,6 +348,7 @@ class CloudRelayClient {
|
|
|
205
348
|
*/
|
|
206
349
|
clearCache() {
|
|
207
350
|
this.toolsCache = null;
|
|
351
|
+
this.initialized = false;
|
|
208
352
|
}
|
|
209
353
|
}
|
|
210
354
|
exports.CloudRelayClient = CloudRelayClient;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"relay-client.js","sourceRoot":"","sources":["../../src/cloud/relay-client.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;;;;AAEH,kDAAyD;
|
|
1
|
+
{"version":3,"file":"relay-client.js","sourceRoot":"","sources":["../../src/cloud/relay-client.ts"],"names":[],"mappings":"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"}
|
package/dist/utils/security.d.ts
CHANGED
|
@@ -11,7 +11,7 @@ export declare function maskSensitiveData(obj: unknown, depth?: number): unknown
|
|
|
11
11
|
/**
|
|
12
12
|
* Validate and sanitize a file path to prevent directory traversal
|
|
13
13
|
*
|
|
14
|
-
* @param filePath - The path to validate
|
|
14
|
+
* @param filePath - The path to validate (can be absolute if within workspace, or relative)
|
|
15
15
|
* @param workspaceRoot - The allowed root directory
|
|
16
16
|
* @returns The sanitized absolute path
|
|
17
17
|
* @throws SecurityError if path is outside workspace or contains suspicious patterns
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"security.d.ts","sourceRoot":"","sources":["../../src/utils/security.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AA6CH;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,SAAI,GAAG,OAAO,CA8ClE;AAwCD;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,MAAM,
|
|
1
|
+
{"version":3,"file":"security.d.ts","sourceRoot":"","sources":["../../src/utils/security.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AA6CH;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,SAAI,GAAG,OAAO,CA8ClE;AAwCD;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,MAAM,CAqE5E;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,MAAM,EAChB,aAAa,EAAE,MAAM,EACrB,IAAI,GAAE,MAAM,GAAG,WAAW,GAAG,KAAa,GACzC,MAAM,CA2BR;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,QAAQ,EAAE,MAAM,EAAE,EAClB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,QAAQ,GAAG,OAAO,CAAC,GAC1E,IAAI,CA2BN;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,SAAQ,GAAG,MAAM,CAcvE;AAED;;GAEG;AACH,qBAAa,aAAc,SAAQ,KAAK;IACtC,IAAI,EAAE,MAAM,CAAC;gBAED,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;CAK1C;AAED;;GAEG;AACH,qBAAa,eAAgB,SAAQ,KAAK;gBAC5B,OAAO,EAAE,MAAM;CAI5B;AAED;;GAEG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,QAAQ,CAAgB;IAChC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IACrC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;gBAEtB,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM;IAKjD;;OAEG;IACH,SAAS,IAAI,OAAO;IAmBpB;;OAEG;IACH,SAAS,IAAI,MAAM;IAMnB;;OAEG;IACH,OAAO,IAAI,MAAM;CAKlB"}
|
package/dist/utils/security.js
CHANGED
|
@@ -165,7 +165,7 @@ function containsTraversalPatterns(input) {
|
|
|
165
165
|
/**
|
|
166
166
|
* Validate and sanitize a file path to prevent directory traversal
|
|
167
167
|
*
|
|
168
|
-
* @param filePath - The path to validate
|
|
168
|
+
* @param filePath - The path to validate (can be absolute if within workspace, or relative)
|
|
169
169
|
* @param workspaceRoot - The allowed root directory
|
|
170
170
|
* @returns The sanitized absolute path
|
|
171
171
|
* @throws SecurityError if path is outside workspace or contains suspicious patterns
|
|
@@ -181,19 +181,6 @@ function sanitizePath(filePath, workspaceRoot) {
|
|
|
181
181
|
if (containsTraversalPatterns(filePath) || containsTraversalPatterns(decoded)) {
|
|
182
182
|
throw new SecurityError('Path traversal pattern detected', 'PATH_TRAVERSAL');
|
|
183
183
|
}
|
|
184
|
-
// Check for absolute paths (platform-aware)
|
|
185
|
-
if (path.isAbsolute(decoded)) {
|
|
186
|
-
throw new SecurityError('Absolute paths are not allowed', 'ABSOLUTE_PATH');
|
|
187
|
-
}
|
|
188
|
-
// Check for Windows drive letters even on non-Windows
|
|
189
|
-
if (/^[a-zA-Z]:/.test(decoded)) {
|
|
190
|
-
throw new SecurityError('Windows drive paths are not allowed', 'ABSOLUTE_PATH');
|
|
191
|
-
}
|
|
192
|
-
// Check for paths that start with / (Unix absolute)
|
|
193
|
-
if (decoded.startsWith('/') && process.platform !== 'win32') {
|
|
194
|
-
// On Windows, /something becomes relative, but on Unix it's absolute
|
|
195
|
-
throw new SecurityError('Absolute paths are not allowed', 'ABSOLUTE_PATH');
|
|
196
|
-
}
|
|
197
184
|
// Additional suspicious patterns that might indicate attack attempts
|
|
198
185
|
const suspiciousPatterns = [
|
|
199
186
|
/%2e/i, // Any remaining URL-encoded dots
|
|
@@ -216,15 +203,22 @@ function sanitizePath(filePath, workspaceRoot) {
|
|
|
216
203
|
throw new SecurityError('Suspicious encoding pattern detected', 'SUSPICIOUS_ENCODING');
|
|
217
204
|
}
|
|
218
205
|
}
|
|
219
|
-
// Normalize
|
|
206
|
+
// Normalize the workspace root
|
|
220
207
|
const normalizedRoot = path.resolve(workspaceRoot);
|
|
221
|
-
|
|
222
|
-
|
|
208
|
+
// Handle absolute paths - if the path is absolute and within workspace, allow it
|
|
209
|
+
let normalizedPath;
|
|
210
|
+
if (path.isAbsolute(decoded) || /^[a-zA-Z]:/.test(decoded)) {
|
|
211
|
+
// Absolute path provided - resolve it directly
|
|
212
|
+
normalizedPath = path.resolve(decoded);
|
|
213
|
+
}
|
|
214
|
+
else {
|
|
215
|
+
// Relative path - resolve from workspace root
|
|
216
|
+
normalizedPath = path.resolve(workspaceRoot, decoded);
|
|
217
|
+
}
|
|
218
|
+
// Check for path traversal after resolution - path must be within workspace
|
|
223
219
|
if (!normalizedPath.startsWith(normalizedRoot)) {
|
|
224
220
|
throw new SecurityError('Path resolves outside workspace', 'PATH_TRAVERSAL');
|
|
225
221
|
}
|
|
226
|
-
// Ensure the path doesn't equal root exactly when input was empty
|
|
227
|
-
// This is fine - empty string resolves to workspace root
|
|
228
222
|
return normalizedPath;
|
|
229
223
|
}
|
|
230
224
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"security.js","sourceRoot":"","sources":["../../src/utils/security.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgDH,8CA8CC;AAgDD,
|
|
1
|
+
{"version":3,"file":"security.js","sourceRoot":"","sources":["../../src/utils/security.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "partnercore-proxy",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.4",
|
|
4
4
|
"description": "Local MCP proxy for AL Language Server integration - bridges local Business Central AL development with PartnerCore Cloud MCP",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|