@hangox/mg-cli 1.1.2 → 1.1.3
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 +119 -39
- package/dist/cli.js.map +1 -1
- package/dist/daemon-runner.js +79 -7
- package/dist/daemon-runner.js.map +1 -1
- package/dist/{index-CM3G8ywC.d.ts → index-DorC5U6y.d.ts} +5 -0
- package/dist/index.d.ts +2 -2
- package/dist/index.js +77 -4
- package/dist/index.js.map +1 -1
- package/dist/server.d.ts +1 -1
- package/dist/server.js +76 -4
- package/dist/server.js.map +1 -1
- package/package.json +1 -1
package/dist/cli.js
CHANGED
|
@@ -670,8 +670,8 @@ var ConnectionManager = class {
|
|
|
670
670
|
allConnections = /* @__PURE__ */ new Map();
|
|
671
671
|
/** 心跳检查定时器 */
|
|
672
672
|
heartbeatTimer = null;
|
|
673
|
-
constructor(
|
|
674
|
-
this.logger =
|
|
673
|
+
constructor(logger2) {
|
|
674
|
+
this.logger = logger2;
|
|
675
675
|
}
|
|
676
676
|
/**
|
|
677
677
|
* 启动心跳检查
|
|
@@ -898,9 +898,9 @@ var RequestHandler = class {
|
|
|
898
898
|
connectionManager;
|
|
899
899
|
/** 待处理的请求 */
|
|
900
900
|
pendingRequests = /* @__PURE__ */ new Map();
|
|
901
|
-
constructor(connectionManager,
|
|
901
|
+
constructor(connectionManager, logger2) {
|
|
902
902
|
this.connectionManager = connectionManager;
|
|
903
|
-
this.logger =
|
|
903
|
+
this.logger = logger2;
|
|
904
904
|
}
|
|
905
905
|
/**
|
|
906
906
|
* 处理 Consumer 请求
|
|
@@ -1043,6 +1043,60 @@ var RequestHandler = class {
|
|
|
1043
1043
|
}
|
|
1044
1044
|
};
|
|
1045
1045
|
|
|
1046
|
+
// src/server/analytics.ts
|
|
1047
|
+
import { PostHog } from "posthog-node";
|
|
1048
|
+
var POSTHOG_API_KEY = "phc_cSZZIxZOPhWOlsw92Wz8tmKQ5z8eQYsI3m9aM2Ujia9";
|
|
1049
|
+
var POSTHOG_HOST = "https://us.i.posthog.com";
|
|
1050
|
+
var posthogClient = null;
|
|
1051
|
+
var logger = null;
|
|
1052
|
+
function isTelemetryDisabled() {
|
|
1053
|
+
return process.env.MG_TELEMETRY_DISABLED === "1" || process.env.MG_TELEMETRY_DISABLED === "true" || process.env.DO_NOT_TRACK === "1" || process.env.DO_NOT_TRACK === "true";
|
|
1054
|
+
}
|
|
1055
|
+
function initServerAnalytics(serverLogger) {
|
|
1056
|
+
logger = serverLogger;
|
|
1057
|
+
if (isTelemetryDisabled()) {
|
|
1058
|
+
logger.info("\u9065\u6D4B\u5DF2\u7981\u7528 (MG_TELEMETRY_DISABLED \u6216 DO_NOT_TRACK)");
|
|
1059
|
+
return;
|
|
1060
|
+
}
|
|
1061
|
+
if (!posthogClient) {
|
|
1062
|
+
posthogClient = new PostHog(POSTHOG_API_KEY, {
|
|
1063
|
+
host: POSTHOG_HOST,
|
|
1064
|
+
// Server 端使用批量模式,减少网络请求
|
|
1065
|
+
flushAt: 10,
|
|
1066
|
+
flushInterval: 3e4
|
|
1067
|
+
// 30 秒
|
|
1068
|
+
});
|
|
1069
|
+
logger.info("PostHog Analytics \u5DF2\u521D\u59CB\u5316");
|
|
1070
|
+
}
|
|
1071
|
+
}
|
|
1072
|
+
function trackEvent(eventData) {
|
|
1073
|
+
if (!posthogClient) {
|
|
1074
|
+
return;
|
|
1075
|
+
}
|
|
1076
|
+
try {
|
|
1077
|
+
posthogClient.capture({
|
|
1078
|
+
distinctId: eventData.distinctId,
|
|
1079
|
+
event: eventData.event,
|
|
1080
|
+
properties: eventData.properties
|
|
1081
|
+
});
|
|
1082
|
+
logger?.info(`\u7EDF\u8BA1\u4E8B\u4EF6\u5DF2\u8BB0\u5F55: ${eventData.event}`, eventData.properties);
|
|
1083
|
+
} catch (error) {
|
|
1084
|
+
logger?.error("\u7EDF\u8BA1\u4E8B\u4EF6\u8BB0\u5F55\u5931\u8D25:", error);
|
|
1085
|
+
}
|
|
1086
|
+
}
|
|
1087
|
+
async function shutdownServerAnalytics() {
|
|
1088
|
+
if (posthogClient) {
|
|
1089
|
+
try {
|
|
1090
|
+
logger?.info("\u6B63\u5728\u53D1\u9001\u5269\u4F59\u7EDF\u8BA1\u4E8B\u4EF6...");
|
|
1091
|
+
await posthogClient.shutdown();
|
|
1092
|
+
logger?.info("PostHog Analytics \u5DF2\u5173\u95ED");
|
|
1093
|
+
} catch (error) {
|
|
1094
|
+
logger?.error("\u5173\u95ED PostHog \u5931\u8D25:", error);
|
|
1095
|
+
}
|
|
1096
|
+
posthogClient = null;
|
|
1097
|
+
}
|
|
1098
|
+
}
|
|
1099
|
+
|
|
1046
1100
|
// src/server/websocket-server.ts
|
|
1047
1101
|
var MGServer = class {
|
|
1048
1102
|
wss = null;
|
|
@@ -1074,6 +1128,7 @@ var MGServer = class {
|
|
|
1074
1128
|
this.startedAt = /* @__PURE__ */ new Date();
|
|
1075
1129
|
this.logger.info(`Server \u542F\u52A8\u6210\u529F\uFF0C\u76D1\u542C\u7AEF\u53E3: ${port}`);
|
|
1076
1130
|
this.connectionManager.startHeartbeatCheck(HEARTBEAT_INTERVAL);
|
|
1131
|
+
initServerAnalytics(this.logger);
|
|
1077
1132
|
resolve9(port);
|
|
1078
1133
|
});
|
|
1079
1134
|
this.wss.on("error", (error) => {
|
|
@@ -1133,6 +1188,10 @@ var MGServer = class {
|
|
|
1133
1188
|
this.handleRegister(ws, message);
|
|
1134
1189
|
return;
|
|
1135
1190
|
}
|
|
1191
|
+
if (message.type === "track_analytics" /* TRACK_ANALYTICS */) {
|
|
1192
|
+
this.handleTrackAnalytics(message);
|
|
1193
|
+
return;
|
|
1194
|
+
}
|
|
1136
1195
|
const managedWs = ws;
|
|
1137
1196
|
if (!managedWs.connectionId) {
|
|
1138
1197
|
this.logger.warn("\u672A\u6CE8\u518C\u7684\u8FDE\u63A5\u53D1\u9001\u6D88\u606F\uFF0C\u5FFD\u7565");
|
|
@@ -1210,6 +1269,9 @@ var MGServer = class {
|
|
|
1210
1269
|
case "navigate_to_node" /* NAVIGATE_TO_NODE */:
|
|
1211
1270
|
this.handleNavigateToNode(ws, message);
|
|
1212
1271
|
break;
|
|
1272
|
+
case "track_analytics" /* TRACK_ANALYTICS */:
|
|
1273
|
+
this.handleTrackAnalytics(message);
|
|
1274
|
+
break;
|
|
1213
1275
|
case "response" /* RESPONSE */:
|
|
1214
1276
|
case "error" /* ERROR */:
|
|
1215
1277
|
this.requestHandler.handleResponse(message);
|
|
@@ -1355,6 +1417,15 @@ var MGServer = class {
|
|
|
1355
1417
|
}
|
|
1356
1418
|
});
|
|
1357
1419
|
}
|
|
1420
|
+
/**
|
|
1421
|
+
* 处理统计事件
|
|
1422
|
+
*/
|
|
1423
|
+
handleTrackAnalytics(message) {
|
|
1424
|
+
const eventData = message.data;
|
|
1425
|
+
if (eventData) {
|
|
1426
|
+
trackEvent(eventData);
|
|
1427
|
+
}
|
|
1428
|
+
}
|
|
1358
1429
|
/**
|
|
1359
1430
|
* 处理节点导航请求
|
|
1360
1431
|
*/
|
|
@@ -1428,6 +1499,7 @@ var MGServer = class {
|
|
|
1428
1499
|
return;
|
|
1429
1500
|
}
|
|
1430
1501
|
this.logger.info("\u6B63\u5728\u505C\u6B62 Server...");
|
|
1502
|
+
await shutdownServerAnalytics();
|
|
1431
1503
|
this.requestHandler.cleanupAll();
|
|
1432
1504
|
this.connectionManager.closeAll();
|
|
1433
1505
|
return new Promise((resolve9) => {
|
|
@@ -1488,14 +1560,14 @@ async function startServerForeground(port) {
|
|
|
1488
1560
|
);
|
|
1489
1561
|
}
|
|
1490
1562
|
ensureConfigDir();
|
|
1491
|
-
const
|
|
1563
|
+
const logger2 = createLogger({
|
|
1492
1564
|
console: true,
|
|
1493
1565
|
file: true,
|
|
1494
1566
|
minLevel: "INFO" /* INFO */
|
|
1495
1567
|
});
|
|
1496
1568
|
const server = createServer({
|
|
1497
1569
|
port: port || DEFAULT_PORT,
|
|
1498
|
-
logger
|
|
1570
|
+
logger: logger2
|
|
1499
1571
|
});
|
|
1500
1572
|
const cleanup = async () => {
|
|
1501
1573
|
console.log("\n\u6B63\u5728\u505C\u6B62 Server...");
|
|
@@ -1521,7 +1593,7 @@ MG Server \u542F\u52A8\u6210\u529F`);
|
|
|
1521
1593
|
console.log(`
|
|
1522
1594
|
\u6309 Ctrl+C \u505C\u6B62...`);
|
|
1523
1595
|
} catch (error) {
|
|
1524
|
-
|
|
1596
|
+
logger2.error("Server \u542F\u52A8\u5931\u8D25:", error);
|
|
1525
1597
|
throw error;
|
|
1526
1598
|
}
|
|
1527
1599
|
}
|
|
@@ -1781,14 +1853,11 @@ var MGClient = class {
|
|
|
1781
1853
|
};
|
|
1782
1854
|
|
|
1783
1855
|
// src/cli/analytics.ts
|
|
1784
|
-
import {
|
|
1856
|
+
import { WebSocket as WebSocket3 } from "ws";
|
|
1785
1857
|
import { createHash } from "crypto";
|
|
1786
1858
|
import { hostname, userInfo, platform, release } from "os";
|
|
1787
|
-
var POSTHOG_API_KEY = "phc_cSZZIxZOPhWOlsw92Wz8tmKQ5z8eQYsI3m9aM2Ujia9";
|
|
1788
|
-
var POSTHOG_HOST = "https://us.i.posthog.com";
|
|
1789
|
-
var posthogClient = null;
|
|
1790
1859
|
var machineId = null;
|
|
1791
|
-
function
|
|
1860
|
+
function isTelemetryDisabled2() {
|
|
1792
1861
|
return process.env.MG_TELEMETRY_DISABLED === "1" || process.env.MG_TELEMETRY_DISABLED === "true" || process.env.DO_NOT_TRACK === "1" || process.env.DO_NOT_TRACK === "true";
|
|
1793
1862
|
}
|
|
1794
1863
|
function getMachineId() {
|
|
@@ -1805,39 +1874,50 @@ function getMachineId() {
|
|
|
1805
1874
|
}
|
|
1806
1875
|
return machineId;
|
|
1807
1876
|
}
|
|
1808
|
-
function
|
|
1809
|
-
|
|
1810
|
-
|
|
1811
|
-
|
|
1812
|
-
|
|
1813
|
-
|
|
1814
|
-
|
|
1815
|
-
|
|
1816
|
-
|
|
1817
|
-
|
|
1877
|
+
function sendToServer(eventData) {
|
|
1878
|
+
try {
|
|
1879
|
+
const serverInfo = readServerInfo();
|
|
1880
|
+
if (!serverInfo) {
|
|
1881
|
+
return;
|
|
1882
|
+
}
|
|
1883
|
+
if (!isProcessRunning(serverInfo.pid)) {
|
|
1884
|
+
return;
|
|
1885
|
+
}
|
|
1886
|
+
const ws = new WebSocket3(`ws://localhost:${serverInfo.port}`);
|
|
1887
|
+
const timeout = setTimeout(() => {
|
|
1888
|
+
ws.close();
|
|
1889
|
+
}, 1e3);
|
|
1890
|
+
ws.on("open", () => {
|
|
1891
|
+
const message = {
|
|
1892
|
+
type: "track_analytics" /* TRACK_ANALYTICS */,
|
|
1893
|
+
data: eventData
|
|
1894
|
+
};
|
|
1895
|
+
ws.send(JSON.stringify(message));
|
|
1896
|
+
clearTimeout(timeout);
|
|
1897
|
+
ws.close();
|
|
1818
1898
|
});
|
|
1899
|
+
ws.on("error", () => {
|
|
1900
|
+
clearTimeout(timeout);
|
|
1901
|
+
});
|
|
1902
|
+
} catch {
|
|
1819
1903
|
}
|
|
1820
|
-
return posthogClient;
|
|
1821
1904
|
}
|
|
1822
1905
|
function trackCommand(properties) {
|
|
1823
|
-
|
|
1824
|
-
if (!client) {
|
|
1906
|
+
if (isTelemetryDisabled2()) {
|
|
1825
1907
|
return;
|
|
1826
1908
|
}
|
|
1827
|
-
|
|
1828
|
-
|
|
1829
|
-
|
|
1830
|
-
|
|
1831
|
-
properties
|
|
1832
|
-
|
|
1833
|
-
|
|
1834
|
-
|
|
1835
|
-
|
|
1836
|
-
|
|
1837
|
-
|
|
1838
|
-
|
|
1839
|
-
} catch {
|
|
1840
|
-
}
|
|
1909
|
+
const eventData = {
|
|
1910
|
+
distinctId: getMachineId(),
|
|
1911
|
+
event: "cli_command",
|
|
1912
|
+
properties: {
|
|
1913
|
+
...properties,
|
|
1914
|
+
version: getVersion(),
|
|
1915
|
+
os: platform(),
|
|
1916
|
+
os_release: release(),
|
|
1917
|
+
node_version: process.version
|
|
1918
|
+
}
|
|
1919
|
+
};
|
|
1920
|
+
sendToServer(eventData);
|
|
1841
1921
|
}
|
|
1842
1922
|
function createCommandTracker(commandName) {
|
|
1843
1923
|
const startTime = Date.now();
|