@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.
Files changed (98) hide show
  1. package/CHANGELOG.md +97 -0
  2. package/README.md +176 -0
  3. package/dist/cli.js +8 -2
  4. package/dist/cli.js.map +1 -1
  5. package/dist/commands/login.js +11 -2
  6. package/dist/commands/login.js.map +1 -1
  7. package/dist/core/broker-protocol.d.ts +13 -0
  8. package/dist/core/broker-protocol.js +29 -0
  9. package/dist/core/broker-protocol.js.map +1 -0
  10. package/dist/core/broker-worker.d.ts +1 -0
  11. package/dist/core/broker-worker.js +105 -0
  12. package/dist/core/broker-worker.js.map +1 -0
  13. package/dist/core/errors.d.ts +1 -1
  14. package/dist/core/errors.js.map +1 -1
  15. package/dist/core/provider.d.ts +4 -0
  16. package/dist/core/provider.js.map +1 -1
  17. package/dist/core/turn-broker.d.ts +12 -0
  18. package/dist/core/turn-broker.js +331 -0
  19. package/dist/core/turn-broker.js.map +1 -0
  20. package/dist/core/turn-queue.d.ts +12 -0
  21. package/dist/core/turn-queue.js +54 -0
  22. package/dist/core/turn-queue.js.map +1 -0
  23. package/dist/index.d.ts +6 -3
  24. package/dist/index.js +7 -3
  25. package/dist/index.js.map +1 -1
  26. package/dist/providers/chatgpt-sse-collector.d.ts +2 -0
  27. package/dist/providers/chatgpt-sse-collector.js +4 -0
  28. package/dist/providers/chatgpt-sse-collector.js.map +1 -1
  29. package/dist/providers/chatgpt.d.ts +1 -0
  30. package/dist/providers/chatgpt.js +6 -0
  31. package/dist/providers/chatgpt.js.map +1 -1
  32. package/dist/providers/gemini.d.ts +1 -0
  33. package/dist/providers/gemini.js +5 -0
  34. package/dist/providers/gemini.js.map +1 -1
  35. package/dist/providers/index.d.ts +1 -0
  36. package/dist/providers/index.js +3 -0
  37. package/dist/providers/index.js.map +1 -1
  38. package/dist/providers/kimi.d.ts +38 -0
  39. package/dist/providers/kimi.js +270 -0
  40. package/dist/providers/kimi.js.map +1 -0
  41. package/dist/queued-session.d.ts +31 -0
  42. package/dist/queued-session.js +224 -0
  43. package/dist/queued-session.js.map +1 -0
  44. package/dist/runtime/accounts.d.ts +13 -0
  45. package/dist/runtime/accounts.js +86 -0
  46. package/dist/runtime/accounts.js.map +1 -0
  47. package/dist/runtime/archive.d.ts +9 -0
  48. package/dist/runtime/archive.js +54 -0
  49. package/dist/runtime/archive.js.map +1 -0
  50. package/dist/runtime/browser-worker.d.ts +14 -0
  51. package/dist/runtime/browser-worker.js +87 -0
  52. package/dist/runtime/browser-worker.js.map +1 -0
  53. package/dist/runtime/cli.d.ts +1 -0
  54. package/dist/runtime/cli.js +141 -0
  55. package/dist/runtime/cli.js.map +1 -0
  56. package/dist/runtime/client.d.ts +84 -0
  57. package/dist/runtime/client.js +258 -0
  58. package/dist/runtime/client.js.map +1 -0
  59. package/dist/runtime/daemon.d.ts +1 -0
  60. package/dist/runtime/daemon.js +33 -0
  61. package/dist/runtime/daemon.js.map +1 -0
  62. package/dist/runtime/engine.d.ts +105 -0
  63. package/dist/runtime/engine.js +605 -0
  64. package/dist/runtime/engine.js.map +1 -0
  65. package/dist/runtime/index.d.ts +7 -0
  66. package/dist/runtime/index.js +8 -0
  67. package/dist/runtime/index.js.map +1 -0
  68. package/dist/runtime/managed.d.ts +7 -0
  69. package/dist/runtime/managed.js +75 -0
  70. package/dist/runtime/managed.js.map +1 -0
  71. package/dist/runtime/process-env.d.ts +2 -0
  72. package/dist/runtime/process-env.js +5 -0
  73. package/dist/runtime/process-env.js.map +1 -0
  74. package/dist/runtime/retention.d.ts +15 -0
  75. package/dist/runtime/retention.js +62 -0
  76. package/dist/runtime/retention.js.map +1 -0
  77. package/dist/runtime/server.d.ts +12 -0
  78. package/dist/runtime/server.js +246 -0
  79. package/dist/runtime/server.js.map +1 -0
  80. package/dist/runtime/sites.d.ts +2 -0
  81. package/dist/runtime/sites.js +40 -0
  82. package/dist/runtime/sites.js.map +1 -0
  83. package/dist/runtime/store.d.ts +17 -0
  84. package/dist/runtime/store.js +61 -0
  85. package/dist/runtime/store.js.map +1 -0
  86. package/dist/runtime/stream-decoder.d.ts +30 -0
  87. package/dist/runtime/stream-decoder.js +227 -0
  88. package/dist/runtime/stream-decoder.js.map +1 -0
  89. package/dist/runtime/types.d.ts +102 -0
  90. package/dist/runtime/types.js +12 -0
  91. package/dist/runtime/types.js.map +1 -0
  92. package/dist/runtime/worker.d.ts +1 -0
  93. package/dist/runtime/worker.js +422 -0
  94. package/dist/runtime/worker.js.map +1 -0
  95. package/dist/session.d.ts +5 -0
  96. package/dist/session.js +14 -3
  97. package/dist/session.js.map +1 -1
  98. package/package.json +2 -2
