@linxiraos/pi-tui 1.2.1 → 1.3.1

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 (280) hide show
  1. package/CHANGELOG.md +245 -224
  2. package/README.md +36 -0
  3. package/THIRD-PARTY-NOTICES.txt +55 -5
  4. package/dist/types/app-keybindings.d.ts +18 -8
  5. package/dist/types/apps/git/diff-pane.d.ts +5 -0
  6. package/dist/types/apps/git/git-tui.d.ts +16 -2
  7. package/dist/types/apps/git/state.d.ts +11 -0
  8. package/dist/types/autocomplete.d.ts +2 -0
  9. package/dist/types/charts/chart-svg.d.ts +7 -13
  10. package/dist/types/chat/advisor-message.d.ts +4 -1
  11. package/dist/types/chat/assistant-message.d.ts +9 -4
  12. package/dist/types/chat/figure-markdown.d.ts +7 -2
  13. package/dist/types/chat/messages.d.ts +3 -1
  14. package/dist/types/chat/read-tool-group.d.ts +2 -2
  15. package/dist/types/chat/table-chart.d.ts +11 -15
  16. package/dist/types/chat/tool-execution.d.ts +32 -20
  17. package/dist/types/chat/user-message.d.ts +3 -2
  18. package/dist/types/chrome/countdown-timer.d.ts +3 -2
  19. package/dist/types/chrome/diff.d.ts +2 -3
  20. package/dist/types/chrome/status-notice.d.ts +2 -0
  21. package/dist/types/chrome/transcript-container.d.ts +2 -0
  22. package/dist/types/components/image.d.ts +2 -0
  23. package/dist/types/components/markdown.d.ts +49 -3
  24. package/dist/types/components/text.d.ts +2 -0
  25. package/dist/types/debug-server.d.ts +2 -0
  26. package/dist/types/keybinding-matchers.d.ts +6 -0
  27. package/dist/types/multiplexers/tmux.d.ts +1 -0
  28. package/dist/types/multiplexers/types.d.ts +6 -0
  29. package/dist/types/native/backend.d.ts +5 -4
  30. package/dist/types/native/blobs.d.ts +24 -12
  31. package/dist/types/overlays/agent-hub-projection.d.ts +10 -5
  32. package/dist/types/overlays/annotation-overlay.d.ts +19 -0
  33. package/dist/types/overlays/approval-dialog.d.ts +79 -0
  34. package/dist/types/overlays/ask-dialog.d.ts +11 -6
  35. package/dist/types/overlays/btw-history-panel.d.ts +2 -6
  36. package/dist/types/overlays/hook-editor.d.ts +7 -2
  37. package/dist/types/overlays/hook-input.d.ts +12 -4
  38. package/dist/types/overlays/job-tree.d.ts +50 -0
  39. package/dist/types/overlays/jobs-panel.d.ts +25 -11
  40. package/dist/types/overlays/login-dialog.d.ts +8 -3
  41. package/dist/types/overlays/mcp-add-wizard.d.ts +9 -1
  42. package/dist/types/overlays/model-browser.d.ts +6 -1
  43. package/dist/types/overlays/model-picker.d.ts +2 -0
  44. package/dist/types/overlays/pause-screen.d.ts +5 -0
  45. package/dist/types/overlays/plan-review-overlay.d.ts +4 -0
  46. package/dist/types/overlays/report-panel.d.ts +5 -1
  47. package/dist/types/overlays/reset-usage-selector.d.ts +7 -5
  48. package/dist/types/overlays/session-account-selector.d.ts +4 -0
  49. package/dist/types/overlays/session-info-overlay.d.ts +7 -3
  50. package/dist/types/overlays/session-selector.d.ts +3 -1
  51. package/dist/types/overlays/usage-dashboard.d.ts +6 -6
  52. package/dist/types/prompt/composer.d.ts +23 -20
  53. package/dist/types/prompt/custom-editor.d.ts +20 -10
  54. package/dist/types/prompt/image-references.d.ts +22 -0
  55. package/dist/types/prompt/internal-url-autocomplete.d.ts +1 -0
  56. package/dist/types/prompt/macos-spelling.d.ts +2 -1
  57. package/dist/types/prompt/prose-gate.d.ts +3 -0
  58. package/dist/types/prompt/queued-messages.d.ts +1 -1
  59. package/dist/types/prompt/typing-word.d.ts +25 -0
  60. package/dist/types/prompt/welcome.d.ts +26 -6
  61. package/dist/types/render/hanging-wrap.d.ts +7 -0
  62. package/dist/types/render/hyperlink.d.ts +2 -0
  63. package/dist/types/render/render-utils.d.ts +9 -1
  64. package/dist/types/render/utils.d.ts +1 -1
  65. package/dist/types/setup/scenes/splash.d.ts +6 -5
  66. package/dist/types/status-line/context-usage.d.ts +4 -1
  67. package/dist/types/status-line/host.d.ts +6 -4
  68. package/dist/types/status-line/startup.d.ts +6 -6
  69. package/dist/types/status-line/types.d.ts +3 -0
  70. package/dist/types/stdin-buffer.d.ts +7 -0
  71. package/dist/types/terminal-capabilities.d.ts +16 -1
  72. package/dist/types/terminal-multiplexer.d.ts +7 -0
  73. package/dist/types/terminal.d.ts +8 -4
  74. package/dist/types/theme/symbols.d.ts +1 -1
  75. package/dist/types/theme/theme.d.ts +11 -0
  76. package/dist/types/thinking.d.ts +5 -0
  77. package/dist/types/tmux.d.ts +39 -4
  78. package/dist/types/tools/ast-edit.d.ts +2 -2
  79. package/dist/types/tools/ast-grep.d.ts +2 -2
  80. package/dist/types/tools/bash.d.ts +6 -1
  81. package/dist/types/tools/edit.d.ts +2 -0
  82. package/dist/types/tools/eval.d.ts +53 -4
  83. package/dist/types/tools/find.d.ts +14 -4
  84. package/dist/types/tools/glob.d.ts +3 -3
  85. package/dist/types/tools/grep.d.ts +2 -2
  86. package/dist/types/tools/grouped-file-output.d.ts +9 -4
  87. package/dist/types/tools/native-view.d.ts +1 -1
  88. package/dist/types/tools/read.d.ts +32 -10
  89. package/dist/types/tools/renderer.d.ts +2 -0
  90. package/dist/types/tools/task.d.ts +31 -0
  91. package/dist/types/tools/web-search-types.d.ts +1 -0
  92. package/dist/types/tools/write.d.ts +2 -0
  93. package/dist/types/tui.d.ts +20 -3
  94. package/package.json +10 -10
  95. package/src/app-keybindings.d.ts +18 -8
  96. package/src/app-keybindings.ts +20 -8
  97. package/src/apps/autoresearch-dashboard.ts +444 -27
  98. package/src/apps/debug/raw-sse.ts +2 -2
  99. package/src/apps/git/diff-pane.ts +39 -41
  100. package/src/apps/git/git-tui.ts +80 -14
  101. package/src/apps/git/sidebar.ts +10 -1
  102. package/src/apps/git/state.ts +12 -0
  103. package/src/autocomplete.d.ts +2 -0
  104. package/src/autocomplete.ts +21 -19
  105. package/src/bracketed-paste.ts +9 -2
  106. package/src/charts/chart-svg.d.ts +7 -13
  107. package/src/charts/chart-svg.ts +19 -22
  108. package/src/charts/table-data.ts +17 -6
  109. package/src/chat/advisor-message.d.ts +4 -1
  110. package/src/chat/advisor-message.ts +77 -24
  111. package/src/chat/assistant-message.d.ts +9 -4
  112. package/src/chat/assistant-message.ts +127 -31
  113. package/src/chat/bash-execution.ts +7 -2
  114. package/src/chat/figure-markdown.d.ts +7 -2
  115. package/src/chat/figure-markdown.ts +10 -3
  116. package/src/chat/image-loading.ts +9 -6
  117. package/src/chat/messages.d.ts +3 -1
  118. package/src/chat/messages.ts +4 -1
  119. package/src/chat/read-tool-group.d.ts +2 -2
  120. package/src/chat/read-tool-group.ts +97 -42
  121. package/src/chat/svg-figure.ts +3 -1
  122. package/src/chat/svg-source.ts +6 -3
  123. package/src/chat/table-chart.d.ts +11 -15
  124. package/src/chat/table-chart.ts +24 -57
  125. package/src/chat/tool-execution.d.ts +32 -20
  126. package/src/chat/tool-execution.ts +103 -36
  127. package/src/chat/user-message.d.ts +3 -2
  128. package/src/chat/user-message.ts +54 -34
  129. package/src/chrome/countdown-timer.ts +3 -3
  130. package/src/chrome/diff.d.ts +2 -3
  131. package/src/chrome/diff.ts +4 -9
  132. package/src/chrome/status-notice.ts +5 -0
  133. package/src/chrome/transcript-container.d.ts +2 -0
  134. package/src/chrome/transcript-container.ts +212 -28
  135. package/src/components/editor.ts +12 -12
  136. package/src/components/image.d.ts +2 -0
  137. package/src/components/image.ts +54 -20
  138. package/src/components/markdown.d.ts +49 -3
  139. package/src/components/markdown.ts +482 -12
  140. package/src/components/settings-list.ts +2 -4
  141. package/src/components/text.d.ts +2 -0
  142. package/src/components/text.ts +11 -1
  143. package/src/debug-server.d.ts +2 -0
  144. package/src/debug-server.ts +51 -69
  145. package/src/hotkeys-markdown.ts +2 -0
  146. package/src/keybinding-matchers.d.ts +6 -0
  147. package/src/keybinding-matchers.ts +19 -0
  148. package/src/multiplexers/tmux.d.ts +1 -0
  149. package/src/multiplexers/tmux.ts +3 -0
  150. package/src/multiplexers/types.d.ts +6 -0
  151. package/src/multiplexers/types.ts +6 -0
  152. package/src/native/backend.d.ts +5 -4
  153. package/src/native/backend.ts +13 -5
  154. package/src/native/blobs.d.ts +24 -12
  155. package/src/native/blobs.ts +56 -7
  156. package/src/native/reconcile.ts +43 -21
  157. package/src/overlays/advisor-config.ts +259 -8
  158. package/src/overlays/agent-hub-projection.d.ts +10 -5
  159. package/src/overlays/agent-hub-projection.ts +63 -12
  160. package/src/overlays/annotation-overlay.ts +422 -168
  161. package/src/overlays/approval-dialog.ts +389 -0
  162. package/src/overlays/ask-dialog.ts +244 -105
  163. package/src/overlays/btw-history-panel.ts +208 -147
  164. package/src/overlays/extensions/extension-list.ts +4 -6
  165. package/src/overlays/hook-editor.ts +90 -32
  166. package/src/overlays/hook-input.ts +105 -19
  167. package/src/overlays/job-tree.ts +177 -0
  168. package/src/overlays/jobs-panel.ts +222 -142
  169. package/src/overlays/login-dialog.ts +201 -91
  170. package/src/overlays/mcp-add-wizard.ts +562 -279
  171. package/src/overlays/model-browser.ts +32 -7
  172. package/src/overlays/model-hub.ts +4 -10
  173. package/src/overlays/model-picker.ts +58 -21
  174. package/src/overlays/pause-screen.ts +81 -23
  175. package/src/overlays/plan-review-overlay.ts +16 -0
  176. package/src/overlays/plugin-selector.ts +17 -1
  177. package/src/overlays/queue-mode-selector.ts +10 -0
  178. package/src/overlays/report-panel.ts +6 -2
  179. package/src/overlays/reset-usage-selector.ts +130 -21
  180. package/src/overlays/session-account-selector.ts +36 -0
  181. package/src/overlays/session-info-overlay.ts +199 -76
  182. package/src/overlays/session-selector.ts +15 -10
  183. package/src/overlays/settings-selector.ts +3 -0
  184. package/src/overlays/show-images-selector.ts +1 -0
  185. package/src/overlays/snapcompact-shape-preview.ts +13 -6
  186. package/src/overlays/theme-selector.ts +6 -1
  187. package/src/overlays/thinking-selector.ts +8 -4
  188. package/src/overlays/tree-selector.ts +117 -2
  189. package/src/overlays/usage-dashboard.ts +498 -144
  190. package/src/prompt/composer-cache.ts +4 -1
  191. package/src/prompt/composer.ts +200 -74
  192. package/src/prompt/custom-editor.ts +168 -65
  193. package/src/prompt/image-references.d.ts +22 -0
  194. package/src/prompt/image-references.ts +79 -2
  195. package/src/prompt/internal-url-autocomplete.ts +1 -0
  196. package/src/prompt/macos-spelling.ts +28 -5
  197. package/src/prompt/prose-gate.ts +3 -0
  198. package/src/prompt/queued-messages.ts +9 -2
  199. package/src/prompt/tips.txt +1 -2
  200. package/src/prompt/typing-word.ts +59 -0
  201. package/src/prompt/welcome.ts +97 -45
  202. package/src/render/code-cell.ts +18 -5
  203. package/src/render/hanging-wrap.d.ts +7 -0
  204. package/src/render/hanging-wrap.ts +58 -0
  205. package/src/render/hyperlink.d.ts +2 -0
  206. package/src/render/hyperlink.ts +5 -0
  207. package/src/render/render-utils.d.ts +9 -1
  208. package/src/render/render-utils.ts +16 -2
  209. package/src/render/utils.d.ts +1 -1
  210. package/src/render/utils.ts +1 -1
  211. package/src/render/width-aware-text.ts +6 -5
  212. package/src/setup/scenes/splash.ts +22 -8
  213. package/src/status-line/component.ts +79 -11
  214. package/src/status-line/context-usage.ts +176 -73
  215. package/src/status-line/footer.ts +18 -35
  216. package/src/status-line/host.ts +6 -1
  217. package/src/status-line/segments.ts +16 -5
  218. package/src/status-line/startup.ts +6 -6
  219. package/src/status-line/types.ts +1 -0
  220. package/src/stdin-buffer.d.ts +7 -0
  221. package/src/stdin-buffer.ts +300 -62
  222. package/src/terminal-capabilities.d.ts +16 -1
  223. package/src/terminal-capabilities.ts +66 -28
  224. package/src/terminal-multiplexer.d.ts +7 -0
  225. package/src/terminal-multiplexer.ts +14 -0
  226. package/src/terminal.d.ts +8 -4
  227. package/src/terminal.ts +190 -63
  228. package/src/theme/symbols.d.ts +1 -1
  229. package/src/theme/symbols.ts +1 -0
  230. package/src/theme/theme-class.ts +1 -0
  231. package/src/theme/theme.d.ts +11 -0
  232. package/src/theme/theme.ts +46 -14
  233. package/src/thinking.d.ts +5 -0
  234. package/src/thinking.ts +9 -1
  235. package/src/tmux.d.ts +39 -4
  236. package/src/tmux.ts +110 -16
  237. package/src/tools/ask.ts +20 -9
  238. package/src/tools/ast-edit.d.ts +2 -2
  239. package/src/tools/ast-edit.ts +30 -7
  240. package/src/tools/ast-grep.d.ts +2 -2
  241. package/src/tools/ast-grep.ts +39 -35
  242. package/src/tools/bash.d.ts +6 -1
  243. package/src/tools/bash.ts +15 -9
  244. package/src/tools/debug.ts +2 -1
  245. package/src/tools/default-renderer.ts +3 -2
  246. package/src/tools/edit.d.ts +2 -0
  247. package/src/tools/edit.ts +100 -21
  248. package/src/tools/eval.d.ts +53 -4
  249. package/src/tools/eval.ts +173 -137
  250. package/src/tools/find.d.ts +14 -4
  251. package/src/tools/find.ts +71 -18
  252. package/src/tools/glob.d.ts +3 -3
  253. package/src/tools/glob.ts +51 -17
  254. package/src/tools/grep.d.ts +2 -2
  255. package/src/tools/grep.ts +99 -22
  256. package/src/tools/grouped-file-output.d.ts +9 -4
  257. package/src/tools/grouped-file-output.ts +21 -6
  258. package/src/tools/lsp.ts +30 -18
  259. package/src/tools/mcp.ts +2 -2
  260. package/src/tools/native-view.d.ts +1 -1
  261. package/src/tools/native-view.ts +2 -2
  262. package/src/tools/read.d.ts +32 -10
  263. package/src/tools/read.ts +89 -43
  264. package/src/tools/renderer.d.ts +2 -0
  265. package/src/tools/renderer.ts +2 -0
  266. package/src/tools/task.d.ts +31 -0
  267. package/src/tools/task.ts +40 -7
  268. package/src/tools/todo.ts +3 -2
  269. package/src/tools/wait.ts +16 -30
  270. package/src/tools/web-search-types.d.ts +1 -0
  271. package/src/tools/web-search-types.ts +1 -0
  272. package/src/tools/web-search.ts +2 -1
  273. package/src/tools/write.d.ts +2 -0
  274. package/src/tools/write.ts +36 -12
  275. package/src/tools/yield.ts +2 -2
  276. package/src/tui.d.ts +20 -3
  277. package/src/tui.ts +160 -43
  278. package/src/utils.ts +5 -3
  279. package/dist/types/tools/eval-format/code-mode-declarations.d.ts +0 -5
  280. package/src/tools/eval-format/code-mode-declarations.ts +0 -61
