@monotykamary/localterm-server 2.79.6 → 2.79.8

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 (39) hide show
  1. package/dist/automation-git-watcher.d.ts +2 -8
  2. package/dist/automation-git-watcher.d.ts.map +1 -1
  3. package/dist/automation-git-watcher.js +4 -16
  4. package/dist/automation-git-watcher.js.map +1 -1
  5. package/dist/constants.d.ts +3 -0
  6. package/dist/constants.d.ts.map +1 -1
  7. package/dist/constants.js +4 -0
  8. package/dist/constants.js.map +1 -1
  9. package/dist/folder-watch-manager.d.ts +2 -8
  10. package/dist/folder-watch-manager.d.ts.map +1 -1
  11. package/dist/folder-watch-manager.js +4 -17
  12. package/dist/folder-watch-manager.js.map +1 -1
  13. package/dist/git-diff-watcher.d.ts +3 -0
  14. package/dist/git-diff-watcher.d.ts.map +1 -1
  15. package/dist/git-diff-watcher.js +14 -15
  16. package/dist/git-diff-watcher.js.map +1 -1
  17. package/dist/process-activity-watcher.d.ts +2 -9
  18. package/dist/process-activity-watcher.d.ts.map +1 -1
  19. package/dist/process-activity-watcher.js +8 -14
  20. package/dist/process-activity-watcher.js.map +1 -1
  21. package/dist/session-lifecycle-policy.d.ts +1 -0
  22. package/dist/session-lifecycle-policy.d.ts.map +1 -1
  23. package/dist/session-lifecycle-policy.js +6 -5
  24. package/dist/session-lifecycle-policy.js.map +1 -1
  25. package/dist/session-manager.js +1 -1
  26. package/dist/session-manager.js.map +1 -1
  27. package/dist/session-output-coordinator.d.ts +10 -2
  28. package/dist/session-output-coordinator.d.ts.map +1 -1
  29. package/dist/session-output-coordinator.js +111 -38
  30. package/dist/session-output-coordinator.js.map +1 -1
  31. package/dist/utils/watch-filesystem.d.ts +3 -0
  32. package/dist/utils/watch-filesystem.d.ts.map +1 -0
  33. package/dist/utils/watch-filesystem.js +29 -0
  34. package/dist/utils/watch-filesystem.js.map +1 -0
  35. package/dist/utils/watch-with-recovery.d.ts +16 -0
  36. package/dist/utils/watch-with-recovery.d.ts.map +1 -0
  37. package/dist/utils/watch-with-recovery.js +85 -0
  38. package/dist/utils/watch-with-recovery.js.map +1 -0
  39. package/package.json +2 -1
