@yungho/noclaw-channel 0.1.9 → 0.4.0
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/channels/TelegramChannel.d.ts +1 -7
- package/dist/channels/TelegramChannel.d.ts.map +1 -1
- package/dist/channels/TelegramChannel.js +5 -16
- package/dist/channels/TelegramChannel.js.map +1 -1
- package/dist/channels/WechatChannel.d.ts +1 -2
- package/dist/channels/WechatChannel.d.ts.map +1 -1
- package/dist/channels/WechatChannel.js +18 -9
- package/dist/channels/WechatChannel.js.map +1 -1
- package/dist/channels/__tests__/registry.test.d.ts +2 -0
- package/dist/channels/__tests__/registry.test.d.ts.map +1 -0
- package/dist/channels/__tests__/registry.test.js +104 -0
- package/dist/channels/__tests__/registry.test.js.map +1 -0
- package/dist/channels/builtin-register.d.ts +13 -0
- package/dist/channels/builtin-register.d.ts.map +1 -0
- package/dist/channels/builtin-register.js +44 -0
- package/dist/channels/builtin-register.js.map +1 -0
- package/dist/channels/registry.d.ts +55 -0
- package/dist/channels/registry.d.ts.map +1 -0
- package/dist/channels/registry.js +65 -0
- package/dist/channels/registry.js.map +1 -0
- package/dist/config/ConfigManager.d.ts +8 -2
- package/dist/config/ConfigManager.d.ts.map +1 -1
- package/dist/config/ConfigManager.js +45 -30
- package/dist/config/ConfigManager.js.map +1 -1
- package/dist/config/TenantConfigManager.d.ts +53 -0
- package/dist/config/TenantConfigManager.d.ts.map +1 -0
- package/dist/config/TenantConfigManager.js +108 -0
- package/dist/config/TenantConfigManager.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/server/ChannelServer.d.ts +7 -16
- package/dist/server/ChannelServer.d.ts.map +1 -1
- package/dist/server/ChannelServer.js +10 -86
- package/dist/server/ChannelServer.js.map +1 -1
- package/dist/server/WebSocketServer.d.ts +22 -13
- package/dist/server/WebSocketServer.d.ts.map +1 -1
- package/dist/server/WebSocketServer.js +149 -109
- package/dist/server/WebSocketServer.js.map +1 -1
- package/dist/types.d.ts +29 -17
- package/dist/types.d.ts.map +1 -1
- package/package.json +3 -2
|
@@ -14,7 +14,6 @@ export declare class TelegramChannel implements IChannel {
|
|
|
14
14
|
private pollingInterval?;
|
|
15
15
|
private messageCallback?;
|
|
16
16
|
private statusCallbacks;
|
|
17
|
-
private qrCodeCallbacks;
|
|
18
17
|
private lastUpdateId;
|
|
19
18
|
private readonly POLLING_INTERVAL;
|
|
20
19
|
constructor(config: TelegramConfig, logger: pino.Logger);
|
|
@@ -24,9 +23,8 @@ export declare class TelegramChannel implements IChannel {
|
|
|
24
23
|
onMessage(callback: (msg: IpcMessage) => void): void;
|
|
25
24
|
getStatus(): ChannelStatus;
|
|
26
25
|
getCapabilities(): ChannelCapabilities;
|
|
26
|
+
getPlatformId(): string;
|
|
27
27
|
onStatusChange(callback: (status: ChannelStatus) => void): void;
|
|
28
|
-
requestQrCode(): void;
|
|
29
|
-
onQrCode(callback: (qrCodeUrl: string) => void): void;
|
|
30
28
|
/**
|
|
31
29
|
* Start polling for incoming messages
|
|
32
30
|
*/
|
|
@@ -51,9 +49,5 @@ export declare class TelegramChannel implements IChannel {
|
|
|
51
49
|
* Update connection status
|
|
52
50
|
*/
|
|
53
51
|
private setStatus;
|
|
54
|
-
/**
|
|
55
|
-
* Notify listeners about QR code
|
|
56
|
-
*/
|
|
57
|
-
private notifyQrCode;
|
|
58
52
|
}
|
|
59
53
|
//# sourceMappingURL=TelegramChannel.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TelegramChannel.d.ts","sourceRoot":"","sources":["../../src/channels/TelegramChannel.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,cAAc,EAAE,aAAa,EAAE,mBAAmB,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AACpH,OAAO,IAAI,MAAM,MAAM,CAAC;AAqCxB,qBAAa,eAAgB,YAAW,QAAQ;IAC9C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,MAAM,CAAiB;IAC/B,OAAO,CAAC,MAAM,CAAc;IAC5B,OAAO,CAAC,MAAM,CAAiC;IAC/C,OAAO,CAAC,eAAe,CAAC,CAAiB;IACzC,OAAO,CAAC,eAAe,CAAC,CAA4B;IACpD,OAAO,CAAC,eAAe,CAAmD;IAC1E,OAAO,CAAC,
|
|
1
|
+
{"version":3,"file":"TelegramChannel.d.ts","sourceRoot":"","sources":["../../src/channels/TelegramChannel.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,cAAc,EAAE,aAAa,EAAE,mBAAmB,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AACpH,OAAO,IAAI,MAAM,MAAM,CAAC;AAqCxB,qBAAa,eAAgB,YAAW,QAAQ;IAC9C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,MAAM,CAAiB;IAC/B,OAAO,CAAC,MAAM,CAAc;IAC5B,OAAO,CAAC,MAAM,CAAiC;IAC/C,OAAO,CAAC,eAAe,CAAC,CAAiB;IACzC,OAAO,CAAC,eAAe,CAAC,CAA4B;IACpD,OAAO,CAAC,eAAe,CAAmD;IAC1E,OAAO,CAAC,YAAY,CAAK;IACzB,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAQ;gBAE7B,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM;IAMjD,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IA4BxB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAM3B,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAwBpF,SAAS,CAAC,QAAQ,EAAE,CAAC,GAAG,EAAE,UAAU,KAAK,IAAI,GAAG,IAAI;IAIpD,SAAS,IAAI,aAAa;IAI1B,eAAe,IAAI,mBAAmB;IAUtC,aAAa,IAAI,MAAM;IAIvB,cAAc,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,aAAa,KAAK,IAAI,GAAG,IAAI;IAI/D;;OAEG;IACH,OAAO,CAAC,mBAAmB;IA+C3B;;OAEG;IACH,OAAO,CAAC,WAAW;IAOnB;;OAEG;YACW,WAAW;IAyBzB;;OAEG;YACW,SAAS;IA2BvB;;OAEG;YACW,WAAW;IAYzB;;OAEG;IACH,OAAO,CAAC,SAAS;CAIlB"}
|
|
@@ -12,7 +12,6 @@ export class TelegramChannel {
|
|
|
12
12
|
pollingInterval;
|
|
13
13
|
messageCallback;
|
|
14
14
|
statusCallbacks = new Set();
|
|
15
|
-
qrCodeCallbacks = new Set();
|
|
16
15
|
lastUpdateId = 0;
|
|
17
16
|
POLLING_INTERVAL = 2000; // 2 seconds
|
|
18
17
|
constructor(config, logger) {
|
|
@@ -87,16 +86,12 @@ export class TelegramChannel {
|
|
|
87
86
|
webhooks: false,
|
|
88
87
|
};
|
|
89
88
|
}
|
|
89
|
+
getPlatformId() {
|
|
90
|
+
return 'telegram';
|
|
91
|
+
}
|
|
90
92
|
onStatusChange(callback) {
|
|
91
93
|
this.statusCallbacks.add(callback);
|
|
92
94
|
}
|
|
93
|
-
requestQrCode() {
|
|
94
|
-
// Telegram uses bot token, not QR code
|
|
95
|
-
this.logger.info('Telegram uses bot token authentication, no QR code');
|
|
96
|
-
}
|
|
97
|
-
onQrCode(callback) {
|
|
98
|
-
this.qrCodeCallbacks.add(callback);
|
|
99
|
-
}
|
|
100
95
|
/**
|
|
101
96
|
* Start polling for incoming messages
|
|
102
97
|
*/
|
|
@@ -110,8 +105,8 @@ export class TelegramChannel {
|
|
|
110
105
|
if (response.result && response.result.length > 0) {
|
|
111
106
|
this.logger.debug({ messageCount: response.result.length }, 'Received messages from Telegram');
|
|
112
107
|
for (const update of response.result) {
|
|
113
|
-
// Update last update ID
|
|
114
|
-
this.lastUpdateId = update.update_id;
|
|
108
|
+
// Update last update ID (+1 to ACK this update)
|
|
109
|
+
this.lastUpdateId = update.update_id + 1;
|
|
115
110
|
// Emit message to callback
|
|
116
111
|
if (update.message?.text) {
|
|
117
112
|
this.messageCallback?.({
|
|
@@ -213,11 +208,5 @@ export class TelegramChannel {
|
|
|
213
208
|
this.status = status;
|
|
214
209
|
this.statusCallbacks.forEach((callback) => callback(status));
|
|
215
210
|
}
|
|
216
|
-
/**
|
|
217
|
-
* Notify listeners about QR code
|
|
218
|
-
*/
|
|
219
|
-
notifyQrCode(qrCodeUrl) {
|
|
220
|
-
this.qrCodeCallbacks.forEach((callback) => callback(qrCodeUrl));
|
|
221
|
-
}
|
|
222
211
|
}
|
|
223
212
|
//# sourceMappingURL=TelegramChannel.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TelegramChannel.js","sourceRoot":"","sources":["../../src/channels/TelegramChannel.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAwCH,MAAM,OAAO,eAAe;IACT,OAAO,CAAS;IACzB,MAAM,CAAiB;IACvB,MAAM,CAAc;IACpB,MAAM,GAAkB,cAAc,CAAC;IACvC,eAAe,CAAkB;IACjC,eAAe,CAA6B;IAC5C,eAAe,GAAyC,IAAI,GAAG,EAAE,CAAC;IAClE,
|
|
1
|
+
{"version":3,"file":"TelegramChannel.js","sourceRoot":"","sources":["../../src/channels/TelegramChannel.ts"],"names":[],"mappings":"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"}
|
|
@@ -17,8 +17,6 @@ export declare class WechatChannel implements IChannel {
|
|
|
17
17
|
private qrCodeCallbacks;
|
|
18
18
|
private lastQrCodeUrl?;
|
|
19
19
|
private getUpdatesBuf;
|
|
20
|
-
/** Map contextToken → from_user_id for reply routing */
|
|
21
|
-
private contextToUserMap;
|
|
22
20
|
/** Callback to persist botToken to disk when it changes */
|
|
23
21
|
private onBotTokenChange?;
|
|
24
22
|
constructor(config: WechatConfig, logger: pino.Logger, onBotTokenChange?: (token: string) => void);
|
|
@@ -27,6 +25,7 @@ export declare class WechatChannel implements IChannel {
|
|
|
27
25
|
send(text: string, contextToken: string, _media?: MediaObject[]): Promise<void>;
|
|
28
26
|
onMessage(callback: (msg: IpcMessage) => void): void;
|
|
29
27
|
getStatus(): ChannelStatus;
|
|
28
|
+
getPlatformId(): string;
|
|
30
29
|
getCapabilities(): ChannelCapabilities;
|
|
31
30
|
onStatusChange(callback: (status: ChannelStatus) => void): void;
|
|
32
31
|
requestQrCode(): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WechatChannel.d.ts","sourceRoot":"","sources":["../../src/channels/WechatChannel.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,mBAAmB,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAClH,OAAO,IAAI,MAAM,MAAM,CAAC;AA8FxB,qBAAa,aAAc,YAAW,QAAQ;IAC5C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,CAAS;IAC1B,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,MAAM,CAAc;IAC5B,OAAO,CAAC,MAAM,CAAiC;IAC/C,OAAO,CAAC,eAAe,CAAC,CAA4B;IACpD,OAAO,CAAC,eAAe,CAAmD;IAC1E,OAAO,CAAC,eAAe,CAA+C;IACtE,OAAO,CAAC,aAAa,CAAC,CAAS;IAC/B,OAAO,CAAC,aAAa,CAAM;IAC3B,
|
|
1
|
+
{"version":3,"file":"WechatChannel.d.ts","sourceRoot":"","sources":["../../src/channels/WechatChannel.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,mBAAmB,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAClH,OAAO,IAAI,MAAM,MAAM,CAAC;AA8FxB,qBAAa,aAAc,YAAW,QAAQ;IAC5C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,CAAS;IAC1B,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,MAAM,CAAc;IAC5B,OAAO,CAAC,MAAM,CAAiC;IAC/C,OAAO,CAAC,eAAe,CAAC,CAA4B;IACpD,OAAO,CAAC,eAAe,CAAmD;IAC1E,OAAO,CAAC,eAAe,CAA+C;IACtE,OAAO,CAAC,aAAa,CAAC,CAAS;IAC/B,OAAO,CAAC,aAAa,CAAM;IAC3B,2DAA2D;IAC3D,OAAO,CAAC,gBAAgB,CAAC,CAA0B;gBAEvC,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,gBAAgB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI;IAQ3F,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAwBxB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAM3B,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IA4BrF,SAAS,CAAC,QAAQ,EAAE,CAAC,GAAG,EAAE,UAAU,KAAK,IAAI,GAAG,IAAI;IAIpD,SAAS,IAAI,aAAa;IAI1B,aAAa,IAAI,MAAM;IAIvB,eAAe,IAAI,mBAAmB;IAUtC,cAAc,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,aAAa,KAAK,IAAI,GAAG,IAAI;IAI/D,aAAa,IAAI,IAAI;IAUrB,QAAQ,CAAC,QAAQ,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI;YAMvC,sBAAsB;YAsBtB,gBAAgB;IA2E9B,OAAO,CAAC,cAAc,CAAS;IAE/B,OAAO,CAAC,mBAAmB;YAOb,QAAQ;YAMR,QAAQ;IAwFtB,OAAO,CAAC,WAAW;YAML,QAAQ;IA+BtB,OAAO,CAAC,SAAS;IAKjB,OAAO,CAAC,YAAY;CAGrB"}
|
|
@@ -58,8 +58,6 @@ export class WechatChannel {
|
|
|
58
58
|
qrCodeCallbacks = new Set();
|
|
59
59
|
lastQrCodeUrl;
|
|
60
60
|
getUpdatesBuf = '';
|
|
61
|
-
/** Map contextToken → from_user_id for reply routing */
|
|
62
|
-
contextToUserMap = new Map();
|
|
63
61
|
/** Callback to persist botToken to disk when it changes */
|
|
64
62
|
onBotTokenChange;
|
|
65
63
|
constructor(config, logger, onBotTokenChange) {
|
|
@@ -99,11 +97,11 @@ export class WechatChannel {
|
|
|
99
97
|
if (!this.botToken) {
|
|
100
98
|
throw new Error('Not authenticated. Please connect first.');
|
|
101
99
|
}
|
|
102
|
-
|
|
100
|
+
// context_token is the routing key itself, no need to track userId
|
|
103
101
|
const body = JSON.stringify({
|
|
104
102
|
msg: {
|
|
105
103
|
from_user_id: '',
|
|
106
|
-
to_user_id:
|
|
104
|
+
to_user_id: '', // Not needed, context_token handles routing
|
|
107
105
|
client_id: generateClientId(),
|
|
108
106
|
message_type: 2, // MSG_TYPE_BOT
|
|
109
107
|
message_state: 2, // MSG_STATE_FINISH
|
|
@@ -127,6 +125,9 @@ export class WechatChannel {
|
|
|
127
125
|
getStatus() {
|
|
128
126
|
return this.status;
|
|
129
127
|
}
|
|
128
|
+
getPlatformId() {
|
|
129
|
+
return 'wechat';
|
|
130
|
+
}
|
|
130
131
|
getCapabilities() {
|
|
131
132
|
return {
|
|
132
133
|
textMessaging: true,
|
|
@@ -160,11 +161,12 @@ export class WechatChannel {
|
|
|
160
161
|
throw new Error(`QR fetch failed: ${qrRes.status}`);
|
|
161
162
|
const qrResp = (await qrRes.json());
|
|
162
163
|
this.logger.info({ qrCodeId: qrResp.qrcode }, 'QR code obtained');
|
|
163
|
-
// Step 2: Display in terminal
|
|
164
|
+
// Step 2: Display in terminal and notify WebSocket clients
|
|
164
165
|
this.lastQrCodeUrl = qrResp.qrcode_img_content;
|
|
165
166
|
console.log('\n📱 Please scan QR code below to login:\n');
|
|
166
167
|
QRCode.generate(qrResp.qrcode_img_content, { small: true });
|
|
167
168
|
console.log(`\nOr copy this link: ${qrResp.qrcode_img_content}\n`);
|
|
169
|
+
this.notifyQrCode(qrResp.qrcode_img_content);
|
|
168
170
|
// Step 3: Poll for scan status
|
|
169
171
|
await this.pollQrCodeStatus(qrResp.qrcode);
|
|
170
172
|
}
|
|
@@ -259,7 +261,18 @@ export class WechatChannel {
|
|
|
259
261
|
const isError = (resp.ret !== undefined && resp.ret !== 0) ||
|
|
260
262
|
(resp.errcode !== undefined && resp.errcode !== 0);
|
|
261
263
|
if (isError) {
|
|
264
|
+
const errcode = resp.errcode ?? resp.ret ?? 0;
|
|
262
265
|
this.logger.error({ ret: resp.ret, errcode: resp.errcode, errmsg: resp.errmsg }, 'getUpdates returned error');
|
|
266
|
+
// Token expired or invalid — clear it and fall back to QR auth
|
|
267
|
+
if (errcode === 40001 || errcode === 40003 || errcode === 42001 || errcode === 44001) {
|
|
268
|
+
this.logger.warn('WeChat bot token appears invalid/expired, clearing and restarting QR auth');
|
|
269
|
+
this.botToken = undefined;
|
|
270
|
+
this.config.botToken = undefined;
|
|
271
|
+
this.onBotTokenChange?.('');
|
|
272
|
+
this.setStatus('disconnected');
|
|
273
|
+
void this.authenticateWithQrCode().catch(e => this.logger.error({ error: String(e) }, 'Failed to restart QR auth after token error'));
|
|
274
|
+
return; // exit poll loop — QR auth will restart polling on success
|
|
275
|
+
}
|
|
263
276
|
await new Promise(r => setTimeout(r, 2000));
|
|
264
277
|
return;
|
|
265
278
|
}
|
|
@@ -277,10 +290,6 @@ export class WechatChannel {
|
|
|
277
290
|
if (!text)
|
|
278
291
|
continue;
|
|
279
292
|
const senderId = msg.from_user_id || 'unknown';
|
|
280
|
-
// Save contextToken → senderId mapping for reply routing
|
|
281
|
-
if (msg.context_token) {
|
|
282
|
-
this.contextToUserMap.set(msg.context_token, senderId);
|
|
283
|
-
}
|
|
284
293
|
this.logger.info({ from: senderId, textPreview: text.slice(0, 60) }, 'Received WeChat message');
|
|
285
294
|
this.messageCallback?.({
|
|
286
295
|
type: 'MSG_IN',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WechatChannel.js","sourceRoot":"","sources":["../../src/channels/WechatChannel.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,MAAM,MAAM,aAAa,CAAC;AAGjC,OAAO,MAAM,MAAM,iBAAiB,CAAC;AAErC,kFAAkF;AAElF,MAAM,eAAe,GAAG,OAAO,CAAC;AAChC,MAAM,gBAAgB,GAAG,+BAA+B,CAAC;AACzD,MAAM,QAAQ,GAAG,GAAG,CAAC;AAErB,MAAM,aAAa,GAAG,CAAC,CAAC;AACxB,MAAM,aAAa,GAAG,CAAC,CAAC;AAExB,MAAM,oBAAoB,GAAG,MAAM,CAAC;AACpC,MAAM,kBAAkB,GAAG,MAAM,CAAC;AA2ClC,kFAAkF;AAElF,SAAS,eAAe;IACtB,MAAM,MAAM,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IACrD,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AACjE,CAAC;AAED,SAAS,YAAY,CAAC,KAAc,EAAE,IAAa;IACjD,MAAM,OAAO,GAA2B;QACtC,cAAc,EAAE,kBAAkB;QAClC,mBAAmB,EAAE,iBAAiB;QACtC,cAAc,EAAE,eAAe,EAAE;KAClC,CAAC;IACF,IAAI,IAAI,EAAE,CAAC;QACT,OAAO,CAAC,gBAAgB,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;IACvE,CAAC;IACD,IAAI,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC;QAClB,OAAO,CAAC,eAAe,CAAC,GAAG,UAAU,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC;IACtD,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,sBAAsB,CAAC,GAAkB;IAChD,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,MAAM;QAAE,OAAO,IAAI,CAAC;IACxC,KAAK,MAAM,IAAI,IAAI,GAAG,CAAC,SAAS,EAAE,CAAC;QACjC,IAAI,IAAI,CAAC,IAAI,KAAK,aAAa,IAAI,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC;YACxD,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;QAC7B,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,gBAAgB;IACvB,OAAO,kBAAkB,IAAI,CAAC,GAAG,EAAE,IAAI,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;AACjF,CAAC;AAED,kFAAkF;AAElF,MAAM,OAAO,aAAa;IACP,OAAO,CAAS;IACzB,QAAQ,CAAU;IAClB,MAAM,CAAe;IACrB,MAAM,CAAc;IACpB,MAAM,GAAkB,cAAc,CAAC;IACvC,eAAe,CAA6B;IAC5C,eAAe,GAAyC,IAAI,GAAG,EAAE,CAAC;IAClE,eAAe,GAAqC,IAAI,GAAG,EAAE,CAAC;IAC9D,aAAa,CAAU;IACvB,aAAa,GAAG,EAAE,CAAC;IAC3B,wDAAwD;IAChD,gBAAgB,GAAG,IAAI,GAAG,EAAkB,CAAC;IACrD,2DAA2D;IACnD,gBAAgB,CAA2B;IAEnD,YAAY,MAAoB,EAAE,MAAmB,EAAE,gBAA0C;QAC/F,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,gBAAgB,CAAC;QAClD,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC;QAClD,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;QAChC,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;IAC3C,CAAC;IAED,KAAK,CAAC,OAAO;QACX,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACzB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,sCAAsC,CAAC,CAAC;YACzD,OAAO;QACT,CAAC;QAED,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;QAE7B,IAAI,CAAC;YACH,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAClB,IAAI,CAAC,mBAAmB,EAAE,CAAC;gBAC3B,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;gBAC5B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,0CAA0C,CAAC,CAAC;gBAC7D,OAAO;YACT,CAAC;YAED,MAAM,IAAI,CAAC,sBAAsB,EAAE,CAAC;QACtC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,6BAA6B,CAAC,CAAC;YACjE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;YACxB,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED,KAAK,CAAC,UAAU;QACd,IAAI,CAAC,WAAW,EAAE,CAAC;QACnB,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;QAC/B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;IAC/C,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,IAAY,EAAE,YAAoB,EAAE,MAAsB;QACnE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACnB,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;QAC9D,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;QAE/D,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC;YAC1B,GAAG,EAAE;gBACH,YAAY,EAAE,EAAE;gBAChB,UAAU,EAAE,QAAQ;gBACpB,SAAS,EAAE,gBAAgB,EAAE;gBAC7B,YAAY,EAAE,CAAC,EAAE,eAAe;gBAChC,aAAa,EAAE,CAAC,EAAE,mBAAmB;gBACrC,SAAS,EAAE,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,SAAS,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC;gBACzD,aAAa,EAAE,YAAY;aAC5B;YACD,SAAS,EAAE,EAAE,eAAe,EAAE,eAAe,EAAE;SAChD,CAAC,CAAC;QAEH,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,QAAQ,CAAC,uBAAuB,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;YAC3D,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,YAAY,EAAE,UAAU,EAAE,IAAI,CAAC,MAAM,EAAE,EAAE,wBAAwB,CAAC,CAAC;QACzF,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,YAAY,EAAE,EAAE,kCAAkC,CAAC,CAAC;YACpF,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED,SAAS,CAAC,QAAmC;QAC3C,IAAI,CAAC,eAAe,GAAG,QAAQ,CAAC;IAClC,CAAC;IAED,SAAS;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED,eAAe;QACb,OAAO;YACL,aAAa,EAAE,IAAI;YACnB,YAAY,EAAE,IAAI;YAClB,eAAe,EAAE,IAAI;YACrB,cAAc,EAAE,IAAI;YACpB,QAAQ,EAAE,KAAK;SAChB,CAAC;IACJ,CAAC;IAED,cAAc,CAAC,QAAyC;QACtD,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACrC,CAAC;IAED,aAAa;QACX,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACvB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QACxC,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,sBAAsB,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CACtC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,uBAAuB,CAAC,CACjE,CAAC;QACJ,CAAC;IACH,CAAC;IAED,QAAQ,CAAC,QAAqC;QAC5C,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACrC,CAAC;IAED,gFAAgF;IAExE,KAAK,CAAC,sBAAsB;QAClC,sDAAsD;QACtD,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,GAAG,CAAC;QAC5E,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,qCAAqC,kBAAkB,CAAC,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC;QAE5G,MAAM,KAAK,GAAG,MAAM,KAAK,CAAC,KAAK,CAAC,CAAC;QACjC,IAAI,CAAC,KAAK,CAAC,EAAE;YAAE,MAAM,IAAI,KAAK,CAAC,oBAAoB,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;QACnE,MAAM,MAAM,GAAG,CAAC,MAAM,KAAK,CAAC,IAAI,EAAE,CAAmB,CAAC;QAEtD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,EAAE,kBAAkB,CAAC,CAAC;QAElE,8BAA8B;QAC9B,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,kBAAkB,CAAC;QAC/C,OAAO,CAAC,GAAG,CAAC,4CAA4C,CAAC,CAAC;QAC1D,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,kBAAkB,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QAC5D,OAAO,CAAC,GAAG,CAAC,wBAAwB,MAAM,CAAC,kBAAkB,IAAI,CAAC,CAAC;QAEnE,+BAA+B;QAC/B,MAAM,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC7C,CAAC;IAEO,KAAK,CAAC,gBAAgB,CAAC,MAAc;QAC3C,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,GAAG,CAAC;QAC5E,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC,CAAC,YAAY;QAEnD,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,EAAE,CAAC;YAC7B,IAAI,CAAC;gBACH,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,sCAAsC,kBAAkB,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC;gBACzG,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;gBACzC,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,kBAAkB,CAAC,CAAC;gBAEvE,IAAI,UAA4B,CAAC;gBACjC,IAAI,CAAC;oBACH,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;wBAC3B,OAAO,EAAE,EAAE,yBAAyB,EAAE,GAAG,EAAE;wBAC3C,MAAM,EAAE,UAAU,CAAC,MAAM;qBAC1B,CAAC,CAAC;oBACH,YAAY,CAAC,KAAK,CAAC,CAAC;oBACpB,IAAI,CAAC,GAAG,CAAC,EAAE;wBAAE,MAAM,IAAI,KAAK,CAAC,qBAAqB,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;oBAChE,UAAU,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAqB,CAAC;gBACtD,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,YAAY,CAAC,KAAK,CAAC,CAAC;oBACpB,IAAI,GAAG,YAAY,KAAK,IAAI,GAAG,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;wBACtD,2BAA2B;wBAC3B,SAAS;oBACX,CAAC;oBACD,MAAM,GAAG,CAAC;gBACZ,CAAC;gBAED,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,MAAM,EAAE,EAAE,sBAAsB,CAAC,CAAC;gBAEzE,QAAQ,UAAU,CAAC,MAAM,EAAE,CAAC;oBAC1B,KAAK,MAAM;wBACT,MAAM;oBAER,KAAK,QAAQ;wBACX,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,2CAA2C,CAAC,CAAC;wBAC9D,MAAM;oBAER,KAAK,WAAW,CAAC,CAAC,CAAC;wBACjB,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,CAAC;4BAC1B,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;wBAC/D,CAAC;wBACD,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC,SAAS,CAAC;wBACrC,IAAI,CAAC,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;wBAErC,mEAAmE;wBACnE,IAAI,CAAC,gBAAgB,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;wBAEvC,IAAI,UAAU,CAAC,OAAO,EAAE,CAAC;4BACtB,IAAY,CAAC,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC;wBAC7C,CAAC;wBAED,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;wBAC5B,IAAI,CAAC,mBAAmB,EAAE,CAAC;wBAC3B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC;wBACrD,OAAO;oBACT,CAAC;oBAED,KAAK,SAAS;wBACZ,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;gBACvC,CAAC;gBAED,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;YAC9C,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,KAAK,YAAY,KAAK,IAAI,KAAK,CAAC,OAAO,KAAK,iBAAiB;oBAAE,MAAM,KAAK,CAAC;gBAC/E,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,8BAA8B,CAAC,CAAC;gBAClE,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;YAC9C,CAAC;QACH,CAAC;QAED,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;IAC1C,CAAC;IAED,gFAAgF;IAExE,cAAc,GAAG,KAAK,CAAC;IAEvB,mBAAmB;QACzB,IAAI,CAAC,WAAW,EAAE,CAAC;QACnB,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;QAC3B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;QAChD,IAAI,CAAC,QAAQ,EAAE,CAAC;IAClB,CAAC;IAEO,KAAK,CAAC,QAAQ;QACpB,OAAO,IAAI,CAAC,cAAc,EAAE,CAAC;YAC3B,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;QACxB,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,QAAQ;QACpB,IAAI,CAAC,IAAI,CAAC,QAAQ;YAAE,OAAO;QAE3B,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC;gBAC1B,eAAe,EAAE,IAAI,CAAC,aAAa;gBACnC,SAAS,EAAE,EAAE,eAAe,EAAE,eAAe,EAAE;aAChD,CAAC,CAAC;YAEH,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,sBAAsB,EAAE,IAAI,EAAE,oBAAoB,CAAC,CAAC;YACpF,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAmB,CAAC;YAE/C,uBAAuB;YACvB,MAAM,OAAO,GACX,CAAC,IAAI,CAAC,GAAG,KAAK,SAAS,IAAI,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC;gBAC1C,CAAC,IAAI,CAAC,OAAO,KAAK,SAAS,IAAI,IAAI,CAAC,OAAO,KAAK,CAAC,CAAC,CAAC;YAErD,IAAI,OAAO,EAAE,CAAC;gBACZ,IAAI,CAAC,MAAM,CAAC,KAAK,CACf,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,EAC7D,2BAA2B,CAC5B,CAAC;gBACF,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;gBAC5C,OAAO;YACT,CAAC;YAED,qBAAqB;YACrB,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;gBACzB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,eAAe,CAAC;YAC5C,CAAC;YAED,mBAAmB;YACnB,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACtC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,YAAY,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,+BAA+B,CAAC,CAAC;gBAEvF,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;oBAC5B,IAAI,GAAG,CAAC,YAAY,KAAK,aAAa;wBAAE,SAAS;oBAEjD,MAAM,IAAI,GAAG,sBAAsB,CAAC,GAAG,CAAC,CAAC;oBACzC,IAAI,CAAC,IAAI;wBAAE,SAAS;oBAEpB,MAAM,QAAQ,GAAG,GAAG,CAAC,YAAY,IAAI,SAAS,CAAC;oBAE/C,yDAAyD;oBACzD,IAAI,GAAG,CAAC,aAAa,EAAE,CAAC;wBACtB,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,GAAG,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;oBACzD,CAAC;oBAED,IAAI,CAAC,MAAM,CAAC,IAAI,CACd,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAClD,yBAAyB,CAC1B,CAAC;oBAEF,IAAI,CAAC,eAAe,EAAE,CAAC;wBACrB,IAAI,EAAE,QAAQ;wBACd,QAAQ,EAAE,QAAQ;wBAClB,OAAO,EAAE,IAAI;wBACb,YAAY,EAAE,GAAG,CAAC,aAAa;wBAC/B,MAAM,EAAE,QAAQ;wBAChB,QAAQ,EAAE;4BACR,SAAS,EAAE,GAAG,CAAC,cAAc,IAAI,IAAI,CAAC,GAAG,EAAE;4BAC3C,QAAQ,EAAE,QAAQ;4BAClB,MAAM,EAAE,QAAQ;yBACjB;qBACF,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,+CAA+C;YAC/C,IAAI,KAAK,YAAY,KAAK,IAAI,KAAK,CAAC,OAAO,KAAK,iBAAiB,EAAE,CAAC;gBAClE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,oCAAoC,CAAC,CAAC;gBACxD,OAAO;YACT,CAAC;YACD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,4BAA4B,CAAC,CAAC;YAChE,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;QAC9C,CAAC;IACH,CAAC;IAEO,WAAW;QACjB,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;IAC9B,CAAC;IAED,gFAAgF;IAExE,KAAK,CAAC,QAAQ,CAAC,QAAgB,EAAE,IAAY,EAAE,SAAiB;QACtE,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,GAAG,CAAC;QAC5E,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC;QAC/C,MAAM,OAAO,GAAG,YAAY,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QAElD,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;QACzC,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,SAAS,CAAC,CAAC;QAE9D,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;gBAC3B,MAAM,EAAE,MAAM;gBACd,OAAO;gBACP,IAAI;gBACJ,MAAM,EAAE,UAAU,CAAC,MAAM;aAC1B,CAAC,CAAC;YACH,YAAY,CAAC,KAAK,CAAC,CAAC;YAEpB,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;YAC9B,IAAI,CAAC,GAAG,CAAC,EAAE;gBAAE,MAAM,IAAI,KAAK,CAAC,QAAQ,GAAG,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC,CAAC;YAC5D,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,YAAY,CAAC,KAAK,CAAC,CAAC;YACpB,IAAI,GAAG,YAAY,KAAK,IAAI,GAAG,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;gBACtD,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;YACrC,CAAC;YACD,MAAM,GAAG,CAAC;QACZ,CAAC;IACH,CAAC;IAED,gFAAgF;IAExE,SAAS,CAAC,MAAqB;QACrC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;IAC/D,CAAC;IAEO,YAAY,CAAC,SAAiB;QACpC,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC;IAClE,CAAC;CACF"}
|
|
1
|
+
{"version":3,"file":"WechatChannel.js","sourceRoot":"","sources":["../../src/channels/WechatChannel.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.test.d.ts","sourceRoot":"","sources":["../../../src/channels/__tests__/registry.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Unit tests for ChannelRegistry.
|
|
3
|
+
*/
|
|
4
|
+
import { describe, it, expect, beforeEach } from "vitest";
|
|
5
|
+
import { ChannelRegistry } from "../registry.js";
|
|
6
|
+
// ============================================================================
|
|
7
|
+
// Minimal mock channel implementation
|
|
8
|
+
// ============================================================================
|
|
9
|
+
function createMockChannel(platformId) {
|
|
10
|
+
let status = "disconnected";
|
|
11
|
+
const messageCbs = [];
|
|
12
|
+
const statusCbs = [];
|
|
13
|
+
return {
|
|
14
|
+
getPlatformId: () => platformId,
|
|
15
|
+
connect: async () => { status = "connected"; },
|
|
16
|
+
disconnect: async () => { status = "disconnected"; },
|
|
17
|
+
send: async (_text, _contextToken, _media) => { },
|
|
18
|
+
onMessage: (cb) => { messageCbs.push(cb); },
|
|
19
|
+
getStatus: () => status,
|
|
20
|
+
getCapabilities: () => ({
|
|
21
|
+
textMessaging: true,
|
|
22
|
+
mediaSharing: false,
|
|
23
|
+
permissionRelay: true,
|
|
24
|
+
richFormatting: false,
|
|
25
|
+
webhooks: false,
|
|
26
|
+
}),
|
|
27
|
+
onStatusChange: (cb) => { statusCbs.push(cb); },
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
// ============================================================================
|
|
31
|
+
// Tests
|
|
32
|
+
// ============================================================================
|
|
33
|
+
describe("ChannelRegistry", () => {
|
|
34
|
+
let registry;
|
|
35
|
+
const mockLogger = { info: () => { }, warn: () => { }, error: () => { }, debug: () => { }, child: () => mockLogger };
|
|
36
|
+
beforeEach(() => {
|
|
37
|
+
registry = new ChannelRegistry();
|
|
38
|
+
});
|
|
39
|
+
describe("register()", () => {
|
|
40
|
+
it("should register a platform factory", () => {
|
|
41
|
+
registry.register("test-platform", (cfg, log) => createMockChannel("test-platform"));
|
|
42
|
+
expect(registry.getRegisteredPlatforms()).toContain("test-platform");
|
|
43
|
+
});
|
|
44
|
+
it("should throw on duplicate registration", () => {
|
|
45
|
+
registry.register("test-platform", () => createMockChannel("test-platform"));
|
|
46
|
+
expect(() => {
|
|
47
|
+
registry.register("test-platform", () => createMockChannel("test-platform"));
|
|
48
|
+
}).toThrow("already registered");
|
|
49
|
+
});
|
|
50
|
+
it("should store platform defaults", () => {
|
|
51
|
+
registry.register("test-platform", () => createMockChannel("test-platform"), {
|
|
52
|
+
enabled: true,
|
|
53
|
+
apiKey: "default-key",
|
|
54
|
+
});
|
|
55
|
+
const defaults = registry.getPlatformDefaults();
|
|
56
|
+
expect(defaults["test-platform"]).toEqual({ enabled: true, apiKey: "default-key" });
|
|
57
|
+
});
|
|
58
|
+
});
|
|
59
|
+
describe("create()", () => {
|
|
60
|
+
it("should return an IChannel instance", () => {
|
|
61
|
+
registry.register("test-platform", (cfg, log) => createMockChannel("test-platform"));
|
|
62
|
+
const channel = registry.create("test-platform", { enabled: true }, mockLogger);
|
|
63
|
+
expect(channel.getPlatformId()).toBe("test-platform");
|
|
64
|
+
expect(channel.getStatus()).toBe("disconnected");
|
|
65
|
+
});
|
|
66
|
+
it("should throw for unregistered platform", () => {
|
|
67
|
+
expect(() => {
|
|
68
|
+
registry.create("nonexistent", {}, mockLogger);
|
|
69
|
+
}).toThrow("unknown platform");
|
|
70
|
+
});
|
|
71
|
+
it("should merge tenant config over defaults", () => {
|
|
72
|
+
registry.register("test-platform", (cfg, log) => {
|
|
73
|
+
expect(cfg.apiKey).toBe("tenant-override-key");
|
|
74
|
+
return createMockChannel("test-platform");
|
|
75
|
+
}, { enabled: false, apiKey: "default-key" });
|
|
76
|
+
registry.create("test-platform", { enabled: true, apiKey: "tenant-override-key" }, mockLogger);
|
|
77
|
+
// expect assertion in factory — if it passes, merge worked
|
|
78
|
+
});
|
|
79
|
+
});
|
|
80
|
+
describe("getRegisteredPlatforms()", () => {
|
|
81
|
+
it("should return empty array when nothing registered", () => {
|
|
82
|
+
expect(registry.getRegisteredPlatforms()).toEqual([]);
|
|
83
|
+
});
|
|
84
|
+
it("should return all registered platform names", () => {
|
|
85
|
+
registry.register("wechat", () => createMockChannel("wechat"));
|
|
86
|
+
registry.register("telegram", () => createMockChannel("telegram"));
|
|
87
|
+
registry.register("discord", () => createMockChannel("discord"));
|
|
88
|
+
expect(registry.getRegisteredPlatforms()).toEqual(["wechat", "telegram", "discord"]);
|
|
89
|
+
});
|
|
90
|
+
});
|
|
91
|
+
describe("getPlatformDefaults()", () => {
|
|
92
|
+
it("should return empty object when nothing registered", () => {
|
|
93
|
+
expect(registry.getPlatformDefaults()).toEqual({});
|
|
94
|
+
});
|
|
95
|
+
it("should return a copy, not reference", () => {
|
|
96
|
+
registry.register("test", () => createMockChannel("test"), { enabled: false });
|
|
97
|
+
const d1 = registry.getPlatformDefaults();
|
|
98
|
+
d1.test.enabled = true;
|
|
99
|
+
const d2 = registry.getPlatformDefaults();
|
|
100
|
+
expect(d2.test.enabled).toBe(false); // unchanged
|
|
101
|
+
});
|
|
102
|
+
});
|
|
103
|
+
});
|
|
104
|
+
//# sourceMappingURL=registry.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.test.js","sourceRoot":"","sources":["../../../src/channels/__tests__/registry.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Built-in platform registration.
|
|
3
|
+
*
|
|
4
|
+
* This file is the ONLY place in the server where platform-specific imports
|
|
5
|
+
* need to exist. Third-party platforms follow the same pattern:
|
|
6
|
+
*
|
|
7
|
+
* import { registry } from '@yungho/noclaw-channel';
|
|
8
|
+
* registry.register('discord', (cfg, log, ctx) => new DiscordChannel(cfg, log, ctx), {
|
|
9
|
+
* enabled: false, botToken: '', ...
|
|
10
|
+
* });
|
|
11
|
+
*/
|
|
12
|
+
export {};
|
|
13
|
+
//# sourceMappingURL=builtin-register.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"builtin-register.d.ts","sourceRoot":"","sources":["../../src/channels/builtin-register.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Built-in platform registration.
|
|
3
|
+
*
|
|
4
|
+
* This file is the ONLY place in the server where platform-specific imports
|
|
5
|
+
* need to exist. Third-party platforms follow the same pattern:
|
|
6
|
+
*
|
|
7
|
+
* import { registry } from '@yungho/noclaw-channel';
|
|
8
|
+
* registry.register('discord', (cfg, log, ctx) => new DiscordChannel(cfg, log, ctx), {
|
|
9
|
+
* enabled: false, botToken: '', ...
|
|
10
|
+
* });
|
|
11
|
+
*/
|
|
12
|
+
import { registry } from './registry.js';
|
|
13
|
+
import { WechatChannel } from './WechatChannel.js';
|
|
14
|
+
import { TelegramChannel } from './TelegramChannel.js';
|
|
15
|
+
registry.register('wechat', (config, logger, context) => {
|
|
16
|
+
const wechatConfig = config;
|
|
17
|
+
return new WechatChannel(wechatConfig, logger, context.persistConfig
|
|
18
|
+
? async (newToken) => {
|
|
19
|
+
await context.persistConfig({ botToken: newToken });
|
|
20
|
+
}
|
|
21
|
+
: undefined);
|
|
22
|
+
}, {
|
|
23
|
+
enabled: false,
|
|
24
|
+
botToken: '',
|
|
25
|
+
baseUrl: 'https://ilinkai.weixin.qq.com',
|
|
26
|
+
permissions: {
|
|
27
|
+
chat: 'all',
|
|
28
|
+
executeTools: true,
|
|
29
|
+
permissionRelay: true,
|
|
30
|
+
adminUsers: [],
|
|
31
|
+
},
|
|
32
|
+
});
|
|
33
|
+
registry.register('telegram', (config, logger) => new TelegramChannel(config, logger), {
|
|
34
|
+
enabled: false,
|
|
35
|
+
botToken: '',
|
|
36
|
+
allowedUsers: [],
|
|
37
|
+
permissions: {
|
|
38
|
+
chat: 'all',
|
|
39
|
+
executeTools: true,
|
|
40
|
+
permissionRelay: true,
|
|
41
|
+
adminUsers: [],
|
|
42
|
+
},
|
|
43
|
+
});
|
|
44
|
+
//# sourceMappingURL=builtin-register.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"builtin-register.js","sourceRoot":"","sources":["../../src/channels/builtin-register.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEvD,QAAQ,CAAC,QAAQ,CACf,QAAQ,EACR,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE;IAC1B,MAAM,YAAY,GAAG,MAAa,CAAC;IACnC,OAAO,IAAI,aAAa,CACtB,YAAY,EACZ,MAAM,EACN,OAAO,CAAC,aAAa;QACnB,CAAC,CAAC,KAAK,EAAE,QAAgB,EAAE,EAAE;YACzB,MAAM,OAAO,CAAC,aAAc,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC;QACvD,CAAC;QACH,CAAC,CAAC,SAAS,CACd,CAAC;AACJ,CAAC,EACD;IACE,OAAO,EAAE,KAAK;IACd,QAAQ,EAAE,EAAE;IACZ,OAAO,EAAE,+BAA+B;IACxC,WAAW,EAAE;QACX,IAAI,EAAE,KAAK;QACX,YAAY,EAAE,IAAI;QAClB,eAAe,EAAE,IAAI;QACrB,UAAU,EAAE,EAAE;KACf;CACF,CACF,CAAC;AAEF,QAAQ,CAAC,QAAQ,CACf,UAAU,EACV,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,CAAC,IAAI,eAAe,CAAC,MAAa,EAAE,MAAM,CAAC,EAC9D;IACE,OAAO,EAAE,KAAK;IACd,QAAQ,EAAE,EAAE;IACZ,YAAY,EAAE,EAAE;IAChB,WAAW,EAAE;QACX,IAAI,EAAE,KAAK;QACX,YAAY,EAAE,IAAI;QAClB,eAAe,EAAE,IAAI;QACrB,UAAU,EAAE,EAAE;KACf;CACF,CACF,CAAC"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Channel Registry
|
|
3
|
+
*
|
|
4
|
+
* Allows chat platform implementations (WeChat, Telegram, Discord, etc.)
|
|
5
|
+
* to register themselves without modifying core server code.
|
|
6
|
+
*
|
|
7
|
+
* Third-party developers: implement IChannel, then call
|
|
8
|
+
* registry.register('your-platform', (config, logger) => new YourChannel(config, logger));
|
|
9
|
+
*/
|
|
10
|
+
import type { IChannel } from '../types.js';
|
|
11
|
+
import type { Logger } from 'pino';
|
|
12
|
+
export type PlatformConfig = Record<string, unknown>;
|
|
13
|
+
export interface ChannelContext {
|
|
14
|
+
/**
|
|
15
|
+
* Persist updated platform config (e.g., a botToken acquired during QR auth).
|
|
16
|
+
* Called by channel implementations when they need to save runtime-generated secrets.
|
|
17
|
+
*/
|
|
18
|
+
persistConfig?: (updated: PlatformConfig) => Promise<void>;
|
|
19
|
+
}
|
|
20
|
+
export type ChannelFactory = (config: PlatformConfig, logger: Logger, context: ChannelContext) => IChannel;
|
|
21
|
+
export declare class ChannelRegistry {
|
|
22
|
+
private entries;
|
|
23
|
+
/**
|
|
24
|
+
* Register a platform channel implementation.
|
|
25
|
+
*
|
|
26
|
+
* @param name - Platform identifier (e.g. "wechat", "discord"). Must be unique.
|
|
27
|
+
* @param factory - Factory function that creates an IChannel instance from config.
|
|
28
|
+
* @param defaults- Default configuration values for this platform (applied when a tenant
|
|
29
|
+
* has not provided explicit overrides).
|
|
30
|
+
* @throws If a platform with the same name is already registered.
|
|
31
|
+
*/
|
|
32
|
+
register(name: string, factory: ChannelFactory, defaults?: PlatformConfig): void;
|
|
33
|
+
/**
|
|
34
|
+
* Create a channel instance for the given platform.
|
|
35
|
+
*
|
|
36
|
+
* @param name - Platform identifier (must have been registered via register()).
|
|
37
|
+
* @param config - Tenant-provided platform configuration (merged over defaults).
|
|
38
|
+
* @param logger - Pino logger instance.
|
|
39
|
+
* @returns An IChannel instance ready to be connected.
|
|
40
|
+
* @throws If the platform is not registered.
|
|
41
|
+
*/
|
|
42
|
+
create(name: string, config: PlatformConfig, logger: Logger, context?: ChannelContext): IChannel;
|
|
43
|
+
/**
|
|
44
|
+
* Get the list of all registered platform names.
|
|
45
|
+
*/
|
|
46
|
+
getRegisteredPlatforms(): string[];
|
|
47
|
+
/**
|
|
48
|
+
* Get default configuration for all registered platforms.
|
|
49
|
+
* Used by ConfigManager when initializing server-wide settings.
|
|
50
|
+
*/
|
|
51
|
+
getPlatformDefaults(): Record<string, PlatformConfig>;
|
|
52
|
+
}
|
|
53
|
+
/** Singleton registry instance used across the server. */
|
|
54
|
+
export declare const registry: ChannelRegistry;
|
|
55
|
+
//# sourceMappingURL=registry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/channels/registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAEnC,MAAM,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAErD,MAAM,WAAW,cAAc;IAC7B;;;OAGG;IACH,aAAa,CAAC,EAAE,CAAC,OAAO,EAAE,cAAc,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAC5D;AAED,MAAM,MAAM,cAAc,GAAG,CAC3B,MAAM,EAAE,cAAc,EACtB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,cAAc,KACpB,QAAQ,CAAC;AAOd,qBAAa,eAAe;IAC1B,OAAO,CAAC,OAAO,CAAoC;IAEnD;;;;;;;;OAQG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,EAAE,QAAQ,GAAE,cAAmB,GAAG,IAAI;IAOpF;;;;;;;;OAQG;IACH,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAE,cAAmB,GAAG,QAAQ;IAYpG;;OAEG;IACH,sBAAsB,IAAI,MAAM,EAAE;IAIlC;;;OAGG;IACH,mBAAmB,IAAI,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC;CAOtD;AAED,0DAA0D;AAC1D,eAAO,MAAM,QAAQ,iBAAwB,CAAC"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Channel Registry
|
|
3
|
+
*
|
|
4
|
+
* Allows chat platform implementations (WeChat, Telegram, Discord, etc.)
|
|
5
|
+
* to register themselves without modifying core server code.
|
|
6
|
+
*
|
|
7
|
+
* Third-party developers: implement IChannel, then call
|
|
8
|
+
* registry.register('your-platform', (config, logger) => new YourChannel(config, logger));
|
|
9
|
+
*/
|
|
10
|
+
export class ChannelRegistry {
|
|
11
|
+
entries = new Map();
|
|
12
|
+
/**
|
|
13
|
+
* Register a platform channel implementation.
|
|
14
|
+
*
|
|
15
|
+
* @param name - Platform identifier (e.g. "wechat", "discord"). Must be unique.
|
|
16
|
+
* @param factory - Factory function that creates an IChannel instance from config.
|
|
17
|
+
* @param defaults- Default configuration values for this platform (applied when a tenant
|
|
18
|
+
* has not provided explicit overrides).
|
|
19
|
+
* @throws If a platform with the same name is already registered.
|
|
20
|
+
*/
|
|
21
|
+
register(name, factory, defaults = {}) {
|
|
22
|
+
if (this.entries.has(name)) {
|
|
23
|
+
throw new Error(`ChannelRegistry: platform "${name}" is already registered`);
|
|
24
|
+
}
|
|
25
|
+
this.entries.set(name, { factory, defaults });
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Create a channel instance for the given platform.
|
|
29
|
+
*
|
|
30
|
+
* @param name - Platform identifier (must have been registered via register()).
|
|
31
|
+
* @param config - Tenant-provided platform configuration (merged over defaults).
|
|
32
|
+
* @param logger - Pino logger instance.
|
|
33
|
+
* @returns An IChannel instance ready to be connected.
|
|
34
|
+
* @throws If the platform is not registered.
|
|
35
|
+
*/
|
|
36
|
+
create(name, config, logger, context = {}) {
|
|
37
|
+
const entry = this.entries.get(name);
|
|
38
|
+
if (!entry) {
|
|
39
|
+
throw new Error(`ChannelRegistry: unknown platform "${name}". ` +
|
|
40
|
+
`Registered platforms: ${[...this.entries.keys()].join(', ') || '(none)'}`);
|
|
41
|
+
}
|
|
42
|
+
const mergedConfig = { ...entry.defaults, ...config };
|
|
43
|
+
return entry.factory(mergedConfig, logger, context);
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Get the list of all registered platform names.
|
|
47
|
+
*/
|
|
48
|
+
getRegisteredPlatforms() {
|
|
49
|
+
return [...this.entries.keys()];
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Get default configuration for all registered platforms.
|
|
53
|
+
* Used by ConfigManager when initializing server-wide settings.
|
|
54
|
+
*/
|
|
55
|
+
getPlatformDefaults() {
|
|
56
|
+
const defaults = {};
|
|
57
|
+
for (const [name, entry] of this.entries) {
|
|
58
|
+
defaults[name] = { ...entry.defaults };
|
|
59
|
+
}
|
|
60
|
+
return defaults;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
/** Singleton registry instance used across the server. */
|
|
64
|
+
export const registry = new ChannelRegistry();
|
|
65
|
+
//# sourceMappingURL=registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/channels/registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AA0BH,MAAM,OAAO,eAAe;IAClB,OAAO,GAAG,IAAI,GAAG,EAAyB,CAAC;IAEnD;;;;;;;;OAQG;IACH,QAAQ,CAAC,IAAY,EAAE,OAAuB,EAAE,WAA2B,EAAE;QAC3E,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YAC3B,MAAM,IAAI,KAAK,CAAC,8BAA8B,IAAI,yBAAyB,CAAC,CAAC;QAC/E,CAAC;QACD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC;IAChD,CAAC;IAED;;;;;;;;OAQG;IACH,MAAM,CAAC,IAAY,EAAE,MAAsB,EAAE,MAAc,EAAE,UAA0B,EAAE;QACvF,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACrC,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,IAAI,KAAK,CACb,sCAAsC,IAAI,KAAK;gBAC/C,yBAAyB,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,QAAQ,EAAE,CAC3E,CAAC;QACJ,CAAC;QACD,MAAM,YAAY,GAAG,EAAE,GAAG,KAAK,CAAC,QAAQ,EAAE,GAAG,MAAM,EAAE,CAAC;QACtD,OAAO,KAAK,CAAC,OAAO,CAAC,YAAY,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;IACtD,CAAC;IAED;;OAEG;IACH,sBAAsB;QACpB,OAAO,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;IAClC,CAAC;IAED;;;OAGG;IACH,mBAAmB;QACjB,MAAM,QAAQ,GAAmC,EAAE,CAAC;QACpD,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACzC,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC;QACzC,CAAC;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC;CACF;AAED,0DAA0D;AAC1D,MAAM,CAAC,MAAM,QAAQ,GAAG,IAAI,eAAe,EAAE,CAAC"}
|
|
@@ -7,11 +7,17 @@ export declare class ConfigManager {
|
|
|
7
7
|
private configPath;
|
|
8
8
|
constructor(configPath?: string);
|
|
9
9
|
/**
|
|
10
|
-
* Load configuration from file
|
|
10
|
+
* Load configuration from file, migrating old format if necessary.
|
|
11
11
|
*/
|
|
12
12
|
private loadConfig;
|
|
13
13
|
/**
|
|
14
|
-
*
|
|
14
|
+
* Migrate config from v0.3.x format (top-level wechat/telegram) to
|
|
15
|
+
* v0.4.x format (platforms map). Idempotent — if already migrated, no-op.
|
|
16
|
+
*/
|
|
17
|
+
private migrateConfig;
|
|
18
|
+
/**
|
|
19
|
+
* Get default configuration — platform defaults come from the registry,
|
|
20
|
+
* so a newly registered platform automatically appears in server defaults.
|
|
15
21
|
*/
|
|
16
22
|
private getDefaultConfig;
|
|
17
23
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConfigManager.d.ts","sourceRoot":"","sources":["../../src/config/ConfigManager.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"ConfigManager.d.ts","sourceRoot":"","sources":["../../src/config/ConfigManager.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAS5C,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,UAAU,CAAS;gBAEf,UAAU,CAAC,EAAE,MAAM;IAK/B;;OAEG;IACH,OAAO,CAAC,UAAU;IAkBlB;;;OAGG;IACH,OAAO,CAAC,aAAa;IA2BrB;;;OAGG;IACH,OAAO,CAAC,gBAAgB;IASxB;;OAEG;IACH,UAAU,CAAC,MAAM,EAAE,aAAa,GAAG,IAAI;IAevC;;OAEG;IACH,SAAS,IAAI,aAAa;IAI1B;;OAEG;IACH,aAAa,IAAI,MAAM;IAIvB;;OAEG;IACH,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,aAAa,CAAC,GAAG,IAAI;IAKnD;;OAEG;IACG,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC;IA4CvC;;OAEG;IACG,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;IAmBlC;;OAEG;IACG,SAAS,IAAI,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,aAAa,CAAA;KAAE,CAAC;CAkBtF"}
|