@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,141 @@
1
+ import { randomUUID } from "node:crypto";
2
+ import { ChatRuntimeClient } from "./client.js";
3
+ import { runtimeDirectory, runtimeSocket, startRuntimeServer } from "./server.js";
4
+ import { RuntimeError } from "./types.js";
5
+ const help = `Isolated chat runtime:
6
+ chat-web serve [--socket PATH] [--max-workers 4] [--per-account-concurrency 2]
7
+ chat-web runtime status|stop [--socket PATH]
8
+ chat-web chat create <chatgpt|deepseek|kimi|claude> [--account ID] [--headed] [--deepthink|--no-deepthink]
9
+ chat-web chat list|get|resume|login|close [CHAT_ID] [--acknowledge]
10
+ chat-web chat send CHAT_ID MESSAGE [--request-id ID] [--timeout MS] [--detach|--jsonl] [--deepthink|--no-deepthink]
11
+ chat-web turn get|events|cancel TURN_ID [--after SEQ]
12
+ All client commands accept --socket PATH. Login opens only this chat's window.
13
+ `;
14
+ export async function runRuntimeCli(argv, write = (text) => { process.stdout.write(text); }) {
15
+ const args = [];
16
+ const flags = new Map();
17
+ const values = new Set(["socket", "max-workers", "per-account-concurrency", "account", "request-id", "timeout", "after", "runtime-dir", "browser-executable", "browser-channel"]);
18
+ const booleans = new Set(["headed", "headless", "acknowledge", "detach", "jsonl", "help", "deepthink", "no-deepthink"]);
19
+ for (let i = 0; i < argv.length; i++) {
20
+ const arg = argv[i];
21
+ if (arg === "--") {
22
+ args.push(...argv.slice(i + 1));
23
+ break;
24
+ }
25
+ if (!arg.startsWith("--")) {
26
+ args.push(arg);
27
+ continue;
28
+ }
29
+ const key = arg.slice(2);
30
+ if (booleans.has(key))
31
+ flags.set(key, true);
32
+ else if (values.has(key) && argv[i + 1] !== undefined)
33
+ flags.set(key, argv[++i]);
34
+ else
35
+ throw new RuntimeError("INVALID_PARAMS", "Unknown option or missing value: " + arg);
36
+ }
37
+ if (flags.has("help")) {
38
+ write(help);
39
+ return 0;
40
+ }
41
+ if (flags.has("deepthink") && flags.has("no-deepthink"))
42
+ throw new RuntimeError("INVALID_PARAMS", "Choose --deepthink or --no-deepthink");
43
+ const deepThink = flags.has("deepthink") ? true : flags.has("no-deepthink") ? false : undefined;
44
+ if (deepThink !== undefined && !(args[0] === "chat" && ["create", "send"].includes(args[1] ?? ""))) {
45
+ throw new RuntimeError("INVALID_PARAMS", "DeepThink options require chat create or chat send");
46
+ }
47
+ const value = (name) => typeof flags.get(name) === "string" ? flags.get(name) : undefined;
48
+ const required = (index) => {
49
+ if (!args[index])
50
+ throw new RuntimeError("INVALID_PARAMS", help);
51
+ return args[index];
52
+ };
53
+ const emit = (result) => write(JSON.stringify(result) + "\n");
54
+ const directory = value("runtime-dir") ?? runtimeDirectory();
55
+ const socketPath = value("socket") ?? runtimeSocket(directory);
56
+ const client = new ChatRuntimeClient(socketPath);
57
+ if (args[0] === "serve") {
58
+ const server = await startRuntimeServer({ directory, socketPath,
59
+ maxWorkers: value("max-workers") === undefined ? undefined : Number(value("max-workers")),
60
+ perAccountConcurrency: value("per-account-concurrency") === undefined ? undefined : Number(value("per-account-concurrency")),
61
+ executablePath: value("browser-executable"), channel: value("browser-channel") });
62
+ emit({ socketPath, ...server.runtime.status() });
63
+ const stop = () => { void server.close(); };
64
+ process.on("SIGINT", stop);
65
+ process.on("SIGTERM", stop);
66
+ try {
67
+ await server.closed;
68
+ }
69
+ finally {
70
+ process.off("SIGINT", stop);
71
+ process.off("SIGTERM", stop);
72
+ }
73
+ return 0;
74
+ }
75
+ const group = required(0);
76
+ const action = required(1);
77
+ if (group === "runtime") {
78
+ if (!["status", "stop"].includes(action))
79
+ throw new RuntimeError("INVALID_PARAMS", help);
80
+ emit(await client.call("runtime." + action));
81
+ }
82
+ else if (group === "chat") {
83
+ switch (action) {
84
+ case "create":
85
+ if (flags.has("headed") && flags.has("headless"))
86
+ throw new RuntimeError("INVALID_PARAMS", "Choose headed or headless");
87
+ emit(await client.create({ provider: required(2), accountId: value("account"), headless: !flags.has("headed"), deepThink }));
88
+ break;
89
+ case "list":
90
+ emit(await client.list());
91
+ break;
92
+ case "get":
93
+ emit(await client.get(required(2)));
94
+ break;
95
+ case "close":
96
+ emit(await client.closeConversation(required(2)));
97
+ break;
98
+ case "login":
99
+ case "resume":
100
+ emit(await client.resume(required(2), { ...(action === "login" ? { headed: true } :
101
+ flags.has("headed") ? { headed: true } : flags.has("headless") ? { headed: false } : {}),
102
+ acknowledgeUncertain: flags.has("acknowledge") }));
103
+ break;
104
+ case "send": {
105
+ const chat = required(2);
106
+ const input = args.slice(3).join(" ");
107
+ const turn = await client.submit({ conversationId: chat, input,
108
+ requestId: value("request-id") ?? randomUUID(), timeoutMs: value("timeout") ? Number(value("timeout")) : undefined, deepThink });
109
+ if (flags.has("detach")) {
110
+ emit(turn);
111
+ break;
112
+ }
113
+ const result = await client.wait(turn.id, flags.has("jsonl") ? emit : undefined);
114
+ if (!flags.has("jsonl"))
115
+ emit(result);
116
+ return result.status === "completed" ? 0 : 1;
117
+ }
118
+ default: throw new RuntimeError("INVALID_PARAMS", help);
119
+ }
120
+ }
121
+ else if (group === "turn") {
122
+ const id = required(2);
123
+ if (action === "get")
124
+ emit(await client.getTurn(id));
125
+ else if (action === "cancel")
126
+ emit(await client.cancel(id));
127
+ else if (action === "events") {
128
+ const after = Number(value("after") ?? 0);
129
+ if (!Number.isInteger(after) || after < 0)
130
+ throw new RuntimeError("INVALID_PARAMS", "Invalid sequence");
131
+ for await (const event of client.events(id, after))
132
+ emit(event);
133
+ }
134
+ else
135
+ throw new RuntimeError("INVALID_PARAMS", help);
136
+ }
137
+ else
138
+ throw new RuntimeError("INVALID_PARAMS", help);
139
+ return 0;
140
+ }
141
+ //# sourceMappingURL=cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/runtime/cli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,84 @@
1
+ import { type Conversation, type Turn, type TurnEvent, type TurnStatus, type WorkerResult } from "./types.js";
2
+ export declare class ChatRuntimeClient {
3
+ readonly socketPath: string;
4
+ private readonly requestTimeoutMs;
5
+ constructor(socketPath?: string, requestTimeoutMs?: number);
6
+ call<T = unknown>(method: string, params?: object): Promise<T>;
7
+ private checkDeepThink;
8
+ create(params: {
9
+ provider: string;
10
+ accountId?: string;
11
+ headless?: boolean;
12
+ deepThink?: boolean;
13
+ providerConversationId?: string;
14
+ }): Promise<Conversation>;
15
+ list(): Promise<Conversation[]>;
16
+ get(id: string): Promise<Conversation>;
17
+ resume(id: string, options?: {
18
+ headed?: boolean;
19
+ acknowledgeUncertain?: boolean;
20
+ allowQueued?: boolean;
21
+ }): Promise<Conversation & WorkerResult>;
22
+ closeConversation(id: string): Promise<Conversation>;
23
+ submit(params: {
24
+ conversationId: string;
25
+ input: string;
26
+ requestId: string;
27
+ timeoutMs?: number;
28
+ deepThink?: boolean;
29
+ }): Promise<Turn>;
30
+ getTurn(id: string): Promise<Turn>;
31
+ cancel(id: string): Promise<Turn>;
32
+ events(turnId: string, after?: number, signal?: AbortSignal): AsyncGenerator<TurnEvent>;
33
+ wait(turnId: string, onEvent?: (event: TurnEvent) => void, signal?: AbortSignal): Promise<Turn>;
34
+ }
35
+ export declare class RuntimeChatSession {
36
+ readonly id: string;
37
+ private deepThink?;
38
+ private releaseOnClose;
39
+ providerConversationId?: string | undefined;
40
+ private managedOptions?;
41
+ readonly client: ChatRuntimeClient;
42
+ readonly provider: string;
43
+ private activeTurnId?;
44
+ private interruptRequested;
45
+ private sending;
46
+ private localWait?;
47
+ private turns;
48
+ private closed;
49
+ private constructor();
50
+ static open(provider: string, options?: {
51
+ socketPath?: string;
52
+ conversationId?: string;
53
+ providerConversationId?: string;
54
+ accountId?: string;
55
+ headless?: boolean;
56
+ deepThink?: boolean;
57
+ releaseOnClose?: boolean;
58
+ launch?: {
59
+ executablePath?: string;
60
+ channel?: string;
61
+ };
62
+ }): Promise<RuntimeChatSession>;
63
+ private ensureAvailable;
64
+ /** Defer browser/auth verification until the queued send owns a worker slot. */
65
+ prepare(): Promise<WorkerResult>;
66
+ isLoggedIn(): Promise<boolean>;
67
+ send(message: string, options?: {
68
+ requestId?: string;
69
+ timeoutMs?: number;
70
+ onProgress?: (text: string) => void;
71
+ onStatus?: (status: TurnStatus) => void;
72
+ signal?: AbortSignal;
73
+ deepThink?: boolean;
74
+ }): Promise<{
75
+ response: string;
76
+ message: string;
77
+ turnIndex: number;
78
+ durationMs: number;
79
+ conversationId: string | undefined;
80
+ runtimeConversationId: string;
81
+ }>;
82
+ interruptCurrentTurn(): Promise<void>;
83
+ close(): Promise<void>;
84
+ }
@@ -0,0 +1,258 @@
1
+ import http from "node:http";
2
+ import { randomUUID } from "node:crypto";
3
+ import { runtimeDirectory, runtimeSocket } from "./server.js";
4
+ import { isTerminal, RuntimeError } from "./types.js";
5
+ export class ChatRuntimeClient {
6
+ socketPath;
7
+ requestTimeoutMs;
8
+ constructor(socketPath = runtimeSocket(), requestTimeoutMs = 65_000) {
9
+ this.socketPath = socketPath;
10
+ this.requestTimeoutMs = requestTimeoutMs;
11
+ }
12
+ call(method, params = {}) {
13
+ return new Promise((resolve, reject) => {
14
+ const request = http.request({ socketPath: this.socketPath, path: "/rpc", method: "POST", agent: false,
15
+ headers: { "content-type": "application/json" } }, (response) => {
16
+ response.setEncoding("utf8");
17
+ let body = "";
18
+ response.on("data", (chunk) => {
19
+ body += chunk;
20
+ if (body.length > 8_000_000) {
21
+ response.destroy(new Error("Runtime response exceeds limit"));
22
+ }
23
+ });
24
+ response.on("error", reject);
25
+ response.on("end", () => {
26
+ try {
27
+ const envelope = JSON.parse(body);
28
+ if (envelope.error)
29
+ reject(new RuntimeError(envelope.error.data?.reason ?? String(envelope.error.code), envelope.error.message));
30
+ else
31
+ resolve(envelope.result);
32
+ }
33
+ catch (error) {
34
+ reject(error);
35
+ }
36
+ });
37
+ });
38
+ request.setTimeout(this.requestTimeoutMs, () => request.destroy(new RuntimeError("RUNTIME_TIMEOUT", "Runtime request timed out")));
39
+ request.on("error", reject);
40
+ request.end(JSON.stringify({ jsonrpc: "2.0", id: randomUUID(), method, params }));
41
+ });
42
+ }
43
+ async checkDeepThink(value) {
44
+ if (value === undefined)
45
+ return;
46
+ if (typeof value !== "boolean")
47
+ throw new RuntimeError("INVALID_PARAMS", "deepThink must be boolean");
48
+ const status = await this.call("runtime.status");
49
+ if (status.capabilities?.deepThink !== true)
50
+ throw new RuntimeError("UNSUPPORTED_OPTION", "Runtime does not support DeepThink; restart it with the updated chat-web package");
51
+ }
52
+ async create(params) {
53
+ await this.checkDeepThink(params.deepThink);
54
+ return this.call("conversations.create", params);
55
+ }
56
+ list() { return this.call("conversations.list"); }
57
+ get(id) { return this.call("conversations.get", { id }); }
58
+ resume(id, options = {}) { return this.call("conversations.resume", { id, ...options }); }
59
+ closeConversation(id) { return this.call("conversations.close", { id }); }
60
+ async submit(params) {
61
+ await this.checkDeepThink(params.deepThink);
62
+ return this.call("turns.create", params);
63
+ }
64
+ getTurn(id) { return this.call("turns.get", { id }); }
65
+ cancel(id) { return this.call("turns.cancel", { id }); }
66
+ async *events(turnId, after = 0, signal) {
67
+ const request = http.request({ socketPath: this.socketPath,
68
+ path: "/events?turnId=" + encodeURIComponent(turnId) + "&after=" + after,
69
+ method: "GET", agent: false, signal });
70
+ const response = await new Promise((resolve, reject) => {
71
+ request.once("response", resolve);
72
+ request.once("error", reject);
73
+ request.end();
74
+ });
75
+ response.setEncoding("utf8");
76
+ try {
77
+ if (response.statusCode !== 200) {
78
+ let body = "";
79
+ for await (const chunk of response)
80
+ body += chunk;
81
+ const envelope = JSON.parse(body);
82
+ throw new RuntimeError(envelope.error?.code ?? "RUNTIME_ERROR", envelope.error?.message ?? "Event subscription failed");
83
+ }
84
+ let pending = "";
85
+ for await (const chunk of response) {
86
+ pending += chunk;
87
+ if (pending.length > 2_000_000)
88
+ throw new RuntimeError("RESPONSE_LIMIT", "Event frame exceeds limit");
89
+ for (;;) {
90
+ const newline = pending.indexOf("\n");
91
+ if (newline < 0)
92
+ break;
93
+ const line = pending.slice(0, newline);
94
+ pending = pending.slice(newline + 1);
95
+ if (line)
96
+ yield JSON.parse(line);
97
+ }
98
+ }
99
+ if (pending.trim())
100
+ throw new RuntimeError("DISCONNECTED", "Truncated runtime event");
101
+ }
102
+ finally {
103
+ response.destroy();
104
+ request.destroy();
105
+ }
106
+ }
107
+ async wait(turnId, onEvent, signal) {
108
+ let after = 0;
109
+ for (let attempt = 0; attempt < 4; attempt++) {
110
+ try {
111
+ for await (const event of this.events(turnId, after, signal)) {
112
+ if (event.seq <= after)
113
+ continue;
114
+ after = event.seq;
115
+ onEvent?.(event);
116
+ if (isTerminal(event.type))
117
+ return this.getTurn(turnId);
118
+ }
119
+ const turn = await this.getTurn(turnId);
120
+ if (isTerminal(turn.status))
121
+ return turn;
122
+ }
123
+ catch (error) {
124
+ if (signal?.aborted)
125
+ throw new RuntimeError("CLIENT_CLOSED", "Client event subscription closed; remote turn continues");
126
+ if (error instanceof RuntimeError && !["DISCONNECTED", "RUNTIME_ERROR"].includes(error.code))
127
+ throw error;
128
+ const current = await this.getTurn(turnId).catch(() => undefined);
129
+ if (current && isTerminal(current.status))
130
+ return current;
131
+ if (attempt === 3)
132
+ throw error;
133
+ }
134
+ await new Promise((resolve) => setTimeout(resolve, 100 * 2 ** attempt));
135
+ }
136
+ throw new RuntimeError("DISCONNECTED", "Event stream ended before this turn completed");
137
+ }
138
+ }
139
+ export class RuntimeChatSession {
140
+ id;
141
+ deepThink;
142
+ releaseOnClose;
143
+ providerConversationId;
144
+ managedOptions;
145
+ client;
146
+ provider;
147
+ activeTurnId;
148
+ interruptRequested = false;
149
+ sending = false;
150
+ localWait;
151
+ turns = 0;
152
+ closed = false;
153
+ constructor(id, provider, socket, deepThink, releaseOnClose = false, providerConversationId, managedOptions) {
154
+ this.id = id;
155
+ this.deepThink = deepThink;
156
+ this.releaseOnClose = releaseOnClose;
157
+ this.providerConversationId = providerConversationId;
158
+ this.managedOptions = managedOptions;
159
+ this.provider = provider;
160
+ this.client = new ChatRuntimeClient(socket);
161
+ }
162
+ static async open(provider, options = {}) {
163
+ if (options.deepThink !== undefined && (provider !== "deepseek" || typeof options.deepThink !== "boolean")) {
164
+ throw new RuntimeError("INVALID_PARAMS", "DeepThink requires a boolean and the DeepSeek provider");
165
+ }
166
+ const managedOptions = options.socketPath ? undefined : { ...options.launch, directory: runtimeDirectory() };
167
+ const socket = options.socketPath ?? await (await import("./managed.js")).ensureChatRuntime(managedOptions);
168
+ const client = new ChatRuntimeClient(socket);
169
+ const chat = options.conversationId ? await client.get(options.conversationId) : await client.create({ provider, accountId: options.accountId, headless: options.headless, deepThink: options.deepThink, providerConversationId: options.providerConversationId });
170
+ if (chat.provider !== provider)
171
+ throw new RuntimeError("PROVIDER_MISMATCH", "Saved conversation uses a different provider");
172
+ return new RuntimeChatSession(chat.id, provider, socket, options.deepThink, options.releaseOnClose, chat.providerConversationId, managedOptions);
173
+ }
174
+ async ensureAvailable() {
175
+ if (this.closed)
176
+ throw new RuntimeError("CHAT_CLOSED", "SDK session is closed");
177
+ if (this.managedOptions)
178
+ await (await import("./managed.js")).ensureChatRuntime(this.managedOptions);
179
+ if (this.closed)
180
+ throw new RuntimeError("CHAT_CLOSED", "SDK session is closed");
181
+ }
182
+ /** Defer browser/auth verification until the queued send owns a worker slot. */
183
+ async prepare() { await this.ensureAvailable(); return this.client.resume(this.id, { allowQueued: true }); }
184
+ async isLoggedIn() { await this.ensureAvailable(); return !!(await this.client.resume(this.id)).ready; }
185
+ async send(message, options = {}) {
186
+ if (options.deepThink !== undefined && typeof options.deepThink !== "boolean")
187
+ throw new RuntimeError("INVALID_PARAMS", "deepThink must be boolean");
188
+ if (this.closed)
189
+ throw new RuntimeError("CHAT_CLOSED", "SDK session is closed");
190
+ if (this.sending)
191
+ throw new RuntimeError("CHAT_BUSY", "This SDK session already has an active send");
192
+ if (options.signal?.aborted)
193
+ throw new DOMException("Aborted", "AbortError");
194
+ this.sending = true;
195
+ this.interruptRequested = false;
196
+ this.localWait = new AbortController();
197
+ const start = Date.now();
198
+ const abort = () => { void this.interruptCurrentTurn().catch(() => undefined); };
199
+ options.signal?.addEventListener("abort", abort, { once: true });
200
+ try {
201
+ await this.ensureAvailable();
202
+ if (options.signal?.aborted || this.interruptRequested)
203
+ throw new DOMException("Aborted", "AbortError");
204
+ const turn = await this.client.submit({ conversationId: this.id, input: message, requestId: options.requestId ?? randomUUID(), timeoutMs: options.timeoutMs, deepThink: options.deepThink ?? this.deepThink });
205
+ this.activeTurnId = turn.id;
206
+ if (this.interruptRequested)
207
+ await this.client.cancel(turn.id);
208
+ let text = "";
209
+ const result = await this.client.wait(turn.id, (event) => {
210
+ if (this.closed)
211
+ return;
212
+ if (event.type === "message_delta")
213
+ text += event.text ?? "";
214
+ else if (event.type === "message_snapshot")
215
+ text = event.text ?? "";
216
+ else {
217
+ options.onStatus?.(event.type);
218
+ return;
219
+ }
220
+ options.onProgress?.(text);
221
+ }, this.localWait.signal);
222
+ if (this.closed)
223
+ throw new RuntimeError("CLIENT_CLOSED", "Client detached; remote turn continues");
224
+ if (result.status !== "completed")
225
+ throw Object.assign(new RuntimeError(result.errorCode ?? result.status.toUpperCase(), result.error ?? result.status), { turnStatus: result.status, turnId: result.id, ...(result.status === "cancelled" ? { reason: "turn_cancelled" } : {}) });
226
+ const chat = await this.client.get(this.id);
227
+ return { response: result.text, message, turnIndex: this.turns++, durationMs: Date.now() - start,
228
+ conversationId: chat.providerConversationId, runtimeConversationId: this.id };
229
+ }
230
+ finally {
231
+ options.signal?.removeEventListener("abort", abort);
232
+ this.activeTurnId = undefined;
233
+ this.localWait = undefined;
234
+ this.sending = false;
235
+ }
236
+ }
237
+ async interruptCurrentTurn() { this.interruptRequested = true; if (this.activeTurnId)
238
+ await this.client.cancel(this.activeTurnId); }
239
+ async close() {
240
+ if (this.closed)
241
+ return;
242
+ this.closed = true;
243
+ this.localWait?.abort();
244
+ // Conductor owns these conversations; closing a task releases its browser.
245
+ // Explicit socket clients keep the original detach-only behavior.
246
+ if (this.releaseOnClose) {
247
+ try {
248
+ await this.client.closeConversation(this.id);
249
+ }
250
+ catch (error) {
251
+ // An idle managed daemon already released its browsers. Never restart just to close.
252
+ if (!this.managedOptions || !["ENOENT", "ECONNREFUSED"].includes(error.code ?? ""))
253
+ throw error;
254
+ }
255
+ }
256
+ }
257
+ }
258
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/runtime/client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,33 @@
1
+ import { startRuntimeServer } from "./server.js";
2
+ const options = JSON.parse(process.argv[2] ?? "{}");
3
+ let server;
4
+ try {
5
+ server = await startRuntimeServer(options);
6
+ const shutdown = () => { void server.close(); };
7
+ process.on("SIGTERM", shutdown);
8
+ process.on("SIGINT", shutdown);
9
+ const configured = Number(process.env.CHAT_WEB_RUNTIME_IDLE_MS ?? 600_000);
10
+ const idleMs = Number.isFinite(configured) && configured >= 1000 ? configured : 600_000;
11
+ const timer = setInterval(() => {
12
+ const status = server.runtime.status();
13
+ if (!status.activeTurns && !status.pinnedChats.length && Date.now() - server.lastActivity > idleMs)
14
+ void server.close();
15
+ }, 1000);
16
+ timer.unref();
17
+ try {
18
+ await server.closed;
19
+ }
20
+ finally {
21
+ clearInterval(timer);
22
+ process.off("SIGTERM", shutdown);
23
+ process.off("SIGINT", shutdown);
24
+ }
25
+ }
26
+ catch (error) {
27
+ // Concurrent starters share the winner; never stop an existing daemon.
28
+ if (error.code !== "RUNTIME_LOCKED") {
29
+ console.error(error);
30
+ process.exitCode = 1;
31
+ }
32
+ }
33
+ //# sourceMappingURL=daemon.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"daemon.js","sourceRoot":"","sources":["../../src/runtime/daemon.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAEjD,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC;AACpD,IAAI,MAAkE,CAAC;AACvE,IAAI,CAAC;IACH,MAAM,GAAG,MAAM,kBAAkB,CAAC,OAAO,CAAC,CAAC;IAC3C,MAAM,QAAQ,GAAG,GAAG,EAAE,GAAG,KAAK,MAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;IACjD,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IAChC,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAC/B,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,wBAAwB,IAAI,OAAO,CAAC,CAAC;IAC3E,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,UAAU,IAAI,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC;IACxF,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE;QAC7B,MAAM,MAAM,GAAG,MAAO,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;QACxC,IAAI,CAAC,MAAM,CAAC,WAAW,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,MAAO,CAAC,YAAY,GAAG,MAAM;YAAE,KAAK,MAAO,CAAC,KAAK,EAAE,CAAC;IAC5H,CAAC,EAAE,IAAI,CAAC,CAAC;IACT,KAAK,CAAC,KAAK,EAAE,CAAC;IACd,IAAI,CAAC;QAAC,MAAM,MAAM,CAAC,MAAM,CAAC;IAAC,CAAC;YACpB,CAAC;QAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAAC,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;QAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAAC,CAAC;AACtG,CAAC;AAAC,OAAO,KAAK,EAAE,CAAC;IACf,uEAAuE;IACvE,IAAK,KAA2B,CAAC,IAAI,KAAK,gBAAgB,EAAE,CAAC;QAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAAC,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;IAAC,CAAC;AAC7G,CAAC"}