package/README.md CHANGED
@@ -38,6 +38,42 @@ tui.addChild(editor);
38
38
  tui.start();
39
39
  ```
40
40
 
41
+ ## SIXEL transparency and terminal backgrounds
42
+
43
+ SIXEL has binary transparency, not fractional alpha. omp blends partially
44
+ transparent image pixels against the terminal's reported OSC 11 background
45
+ before quantization, preserving antialiased text and translucent details.
46
+ Images with alpha are resized in premultiplied form before background compositing
47
+ to prevent dark fringes and hidden-color bleed along scaled transparent edges.
48
+ Fully transparent pixels stay transparent. Kitty and iTerm2 retain their
49
+ existing image paths.
50
+
51
+ When a new OSC 11 report changes the background RGB, SIXEL images are
52
+ re-encoded even if the terminal stays dark or stays light. Terminals supporting
53
+ Mode 2031 trigger this automatically. Otherwise, press Ctrl+L to refresh the
54
+ background after changing it. This introduces no periodic polling.
55
+ Direct terminals replay transcript history using the existing theme-change
56
+ repaint policy; multiplexers repaint the viewport without clearing their native
57
+ scrollback.
58
+
59
+ Cached RGB is cleared when terminal ownership starts or ends, so a restarted
60
+ session without an OSC 11 response cannot inherit the previous terminal's RGB.
61
+ If the terminal cannot report its RGB, or an active multiplexer marks background
62
+ queries as unreliable on the current platform, omp approximates the background
63
+ with black for detected dark appearance or white for light. Untrusted reports
64
+ do not override the existing appearance fallback. Exact edge-color matching is
65
+ not guaranteed with that fallback, transparent terminal windows, or graphics
66
+ overlapping a differently colored background.
67
+
68
+ On known-broken background-query paths, such as macOS inside Zellij, native
69
+ appearance changes also repaint SIXEL images when using a fixed theme or
70
+ identical light/dark theme mappings. `COLORFGBG` still takes precedence over the
71
+ native fallback; reports that leave the effective background unchanged do not
72
+ trigger a repaint.
73
+
74
+ If native TSP negotiation fails, the row renderer resumes these SIXEL refreshes.
75
+ Expecting native support alone does not disable repainting after the failure.
76
+
41
77
  ## Core API
42
78
 
43
79
  ### TUI
@@ -8,8 +8,8 @@ no rights in third-party code, fonts, data, or marks identified below.
8
8
  PYTHON DEPENDENCY DISTRIBUTION ROLE
9
9
  ===================================
10
10
 
11
- omp-rpc has no third-party runtime dependencies. robomp declares FastAPI,
12
- Uvicorn, HTTPX, Pydantic, pydantic-settings, python-dotenv, Click, and omp-rpc
11
+ zeta-rpc has no third-party runtime dependencies. robomp declares FastAPI,
12
+ Uvicorn, HTTPX, Pydantic, pydantic-settings, python-dotenv, Click, and zeta-rpc
13
13
  as ordinary installer-resolved dependencies. The Python wheels do not vendor
14
14
  those projects; each dependency remains a separately installed distribution
15
15
  carrying its own license metadata and files. Container/system assemblers must
@@ -79,9 +79,9 @@ uutils coreutils (https://github.com/uutils/coreutils), MIT
79
79
  --------------------------------------------------------------------------------
80
80
  Covers: base32, base64, basename, cat, cksum (shared checksum machinery),
81
81
  b2sum, md5sum, sha1sum, sha224sum, sha256sum, sha384sum, sha512sum, comm, cp,
82
- cut, date, dirname, head, hostname, ln, ls, mkdir, mktemp, mv, nproc, paste,
83
- printenv, readlink, realpath, rm, seq, sort, stat, tac, tail, tee, touch, tr,
84
- truncate, uname, uniq, wc, whoami, yes.
82
+ cut, date, dirname, head, hostname, ln, ls, mkdir, mktemp, mv, nl, nproc,
83
+ paste, printenv, readlink, realpath, rm, seq, sort, stat, tac, tail, tee,
84
+ touch, tr, truncate, uname, uniq, wc, whoami, yes.
85
85
 
86
86
  Copyright (c) uutils developers
87
87
 
@@ -824,6 +824,56 @@ public licenses.
824
824
 
825
825
  Creative Commons may be contacted at creativecommons.org.
826
826
 
827
+ -------------------------------------------------------------------------------
828
+ scripts/brand/fonts/ANSI Shadow.flf, scripts/brand/fonts/mini.flf
829
+
830
+ Two FIGlet font files from the standard FIGlet font distribution — the
831
+ figlet.org font set shipped by figlet.js
832
+ (https://github.com/patorjk/figlet.js/tree/master/fonts), fetched from
833
+ figlet.js 1.8.0 — vendored so the welcome/splash brand art
834
+ (`packages/tui/src/prompt/welcome.ts`) is generated reproducibly and offline
835
+ by `bun scripts/brand/generate-logo-art.ts`. Both files are unmodified and
836
+ retain their original FIGlet headers. They are build-time inputs only: no font
837
+ file or font data is compiled into, or shipped with, a Zeta release artifact.
838
+ The fonts' own headers carry their terms:
839
+
840
+ - `ANSI Shadow.flf` — "ANSI Shadow". Author unknown ("Font Author: ?" in the
841
+ header); a TheDraw-archive font converted with the FIGlet font editor
842
+ (http://patorjk.com/figfont-editor). Distributed under the FIGlet font
843
+ license as carried by the standard FIGlet font set: free to use and
844
+ redistribute with the header intact.
845
+ - `mini.flf` — "mini" by Glenn Chappell (4/93), from figlet release 2.1
846
+ (12 Aug 1994), "Includes ISO Latin-1"; modified by Paul Burton
847
+ <solution@earthlink.net> 12/96. Header grant: "Permission is hereby given to
848
+ modify this font, as long as the modifier's name is placed on a comment
849
+ line."
850
+
851
+ FIGlet renderer — `figlet` 1.8.0 (https://github.com/patorjk/figlet.js), a
852
+ root devDependency used only to generate the art at build time; it is not
853
+ imported by any runtime bundle or shipped artifact.
854
+
855
+ MIT License
856
+
857
+ Copyright (C) 2014-present Patrick Gillespie and other contributors
858
+
859
+ Permission is hereby granted, free of charge, to any person obtaining a copy
860
+ of this software and associated documentation files (the "Software"), to deal
861
+ in the Software without restriction, including without limitation the rights
862
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
863
+ copies of the Software, and to permit persons to whom the Software is
864
+ furnished to do so, subject to the following conditions:
865
+
866
+ The above copyright notice and this permission notice shall be included in
867
+ all copies or substantial portions of the Software.
868
+
869
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
870
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
871
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
872
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
873
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
874
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
875
+ SOFTWARE.
876
+
827
877
  BUN / NPM DEPENDENCY INVENTORY
828
878
  ==============================
829
879
  This inventory is traversed from bun.lock, not from the host node_modules tree.
@@ -17,6 +17,8 @@ interface AppKeybindings {
17
17
  "app.model.selectTemporary": true;
18
18
  "app.tools.expand": true;
19
19
  "app.tools.toggleVisibility": true;
20
+ "app.ask.hide": true;
21
+ "app.approval.approve": true;
20
22
  "app.editor.external": true;
21
23
  "app.message.followUp": true;
22
24
  "app.retry": true;
@@ -36,8 +38,8 @@ interface AppKeybindings {
36
38
  "app.session.rename": true;
37
39
  "app.session.delete": true;
38
40
  "app.session.deleteNoninvasive": true;
39
- "app.tree.foldOrUp": true;
40
- "app.tree.unfoldOrDown": true;
41
+ "app.tree.previousBranch": true;
42
+ "app.tree.nextBranch": true;
41
43
  "app.plan.toggle": true;
42
44
  "app.history.search": true;
43
45
  "app.stt.pushToTalk": true;
@@ -238,6 +240,14 @@ export declare const KEYBINDINGS: {
238
240
  readonly defaultKeys: "ctrl+shift+o";
239
241
  readonly description: "Show or hide tool activity";
240
242
  };
243
+ readonly "app.ask.hide": {
244
+ readonly defaultKeys: "alt+h";
245
+ readonly description: "Hide or show a pending ask dialog";
246
+ };
247
+ readonly "app.approval.approve": {
248
+ readonly defaultKeys: ["ctrl+enter", "ctrl+q"];
249
+ readonly description: "Approve a pending tool call";
250
+ };
241
251
  readonly "app.editor.external": {
242
252
  readonly defaultKeys: "ctrl+g";
243
253
  readonly description: "Open external editor";
@@ -314,13 +324,13 @@ export declare const KEYBINDINGS: {
314
324
  readonly defaultKeys: "ctrl+backspace";
315
325
  readonly description: "Delete session (non-invasive)";
316
326
  };
317
- readonly "app.tree.foldOrUp": {
318
- readonly defaultKeys: ["ctrl+left", "alt+left"];
319
- readonly description: "Fold or move up";
327
+ readonly "app.tree.previousBranch": {
328
+ readonly defaultKeys: [];
329
+ readonly description: "Jump to the previous branch in /tree";
320
330
  };
321
- readonly "app.tree.unfoldOrDown": {
322
- readonly defaultKeys: ["ctrl+right", "alt+right"];
323
- readonly description: "Unfold or move down";
331
+ readonly "app.tree.nextBranch": {
332
+ readonly defaultKeys: [];
333
+ readonly description: "Jump to the next branch in /tree";
324
334
  };
325
335
  readonly "app.plan.toggle": {
326
336
  readonly defaultKeys: "alt+shift+p";
@@ -118,6 +118,11 @@ export type PaneClick = {
118
118
  } | {
119
119
  type: "handled";
120
120
  } | null;
121
+ /**
122
+ * The heading of one side of a media/binary change (`Before · PNG · Git LFS`):
123
+ * `label` plus the side's kind, shared by the ANSI pane and the native compare.
124
+ */
125
+ export declare function assetTitle(label: string, side: FileAssetSide): string;
121
126
  /**
122
127
  * Scrollable diff viewport. The root component feeds it key/mouse input and
123
128
  * composes its rendered lines into the frame.
@@ -7,7 +7,8 @@
7
7
  * scrollbar, right sidebar (file management + commit form while dirty, HEAD
8
8
  * commit details with author avatar when clean). Submitting an empty commit
9
9
  * form generates an llm-git-compatible message; submitting populated fields
10
- * commits them. A footer shows key hints.
10
+ * commits them. A footer shows key hints; the staging and discarding ones are
11
+ * omitted while the tree is clean, where they cannot fire.
11
12
  *
12
13
  * `tab` moves focus between the diff and the sidebar; both panes take
13
14
  * arrows/PgUp/PgDn, vim motions (`j`/`k`/`h`/`l`/`g`/`G`), and mouse
@@ -22,7 +23,8 @@
22
23
  * refreshes. In the sidebar tree `←`/`→` collapse/expand directories,
23
24
  * `enter` opens the selected file in the diff pane, `space` stages or
24
25
  * unstages the selected row, and `delete` discards it — on a directory,
25
- * every file underneath it.
26
+ * every file underneath it. All of the staging and discarding keys are inert
27
+ * on a clean tree, which shows the HEAD commit instead of a change list.
26
28
  */
27
29
  import { TUI } from "../../tui.js";
28
30
  import type { AvatarSource } from "./avatar.js";
@@ -58,6 +60,17 @@ export interface GitTuiHost {
58
60
  stagedAll: boolean;
59
61
  }>;
60
62
  }
63
+ type Focus = "diff" | "sidebar";
64
+ /**
65
+ * Footer key hints. A clean tree renders the HEAD commit view, where stage
66
+ * and discard cannot fire: `#patchTargetFor` returns null and
67
+ * `#discardCurrentFile` returns early for `area: "commit"` rows, and the
68
+ * sidebar only builds stage/discard actions for the unstaged/staged
69
+ * sections. `commit` needs the commit form (absent on a clean tree) and
70
+ * `select` feeds the line-level stage/discard actions (no-ops on commit
71
+ * rows), so the commit view drops those too and says what it is showing.
72
+ */
73
+ export declare function gitFooterHints(clean: boolean, focus: Focus): string;
61
74
  /**
62
75
  * Mount the git TUI as a fullscreen overlay on an existing TUI (the `/git`
63
76
  * slash command). Resolves when the user closes it; the caller restores focus.
@@ -65,3 +78,4 @@ export interface GitTuiHost {
65
78
  export declare function showGitOverlay(ui: TUI, host: GitTuiHost): Promise<void>;
66
79
  /** Run the fullscreen git TUI standalone (`zetacode git`) until the user quits. */
