axhub-mcp-bridge 1.0.35 → 1.0.37
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/constant/index.d.ts +1 -1
- package/dist/constant/index.js +4 -2
- package/dist/constant/index.js.map +1 -1
- package/dist/index.js +7 -0
- package/dist/index.js.map +1 -1
- package/dist/mcp/mcp-server-stdio.js +7 -3
- package/dist/mcp/mcp-server-stdio.js.map +1 -1
- package/dist/mcp/register-tools.js +8 -0
- package/dist/mcp/register-tools.js.map +1 -1
- package/dist/native-messaging-host.d.ts +38 -1
- package/dist/native-messaging-host.js +272 -9
- package/dist/native-messaging-host.js.map +1 -1
- package/dist/scripts/constant.js +2 -2
- package/dist/server/index.d.ts +30 -0
- package/dist/server/index.js +199 -12
- package/dist/server/index.js.map +1 -1
- package/dist/server/websocket-bridge.d.ts +92 -0
- package/dist/server/websocket-bridge.js +311 -0
- package/dist/server/websocket-bridge.js.map +1 -0
- package/dist/shared.d.ts +19 -1
- package/dist/shared.js +177 -0
- package/dist/shared.js.map +1 -1
- package/dist/utils/logger.d.ts +12 -0
- package/dist/utils/logger.js +85 -0
- package/dist/utils/logger.js.map +1 -0
- package/package.json +10 -5
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.logger = void 0;
|
|
7
|
+
const fs_1 = __importDefault(require("fs"));
|
|
8
|
+
const path_1 = __importDefault(require("path"));
|
|
9
|
+
class Logger {
|
|
10
|
+
constructor() {
|
|
11
|
+
// Determine log directory - use dist/logs in production, src/logs in development
|
|
12
|
+
const isDist = __dirname.includes('/dist/');
|
|
13
|
+
const baseDir = isDist
|
|
14
|
+
? path_1.default.join(__dirname, '..', '..')
|
|
15
|
+
: path_1.default.join(__dirname, '..');
|
|
16
|
+
const logDir = path_1.default.join(baseDir, 'dist', 'logs');
|
|
17
|
+
// Create log directory if it doesn't exist
|
|
18
|
+
if (!fs_1.default.existsSync(logDir)) {
|
|
19
|
+
fs_1.default.mkdirSync(logDir, { recursive: true });
|
|
20
|
+
}
|
|
21
|
+
// Generate log file name with timestamp
|
|
22
|
+
const timestamp = new Date()
|
|
23
|
+
.toISOString()
|
|
24
|
+
.replace(/:/g, '')
|
|
25
|
+
.replace(/\./g, '_')
|
|
26
|
+
.replace(/T/, '_')
|
|
27
|
+
.slice(0, 15); // Format: YYYYMMDD_HHMMSS
|
|
28
|
+
const logFileName = `native_host_${timestamp}.log`;
|
|
29
|
+
this.logFilePath = path_1.default.join(logDir, logFileName);
|
|
30
|
+
this.log('Logger initialized', { logFile: this.logFilePath });
|
|
31
|
+
}
|
|
32
|
+
formatMessage(level, message, data) {
|
|
33
|
+
const timestamp = new Date().toISOString();
|
|
34
|
+
let formattedMessage = `[${timestamp}] [${level}] ${message}`;
|
|
35
|
+
if (data !== undefined) {
|
|
36
|
+
try {
|
|
37
|
+
formattedMessage += ' ' + JSON.stringify(data, null, 2);
|
|
38
|
+
}
|
|
39
|
+
catch (error) {
|
|
40
|
+
formattedMessage += ' [Unable to stringify data]';
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
return formattedMessage + '\n';
|
|
44
|
+
}
|
|
45
|
+
log(message, data) {
|
|
46
|
+
try {
|
|
47
|
+
// Use synchronous write to ensure logs are immediately written
|
|
48
|
+
fs_1.default.appendFileSync(this.logFilePath, this.formatMessage('INFO', message, data));
|
|
49
|
+
}
|
|
50
|
+
catch (error) {
|
|
51
|
+
// Silently fail to avoid breaking the application
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
error(message, data) {
|
|
55
|
+
try {
|
|
56
|
+
fs_1.default.appendFileSync(this.logFilePath, this.formatMessage('ERROR', message, data));
|
|
57
|
+
}
|
|
58
|
+
catch (error) {
|
|
59
|
+
// Silently fail
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
warn(message, data) {
|
|
63
|
+
try {
|
|
64
|
+
fs_1.default.appendFileSync(this.logFilePath, this.formatMessage('WARN', message, data));
|
|
65
|
+
}
|
|
66
|
+
catch (error) {
|
|
67
|
+
// Silently fail
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
debug(message, data) {
|
|
71
|
+
try {
|
|
72
|
+
fs_1.default.appendFileSync(this.logFilePath, this.formatMessage('DEBUG', message, data));
|
|
73
|
+
}
|
|
74
|
+
catch (error) {
|
|
75
|
+
// Silently fail
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
close() {
|
|
79
|
+
// No-op for sync logging
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
// Export singleton instance
|
|
83
|
+
exports.logger = new Logger();
|
|
84
|
+
exports.default = exports.logger;
|
|
85
|
+
//# sourceMappingURL=logger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "axhub-mcp-bridge",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.37",
|
|
4
4
|
"description": "Chrome Native-Messaging host (Node)",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"bin": {
|
|
@@ -16,7 +16,10 @@
|
|
|
16
16
|
"lint:fix": "eslint 'src/**/*.{js,ts}' --fix",
|
|
17
17
|
"format": "prettier --write 'src/**/*.{js,ts,json}'",
|
|
18
18
|
"register:dev": "node dist/scripts/register-dev.js",
|
|
19
|
-
"postinstall": "node dist/scripts/postinstall.js"
|
|
19
|
+
"postinstall": "node dist/scripts/postinstall.js",
|
|
20
|
+
"inspector": "npx -y @modelcontextprotocol/inspector@latest node dist/mcp/mcp-server-stdio.js",
|
|
21
|
+
"inspector:cli": "npx -y @modelcontextprotocol/inspector@latest --cli node dist/mcp/mcp-server-stdio.js",
|
|
22
|
+
"inspector:http": "npx -y @modelcontextprotocol/inspector@latest http://127.0.0.1:12307/mcp"
|
|
20
23
|
},
|
|
21
24
|
"files": [
|
|
22
25
|
"dist"
|
|
@@ -33,7 +36,8 @@
|
|
|
33
36
|
"fastify": "^5.3.2",
|
|
34
37
|
"is-admin": "^4.0.0",
|
|
35
38
|
"pino": "^9.6.0",
|
|
36
|
-
"uuid": "^11.1.0"
|
|
39
|
+
"uuid": "^11.1.0",
|
|
40
|
+
"ws": "^8.18.3"
|
|
37
41
|
},
|
|
38
42
|
"devDependencies": {
|
|
39
43
|
"@jest/globals": "^29.7.0",
|
|
@@ -41,6 +45,7 @@
|
|
|
41
45
|
"@types/jest": "^29.5.14",
|
|
42
46
|
"@types/node": "^22.15.3",
|
|
43
47
|
"@types/supertest": "^6.0.3",
|
|
48
|
+
"@types/ws": "^8.18.1",
|
|
44
49
|
"@typescript-eslint/parser": "^8.31.1",
|
|
45
50
|
"cross-env": "^7.0.3",
|
|
46
51
|
"husky": "^9.1.7",
|
|
@@ -59,7 +64,7 @@
|
|
|
59
64
|
}
|
|
60
65
|
},
|
|
61
66
|
"lint-staged": {
|
|
62
|
-
"*.{js,ts}": [
|
|
67
|
+
"*.{js,ts}": [
|
|
63
68
|
"eslint --fix",
|
|
64
69
|
"prettier --write"
|
|
65
70
|
],
|
|
@@ -67,4 +72,4 @@
|
|
|
67
72
|
"prettier --write"
|
|
68
73
|
]
|
|
69
74
|
}
|
|
70
|
-
}
|
|
75
|
+
}
|