@@ -0,0 +1,16 @@
1
+ export interface WatchSubscription {
2
+ close: () => void;
3
+ }
4
+ interface FileWatchHandle {
5
+ close: () => void | Promise<void>;
6
+ on: (event: "error", listener: (error: unknown) => void) => unknown;
7
+ unref?: () => void;
8
+ }
9
+ export interface FileWatchOptions {
10
+ recursive: boolean;
11
+ ignoredDirectories?: readonly string[];
12
+ }
13
+ export type WatchFactory = (target: string, options: FileWatchOptions, listener: (event: string, filename: string | null) => void) => FileWatchHandle;
14
+ export declare const watchWithRecovery: (target: string, options: FileWatchOptions, listener: (event: string, filename: string | null) => void, factory?: WatchFactory) => WatchSubscription;
15
+ export {};
16
+ //# sourceMappingURL=watch-with-recovery.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"watch-with-recovery.d.ts","sourceRoot":"","sources":["../../src/utils/watch-with-recovery.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,IAAI,CAAC;CACnB;AAED,UAAU,eAAe;IACvB,KAAK,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAClC,EAAE,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,KAAK,OAAO,CAAC;IACpE,KAAK,CAAC,EAAE,MAAM,IAAI,CAAC;CACpB;AAED,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,OAAO,CAAC;IACnB,kBAAkB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CACxC;AAED,MAAM,MAAM,YAAY,GAAG,CACzB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,gBAAgB,EACzB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,KACvD,eAAe,CAAC;AAErB,eAAO,MAAM,iBAAiB,WACpB,MAAM,WACL,gBAAgB,YACf,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,YACjD,YAAY,KACpB,iBA0EF,CAAC"}
@@ -0,0 +1,85 @@
1
+ import { FILE_WATCH_RETRY_INITIAL_MS, FILE_WATCH_RETRY_MAX_MS } from "../constants.js";
2
+ import { watchFilesystem } from "./watch-filesystem.js";
3
+ export const watchWithRecovery = (target, options, listener, factory = watchFilesystem) => {
4
+ let closed = false;
5
+ let active = null;
6
+ let retry = null;
7
+ let delayMs = FILE_WATCH_RETRY_INITIAL_MS;
8
+ let lastFailure = null;
9
+ const report = (error) => {
10
+ const message = error instanceof Error ? error.message : String(error);
11
+ if (lastFailure === message)
12
+ return;
13
+ lastFailure = message;
14
+ console.warn(`filesystem watcher failed (${target}): ${message}; retrying`);
15
+ };
16
+ const release = (handle) => {
17
+ try {
18
+ return Promise.resolve(handle.close()).catch(report);
19
+ }
20
+ catch (error) {
21
+ report(error);
22
+ return Promise.resolve();
23
+ }
24
+ };
25
+ const scheduleRetry = () => {
26
+ if (closed || retry !== null)
27
+ return;
28
+ retry = setTimeout(() => {
29
+ retry = null;
30
+ start();
31
+ }, delayMs);
32
+ retry.unref?.();
33
+ delayMs = Math.min(delayMs * 2, FILE_WATCH_RETRY_MAX_MS);
34
+ };
35
+ const start = () => {
36
+ if (closed)
37
+ return;
38
+ let handle;
39
+ try {
40
+ handle = factory(target, options, (event, filename) => {
41
+ if (closed || active !== handle)
42
+ return;
43
+ delayMs = FILE_WATCH_RETRY_INITIAL_MS;
44
+ lastFailure = null;
45
+ listener(event, filename);
46
+ });
47
+ active = handle;
48
+ handle.on("error", (error) => {
49
+ if (closed || active !== handle)
50
+ return;
51
+ active = null;
52
+ report(error);
53
+ // Wait for asynchronous close before allocating replacement watches.
54
+ // Leave the error listener attached to absorb late events during close.
55
+ void release(handle).then(scheduleRetry);
56
+ });
57
+ handle.unref?.();
58
+ }
59
+ catch (error) {
60
+ report(error);
61
+ const failed = active;
62
+ active = null;
63
+ if (failed)
64
+ void release(failed).then(scheduleRetry);
65
+ else
66
+ scheduleRetry();
67
+ }
68
+ };
69
+ start();
70
+ return {
71
+ close: () => {
72
+ if (closed)
73
+ return;
74
+ closed = true;
75
+ if (retry !== null)
76
+ clearTimeout(retry);
77
+ retry = null;
78
+ const handle = active;
79
+ active = null;
80
+ if (handle)
81
+ void release(handle);
82
+ },
83
+ };
84
+ };
85
+ //# sourceMappingURL=watch-with-recovery.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"watch-with-recovery.js","sourceRoot":"","sources":["../../src/utils/watch-with-recovery.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@monotykamary/localterm-server",
3
- "version": "2.79.6",
3
+ "version": "2.79.8",
4
4
  "description": "PTY-backed HTTP/WebSocket server that powers localterm, built on Hono + node-pty.",
5
5
  "keywords": [
6
6
  "hono",
@@ -80,6 +80,7 @@
80
80
  "@simplewebauthn/server": "^13.3.2",
81
81
  "@xterm/headless": "6.1.0-beta.287",
82
82
  "age-encryption": "^0.3.0",
83
+ "chokidar": "^4.0.3",
83
84
  "gray-matter": "^4.0.3",
84
85
  "hono": "^4.13.1",
85
86
  "node-pty": "1.1.0",