@simon_he/vue-tui 0.0.8 → 1.0.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 (249) hide show
  1. package/README.md +142 -30
  2. package/dist/TSelect-BwJJbuTt.js +6089 -0
  3. package/dist/TTree-DK_DQBYm.js +6480 -0
  4. package/dist/agent.cjs +39416 -0
  5. package/dist/agent.d.cts +44 -0
  6. package/dist/agent.d.ts +44 -0
  7. package/dist/agent.js +828 -0
  8. package/dist/ansi-palette-CNXqFciC.js +57 -0
  9. package/dist/ansi-styles.d.ts +200 -0
  10. package/dist/block-source-CKUOnkgT.js +1663 -0
  11. package/dist/cli/headless-renderer.d.ts +29 -0
  12. package/dist/cli/input.d.ts +49 -0
  13. package/dist/cli/node-file-writers.d.ts +13 -0
  14. package/dist/cli/node-module.d.ts +2 -0
  15. package/dist/cli/parse-kitty.d.ts +2 -0
  16. package/dist/cli/parse-mouse.d.ts +2 -0
  17. package/dist/cli/parse-utils.d.ts +14 -0
  18. package/dist/cli/parse-xterm.d.ts +2 -0
  19. package/dist/cli/path-provider-types.d.ts +1 -0
  20. package/dist/cli/path-provider.d.ts +4 -0
  21. package/dist/cli/path-suggest-core.d.ts +1 -0
  22. package/dist/cli/path-suggest.d.ts +15 -0
  23. package/dist/cli/recording.d.ts +4 -0
  24. package/dist/cli/stdin-buffer.d.ts +33 -0
  25. package/dist/cli.cjs +11061 -0
  26. package/dist/cli.d.cts +23 -0
  27. package/dist/cli.d.ts +23 -0
  28. package/dist/cli.js +9875 -0
  29. package/dist/core/ansi/capability.d.ts +20 -0
  30. package/dist/core/ansi/colors.d.ts +41 -0
  31. package/dist/core/ansi/sgr.d.ts +7 -0
  32. package/dist/core/ansi/theme.d.ts +6 -0
  33. package/dist/core/ansi-palette.d.ts +14 -0
  34. package/dist/core/buffer/buffer.d.ts +54 -0
  35. package/dist/core/buffer/width.d.ts +4 -0
  36. package/dist/core/debug-logger.d.ts +18 -0
  37. package/dist/core/hyperlink.d.ts +9 -0
  38. package/dist/core/index.d.ts +4 -0
  39. package/dist/core/path-provider-types.d.ts +24 -0
  40. package/dist/core/path-suggest.d.ts +35 -0
  41. package/dist/core/render-plane.d.ts +3 -0
  42. package/dist/core/terminal/create-terminal.d.ts +8 -0
  43. package/dist/core/terminal/emitter.d.ts +7 -0
  44. package/dist/core/types.d.ts +107 -0
  45. package/dist/core.cjs +3153 -0
  46. package/dist/core.d.cts +14 -0
  47. package/dist/core.d.ts +14 -0
  48. package/dist/core.js +424 -0
  49. package/dist/create-terminal-C2oiWFJU.js +1434 -0
  50. package/dist/create-terminal-app.d.ts +36 -0
  51. package/dist/dom-renderer-BqGijQID.js +1173 -0
  52. package/dist/env-Cl8qmNFN.js +19 -0
  53. package/dist/events/index.d.ts +6 -0
  54. package/dist/events/manager/cli-event-manager.d.ts +22 -0
  55. package/dist/events/manager/event-manager.d.ts +30 -0
  56. package/dist/events/manager/selection-suppression.d.ts +3 -0
  57. package/dist/events/manager/types.d.ts +108 -0
  58. package/dist/events/recording.d.ts +44 -0
  59. package/dist/experimental.cjs +4412 -1641
  60. package/dist/experimental.d.cts +42 -0
  61. package/dist/experimental.d.ts +42 -825
  62. package/dist/experimental.js +31 -7392
  63. package/dist/frame-perf-C6Xfg85O.js +24 -0
  64. package/dist/hyperlink-Bn02UXJb.js +419 -0
  65. package/dist/index.cjs +14765 -17582
  66. package/dist/index.d.cts +35 -0
  67. package/dist/index.d.ts +35 -1528
  68. package/dist/index.js +17 -20026
  69. package/dist/linkify-D_gzn9Xq.js +562 -0
  70. package/dist/markdown.cjs +9321 -7623
  71. package/dist/markdown.d.cts +11 -0
  72. package/dist/markdown.d.ts +11 -112
  73. package/dist/markdown.js +36 -1427
  74. package/dist/observability/cli-latency-node.d.ts +3 -0
  75. package/dist/observability/cli-latency-types.d.ts +41 -0
  76. package/dist/observability/cli-latency.d.ts +3 -0
  77. package/dist/observability/frame-perf-store.d.ts +18 -0
  78. package/dist/observability/frame-perf.d.ts +40 -0
  79. package/dist/observability/perf-sink.d.ts +56 -0
  80. package/dist/observability/trace.d.ts +40 -0
  81. package/dist/observability/tui-profiler.d.ts +33 -0
  82. package/dist/observability.cjs +221 -0
  83. package/dist/observability.d.cts +8 -0
  84. package/dist/observability.d.ts +8 -0
  85. package/dist/observability.js +4 -0
  86. package/dist/path-mnSgEpCm.js +81 -0
  87. package/dist/path-suggest-BNqcuE3-.js +274 -0
  88. package/dist/path-suggest-Dk9TRLh5.js +3 -0
  89. package/dist/{path-suggest-DmrmeueH.js → path-suggest-bvR9SY6Q.js} +86 -18
  90. package/dist/renderer/capabilities.d.ts +13 -0
  91. package/dist/renderer/cli/index.d.ts +2 -0
  92. package/dist/renderer/cli/stdout-metrics.d.ts +18 -0
  93. package/dist/renderer/cli/stdout-renderer.d.ts +48 -0
  94. package/dist/renderer/dom/dom-renderer.d.ts +157 -0
  95. package/dist/renderer/dom/index.d.ts +2 -0
  96. package/dist/renderer/index.d.ts +2 -0
  97. package/dist/renderer-dom.cjs +1505 -0
  98. package/dist/renderer-dom.d.cts +4 -0
  99. package/dist/renderer-dom.d.ts +4 -0
  100. package/dist/renderer-dom.js +7 -0
  101. package/dist/runtime/index.d.ts +36 -0
  102. package/dist/runtime/osc52.d.ts +9 -0
  103. package/dist/runtime-rfcZCyJq.js +1197 -0
  104. package/dist/runtime.cjs +1698 -0
  105. package/dist/runtime.d.cts +9 -0
  106. package/dist/runtime.d.ts +9 -0
  107. package/dist/runtime.js +4 -0
  108. package/dist/selection/terminal-selection.d.ts +123 -0
  109. package/dist/sgr-BmzxEjAO.js +304 -0
  110. package/dist/terminal-selection-DBinO6p5.js +330 -0
  111. package/dist/tlog-theme-qPBt5rge.js +9254 -0
  112. package/dist/trace-CjzYeIxN.js +182 -0
  113. package/dist/utils/env.d.ts +3 -0
  114. package/dist/utils/grapheme.d.ts +5 -0
  115. package/dist/utils/newlines.d.ts +1 -0
  116. package/dist/utils/path.d.ts +7 -0
  117. package/dist/utils/url-safety.d.ts +2 -0
  118. package/dist/vue/agent/view-models.d.ts +98 -0
  119. package/dist/vue/components/TAnchor.d.ts +108 -0
  120. package/dist/vue/components/TBox.d.ts +144 -0
  121. package/dist/vue/components/TCommandPalette.d.ts +587 -0
  122. package/dist/vue/components/TDataTable.d.ts +367 -0
  123. package/dist/vue/components/TDebugOverlay.d.ts +43 -0
  124. package/dist/vue/components/TDialog.d.ts +255 -0
  125. package/dist/vue/components/TFeedback.d.ts +635 -0
  126. package/dist/vue/components/TFlow.d.ts +85 -0
  127. package/dist/vue/components/TForm.d.ts +1230 -0
  128. package/dist/vue/components/TInput.d.ts +545 -0
  129. package/dist/vue/components/TInputBox.d.ts +158 -0
  130. package/dist/vue/components/TJsonEditor.d.ts +165 -0
  131. package/dist/vue/components/TLink.d.ts +239 -0
  132. package/dist/vue/components/TLinkifyText.d.ts +141 -0
  133. package/dist/vue/components/TList.d.ts +119 -0
  134. package/dist/vue/components/TLogLinksPanel.d.ts +238 -0
  135. package/dist/vue/components/TLogMinimap.d.ts +263 -0
  136. package/dist/vue/components/TLogScrollbar.d.ts +236 -0
  137. package/dist/vue/components/TLogSearchBar.d.ts +267 -0
  138. package/dist/vue/components/TLogSearchPager.d.ts +162 -0
  139. package/dist/vue/components/TLogSearchResults.d.ts +200 -0
  140. package/dist/vue/components/TLogView.d.ts +536 -0
  141. package/dist/vue/components/TLogVirtualLinksPanel.d.ts +141 -0
  142. package/dist/vue/components/TLogVirtualSearchResults.d.ts +146 -0
  143. package/dist/vue/components/TMarkdownText.d.ts +134 -0
  144. package/dist/vue/components/TMultilineModal.d.ts +62 -0
  145. package/dist/vue/components/TNavigation.d.ts +324 -0
  146. package/dist/vue/components/TOverlay.d.ts +366 -0
  147. package/dist/vue/components/TPanels.d.ts +244 -0
  148. package/dist/vue/components/TPathPicker.d.ts +213 -0
  149. package/dist/vue/components/TRenderLayer.d.ts +16 -0
  150. package/dist/vue/components/TRenderPlane.d.ts +17 -0
  151. package/dist/vue/components/TSelect.d.ts +335 -0
  152. package/dist/vue/components/TTable.d.ts +317 -0
  153. package/dist/vue/components/TText.d.ts +116 -0
  154. package/dist/vue/components/TThinkingView.d.ts +233 -0
  155. package/dist/vue/components/TToolCallView.d.ts +384 -0
  156. package/dist/vue/components/TTranscriptView.d.ts +221 -0
  157. package/dist/vue/components/TTransition.d.ts +83 -0
  158. package/dist/vue/components/TTree.d.ts +200 -0
  159. package/dist/vue/components/TUserMessageView.d.ts +344 -0
  160. package/dist/vue/components/TView.d.ts +127 -0
  161. package/dist/vue/components/TVirtualList.d.ts +182 -0
  162. package/dist/vue/components/TVirtualMarkdown.d.ts +168 -0
  163. package/dist/vue/components/TVirtualRows.d.ts +247 -0
  164. package/dist/vue/components/TerminalProvider.d.ts +218 -0
  165. package/dist/vue/components/input/host.d.ts +17 -0
  166. package/dist/vue/components/input/plugins/hostPlugin.d.ts +7 -0
  167. package/dist/vue/components/input/plugins/hostPlugin.node.d.ts +15 -0
  168. package/dist/vue/components/input/plugins/mentionUtils.d.ts +17 -0
  169. package/dist/vue/components/input/plugins/nodeMentionPathProvider.d.ts +2 -0
  170. package/dist/vue/components/input/plugins/promptMentionPlugin.d.ts +8 -0
  171. package/dist/vue/components/input/plugins/promptMentionState.d.ts +98 -0
  172. package/dist/vue/components/input/plugins/restrictText.d.ts +27 -0
  173. package/dist/vue/components/input/plugins/types.d.ts +90 -0
  174. package/dist/vue/components/input/utils/inlineText.d.ts +57 -0
  175. package/dist/vue/components/input/utils/inlineTextTokens.d.ts +34 -0
  176. package/dist/vue/components/input/utils/primitives.d.ts +3 -0
  177. package/dist/vue/components/input/utils/wordNavigation.d.ts +6 -0
  178. package/dist/vue/components/link/host.d.ts +15 -0
  179. package/dist/vue/components/list/list-geometry.d.ts +16 -0
  180. package/dist/vue/components/list/list-paint.d.ts +1 -0
  181. package/dist/vue/components/list/scroll-state.d.ts +25 -0
  182. package/dist/vue/components/list/selection-state.d.ts +6 -0
  183. package/dist/vue/components/simple-utils.d.ts +5 -0
  184. package/dist/vue/components/terminal-provider/copy-toast.d.ts +6 -0
  185. package/dist/vue/components/terminal-provider/portals.d.ts +17 -0
  186. package/dist/vue/components/terminal-provider/scheduler.d.ts +29 -0
  187. package/dist/vue/components/terminal-provider/selection-config.d.ts +15 -0
  188. package/dist/vue/components/terminal-provider/utils.d.ts +5 -0
  189. package/dist/vue/composables/use-layout.d.ts +2 -0
  190. package/dist/vue/composables/use-render-node.d.ts +19 -0
  191. package/dist/vue/composables/use-render-stack.d.ts +3 -0
  192. package/dist/vue/composables/use-runtime.d.ts +5 -0
  193. package/dist/vue/composables/use-terminal-node.d.ts +14 -0
  194. package/dist/vue/composables/use-terminal.d.ts +2 -0
  195. package/dist/vue/composables/use-visibility.d.ts +12 -0
  196. package/dist/vue/context.d.ts +153 -0
  197. package/dist/vue/index.d.ts +69 -0
  198. package/dist/vue/injection-key.d.ts +2 -0
  199. package/dist/vue/linkify.d.ts +11 -0
  200. package/dist/vue/log/append-only-log-store.d.ts +2 -0
  201. package/dist/vue/log/tlog-keymap.d.ts +28 -0
  202. package/dist/vue/log/tlog-plugins.d.ts +144 -0
  203. package/dist/vue/log/tlog-session.d.ts +81 -0
  204. package/dist/vue/log/tlog-theme.d.ts +68 -0
  205. package/dist/vue/log/types.d.ts +43 -0
  206. package/dist/vue/log/use-tlog-link-controller.d.ts +31 -0
  207. package/dist/vue/log/use-tlog-retained-index.d.ts +26 -0
  208. package/dist/vue/log/use-tlog-search-controller.d.ts +51 -0
  209. package/dist/vue/log/use-tlog-search-results-page.d.ts +31 -0
  210. package/dist/vue/log/use-tlog-virtual-search-results.d.ts +22 -0
  211. package/dist/vue/markdown/ast.d.ts +3 -0
  212. package/dist/vue/markdown/block-source.d.ts +22 -0
  213. package/dist/vue/markdown/document.d.ts +20 -0
  214. package/dist/vue/markdown/layout.d.ts +21 -0
  215. package/dist/vue/markdown/parser.d.ts +11 -0
  216. package/dist/vue/markdown/render.d.ts +10 -0
  217. package/dist/vue/markdown/theme.d.ts +186 -0
  218. package/dist/vue/markdown/types.d.ts +59 -0
  219. package/dist/vue/overlay.d.ts +27 -0
  220. package/dist/vue/render/context.d.ts +3 -0
  221. package/dist/vue/render/render-manager.d.ts +94 -0
  222. package/dist/vue/router/RouterView.d.ts +25 -0
  223. package/dist/vue/router/composables.d.ts +4 -0
  224. package/dist/vue/router/context.d.ts +4 -0
  225. package/dist/vue/router/router.d.ts +7 -0
  226. package/dist/vue/router/types.d.ts +29 -0
  227. package/dist/vue/scheduler/frame-mailbox.d.ts +55 -0
  228. package/dist/vue/scheduler/frame-scheduler.d.ts +51 -0
  229. package/dist/vue/theme.d.ts +48 -0
  230. package/dist/vue/transcript/hit-regions.d.ts +2 -0
  231. package/dist/vue/transcript/layout.d.ts +20 -0
  232. package/dist/vue/transcript/plain-text.d.ts +2 -0
  233. package/dist/vue/transcript/types.d.ts +122 -0
  234. package/dist/vue/utils/frame-task.d.ts +6 -0
  235. package/dist/vue/utils/rect.d.ts +4 -0
  236. package/dist/vue/utils/row-scroll.d.ts +25 -0
  237. package/dist/vue/utils/style-cache.d.ts +3 -0
  238. package/dist/vue/utils/text.d.ts +27 -0
  239. package/dist/vue/utils/wheel-scroll.d.ts +18 -0
  240. package/dist/vue.cjs +23668 -0
  241. package/dist/vue.d.cts +1 -0
  242. package/dist/vue.d.ts +1 -0
  243. package/dist/vue.js +3957 -0
  244. package/dist/{wheel-scroll-CiNsasLf.js → wheel-scroll-vBRaQ7p-.js} +404 -405
  245. package/package.json +185 -35
  246. package/dist/path-suggest-BeV6n7m-.js +0 -3
  247. package/dist/sgr-Tko2EQ0U.js +0 -484
  248. package/dist/theme-Bsm65g8k.d.ts +0 -32
  249. package/dist/types-ClIV2h1o.d.ts +0 -103