67
80
  export declare function runGitTui(host: GitTuiHost): Promise<void>;
81
+ export {};
@@ -73,11 +73,22 @@ export interface TextFileContents {
73
73
  readonly newText: string;
74
74
  readonly streamResult: DiffStreamResult;
75
75
  }
76
+ /** Where one side of a change lives, so a host viewer (Tern's TSP `media` node) can load it by path. */
77
+ export interface MediaRef {
78
+ /** Absolute path of the file (repository root joined with its repository path). */
79
+ readonly path: string;
80
+ /** Git revision holding this side (`HEAD`, a sha, `:0` for the index); absent for the worktree file. */
81
+ readonly rev?: string;
82
+ }
76
83
  /** Non-text sides rendered as previews or explicit placeholders. */
77
84
  export interface AssetFileContents {
78
85
  readonly kind: "asset";
79
86
  readonly old: FileAssetSide;
80
87
  readonly new: FileAssetSide;
88
+ /** Source of {@link old}; absent when that side is empty. */
89
+ readonly oldRef?: MediaRef;
90
+ /** Source of {@link new}; absent when that side is empty. */
91
+ readonly newRef?: MediaRef;
81
92
  }
82
93
  /** Loaded file content selected for text diffing or asset preview. */
83
94
  export type FileContents = TextFileContents | AssetFileContents;
