@love-moon/chat-web 0.17.1 → 0.18.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/CHANGELOG.md +97 -0
- package/README.md +176 -0
- package/dist/cli.js +8 -2
- package/dist/cli.js.map +1 -1
- package/dist/commands/login.js +11 -2
- package/dist/commands/login.js.map +1 -1
- package/dist/core/broker-protocol.d.ts +13 -0
- package/dist/core/broker-protocol.js +29 -0
- package/dist/core/broker-protocol.js.map +1 -0
- package/dist/core/broker-worker.d.ts +1 -0
- package/dist/core/broker-worker.js +105 -0
- package/dist/core/broker-worker.js.map +1 -0
- package/dist/core/errors.d.ts +1 -1
- package/dist/core/errors.js.map +1 -1
- package/dist/core/provider.d.ts +4 -0
- package/dist/core/provider.js.map +1 -1
- package/dist/core/turn-broker.d.ts +12 -0
- package/dist/core/turn-broker.js +331 -0
- package/dist/core/turn-broker.js.map +1 -0
- package/dist/core/turn-queue.d.ts +12 -0
- package/dist/core/turn-queue.js +54 -0
- package/dist/core/turn-queue.js.map +1 -0
- package/dist/index.d.ts +6 -3
- package/dist/index.js +7 -3
- package/dist/index.js.map +1 -1
- package/dist/providers/chatgpt-sse-collector.d.ts +2 -0
- package/dist/providers/chatgpt-sse-collector.js +4 -0
- package/dist/providers/chatgpt-sse-collector.js.map +1 -1
- package/dist/providers/chatgpt.d.ts +1 -0
- package/dist/providers/chatgpt.js +6 -0
- package/dist/providers/chatgpt.js.map +1 -1
- package/dist/providers/gemini.d.ts +1 -0
- package/dist/providers/gemini.js +5 -0
- package/dist/providers/gemini.js.map +1 -1
- package/dist/providers/index.d.ts +1 -0
- package/dist/providers/index.js +3 -0
- package/dist/providers/index.js.map +1 -1
- package/dist/providers/kimi.d.ts +38 -0
- package/dist/providers/kimi.js +270 -0
- package/dist/providers/kimi.js.map +1 -0
- package/dist/queued-session.d.ts +31 -0
- package/dist/queued-session.js +224 -0
- package/dist/queued-session.js.map +1 -0
- package/dist/runtime/accounts.d.ts +13 -0
- package/dist/runtime/accounts.js +86 -0
- package/dist/runtime/accounts.js.map +1 -0
- package/dist/runtime/archive.d.ts +9 -0
- package/dist/runtime/archive.js +54 -0
- package/dist/runtime/archive.js.map +1 -0
- package/dist/runtime/browser-worker.d.ts +14 -0
- package/dist/runtime/browser-worker.js +87 -0
- package/dist/runtime/browser-worker.js.map +1 -0
- package/dist/runtime/cli.d.ts +1 -0
- package/dist/runtime/cli.js +141 -0
- package/dist/runtime/cli.js.map +1 -0
- package/dist/runtime/client.d.ts +84 -0
- package/dist/runtime/client.js +258 -0
- package/dist/runtime/client.js.map +1 -0
- package/dist/runtime/daemon.d.ts +1 -0
- package/dist/runtime/daemon.js +33 -0
- package/dist/runtime/daemon.js.map +1 -0
- package/dist/runtime/engine.d.ts +105 -0
- package/dist/runtime/engine.js +605 -0
- package/dist/runtime/engine.js.map +1 -0
- package/dist/runtime/index.d.ts +7 -0
- package/dist/runtime/index.js +8 -0
- package/dist/runtime/index.js.map +1 -0
- package/dist/runtime/managed.d.ts +7 -0
- package/dist/runtime/managed.js +75 -0
- package/dist/runtime/managed.js.map +1 -0
- package/dist/runtime/process-env.d.ts +2 -0
- package/dist/runtime/process-env.js +5 -0
- package/dist/runtime/process-env.js.map +1 -0
- package/dist/runtime/retention.d.ts +15 -0
- package/dist/runtime/retention.js +62 -0
- package/dist/runtime/retention.js.map +1 -0
- package/dist/runtime/server.d.ts +12 -0
- package/dist/runtime/server.js +246 -0
- package/dist/runtime/server.js.map +1 -0
- package/dist/runtime/sites.d.ts +2 -0
- package/dist/runtime/sites.js +40 -0
- package/dist/runtime/sites.js.map +1 -0
- package/dist/runtime/store.d.ts +17 -0
- package/dist/runtime/store.js +61 -0
- package/dist/runtime/store.js.map +1 -0
- package/dist/runtime/stream-decoder.d.ts +30 -0
- package/dist/runtime/stream-decoder.js +227 -0
- package/dist/runtime/stream-decoder.js.map +1 -0
- package/dist/runtime/types.d.ts +102 -0
- package/dist/runtime/types.js +12 -0
- package/dist/runtime/types.js.map +1 -0
- package/dist/runtime/worker.d.ts +1 -0
- package/dist/runtime/worker.js +422 -0
- package/dist/runtime/worker.js.map +1 -0
- package/dist/session.d.ts +5 -0
- package/dist/session.js +14 -3
- package/dist/session.js.map +1 -1
- package/package.json +2 -2
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"engine.js","sourceRoot":"","sources":["../../src/runtime/engine.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export * from "./types.js";
|
|
2
|
+
export * from "./sites.js";
|
|
3
|
+
export * from "./engine.js";
|
|
4
|
+
export * from "./server.js";
|
|
5
|
+
export * from "./client.js";
|
|
6
|
+
export { ensureChatRuntime } from "./managed.js";
|
|
7
|
+
export { saveRuntimeAccount, readRuntimeAccount, runtimeAccountsDirectory } from "./accounts.js";
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export * from "./types.js";
|
|
2
|
+
export * from "./sites.js";
|
|
3
|
+
export * from "./engine.js";
|
|
4
|
+
export * from "./server.js";
|
|
5
|
+
export * from "./client.js";
|
|
6
|
+
export { ensureChatRuntime } from "./managed.js";
|
|
7
|
+
export { saveRuntimeAccount, readRuntimeAccount, runtimeAccountsDirectory } from "./accounts.js";
|
|
8
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/runtime/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAE5B,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export interface ManagedRuntimeOptions {
|
|
2
|
+
directory?: string;
|
|
3
|
+
executablePath?: string;
|
|
4
|
+
channel?: string;
|
|
5
|
+
}
|
|
6
|
+
/** Start one detached daemon shared by Conductor fire processes. Never submit/retry a turn. */
|
|
7
|
+
export declare function ensureChatRuntime(options?: ManagedRuntimeOptions): Promise<string>;
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import { runtimeProcessEnv } from "./process-env.js";
|
|
2
|
+
import fs from "node:fs";
|
|
3
|
+
import path from "node:path";
|
|
4
|
+
import { spawn } from "node:child_process";
|
|
5
|
+
import { createRequire } from "node:module";
|
|
6
|
+
import { fileURLToPath } from "node:url";
|
|
7
|
+
import { ChatRuntimeClient } from "./client.js";
|
|
8
|
+
import { runtimeDirectory, runtimeSocket } from "./server.js";
|
|
9
|
+
import { RuntimeError } from "./types.js";
|
|
10
|
+
const starting = new Map();
|
|
11
|
+
/** Start one detached daemon shared by Conductor fire processes. Never submit/retry a turn. */
|
|
12
|
+
export async function ensureChatRuntime(options = {}) {
|
|
13
|
+
const directory = options.directory ?? runtimeDirectory();
|
|
14
|
+
const socketPath = runtimeSocket(directory);
|
|
15
|
+
const client = new ChatRuntimeClient(socketPath, 1000);
|
|
16
|
+
const check = async () => {
|
|
17
|
+
const status = await client.call("runtime.status");
|
|
18
|
+
if (status.capabilities?.accountBootstrap !== true || status.capabilities?.queuedStartup !== true || status.capabilities?.durableResume !== true)
|
|
19
|
+
throw new RuntimeError("RUNTIME_UPGRADE_REQUIRED", "Chat runtime needs an upgrade. Stop it with conductor chat-web runtime stop, then retry; running chats are not stopped automatically");
|
|
20
|
+
return socketPath;
|
|
21
|
+
};
|
|
22
|
+
try {
|
|
23
|
+
return await check();
|
|
24
|
+
}
|
|
25
|
+
catch (error) {
|
|
26
|
+
if (!["ENOENT", "ECONNREFUSED"].includes(error.code ?? ""))
|
|
27
|
+
throw error;
|
|
28
|
+
}
|
|
29
|
+
const existing = starting.get(socketPath);
|
|
30
|
+
if (existing)
|
|
31
|
+
return existing;
|
|
32
|
+
const opening = (async () => {
|
|
33
|
+
fs.mkdirSync(directory, { recursive: true, mode: 0o700 });
|
|
34
|
+
fs.chmodSync(directory, 0o700);
|
|
35
|
+
const target = new URL("./daemon.js", import.meta.url);
|
|
36
|
+
const compiled = fs.existsSync(target);
|
|
37
|
+
const worker = fileURLToPath(compiled ? target : new URL("./daemon.ts", import.meta.url));
|
|
38
|
+
const args = compiled ? [] : ["--import", createRequire(import.meta.url).resolve("tsx")];
|
|
39
|
+
const log = path.join(directory, "daemon.log");
|
|
40
|
+
const fd = fs.openSync(log, "a", 0o600);
|
|
41
|
+
let launchError;
|
|
42
|
+
try {
|
|
43
|
+
const child = spawn(process.execPath, [...args, worker, JSON.stringify({ directory, socketPath, executablePath: options.executablePath, channel: options.channel })], {
|
|
44
|
+
detached: true, stdio: ["ignore", fd, fd], env: runtimeProcessEnv(),
|
|
45
|
+
});
|
|
46
|
+
child.on("error", error => { launchError = error; });
|
|
47
|
+
child.unref();
|
|
48
|
+
}
|
|
49
|
+
finally {
|
|
50
|
+
fs.closeSync(fd);
|
|
51
|
+
}
|
|
52
|
+
const deadline = Date.now() + 20_000;
|
|
53
|
+
while (Date.now() < deadline) {
|
|
54
|
+
if (launchError)
|
|
55
|
+
throw launchError;
|
|
56
|
+
try {
|
|
57
|
+
return await check();
|
|
58
|
+
}
|
|
59
|
+
catch (error) {
|
|
60
|
+
if (!["ENOENT", "ECONNREFUSED"].includes(error.code ?? ""))
|
|
61
|
+
throw error;
|
|
62
|
+
}
|
|
63
|
+
await new Promise(resolve => setTimeout(resolve, 100));
|
|
64
|
+
}
|
|
65
|
+
throw new RuntimeError("RUNTIME_START_FAILED", "Chat runtime did not start; inspect " + log);
|
|
66
|
+
})();
|
|
67
|
+
starting.set(socketPath, opening);
|
|
68
|
+
try {
|
|
69
|
+
return await opening;
|
|
70
|
+
}
|
|
71
|
+
finally {
|
|
72
|
+
starting.delete(socketPath);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
//# sourceMappingURL=managed.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"managed.js","sourceRoot":"","sources":["../../src/runtime/managed.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/** Shared runtimes and browser workers must not retain a fire task's identity. */
|
|
2
|
+
export function runtimeProcessEnv(source = process.env) {
|
|
3
|
+
return Object.fromEntries(Object.entries(source).filter(([key]) => !/^CONDUCTOR_/i.test(key)));
|
|
4
|
+
}
|
|
5
|
+
//# sourceMappingURL=process-env.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"process-env.js","sourceRoot":"","sources":["../../src/runtime/process-env.ts"],"names":[],"mappings":"AAAA,kFAAkF;AAClF,MAAM,UAAU,iBAAiB,CAAC,SAA4B,OAAO,CAAC,GAAG;IACvE,OAAO,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACjG,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { Conversation, RuntimeState } from "./types.js";
|
|
2
|
+
export declare const retentionPolicy: Readonly<{
|
|
3
|
+
maxConversations: 256;
|
|
4
|
+
maxClosedConversations: 32;
|
|
5
|
+
maxTurns: 4096;
|
|
6
|
+
closedTtlMs: number;
|
|
7
|
+
openIdleTtlMs: number;
|
|
8
|
+
terminalTtlMs: number;
|
|
9
|
+
resultGraceMs: 60000;
|
|
10
|
+
}>;
|
|
11
|
+
/** Runs inside the store transaction. Never collect work owned by a live operation. */
|
|
12
|
+
export declare function pruneRuntimeState(state: RuntimeState, protectedChats: Set<string>, protectedTurns: Set<string>, reserve?: {
|
|
13
|
+
conversations?: number;
|
|
14
|
+
turns?: number;
|
|
15
|
+
}, now?: number): Conversation[];
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { isTerminal } from "./types.js";
|
|
2
|
+
const DAY = 86_400_000;
|
|
3
|
+
export const retentionPolicy = Object.freeze({
|
|
4
|
+
maxConversations: 256, maxClosedConversations: 32, maxTurns: 4096,
|
|
5
|
+
closedTtlMs: 7 * DAY, openIdleTtlMs: 7 * DAY, terminalTtlMs: 7 * DAY, resultGraceMs: 60_000,
|
|
6
|
+
});
|
|
7
|
+
const time = (value, fallback) => {
|
|
8
|
+
const parsed = Date.parse(value ?? "");
|
|
9
|
+
return Number.isFinite(parsed) ? parsed : fallback;
|
|
10
|
+
};
|
|
11
|
+
/** Runs inside the store transaction. Never collect work owned by a live operation. */
|
|
12
|
+
export function pruneRuntimeState(state, protectedChats, protectedTurns, reserve = {}, now = Date.now()) {
|
|
13
|
+
const removed = [];
|
|
14
|
+
const byChat = new Map();
|
|
15
|
+
for (const turn of Object.values(state.turns)) {
|
|
16
|
+
const turns = byChat.get(turn.conversationId) ?? [];
|
|
17
|
+
turns.push(turn);
|
|
18
|
+
byChat.set(turn.conversationId, turns);
|
|
19
|
+
}
|
|
20
|
+
const closed = Object.values(state.conversations).filter(chat => chat.closed && !chat.needsReview && !protectedChats.has(chat.id) &&
|
|
21
|
+
!(byChat.get(chat.id) ?? []).some(turn => !isTerminal(turn.status) || protectedTurns.has(turn.id)))
|
|
22
|
+
.sort((a, b) => time(a.closedAt, now) - time(b.closedAt, now));
|
|
23
|
+
let conversationCount = Object.keys(state.conversations).length;
|
|
24
|
+
let closedCount = closed.length;
|
|
25
|
+
for (const chat of closed) {
|
|
26
|
+
if (now - time(chat.closedAt, now) < retentionPolicy.closedTtlMs &&
|
|
27
|
+
closedCount <= retentionPolicy.maxClosedConversations && conversationCount + (reserve.conversations ?? 0) <= retentionPolicy.maxConversations)
|
|
28
|
+
continue;
|
|
29
|
+
delete state.conversations[chat.id];
|
|
30
|
+
for (const turn of byChat.get(chat.id) ?? [])
|
|
31
|
+
delete state.turns[turn.id];
|
|
32
|
+
removed.push(chat);
|
|
33
|
+
conversationCount--;
|
|
34
|
+
closedCount--;
|
|
35
|
+
}
|
|
36
|
+
for (const chat of Object.values(state.conversations)) {
|
|
37
|
+
if (chat.closed || chat.needsReview || protectedChats.has(chat.id) ||
|
|
38
|
+
now - time(chat.lastActivityAt, time(chat.createdAt, now)) < retentionPolicy.openIdleTtlMs ||
|
|
39
|
+
(byChat.get(chat.id) ?? []).some(turn => !isTerminal(turn.status) || protectedTurns.has(turn.id)))
|
|
40
|
+
continue;
|
|
41
|
+
delete state.conversations[chat.id];
|
|
42
|
+
for (const turn of byChat.get(chat.id) ?? [])
|
|
43
|
+
delete state.turns[turn.id];
|
|
44
|
+
removed.push(chat);
|
|
45
|
+
}
|
|
46
|
+
const candidates = Object.values(state.turns).filter(turn => isTerminal(turn.status) && (turn.status !== "uncertain" || !state.conversations[turn.conversationId]?.needsReview) && !protectedTurns.has(turn.id))
|
|
47
|
+
.map(turn => ({ turn, finished: time(turn.events.at(-1)?.at, time(turn.createdAt, now)) }))
|
|
48
|
+
.filter(entry => now - entry.finished >= retentionPolicy.resultGraceMs)
|
|
49
|
+
.sort((a, b) => a.finished - b.finished);
|
|
50
|
+
let turnCount = Object.keys(state.turns).length;
|
|
51
|
+
// Drop a batch under pressure rather than running into the limit after every turn.
|
|
52
|
+
const pressured = turnCount + (reserve.turns ?? 0) > retentionPolicy.maxTurns;
|
|
53
|
+
const target = pressured ? Math.floor(retentionPolicy.maxTurns * 0.75) : retentionPolicy.maxTurns;
|
|
54
|
+
for (const { turn, finished } of candidates) {
|
|
55
|
+
if (now - finished < retentionPolicy.terminalTtlMs && turnCount + (reserve.turns ?? 0) <= target)
|
|
56
|
+
continue;
|
|
57
|
+
delete state.turns[turn.id];
|
|
58
|
+
turnCount--;
|
|
59
|
+
}
|
|
60
|
+
return removed;
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=retention.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"retention.js","sourceRoot":"","sources":["../../src/runtime/retention.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAExC,MAAM,GAAG,GAAG,UAAU,CAAC;AACvB,MAAM,CAAC,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,CAAC;IAC3C,gBAAgB,EAAE,GAAG,EAAE,sBAAsB,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI;IACjE,WAAW,EAAE,CAAC,GAAG,GAAG,EAAE,aAAa,EAAE,CAAC,GAAG,GAAG,EAAE,aAAa,EAAE,CAAC,GAAG,GAAG,EAAE,aAAa,EAAE,MAAM;CAC5F,CAAC,CAAC;AACH,MAAM,IAAI,GAAG,CAAC,KAAyB,EAAE,QAAgB,EAAE,EAAE;IAC3D,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;IACvC,OAAO,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC;AACrD,CAAC,CAAC;AAEF,uFAAuF;AACvF,MAAM,UAAU,iBAAiB,CAAC,KAAmB,EAAE,cAA2B,EAAE,cAA2B,EAC7G,UAAsD,EAAE,EAAE,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE;IAC1E,MAAM,OAAO,GAAmB,EAAE,CAAC;IACnC,MAAM,MAAM,GAAG,IAAI,GAAG,EAAkB,CAAC;IACzC,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;QAC9C,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;QACpD,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;IAC3D,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;QAC/H,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;SAClG,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC;IACjE,IAAI,iBAAiB,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,MAAM,CAAC;IAChE,IAAI,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC;IAChC,KAAK,MAAM,IAAI,IAAI,MAAM,EAAE,CAAC;QAC1B,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,GAAG,eAAe,CAAC,WAAW;YAC9D,WAAW,IAAI,eAAe,CAAC,sBAAsB,IAAI,iBAAiB,GAAG,CAAC,OAAO,CAAC,aAAa,IAAI,CAAC,CAAC,IAAI,eAAe,CAAC,gBAAgB;YAAE,SAAS;QAC1J,OAAO,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACpC,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE;YAAE,OAAO,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC1E,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAAC,iBAAiB,EAAE,CAAC;QAAC,WAAW,EAAE,CAAC;IACzD,CAAC;IACD,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,EAAE,CAAC;QACtD,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,WAAW,IAAI,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YAChE,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC,GAAG,eAAe,CAAC,aAAa;YAC1F,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAAE,SAAS;QAC9G,OAAO,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACpC,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE;YAAE,OAAO,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC1E,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACrB,CAAC;IACD,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,KAAK,WAAW,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE,WAAW,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;SAC7M,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;SAC1F,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,GAAG,KAAK,CAAC,QAAQ,IAAI,eAAe,CAAC,aAAa,CAAC;SACtE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC;IAC3C,IAAI,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC;IAChD,mFAAmF;IACnF,MAAM,SAAS,GAAG,SAAS,GAAG,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC,CAAC,GAAG,eAAe,CAAC,QAAQ,CAAC;IAC9E,MAAM,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,QAAQ,CAAC;IAClG,KAAK,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,UAAU,EAAE,CAAC;QAC5C,IAAI,GAAG,GAAG,QAAQ,GAAG,eAAe,CAAC,aAAa,IAAI,SAAS,GAAG,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC,CAAC,IAAI,MAAM;YAAE,SAAS;QAC3G,OAAO,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAAC,SAAS,EAAE,CAAC;IAC3C,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { ChatRuntime, type RuntimeOptions } from "./engine.js";
|
|
2
|
+
export declare function runtimeDirectory(): string;
|
|
3
|
+
export declare function runtimeSocket(directory?: string): string;
|
|
4
|
+
export declare function startRuntimeServer(options: RuntimeOptions & {
|
|
5
|
+
socketPath?: string;
|
|
6
|
+
}): Promise<{
|
|
7
|
+
runtime: ChatRuntime;
|
|
8
|
+
socketPath: string;
|
|
9
|
+
close: () => Promise<void>;
|
|
10
|
+
closed: Promise<void>;
|
|
11
|
+
readonly lastActivity: number;
|
|
12
|
+
}>;
|
|
@@ -0,0 +1,246 @@
|
|
|
1
|
+
import http from "node:http";
|
|
2
|
+
import net from "node:net";
|
|
3
|
+
import fs from "node:fs/promises";
|
|
4
|
+
import path from "node:path";
|
|
5
|
+
import { randomUUID, createHash } from "node:crypto";
|
|
6
|
+
import { rootDir } from "../core/paths.js";
|
|
7
|
+
import { ChatRuntime } from "./engine.js";
|
|
8
|
+
import { isTerminal, RuntimeError } from "./types.js";
|
|
9
|
+
export function runtimeDirectory() { return path.join(rootDir(), "runtime"); }
|
|
10
|
+
export function runtimeSocket(directory = runtimeDirectory()) {
|
|
11
|
+
return process.env.CHAT_WEB_RUNTIME_SOCKET ?? (process.platform === "win32"
|
|
12
|
+
? "\\\\.\\pipe\\chat-web-" + createHash("sha256").update(directory).digest("hex").slice(0, 16)
|
|
13
|
+
: path.join(directory, "runtime.sock"));
|
|
14
|
+
}
|
|
15
|
+
async function acquireLock(directory) {
|
|
16
|
+
await fs.mkdir(directory, { recursive: true, mode: 0o700 });
|
|
17
|
+
await fs.chmod(directory, 0o700);
|
|
18
|
+
const file = path.join(directory, "runtime.lock");
|
|
19
|
+
const token = randomUUID();
|
|
20
|
+
for (let attempt = 0; attempt < 2; attempt++) {
|
|
21
|
+
try {
|
|
22
|
+
const handle = await fs.open(file, "wx", 0o600);
|
|
23
|
+
try {
|
|
24
|
+
await handle.writeFile(JSON.stringify({ pid: process.pid, token }));
|
|
25
|
+
}
|
|
26
|
+
finally {
|
|
27
|
+
await handle.close();
|
|
28
|
+
}
|
|
29
|
+
return async () => {
|
|
30
|
+
const owner = JSON.parse(await fs.readFile(file, "utf8").catch(() => "{}"));
|
|
31
|
+
if (owner.token === token)
|
|
32
|
+
await fs.unlink(file);
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
catch (error) {
|
|
36
|
+
if (error.code !== "EEXIST")
|
|
37
|
+
throw error;
|
|
38
|
+
const owner = JSON.parse(await fs.readFile(file, "utf8").catch(() => "{}"));
|
|
39
|
+
if (!Number.isInteger(owner.pid))
|
|
40
|
+
throw new RuntimeError("RUNTIME_LOCKED", "Runtime lock is incomplete; inspect it before restarting");
|
|
41
|
+
try {
|
|
42
|
+
process.kill(owner.pid, 0);
|
|
43
|
+
}
|
|
44
|
+
catch (error) {
|
|
45
|
+
if (error.code === "ESRCH") {
|
|
46
|
+
await fs.unlink(file);
|
|
47
|
+
continue;
|
|
48
|
+
}
|
|
49
|
+
throw error;
|
|
50
|
+
}
|
|
51
|
+
throw new RuntimeError("RUNTIME_LOCKED", "Another runtime owns this state directory");
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
throw new RuntimeError("RUNTIME_LOCKED", "Unable to acquire runtime ownership");
|
|
55
|
+
}
|
|
56
|
+
export async function startRuntimeServer(options) {
|
|
57
|
+
const socketPath = options.socketPath ?? runtimeSocket(options.directory);
|
|
58
|
+
const unlock = await acquireLock(options.directory);
|
|
59
|
+
let runtime;
|
|
60
|
+
let stop;
|
|
61
|
+
let lastActivity = Date.now();
|
|
62
|
+
let resolveClosed;
|
|
63
|
+
const closed = new Promise((resolve) => { resolveClosed = resolve; });
|
|
64
|
+
const server = http.createServer((request, response) => {
|
|
65
|
+
void handle(request, response).catch((error) => {
|
|
66
|
+
if (response.headersSent) {
|
|
67
|
+
response.destroy();
|
|
68
|
+
return;
|
|
69
|
+
}
|
|
70
|
+
response.writeHead(400, { "content-type": "application/json" });
|
|
71
|
+
response.end(JSON.stringify({ error: { code: error.code ?? "INVALID_REQUEST", message: String(error.message ?? error).slice(0, 1000) } }));
|
|
72
|
+
});
|
|
73
|
+
});
|
|
74
|
+
const close = () => stop ??= (async () => {
|
|
75
|
+
try {
|
|
76
|
+
await runtime?.shutdown();
|
|
77
|
+
}
|
|
78
|
+
finally {
|
|
79
|
+
try {
|
|
80
|
+
server.closeAllConnections();
|
|
81
|
+
await new Promise((resolve) => server.close(() => resolve()));
|
|
82
|
+
if (process.platform !== "win32")
|
|
83
|
+
await fs.unlink(socketPath).catch(() => undefined);
|
|
84
|
+
}
|
|
85
|
+
finally {
|
|
86
|
+
await unlock();
|
|
87
|
+
resolveClosed();
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
})();
|
|
91
|
+
async function handle(request, response) {
|
|
92
|
+
lastActivity = Date.now();
|
|
93
|
+
const api = runtime;
|
|
94
|
+
const url = new URL(request.url ?? "/", "http://localhost");
|
|
95
|
+
if (request.method === "GET" && url.pathname === "/events") {
|
|
96
|
+
const id = url.searchParams.get("turnId") ?? "";
|
|
97
|
+
const after = Number(url.searchParams.get("after") ?? 0);
|
|
98
|
+
const history = api.history(id, after);
|
|
99
|
+
const turn = api.getTurn(id);
|
|
100
|
+
if (after > (turn.events.at(-1)?.seq ?? 0))
|
|
101
|
+
throw new RuntimeError("INVALID_PARAMS", "Sequence is ahead of this turn");
|
|
102
|
+
response.writeHead(200, { "content-type": "application/x-ndjson", "cache-control": "no-store" });
|
|
103
|
+
let last = after;
|
|
104
|
+
let queuedBytes = 0;
|
|
105
|
+
let output = Promise.resolve();
|
|
106
|
+
let unsubscribe = () => { };
|
|
107
|
+
const write = (event) => {
|
|
108
|
+
if (event.seq <= last || response.destroyed || response.writableEnded)
|
|
109
|
+
return;
|
|
110
|
+
last = event.seq;
|
|
111
|
+
const line = JSON.stringify(event) + "\n";
|
|
112
|
+
queuedBytes += Buffer.byteLength(line);
|
|
113
|
+
if (queuedBytes > 4_000_000) {
|
|
114
|
+
response.destroy();
|
|
115
|
+
return;
|
|
116
|
+
}
|
|
117
|
+
output = output.then(async () => {
|
|
118
|
+
if (response.destroyed || response.writableEnded)
|
|
119
|
+
return;
|
|
120
|
+
if (!response.write(line))
|
|
121
|
+
await new Promise((resolve) => {
|
|
122
|
+
const done = () => { response.off("drain", done); response.off("close", done); resolve(); };
|
|
123
|
+
response.once("drain", done);
|
|
124
|
+
response.once("close", done);
|
|
125
|
+
});
|
|
126
|
+
if (isTerminal(event.type)) {
|
|
127
|
+
unsubscribe();
|
|
128
|
+
response.end();
|
|
129
|
+
}
|
|
130
|
+
}).finally(() => { queuedBytes -= Buffer.byteLength(line); });
|
|
131
|
+
void output.catch(() => response.destroy());
|
|
132
|
+
};
|
|
133
|
+
unsubscribe = api.subscribe(id, write);
|
|
134
|
+
response.on("close", () => unsubscribe());
|
|
135
|
+
for (const event of history)
|
|
136
|
+
write(event);
|
|
137
|
+
if (isTerminal(turn.status)) {
|
|
138
|
+
unsubscribe();
|
|
139
|
+
void output.then(() => response.end());
|
|
140
|
+
}
|
|
141
|
+
return;
|
|
142
|
+
}
|
|
143
|
+
if (request.method !== "POST" || url.pathname !== "/rpc") {
|
|
144
|
+
response.writeHead(404);
|
|
145
|
+
response.end();
|
|
146
|
+
return;
|
|
147
|
+
}
|
|
148
|
+
let body = "";
|
|
149
|
+
request.setEncoding("utf8");
|
|
150
|
+
for await (const chunk of request) {
|
|
151
|
+
body += chunk.toString("utf8");
|
|
152
|
+
if (Buffer.byteLength(body) > 1_000_000)
|
|
153
|
+
throw new RuntimeError("INVALID_REQUEST", "Request body exceeds limit");
|
|
154
|
+
}
|
|
155
|
+
const input = JSON.parse(body);
|
|
156
|
+
if (input.jsonrpc !== "2.0" || typeof input.method !== "string" || (input.params !== undefined &&
|
|
157
|
+
(!input.params || typeof input.params !== "object" || Array.isArray(input.params))))
|
|
158
|
+
throw new RuntimeError("INVALID_REQUEST", "Invalid JSON RPC request");
|
|
159
|
+
const params = input.params ?? {};
|
|
160
|
+
let result;
|
|
161
|
+
try {
|
|
162
|
+
switch (input.method) {
|
|
163
|
+
case "runtime.status":
|
|
164
|
+
result = api.status();
|
|
165
|
+
break;
|
|
166
|
+
case "runtime.stop":
|
|
167
|
+
result = { stopping: true };
|
|
168
|
+
break;
|
|
169
|
+
case "conversations.create":
|
|
170
|
+
result = await api.create(params);
|
|
171
|
+
break;
|
|
172
|
+
case "conversations.list":
|
|
173
|
+
result = api.list();
|
|
174
|
+
break;
|
|
175
|
+
case "conversations.get":
|
|
176
|
+
result = api.get(params.id);
|
|
177
|
+
break;
|
|
178
|
+
case "conversations.resume":
|
|
179
|
+
result = await api.resume(params.id, params);
|
|
180
|
+
break;
|
|
181
|
+
case "conversations.close":
|
|
182
|
+
result = await api.closeConversation(params.id);
|
|
183
|
+
break;
|
|
184
|
+
case "turns.create":
|
|
185
|
+
result = await api.submit(params);
|
|
186
|
+
break;
|
|
187
|
+
case "turns.get":
|
|
188
|
+
result = api.getTurn(params.id);
|
|
189
|
+
break;
|
|
190
|
+
case "turns.cancel":
|
|
191
|
+
result = await api.cancel(params.id);
|
|
192
|
+
break;
|
|
193
|
+
default: throw new RuntimeError("METHOD_NOT_FOUND", "Unknown runtime method");
|
|
194
|
+
}
|
|
195
|
+
if (result && typeof result === "object" && "events" in result)
|
|
196
|
+
result = { ...result, events: undefined };
|
|
197
|
+
response.writeHead(200, { "content-type": "application/json", "cache-control": "no-store" });
|
|
198
|
+
response.end(JSON.stringify({ jsonrpc: "2.0", id: input.id, result }));
|
|
199
|
+
if (input.method === "runtime.stop")
|
|
200
|
+
setImmediate(() => { void close().catch(() => server.closeAllConnections()); });
|
|
201
|
+
}
|
|
202
|
+
catch (error) {
|
|
203
|
+
response.writeHead(200, { "content-type": "application/json", "cache-control": "no-store" });
|
|
204
|
+
response.end(JSON.stringify({ jsonrpc: "2.0", id: input.id,
|
|
205
|
+
error: { code: error.code === "METHOD_NOT_FOUND" ? -32601 : error.code === "INVALID_PARAMS" ? -32602 : -32000,
|
|
206
|
+
message: String(error.message ?? error).slice(0, 1000), data: { reason: error.code ?? "RUNTIME_ERROR" } } }));
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
try {
|
|
210
|
+
if (process.platform !== "win32") {
|
|
211
|
+
await fs.mkdir(path.dirname(socketPath), { recursive: true, mode: 0o700 });
|
|
212
|
+
const existing = await fs.lstat(socketPath).catch((error) => {
|
|
213
|
+
if (error.code !== "ENOENT")
|
|
214
|
+
throw error;
|
|
215
|
+
return undefined;
|
|
216
|
+
});
|
|
217
|
+
if (existing) {
|
|
218
|
+
if (!existing.isSocket())
|
|
219
|
+
throw new RuntimeError("SOCKET_EXISTS", "Socket path is occupied by a regular file");
|
|
220
|
+
const active = await new Promise((resolve) => {
|
|
221
|
+
const socket = net.createConnection(socketPath);
|
|
222
|
+
socket.once("connect", () => { socket.destroy(); resolve(true); });
|
|
223
|
+
socket.once("error", () => resolve(false));
|
|
224
|
+
socket.setTimeout(1000, () => { socket.destroy(); resolve(true); });
|
|
225
|
+
});
|
|
226
|
+
if (active)
|
|
227
|
+
throw new RuntimeError("RUNTIME_LOCKED", "Socket already has a listener");
|
|
228
|
+
await fs.unlink(socketPath);
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
runtime = await ChatRuntime.open(options);
|
|
232
|
+
await new Promise((resolve, reject) => {
|
|
233
|
+
server.once("error", reject);
|
|
234
|
+
server.listen(socketPath, () => { server.off("error", reject); resolve(); });
|
|
235
|
+
});
|
|
236
|
+
if (process.platform !== "win32")
|
|
237
|
+
await fs.chmod(socketPath, 0o600);
|
|
238
|
+
return { runtime, socketPath, close, closed, get lastActivity() { return lastActivity; } };
|
|
239
|
+
}
|
|
240
|
+
catch (error) {
|
|
241
|
+
await runtime?.shutdown();
|
|
242
|
+
await unlock();
|
|
243
|
+
throw error;
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
//# sourceMappingURL=server.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/runtime/server.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
export const runtimeSites = [
|
|
2
|
+
{
|
|
3
|
+
name: "chatgpt", homeUrl: "https://chatgpt.com/",
|
|
4
|
+
input: '#prompt-textarea[contenteditable="true"], #prompt-textarea',
|
|
5
|
+
send: 'button[data-testid="send-button"], button[aria-label="Send prompt"], button#composer-submit-button',
|
|
6
|
+
assistant: '[data-message-author-role="assistant"]',
|
|
7
|
+
stop: 'button[data-testid="stop-button"], button[aria-label*="Stop generating" i], button[aria-label="Stop streaming"]',
|
|
8
|
+
conversationPath: "/c/([^/?#]+)", conversationUrl: "https://chatgpt.com/c/",
|
|
9
|
+
streamPath: "/backend-api/(?:[^/]+/)*conversation(?:\\?|$)",
|
|
10
|
+
format: "chatgpt",
|
|
11
|
+
},
|
|
12
|
+
{
|
|
13
|
+
name: "deepseek", homeUrl: "https://chat.deepseek.com/",
|
|
14
|
+
deepThink: '.ds-toggle-button:has-text("DeepThink"), .ds-toggle-button:has-text("深度思考"), button[aria-label="DeepThink"], [role="switch"][aria-label="DeepThink"]',
|
|
15
|
+
input: "textarea", send: 'button[aria-label*="send" i], button[aria-label*="发送"]',
|
|
16
|
+
assistant: ".ds-markdown", stop: '[role="button"][aria-label*="stop" i], button[aria-label*="停止"], button[aria-label*="stop" i], [role="button"].ds-button--circle:has(svg path[d^="M2 4.88"])',
|
|
17
|
+
conversationPath: "/(?:a/chat/s|chat)/([^/?#]+)", conversationUrl: "https://chat.deepseek.com/a/chat/s/",
|
|
18
|
+
streamPath: "/api/v[0-9]+/chat/completion(?:\\?|$)", format: "deepseek",
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
name: "kimi", homeUrl: "https://www.kimi.com/",
|
|
22
|
+
authenticated: '[data-testid="sidebar-user-menu-trigger"], .user-profile-trigger',
|
|
23
|
+
input: '[contenteditable="true"][role="textbox"], .chat-input-editor[contenteditable="true"], textarea',
|
|
24
|
+
send: 'button[aria-label*="send" i], button[aria-label*="发送"], .send-button, .send-button-container:not(.stop):not(.disabled)',
|
|
25
|
+
assistant: ".segment-assistant .markdown:not(.toolcall-container .markdown):not(.thinking-container .markdown), [data-role=assistant]",
|
|
26
|
+
stop: 'button[aria-label*="stop" i], button[aria-label*="停止"], .stop-button, .send-button-container.stop',
|
|
27
|
+
conversationPath: "/chat/([^/?#]+)", conversationUrl: "https://www.kimi.com/chat/",
|
|
28
|
+
streamPath: "/(?:api/chat/[^/]+/completion/stream|apiv2/kimi\\.gateway\\.chat\\.v1\\.ChatService/Chat)(?:\\?|$)", format: "kimi", experimental: true,
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
name: "claude", homeUrl: "https://claude.ai/new",
|
|
32
|
+
input: '[contenteditable="true"].ProseMirror, [contenteditable="true"][role="textbox"]',
|
|
33
|
+
send: 'button[aria-label="Send message"], button[aria-label="Send Message"]',
|
|
34
|
+
assistant: '[data-is-streaming] .font-claude-message, .font-claude-message',
|
|
35
|
+
stop: 'button[aria-label*="Stop" i]',
|
|
36
|
+
conversationPath: "/chat/([^/?#]+)",
|
|
37
|
+
streamPath: "/api/organizations/[^/]+/chat_conversations/[^/]+/completion", format: "claude", experimental: true,
|
|
38
|
+
},
|
|
39
|
+
];
|
|
40
|
+
//# sourceMappingURL=sites.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sites.js","sourceRoot":"","sources":["../../src/runtime/sites.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,YAAY,GAAqB;IAC5C;QACE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,sBAAsB;QAChD,KAAK,EAAE,4DAA4D;QACnE,IAAI,EAAE,oGAAoG;QAC1G,SAAS,EAAE,wCAAwC;QACnD,IAAI,EAAE,iHAAiH;QACvH,gBAAgB,EAAE,cAAc,EAAE,eAAe,EAAE,wBAAwB;QAC3E,UAAU,EAAE,+CAA+C;QAC3D,MAAM,EAAE,SAAS;KAClB;IACD;QACE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,4BAA4B;QACvD,SAAS,EAAE,sJAAsJ;QACjK,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,wDAAwD;QACjF,SAAS,EAAE,cAAc,EAAE,IAAI,EAAE,8JAA8J;QAC/L,gBAAgB,EAAE,8BAA8B,EAAE,eAAe,EAAE,qCAAqC;QACxG,UAAU,EAAE,uCAAuC,EAAE,MAAM,EAAE,UAAU;KACxE;IACD;QACE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,uBAAuB;QAC9C,aAAa,EAAE,kEAAkE;QACjF,KAAK,EAAE,gGAAgG;QACvG,IAAI,EAAE,wHAAwH;QAC9H,SAAS,EAAE,2HAA2H;QACtI,IAAI,EAAE,mGAAmG;QACzG,gBAAgB,EAAE,iBAAiB,EAAE,eAAe,EAAE,4BAA4B;QAClF,UAAU,EAAE,oGAAoG,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,IAAI;KACrJ;IACD;QACE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,uBAAuB;QAChD,KAAK,EAAE,gFAAgF;QACvF,IAAI,EAAE,sEAAsE;QAC5E,SAAS,EAAE,gEAAgE;QAC3E,IAAI,EAAE,8BAA8B;QACpC,gBAAgB,EAAE,iBAAiB;QACnC,UAAU,EAAE,8DAA8D,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,IAAI;KACjH;CACF,CAAC"}
|