@vibecook/ghosttea-electron 0.9.3 → 0.9.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/backend.d.ts CHANGED
@@ -23,6 +23,6 @@ export declare class GhostteaElectronBackend extends EventEmitter {
23
23
  get automation(): GhostteaAutomationClient;
24
24
  start(): Promise<void>;
25
25
  attachRenderer(webContents: WebContents): void;
26
- stop(): void;
26
+ stop(): Promise<void>;
27
27
  }
28
28
  //# sourceMappingURL=backend.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"backend.d.ts","sourceRoot":"","sources":["../src/backend.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAC5C,OAAO,EAAE,wBAAwB,EAAE,KAAK,+BAA+B,EAAE,MAAM,iBAAiB,CAAC;AACjG,OAAO,EAA0B,KAAK,6BAA6B,EAAE,MAAM,aAAa,CAAC;AACzF,OAAO,EAAsB,KAAK,yBAAyB,EAAE,MAAM,iBAAiB,CAAC;AACrF,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC;AAE3D,MAAM,MAAM,8BAA8B,GACtC;IACE,IAAI,EAAE,SAAS,CAAC;IAChB,MAAM,EAAE,yBAAyB,CAAC;IAClC,MAAM,CAAC,EAAE,IAAI,CAAC,6BAA6B,EAAE,YAAY,CAAC,CAAC;IAC3D,UAAU,CAAC,EAAE,+BAA+B,CAAC;CAC9C,GACD;IACE,IAAI,EAAE,UAAU,CAAC;IACjB,UAAU,EAAE,wBAAwB,CAAC;IACrC,MAAM,CAAC,EAAE,IAAI,CAAC,6BAA6B,EAAE,YAAY,CAAC,CAAC;IAC3D,UAAU,CAAC,EAAE,+BAA+B,CAAC;CAC9C,CAAC;AAEN,qBAAa,uBAAwB,SAAQ,YAAY;;IAMvD,YAAY,OAAO,EAAE,8BAA8B,EAQlD;IASD,IAAI,UAAU,IAAI,wBAAwB,CAEzC;IAED,IAAI,OAAO,IAAI,OAAO,CAGrB;IAED,IAAI,UAAU,IAAI,wBAAwB,CAGzC;IAEK,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAkB3B;IAED,cAAc,CAAC,WAAW,EAAE,WAAW,GAAG,IAAI,CAE7C;IAED,IAAI,IAAI,IAAI,CAGX;CACF"}
