@barryfan2045/dsh-matrix 0.1.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/LICENSE +21 -0
- package/README.md +286 -0
- package/THIRD_PARTY_NOTICES.md +53 -0
- package/assets/avatars/instance-01.png +0 -0
- package/assets/avatars/instance-02.png +0 -0
- package/assets/avatars/instance-03.png +0 -0
- package/assets/avatars/instance-04.png +0 -0
- package/assets/avatars/instance-05.png +0 -0
- package/assets/avatars/instance-06.png +0 -0
- package/assets/avatars/instance-07.png +0 -0
- package/assets/avatars/instance-08.png +0 -0
- package/assets/avatars/instance-09.png +0 -0
- package/assets/avatars/instance-10.png +0 -0
- package/assets/avatars/instance-11.png +0 -0
- package/assets/avatars/instance-12.png +0 -0
- package/assets/avatars/management.png +0 -0
- package/cordis.patch.yml +13 -0
- package/dist/auth/admin-commands.d.ts +47 -0
- package/dist/auth/admin-commands.d.ts.map +1 -0
- package/dist/auth/admin-commands.js +112 -0
- package/dist/auth/admin-commands.js.map +1 -0
- package/dist/auth/challenge.d.ts +93 -0
- package/dist/auth/challenge.d.ts.map +1 -0
- package/dist/auth/challenge.js +104 -0
- package/dist/auth/challenge.js.map +1 -0
- package/dist/auth/store.d.ts +55 -0
- package/dist/auth/store.d.ts.map +1 -0
- package/dist/auth/store.js +124 -0
- package/dist/auth/store.js.map +1 -0
- package/dist/bridge/agent-commands.d.ts +39 -0
- package/dist/bridge/agent-commands.d.ts.map +1 -0
- package/dist/bridge/agent-commands.js +243 -0
- package/dist/bridge/agent-commands.js.map +1 -0
- package/dist/bridge/attachments-ledger.d.ts +54 -0
- package/dist/bridge/attachments-ledger.d.ts.map +1 -0
- package/dist/bridge/attachments-ledger.js +68 -0
- package/dist/bridge/attachments-ledger.js.map +1 -0
- package/dist/bridge/commands.d.ts +28 -0
- package/dist/bridge/commands.d.ts.map +1 -0
- package/dist/bridge/commands.js +18 -0
- package/dist/bridge/commands.js.map +1 -0
- package/dist/bridge/crypto-health.d.ts +37 -0
- package/dist/bridge/crypto-health.d.ts.map +1 -0
- package/dist/bridge/crypto-health.js +38 -0
- package/dist/bridge/crypto-health.js.map +1 -0
- package/dist/bridge/group-gate.d.ts +38 -0
- package/dist/bridge/group-gate.d.ts.map +1 -0
- package/dist/bridge/group-gate.js +49 -0
- package/dist/bridge/group-gate.js.map +1 -0
- package/dist/bridge/instance-lock.d.ts +10 -0
- package/dist/bridge/instance-lock.d.ts.map +1 -0
- package/dist/bridge/instance-lock.js +82 -0
- package/dist/bridge/instance-lock.js.map +1 -0
- package/dist/bridge/interactions.d.ts +62 -0
- package/dist/bridge/interactions.d.ts.map +1 -0
- package/dist/bridge/interactions.js +237 -0
- package/dist/bridge/interactions.js.map +1 -0
- package/dist/bridge/management-room.d.ts +13 -0
- package/dist/bridge/management-room.d.ts.map +1 -0
- package/dist/bridge/management-room.js +27 -0
- package/dist/bridge/management-room.js.map +1 -0
- package/dist/bridge/multi-project.d.ts +34 -0
- package/dist/bridge/multi-project.d.ts.map +1 -0
- package/dist/bridge/multi-project.js +44 -0
- package/dist/bridge/multi-project.js.map +1 -0
- package/dist/bridge/pipeline.d.ts +151 -0
- package/dist/bridge/pipeline.d.ts.map +1 -0
- package/dist/bridge/pipeline.js +502 -0
- package/dist/bridge/pipeline.js.map +1 -0
- package/dist/bridge/pmctl.d.ts +50 -0
- package/dist/bridge/pmctl.d.ts.map +1 -0
- package/dist/bridge/pmctl.js +272 -0
- package/dist/bridge/pmctl.js.map +1 -0
- package/dist/bridge/power-levels.d.ts +57 -0
- package/dist/bridge/power-levels.d.ts.map +1 -0
- package/dist/bridge/power-levels.js +92 -0
- package/dist/bridge/power-levels.js.map +1 -0
- package/dist/bridge/power-sync.d.ts +64 -0
- package/dist/bridge/power-sync.d.ts.map +1 -0
- package/dist/bridge/power-sync.js +121 -0
- package/dist/bridge/power-sync.js.map +1 -0
- package/dist/bridge/projects.d.ts +97 -0
- package/dist/bridge/projects.d.ts.map +1 -0
- package/dist/bridge/projects.js +288 -0
- package/dist/bridge/projects.js.map +1 -0
- package/dist/bridge/quote-cache.d.ts +38 -0
- package/dist/bridge/quote-cache.d.ts.map +1 -0
- package/dist/bridge/quote-cache.js +56 -0
- package/dist/bridge/quote-cache.js.map +1 -0
- package/dist/bridge/reply.d.ts +31 -0
- package/dist/bridge/reply.d.ts.map +1 -0
- package/dist/bridge/reply.js +122 -0
- package/dist/bridge/reply.js.map +1 -0
- package/dist/bridge/space-identity.d.ts +43 -0
- package/dist/bridge/space-identity.d.ts.map +1 -0
- package/dist/bridge/space-identity.js +92 -0
- package/dist/bridge/space-identity.js.map +1 -0
- package/dist/bridge/space-sync.d.ts +94 -0
- package/dist/bridge/space-sync.d.ts.map +1 -0
- package/dist/bridge/space-sync.js +137 -0
- package/dist/bridge/space-sync.js.map +1 -0
- package/dist/bridge/turn-commands.d.ts +28 -0
- package/dist/bridge/turn-commands.d.ts.map +1 -0
- package/dist/bridge/turn-commands.js +97 -0
- package/dist/bridge/turn-commands.js.map +1 -0
- package/dist/cli/config-store.d.ts +32 -0
- package/dist/cli/config-store.d.ts.map +1 -0
- package/dist/cli/config-store.js +118 -0
- package/dist/cli/config-store.js.map +1 -0
- package/dist/cli/crypto-store.d.ts +42 -0
- package/dist/cli/crypto-store.d.ts.map +1 -0
- package/dist/cli/crypto-store.js +70 -0
- package/dist/cli/crypto-store.js.map +1 -0
- package/dist/cli/device-prune.d.ts +105 -0
- package/dist/cli/device-prune.d.ts.map +1 -0
- package/dist/cli/device-prune.js +163 -0
- package/dist/cli/device-prune.js.map +1 -0
- package/dist/cli/index.d.ts +4 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +584 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/log-filter.d.ts +32 -0
- package/dist/cli/log-filter.d.ts.map +1 -0
- package/dist/cli/log-filter.js +40 -0
- package/dist/cli/log-filter.js.map +1 -0
- package/dist/cli/pnpm-builds.d.ts +32 -0
- package/dist/cli/pnpm-builds.d.ts.map +1 -0
- package/dist/cli/pnpm-builds.js +73 -0
- package/dist/cli/pnpm-builds.js.map +1 -0
- package/dist/cli/profile-patch.d.ts +26 -0
- package/dist/cli/profile-patch.d.ts.map +1 -0
- package/dist/cli/profile-patch.js +56 -0
- package/dist/cli/profile-patch.js.map +1 -0
- package/dist/cli/setup.d.ts +39 -0
- package/dist/cli/setup.d.ts.map +1 -0
- package/dist/cli/setup.js +234 -0
- package/dist/cli/setup.js.map +1 -0
- package/dist/cli/systemd-hint.d.ts +11 -0
- package/dist/cli/systemd-hint.d.ts.map +1 -0
- package/dist/cli/systemd-hint.js +46 -0
- package/dist/cli/systemd-hint.js.map +1 -0
- package/dist/cli/systemd.d.ts +32 -0
- package/dist/cli/systemd.d.ts.map +1 -0
- package/dist/cli/systemd.js +58 -0
- package/dist/cli/systemd.js.map +1 -0
- package/dist/config.d.ts +54 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +107 -0
- package/dist/config.js.map +1 -0
- package/dist/dsh/backend.d.ts +110 -0
- package/dist/dsh/backend.d.ts.map +1 -0
- package/dist/dsh/backend.js +481 -0
- package/dist/dsh/backend.js.map +1 -0
- package/dist/dsh/interactions.d.ts +50 -0
- package/dist/dsh/interactions.d.ts.map +1 -0
- package/dist/dsh/interactions.js +141 -0
- package/dist/dsh/interactions.js.map +1 -0
- package/dist/dsh/stream.d.ts +32 -0
- package/dist/dsh/stream.d.ts.map +1 -0
- package/dist/dsh/stream.js +109 -0
- package/dist/dsh/stream.js.map +1 -0
- package/dist/formatting.d.ts +14 -0
- package/dist/formatting.d.ts.map +1 -0
- package/dist/formatting.js +63 -0
- package/dist/formatting.js.map +1 -0
- package/dist/index.d.ts +8 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +232 -0
- package/dist/index.js.map +1 -0
- package/dist/logger.d.ts +9 -0
- package/dist/logger.d.ts.map +1 -0
- package/dist/logger.js +28 -0
- package/dist/logger.js.map +1 -0
- package/dist/matrix/matrix-events.d.ts +49 -0
- package/dist/matrix/matrix-events.d.ts.map +1 -0
- package/dist/matrix/matrix-events.js +89 -0
- package/dist/matrix/matrix-events.js.map +1 -0
- package/dist/matrix/transport.d.ts +192 -0
- package/dist/matrix/transport.d.ts.map +1 -0
- package/dist/matrix/transport.js +510 -0
- package/dist/matrix/transport.js.map +1 -0
- package/dist/ports/attachments.d.ts +51 -0
- package/dist/ports/attachments.d.ts.map +1 -0
- package/dist/ports/attachments.js +27 -0
- package/dist/ports/attachments.js.map +1 -0
- package/dist/ports/backend.d.ts +159 -0
- package/dist/ports/backend.d.ts.map +1 -0
- package/dist/ports/backend.js +25 -0
- package/dist/ports/backend.js.map +1 -0
- package/dist/ports/interactions.d.ts +65 -0
- package/dist/ports/interactions.d.ts.map +1 -0
- package/dist/ports/interactions.js +15 -0
- package/dist/ports/interactions.js.map +1 -0
- package/dist/ports/streaming.d.ts +45 -0
- package/dist/ports/streaming.d.ts.map +1 -0
- package/dist/ports/streaming.js +23 -0
- package/dist/ports/streaming.js.map +1 -0
- package/dist/ports/transport.d.ts +68 -0
- package/dist/ports/transport.d.ts.map +1 -0
- package/dist/ports/transport.js +2 -0
- package/dist/ports/transport.js.map +1 -0
- package/dist/types.d.ts +53 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/package.json +80 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/logger.d.ts
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Structured logger. Ported from pi-courier src/logger.ts (MIT), flattened
|
|
3
|
+
* to the Logger contract: one physical line per call, 2000-char cap,
|
|
4
|
+
* newlines folded to ⏎ so journalctl/grep stays line-oriented.
|
|
5
|
+
*/
|
|
6
|
+
import type { Logger, LogLevel } from './types.ts';
|
|
7
|
+
export declare function createLogger(threshold?: LogLevel): Logger;
|
|
8
|
+
export declare const silentLogger: Logger;
|
|
9
|
+
//# sourceMappingURL=logger.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAYlD,wBAAgB,YAAY,CAAC,SAAS,GAAE,QAAiB,GAAG,MAAM,CAgBjE;AAED,eAAO,MAAM,YAAY,EAAE,MAA6E,CAAA"}
|
package/dist/logger.js
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
const LEVELS = { debug: 10, info: 20, warn: 30, error: 40 };
|
|
2
|
+
const MAX_LINE = 2000;
|
|
3
|
+
function flatten(value) {
|
|
4
|
+
if (value instanceof Error)
|
|
5
|
+
return value.stack || value.message;
|
|
6
|
+
const str = typeof value === 'string' ? value : String(value);
|
|
7
|
+
return str.replace(/\n/g, ' ⏎ ');
|
|
8
|
+
}
|
|
9
|
+
export function createLogger(threshold = 'info') {
|
|
10
|
+
const min = LEVELS[threshold] ?? LEVELS.info;
|
|
11
|
+
const write = (level, sink, args) => {
|
|
12
|
+
if (LEVELS[level] < min)
|
|
13
|
+
return;
|
|
14
|
+
const head = `[${new Date().toISOString()}] [${level.toUpperCase()}]`;
|
|
15
|
+
const body = args.map(flatten).join(' ');
|
|
16
|
+
let line = body.length > MAX_LINE ? `${body.slice(0, MAX_LINE)}…[truncated]` : body;
|
|
17
|
+
line = `${head} ${line}`;
|
|
18
|
+
sink(line);
|
|
19
|
+
};
|
|
20
|
+
return {
|
|
21
|
+
debug: (...a) => write('debug', (l) => console.error(l), a),
|
|
22
|
+
info: (...a) => write('info', (l) => console.error(l), a),
|
|
23
|
+
warn: (...a) => write('warn', (l) => console.error(l), a),
|
|
24
|
+
error: (...a) => write('error', (l) => console.error(l), a),
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
export const silentLogger = { debug: () => { }, info: () => { }, warn: () => { }, error: () => { } };
|
|
28
|
+
//# sourceMappingURL=logger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"AAOA,MAAM,MAAM,GAA6B,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CAAA;AAErF,MAAM,QAAQ,GAAG,IAAI,CAAA;AAErB,SAAS,OAAO,CAAC,KAAc;IAC7B,IAAI,KAAK,YAAY,KAAK;QAAE,OAAO,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,OAAO,CAAA;IAC/D,MAAM,GAAG,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;IAC7D,OAAO,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;AAClC,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,YAAsB,MAAM;IACvD,MAAM,GAAG,GAAG,MAAM,CAAC,SAAS,CAAC,IAAI,MAAM,CAAC,IAAI,CAAA;IAC5C,MAAM,KAAK,GAAG,CAAC,KAAe,EAAE,IAA4B,EAAE,IAAe,EAAQ,EAAE;QACrF,IAAI,MAAM,CAAC,KAAK,CAAC,GAAG,GAAG;YAAE,OAAM;QAC/B,MAAM,IAAI,GAAG,IAAI,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,CAAC,WAAW,EAAE,GAAG,CAAA;QACrE,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QACxC,IAAI,IAAI,GAAG,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAA;QACnF,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,EAAE,CAAA;QACxB,IAAI,CAAC,IAAI,CAAC,CAAA;IACZ,CAAC,CAAA;IACD,OAAO;QACL,KAAK,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAC3D,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACzD,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACzD,KAAK,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;KAC5D,CAAA;AACH,CAAC;AAED,MAAM,CAAC,MAAM,YAAY,GAAW,EAAE,KAAK,EAAE,GAAG,EAAE,GAAE,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,GAAE,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,GAAE,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,GAAE,CAAC,EAAE,CAAA"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Matrix event translator (T6; deep-module shape ported from pi-courier
|
|
3
|
+
* src/transports/matrix-events.ts + classifyMessageContent): turns one raw
|
|
4
|
+
* (post-decryption) SDK room event into the normalized IncomingMessage —
|
|
5
|
+
* text / media / unsupported — or a skip decision.
|
|
6
|
+
*
|
|
7
|
+
* No SDK types cross this module: the event is read structurally, so tests
|
|
8
|
+
* drive it without a Matrix connection. Downloadable media is NOT fetched
|
|
9
|
+
* here; the transport records a per-mxc hint (encrypted file block +
|
|
10
|
+
* declared mimetype) that its downloadMedia() later consumes (US29).
|
|
11
|
+
*/
|
|
12
|
+
import type { IncomingMessage } from '../types.ts';
|
|
13
|
+
/** matrix-bot-sdk EncryptedFile 的最小结构视图(E2EE 附件解密所需)。 */
|
|
14
|
+
export interface EncryptedFileLike {
|
|
15
|
+
url: string;
|
|
16
|
+
key: {
|
|
17
|
+
k: string;
|
|
18
|
+
alg?: string;
|
|
19
|
+
[k: string]: unknown;
|
|
20
|
+
};
|
|
21
|
+
iv: string;
|
|
22
|
+
hashes: {
|
|
23
|
+
sha256: string;
|
|
24
|
+
};
|
|
25
|
+
v?: string;
|
|
26
|
+
}
|
|
27
|
+
/** What downloadMedia needs to know about one mxc from its source event. */
|
|
28
|
+
export interface MediaHint {
|
|
29
|
+
/** Present for E2EE attachments: the A256GCM key block to decrypt with. */
|
|
30
|
+
file?: EncryptedFileLike;
|
|
31
|
+
/** Declared info.mimetype (authoritative for encrypted downloads). */
|
|
32
|
+
mimeType?: string;
|
|
33
|
+
}
|
|
34
|
+
export interface EventTranslateContext {
|
|
35
|
+
botUserId: string;
|
|
36
|
+
/** origin_server_ts cut for the initial-sync history replay (spike 教训)。 */
|
|
37
|
+
connectedAt: number;
|
|
38
|
+
now: () => number;
|
|
39
|
+
/** Register the per-mxc download hint (media lines only). */
|
|
40
|
+
noteMediaHint?: (mxc: string, hint: MediaHint) => void;
|
|
41
|
+
}
|
|
42
|
+
export interface TranslationResult {
|
|
43
|
+
/** Forward to the bridge when present. */
|
|
44
|
+
message?: IncomingMessage;
|
|
45
|
+
/** Warn-level transport log line (undecrypted / malformed events). */
|
|
46
|
+
warn?: string;
|
|
47
|
+
}
|
|
48
|
+
export declare function translateRoomEvent(ctx: EventTranslateContext, roomId: string, event: unknown): TranslationResult;
|
|
49
|
+
//# sourceMappingURL=matrix-events.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"matrix-events.d.ts","sourceRoot":"","sources":["../../src/matrix/matrix-events.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAIlD,yDAAyD;AACzD,MAAM,WAAW,iBAAiB;IAChC,GAAG,EAAE,MAAM,CAAA;IACX,GAAG,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,CAAA;IACtD,EAAE,EAAE,MAAM,CAAA;IACV,MAAM,EAAE;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,CAAA;IAC1B,CAAC,CAAC,EAAE,MAAM,CAAA;CACX;AAED,4EAA4E;AAC5E,MAAM,WAAW,SAAS;IACxB,2EAA2E;IAC3E,IAAI,CAAC,EAAE,iBAAiB,CAAA;IACxB,sEAAsE;IACtE,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,WAAW,qBAAqB;IACpC,SAAS,EAAE,MAAM,CAAA;IACjB,2EAA2E;IAC3E,WAAW,EAAE,MAAM,CAAA;IACnB,GAAG,EAAE,MAAM,MAAM,CAAA;IACjB,6DAA6D;IAC7D,aAAa,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,KAAK,IAAI,CAAA;CACvD;AAED,MAAM,WAAW,iBAAiB;IAChC,0CAA0C;IAC1C,OAAO,CAAC,EAAE,eAAe,CAAA;IACzB,sEAAsE;IACtE,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AAyBD,wBAAgB,kBAAkB,CAChC,GAAG,EAAE,qBAAqB,EAC1B,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,OAAO,GACb,iBAAiB,CAgFnB"}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import { isMediaMsgtype } from "../ports/attachments.js";
|
|
2
|
+
function asMediaMsgtype(value) {
|
|
3
|
+
return isMediaMsgtype(value) ? value : undefined;
|
|
4
|
+
}
|
|
5
|
+
/** 内容是否带可下载媒体载荷(url 明文或 file 加密块);加密块优先。 */
|
|
6
|
+
function mediaAddress(content) {
|
|
7
|
+
const file = content.file;
|
|
8
|
+
if (file && typeof file === 'object' && typeof file.url === 'string') {
|
|
9
|
+
return { mxc: file.url, file: file };
|
|
10
|
+
}
|
|
11
|
+
if (typeof content.url === 'string' && content.url)
|
|
12
|
+
return { mxc: content.url };
|
|
13
|
+
return undefined;
|
|
14
|
+
}
|
|
15
|
+
export function translateRoomEvent(ctx, roomId, event) {
|
|
16
|
+
if (!event || typeof event !== 'object')
|
|
17
|
+
return {};
|
|
18
|
+
const e = event;
|
|
19
|
+
const type = typeof e.type === 'string' ? e.type : '';
|
|
20
|
+
// E2EE:undecrypted events surface as m.room.encrypted — skip, but NOT silently
|
|
21
|
+
// (US42: every entry path warns). Decrypted ones arrive rewritten to their
|
|
22
|
+
// original type, so the normal paths below read the same in both rooms.
|
|
23
|
+
if (type === 'm.room.encrypted') {
|
|
24
|
+
return { warn: `m.room.encrypted 事件未能解密(无 crypto 或密钥缺失),已跳过(event=${String(e.event_id ?? '?')})` };
|
|
25
|
+
}
|
|
26
|
+
if (type !== 'm.room.message' && type !== 'm.sticker')
|
|
27
|
+
return {};
|
|
28
|
+
const content = e.content;
|
|
29
|
+
if (!content || typeof content !== 'object') {
|
|
30
|
+
return { warn: `房间事件缺少可读取的 content(E2EE 解密失败?),已跳过(event=${String(e.event_id ?? '?')})` };
|
|
31
|
+
}
|
|
32
|
+
// ── envelope filters (identical for text and media lines) ────────────────
|
|
33
|
+
const sender = typeof e.sender === 'string' ? e.sender : '';
|
|
34
|
+
if (ctx.botUserId && sender === ctx.botUserId)
|
|
35
|
+
return {};
|
|
36
|
+
const ts = typeof e.origin_server_ts === 'number' ? e.origin_server_ts : ctx.now();
|
|
37
|
+
if (typeof e.origin_server_ts === 'number' && e.origin_server_ts < ctx.connectedAt)
|
|
38
|
+
return {};
|
|
39
|
+
if (content['m.new_content'])
|
|
40
|
+
return {}; // rich-edit: not a new message
|
|
41
|
+
const eventId = typeof e.event_id === 'string' ? e.event_id : `no-id-${ctx.now()}`;
|
|
42
|
+
const rawMsgtype = typeof content.msgtype === 'string' ? content.msgtype : '';
|
|
43
|
+
const address = mediaAddress(content);
|
|
44
|
+
// m.sticker 是事件类型(内容无 msgtype);带媒体载荷却缺 msgtype 的按
|
|
45
|
+
// sticker 归类(pi-courier classifyMessageContent 同款裁决)。
|
|
46
|
+
const msgtypeName = rawMsgtype || (address ? 'm.sticker' : '');
|
|
47
|
+
const media = asMediaMsgtype(msgtypeName);
|
|
48
|
+
const base = {
|
|
49
|
+
roomId,
|
|
50
|
+
sender,
|
|
51
|
+
isDm: true, // 群策略在 T8 落地;当前桥只服务 DM
|
|
52
|
+
eventId,
|
|
53
|
+
timestamp: ts,
|
|
54
|
+
};
|
|
55
|
+
// ── media path ────────────────────────────────────────────────────────────
|
|
56
|
+
if (media) {
|
|
57
|
+
if (!address) {
|
|
58
|
+
// 声明是媒体却没有可下载地址的畸形事件:给礼貌回执而非静默吞掉。
|
|
59
|
+
return { message: { ...base, text: '', unsupportedMsgtype: msgtypeName } };
|
|
60
|
+
}
|
|
61
|
+
const body = typeof content.body === 'string' ? content.body : '';
|
|
62
|
+
const info = (content.info && typeof content.info === 'object' ? content.info : {});
|
|
63
|
+
const incoming = {
|
|
64
|
+
mxc: address.mxc,
|
|
65
|
+
msgtype: media,
|
|
66
|
+
...(body ? { filename: body } : {}),
|
|
67
|
+
...(typeof info.size === 'number' ? { size: info.size } : {}),
|
|
68
|
+
body,
|
|
69
|
+
};
|
|
70
|
+
ctx.noteMediaHint?.(address.mxc, {
|
|
71
|
+
...(address.file ? { file: address.file } : {}),
|
|
72
|
+
...(typeof info.mimetype === 'string' && info.mimetype ? { mimeType: info.mimetype } : {}),
|
|
73
|
+
});
|
|
74
|
+
// US25:媒体消息不带 caption 进对话 —— 账本/回执由 bridge 附件层负责。
|
|
75
|
+
return { message: { ...base, text: '', media: [incoming] } };
|
|
76
|
+
}
|
|
77
|
+
// ── text path ─────────────────────────────────────────────────────────────
|
|
78
|
+
if (msgtypeName === 'm.notice')
|
|
79
|
+
return {}; // 刻意的静默:其他 bot 的 notice
|
|
80
|
+
if (msgtypeName === 'm.text' || msgtypeName === 'm.emote') {
|
|
81
|
+
const body = typeof content.body === 'string' ? content.body.trim() : '';
|
|
82
|
+
if (!body)
|
|
83
|
+
return {};
|
|
84
|
+
return { message: { ...base, text: body } };
|
|
85
|
+
}
|
|
86
|
+
// ── anything else: name the msgtype so the bridge can receipt politely ───
|
|
87
|
+
return { message: { ...base, text: '', unsupportedMsgtype: msgtypeName || '(unknown)' } };
|
|
88
|
+
}
|
|
89
|
+
//# sourceMappingURL=matrix-events.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"matrix-events.js","sourceRoot":"","sources":["../../src/matrix/matrix-events.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Matrix transport: implements the Transport port over matrix-bot-sdk.
|
|
3
|
+
* Ported essentials from pi-courier src/transports/matrix.ts + matrix-utils.ts
|
|
4
|
+
* (MIT), with the spike-verified fixes (docs §7, §9):
|
|
5
|
+
* - login with password → cache user_id (getUserId() is undefined pre-sync)
|
|
6
|
+
* - skip history replayed by the initial sync via an origin_server_ts cut
|
|
7
|
+
* - skip edits (m.new_content), notices, empty bodies, our own messages
|
|
8
|
+
*
|
|
9
|
+
* The SDK surface is behind a factory so seam tests inject a fake client.
|
|
10
|
+
*/
|
|
11
|
+
import { SimpleFsStorageProvider } from 'matrix-bot-sdk';
|
|
12
|
+
import type { IncomingMessage, Logger } from '../types.ts';
|
|
13
|
+
import type { MediaDownload } from '../ports/attachments.ts';
|
|
14
|
+
import type { Transport } from '../ports/transport.ts';
|
|
15
|
+
import { type EncryptedFileLike } from './matrix-events.ts';
|
|
16
|
+
import { type CryptoHealth } from '../bridge/crypto-health.ts';
|
|
17
|
+
export type { EncryptedFileLike } from './matrix-events.ts';
|
|
18
|
+
/**
|
|
19
|
+
* T14:我们从 SDK 的 crypto 存储提供者身上只读一样东西 —— 设备身份。
|
|
20
|
+
* 存储里的 deviceId 必须与"登录进去的那个设备"一致(见 start() 注释)。
|
|
21
|
+
*/
|
|
22
|
+
export interface CryptoStoreLike {
|
|
23
|
+
getDeviceId?(): Promise<string | null> | string | null;
|
|
24
|
+
}
|
|
25
|
+
/** Providers bundle passed to the SDK client factory (undefined = plaintext / memory). */
|
|
26
|
+
export interface ClientProviders {
|
|
27
|
+
storage?: SimpleFsStorageProvider;
|
|
28
|
+
crypto?: CryptoStoreLike;
|
|
29
|
+
}
|
|
30
|
+
/** Minimal matrix-bot-sdk shape we depend on (real or fake). */
|
|
31
|
+
export interface SdkClient {
|
|
32
|
+
on(event: string, handler: (...args: any[]) => void): void;
|
|
33
|
+
start(): Promise<void> | void;
|
|
34
|
+
stop(): void;
|
|
35
|
+
sendMessage(roomId: string, content: Record<string, unknown>): Promise<string>;
|
|
36
|
+
/** T8: member-count fact for group detection (absent = never group). */
|
|
37
|
+
getJoinedRoomMembers?: (roomId: string) => Promise<string[]>;
|
|
38
|
+
/** T8: bot MXID on the accessToken path (login response is the other source). */
|
|
39
|
+
getUserId?: () => Promise<string> | string;
|
|
40
|
+
/** T14: access_token 到底属于哪个设备(设备身份分叉体检用)。 */
|
|
41
|
+
getWhoAmI?: () => Promise<{
|
|
42
|
+
device_id?: string;
|
|
43
|
+
}> | {
|
|
44
|
+
device_id?: string;
|
|
45
|
+
};
|
|
46
|
+
/** T6 media download (plaintext bytes; decryption is ours via crypto). */
|
|
47
|
+
downloadContent?(mxcUrl: string, allowRemote?: boolean): Promise<{
|
|
48
|
+
data: Buffer;
|
|
49
|
+
contentType: string;
|
|
50
|
+
}>;
|
|
51
|
+
/** Present only when E2EE crypto was wired at start(). */
|
|
52
|
+
crypto?: {
|
|
53
|
+
decryptMedia(file: EncryptedFileLike): Promise<Buffer>;
|
|
54
|
+
};
|
|
55
|
+
createRoom(options: Record<string, unknown>): Promise<string>;
|
|
56
|
+
inviteUser(userId: string, roomId: string): Promise<unknown>;
|
|
57
|
+
sendStateEvent(roomId: string, type: string, stateKey: string, content: unknown): Promise<string>;
|
|
58
|
+
/** T12: 读状态事件(权限等级要读 m.room.power_levels 才能只记真实提升)。 */
|
|
59
|
+
getRoomStateEvent(roomId: string, type: string, stateKey: string): Promise<Record<string, unknown>>;
|
|
60
|
+
/** T12: 上传内容拿 mxc URI(头像要用)。 */
|
|
61
|
+
uploadContent(data: Buffer, contentType: string, filename?: string): Promise<string>;
|
|
62
|
+
setUserPowerLevel(userId: string, roomId: string, newLevel: number): Promise<unknown>;
|
|
63
|
+
}
|
|
64
|
+
export interface MatrixTransportOptions {
|
|
65
|
+
homeserver: string;
|
|
66
|
+
username?: string;
|
|
67
|
+
password?: string;
|
|
68
|
+
accessToken?: string;
|
|
69
|
+
/** E2EE on by default (matrix-bot-sdk's device identity persists in cryptoPath). */
|
|
70
|
+
encryption?: boolean;
|
|
71
|
+
/** Durable sync-token file (avoids full resync + history replay on restart). */
|
|
72
|
+
storePath?: string;
|
|
73
|
+
/** Durable E2EE device/keys directory. */
|
|
74
|
+
cryptoPath?: string;
|
|
75
|
+
/** Injected for tests; defaults to real fetch / matrix-bot-sdk client. */
|
|
76
|
+
fetchImpl?: typeof fetch;
|
|
77
|
+
clientFactory?: (homeserver: string, accessToken: string, providers: ClientProviders) => SdkClient;
|
|
78
|
+
now?: () => number;
|
|
79
|
+
/** T8: member-count cache TTL per room (default 60s; keeps hot path API-free). */
|
|
80
|
+
memberTtlMs?: number;
|
|
81
|
+
/** T13:注入解密健康观测(测试用);缺省按 logger 自建。 */
|
|
82
|
+
cryptoHealth?: CryptoHealth;
|
|
83
|
+
}
|
|
84
|
+
/** T8 defaults: room-member facts are cached, >2 members means a group. */
|
|
85
|
+
export declare const MEMBER_COUNT_TTL_MS = 60000;
|
|
86
|
+
export declare class MatrixTransport implements Transport {
|
|
87
|
+
private readonly opts;
|
|
88
|
+
private readonly handlers;
|
|
89
|
+
private readonly joinHandlers;
|
|
90
|
+
private client;
|
|
91
|
+
private botUserId;
|
|
92
|
+
private accessToken;
|
|
93
|
+
private connectedAt;
|
|
94
|
+
private loggerRef;
|
|
95
|
+
private readonly now;
|
|
96
|
+
/** roomId → member count snapshot with fetch timestamp (T8). */
|
|
97
|
+
private readonly memberCache;
|
|
98
|
+
/** T13:解密健康观测(失败到阈值告警一次,成功则重置);start() 时按 logger 建。 */
|
|
99
|
+
private cryptoHealth;
|
|
100
|
+
/**
|
|
101
|
+
* T6: mxc → 加密附件块 + 事件声明的 mimetype(translate 层填充)。
|
|
102
|
+
* downloadMedia 用它决定是否走 decryptMedia;有界 FIFO,防无界增长。
|
|
103
|
+
*/
|
|
104
|
+
private readonly mediaHints;
|
|
105
|
+
private readonly mediaHintOrder;
|
|
106
|
+
constructor(opts: MatrixTransportOptions);
|
|
107
|
+
/** translate 层登记一条媒体事件的下载提示(E2EE 块 / 声明类型)。 */
|
|
108
|
+
noteMediaHint(mxc: string, hint: {
|
|
109
|
+
file?: EncryptedFileLike;
|
|
110
|
+
mimeType?: string;
|
|
111
|
+
}): void;
|
|
112
|
+
onIncoming(handler: (msg: IncomingMessage) => void | Promise<void>): () => void;
|
|
113
|
+
/** T8: notified when the bot joins a room, with the group verdict. */
|
|
114
|
+
onRoomJoin(handler: (roomId: string, isGroup: boolean) => void): () => void;
|
|
115
|
+
start(logger: Logger): Promise<void>;
|
|
116
|
+
/** 持久化 sync 状态(重启不再全量重放)+ 可选 E2EE(失败降级明文)。 */
|
|
117
|
+
private buildProviders;
|
|
118
|
+
/**
|
|
119
|
+
* T14:校验"crypto 存储的设备"与"access_token 所属设备"是否同一个。
|
|
120
|
+
* 不一致 = 加密房必然收不到消息(见 start() 的长注释),所以必须吼一声。
|
|
121
|
+
* best-effort:任何失败都只是放弃体检,绝不影响启动。
|
|
122
|
+
*/
|
|
123
|
+
private warnOnDeviceMismatch;
|
|
124
|
+
/**
|
|
125
|
+
* T8: group fact = more than two joined members (bot + one other is a DM).
|
|
126
|
+
* Cached per room for memberTtlMs so the hot path never hits the API;
|
|
127
|
+
* any failure defaults to DM (skips the group gate, never the reverse).
|
|
128
|
+
*/
|
|
129
|
+
private resolveIsGroup;
|
|
130
|
+
/**
|
|
131
|
+
* Unified translation: T6 pure event semantics (text/media/unsupported +
|
|
132
|
+
* self/replay/edit guards) THEN T8 group facts (isGroup via member count,
|
|
133
|
+
* mention detect+strip, replyTo). null = skip silently by design.
|
|
134
|
+
*/
|
|
135
|
+
private translate;
|
|
136
|
+
send(roomId: string, text: string): Promise<string>;
|
|
137
|
+
notify(roomId: string, text: string): Promise<string>;
|
|
138
|
+
edit(roomId: string, editId: string, text: string): Promise<void>;
|
|
139
|
+
/**
|
|
140
|
+
* T6: download one mxc payload (E2EE-decrypted when the event carried an
|
|
141
|
+
* encrypted file block, see noteMediaHint). Throws a room-ready message on
|
|
142
|
+
* transport failure, MediaTooLargeError when the REAL bytes exceed the cap.
|
|
143
|
+
*/
|
|
144
|
+
downloadMedia(mxc: string, maxSizeBytes: number): Promise<MediaDownload>;
|
|
145
|
+
stop(): Promise<void>;
|
|
146
|
+
/** 建私有项目/管理房间:名字 + 邀请(preset=private_chat 让受邀者自动可见)。 */
|
|
147
|
+
createRoom(opts: {
|
|
148
|
+
name: string;
|
|
149
|
+
inviteUserId: string;
|
|
150
|
+
}): Promise<string>;
|
|
151
|
+
/**
|
|
152
|
+
* 桥建自己的房间时,把自己的 PL 放到 101(用户仍是 100)。
|
|
153
|
+
* 不这样,Matrix 不允许桥改动"与自己同级"的人 —— `/revoke` 就降不动那些 100 的
|
|
154
|
+
* trusted 用户(M_FORBIDDEN: … equal to your own)。bot MXID 未知时不写。
|
|
155
|
+
*/
|
|
156
|
+
private botPowerOverride;
|
|
157
|
+
/** 设置房间显示名(m.room.name 状态事件,state_key 空串)。 */
|
|
158
|
+
setRoomName(roomId: string, name: string): Promise<void>;
|
|
159
|
+
/** 设置用户权限等级(矩阵 SDK 参数序是 user,room,level)。 */
|
|
160
|
+
setUserPowerLevel(roomId: string, userId: string, level: number): Promise<void>;
|
|
161
|
+
/**
|
|
162
|
+
* T12(US37):读某人在该房间的权限等级。
|
|
163
|
+
*
|
|
164
|
+
* 读 m.room.power_levels 状态事件:先看 users[userId],再回落 users_default,
|
|
165
|
+
* 最后回落 0(没有该状态事件也按 0 算)。提权前必须先读,否则没法区分"这个人
|
|
166
|
+
* 是我们提上来的"还是"管理员自己给的"。
|
|
167
|
+
*/
|
|
168
|
+
getUserPowerLevel(roomId: string, userId: string): Promise<number>;
|
|
169
|
+
/** 独立邀请(SDK createRoom 已带 invite 时不必调,留给管理房补拉人等场景)。 */
|
|
170
|
+
inviteUser(roomId: string, userId: string): Promise<void>;
|
|
171
|
+
/** 建 space:私有 + `creation_content: {type:'m.space'}`(Matrix 的 space 标记)。 */
|
|
172
|
+
createSpace(opts: {
|
|
173
|
+
name: string;
|
|
174
|
+
inviteUserId?: string;
|
|
175
|
+
}): Promise<string>;
|
|
176
|
+
/** 读房间头像;没设过(或读不到)返回 undefined —— 调用方据此决定"补挂"。 */
|
|
177
|
+
getRoomAvatar(roomId: string): Promise<{
|
|
178
|
+
url?: string;
|
|
179
|
+
info?: Record<string, unknown>;
|
|
180
|
+
} | undefined>;
|
|
181
|
+
/** 设房间头像:先传图拿 mxc,再发 m.room.avatar(带 info 让客户端有尺寸可用)。 */
|
|
182
|
+
setRoomAvatar(roomId: string, png: Buffer, info?: Record<string, unknown>): Promise<void>;
|
|
183
|
+
/**
|
|
184
|
+
* 把房间挂进 space:在 **space** 里发 `m.space.child`,state_key 是房间 ID。
|
|
185
|
+
* `via` 缺省从房间 ID 的 server 部分取(加入该 space 的客户端据此找房间)。
|
|
186
|
+
*/
|
|
187
|
+
addRoomToSpace(spaceId: string, roomId: string, via?: string): Promise<void>;
|
|
188
|
+
/** 桥账号 MXID(密码登录时从 login 响应缓存;未知 → undefined)。 */
|
|
189
|
+
getBotUserId(): string | undefined;
|
|
190
|
+
private requireClient;
|
|
191
|
+
}
|
|
192
|
+
//# sourceMappingURL=transport.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transport.d.ts","sourceRoot":"","sources":["../../src/matrix/transport.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,EAAoC,uBAAuB,EAAE,MAAM,gBAAgB,CAAA;AAC1F,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAC1D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAA;AAC5D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAA;AAEtD,OAAO,EAAsB,KAAK,iBAAiB,EAAE,MAAM,oBAAoB,CAAA;AAE/E,OAAO,EAAsB,KAAK,YAAY,EAAE,MAAM,4BAA4B,CAAA;AAElF,YAAY,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAA;AAE3D;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B,WAAW,CAAC,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,MAAM,GAAG,IAAI,CAAA;CACvD;AAED,0FAA0F;AAC1F,MAAM,WAAW,eAAe;IAC9B,OAAO,CAAC,EAAE,uBAAuB,CAAA;IACjC,MAAM,CAAC,EAAE,eAAe,CAAA;CACzB;AAED,gEAAgE;AAChE,MAAM,WAAW,SAAS;IACxB,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI,CAAA;IAC1D,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;IAC7B,IAAI,IAAI,IAAI,CAAA;IACZ,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;IAC9E,wEAAwE;IACxE,oBAAoB,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,EAAE,CAAC,CAAA;IAC5D,iFAAiF;IACjF,SAAS,CAAC,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,GAAG,MAAM,CAAA;IAC1C,6CAA6C;IAC7C,SAAS,CAAC,EAAE,MAAM,OAAO,CAAC;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,GAAG;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;IAC1E,0EAA0E;IAC1E,eAAe,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IACvG,0DAA0D;IAC1D,MAAM,CAAC,EAAE;QAAE,YAAY,CAAC,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;KAAE,CAAA;IAEnE,UAAU,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;IAC7D,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;IAC5D,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;IACjG,uDAAuD;IACvD,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAA;IACnG,gCAAgC;IAChC,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;IACpF,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;CACtF;AAED,MAAM,WAAW,sBAAsB;IACrC,UAAU,EAAE,MAAM,CAAA;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,oFAAoF;IACpF,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,gFAAgF;IAChF,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,0CAA0C;IAC1C,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,0EAA0E;IAC1E,SAAS,CAAC,EAAE,OAAO,KAAK,CAAA;IACxB,aAAa,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,eAAe,KAAK,SAAS,CAAA;IAClG,GAAG,CAAC,EAAE,MAAM,MAAM,CAAA;IAClB,kFAAkF;IAClF,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,uCAAuC;IACvC,YAAY,CAAC,EAAE,YAAY,CAAA;CAC5B;AAED,2EAA2E;AAC3E,eAAO,MAAM,mBAAmB,QAAS,CAAA;AA4BzC,qBAAa,eAAgB,YAAW,SAAS;IAoBnC,OAAO,CAAC,QAAQ,CAAC,IAAI;IAnBjC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAyD;IAClF,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAqD;IAClF,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,SAAS,CAAK;IACtB,OAAO,CAAC,WAAW,CAAQ;IAC3B,OAAO,CAAC,WAAW,CAAI;IACvB,OAAO,CAAC,SAAS,CAAoB;IACrC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAc;IAClC,gEAAgE;IAChE,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAmD;IAC/E,uDAAuD;IACvD,OAAO,CAAC,YAAY,CAAe;IACnC;;;OAGG;IACH,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAqE;IAChG,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAe;gBAEjB,IAAI,EAAE,sBAAsB;IAKzD,+CAA+C;IAC/C,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE;QAAE,IAAI,CAAC,EAAE,iBAAiB,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IAWvF,UAAU,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,eAAe,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,MAAM,IAAI;IAQ/E,sEAAsE;IACtE,UAAU,CAAC,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,KAAK,IAAI,GAAG,MAAM,IAAI;IAQrE,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAyG1C,8CAA8C;YAChC,cAAc;IAoB5B;;;;OAIG;YACW,oBAAoB;IAoBlC;;;;OAIG;YACW,cAAc;IAiB5B;;;;OAIG;YACW,SAAS;IAwCjB,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAInD,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAIrD,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAUvE;;;;OAIG;IACG,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IA4BxE,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAS3B,wDAAwD;IAClD,UAAU,CAAC,IAAI,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,MAAM,CAAC;IAU/E;;;;OAIG;IACH,OAAO,CAAC,gBAAgB;IAKxB,8CAA8C;IACxC,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI9D,6CAA6C;IACvC,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIrF;;;;;;OAMG;IACG,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAexE,uDAAuD;IACjD,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAM/D,4EAA4E;IACtE,WAAW,CAAC,IAAI,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,YAAY,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,MAAM,CAAC;IAWjF,kDAAkD;IAC5C,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,GAAG,SAAS,CAAC;IAgB1G,yDAAyD;IACnD,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAM/F;;;OAGG;IACG,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAMlF,kDAAkD;IAClD,YAAY,IAAI,MAAM,GAAG,SAAS;IAIlC,OAAO,CAAC,aAAa;CAItB"}
|