@@ -0,0 +1,422 @@
1
+ import { randomUUID } from "node:crypto";
2
+ import fs from "node:fs/promises";
3
+ import path from "node:path";
4
+ import { readRuntimeAccount, applyRuntimeAccount } from "./accounts.js";
5
+ import { launchProviderBrowser } from "../core/browser.js";
6
+ import { clearProfileOwner } from "../core/profile-lock.js";
7
+ import { createLogger } from "../core/logger.js";
8
+ import { ChatStreamDecoder } from "./stream-decoder.js";
9
+ import { RuntimeError } from "./types.js";
10
+ const pause = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
11
+ /** Installed in the page's main world, with a private per-worker binding. */
12
+ // Keep injected source independent of Node/TypeScript loader helpers.
13
+ const observeStreams = String.raw `(options) => {
14
+ const scope = window;
15
+ if (scope[options.key]) return;
16
+ const state = { active: "" };
17
+ const original = window.fetch;
18
+ const pattern = new RegExp(options.path);
19
+ window.fetch = async function (...args) {
20
+ const request = args[0];
21
+ const url = new URL(typeof request === "string" ? request : request instanceof URL ? request.href : request.url, location.href);
22
+ const method = args[1]?.method ?? (request instanceof Request ? request.method : "GET");
23
+ const token = state.active;
24
+ const matched = token && url.origin === options.origin && method.toUpperCase() === "POST" && pattern.test(url.pathname + url.search);
25
+ const response = await original.apply(this, args);
26
+ if (matched) {
27
+ const send = (payload) => Promise.resolve(scope[options.binding]({ token, ...payload })).catch(() => undefined);
28
+ if (!response.ok) void send({ error: "Provider HTTP " + response.status });
29
+ else if (response.headers.get("content-type")?.includes("event-stream") ||
30
+ response.headers.get("content-type")?.includes("application/connect+json")) {
31
+ const connect = response.headers.get("content-type").includes("application/connect+json");
32
+ const reader = response.clone().body?.getReader();
33
+ if (reader) void (async () => {
34
+ const decoder = new TextDecoder();
35
+ let bytes = 0;
36
+ const pending = new Set();
37
+ const emit = (payload) => {
38
+ const task = send(payload).finally(() => pending.delete(task));
39
+ pending.add(task);
40
+ };
41
+ try {
42
+ for (;;) {
43
+ const { value, done } = await reader.read();
44
+ if (done) break;
45
+ bytes += value.byteLength;
46
+ if (bytes > 8_000_000) { await send({ error: "Response exceeds capture limit" }); void reader.cancel().catch(() => undefined); break; }
47
+ if (connect) {
48
+ // Pass raw bytes across IPC: decoding binary envelope headers as UTF-8 corrupts lengths.
49
+ let binary = "";
50
+ for (let i = 0; i < value.length; i += 32768) binary += String.fromCharCode(...value.subarray(i, i + 32768));
51
+ emit({ connectChunk: btoa(binary) });
52
+ // Drain the tee promptly: the site's reader may abort as soon as it sees done.
53
+ if (pending.size >= 64) await Promise.all(pending);
54
+ } else await send({ chunk: decoder.decode(value, { stream: true }) });
55
+ }
56
+ if (connect) { await Promise.all(pending); await send({ connectEnd: true }); }
57
+ const tail = decoder.decode();
58
+ if (tail) await send({ chunk: tail });
59
+ } catch (error) {
60
+ await Promise.all(pending);
61
+ await send({ interrupted: error?.name || "Error" });
62
+ }
63
+ finally { reader.releaseLock(); }
64
+ })();
65
+ }
66
+ }
67
+ return response;
68
+ };
69
+ // DeepSeek streams SSE through XMLHttpRequest, so fetch alone misses the entire protocol.
70
+ const opened = new WeakMap();
71
+ const xhrOpen = XMLHttpRequest.prototype.open;
72
+ const xhrSend = XMLHttpRequest.prototype.send;
73
+ XMLHttpRequest.prototype.open = function (method, url, ...rest) {
74
+ opened.set(this, { method: String(method).toUpperCase(), url: new URL(String(url), location.href) });
75
+ return xhrOpen.call(this, method, url, ...rest);
76
+ };
77
+ XMLHttpRequest.prototype.send = function (...args) {
78
+ const request = opened.get(this);
79
+ const token = state.active;
80
+ if (token && request?.method === "POST" && request.url.origin === options.origin &&
81
+ pattern.test(request.url.pathname + request.url.search)) {
82
+ let offset = 0;
83
+ let limited = false;
84
+ const send = (payload) => Promise.resolve(scope[options.binding]({ token, ...payload })).catch(() => undefined);
85
+ const flush = () => {
86
+ if (limited || (this.responseType && this.responseType !== "text") ||
87
+ !this.getResponseHeader("content-type")?.includes("event-stream")) return;
88
+ const text = this.responseText;
89
+ if (text.length > 8_000_000) { limited = true; void send({ error: "Response exceeds capture limit" }); return; }
90
+ const chunk = text.slice(offset); offset = text.length;
91
+ if (chunk) void send({ chunk });
92
+ };
93
+ this.addEventListener("progress", flush);
94
+ this.addEventListener("load", () => {
95
+ if (this.status < 200 || this.status >= 300) void send({ error: "Provider HTTP " + this.status });
96
+ else flush();
97
+ });
98
+ this.addEventListener("abort", () => { void send({ interrupted: "AbortError" }); });
99
+ this.addEventListener("error", () => { void send({ interrupted: "NetworkError" }); });
100
+ this.addEventListener("timeout", () => { void send({ interrupted: "TimeoutError" }); });
101
+ }
102
+ return xhrSend.apply(this, args);
103
+ };
104
+ scope[options.key] = state;
105
+ }`;
106
+ class Session {
107
+ config;
108
+ context;
109
+ page;
110
+ opening;
111
+ controller;
112
+ decoder;
113
+ token = "";
114
+ captureError;
115
+ key = "__chat_runtime_" + randomUUID().replaceAll("-", "");
116
+ binding = "__chat_runtime_event_" + randomUUID().replaceAll("-", "");
117
+ constructor(config) {
118
+ this.config = config;
119
+ }
120
+ open() {
121
+ if (this.page && !this.page.isClosed())
122
+ return this.location();
123
+ this.opening ??= this.openInternal().catch(async (error) => {
124
+ await this.close();
125
+ throw error;
126
+ }).finally(() => { this.opening = undefined; });
127
+ return this.opening;
128
+ }
129
+ async openInternal() {
130
+ if (this.context)
131
+ await this.close();
132
+ const directory = this.config.profileDir;
133
+ await fs.mkdir(directory, { recursive: true, mode: 0o700 });
134
+ const launched = await launchProviderBrowser(this.config.site.name, {
135
+ headless: this.config.conversation.headless,
136
+ executablePath: this.config.executablePath,
137
+ channel: this.config.channel,
138
+ logger: createLogger("silent"),
139
+ profileManager: {
140
+ getProfileDir: () => directory,
141
+ ensureProfile: async () => directory,
142
+ clearProfile: async () => { throw new Error("Runtime profiles are retained"); },
143
+ listProfiles: async () => [this.config.conversation.id],
144
+ },
145
+ });
146
+ this.context = launched.context;
147
+ this.page = launched.page;
148
+ const page = this.page;
149
+ const auth = await readRuntimeAccount(this.config.site.name, this.config.conversation.accountId, this.config.authDirectory);
150
+ const marker = path.join(directory, ".account-auth.json");
151
+ let importedAt = 0;
152
+ try {
153
+ importedAt = JSON.parse(await fs.readFile(marker, "utf8")).updatedAt ?? 0;
154
+ }
155
+ catch (error) {
156
+ if (error.code !== "ENOENT")
157
+ throw error;
158
+ }
159
+ if (auth && auth.updatedAt > importedAt) {
160
+ await applyRuntimeAccount(this.context, auth.state);
161
+ await fs.writeFile(marker, JSON.stringify({ updatedAt: auth.updatedAt }), { mode: 0o600 });
162
+ }
163
+ page.setDefaultTimeout(10_000);
164
+ page.setDefaultNavigationTimeout(30_000);
165
+ await page.exposeBinding(this.binding, ({ page: source, frame }, payload) => {
166
+ if (source !== page || frame !== page.mainFrame() || payload?.token !== this.token || !this.token)
167
+ return;
168
+ if (typeof payload.error === "string")
169
+ this.captureError = payload.error.slice(0, 256);
170
+ if (typeof payload.interrupted === "string" &&
171
+ !(payload.interrupted === "AbortError" && this.decoder?.complete)) {
172
+ this.captureError = "Response stream interrupted (" + payload.interrupted.slice(0, 32) + ")";
173
+ }
174
+ if (typeof payload.connectChunk === "string") {
175
+ if (payload.connectChunk.length > 1_400_000) {
176
+ this.captureError = "Capture chunk exceeds limit";
177
+ return;
178
+ }
179
+ try {
180
+ this.decoder?.pushConnect(Buffer.from(payload.connectChunk, "base64"));
181
+ }
182
+ catch (error) {
183
+ this.captureError = String(error);
184
+ }
185
+ }
186
+ if (payload.connectEnd === true) {
187
+ try {
188
+ this.decoder?.finishConnect();
189
+ }
190
+ catch (error) {
191
+ this.captureError = String(error);
192
+ }
193
+ }
194
+ if (typeof payload.chunk === "string") {
195
+ if (payload.chunk.length > 1_000_000) {
196
+ this.captureError = "Capture chunk exceeds limit";
197
+ return;
198
+ }
199
+ try {
200
+ this.decoder?.push(payload.chunk);
201
+ }
202
+ catch (error) {
203
+ this.captureError = String(error);
204
+ }
205
+ }
206
+ });
207
+ const observer = { key: this.key, binding: this.binding, path: this.config.site.streamPath, origin: new URL(this.config.site.homeUrl).origin };
208
+ const source = "(" + observeStreams + ")(" + JSON.stringify(observer) + ")";
209
+ await page.addInitScript({ content: source });
210
+ await page.goto(this.config.conversation.url ?? this.config.site.homeUrl, { waitUntil: "domcontentloaded" });
211
+ await page.evaluate(source);
212
+ await this.waitForInput();
213
+ return this.location();
214
+ }
215
+ async visible(selector) {
216
+ const locator = this.page.locator(selector);
217
+ const count = Math.min(await locator.count(), 12);
218
+ for (let index = 0; index < count; index++) {
219
+ const candidate = locator.nth(index);
220
+ if (await candidate.isVisible().catch(() => false))
221
+ return candidate;
222
+ }
223
+ return undefined;
224
+ }
225
+ async waitForInput() {
226
+ const deadline = Date.now() + 10_000;
227
+ while (Date.now() < deadline) {
228
+ if (/\/(?:login|auth|signin|sign_in|sign-in)(?:\/|$)/i.test(new URL(this.page.url()).pathname))
229
+ return undefined;
230
+ const input = await this.visible(this.config.site.input);
231
+ if (input && (!this.config.site.authenticated || await this.visible(this.config.site.authenticated)))
232
+ return input;
233
+ await pause(100);
234
+ }
235
+ return undefined;
236
+ }
237
+ async location() {
238
+ const page = this.page;
239
+ const url = new URL(page.url());
240
+ const origin = new URL(this.config.site.homeUrl).origin;
241
+ const match = url.origin === origin ? new RegExp(this.config.site.conversationPath).exec(url.pathname) : null;
242
+ const input = !!(await this.visible(this.config.site.input));
243
+ const authenticated = !this.config.site.authenticated || !!(await this.visible(this.config.site.authenticated));
244
+ const authRequired = /\/(?:login|auth|signin|sign_in|sign-in)(?:\/|$)/i.test(url.pathname) || (input && !authenticated);
245
+ return {
246
+ ready: input && authenticated && !authRequired, authRequired,
247
+ ...(match ? { url: url.href, providerConversationId: match[1] } : {}),
248
+ };
249
+ }
250
+ async setDeepThink(enabled) {
251
+ if (enabled === undefined)
252
+ return;
253
+ const selector = this.config.site.deepThink;
254
+ if (this.config.site.name !== "deepseek" || !selector)
255
+ throw new RuntimeError("DEEPTHINK_UNAVAILABLE", "DeepThink control is unavailable");
256
+ let toggle = await this.visible(selector);
257
+ for (let i = 0; !toggle && i < 60; i++) {
258
+ if (this.controller?.signal.aborted)
259
+ throw new RuntimeError("CANCELLED", "Cancelled before submission");
260
+ await pause(50);
261
+ toggle = await this.visible(selector);
262
+ }
263
+ if (!toggle)
264
+ throw new RuntimeError("DEEPTHINK_UNAVAILABLE", "DeepThink control is unavailable");
265
+ const state = async () => (await toggle.getAttribute("aria-pressed")) ?? (await toggle.getAttribute("aria-checked"));
266
+ const current = await state();
267
+ if (current !== "true" && current !== "false")
268
+ throw new RuntimeError("DEEPTHINK_UNAVAILABLE", "Cannot determine DeepThink state");
269
+ if ((current === "true") === enabled)
270
+ return;
271
+ await toggle.click();
272
+ for (let i = 0; i < 60; i++) {
273
+ if (await state() === String(enabled))
274
+ return;
275
+ if (this.controller?.signal.aborted)
276
+ throw new RuntimeError("CANCELLED", "Cancelled before submission");
277
+ await pause(50);
278
+ }
279
+ throw new RuntimeError("DEEPTHINK_UNAVAILABLE", "DeepThink did not switch to the requested state");
280
+ }
281
+ async send(input, timeoutMs, notify, options = {}) {
282
+ await this.open();
283
+ const page = this.page;
284
+ const composer = await this.waitForInput();
285
+ if (!composer) {
286
+ const { authRequired } = await this.location();
287
+ throw new RuntimeError(authRequired ? "AUTH_REQUIRED" : "PAGE_NOT_READY", authRequired ? "Chat requires login before sending" : "Chat page did not become ready; wait for it to finish loading and retry");
288
+ }
289
+ if (await this.visible(this.config.site.stop))
290
+ throw new RuntimeError("PROVIDER_BUSY", "Provider is still generating; wait or stop it before sending again");
291
+ const baseline = await page.locator(this.config.site.assistant).allTextContents();
292
+ this.controller = new AbortController();
293
+ this.decoder = new ChatStreamDecoder(this.config.site.format);
294
+ this.captureError = undefined;
295
+ this.token = randomUUID();
296
+ await page.evaluate(({ key, token }) => { window[key].active = token; }, { key: this.key, token: this.token });
297
+ let previous = "";
298
+ let stableSince = Date.now();
299
+ let observedStop = false;
300
+ const deadline = Date.now() + timeoutMs;
301
+ try {
302
+ await this.setDeepThink(options.deepThink);
303
+ await composer.fill(input);
304
+ if (this.controller.signal.aborted)
305
+ throw new RuntimeError("CANCELLED", "Cancelled before submission");
306
+ // Parent records this phase before considering any subsequent failure safe to retry.
307
+ notify({ type: "submitting" });
308
+ const send = await this.visible(this.config.site.send);
309
+ if (send && await send.isEnabled())
310
+ await send.click();
311
+ else
312
+ await composer.press("Enter");
313
+ while (Date.now() < deadline) {
314
+ if (this.controller.signal.aborted) {
315
+ const stop = await this.visible(this.config.site.stop);
316
+ if (stop) {
317
+ await stop.click().catch(() => undefined);
318
+ for (let i = 0; i < 20; i++) {
319
+ if (!(await this.visible(this.config.site.stop))) {
320
+ const error = new RuntimeError("CANCELLED", "Generation stop observed");
321
+ Object.assign(error, { stopConfirmed: true });
322
+ throw error;
323
+ }
324
+ await pause(100);
325
+ }
326
+ }
327
+ throw new RuntimeError("UNCERTAIN", "Client cancelled; provider stop was not confirmed");
328
+ }
329
+ if (this.decoder.error)
330
+ throw new RuntimeError(this.decoder.errorCode ?? "PROVIDER_ERROR", this.decoder.error);
331
+ if (this.captureError)
332
+ throw new RuntimeError("UNCERTAIN", this.captureError);
333
+ const texts = await page.locator(this.config.site.assistant).allTextContents();
334
+ const newMessage = texts.length > baseline.length;
335
+ const domText = newMessage ? texts.at(-1)?.trim() ?? "" : "";
336
+ // Once a protocol is captured, an empty answer can mean reasoning, not missing DOM.
337
+ const text = this.decoder.captured ? this.decoder.text : domText;
338
+ if (text.length > 1_000_000)
339
+ throw new RuntimeError("UNCERTAIN", "Response exceeds limit");
340
+ if (text !== previous) {
341
+ previous = text;
342
+ stableSince = Date.now();
343
+ if (text)
344
+ notify({ type: "progress", text, ...(await this.location()) });
345
+ }
346
+ const stopping = !!(await this.visible(this.config.site.stop));
347
+ // The protocol can finish before the UI releases its composer; keep FIFO handoff safe.
348
+ if (this.decoder.complete && this.decoder.text && !stopping)
349
+ return { text: this.decoder.text, source: this.decoder.source, ...(await this.location()) };
350
+ observedStop ||= stopping;
351
+ // DOM completion requires an observed generation control transition and a NEW answer.
352
+ if (this.decoder.source !== "connect" && newMessage && text && observedStop && !stopping && Date.now() - stableSince > 700) {
353
+ return { text, source: "dom", ...(await this.location()) };
354
+ }
355
+ await pause(100);
356
+ }
357
+ throw new RuntimeError("UNCERTAIN", "Response deadline exceeded; provider completion was not confirmed");
358
+ }
359
+ finally {
360
+ // A stop can precede the first text delta. Retain its provider URL so a
361
+ // task restart resumes that conversation instead of silently opening home.
362
+ try {
363
+ notify({ type: "progress", text: previous, ...(await this.location()) });
364
+ }
365
+ catch { }
366
+ this.token = "";
367
+ this.controller = undefined;
368
+ }
369
+ }
370
+ cancel() { this.controller?.abort(); }
371
+ async close() {
372
+ this.cancel();
373
+ const owned = !!this.context;
374
+ await this.context?.close().catch(() => undefined);
375
+ if (owned)
376
+ clearProfileOwner(this.config.profileDir);
377
+ this.context = undefined;
378
+ this.page = undefined;
379
+ }
380
+ }
381
+ let config;
382
+ let session;
383
+ let busy = false;
384
+ process.on("message", async (message) => {
385
+ if (message.config) {
386
+ config = message.config;
387
+ session = new Session(config);
388
+ return;
389
+ }
390
+ if (message.command === "cancel") {
391
+ session?.cancel();
392
+ return;
393
+ }
394
+ if (!session || busy) {
395
+ process.send?.({ id: message.id, error: { code: "WORKER_BUSY", message: "Chat worker is busy" } });
396
+ return;
397
+ }
398
+ busy = true;
399
+ try {
400
+ let result = {};
401
+ if (message.command === "open")
402
+ result = await session.open();
403
+ else if (message.command === "send")
404
+ result = await session.send(message.input, message.timeoutMs, (notice) => process.send?.({ id: message.id, notice }), { deepThink: message.deepThink });
405
+ else if (message.command === "close")
406
+ await session.close();
407
+ else
408
+ throw new RuntimeError("INVALID_REQUEST", "Unknown worker command");
409
+ process.send?.({ id: message.id, result });
410
+ if (message.command === "close")
411
+ process.disconnect();
412
+ }
413
+ catch (error) {
414
+ process.send?.({ id: message.id, error: { code: error.code ?? "WORKER_ERROR", message: String(error.message ?? error), stopConfirmed: error.stopConfirmed } });
415
+ }
416
+ finally {
417
+ busy = false;
418
+ }
419
+ });
420
+ process.on("disconnect", () => { void session?.close().finally(() => process.exit(0)); });
421
+ process.on("SIGTERM", () => { void session?.close().finally(() => process.exit(0)); });
422
+ //# sourceMappingURL=worker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worker.js","sourceRoot":"","sources":["../../src/runtime/worker.ts"],"names":[],"mappings":"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"}
package/dist/session.d.ts CHANGED
@@ -24,6 +24,8 @@ export interface SendOptions {
24
24
  signal?: AbortSignal;
25
25
  /** Streaming progress callback. */
26
26
  onProgress?: (text: string) => void;
27
+ /** Shared-profile queue position: 0 means this turn has started. */
28
+ onQueue?: (position: number) => void;
27
29
  }
