@pentoshi/clai 3.8.34 → 3.8.39

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.
@@ -42,6 +42,7 @@ export declare class RendererLifecycle {
42
42
  private readonly disposers;
43
43
  private started;
44
44
  private shuttingDown;
45
+ private shutdownPromise;
45
46
  private destroyed;
46
47
  private lastSigintAt;
47
48
  private readonly listeners;
@@ -52,9 +53,20 @@ export declare class RendererLifecycle {
52
53
  /**
53
54
  * Idempotent teardown: dispose extra resources in reverse order, then destroy
54
55
  * the renderer. Safe to call from multiple signals/error paths concurrently.
56
+ *
57
+ * Concurrent callers await the SAME in-flight teardown instead of returning
58
+ * early. This matters at quit: a second exit trigger (App Ctrl+C plus a raw
59
+ * SIGINT, SIGTERM during shutdown, etc.) must not let `shutdownAndExit` call
60
+ * `process.exit()` while the first shutdown's disposers — including the final
61
+ * history flush — are still writing to disk. Returning early here is exactly
62
+ * how a terminal `/compact` save was being truncated before it hit disk.
55
63
  */
56
64
  shutdown(): Promise<void>;
57
- /** Tear down fully, then exit — destroy always precedes exit. */
65
+ private runShutdown;
66
+ /**
67
+ * Tear down fully, then exit — destroy always precedes exit, and exit never
68
+ * runs until the (possibly already in-flight) shutdown has fully completed.
69
+ */
58
70
  shutdownAndExit(code: number): Promise<void>;
59
71
  private installHandlers;
60
72
  private addListener;
@@ -20,6 +20,7 @@ export class RendererLifecycle {
20
20
  disposers;
21
21
  started = false;
22
22
  shuttingDown = false;
23
+ shutdownPromise;
23
24
  destroyed = false;
24
25
  lastSigintAt = 0;
25
26
  listeners = [];
@@ -49,11 +50,22 @@ export class RendererLifecycle {
49
50
  /**
50
51
  * Idempotent teardown: dispose extra resources in reverse order, then destroy
51
52
  * the renderer. Safe to call from multiple signals/error paths concurrently.
53
+ *
54
+ * Concurrent callers await the SAME in-flight teardown instead of returning
55
+ * early. This matters at quit: a second exit trigger (App Ctrl+C plus a raw
56
+ * SIGINT, SIGTERM during shutdown, etc.) must not let `shutdownAndExit` call
57
+ * `process.exit()` while the first shutdown's disposers — including the final
58
+ * history flush — are still writing to disk. Returning early here is exactly
59
+ * how a terminal `/compact` save was being truncated before it hit disk.
52
60
  */
53
61
  async shutdown() {
54
- if (this.shuttingDown)
55
- return;
62
+ if (this.shutdownPromise)
63
+ return this.shutdownPromise;
56
64
  this.shuttingDown = true;
65
+ this.shutdownPromise = this.runShutdown();
66
+ return this.shutdownPromise;
67
+ }
68
+ async runShutdown() {
57
69
  this.removeHandlers();
58
70
  for (let i = this.disposers.length - 1; i >= 0; i--) {
59
71
  const disposer = this.disposers[i];
@@ -71,7 +83,10 @@ export class RendererLifecycle {
71
83
  await this.options.handle.destroy();
72
84
  }
73
85
  }
74
- /** Tear down fully, then exit — destroy always precedes exit. */
86
+ /**
87
+ * Tear down fully, then exit — destroy always precedes exit, and exit never
88
+ * runs until the (possibly already in-flight) shutdown has fully completed.
89
+ */
75
90
  async shutdownAndExit(code) {
76
91
  await this.shutdown();
77
92
  this.proc.exit(code);
@@ -1 +1 @@
1
- {"version":3,"file":"lifecycle.js","sourceRoot":"","sources":["../../../src/tui-v2/bootstrap/lifecycle.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"lifecycle.js","sourceRoot":"","sources":["../../../src/tui-v2/bootstrap/lifecycle.ts"],"names":[],"mappings":"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"}
@@ -2,5 +2,5 @@
2
2
  * AUTO-GENERATED by scripts/sync-version.mjs — do not edit by hand.
3
3
  * Source of truth: package.json "version".
4
4
  */
5
- export declare const VERSION: "3.8.34";
6
- export declare const VERSION_TAG: "v3.8.34";
5
+ export declare const VERSION: "3.8.39";
6
+ export declare const VERSION_TAG: "v3.8.39";
@@ -2,6 +2,6 @@
2
2
  * AUTO-GENERATED by scripts/sync-version.mjs — do not edit by hand.
3
3
  * Source of truth: package.json "version".
4
4
  */
5
- export const VERSION = "3.8.34";
6
- export const VERSION_TAG = "v3.8.34";
5
+ export const VERSION = "3.8.39";
6
+ export const VERSION_TAG = "v3.8.39";
7
7
  //# sourceMappingURL=version.generated.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pentoshi/clai",
3
- "version": "3.8.34",
3
+ "version": "3.8.39",
4
4
  "description": "A fast, cross-platform AI CLI assistant with ask and agent modes for shell tasks, file operations, and cybersecurity workflows.",
5
5
  "type": "module",
6
6
  "license": "MIT",