liangzimixin 0.3.83 → 0.3.85
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/index.cjs
CHANGED
|
@@ -39,8 +39,8 @@ __export(index_exports, {
|
|
|
39
39
|
startPlugin: () => startPlugin
|
|
40
40
|
});
|
|
41
41
|
module.exports = __toCommonJS(index_exports);
|
|
42
|
-
var
|
|
43
|
-
var
|
|
42
|
+
var import_node_path4 = require("path");
|
|
43
|
+
var import_node_os2 = require("os");
|
|
44
44
|
|
|
45
45
|
// node_modules/zod/v4/classic/external.js
|
|
46
46
|
var external_exports = {};
|
|
@@ -14011,28 +14011,93 @@ var FileServiceError = class extends Error {
|
|
|
14011
14011
|
};
|
|
14012
14012
|
|
|
14013
14013
|
// src/logger.ts
|
|
14014
|
+
var import_node_fs = require("fs");
|
|
14015
|
+
var import_node_path = require("path");
|
|
14016
|
+
var import_node_os = require("os");
|
|
14017
|
+
var import_node_util = require("util");
|
|
14018
|
+
var import_winston = __toESM(require("winston"), 1);
|
|
14019
|
+
var import_winston_daily_rotate_file = __toESM(require("winston-daily-rotate-file"), 1);
|
|
14014
14020
|
var LOG_LEVELS = { debug: 0, info: 1, warn: 2, error: 3 };
|
|
14021
|
+
var LOG_DIR = (0, import_node_path.join)((0, import_node_os.homedir)(), TOKEN_STORE_DIR, "logs");
|
|
14022
|
+
var fileTransportAvailable = true;
|
|
14023
|
+
try {
|
|
14024
|
+
(0, import_node_fs.mkdirSync)(LOG_DIR, { recursive: true, mode: 448 });
|
|
14025
|
+
} catch (err) {
|
|
14026
|
+
fileTransportAvailable = false;
|
|
14027
|
+
console.warn(
|
|
14028
|
+
`[${LOG_PREFIX}:logger] \u26A0 \u65E0\u6CD5\u521B\u5EFA\u65E5\u5FD7\u76EE\u5F55 ${LOG_DIR}\uFF0C\u964D\u7EA7\u4E3A\u4EC5\u63A7\u5236\u53F0\u8F93\u51FA:`,
|
|
14029
|
+
err.message
|
|
14030
|
+
);
|
|
14031
|
+
}
|
|
14032
|
+
function createPrintFormat(includeTimestamp) {
|
|
14033
|
+
return import_winston.default.format.printf(({ level, message, timestamp, namespace, args }) => {
|
|
14034
|
+
const prefix = `[${LOG_PREFIX}:${namespace}]`;
|
|
14035
|
+
const extra = Array.isArray(args) && args.length > 0 ? " " + args.map(
|
|
14036
|
+
(a) => typeof a === "object" && a !== null ? a instanceof Error ? a.stack || a.message : (0, import_node_util.inspect)(a, { depth: 5 }) : String(a)
|
|
14037
|
+
).join(" ") : "";
|
|
14038
|
+
if (includeTimestamp) {
|
|
14039
|
+
return `${timestamp} [${level}] ${prefix} ${message}${extra}`;
|
|
14040
|
+
}
|
|
14041
|
+
return `[${level}] ${prefix} ${message}${extra}`;
|
|
14042
|
+
});
|
|
14043
|
+
}
|
|
14044
|
+
var transports = [
|
|
14045
|
+
// Console Transport: 保持原有控制台输出风格并配置错误输出流
|
|
14046
|
+
new import_winston.default.transports.Console({
|
|
14047
|
+
stderrLevels: ["error", "warn"],
|
|
14048
|
+
format: import_winston.default.format.combine(
|
|
14049
|
+
import_winston.default.format.colorize({ level: true }),
|
|
14050
|
+
createPrintFormat(false)
|
|
14051
|
+
)
|
|
14052
|
+
})
|
|
14053
|
+
];
|
|
14054
|
+
if (fileTransportAvailable) {
|
|
14055
|
+
transports.push(
|
|
14056
|
+
new import_winston_daily_rotate_file.default({
|
|
14057
|
+
dirname: LOG_DIR,
|
|
14058
|
+
filename: "app-%DATE%",
|
|
14059
|
+
extension: ".log",
|
|
14060
|
+
datePattern: "YYYY-MM-DD",
|
|
14061
|
+
maxFiles: "14d",
|
|
14062
|
+
maxSize: "20m",
|
|
14063
|
+
options: { flags: "a", mode: 384 },
|
|
14064
|
+
format: import_winston.default.format.combine(
|
|
14065
|
+
createPrintFormat(true)
|
|
14066
|
+
)
|
|
14067
|
+
})
|
|
14068
|
+
);
|
|
14069
|
+
}
|
|
14070
|
+
transports.forEach((t) => t.on("error", (err) => console.error("Winston transport error:", err)));
|
|
14071
|
+
var rootLogger = import_winston.default.createLogger({
|
|
14072
|
+
level: "debug",
|
|
14073
|
+
// 根级别设为最宽松,由子 logger 的 minLevel 控制实际过滤
|
|
14074
|
+
// 使用 winston 默认 npm levels (error:0, warn:1, info:2, verbose:3, debug:4, silly:5)
|
|
14075
|
+
// 我们的 LOG_LEVELS 仅用于 createLogger 包装器的手动过滤
|
|
14076
|
+
format: import_winston.default.format.combine(
|
|
14077
|
+
import_winston.default.format.timestamp()
|
|
14078
|
+
),
|
|
14079
|
+
transports
|
|
14080
|
+
});
|
|
14015
14081
|
function createLogger(namespace, level = "info") {
|
|
14016
|
-
const prefix = `[${LOG_PREFIX}:${namespace}]`;
|
|
14017
14082
|
const minLevel = LOG_LEVELS[level] ?? LOG_LEVELS.info;
|
|
14018
14083
|
return {
|
|
14019
14084
|
debug(msg, ...args) {
|
|
14020
14085
|
if (minLevel <= LOG_LEVELS.debug) {
|
|
14021
|
-
|
|
14086
|
+
rootLogger.log("debug", msg, { namespace, args });
|
|
14022
14087
|
}
|
|
14023
14088
|
},
|
|
14024
14089
|
info(msg, ...args) {
|
|
14025
14090
|
if (minLevel <= LOG_LEVELS.info) {
|
|
14026
|
-
|
|
14091
|
+
rootLogger.log("info", msg, { namespace, args });
|
|
14027
14092
|
}
|
|
14028
14093
|
},
|
|
14029
14094
|
warn(msg, ...args) {
|
|
14030
14095
|
if (minLevel <= LOG_LEVELS.warn) {
|
|
14031
|
-
|
|
14096
|
+
rootLogger.log("warn", msg, { namespace, args });
|
|
14032
14097
|
}
|
|
14033
14098
|
},
|
|
14034
14099
|
error(msg, ...args) {
|
|
14035
|
-
|
|
14100
|
+
rootLogger.log("error", msg, { namespace, args });
|
|
14036
14101
|
}
|
|
14037
14102
|
};
|
|
14038
14103
|
}
|
|
@@ -16380,8 +16445,8 @@ var quantumImPlugin = {
|
|
|
16380
16445
|
};
|
|
16381
16446
|
|
|
16382
16447
|
// src/crypto/quantum-plug.ts
|
|
16383
|
-
var
|
|
16384
|
-
var
|
|
16448
|
+
var import_node_fs2 = require("fs");
|
|
16449
|
+
var import_node_path2 = require("path");
|
|
16385
16450
|
var log17 = createLogger("crypto/quantum-plug");
|
|
16386
16451
|
var KMS_URLS = {
|
|
16387
16452
|
test: "https://cmsp.zdxlz.com:8552",
|
|
@@ -16389,13 +16454,13 @@ var KMS_URLS = {
|
|
|
16389
16454
|
production: "https://cmsp.zdxlz.com:8552"
|
|
16390
16455
|
};
|
|
16391
16456
|
function getSdkDir() {
|
|
16392
|
-
return (0,
|
|
16457
|
+
return (0, import_node_path2.resolve)(__dirname, "quantum-sdk");
|
|
16393
16458
|
}
|
|
16394
16459
|
function writeQuantumConfig(config2) {
|
|
16395
16460
|
const sdkDir = getSdkDir();
|
|
16396
|
-
const configPath = (0,
|
|
16397
|
-
(0,
|
|
16398
|
-
(0,
|
|
16461
|
+
const configPath = (0, import_node_path2.join)(sdkDir, "quantum.json");
|
|
16462
|
+
(0, import_node_fs2.mkdirSync)(sdkDir, { recursive: true });
|
|
16463
|
+
(0, import_node_fs2.writeFileSync)(configPath, JSON.stringify(config2, null, 2), "utf-8");
|
|
16399
16464
|
log17.info("quantum.json written", { path: configPath });
|
|
16400
16465
|
}
|
|
16401
16466
|
function createQuantumPlug() {
|
|
@@ -16403,7 +16468,7 @@ function createQuantumPlug() {
|
|
|
16403
16468
|
function loadSdk() {
|
|
16404
16469
|
if (sdk) return sdk;
|
|
16405
16470
|
try {
|
|
16406
|
-
const sdkPath = (0,
|
|
16471
|
+
const sdkPath = (0, import_node_path2.resolve)(__dirname, "quantum-sdk", "index.cjs");
|
|
16407
16472
|
sdk = require(sdkPath);
|
|
16408
16473
|
log17.info("Quantum SDK loaded \u2713");
|
|
16409
16474
|
return sdk;
|
|
@@ -16416,8 +16481,8 @@ function createQuantumPlug() {
|
|
|
16416
16481
|
return {
|
|
16417
16482
|
async init() {
|
|
16418
16483
|
const s = loadSdk();
|
|
16419
|
-
const sdkLogDir = (0,
|
|
16420
|
-
(0,
|
|
16484
|
+
const sdkLogDir = (0, import_node_path2.resolve)(__dirname, "quantum-sdk", "log");
|
|
16485
|
+
(0, import_node_fs2.mkdirSync)(sdkLogDir, { recursive: true });
|
|
16421
16486
|
await s.init();
|
|
16422
16487
|
log17.info("Quantum SDK initialized \u2713");
|
|
16423
16488
|
},
|
|
@@ -16821,8 +16886,8 @@ var OAuthClient = class {
|
|
|
16821
16886
|
|
|
16822
16887
|
// src/auth/token-store.ts
|
|
16823
16888
|
var import_promises = require("fs/promises");
|
|
16824
|
-
var
|
|
16825
|
-
var
|
|
16889
|
+
var import_node_fs3 = require("fs");
|
|
16890
|
+
var import_node_path3 = require("path");
|
|
16826
16891
|
var import_node_crypto2 = require("crypto");
|
|
16827
16892
|
var log20 = createLogger("auth/token-store");
|
|
16828
16893
|
var TokenStore = class {
|
|
@@ -16847,7 +16912,7 @@ var TokenStore = class {
|
|
|
16847
16912
|
*/
|
|
16848
16913
|
async ensureDir() {
|
|
16849
16914
|
if (this.dirEnsured) return;
|
|
16850
|
-
if (!(0,
|
|
16915
|
+
if (!(0, import_node_fs3.existsSync)(this.storageDir)) {
|
|
16851
16916
|
await (0, import_promises.mkdir)(this.storageDir, { recursive: true, mode: 448 });
|
|
16852
16917
|
log20.debug("Storage directory created", { dir: this.storageDir });
|
|
16853
16918
|
}
|
|
@@ -16858,7 +16923,7 @@ var TokenStore = class {
|
|
|
16858
16923
|
* @param key - 存储键名 (如 'token', 'credentials')
|
|
16859
16924
|
*/
|
|
16860
16925
|
filePath(key) {
|
|
16861
|
-
return (0,
|
|
16926
|
+
return (0, import_node_path3.join)(this.storageDir, `${key}.enc`);
|
|
16862
16927
|
}
|
|
16863
16928
|
/**
|
|
16864
16929
|
* 保存 Token — 加密写入文件
|
|
@@ -16907,7 +16972,7 @@ var TokenStore = class {
|
|
|
16907
16972
|
*/
|
|
16908
16973
|
async load(key) {
|
|
16909
16974
|
const filePath = this.filePath(key);
|
|
16910
|
-
if (!(0,
|
|
16975
|
+
if (!(0, import_node_fs3.existsSync)(filePath)) {
|
|
16911
16976
|
log20.debug("Token file not found", { key, path: filePath });
|
|
16912
16977
|
return null;
|
|
16913
16978
|
}
|
|
@@ -18689,7 +18754,7 @@ async function startPlugin(accountConfig, internalOverrides) {
|
|
|
18689
18754
|
appId: accountConfig.appId,
|
|
18690
18755
|
appSecret: accountConfig.appSecret
|
|
18691
18756
|
});
|
|
18692
|
-
const tokenStorePath = (0,
|
|
18757
|
+
const tokenStorePath = (0, import_node_path4.join)((0, import_node_os2.homedir)(), TOKEN_STORE_DIR, "tokens", accountConfig.appId);
|
|
18693
18758
|
const tokenStore = new TokenStore(tokenStorePath, cryptoEngine);
|
|
18694
18759
|
const tokenManager = new TokenManager({
|
|
18695
18760
|
oauthClient,
|
package/dist/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "liangzimixin",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.85",
|
|
4
4
|
"description": "Quantum-encrypted IM channel plugin for OpenClaw",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "index.cjs",
|
|
@@ -24,6 +24,8 @@
|
|
|
24
24
|
"format:check": "prettier --check src/**/*.ts"
|
|
25
25
|
},
|
|
26
26
|
"dependencies": {
|
|
27
|
+
"winston": "^3.19.0",
|
|
28
|
+
"winston-daily-rotate-file": "^5.0.0",
|
|
27
29
|
"ws": "^8.19.0"
|
|
28
30
|
},
|
|
29
31
|
"peerDependencies": {
|
|
Binary file
|
package/dist/setup-entry.cjs
CHANGED
|
@@ -58,6 +58,14 @@ var FileServiceError = class extends Error {
|
|
|
58
58
|
}
|
|
59
59
|
};
|
|
60
60
|
|
|
61
|
+
// src/logger.ts
|
|
62
|
+
var import_node_fs = require("fs");
|
|
63
|
+
var import_node_path = require("path");
|
|
64
|
+
var import_node_os = require("os");
|
|
65
|
+
var import_node_util = require("util");
|
|
66
|
+
var import_winston = __toESM(require("winston"), 1);
|
|
67
|
+
var import_winston_daily_rotate_file = __toESM(require("winston-daily-rotate-file"), 1);
|
|
68
|
+
|
|
61
69
|
// src/constants.ts
|
|
62
70
|
var CHANNEL_ID = "liangzimixin";
|
|
63
71
|
var LOG_PREFIX = CHANNEL_ID;
|
|
@@ -75,27 +83,86 @@ var HINT_PLAINTEXT_NOT_SUPPORTED = "\u60A8\u7684\u63D2\u4EF6\u5DF2\u5F00\u542F\u
|
|
|
75
83
|
|
|
76
84
|
// src/logger.ts
|
|
77
85
|
var LOG_LEVELS = { debug: 0, info: 1, warn: 2, error: 3 };
|
|
86
|
+
var LOG_DIR = (0, import_node_path.join)((0, import_node_os.homedir)(), TOKEN_STORE_DIR, "logs");
|
|
87
|
+
var fileTransportAvailable = true;
|
|
88
|
+
try {
|
|
89
|
+
(0, import_node_fs.mkdirSync)(LOG_DIR, { recursive: true, mode: 448 });
|
|
90
|
+
} catch (err) {
|
|
91
|
+
fileTransportAvailable = false;
|
|
92
|
+
console.warn(
|
|
93
|
+
`[${LOG_PREFIX}:logger] \u26A0 \u65E0\u6CD5\u521B\u5EFA\u65E5\u5FD7\u76EE\u5F55 ${LOG_DIR}\uFF0C\u964D\u7EA7\u4E3A\u4EC5\u63A7\u5236\u53F0\u8F93\u51FA:`,
|
|
94
|
+
err.message
|
|
95
|
+
);
|
|
96
|
+
}
|
|
97
|
+
function createPrintFormat(includeTimestamp) {
|
|
98
|
+
return import_winston.default.format.printf(({ level, message, timestamp, namespace, args }) => {
|
|
99
|
+
const prefix = `[${LOG_PREFIX}:${namespace}]`;
|
|
100
|
+
const extra = Array.isArray(args) && args.length > 0 ? " " + args.map(
|
|
101
|
+
(a) => typeof a === "object" && a !== null ? a instanceof Error ? a.stack || a.message : (0, import_node_util.inspect)(a, { depth: 5 }) : String(a)
|
|
102
|
+
).join(" ") : "";
|
|
103
|
+
if (includeTimestamp) {
|
|
104
|
+
return `${timestamp} [${level}] ${prefix} ${message}${extra}`;
|
|
105
|
+
}
|
|
106
|
+
return `[${level}] ${prefix} ${message}${extra}`;
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
var transports = [
|
|
110
|
+
// Console Transport: 保持原有控制台输出风格并配置错误输出流
|
|
111
|
+
new import_winston.default.transports.Console({
|
|
112
|
+
stderrLevels: ["error", "warn"],
|
|
113
|
+
format: import_winston.default.format.combine(
|
|
114
|
+
import_winston.default.format.colorize({ level: true }),
|
|
115
|
+
createPrintFormat(false)
|
|
116
|
+
)
|
|
117
|
+
})
|
|
118
|
+
];
|
|
119
|
+
if (fileTransportAvailable) {
|
|
120
|
+
transports.push(
|
|
121
|
+
new import_winston_daily_rotate_file.default({
|
|
122
|
+
dirname: LOG_DIR,
|
|
123
|
+
filename: "app-%DATE%",
|
|
124
|
+
extension: ".log",
|
|
125
|
+
datePattern: "YYYY-MM-DD",
|
|
126
|
+
maxFiles: "14d",
|
|
127
|
+
maxSize: "20m",
|
|
128
|
+
options: { flags: "a", mode: 384 },
|
|
129
|
+
format: import_winston.default.format.combine(
|
|
130
|
+
createPrintFormat(true)
|
|
131
|
+
)
|
|
132
|
+
})
|
|
133
|
+
);
|
|
134
|
+
}
|
|
135
|
+
transports.forEach((t) => t.on("error", (err) => console.error("Winston transport error:", err)));
|
|
136
|
+
var rootLogger = import_winston.default.createLogger({
|
|
137
|
+
level: "debug",
|
|
138
|
+
// 根级别设为最宽松,由子 logger 的 minLevel 控制实际过滤
|
|
139
|
+
// 使用 winston 默认 npm levels (error:0, warn:1, info:2, verbose:3, debug:4, silly:5)
|
|
140
|
+
// 我们的 LOG_LEVELS 仅用于 createLogger 包装器的手动过滤
|
|
141
|
+
format: import_winston.default.format.combine(
|
|
142
|
+
import_winston.default.format.timestamp()
|
|
143
|
+
),
|
|
144
|
+
transports
|
|
145
|
+
});
|
|
78
146
|
function createLogger(namespace, level = "info") {
|
|
79
|
-
const prefix = `[${LOG_PREFIX}:${namespace}]`;
|
|
80
147
|
const minLevel = LOG_LEVELS[level] ?? LOG_LEVELS.info;
|
|
81
148
|
return {
|
|
82
149
|
debug(msg, ...args) {
|
|
83
150
|
if (minLevel <= LOG_LEVELS.debug) {
|
|
84
|
-
|
|
151
|
+
rootLogger.log("debug", msg, { namespace, args });
|
|
85
152
|
}
|
|
86
153
|
},
|
|
87
154
|
info(msg, ...args) {
|
|
88
155
|
if (minLevel <= LOG_LEVELS.info) {
|
|
89
|
-
|
|
156
|
+
rootLogger.log("info", msg, { namespace, args });
|
|
90
157
|
}
|
|
91
158
|
},
|
|
92
159
|
warn(msg, ...args) {
|
|
93
160
|
if (minLevel <= LOG_LEVELS.warn) {
|
|
94
|
-
|
|
161
|
+
rootLogger.log("warn", msg, { namespace, args });
|
|
95
162
|
}
|
|
96
163
|
},
|
|
97
164
|
error(msg, ...args) {
|
|
98
|
-
|
|
165
|
+
rootLogger.log("error", msg, { namespace, args });
|
|
99
166
|
}
|
|
100
167
|
};
|
|
101
168
|
}
|
|
@@ -1326,8 +1393,8 @@ var quantumImOutbound = {
|
|
|
1326
1393
|
};
|
|
1327
1394
|
|
|
1328
1395
|
// src/index.ts
|
|
1329
|
-
var
|
|
1330
|
-
var
|
|
1396
|
+
var import_node_path4 = require("path");
|
|
1397
|
+
var import_node_os2 = require("os");
|
|
1331
1398
|
|
|
1332
1399
|
// node_modules/zod/v4/classic/external.js
|
|
1333
1400
|
var external_exports = {};
|
|
@@ -15252,8 +15319,8 @@ function buildPluginConfig(accountConfig, internalOverrides) {
|
|
|
15252
15319
|
}
|
|
15253
15320
|
|
|
15254
15321
|
// src/crypto/quantum-plug.ts
|
|
15255
|
-
var
|
|
15256
|
-
var
|
|
15322
|
+
var import_node_fs2 = require("fs");
|
|
15323
|
+
var import_node_path2 = require("path");
|
|
15257
15324
|
var log8 = createLogger("crypto/quantum-plug");
|
|
15258
15325
|
var KMS_URLS = {
|
|
15259
15326
|
test: "https://cmsp.zdxlz.com:8552",
|
|
@@ -15261,13 +15328,13 @@ var KMS_URLS = {
|
|
|
15261
15328
|
production: "https://cmsp.zdxlz.com:8552"
|
|
15262
15329
|
};
|
|
15263
15330
|
function getSdkDir() {
|
|
15264
|
-
return (0,
|
|
15331
|
+
return (0, import_node_path2.resolve)(__dirname, "quantum-sdk");
|
|
15265
15332
|
}
|
|
15266
15333
|
function writeQuantumConfig(config2) {
|
|
15267
15334
|
const sdkDir = getSdkDir();
|
|
15268
|
-
const configPath = (0,
|
|
15269
|
-
(0,
|
|
15270
|
-
(0,
|
|
15335
|
+
const configPath = (0, import_node_path2.join)(sdkDir, "quantum.json");
|
|
15336
|
+
(0, import_node_fs2.mkdirSync)(sdkDir, { recursive: true });
|
|
15337
|
+
(0, import_node_fs2.writeFileSync)(configPath, JSON.stringify(config2, null, 2), "utf-8");
|
|
15271
15338
|
log8.info("quantum.json written", { path: configPath });
|
|
15272
15339
|
}
|
|
15273
15340
|
function createQuantumPlug() {
|
|
@@ -15275,7 +15342,7 @@ function createQuantumPlug() {
|
|
|
15275
15342
|
function loadSdk() {
|
|
15276
15343
|
if (sdk) return sdk;
|
|
15277
15344
|
try {
|
|
15278
|
-
const sdkPath = (0,
|
|
15345
|
+
const sdkPath = (0, import_node_path2.resolve)(__dirname, "quantum-sdk", "index.cjs");
|
|
15279
15346
|
sdk = require(sdkPath);
|
|
15280
15347
|
log8.info("Quantum SDK loaded \u2713");
|
|
15281
15348
|
return sdk;
|
|
@@ -15288,8 +15355,8 @@ function createQuantumPlug() {
|
|
|
15288
15355
|
return {
|
|
15289
15356
|
async init() {
|
|
15290
15357
|
const s = loadSdk();
|
|
15291
|
-
const sdkLogDir = (0,
|
|
15292
|
-
(0,
|
|
15358
|
+
const sdkLogDir = (0, import_node_path2.resolve)(__dirname, "quantum-sdk", "log");
|
|
15359
|
+
(0, import_node_fs2.mkdirSync)(sdkLogDir, { recursive: true });
|
|
15293
15360
|
await s.init();
|
|
15294
15361
|
log8.info("Quantum SDK initialized \u2713");
|
|
15295
15362
|
},
|
|
@@ -15693,8 +15760,8 @@ var OAuthClient = class {
|
|
|
15693
15760
|
|
|
15694
15761
|
// src/auth/token-store.ts
|
|
15695
15762
|
var import_promises = require("fs/promises");
|
|
15696
|
-
var
|
|
15697
|
-
var
|
|
15763
|
+
var import_node_fs3 = require("fs");
|
|
15764
|
+
var import_node_path3 = require("path");
|
|
15698
15765
|
var import_node_crypto2 = require("crypto");
|
|
15699
15766
|
var log11 = createLogger("auth/token-store");
|
|
15700
15767
|
var TokenStore = class {
|
|
@@ -15719,7 +15786,7 @@ var TokenStore = class {
|
|
|
15719
15786
|
*/
|
|
15720
15787
|
async ensureDir() {
|
|
15721
15788
|
if (this.dirEnsured) return;
|
|
15722
|
-
if (!(0,
|
|
15789
|
+
if (!(0, import_node_fs3.existsSync)(this.storageDir)) {
|
|
15723
15790
|
await (0, import_promises.mkdir)(this.storageDir, { recursive: true, mode: 448 });
|
|
15724
15791
|
log11.debug("Storage directory created", { dir: this.storageDir });
|
|
15725
15792
|
}
|
|
@@ -15730,7 +15797,7 @@ var TokenStore = class {
|
|
|
15730
15797
|
* @param key - 存储键名 (如 'token', 'credentials')
|
|
15731
15798
|
*/
|
|
15732
15799
|
filePath(key) {
|
|
15733
|
-
return (0,
|
|
15800
|
+
return (0, import_node_path3.join)(this.storageDir, `${key}.enc`);
|
|
15734
15801
|
}
|
|
15735
15802
|
/**
|
|
15736
15803
|
* 保存 Token — 加密写入文件
|
|
@@ -15779,7 +15846,7 @@ var TokenStore = class {
|
|
|
15779
15846
|
*/
|
|
15780
15847
|
async load(key) {
|
|
15781
15848
|
const filePath = this.filePath(key);
|
|
15782
|
-
if (!(0,
|
|
15849
|
+
if (!(0, import_node_fs3.existsSync)(filePath)) {
|
|
15783
15850
|
log11.debug("Token file not found", { key, path: filePath });
|
|
15784
15851
|
return null;
|
|
15785
15852
|
}
|
|
@@ -17638,7 +17705,7 @@ async function startPlugin(accountConfig, internalOverrides) {
|
|
|
17638
17705
|
appId: accountConfig.appId,
|
|
17639
17706
|
appSecret: accountConfig.appSecret
|
|
17640
17707
|
});
|
|
17641
|
-
const tokenStorePath = (0,
|
|
17708
|
+
const tokenStorePath = (0, import_node_path4.join)((0, import_node_os2.homedir)(), TOKEN_STORE_DIR, "tokens", accountConfig.appId);
|
|
17642
17709
|
const tokenStore = new TokenStore(tokenStorePath, cryptoEngine);
|
|
17643
17710
|
const tokenManager = new TokenManager({
|
|
17644
17711
|
oauthClient,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "liangzimixin",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.85",
|
|
4
4
|
"description": "Quantum-encrypted IM channel plugin for OpenClaw",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.cjs",
|
|
@@ -24,6 +24,8 @@
|
|
|
24
24
|
"format:check": "prettier --check src/**/*.ts"
|
|
25
25
|
},
|
|
26
26
|
"dependencies": {
|
|
27
|
+
"winston": "^3.19.0",
|
|
28
|
+
"winston-daily-rotate-file": "^5.0.0",
|
|
27
29
|
"ws": "^8.19.0"
|
|
28
30
|
},
|
|
29
31
|
"peerDependencies": {
|
|
@@ -7,7 +7,7 @@ REM liangzimixin install script (Windows)
|
|
|
7
7
|
REM Usage: liangzimixin_install.bat <appId> <appSecret> [quantumAccount]
|
|
8
8
|
REM ============================================================
|
|
9
9
|
|
|
10
|
-
set "SCRIPT_VERSION=0.3.
|
|
10
|
+
set "SCRIPT_VERSION=0.3.85"
|
|
11
11
|
set "NPM_PACKAGE=liangzimixin"
|
|
12
12
|
|
|
13
13
|
set "SKIP_SELF_UPDATE=0"
|
|
@@ -6,7 +6,7 @@ set -euo pipefail
|
|
|
6
6
|
# 用法: ./liangzimixin_install.sh <appId> <appSecret> [quantumAccount]
|
|
7
7
|
# ============================================================
|
|
8
8
|
|
|
9
|
-
SCRIPT_VERSION="0.3.
|
|
9
|
+
SCRIPT_VERSION="0.3.85"
|
|
10
10
|
NPM_PACKAGE="liangzimixin"
|
|
11
11
|
|
|
12
12
|
# ── 颜色 ──────────────────────────────────────────────────────
|