@@ -6,6 +6,8 @@
6
6
  */
7
7
  export declare function findLeadingSlashCommandStart(text: string): number | null;
8
8
  export declare function findTrailingSlashCommandStart(text: string): number | null;
9
+ /** Extract the live whitespace-delimited or double-quoted `@` file token ending at the cursor. */
10
+ export declare function extractAtFilePrefix(text: string): string | null;
9
11
  /**
10
12
  * Whether an autocomplete value represents a directory: trailing slash or
11
13
  * backslash, optionally followed by a closing quote for quoted paths.
@@ -2,9 +2,11 @@
2
2
  * Draws a {@link ChartSpec} as a standalone SVG document colored only with
3
3
  * figure tokens — `var(--fg)`, `var(--muted)`, `var(--border)`,
4
4
  * `var(--accent)`, `var(--surface)`, `var(--c1)`…`var(--c6)` — on a
5
- * transparent background — the token vocabulary of assistant ```svg figures —
6
- * so the host resolves them against the live theme (`prepareSvg`) for both
7
- * the rasterized terminal image and the native TSP blob.
5
+ * transparent background — the token vocabulary of assistant ```svg figures:
6
+ * the host resolves them against the live theme (`prepareSvg`) for the
7
+ * rasterized terminal image, and a TSP terminal draws the chart as an ```svg
8
+ * figure in the palette it shows. The root carries {@link chartAlt} as its
9
+ * `aria-label`.
8
10
  *
9
11
  * Styled after Apple's charts and Tern's UI: a UI sans (Geist where Tern
10
12
  * provides it), muted labels, hairline gridlines that recede behind the
@@ -39,16 +41,8 @@
39
41
  */
