openmcp-sdk 0.0.4 → 0.0.6
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/README.md +37 -15
- package/icons/openmcp-sdk.svg +34 -0
- package/main.js +85 -0
- package/package.json +5 -2
- package/renderer/CascadiaCode.woff2 +0 -0
- package/renderer/animation.css +121 -0
- package/renderer/assets/KaTeX_AMS-Regular-BQhdFMY1.woff2 +0 -0
- package/renderer/assets/KaTeX_AMS-Regular-DMm9YOAa.woff +0 -0
- package/renderer/assets/KaTeX_AMS-Regular-DRggAlZN.ttf +0 -0
- package/renderer/assets/KaTeX_Caligraphic-Bold-ATXxdsX0.ttf +0 -0
- package/renderer/assets/KaTeX_Caligraphic-Bold-BEiXGLvX.woff +0 -0
- package/renderer/assets/KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2 +0 -0
- package/renderer/assets/KaTeX_Caligraphic-Regular-CTRA-rTL.woff +0 -0
- package/renderer/assets/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2 +0 -0
- package/renderer/assets/KaTeX_Caligraphic-Regular-wX97UBjC.ttf +0 -0
- package/renderer/assets/KaTeX_Fraktur-Bold-BdnERNNW.ttf +0 -0
- package/renderer/assets/KaTeX_Fraktur-Bold-BsDP51OF.woff +0 -0
- package/renderer/assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2 +0 -0
- package/renderer/assets/KaTeX_Fraktur-Regular-CB_wures.ttf +0 -0
- package/renderer/assets/KaTeX_Fraktur-Regular-CTYiF6lA.woff2 +0 -0
- package/renderer/assets/KaTeX_Fraktur-Regular-Dxdc4cR9.woff +0 -0
- package/renderer/assets/KaTeX_Main-Bold-Cx986IdX.woff2 +0 -0
- package/renderer/assets/KaTeX_Main-Bold-Jm3AIy58.woff +0 -0
- package/renderer/assets/KaTeX_Main-Bold-waoOVXN0.ttf +0 -0
- package/renderer/assets/KaTeX_Main-BoldItalic-DxDJ3AOS.woff2 +0 -0
- package/renderer/assets/KaTeX_Main-BoldItalic-DzxPMmG6.ttf +0 -0
- package/renderer/assets/KaTeX_Main-BoldItalic-SpSLRI95.woff +0 -0
- package/renderer/assets/KaTeX_Main-Italic-3WenGoN9.ttf +0 -0
- package/renderer/assets/KaTeX_Main-Italic-BMLOBm91.woff +0 -0
- package/renderer/assets/KaTeX_Main-Italic-NWA7e6Wa.woff2 +0 -0
- package/renderer/assets/KaTeX_Main-Regular-B22Nviop.woff2 +0 -0
- package/renderer/assets/KaTeX_Main-Regular-Dr94JaBh.woff +0 -0
- package/renderer/assets/KaTeX_Main-Regular-ypZvNtVU.ttf +0 -0
- package/renderer/assets/KaTeX_Math-BoldItalic-B3XSjfu4.ttf +0 -0
- package/renderer/assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2 +0 -0
- package/renderer/assets/KaTeX_Math-BoldItalic-iY-2wyZ7.woff +0 -0
- package/renderer/assets/KaTeX_Math-Italic-DA0__PXp.woff +0 -0
- package/renderer/assets/KaTeX_Math-Italic-flOr_0UB.ttf +0 -0
- package/renderer/assets/KaTeX_Math-Italic-t53AETM-.woff2 +0 -0
- package/renderer/assets/KaTeX_SansSerif-Bold-CFMepnvq.ttf +0 -0
- package/renderer/assets/KaTeX_SansSerif-Bold-D1sUS0GD.woff2 +0 -0
- package/renderer/assets/KaTeX_SansSerif-Bold-DbIhKOiC.woff +0 -0
- package/renderer/assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2 +0 -0
- package/renderer/assets/KaTeX_SansSerif-Italic-DN2j7dab.woff +0 -0
- package/renderer/assets/KaTeX_SansSerif-Italic-YYjJ1zSn.ttf +0 -0
- package/renderer/assets/KaTeX_SansSerif-Regular-BNo7hRIc.ttf +0 -0
- package/renderer/assets/KaTeX_SansSerif-Regular-CS6fqUqJ.woff +0 -0
- package/renderer/assets/KaTeX_SansSerif-Regular-DDBCnlJ7.woff2 +0 -0
- package/renderer/assets/KaTeX_Script-Regular-C5JkGWo-.ttf +0 -0
- package/renderer/assets/KaTeX_Script-Regular-D3wIWfF6.woff2 +0 -0
- package/renderer/assets/KaTeX_Script-Regular-D5yQViql.woff +0 -0
- package/renderer/assets/KaTeX_Size1-Regular-C195tn64.woff +0 -0
- package/renderer/assets/KaTeX_Size1-Regular-Dbsnue_I.ttf +0 -0
- package/renderer/assets/KaTeX_Size1-Regular-mCD8mA8B.woff2 +0 -0
- package/renderer/assets/KaTeX_Size2-Regular-B7gKUWhC.ttf +0 -0
- package/renderer/assets/KaTeX_Size2-Regular-Dy4dx90m.woff2 +0 -0
- package/renderer/assets/KaTeX_Size2-Regular-oD1tc_U0.woff +0 -0
- package/renderer/assets/KaTeX_Size3-Regular-CTq5MqoE.woff +0 -0
- package/renderer/assets/KaTeX_Size3-Regular-DgpXs0kz.ttf +0 -0
- package/renderer/assets/KaTeX_Size4-Regular-BF-4gkZK.woff +0 -0
- package/renderer/assets/KaTeX_Size4-Regular-DWFBv043.ttf +0 -0
- package/renderer/assets/KaTeX_Size4-Regular-Dl5lxZxV.woff2 +0 -0
- package/renderer/assets/KaTeX_Typewriter-Regular-C0xS9mPB.woff +0 -0
- package/renderer/assets/KaTeX_Typewriter-Regular-CO6r4hn1.woff2 +0 -0
- package/renderer/assets/KaTeX_Typewriter-Regular-D3Ib7_Hf.ttf +0 -0
- package/renderer/assets/index-DfIBlLbZ.js +447 -0
- package/renderer/assets/style-DX4gh5fe.css +1 -0
- package/renderer/default-dark.css +772 -0
- package/renderer/default-light.css +777 -0
- package/renderer/favicon.png +0 -0
- package/renderer/iconfont.css +219 -0
- package/renderer/iconfont.woff2 +0 -0
- package/renderer/images/deepseek.com.ico +0 -0
- package/renderer/images/grok.com.png +0 -0
- package/renderer/images/gstatic.com.svg +22 -0
- package/renderer/images/kimichat.cn.png +0 -0
- package/renderer/images/mistral.ai.ico +0 -0
- package/renderer/images/ollama.png +0 -0
- package/renderer/images/openai.com.ico +0 -0
- package/renderer/images/openmcp-qq-qrcode.jpg +0 -0
- package/renderer/images/openmcp.png +0 -0
- package/renderer/images/openmcp.svg +22 -0
- package/renderer/images/perplexity.ai.ico +0 -0
- package/renderer/index.html +19 -0
- package/renderer/mcp.css +230 -0
- package/renderer/sf-mono-regular.woff2 +0 -0
- package/renderer/vscode.css +149 -0
- package/service/common/index.d.ts +1 -2
- package/service/common/index.d.ts.map +1 -1
- package/service/common/index.dto.d.ts +7 -3
- package/service/common/index.dto.d.ts.map +1 -1
- package/service/common/index.dto.js +1 -2
- package/service/common/index.js +4 -8
- package/service/common/router.d.ts +7 -7
- package/service/common/router.d.ts.map +1 -1
- package/service/common/router.js +18 -22
- package/service/hook/adapter.d.ts +10 -17
- package/service/hook/adapter.d.ts.map +1 -1
- package/service/hook/adapter.js +31 -51
- package/service/hook/axios-fetch.d.ts +7 -0
- package/service/hook/axios-fetch.d.ts.map +1 -0
- package/service/hook/axios-fetch.js +162 -0
- package/service/hook/db.d.ts.map +1 -1
- package/service/hook/db.js +11 -50
- package/service/hook/llm.d.ts.map +1 -1
- package/service/hook/llm.js +49 -4
- package/service/hook/setting.js +6 -11
- package/service/hook/types.js +1 -2
- package/service/hook/util.d.ts +2 -0
- package/service/hook/util.d.ts.map +1 -0
- package/service/hook/util.js +1 -0
- package/service/index.d.ts +4 -4
- package/service/index.d.ts.map +1 -1
- package/service/index.js +4 -14
- package/service/llm/llm.controller.d.ts +9 -4
- package/service/llm/llm.controller.d.ts.map +1 -1
- package/service/llm/llm.controller.js +27 -20
- package/service/llm/llm.dto.d.ts +15 -0
- package/service/llm/llm.dto.d.ts.map +1 -1
- package/service/llm/llm.dto.js +1 -2
- package/service/llm/llm.service.d.ts +3 -3
- package/service/llm/llm.service.d.ts.map +1 -1
- package/service/llm/llm.service.js +53 -28
- package/service/main.d.ts +7 -0
- package/service/main.d.ts.map +1 -0
- package/service/main.js +107 -0
- package/service/mcp/auth.service.d.ts +23 -0
- package/service/mcp/auth.service.d.ts.map +1 -0
- package/service/mcp/auth.service.js +158 -0
- package/service/mcp/client.controller.d.ts +146 -40
- package/service/mcp/client.controller.d.ts.map +1 -1
- package/service/mcp/client.controller.js +34 -31
- package/service/mcp/client.dto.d.ts +4 -3
- package/service/mcp/client.dto.d.ts.map +1 -1
- package/service/mcp/client.dto.js +1 -2
- package/service/mcp/client.service.d.ts +140 -32
- package/service/mcp/client.service.d.ts.map +1 -1
- package/service/mcp/client.service.js +55 -22
- package/service/mcp/connect.controller.d.ts +5 -5
- package/service/mcp/connect.controller.d.ts.map +1 -1
- package/service/mcp/connect.controller.js +28 -15
- package/service/mcp/connect.service.d.ts +7 -5
- package/service/mcp/connect.service.d.ts.map +1 -1
- package/service/mcp/connect.service.js +235 -27
- package/service/mcp/ocr.controller.d.ts +3 -4
- package/service/mcp/ocr.controller.d.ts.map +1 -1
- package/service/mcp/ocr.controller.js +11 -15
- package/service/mcp/ocr.dto.js +1 -2
- package/service/mcp/ocr.service.d.ts +2 -2
- package/service/mcp/ocr.service.d.ts.map +1 -1
- package/service/mcp/ocr.service.js +21 -64
- package/service/panel/panel.controller.d.ts +9 -9
- package/service/panel/panel.controller.d.ts.map +1 -1
- package/service/panel/panel.controller.js +28 -26
- package/service/panel/panel.dto.js +1 -2
- package/service/panel/panel.service.d.ts +3 -3
- package/service/panel/panel.service.d.ts.map +1 -1
- package/service/panel/panel.service.js +7 -44
- package/service/server.d.ts +7 -0
- package/service/server.d.ts.map +1 -0
- package/service/server.js +131 -0
- package/service/setting/setting.controller.d.ts +7 -7
- package/service/setting/setting.controller.d.ts.map +1 -1
- package/service/setting/setting.controller.js +15 -21
- package/service/setting/setting.dto.js +1 -2
- package/service/setting/setting.service.d.ts +1 -1
- package/service/setting/setting.service.d.ts.map +1 -1
- package/service/setting/setting.service.js +14 -49
- package/task-loop.d.ts +35 -0
- package/task-loop.js +8480 -205
- package/tools.js +8 -1
- package/task-loop.js.map +0 -1
@@ -1,6 +1,6 @@
|
|
1
1
|
import Tesseract from 'tesseract.js';
|
2
|
-
import { PostMessageble } from '../hook/adapter';
|
3
|
-
import { OcrWorker } from './ocr.dto';
|
2
|
+
import { PostMessageble } from '../hook/adapter.js';
|
3
|
+
import { OcrWorker } from './ocr.dto.js';
|
4
4
|
export declare const ocrWorkerStorage: Map<string, OcrWorker>;
|
5
5
|
export declare function saveBase64ImageData(base64String: string, mimeType: string): string;
|
6
6
|
export declare function loadBase64ImageData(fileName: string): string;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"ocr.service.d.ts","sourceRoot":"","sources":["../../src/mcp/ocr.service.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,cAAc,CAAC;AACrC,OAAO,EAAE,cAAc,EAAE,MAAM,
|
1
|
+
{"version":3,"file":"ocr.service.d.ts","sourceRoot":"","sources":["../../src/mcp/ocr.service.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,cAAc,CAAC;AACrC,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEpD,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAOzC,eAAO,MAAM,gBAAgB,wBAA+B,CAAC;AAE7D,wBAAgB,mBAAmB,CAC/B,YAAY,EAAE,MAAM,EACpB,QAAQ,EAAE,MAAM,GACjB,MAAM,CAWR;AAED,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAa5D;AAGD,wBAAsB,YAAY,CAC9B,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC,aAAa,KAAK,IAAI,EAClD,IAAI,GAAE,MAAsB,mBA2B/B;AAGD,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,GAAG,SAAS,CAoDpF"}
|
@@ -1,37 +1,3 @@
|
|
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 __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
15
|
-
}) : function(o, v) {
|
16
|
-
o["default"] = v;
|
17
|
-
});
|
18
|
-
var __importStar = (this && this.__importStar) || (function () {
|
19
|
-
var ownKeys = function(o) {
|
20
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
21
|
-
var ar = [];
|
22
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
23
|
-
return ar;
|
24
|
-
};
|
25
|
-
return ownKeys(o);
|
26
|
-
};
|
27
|
-
return function (mod) {
|
28
|
-
if (mod && mod.__esModule) return mod;
|
29
|
-
var result = {};
|
30
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
31
|
-
__setModuleDefault(result, mod);
|
32
|
-
return result;
|
33
|
-
};
|
34
|
-
})();
|
35
1
|
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
36
2
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
37
3
|
return new (P || (P = Promise))(function (resolve, reject) {
|
@@ -41,32 +7,23 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
41
7
|
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
42
8
|
});
|
43
9
|
};
|
44
|
-
|
45
|
-
|
46
|
-
};
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
const tesseract_js_1 = __importDefault(require("tesseract.js"));
|
54
|
-
const uuid_1 = require("uuid");
|
55
|
-
const db_1 = require("../hook/db");
|
56
|
-
const fs = __importStar(require("fs"));
|
57
|
-
const os = __importStar(require("os"));
|
58
|
-
const path = __importStar(require("path"));
|
59
|
-
const setting_1 = require("../hook/setting");
|
60
|
-
exports.ocrWorkerStorage = new Map();
|
61
|
-
function saveBase64ImageData(base64String, mimeType) {
|
10
|
+
import Tesseract from 'tesseract.js';
|
11
|
+
import { v4 as uuidv4 } from 'uuid';
|
12
|
+
import { diskStorage, ocrDB } from '../hook/db.js';
|
13
|
+
import * as fs from 'fs';
|
14
|
+
import * as os from 'os';
|
15
|
+
import * as path from 'path';
|
16
|
+
import { RUNNING_CWD } from '../hook/setting.js';
|
17
|
+
export const ocrWorkerStorage = new Map();
|
18
|
+
export function saveBase64ImageData(base64String, mimeType) {
|
62
19
|
// 从 base64 字符串中提取数据部分
|
63
20
|
const base64Data = base64String.replace(/^data:.+;base64,/, '');
|
64
21
|
// 生成唯一文件名
|
65
|
-
const fileName = `${(
|
66
|
-
|
22
|
+
const fileName = `${uuidv4()}.${mimeType.split('/')[1]}`;
|
23
|
+
diskStorage.setSync(fileName, base64Data, { encoding: 'base64' });
|
67
24
|
return fileName;
|
68
25
|
}
|
69
|
-
function loadBase64ImageData(fileName) {
|
26
|
+
export function loadBase64ImageData(fileName) {
|
70
27
|
const homedir = os.homedir();
|
71
28
|
const imageStorageFolder = path.join(homedir, '.openmcp', 'storage');
|
72
29
|
const filePath = path.join(imageStorageFolder, fileName);
|
@@ -79,15 +36,15 @@ function loadBase64ImageData(fileName) {
|
|
79
36
|
const base64String = `data:image/png;base64,${fileContent}`;
|
80
37
|
return base64String;
|
81
38
|
}
|
82
|
-
function tesseractOCR(imagePath_1, logger_1) {
|
39
|
+
export function tesseractOCR(imagePath_1, logger_1) {
|
83
40
|
return __awaiter(this, arguments, void 0, function* (imagePath, logger, lang = 'eng+chi_sim') {
|
84
|
-
const ocrHome = path.join(
|
41
|
+
const ocrHome = path.join(RUNNING_CWD, 'resources', 'ocr');
|
85
42
|
if (!ocrHome) {
|
86
43
|
console.log('ocr 目录不存在');
|
87
44
|
return '安装包已经损坏';
|
88
45
|
}
|
89
46
|
try {
|
90
|
-
const { data: { text } } = yield
|
47
|
+
const { data: { text } } = yield Tesseract.recognize(imagePath, lang, {
|
91
48
|
logger,
|
92
49
|
gzip: false,
|
93
50
|
langPath: ocrHome,
|
@@ -102,8 +59,8 @@ function tesseractOCR(imagePath_1, logger_1) {
|
|
102
59
|
return '无法识别图片';
|
103
60
|
});
|
104
61
|
}
|
105
|
-
function createOcrWorker(filename, webview) {
|
106
|
-
const workerId = (
|
62
|
+
export function createOcrWorker(filename, webview) {
|
63
|
+
const workerId = uuidv4();
|
107
64
|
const logger = (message) => {
|
108
65
|
console.log('report ocr status');
|
109
66
|
console.log(message);
|
@@ -112,7 +69,7 @@ function createOcrWorker(filename, webview) {
|
|
112
69
|
data: Object.assign({ id: workerId }, message)
|
113
70
|
});
|
114
71
|
};
|
115
|
-
const imagePath =
|
72
|
+
const imagePath = diskStorage.getStoragePath(filename);
|
116
73
|
console.log(imagePath);
|
117
74
|
const fut = tesseractOCR(imagePath, logger);
|
118
75
|
fut.then((text) => {
|
@@ -123,13 +80,13 @@ function createOcrWorker(filename, webview) {
|
|
123
80
|
text
|
124
81
|
}
|
125
82
|
});
|
126
|
-
|
83
|
+
ocrDB.insert({
|
127
84
|
id: filename,
|
128
85
|
filename,
|
129
86
|
text,
|
130
87
|
createTime: Date.now()
|
131
88
|
});
|
132
|
-
|
89
|
+
ocrWorkerStorage.delete(workerId);
|
133
90
|
});
|
134
91
|
const worker = {
|
135
92
|
id: workerId,
|
@@ -138,6 +95,6 @@ function createOcrWorker(filename, webview) {
|
|
138
95
|
createTime: Date.now(),
|
139
96
|
fut
|
140
97
|
};
|
141
|
-
|
98
|
+
ocrWorkerStorage.set(workerId, worker);
|
142
99
|
return worker;
|
143
100
|
}
|
@@ -1,27 +1,27 @@
|
|
1
|
-
import {
|
2
|
-
import {
|
1
|
+
import { PostMessageble } from "../hook/adapter.js";
|
2
|
+
import { RequestData } from "../common/index.dto.js";
|
3
3
|
export declare class PanelController {
|
4
|
-
savePanel(
|
4
|
+
savePanel(data: RequestData, webview: PostMessageble): Promise<{
|
5
5
|
code: number;
|
6
6
|
msg: string;
|
7
7
|
}>;
|
8
|
-
loadPanel(
|
8
|
+
loadPanel(data: RequestData, webview: PostMessageble): Promise<{
|
9
9
|
code: number;
|
10
|
-
msg: import("./panel.dto").SaveTab;
|
10
|
+
msg: import("./panel.dto.js").SaveTab;
|
11
11
|
}>;
|
12
|
-
setSystemPrompt(
|
12
|
+
setSystemPrompt(data: RequestData, webview: PostMessageble): Promise<{
|
13
13
|
code: number;
|
14
14
|
msg: string;
|
15
15
|
}>;
|
16
|
-
deleteSystemPrompt(
|
16
|
+
deleteSystemPrompt(data: RequestData, webview: PostMessageble): Promise<{
|
17
17
|
code: number;
|
18
18
|
msg: string;
|
19
19
|
}>;
|
20
|
-
saveSystemPrompts(
|
20
|
+
saveSystemPrompts(data: RequestData, webview: PostMessageble): Promise<{
|
21
21
|
code: number;
|
22
22
|
msg: string;
|
23
23
|
}>;
|
24
|
-
loadSystemPrompts(
|
24
|
+
loadSystemPrompts(data: RequestData, webview: PostMessageble): Promise<{
|
25
25
|
code: number;
|
26
26
|
msg: {
|
27
27
|
name: string;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"panel.controller.d.ts","sourceRoot":"","sources":["../../src/panel/panel.controller.ts"],"names":[],"mappings":"
|
1
|
+
{"version":3,"file":"panel.controller.d.ts","sourceRoot":"","sources":["../../src/panel/panel.controller.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAKrD,qBAAa,eAAe;IAElB,SAAS,CAAC,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,cAAc;;;;IAYpD,SAAS,CAAC,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,cAAc;;;;IAYpD,eAAe,CAAC,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,cAAc;;;;IAiB1D,kBAAkB,CAAC,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,cAAc;;;;IAW7D,iBAAiB,CAAC,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,cAAc;;;;IAmB5D,iBAAiB,CAAC,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,cAAc;;;;;;;CAerE"}
|
@@ -1,4 +1,3 @@
|
|
1
|
-
"use strict";
|
2
1
|
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
3
2
|
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
4
3
|
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
@@ -14,36 +13,38 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
14
13
|
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
15
14
|
});
|
16
15
|
};
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
savePanel(client, data, webview) {
|
16
|
+
import { Controller } from "../common/index.js";
|
17
|
+
import { getClient } from "../mcp/connect.service.js";
|
18
|
+
import { systemPromptDB } from "../hook/db.js";
|
19
|
+
import { loadTabSaveConfig, saveTabSaveConfig } from "./panel.service.js";
|
20
|
+
export class PanelController {
|
21
|
+
savePanel(data, webview) {
|
24
22
|
return __awaiter(this, void 0, void 0, function* () {
|
23
|
+
const client = getClient(data.clientId);
|
25
24
|
const serverInfo = client === null || client === void 0 ? void 0 : client.getServerVersion();
|
26
|
-
|
25
|
+
saveTabSaveConfig(serverInfo, data);
|
27
26
|
return {
|
28
27
|
code: 200,
|
29
28
|
msg: 'Settings saved successfully'
|
30
29
|
};
|
31
30
|
});
|
32
31
|
}
|
33
|
-
loadPanel(
|
32
|
+
loadPanel(data, webview) {
|
34
33
|
return __awaiter(this, void 0, void 0, function* () {
|
34
|
+
const client = getClient(data.clientId);
|
35
35
|
const serverInfo = client === null || client === void 0 ? void 0 : client.getServerVersion();
|
36
|
-
const config =
|
36
|
+
const config = loadTabSaveConfig(serverInfo);
|
37
37
|
return {
|
38
38
|
code: 200,
|
39
39
|
msg: config
|
40
40
|
};
|
41
41
|
});
|
42
42
|
}
|
43
|
-
setSystemPrompt(
|
43
|
+
setSystemPrompt(data, webview) {
|
44
44
|
return __awaiter(this, void 0, void 0, function* () {
|
45
|
+
const client = getClient(data.clientId);
|
45
46
|
const { name, content } = data;
|
46
|
-
yield
|
47
|
+
yield systemPromptDB.insert({
|
47
48
|
id: name,
|
48
49
|
name,
|
49
50
|
content
|
@@ -54,21 +55,23 @@ class PanelController {
|
|
54
55
|
};
|
55
56
|
});
|
56
57
|
}
|
57
|
-
deleteSystemPrompt(
|
58
|
+
deleteSystemPrompt(data, webview) {
|
58
59
|
return __awaiter(this, void 0, void 0, function* () {
|
60
|
+
const client = getClient(data.clientId);
|
59
61
|
const { name } = data;
|
60
|
-
yield
|
62
|
+
yield systemPromptDB.delete(name);
|
61
63
|
return {
|
62
64
|
code: 200,
|
63
65
|
msg: 'Settings saved successfully'
|
64
66
|
};
|
65
67
|
});
|
66
68
|
}
|
67
|
-
saveSystemPrompts(
|
69
|
+
saveSystemPrompts(data, webview) {
|
68
70
|
return __awaiter(this, void 0, void 0, function* () {
|
71
|
+
const client = getClient(data.clientId);
|
69
72
|
const { prompts } = data;
|
70
73
|
yield Promise.all(prompts.map((prompt) => {
|
71
|
-
|
74
|
+
systemPromptDB.insert({
|
72
75
|
id: prompt.name,
|
73
76
|
name: prompt.name,
|
74
77
|
content: prompt.content
|
@@ -80,9 +83,9 @@ class PanelController {
|
|
80
83
|
};
|
81
84
|
});
|
82
85
|
}
|
83
|
-
loadSystemPrompts(
|
86
|
+
loadSystemPrompts(data, webview) {
|
84
87
|
return __awaiter(this, void 0, void 0, function* () {
|
85
|
-
const queryPrompts = yield
|
88
|
+
const queryPrompts = yield systemPromptDB.findAll();
|
86
89
|
const prompts = [];
|
87
90
|
for (const prompt of queryPrompts) {
|
88
91
|
prompts.push({
|
@@ -97,22 +100,21 @@ class PanelController {
|
|
97
100
|
});
|
98
101
|
}
|
99
102
|
}
|
100
|
-
exports.PanelController = PanelController;
|
101
103
|
__decorate([
|
102
|
-
|
104
|
+
Controller('panel/save')
|
103
105
|
], PanelController.prototype, "savePanel", null);
|
104
106
|
__decorate([
|
105
|
-
|
107
|
+
Controller('panel/load')
|
106
108
|
], PanelController.prototype, "loadPanel", null);
|
107
109
|
__decorate([
|
108
|
-
|
110
|
+
Controller('system-prompts/set')
|
109
111
|
], PanelController.prototype, "setSystemPrompt", null);
|
110
112
|
__decorate([
|
111
|
-
|
113
|
+
Controller('system-prompts/delete')
|
112
114
|
], PanelController.prototype, "deleteSystemPrompt", null);
|
113
115
|
__decorate([
|
114
|
-
|
116
|
+
Controller('system-prompts/save')
|
115
117
|
], PanelController.prototype, "saveSystemPrompts", null);
|
116
118
|
__decorate([
|
117
|
-
|
119
|
+
Controller('system-prompts/load')
|
118
120
|
], PanelController.prototype, "loadSystemPrompts", null);
|
@@ -1,2 +1 @@
|
|
1
|
-
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
1
|
+
export {};
|
@@ -1,6 +1,6 @@
|
|
1
|
-
import { IServerVersion } from '../mcp/client.dto';
|
2
|
-
import { SaveTab } from './panel.dto';
|
3
|
-
import { IConfig } from '../setting/setting.dto';
|
1
|
+
import { IServerVersion } from '../mcp/client.dto.js';
|
2
|
+
import { SaveTab } from './panel.dto.js';
|
3
|
+
import { IConfig } from '../setting/setting.dto.js';
|
4
4
|
export declare function loadTabSaveConfig(serverInfo: IServerVersion): SaveTab;
|
5
5
|
export declare function saveTabSaveConfig(serverInfo: IServerVersion, config: Partial<IConfig>): void;
|
6
6
|
//# sourceMappingURL=panel.service.d.ts.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"panel.service.d.ts","sourceRoot":"","sources":["../../src/panel/panel.service.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,cAAc,EAAE,MAAM,
|
1
|
+
{"version":3,"file":"panel.service.d.ts","sourceRoot":"","sources":["../../src/panel/panel.service.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAC;AAyCpD,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,cAAc,GAAG,OAAO,CAcrE;AAED,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,cAAc,EAAE,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,GAAG,IAAI,CAS5F"}
|
@@ -1,43 +1,6 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
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 __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
15
|
-
}) : function(o, v) {
|
16
|
-
o["default"] = v;
|
17
|
-
});
|
18
|
-
var __importStar = (this && this.__importStar) || (function () {
|
19
|
-
var ownKeys = function(o) {
|
20
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
21
|
-
var ar = [];
|
22
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
23
|
-
return ar;
|
24
|
-
};
|
25
|
-
return ownKeys(o);
|
26
|
-
};
|
27
|
-
return function (mod) {
|
28
|
-
if (mod && mod.__esModule) return mod;
|
29
|
-
var result = {};
|
30
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
31
|
-
__setModuleDefault(result, mod);
|
32
|
-
return result;
|
33
|
-
};
|
34
|
-
})();
|
35
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
36
|
-
exports.loadTabSaveConfig = loadTabSaveConfig;
|
37
|
-
exports.saveTabSaveConfig = saveTabSaveConfig;
|
38
|
-
const fs = __importStar(require("fs"));
|
39
|
-
const path = __importStar(require("path"));
|
40
|
-
const setting_1 = require("../hook/setting");
|
1
|
+
import * as fs from 'fs';
|
2
|
+
import * as path from 'path';
|
3
|
+
import { VSCODE_WORKSPACE } from '../hook/setting.js';
|
41
4
|
const DEFAULT_TABS = {
|
42
5
|
tabs: [],
|
43
6
|
currentIndex: -1
|
@@ -48,9 +11,9 @@ function getTabSavePath(serverInfo) {
|
|
48
11
|
const escapeName = name.replace(/[\\/:*?"<>|]/g, '_');
|
49
12
|
const tabSaveName = `tabs.${escapeName}.json`;
|
50
13
|
// 如果是 vscode 插件下,则修改为 ~/.vscode/openmcp.json
|
51
|
-
if (
|
14
|
+
if (VSCODE_WORKSPACE) {
|
52
15
|
// 在 VSCode 插件环境下
|
53
|
-
const configDir = path.join(
|
16
|
+
const configDir = path.join(VSCODE_WORKSPACE, '.vscode');
|
54
17
|
if (!fs.existsSync(configDir)) {
|
55
18
|
fs.mkdirSync(configDir, { recursive: true });
|
56
19
|
}
|
@@ -69,7 +32,7 @@ function createSaveTabConfig(serverInfo) {
|
|
69
32
|
fs.writeFileSync(configPath, JSON.stringify(DEFAULT_TABS, null, 2), 'utf-8');
|
70
33
|
return DEFAULT_TABS;
|
71
34
|
}
|
72
|
-
function loadTabSaveConfig(serverInfo) {
|
35
|
+
export function loadTabSaveConfig(serverInfo) {
|
73
36
|
const tabSavePath = getTabSavePath(serverInfo);
|
74
37
|
if (!fs.existsSync(tabSavePath)) {
|
75
38
|
return createSaveTabConfig(serverInfo);
|
@@ -83,7 +46,7 @@ function loadTabSaveConfig(serverInfo) {
|
|
83
46
|
return createSaveTabConfig(serverInfo);
|
84
47
|
}
|
85
48
|
}
|
86
|
-
function saveTabSaveConfig(serverInfo, config) {
|
49
|
+
export function saveTabSaveConfig(serverInfo, config) {
|
87
50
|
const tabSavePath = getTabSavePath(serverInfo);
|
88
51
|
try {
|
89
52
|
fs.writeFileSync(tabSavePath, JSON.stringify(config, null, 2), 'utf-8');
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAUA,MAAM,WAAW,aAAa;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;CACvB;AAcD,MAAM,MAAM,cAAc,GAAG,CAAC,OAAO,EAAE,aAAa,KAAK,IAAI,CAAC"}
|
@@ -0,0 +1,131 @@
|
|
1
|
+
import { WebSocketServer } from 'ws';
|
2
|
+
import pino from 'pino';
|
3
|
+
import { routeMessage } from './common/router.js';
|
4
|
+
import { VSCodeWebViewLike } from './hook/adapter.js';
|
5
|
+
import path from 'node:path';
|
6
|
+
import * as fs from 'node:fs';
|
7
|
+
import { setRunningCWD } from './hook/setting.js';
|
8
|
+
import { exit } from 'node:process';
|
9
|
+
const logger = pino.default({
|
10
|
+
transport: {
|
11
|
+
target: 'pino-pretty', // 启用 pino-pretty
|
12
|
+
options: {
|
13
|
+
colorize: true, // 开启颜色
|
14
|
+
levelFirst: true, // 先打印日志级别
|
15
|
+
translateTime: 'SYS:yyyy-mm-dd HH:MM:ss', // 格式化时间
|
16
|
+
ignore: 'pid,hostname', // 忽略部分字段
|
17
|
+
}
|
18
|
+
}
|
19
|
+
});
|
20
|
+
function refreshConnectionOption(envPath) {
|
21
|
+
const serverPath = path.join(__dirname, '..', '..', 'servers');
|
22
|
+
const defaultOption = {
|
23
|
+
connectionType: 'STDIO',
|
24
|
+
commandString: 'mcp run main.py',
|
25
|
+
cwd: serverPath
|
26
|
+
};
|
27
|
+
fs.writeFileSync(envPath, JSON.stringify(defaultOption, null, 4));
|
28
|
+
return { items: [defaultOption] };
|
29
|
+
}
|
30
|
+
function acquireConnectionOption() {
|
31
|
+
const envPath = path.join(__dirname, '..', '.env');
|
32
|
+
if (!fs.existsSync(envPath)) {
|
33
|
+
return refreshConnectionOption(envPath);
|
34
|
+
}
|
35
|
+
try {
|
36
|
+
const option = JSON.parse(fs.readFileSync(envPath, 'utf-8'));
|
37
|
+
if (!option.items) {
|
38
|
+
return refreshConnectionOption(envPath);
|
39
|
+
}
|
40
|
+
if (option.items && option.items.length === 0) {
|
41
|
+
return refreshConnectionOption(envPath);
|
42
|
+
}
|
43
|
+
// 按照前端的规范,整理成 commandString 样式
|
44
|
+
option.items = option.items.map((item) => {
|
45
|
+
var _a;
|
46
|
+
if (item.connectionType === 'STDIO') {
|
47
|
+
item.commandString = (_a = [item.command, ...item.args]) === null || _a === void 0 ? void 0 : _a.join(' ');
|
48
|
+
}
|
49
|
+
else {
|
50
|
+
item.url = item.url;
|
51
|
+
}
|
52
|
+
return item;
|
53
|
+
});
|
54
|
+
return option;
|
55
|
+
}
|
56
|
+
catch (error) {
|
57
|
+
logger.error('读取 .env 配置文件');
|
58
|
+
return refreshConnectionOption(envPath);
|
59
|
+
}
|
60
|
+
}
|
61
|
+
if (!fs.existsSync(path.join(__dirname, '..', '.env.website.local'))) {
|
62
|
+
console.log('.env.website.local 不存在!');
|
63
|
+
exit(0);
|
64
|
+
}
|
65
|
+
const authPassword = JSON.parse(fs.readFileSync(path.join(__dirname, '..', '.env.website.local'), 'utf-8')).password;
|
66
|
+
function updateConnectionOption(data) {
|
67
|
+
const envPath = path.join(__dirname, '..', '.env');
|
68
|
+
const connection = { items: data };
|
69
|
+
fs.writeFileSync(envPath, JSON.stringify(connection, null, 4));
|
70
|
+
}
|
71
|
+
const devHome = path.join(__dirname, '..', '..');
|
72
|
+
setRunningCWD(devHome);
|
73
|
+
function verifyToken(url) {
|
74
|
+
try {
|
75
|
+
const token = url.split('=')[1];
|
76
|
+
return token === authPassword.toString();
|
77
|
+
}
|
78
|
+
catch (error) {
|
79
|
+
return false;
|
80
|
+
}
|
81
|
+
}
|
82
|
+
const wss = new WebSocketServer({
|
83
|
+
port: 8282,
|
84
|
+
verifyClient: (info, callback) => {
|
85
|
+
console.log(info.req.url);
|
86
|
+
const ok = verifyToken(info.req.url || '');
|
87
|
+
if (!ok) {
|
88
|
+
callback(false, 401, 'Unauthorized: Invalid token');
|
89
|
+
}
|
90
|
+
else {
|
91
|
+
callback(true); // 允许连接
|
92
|
+
}
|
93
|
+
}
|
94
|
+
});
|
95
|
+
console.log('listen on ws://localhost:8282');
|
96
|
+
wss.on('connection', (ws) => {
|
97
|
+
// 仿造 webview 进行统一接口访问
|
98
|
+
const webview = new VSCodeWebViewLike(ws);
|
99
|
+
// 先发送成功建立的消息
|
100
|
+
webview.postMessage({
|
101
|
+
command: 'hello',
|
102
|
+
data: {
|
103
|
+
version: '0.0.1',
|
104
|
+
name: '消息桥连接完成'
|
105
|
+
}
|
106
|
+
});
|
107
|
+
const option = acquireConnectionOption();
|
108
|
+
// 注册消息接受的管线
|
109
|
+
webview.onDidReceiveMessage(message => {
|
110
|
+
logger.info(`command: [${message.command || 'No Command'}]`);
|
111
|
+
const { command, data } = message;
|
112
|
+
switch (command) {
|
113
|
+
case 'web/launch-signature':
|
114
|
+
const launchResult = {
|
115
|
+
code: 200,
|
116
|
+
msg: option.items
|
117
|
+
};
|
118
|
+
webview.postMessage({
|
119
|
+
command: 'web/launch-signature',
|
120
|
+
data: launchResult
|
121
|
+
});
|
122
|
+
break;
|
123
|
+
case 'web/update-connection-signature':
|
124
|
+
updateConnectionOption(data);
|
125
|
+
break;
|
126
|
+
default:
|
127
|
+
routeMessage(command, data, webview);
|
128
|
+
break;
|
129
|
+
}
|
130
|
+
});
|
131
|
+
});
|
@@ -1,19 +1,19 @@
|
|
1
|
-
import {
|
2
|
-
import {
|
1
|
+
import { PostMessageble } from "../hook/adapter.js";
|
2
|
+
import { RequestData } from "../common/index.dto.js";
|
3
3
|
export declare class SettingController {
|
4
|
-
saveSetting(
|
4
|
+
saveSetting(data: RequestData, webview: PostMessageble): Promise<{
|
5
5
|
code: number;
|
6
6
|
msg: string;
|
7
7
|
}>;
|
8
|
-
loadSetting(
|
8
|
+
loadSetting(data: RequestData, webview: PostMessageble): Promise<{
|
9
9
|
code: number;
|
10
|
-
msg: import("./setting.dto").IConfig;
|
10
|
+
msg: import("./setting.dto.js").IConfig;
|
11
11
|
}>;
|
12
|
-
setTourController(
|
12
|
+
setTourController(data: any, webview: PostMessageble): Promise<{
|
13
13
|
code: number;
|
14
14
|
msg: string;
|
15
15
|
}>;
|
16
|
-
getTourController(
|
16
|
+
getTourController(data: any, webview: PostMessageble): Promise<{
|
17
17
|
code: number;
|
18
18
|
msg: {
|
19
19
|
userHasReadGuide: boolean;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"setting.controller.d.ts","sourceRoot":"","sources":["../../src/setting/setting.controller.ts"],"names":[],"mappings":"
|
1
|
+
{"version":3,"file":"setting.controller.d.ts","sourceRoot":"","sources":["../../src/setting/setting.controller.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAIrD,qBAAa,iBAAiB;IAGpB,WAAW,CAAC,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,cAAc;;;;IAWtD,WAAW,CAAC,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,cAAc;;;;IAStD,iBAAiB,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,cAAc;;;;IAWpD,iBAAiB,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,cAAc;;;;;;CAW7D"}
|