28
30
  export interface SendResult {
29
31
  /** 0-based index of this turn within the session's lifetime. */
@@ -59,6 +61,7 @@ export declare class ChatSession {
59
61
  private readonly pageImpl;
60
62
  readonly userDataDir: string;
61
63
  private readonly logger;
64
+ private readonly closeContext;
62
65
  /** Open and return a ready-to-use session. */
63
66
  static open(providerName: string, options?: SessionOpenOptions): Promise<ChatSession>;
64
67
  /**
@@ -72,6 +75,8 @@ export declare class ChatSession {
72
75
  page: Page;
73
76
  userDataDir: string;
74
77
  logger?: Logger;
78
+ /** Broker sessions own only their tab, not the shared browser context. */
79
+ closeContext?: boolean;
75
80
  }): ChatSession;
76
81
  private turnCounter;
77
82
  private queue;
package/dist/session.js CHANGED
@@ -23,6 +23,7 @@ export class ChatSession {
23
23
  pageImpl;
24
24
  userDataDir;
25
25
  logger;
26
+ closeContext;
26
27
  /** Open and return a ready-to-use session. */
27
28
  static async open(providerName, options = {}) {
28
29
  const logger = options.logger ?? defaultLogger;
@@ -51,19 +52,20 @@ export class ChatSession {
51
52
  * regular code should go through `ChatSession.open()`.
52
53
  */
53
54
  static fromBrowser(args) {
54
- return new ChatSession(args.provider, args.context, args.page, args.userDataDir, args.logger ?? defaultLogger);
55
+ return new ChatSession(args.provider, args.context, args.page, args.userDataDir, args.logger ?? defaultLogger, args.closeContext ?? true);
55
56
  }
56
57
  turnCounter = 0;
57
58
  queue = Promise.resolve();
58
59
  closed = false;
59
60
  /** Provider-side conversation id (e.g. ChatGPT `/c/{uuid}`), set after the first turn lands. */
60
61
  providerConversationId;
61
- constructor(providerImpl, context, pageImpl, userDataDir, logger) {
62
+ constructor(providerImpl, context, pageImpl, userDataDir, logger, closeContext = true) {
62
63
  this.providerImpl = providerImpl;
63
64
  this.context = context;
64
65
  this.pageImpl = pageImpl;
65
66
  this.userDataDir = userDataDir;
66
67
  this.logger = logger;
68
+ this.closeContext = closeContext;
67
69
  }
68
70
  get provider() {
69
71
  return this.providerImpl.name;
@@ -92,6 +94,8 @@ export class ChatSession {
92
94
  this.assertOpen();
93
95
  return this.enqueue(async () => {
94
96
  const started = Date.now();
97
+ if (options.signal?.aborted)
98
+ throw new DOMException("Aborted", "AbortError");
95
99
  const loggedIn = await this.providerImpl.isLoggedIn(this.pageImpl);
96
100
  if (!loggedIn) {
97
101
  throw new NotLoggedInError(this.providerImpl.name);
@@ -102,6 +106,8 @@ export class ChatSession {
102
106
  await this.providerImpl.open(this.pageImpl);
103
107
  }
104
108
  this.logger.debug(`[${this.providerImpl.name}] turn ${this.turnCounter}: ${truncate(message)}`);
109
+ if (options.signal?.aborted)
110
+ throw new DOMException("Aborted", "AbortError");
105
111
  await this.providerImpl.sendMessage(this.pageImpl, message);
106
112
  const response = await this.providerImpl.waitForResponse(this.pageImpl, {
107
113
  timeoutMs: options.timeoutMs,
@@ -186,6 +192,10 @@ export class ChatSession {
186
192
  if (this.closed)
187
193
  return;
188
194
  this.closed = true;
195
+ if (!this.closeContext) {
196
+ await this.pageImpl.close().catch(() => undefined);
197
+ return;
198
+ }
189
199
  await this.context.close().catch(() => undefined);
190
200
  // Drop the owner sidecar so a later launch doesn't mistake a cleanly
191
201
  // closed profile for a live chat (see core/profile-lock.ts).
@@ -203,7 +213,8 @@ export class ChatSession {
203
213
  enqueue(task) {
204
214
  // Chain on prior task; do NOT block on its failure (we don't want
205
215
  // one bad message to wedge the queue forever).
206
- const ran = this.queue.then(task, task);
216
+ const checked = () => { this.assertOpen(); return task(); };
217
+ const ran = this.queue.then(checked, checked);
207
218
  this.queue = ran.then(() => undefined, () => undefined);
208
219
  return ran;
209
220
  }
@@ -1 +1 @@
1
- {"version":3,"file":"session.js","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"session.js","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@love-moon/chat-web",
3
- "version": "0.17.1",
4
- "description": "Dedicated chat-web automation runtime for ChatGPT / DeepSeek and similar web chat products.",
3
+ "version": "0.18.0",
4
+ "description": "Dedicated chat-web automation runtime for ChatGPT / DeepSeek / Gemini / Kimi and similar web chat products.",
5
5
  "repository": {
6
6
  "type": "git",
7
7
  "url": "git+https://github.com/lovemoon-ai/conductor.git",