@hasna/browser 0.4.5 → 0.4.7

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.
@@ -1 +1 @@
1
- {"version":3,"file":"gallery.d.ts","sourceRoot":"","sources":["../../src/db/gallery.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAgDpE,wBAAgB,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,GAAG,YAAY,CAAC,GAAG,YAAY,CA4BvF;AAED,wBAAgB,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI,CAIxD;AAED,MAAM,WAAW,aAAa;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,wBAAgB,WAAW,CAAC,MAAM,CAAC,EAAE,aAAa,GAAG,YAAY,EAAE,CAqBlE;AAED,wBAAgB,WAAW,CACzB,EAAE,EAAE,MAAM,EACV,IAAI,EAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,OAAO,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAA;CAAE,GAC/D,YAAY,GAAG,IAAI,CAarB;AAED,wBAAgB,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAG5C;AAED,wBAAgB,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI,CAKrE;AAED,wBAAgB,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI,CAIvE;AAED,wBAAgB,aAAa,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,YAAY,GAAG,IAAI,CAE7E;AAED,wBAAgB,aAAa,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,SAAK,GAAG,YAAY,EAAE,CASnE;AAED,wBAAgB,eAAe,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,YAAY,CA2BhE"}
1
+ {"version":3,"file":"gallery.d.ts","sourceRoot":"","sources":["../../src/db/gallery.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAwDpE,wBAAgB,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,GAAG,YAAY,CAAC,GAAG,YAAY,CA8BvF;AAED,wBAAgB,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI,CAIxD;AAED,MAAM,WAAW,aAAa;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,wBAAgB,WAAW,CAAC,MAAM,CAAC,EAAE,aAAa,GAAG,YAAY,EAAE,CAqBlE;AAED,wBAAgB,WAAW,CACzB,EAAE,EAAE,MAAM,EACV,IAAI,EAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,OAAO,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAA;CAAE,GAC/D,YAAY,GAAG,IAAI,CAarB;AAED,wBAAgB,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAG5C;AAED,wBAAgB,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI,CAKrE;AAED,wBAAgB,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI,CAIvE;AAED,wBAAgB,aAAa,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,YAAY,GAAG,IAAI,CAE7E;AAED,wBAAgB,aAAa,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,SAAK,GAAG,YAAY,EAAE,CASnE;AAED,wBAAgB,eAAe,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,YAAY,CA2BhE"}
@@ -1,25 +1,55 @@
1
1
  import { type ChildProcess } from "node:child_process";
2
2
  import type { Browser, Page } from "playwright";
3
3
  export type TuiTheme = "dark" | "light" | "system";
4
+ export type TuiReadMethod = "buffer" | "dom";
5
+ export interface TuiRowRef {
6
+ row: number;
7
+ text: string;
8
+ visible: boolean;
9
+ selector?: string;
10
+ }
11
+ export interface TuiState {
12
+ method: TuiReadMethod;
13
+ text: string;
14
+ rows: string[];
15
+ row_count: number;
16
+ cols: number | null;
17
+ total_rows: number;
18
+ buffer_length: number | null;
19
+ cursor_row: number;
20
+ cursor_col: number;
21
+ font_size: number | null;
22
+ theme: "dark" | "light";
23
+ refs: Record<string, TuiRowRef>;
24
+ }
4
25
  export interface TuiSession {
5
26
  ttydProcess: ChildProcess;
6
27
  port: number;
7
28
  browser: Browser;
8
29
  page: Page;
9
30
  theme: TuiTheme;
31
+ method: TuiReadMethod;
32
+ lastHealthCheck: number;
33
+ reconnectCount: number;
10
34
  }
35
+ export type TuiHealthStatus = {
36
+ healthy: true;
37
+ latency_ms: number;
38
+ } | {
39
+ healthy: false;
40
+ reason: string;
41
+ };
11
42
  /**
12
- * Check if ttyd is installed on this system.
43
+ * Probe the ttyd page with a cheap evaluate call to determine if the connection
44
+ * is still alive. Returns within HEALTH_CHECK_TIMEOUT_MS.
13
45
  */
14
- export declare function isTuiAvailable(): boolean;
46
+ export declare function isTuiHealthy(session: TuiSession): Promise<TuiHealthStatus>;
15
47
  /**
16
- * Launch a terminal app via ttyd and connect Playwright to it.
17
- *
18
- * @param command - The shell command to run (e.g. "htop", "npm start", "python app.py")
19
- * @param options - Viewport and headless options
20
- * @returns TuiSession with Playwright page connected to the ttyd web UI
48
+ * Attempt to reconnect to a stuck ttyd session. Kills the old process, restarts
49
+ * ttyd on the same port, and re-attaches Playwright. Returns a new TuiSession;
50
+ * the old session is invalid after this call.
21
51
  */
22
- export declare function launchTui(command: string, options?: {
52
+ export declare function reconnectTui(session: TuiSession, command: string, options?: {
23
53
  headless?: boolean;
24
54
  viewport?: {
25
55
  width: number;
@@ -27,27 +57,37 @@ export declare function launchTui(command: string, options?: {
27
57
  };
28
58
  theme?: TuiTheme;
29
59
  fontSize?: number;
60
+ method?: TuiReadMethod;
30
61
  }): Promise<TuiSession>;
31
62
  /**
32
- * Send keystrokes to the TUI app via the Playwright page.
33
- * Types into the terminal's xterm.js input.
34
- */
35
- export declare function sendKeys(page: Page, keys: string): Promise<void>;
36
- /**
37
- * Send a special key (Enter, Escape, ArrowUp, etc.) to the TUI.
63
+ * Check if ttyd is installed on this system.
38
64
  */
39
- export declare function sendSpecialKey(page: Page, key: string): Promise<void>;
65
+ export declare function isTuiAvailable(): boolean;
40
66
  /**
41
- * Get the visible text content from the terminal.
42
- * Works with both canvas-based and DOM-based xterm.js renderers.
67
+ * Launch a terminal app via ttyd and connect Playwright to it.
43
68
  */
44
- export declare function getTerminalText(page: Page): Promise<string>;
69
+ export declare function launchTui(command: string, options?: {
70
+ headless?: boolean;
71
+ viewport?: {
72
+ width: number;
73
+ height: number;
74
+ };
75
+ theme?: TuiTheme;
76
+ fontSize?: number;
77
+ method?: TuiReadMethod;
78
+ }): Promise<TuiSession>;
79
+ export declare function getTerminalState(page: Page, method?: TuiReadMethod, timeoutMs?: number): Promise<TuiState>;
80
+ export declare function sendKeys(page: Page, keys: string, timeoutMs?: number): Promise<void>;
81
+ export declare function sendSpecialKey(page: Page, key: string, timeoutMs?: number): Promise<void>;
82
+ export declare function getTerminalText(page: Page, timeoutMs?: number, method?: TuiReadMethod): Promise<string>;
45
83
  /**
46
84
  * Wait for specific text to appear in the terminal output.
85
+ * Per-poll health probe detects a stuck terminal early and returns stuck:true.
47
86
  */
48
- export declare function waitForTerminalText(page: Page, text: string, timeoutMs?: number): Promise<boolean>;
49
- /**
50
- * Close TUI session — kill ttyd and close Playwright.
51
- */
87
+ export declare function waitForTerminalText(page: Page, text: string, timeoutMs?: number, method?: TuiReadMethod): Promise<{
88
+ found: boolean;
89
+ elapsed_ms: number;
90
+ stuck: boolean;
91
+ }>;
52
92
  export declare function closeTui(session: TuiSession): Promise<void>;
53
93
  //# sourceMappingURL=tui.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"tui.d.ts","sourceRoot":"","sources":["../../src/engines/tui.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACxE,OAAO,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAYhD,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,CAAC;AAEnD,MAAM,WAAW,UAAU;IACzB,WAAW,EAAE,YAAY,CAAC;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,IAAI,CAAC;IACX,KAAK,EAAE,QAAQ,CAAC;CACjB;AAkDD;;GAEG;AACH,wBAAgB,cAAc,IAAI,OAAO,CAOxC;AAqCD;;;;;;GAMG;AACH,wBAAsB,SAAS,CAC7B,OAAO,EAAE,MAAM,EACf,OAAO,GAAE;IACP,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAC7C,KAAK,CAAC,EAAE,QAAQ,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACd,GACL,OAAO,CAAC,UAAU,CAAC,CA+FrB;AAED;;;GAGG;AACH,wBAAsB,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAStE;AAED;;GAEG;AACH,wBAAsB,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAO3E;AAED;;;GAGG;AACH,wBAAsB,eAAe,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAuBjE;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CACvC,IAAI,EAAE,IAAI,EACV,IAAI,EAAE,MAAM,EACZ,SAAS,GAAE,MAAe,GACzB,OAAO,CAAC,OAAO,CAAC,CAQlB;AAED;;GAEG;AACH,wBAAsB,QAAQ,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAUjE"}
1
+ {"version":3,"file":"tui.d.ts","sourceRoot":"","sources":["../../src/engines/tui.ts"],"names":[],"mappings":"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"}