@@ -0,0 +1,20 @@
1
+ import type { TerminalColorLevel, TerminalColorMode } from "./colors.js";
2
+ export type TerminalColorCapability = Readonly<{
3
+ mode: TerminalColorMode;
4
+ level: TerminalColorLevel;
5
+ }>;
6
+ /**
7
+ * Detect terminal output color capability.
8
+ *
9
+ * - `mode` is the best-effort actual output mode.
10
+ * - `level` is the CLI theme tier (256/16/8). `truecolor` folds into `256`.
11
+ * - Pass `platform` (e.g. `process.platform`) to improve Windows detection.
12
+ *
13
+ * Env overrides:
14
+ * - `VUE_TUI_COLOR_MODE` / legacy `DIMCODE_COLOR_MODE`
15
+ */
16
+ export declare function detectTerminalColorCapability(opts?: Readonly<{
17
+ env?: Record<string, unknown>;
18
+ isTTY?: boolean;
19
+ platform?: string;
20
+ }>): TerminalColorCapability;
@@ -0,0 +1,41 @@
1
+ import type { AnsiColorName } from "../types.js";
2
+ export type TerminalColorMode = "ansi8" | "ansi16" | "ansi256" | "truecolor";
3
+ export type TerminalColorLevel = 8 | 16 | 256;
4
+ export type AnsiRgb = Readonly<{
5
+ r: number;
6
+ g: number;
7
+ b: number;
8
+ }>;
9
+ export type Ansi8ColorName = "black" | "red" | "green" | "yellow" | "blue" | "magenta" | "cyan" | "white";
10
+ export declare const ANSI8_COLOR_NAMES: readonly Ansi8ColorName[];
11
+ export declare const ANSI16_COLOR_NAMES: readonly AnsiColorName[];
12
+ export type AnsiColorEntry = Readonly<{
13
+ level: TerminalColorLevel;
14
+ /** 0..(level-1) for ansi8/16; 0..255 for ansi256 */
15
+ index: number;
16
+ name?: AnsiColorName;
17
+ rgb: AnsiRgb;
18
+ fgOpen: string;
19
+ bgOpen: string;
20
+ }>;
21
+ export declare const SGR_RESET = "\u001B[0m";
22
+ export declare const SGR_BOLD = "\u001B[1m";
23
+ export declare const SGR_DIM = "\u001B[2m";
24
+ export declare const SGR_ITALIC = "\u001B[3m";
25
+ export declare const SGR_UNDERLINE = "\u001B[4m";
26
+ export declare const SGR_INVERSE = "\u001B[7m";
27
+ export declare function toAnsi8ColorName(name: AnsiColorName): Ansi8ColorName;
28
+ export declare function ansi8FgOpen(name: AnsiColorName): string;
29
+ export declare function ansi8BgOpen(name: AnsiColorName): string;
30
+ export declare function ansi16FgOpen(name: AnsiColorName): string;
31
+ export declare function ansi16BgOpen(name: AnsiColorName): string;
32
+ export declare function ansi256FgOpen(index: number): string;
33
+ export declare function ansi256BgOpen(index: number): string;
34
+ export declare function truecolorFgOpen(rgb: AnsiRgb): string;
35
+ export declare function truecolorBgOpen(rgb: AnsiRgb): string;
36
+ export declare function ansi256ToRgb(index: number): AnsiRgb;
37
+ export declare function rgbToAnsi256(rgb: AnsiRgb): number;
38
+ export declare function rgbToAnsi16(rgb: AnsiRgb): AnsiColorName;
39
+ export declare function ansi8Palette(): readonly AnsiColorEntry[];
40
+ export declare function ansi16Palette(): readonly AnsiColorEntry[];
41
+ export declare function ansi256Palette(): readonly AnsiColorEntry[];
@@ -0,0 +1,7 @@
1
+ import type { Style } from "../types.js";
2
+ export declare function applyAnsiSgrStyle(current: Style, codes: number[]): Style;
3
+ export interface AnsiSegment {
4
+ text: string;
5
+ style: Style;
6
+ }
7
+ export declare function parseAnsiSgr(input: string, baseStyle?: Style): AnsiSegment[];
@@ -0,0 +1,6 @@
1
+ export declare function rgbToHex(r: number, g: number, b: number): string;
2
+ export declare function ansi16ToCss(code: number): {
3
+ fg?: string;
4
+ bg?: string;
5
+ };
6
+ export declare function ansi256ToCss(index: number): string;
@@ -0,0 +1,14 @@
1
+ import type { AnsiColorName } from "./types.js";
2
+ export type AnsiRgb = Readonly<{
3
+ r: number;
4
+ g: number;
5
+ b: number;
6
+ }>;
7
+ export type ThemePalette = Partial<Record<AnsiColorName, string>>;
8
+ export declare const ANSI_PALETTE_HEX: Readonly<Record<AnsiColorName, string>>;
9
+ export declare function ansiHexToRgb(hex: string): AnsiRgb | undefined;
10
+ export declare function isAnsiColorName(name: string | undefined): name is AnsiColorName;
11
+ export declare function ansiColorHex(name?: string, palette?: ThemePalette | null): string | undefined;
12
+ export declare function ansiColorRgb(name?: string, palette?: ThemePalette | null): AnsiRgb | undefined;
13
+ export declare function ansiCssVar(name: AnsiColorName): string;
14
+ export declare function installAnsiPaletteCssVars(container: HTMLElement, palette?: ThemePalette | null): void;
@@ -0,0 +1,54 @@
1
+ import type { Cell, Style } from "../types.js";
2
+ import type { WidthProvider } from "./width.js";
3
+ export declare function normalizeStyle(style?: Style): Style;
4
+ export declare function createCell(ch: string, style?: Style, widthProvider?: WidthProvider): Cell;
5
+ export declare function createBlankCell(style?: Style): Cell;
6
+ export declare function createContinuationCell(style?: Style): Cell;
7
+ export type CellFingerprintFn = (ch: string, style: Style) => number;
8
+ export interface GridBuffer {
9
+ cols: number;
10
+ rows: number;
11
+ grid: Cell[][];
12
+ gridStart: number;
13
+ dirtyBits: Uint8Array;
14
+ dirtyCount: number;
15
+ dirtyMin: number;
16
+ dirtyMax: number;
17
+ dirtyAll: boolean;
18
+ cursorX: number;
19
+ cursorY: number;
20
+ cursorVisible: boolean;
21
+ cursorStyle: Style;
22
+ scrollback: Cell[][];
23
+ scrollbackLimit: number;
24
+ rowPool: Cell[][];
25
+ soaFingerprints: Uint32Array | null;
26
+ fingerprintFn: CellFingerprintFn | null;
27
+ widthProvider: WidthProvider;
28
+ }
29
+ export declare function createGridBuffer(cols: number, rows: number, options?: Readonly<{
30
+ widthProvider?: WidthProvider;
31
+ }>): GridBuffer;
32
+ export declare function clamp(n: number, min: number, max: number): number;
33
+ /**
34
+ * Register a fingerprint function on the buffer. This enables SoA fingerprint
35
+ * pre-computation: cell writes will update fingerprints inline, and the renderer
36
+ * can read them via getRowFingerprints() instead of per-cell hash computation.
37
+ */
38
+ export declare function setFingerprintFn(buffer: GridBuffer, fn: CellFingerprintFn): void;
39
+ /**
40
+ * Get pre-computed fingerprints for a logical row as a TypedArray slice.
41
+ * Returns null if fingerprinting is not enabled on this buffer.
42
+ */
43
+ export declare function getRowFingerprints(buffer: GridBuffer, y: number): Uint32Array | null;
44
+ export declare function getBufferRow(buffer: GridBuffer, y: number): Cell[];
45
+ export declare function getBufferCell(buffer: GridBuffer, x: number, y: number): Cell;
46
+ export declare function markAllDirty(buffer: GridBuffer): void;
47
+ export declare function markDirty(buffer: GridBuffer, y: number): void;
48
+ export declare function putCell(buffer: GridBuffer, x: number, y: number, ch: string, style?: Style): void;
49
+ export declare function fillRect(buffer: GridBuffer, x: number, y: number, w: number, h: number, ch?: string, style?: Style): void;
50
+ export declare function clearRect(buffer: GridBuffer, x?: number, y?: number, w?: number, h?: number): void;
51
+ export declare function scrollBuffer(buffer: GridBuffer, lines: number): void;
52
+ export declare function scrollBufferRegion(buffer: GridBuffer, startY: number, endY: number, lines: number): readonly number[];
53
+ export declare function resizeBuffer(buffer: GridBuffer, cols: number, rows: number): void;
54
+ export declare function snapshotText(buffer: GridBuffer): string[];
@@ -0,0 +1,4 @@
1
+ export type CellWidth = 1 | 2;
2
+ export type BuiltinWidthProvider = "default" | "cjk" | "narrow-ambiguous";
3
+ export type WidthProvider = BuiltinWidthProvider | ((text: string) => CellWidth);
4
+ export declare function charCellWidth(text: string, provider?: WidthProvider): CellWidth;
@@ -0,0 +1,18 @@
1
+ type DebugFileWriter = Readonly<{
2
+ appendFileSync?: (path: string, data: string) => void;
3
+ writeFileSync?: (path: string, data: string) => void;
4
+ }>;
5
+ export declare function setDebugFileWriter(writer: DebugFileWriter | null): void;
6
+ export declare function resolveDebugLogPath(env: Record<string, unknown> | undefined, fallback?: string): string;
7
+ export declare function setDebugLogDefaultPath(path: string | null): void;
8
+ export interface DebugLogger {
9
+ render: (message: string) => void;
10
+ stream: (message: string) => void;
11
+ error: (message: string, ...args: any[]) => void;
12
+ }
13
+ export declare function createDebugLogger(enable?: boolean): DebugLogger;
14
+ /**
15
+ * Check if debug logging is enabled via environment variable
16
+ */
17
+ export declare function isDebugEnabled(): boolean;
18
+ export {};
@@ -0,0 +1,9 @@
1
+ export type SanitizeTerminalHrefOptions = Readonly<{
2
+ allowFileUrls?: boolean;
3
+ }>;
4
+ export type SanitizeDomHrefOptions = Readonly<{
5
+ allowRelative?: boolean;
6
+ }>;
7
+ export declare function isSafeRelativeHref(value: string): boolean;
8
+ export declare function sanitizeTerminalHref(value: unknown, options?: SanitizeTerminalHrefOptions): string | null;
9
+ export declare function sanitizeDomHref(value: unknown, options?: SanitizeDomHrefOptions): string | null;
@@ -0,0 +1,4 @@
1
+ export { TERMINAL_RENDER_PLANES, type TerminalRenderPlane, type TerminalRenderPlanes, } from "./render-plane.js";
2
+ export { createTerminal } from "./terminal/create-terminal.js";
3
+ export type { AnsiColorName, BufferSnapshot, Cell, Style, Terminal, TerminalCommitEvent, TerminalEventMap, TerminalOptions, TerminalResizeEvent, TerminalScrollOperation, ThemeModeId, } from "./types.js";
4
+ export type { BuiltinWidthProvider, CellWidth, WidthProvider } from "./buffer/width.js";
@@ -0,0 +1,24 @@
1
+ import type { PathPickMode, SuggestPathsResult } from "./path-suggest.js";
2
+ export type FsEntryKind = "file" | "directory" | "other";
3
+ export type FsDirEntry = Readonly<{
4
+ name: string;
5
+ kind: FsEntryKind;
6
+ }>;
7
+ export type FsStat = Readonly<{
8
+ exists: boolean;
9
+ kind: FsEntryKind;
10
+ }>;
11
+ export type PathPickerProvider = Readonly<{
12
+ listDir: (absDir: string) => Promise<FsDirEntry[]>;
13
+ stat: (absPath: string) => Promise<FsStat>;
14
+ suggest?: (info: Readonly<{
15
+ workspaceAbs: string;
16
+ input: string;
17
+ mode: PathPickMode;
18
+ max: number;
19
+ showHidden?: boolean;
20
+ maxDepth?: number;
21
+ gitignore?: "blocking" | "nonBlocking";
22
+ }>) => Promise<SuggestPathsResult>;
23
+ resolvePath?: (workspaceAbs: string, input: string) => string | Promise<string>;
24
+ }>;
@@ -0,0 +1,35 @@
1
+ import type { FsDirEntry } from "./path-provider-types.js";
2
+ export type PathPickMode = "directory" | "file" | "any";
3
+ export type PathSuggestion = Readonly<{
4
+ kind: "directory" | "file";
5
+ display: string;
6
+ completion: string;
7
+ absPath: string;
8
+ }>;
9
+ export type SuggestPathsResult = Readonly<{
10
+ baseDirAbs: string;
11
+ dirPrefix: string;
12
+ query: string;
13
+ suggestions: PathSuggestion[];
14
+ }>;
15
+ export declare function parsePathQuery(rawInput: string): {
16
+ dirPrefix: string;
17
+ query: string;
18
+ };
19
+ export declare function suggestPaths(options: Readonly<{
20
+ workspaceAbs: string;
21
+ input: string;
22
+ mode: PathPickMode;
23
+ max: number;
24
+ showHidden?: boolean;
25
+ listDir: (absDir: string) => Promise<FsDirEntry[]>;
26
+ maxDepth?: number;
27
+ shouldIgnore?: (info: Readonly<{
28
+ normalizedRelPath: string;
29
+ isDir: boolean;
30
+ }>) => boolean;
31
+ }>): Promise<SuggestPathsResult>;
32
+ export declare function resolveUserPath(workspaceAbs: string, input: string, options?: Readonly<{
33
+ homeDir?: string;
34
+ }>): string;
35
+ export declare function suggestParentHint(path: string): string;
@@ -0,0 +1,3 @@
1
+ export declare const TERMINAL_RENDER_PLANES: readonly ["default", "transcript", "chrome", "overlay"];
2
+ export type TerminalRenderPlane = (typeof TERMINAL_RENDER_PLANES)[number];
3
+ export type TerminalRenderPlanes = readonly TerminalRenderPlane[];
@@ -0,0 +1,8 @@
1
+ import type { TerminalRenderPlane, TerminalRenderPlanes } from "../render-plane.js";
2
+ import type { Cell, Terminal, TerminalOptions } from "../types.js";
3
+ export declare function getPlaneTerminal(terminal: Terminal, plane: TerminalRenderPlane): Terminal;
4
+ export declare function readTerminalRowForPlanes(terminal: Terminal, y: number, planes?: TerminalRenderPlanes | null): readonly Cell[];
5
+ export declare function resetPlaneRowsForRender(terminal: Terminal, plane: TerminalRenderPlane, dirtyRows: readonly number[] | null): void;
6
+ export declare function getPlaneRowCoverageKind(terminal: Terminal, plane: TerminalRenderPlane, y: number): 0 | 1 | 2;
7
+ export declare function scrollPlaneRows(terminal: Terminal, plane: TerminalRenderPlane, startY: number, endY: number, lines: number): void;
8
+ export declare function createTerminal(opts: TerminalOptions): Terminal;
@@ -0,0 +1,7 @@
1
+ export declare class Emitter<EventMap extends Record<string, any>> {
2
+ constructor();
3
+ private getListeners;
4
+ on<K extends keyof EventMap>(event: K, cb: (payload: EventMap[K]) => void): () => void;
5
+ emit<K extends keyof EventMap>(event: K, payload: EventMap[K]): void;
6
+ clear(): void;
7
+ }
@@ -0,0 +1,107 @@
1
+ import type { TerminalRenderPlanes } from "./render-plane.js";
2
+ import type { WidthProvider } from "./buffer/width.js";
3
+ export type ThemeModeId = "dark" | "light";
4
+ export type AnsiColorName = "black" | "red" | "green" | "yellow" | "blue" | "magenta" | "cyan" | "white" | "blackBright" | "redBright" | "greenBright" | "yellowBright" | "blueBright" | "magentaBright" | "cyanBright" | "whiteBright";
5
+ export type Style = Readonly<{
6
+ /**
7
+ * Foreground color. Accepts:
8
+ * - `AnsiColorName` (e.g. `'cyanBright'`) — resolved via palette or standard ANSI codes
9
+ * - Hex string (e.g. `'#a9dc76'`) — converted to truecolor/ansi256 RGB
10
+ * - `'transparent'` — resets to terminal default (`\e[39m`)
11
+ */
12
+ fg?: string;
13
+ /**
14
+ * Background color. Same value space as `fg`.
15
+ * `'transparent'` resets to terminal default (`\e[49m`).
16
+ */
17
+ bg?: string;
18
+ bold?: boolean;
19
+ dim?: boolean;
20
+ italic?: boolean;
21
+ underline?: boolean;
22
+ inverse?: boolean;
23
+ /**
24
+ * Optional hyperlink target associated with this styled text.
25
+ *
26
+ * Renderer behavior:
27
+ * - stdout renderer may emit OSC 8 hyperlinks after sanitization.
28
+ * - DOM renderer may render <a> elements when DomRendererOptions.links is enabled.
29
+ *
30
+ * Unsafe protocols/control characters are ignored by renderers.
31
+ */
32
+ href?: string;
33
+ }>;
34
+ export type Cell = Readonly<{
35
+ ch: string;
36
+ width: 1 | 2;
37
+ continuation?: true;
38
+ style: Style;
39
+ }>;
40
+ export type BufferSnapshot = Readonly<{
41
+ cols: number;
42
+ rows: number;
43
+ lines: readonly string[];
44
+ }>;
45
+ export type TerminalSize = Readonly<{
46
+ cols: number;
47
+ rows: number;
48
+ }>;
49
+ export type TerminalOptions = Readonly<{
50
+ cols: number;
51
+ rows: number;
52
+ widthProvider?: WidthProvider;
53
+ }>;
54
+ export type TerminalScrollOperation = Readonly<{
55
+ startY: number;
56
+ endY: number;
57
+ delta: number;
58
+ }>;
59
+ export type TerminalCommitEvent = Readonly<{
60
+ dirtyRows: readonly number[] | null;
61
+ planes: TerminalRenderPlanes | null;
62
+ /** Renderer hint: try same-frame flush within backend budget; large DOM work may defer. */
63
+ sync?: boolean;
64
+ scrollOperations?: readonly TerminalScrollOperation[] | null;
65
+ }>;
66
+ export type TerminalResizeEvent = Readonly<{
67
+ cols: number;
68
+ rows: number;
69
+ }>;
70
+ export interface TerminalEventMap {
71
+ commit: TerminalCommitEvent;
72
+ resize: TerminalResizeEvent;
73
+ }
74
+ export interface Terminal {
75
+ resize: (cols: number, rows: number) => void;
76
+ clear: (x?: number, y?: number, w?: number, h?: number) => void;
77
+ write: (text: string, opts?: {
78
+ x?: number;
79
+ y?: number;
80
+ style?: Style;
81
+ }) => void;
82
+ writeAnsi: (text: string, opts?: {
83
+ x?: number;
84
+ y?: number;
85
+ }) => void;
86
+ put: (x: number, y: number, ch: string, style?: Style) => void;
87
+ fill: (x: number, y: number, w: number, h: number, ch?: string, style?: Style) => void;
88
+ scroll: (lines: number) => void;
89
+ setCursor: (x: number, y: number, visible?: boolean) => void;
90
+ batch: <T>(fn: () => T) => T;
91
+ commit: (meta?: {
92
+ planes?: TerminalRenderPlanes | null;
93
+ sync?: boolean;
94
+ }) => readonly number[] | null;
95
+ on: <K extends keyof TerminalEventMap>(event: K, cb: (payload: TerminalEventMap[K]) => void) => () => void;
96
+ dispose: () => void;
97
+ size: () => TerminalSize;
98
+ snapshot: () => BufferSnapshot;
99
+ getCell: (x: number, y: number) => Cell;
100
+ getRow: (y: number) => readonly Cell[];
101
+ setScrollbackLimit: (limit: number) => void;
102
+ getScrollbackLines: (count?: number) => readonly string[];
103
+ /** Register fingerprint function for SoA pre-computation on the composite buffer. */
104
+ setFingerprintFn: (fn: (ch: string, style: Style) => number) => void;
105
+ /** Get pre-computed fingerprints for a composite buffer row (null if not enabled). */
106
+ getRowFingerprints: (y: number) => Uint32Array | null;
107
+ }