40
42
  import { type ChartSpec } from "./chart-plan.js";
41
43
  import { type Dimension } from "./table-data.js";
42
- /** A drawn chart: the SVG document and its size in user units. */
43
- export interface ChartSvg {
44
- readonly svg: string;
45
- readonly width: number;
46
- readonly height: number;
47
- }
48
- /** The SVG document for `spec`. */
49
- export declare function renderChartSvg(spec: ChartSpec): ChartSvg;
50
- /** One-line description of the chart, for screen readers and terminals that show the alt text. */
51
- export declare function chartAlt(spec: ChartSpec): string;
44
+ /** The SVG document for `spec`, labeled for screen readers with {@link chartAlt}. */
45
+ export declare function renderChartSvg(spec: ChartSpec): string;
52
46
  /**
53
47
  * A value in base units as an axis label: durations and sizes in the unit,
54
48
  * counts compacted under the suffix (`12k`, `3.4M`), that `magnitude` reads
@@ -1,6 +1,6 @@
1
1
  import { type Component } from "../tui.js";
2
2
  import type { AdvisorMessageDetails } from "./messages.js";
3
- import { type Theme } from "../theme/index.js";
3
+ import type { Theme } from "../theme/index.js";
4
4
  import { type NativeUiEvent } from "../native/node.js";
5
5
  /** The advisor card: shared by the controlled expansion getter and native toggles. */