1
+ {"version":3,"file":"backend.d.ts","sourceRoot":"","sources":["../src/backend.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAC5C,OAAO,EAAE,wBAAwB,EAAE,KAAK,+BAA+B,EAAE,MAAM,iBAAiB,CAAC;AACjG,OAAO,EAA0B,KAAK,6BAA6B,EAAE,MAAM,aAAa,CAAC;AACzF,OAAO,EAAsB,KAAK,yBAAyB,EAAE,MAAM,iBAAiB,CAAC;AACrF,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC;AAE3D,MAAM,MAAM,8BAA8B,GACtC;IACE,IAAI,EAAE,SAAS,CAAC;IAChB,MAAM,EAAE,yBAAyB,CAAC;IAClC,MAAM,CAAC,EAAE,IAAI,CAAC,6BAA6B,EAAE,YAAY,CAAC,CAAC;IAC3D,UAAU,CAAC,EAAE,+BAA+B,CAAC;CAC9C,GACD;IACE,IAAI,EAAE,UAAU,CAAC;IACjB,UAAU,EAAE,wBAAwB,CAAC;IACrC,MAAM,CAAC,EAAE,IAAI,CAAC,6BAA6B,EAAE,YAAY,CAAC,CAAC;IAC3D,UAAU,CAAC,EAAE,+BAA+B,CAAC;CAC9C,CAAC;AAEN,qBAAa,uBAAwB,SAAQ,YAAY;;IAMvD,YAAY,OAAO,EAAE,8BAA8B,EAQlD;IASD,IAAI,UAAU,IAAI,wBAAwB,CAEzC;IAED,IAAI,OAAO,IAAI,OAAO,CAGrB;IAED,IAAI,UAAU,IAAI,wBAAwB,CAGzC;IAEK,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAkB3B;IAED,cAAc,CAAC,WAAW,EAAE,WAAW,GAAG,IAAI,CAE7C;IAEK,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAG1B;CACF"}
package/dist/backend.js CHANGED
@@ -55,9 +55,9 @@ export class GhostteaElectronBackend extends EventEmitter {
55
55
  attachRenderer(webContents) {
56
56
  this.#bridge?.attachRenderer(webContents);
57
57
  }
58
- stop() {
58
+ async stop() {
59
59
  this.#resetClients();
60
- this.#supervisor?.stop();
60
+ await this.#supervisor?.stop();
61
61
  }
62
62
  }
63
63
  //# sourceMappingURL=backend.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"backend.js","sourceRoot":"","sources":["../src/backend.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"backend.js","sourceRoot":"","sources":["../src/backend.ts"],"names":[],"mappings":"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"}
@@ -17,6 +17,8 @@ export interface TerminalSupervisorOptions {
17
17
  runtimeDirectory?: string;
18
18
  environment?: NodeJS.ProcessEnv;
19
19
  startupTimeoutMs?: number;
20
+ /** Grace after the shutdown request before SIGKILL. Must exceed the daemon's drain budget. */
21
+ shutdownTimeoutMs?: number;
20
22
  onStderr?: (line: string) => void;
21
23
  }
22
24
  export declare class TerminalSupervisor extends EventEmitter {
@@ -25,6 +27,6 @@ export declare class TerminalSupervisor extends EventEmitter {
25
27
  constructor(options: TerminalSupervisorOptions);
26
28
  start(): Promise<void>;
27
29
  get running(): boolean;
28
- stop(): void;
30
+ stop(): Promise<void>;
29
31
  }
30
32
  //# sourceMappingURL=supervisor.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"supervisor.d.ts","sourceRoot":"","sources":["../src/supervisor.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAK3C,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC;AAE3D,MAAM,MAAM,cAAc,GACtB;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,GACnE;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,YAAY,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,OAAO,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC;AAEnG,MAAM,WAAW,yBAAyB;IACxC,MAAM,EAAE,cAAc,CAAC;IACvB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IAChC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CACnC;AAED,qBAAa,kBAAmB,SAAQ,YAAY;;IAQlD,QAAQ,CAAC,UAAU,EAAE,wBAAwB,CAAC;IAE9C,YAAY,OAAO,EAAE,yBAAyB,EAa7C;IAEK,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAM3B;IAkED,IAAI,OAAO,IAAI,OAAO,CAErB;IAED,IAAI,IAAI,IAAI,CAmBX;CAyCF"}
1
+ {"version":3,"file":"supervisor.d.ts","sourceRoot":"","sources":["../src/supervisor.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAK3C,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC;AAU3D,MAAM,MAAM,cAAc,GACtB;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,GACnE;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,YAAY,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,OAAO,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC;AAEnG,MAAM,WAAW,yBAAyB;IACxC,MAAM,EAAE,cAAc,CAAC;IACvB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IAChC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,8FAA8F;IAC9F,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CACnC;AAED,qBAAa,kBAAmB,SAAQ,YAAY;;IAUlD,QAAQ,CAAC,UAAU,EAAE,wBAAwB,CAAC;IAE9C,YAAY,OAAO,EAAE,yBAAyB,EAmB7C;IAEK,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAO3B;IAkFD,IAAI,OAAO,IAAI,OAAO,CAErB;IAEK,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAK1B;CA4GF"}
@@ -5,17 +5,29 @@ import { existsSync, mkdirSync, mkdtempSync, rmSync } from "node:fs";
5
5
  import { tmpdir } from "node:os";
6
6
  import { dirname, join } from "node:path";
7
7
  import { endpointPersists, localEndpoints } from "@vibecook/ghosttea-client";
8
+ const DAEMON_DRAIN_BUDGET_MS = 10_000;
9
+ const DEFAULT_SHUTDOWN_TIMEOUT_MS = 12_000;
10
+ const FORCE_EXIT_TIMEOUT_MS = 2_000;
11
+ function childHasExited(child) {
12
+ return child.exitCode !== null || child.signalCode !== null;
13
+ }
8
14
  export class TerminalSupervisor extends EventEmitter {
9
15
  #child;
10
16
  #startPromise;
17
+ #stopPromise;
11
18
  #ready = false;
12
19
  #expectedExits = new WeakSet();
20
+ #childStops = new WeakMap();
13
21
  #options;
14
22
  #runtimeDir;
15
23
  #ownsRuntimeDir;
16
24
  connection;
17
25
  constructor(options) {
18
26
  super();
27
+ if (options.shutdownTimeoutMs !== undefined &&
28
+ (!Number.isFinite(options.shutdownTimeoutMs) || options.shutdownTimeoutMs <= DAEMON_DRAIN_BUDGET_MS)) {
29
+ throw new RangeError(`shutdownTimeoutMs must exceed the daemon's ${DAEMON_DRAIN_BUDGET_MS} ms drain budget`);
30
+ }
19
31
  this.#options = options;
20
32
  this.#ownsRuntimeDir = options.runtimeDirectory === undefined;
21
33
  this.#runtimeDir =
@@ -30,6 +42,8 @@ export class TerminalSupervisor extends EventEmitter {
30
42
  };
31
43
  }
32
44
  async start() {
45
+ if (this.#stopPromise)
46
+ await this.#stopPromise;
33
47
  if (this.#ready)
34
48
  return;
35
49
  this.#startPromise ??= this.#start().finally(() => {
@@ -51,6 +65,9 @@ export class TerminalSupervisor extends EventEmitter {
51
65
  GHOSTTEA_CONTROL_SOCKET: this.connection.controlSocket,
52
66
  GHOSTTEA_FRAME_SOCKET: this.connection.frameSocket,
53
67
  GHOSTTEA_AUTH_TOKEN: this.connection.authToken,
68
+ // EOF is a portable parent-death signal. It covers crashes and force
69
+ // termination, where Electron never gets a chance to call stop().
70
+ GHOSTTEA_PARENT_WATCH: "1",
54
71
  };
55
72
  const binary = this.#options.binary;
56
73
  if (binary.kind === "executable") {
@@ -59,7 +76,7 @@ export class TerminalSupervisor extends EventEmitter {
59
76
  this.#child = spawn(binary.path, binary.args ?? [], {
60
77
  cwd: binary.cwd,
61
78
  env: environment,
62
- stdio: ["ignore", "pipe", "pipe"],
79
+ stdio: ["pipe", "pipe", "pipe"],
63
80
  });
64
81
  }
65
82
  else {
@@ -75,24 +92,42 @@ export class TerminalSupervisor extends EventEmitter {
75
92
  ], {
76
93
  cwd: dirname(binary.manifestPath),
77
94
  env: environment,
78
- stdio: ["ignore", "pipe", "pipe"],
95
+ stdio: ["pipe", "pipe", "pipe"],
79
96
  });
80
97
  }
81
- this.#child.stderr?.on("data", (chunk) => {
98
+ const running = this.#child;
99
+ if (!running)
100
+ throw new Error("ghosttead failed to start");
101
+ running.stderr?.on("data", (chunk) => {
82
102
  const line = String(chunk).trimEnd();
83
103
  if (this.#options.onStderr)
84
104
  this.#options.onStderr(line);
85
105
  else
86
106
  console.error(`[ghosttead] ${line}`);
87
107
  });
88
- await this.#waitUntilReady();
89
- const running = this.#child;
90
- if (!running || running.exitCode !== null || running.signalCode !== null) {
91
- this.#child = undefined;
92
- throw new Error("ghosttead exited immediately after startup");
108
+ try {
109
+ await this.#waitUntilReady(running);
110
+ if (childHasExited(running) || this.#expectedExits.has(running)) {
111
+ throw new Error("ghosttead exited immediately after startup");
112
+ }
113
+ }
114
+ catch (error) {
115
+ this.#expectedExits.add(running);
116
+ try {
117
+ await this.#stopChild(running);
118
+ this.#cleanupRuntime();
119
+ }
120
+ catch (stopError) {
121
+ throw new Error(`ghosttead startup failed (${String(error)}) and cleanup also failed`, { cause: stopError });
122
+ }
123
+ finally {
124
+ if (childHasExited(running) && this.#child === running)
125
+ this.#child = undefined;
126
+ }
127
+ throw error;
93
128
  }
94
129
  this.#ready = true;
95
- running?.once("exit", (code, signal) => {
130
+ running.once("exit", (code, signal) => {
96
131
  const expected = this.#expectedExits.delete(running);
97
132
  if (this.#child !== running)
98
133
  return;
@@ -105,31 +140,85 @@ export class TerminalSupervisor extends EventEmitter {
105
140
  get running() {
106
141
  return this.#ready && this.#child !== undefined;
107
142
  }
108
- stop() {
143
+ async stop() {
144
+ this.#stopPromise ??= this.#stop().finally(() => {
145
+ this.#stopPromise = undefined;
146
+ });
147
+ return this.#stopPromise;
148
+ }
149
+ async #stop() {
109
150
  this.#ready = false;
110
151
  const child = this.#child;
111
152
  if (child) {
112
153
  this.#expectedExits.add(child);
113
- child.kill("SIGTERM");
114
- // A daemon wedged past SIGTERM would linger holding PTYs and sockets.
115
- // The timer is unref'd so a quitting app never waits on it; if the app
116
- // exits first the daemon dies with its pipes as before.
117
- const escalation = setTimeout(() => {
118
- if (child.exitCode === null && child.signalCode === null)
119
- child.kill("SIGKILL");
120
- }, 3_000);
121
- escalation.unref?.();
122
- child.once("exit", () => clearTimeout(escalation));
154
+ await this.#stopChild(child);
123
155
  if (this.#child === child)
124
156
  this.#child = undefined;
125
157
  }
158
+ this.#cleanupRuntime();
159
+ }
160
+ #stopChild(child) {
161
+ const existing = this.#childStops.get(child);
162
+ if (existing)
163
+ return existing;
164
+ const stopping = new Promise((resolve, reject) => {
165
+ if (childHasExited(child)) {
166
+ resolve();
167
+ return;
168
+ }
169
+ let forceExit;
170
+ let settled = false;
171
+ const cleanup = () => {
172
+ clearTimeout(escalation);
173
+ if (forceExit)
174
+ clearTimeout(forceExit);
175
+ child.off("exit", onExit);
176
+ child.off("close", onExit);
177
+ };
178
+ const finish = (error) => {
179
+ if (settled)
180
+ return;
181
+ settled = true;
182
+ cleanup();
183
+ if (error)
184
+ reject(error);
185
+ else
186
+ resolve();
187
+ };
188
+ const onExit = () => finish();
189
+ child.once("exit", onExit);
190
+ child.once("close", onExit);
191
+ const escalation = setTimeout(() => {
192
+ if (!childHasExited(child))
193
+ child.kill("SIGKILL");
194
+ forceExit = setTimeout(() => finish(new Error("ghosttead did not exit after forced termination")), FORCE_EXIT_TIMEOUT_MS);
195
+ }, this.#options.shutdownTimeoutMs ?? DEFAULT_SHUTDOWN_TIMEOUT_MS);
196
+ // Closing stdin is both the ordinary managed-shutdown request and the
197
+ // parent-death channel. A direct Unix executable also receives the
198
+ // compatibility signal for older daemon binaries. A `cargo run` wrapper
199
+ // must stay alive to wait for the actual daemon that inherited the pipe.
200
+ try {
201
+ child.stdin?.end();
202
+ }
203
+ catch {
204
+ // A concurrently exiting child can close the stream first; the exit
205
+ // listener above is still the authority for completion.
206
+ }
207
+ if (this.#options.binary.kind === "executable" && process.platform !== "win32" && !childHasExited(child)) {
208
+ child.kill("SIGTERM");
209
+ }
210
+ });
211
+ const tracked = stopping.finally(() => this.#childStops.delete(child));
212
+ this.#childStops.set(child, tracked);
213
+ return tracked;
214
+ }
215
+ #cleanupRuntime() {
126
216
  rmSync(this.connection.controlSocket, { force: true });
127
217
  rmSync(this.connection.frameSocket, { force: true });
128
218
  if (this.#ownsRuntimeDir)
129
219
  rmSync(this.#runtimeDir, { recursive: true, force: true });
130
220
  }
131
- async #waitUntilReady() {
132
- const child = this.#child;
221
+ async #waitUntilReady(child) {
133
222
  if (!child?.stdout)
134
223
  throw new Error("ghosttead did not expose stdout");
135
224
  const stdout = child.stdout;
@@ -147,9 +236,6 @@ export class TerminalSupervisor extends EventEmitter {
147
236
  return;
148
237
  settled = true;
149
238
  cleanup();
150
- child.kill("SIGTERM");
151
- if (this.#child === child)
152
- this.#child = undefined;
153
239
  reject(error);
154
240
  };
155
241
  const timeout = setTimeout(() => fail(new Error("ghosttead startup timed out")), this.#options.startupTimeoutMs ?? 120_000);
@@ -1 +1 @@
1
- {"version":3,"file":"supervisor.js","sourceRoot":"","sources":["../src/supervisor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"supervisor.js","sourceRoot":"","sources":["../src/supervisor.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vibecook/ghosttea-electron",
3
- "version": "0.9.3",
3
+ "version": "0.9.4",
4
4
  "description": "Electron lifecycle and direct renderer transport for Ghosttea.",
5
5
  "license": "MIT",
6
6
  "author": "James Yong",
@@ -64,8 +64,8 @@
64
64
  "prepublishOnly": "npm run build"
65
65
  },
66
66
  "dependencies": {
67
- "@vibecook/ghosttea-client": "0.9.3",
68
- "@vibecook/ghosttea-protocol": "0.9.3"
67
+ "@vibecook/ghosttea-client": "0.9.4",
68
+ "@vibecook/ghosttea-protocol": "0.9.4"
69
69
  },
70
70
  "peerDependencies": {
71
71
  "electron": ">=35"