6
6
  export interface AdvisorMessageCard extends Component {
@@ -14,6 +14,9 @@ export interface AdvisorMessageCard extends Component {
14
14
  * output (whose `thinkingText` color equals `toolOutput` in most themes):
15
15
  * a bold `customMessageLabel` header tag (skill-card convention), a heavy
16
16
  * rail tinted per-note severity, and the note body on the default text color.
17
+ * Natively it is a callout tinted by its worst note: that severity's icon and
18
+ * the tally head it, the advisor's name ends the head, and with several notes
19
+ * each leads with its own severity icon.
17
20
  *
18
21
  * `getExpanded` owns expansion; a native toggle overrides it for this card
19
22
  * until the next transcript-wide change.
@@ -2,7 +2,7 @@ import type { AssistantMessage, ImageContent } from "@linxiraos/pi-ai";
2
2
  import { type Component, Container } from "../tui.js";
3
3
  import { type ImageBudget } from "../components/image.js";
4
4
  import type { AssistantThinkingRenderer } from "./extension-types.js";
5
- import type { NativeNode, NativeUiEvent } from "../native/node.js";
5
+ import type { DescribeContext, NativeNode, NativeUiEvent } from "../native/node.js";
6
6
  import { type CacheInvalidation } from "./cache-invalidation-marker.js";
7
7
  import { type ServedModelMismatch } from "./served-model-marker.js";
8
8
  import { type TranscriptStableRow } from "../chrome/transcript-container.js";
@@ -99,13 +99,13 @@ export declare class AssistantMessageComponent extends Container {
99
99
  * head's `title`. With `hideThinkingBlock` only the live head shows (collapsed)
100
100
  * and a finished thought emits nothing.
101
101
  */
102
- describe(): NativeNode;
102
+ describe(cx?: DescribeContext): NativeNode;
103
103
  /**
104
104
  * A TTSR rule rewound this partial answer: a native terminal dims it and
105
105
  * tags it `↺ rewound` (the ANSI render leaves it as it stopped).
106
106
  */
107
107
  markRewound(): void;
108
- /** Mirrors a thinking section collapsed or expanded in the terminal. */
108
+ /** Mirrors a thinking section collapsed or expanded in the terminal; runs its controls' clicks. */
109
109
  handleNativeEvent(event: NativeUiEvent): void;
110
110
  /** Width-independent stable identities for the streamed leading thinking run. */
111
111
  getTranscriptStableRows(): readonly TranscriptStableRow[];
@@ -130,7 +130,12 @@ export declare class AssistantMessageComponent extends Container {
130
130
  setTableChartsVisible(visible: boolean): void;
131
131
  /** Toggle only images produced by tool results; assistant-native images remain governed by setImagesVisible. */
132
132
  setToolResultImagesVisible(visible: boolean): void;
133
- setToolResultImages(toolCallId: string, images: ImageContent[]): void;
133
+ /**
134
+ * A grouped read's result images, and `mediaPath`: the file it read that Tern's media viewer
135
+ * shows (read details), which a native host supporting `media` shows by path instead of the
136
+ * images. A media-only result (a model, a PDF) passes no images.
137
+ */
138
+ setToolResultImages(toolCallId: string, images: ImageContent[], mediaPath?: string): void;
134
139
  updateContent(message: AssistantMessage, opts?: {
135
140
  transient?: boolean;
136
141
  }): void;
@@ -1,5 +1,5 @@
1
1
  import type { ImageBudget } from "../components/image.js";
2
- import type { Markdown } from "../components/markdown.js";
2
+ import { type Markdown } from "../components/markdown.js";
3
3
  import { Container } from "../tui.js";
4
4
  export interface FigureMarkdownOptions {
5
5
  /** Markdown for one prose run (and a failed figure's code fallback); FigureMarkdown drives its transience. */
@@ -32,7 +32,12 @@ export declare class FigureMarkdown extends Container {
32
32
  /**
33
33
  * The trimmed prose ahead of the first figure, or "" when the block opens
34
34
  * with one. These are the only rows plain Markdown reproduces byte for
35
- * byte, so they are all a transcript may publish ahead of the figure.
35
+ * byte, so they are all a transcript may publish ahead of the figure. While
36
+ * that prose is still the streaming tail (no figure follows it yet), only
37
+ * its settled prefix ({@link Markdown.getLastRenderStableText}) qualifies:
38
+ * the rest is still being written. Both forms are in
39
+ * {@link streamingMarkdownSource} form, so the settled prefix stays a byte
40
+ * prefix of the whole run once a figure splits it off.
36
41
  */
37
42
  get leadingProse(): string;
38
43
  /** Whether a figure's final source still waits for its raster, or a chart for its pick or raster. */
@@ -173,7 +173,9 @@ export declare function isUserInvokedSkillPrompt(message: CustomMessage): boolea
173
173
  * reminders, and auto-continues are not turn starts.
174
174
  */
175
175
  export declare function isUserTurnInitiator(message: CustomMessage): boolean;
176
- export type AdvisorSeverity = "nit" | "concern" | "blocker";
176
+ /** Advisor note severities, weakest first; ranks severity thresholds such as `advisor.continueSeverity`. */
177
+ export declare const ADVISOR_SEVERITIES: readonly ["nit", "concern", "blocker"];
178
+ export type AdvisorSeverity = (typeof ADVISOR_SEVERITIES)[number];
177
179
  /** One queued advice note. */
178
180
  export interface AdvisorNote {
179
181
  note: string;
@@ -74,8 +74,8 @@ export declare class ReadToolGroupComponent extends Container implements ToolExe
74
74
  * The read run as one inline `tool` on terminals that list the kind, else
75
75
  * the fallback: a bare `card` (role `zeta.tool.read`) with `Read <path>` or
76
76
  * `Read (N)` in the head, a `list` of path items (status tone, link,
77
- * correction and conflict detail, nested usage) and, with content previews
78
- * on, a `code` block per read clamped by the card's preview while collapsed.
77
+ * correction and conflict detail, nested usage) and a clamped preview per
78
+ * read when content previews are on.
79
79
  */
80
80
  describe(cx?: DescribeContext): NativeNode;
81
81
  }
@@ -2,7 +2,6 @@ import type { Tokens } from "@linxiraos/pi-utils/marked";
2
2
  import { type ChartPlan } from "../charts/chart-plan.js";
3
3
  import { type TableAnalysis } from "../charts/table-data.js";
4
4
  import type { ImageBudget } from "../components/image.js";
5
- import type { NativeNode } from "../native/node.js";
6
5
  import type { Component } from "../tui.js";
7
6
  /**
8
7
  * `smart`: a model refines the local guess where meaning decides (kind,
@@ -24,17 +23,11 @@ export interface TableChartRequest {
24
23
  * for no chart. A rejection falls back to the local guess.
25
24
  */
26
25
  export type TableChartPlanner = (request: TableChartRequest) => Promise<ChartPlan | null>;
27
- /** A drawn chart, ready to resolve against the theme. */
28
- export interface TableChart {
29
- /** SVG colored with figure tokens (`var(--accent)`, …). */
30
- readonly svg: string;
31
- readonly alt: string;
32
- /** Size in SVG user units. */
33
- readonly width: number;
34
- readonly height: number;
35
- }
36
- /** The chart under a table: drawn, none, or a smart pick on its way (the promise settles once the cache holds it). */
37
- export type ChartLookup = TableChart | null | Promise<void>;
26
+ /**
27
+ * The chart under a table: its SVG, colored with figure tokens (`var(--accent)`, …)
28
+ * still to resolve; none; or a smart pick on its way (the promise settles once the cache holds it).
29
+ */
30
+ export type ChartLookup = string | null | Promise<void>;
38
31
  /** One run of a Markdown block: prose (ending at a charted table), or the chart drawn after that table. */
39
32
  export type ChartSegment = {
40
33
  readonly kind: "markdown";
@@ -60,10 +53,13 @@ export declare function splitTableCharts(markdown: string, streaming: boolean):
60
53
  */
61
54
  export declare function lookupTableChart(table: Tokens.Table): ChartLookup;
62
55
  /**
63
- * A native `image` node drawing `chart` from its SVG — no raster — resolved
64
- * against the active theme; rebuilt when the theme changes.
56
+ * Chart `svg` as a Markdown ```svg fence, for a TSP terminal's `md` node. Its
57
+ * figure tokens stay unresolved: the terminal draws the fence as a figure in
58
+ * the palette it shows the prose in, so the chart cannot fall out of step with
59
+ * the page when omp's own idea of the appearance does, and a theme switch
60
+ * recolors it without a resend.
65
61
  */
66
- export declare function describeTableChart(chart: TableChart, key: string): NativeNode;
62
+ export declare function chartFence(svg: string): string;
67
63
  export interface TableChartFigureOptions {
68
64
  /** Shared inline-image budget. */
69
65
  budget?: ImageBudget;
@@ -17,19 +17,21 @@ export interface ToolExecutionOptions {
17
17
  /** Allow the name-keyed renderer registry only when the active tool is the built-in implementation. */
18
18
  useBuiltInRenderer?: boolean;
19
19
  }
20
+ /** A tool result or progress frame as a card shows it. */
21
+ export interface ToolResultFrame {
22
+ content: Array<{
23
+ type: string;
24
+ text?: string;
25
+ data?: string;
26
+ mimeType?: string;
27
+ }>;
28
+ details?: unknown;
29
+ isError?: boolean;
30
+ }
20
31
  export interface ToolExecutionHandle extends Component {
21
32
  updateArgs(args: unknown, toolCallId?: string): void;
22
33
  updateStreamPreview?(update: unknown): void;
23
- updateResult(result: {
24
- content: Array<{
25
- type: string;
26
- text?: string;
27
- data?: string;
28
- mimeType?: string;
29
- }>;
30
- details?: unknown;
31
- isError?: boolean;
32
- }, isPartial?: boolean, toolCallId?: string): void;
34
+ updateResult(result: ToolResultFrame, isPartial?: boolean, toolCallId?: string): void;
33
35
  setArgsComplete(toolCallId?: string): void;
34
36
  setExecutionStarted(toolCallId?: string): void;
35
37
  setExpanded(expanded: boolean): void;
@@ -39,6 +41,25 @@ export interface ToolExecutionHandle extends Component {
39
41
  /** Seal the block as final history and stop its animations. */
40
42
  seal(): void;
41
43
  }
44
+ /**
45
+ * Whether a call that returned with `details.async.state === "running"` stays
46
+ * parked ({@link ToolExecutionHandle.parkAsBackground}) so its job's later
47
+ * frames keep filling the card until a `completed`/`failed` frame settles it.
48
+ * Detached `task` spawns always do; backgrounded `bash`/`eval` jobs only under
49
+ * native rendering, where the terminal transcript keeps them frozen instead.
50
+ * Shared by the live event controller and the transcript rebuild.
51
+ */
52
+ export declare function parksAsBackground(toolName: string, details: unknown): boolean;
53
+ /** The background job state a tool result reports (`details.async.state`: running, completed, failed, cancelled). */
54
+ export declare function asyncJobState(details: unknown): string | undefined;
55
+ /** Whether a frame is a background job's last one: it completed, failed or was cancelled. */
56
+ export declare function isSettledJobFrame(details: unknown): boolean;
57
+ /**
58
+ * Settle a parked card ({@link parksAsBackground}) with its job's last frame
59
+ * ({@link isSettledJobFrame}): a completed or failed job is the call's result;
60
+ * a cancelled one keeps the output it got to and seals the card as cancelled.
61
+ */
62
+ export declare function settleWithJobFrame(component: ToolExecutionHandle, frame: ToolResultFrame, toolCallId: string): void;
42
63
  /** Phase-locked spinner glyph index shared by every live tool block so parallel
43
64
  * spinners advance in lockstep instead of each tracking its own start time. */
44
65
  export declare function sharedSpinnerFrame(frameCount: number, now?: number): number;
@@ -74,16 +95,7 @@ export declare class ToolExecutionComponent extends Container {
74
95
  */
75
96
  whenPreviewSettled(timeoutMs?: number): Promise<void>;
76
97
  updateStreamPreview(update: unknown): void;
77
- updateResult(result: {
78
- content: Array<{
79
- type: string;
80
- text?: string;
81
- data?: string;
82
- mimeType?: string;
83
- }>;
84
- details?: unknown;
85
- isError?: boolean;
86
- }, isPartial?: boolean, _toolCallId?: string): void;
98
+ updateResult(result: ToolResultFrame, isPartial?: boolean, _toolCallId?: string): void;
87
99
  /**
88
100
  * Advance to the shared spinner glyph and repaint just this block. Driven by
89
101
  * the single shared spinner ticker (see `registerSpinnerBlock`); the tick is
@@ -39,8 +39,9 @@ export declare class UserMessageComponent extends Container implements ReactionT
39
39
  /**
40
40
  * A head-less user-toned frame with the prompt as markdown under its
41
41
  * attached images (titled `#N` like their chips, opening the materialized
42
- * file on click): the fill says "you". A quiet toolbar (time, Copy, Rewind) fades in on hover when the
43
- * host handles transcript actions. The live-steering marker and the
42
+ * file on click): the fill says "you". A quiet footer like a turn's usage line
43
+ * (`⧉ ⏪ · 09:45`: Copy, Rewind, the time sent) fades in at its bottom-left on hover when
44
+ * the host handles transcript actions. The live-steering marker and the
44
45
  * agent's reaction are chips at the bottom-right, so a reaction landing
45
46
  * later updates the frame in place, even deep in scrollback.
46
47
  */
@@ -8,8 +8,9 @@ export declare class CountdownTimer {
8
8
  constructor(timeoutMs: number, tui: TUI | undefined, onTick: (seconds: number) => void, onExpire: () => void);
9
9
  /**
10
10
  * The remaining time as a terminal-clocked `elapsed` node: its age is the
11
- * negative remaining time (the start lies in the future), so it counts up
12
- * toward zero and freezes there at expiry. The age is taken on the first
11
+ * negative remaining time (the start lies in the future), so it counts down
12
+ * to zero and holds there at expiry (no `stopped`: that would freeze it at
13
+ * zero from the start). The age is taken on the first
13
14
  * call after a (re)start, when the node is first written, and the node is
14
15
  * reused until {@link reset}.
15
16
  */
@@ -7,10 +7,9 @@ import type { NativeNode } from "../native/node.js";
7
7
  * becomes one hunk; the terminal draws gutters, word emphasis and highlighting.
8
8
  * Removed rows carry old line numbers, added rows new ones and context rows
9
9
  * old ones, so the other side is derived from the running line delta.
10
+ * Tern picks the grammar from `path`.
10
11
  */
11
- export declare function nativeDiff(diffText: string, options?: {
12
- filePath?: string;
13
- } & TspProps<"diff">): NativeNode;
12
+ export declare function nativeDiff(diffText: string, props?: TspProps<"diff">): NativeNode;
14
13
  export interface RenderDiffOptions {
15
14
  /** File path used to resolve indentation (.editorconfig + defaults) */
16
15
  filePath?: string;
@@ -21,6 +21,8 @@ export interface StatusNoticeOptions {
21
21
  export declare class StatusNotice extends Container {
22
22
  #private;
23
23
  constructor(message: string, options?: StatusNoticeOptions);
24
+ /** The text the notice currently shows. */
25
+ get message(): string;
24
26
  setMessage(message: string, options?: StatusNoticeOptions): void;
25
27
  describe(): NativeNode;
26
28
  }
@@ -100,6 +100,8 @@ export declare class TranscriptContainer extends Container {
100
100
  blockModes(): readonly TranscriptBlockMode[];
101
101
  /** Emitted stable semantic-row counts in transcript order. */
102
102
  emittedStableRows(): readonly number[];
103
+ /** Whether any block is still streaming or otherwise unfinalized. */
104
+ hasActiveBlock(): boolean;
103
105
  /** Whether visible active capacity and live-block memory permit another admission. */
104
106
  canAdmit(rows: number): boolean;
105
107
  /** Prepares one atomic replay of the committed ledger and an emitted active-head prefix. */
@@ -8,6 +8,8 @@ export interface ImageOptions {
8
8
  maxWidthCells?: number;
9
9
  maxHeightCells?: number;
10
10
  filename?: string;
11
+ /** File the image was read from; its link target. Images without one link to a blob copy of their bytes. */
12
+ sourcePath?: string;
11
13
  /** Shared budget that caps how many inline images render as live graphics. */
12
14
  budget?: ImageBudget;
13
15
  /**