openhorse 0.2.21 → 0.2.23

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 (263) hide show
  1. package/dist/cli.js +25 -0
  2. package/dist/cli.js.map +1 -1
  3. package/dist/commands/index.d.ts.map +1 -1
  4. package/dist/commands/index.js +189 -49
  5. package/dist/commands/index.js.map +1 -1
  6. package/dist/commands/parser.d.ts.map +1 -1
  7. package/dist/commands/parser.js +8 -3
  8. package/dist/commands/parser.js.map +1 -1
  9. package/dist/commands/types.d.ts +2 -0
  10. package/dist/commands/types.d.ts.map +1 -1
  11. package/dist/commands/types.js.map +1 -1
  12. package/dist/core/cost-tracker.d.ts +45 -5
  13. package/dist/core/cost-tracker.d.ts.map +1 -1
  14. package/dist/core/cost-tracker.js +78 -13
  15. package/dist/core/cost-tracker.js.map +1 -1
  16. package/dist/framework/index.d.ts +1 -1
  17. package/dist/framework/index.d.ts.map +1 -1
  18. package/dist/framework/index.js.map +1 -1
  19. package/dist/framework/query.d.ts +25 -0
  20. package/dist/framework/query.d.ts.map +1 -1
  21. package/dist/framework/query.js +196 -49
  22. package/dist/framework/query.js.map +1 -1
  23. package/dist/framework/store.d.ts +6 -1
  24. package/dist/framework/store.d.ts.map +1 -1
  25. package/dist/framework/store.js +10 -1
  26. package/dist/framework/store.js.map +1 -1
  27. package/dist/harness/capsule.d.ts +1 -0
  28. package/dist/harness/capsule.d.ts.map +1 -1
  29. package/dist/harness/capsule.js +38 -9
  30. package/dist/harness/capsule.js.map +1 -1
  31. package/dist/harness/contract.d.ts +2 -0
  32. package/dist/harness/contract.d.ts.map +1 -1
  33. package/dist/harness/contract.js +78 -14
  34. package/dist/harness/contract.js.map +1 -1
  35. package/dist/harness/index.d.ts +2 -2
  36. package/dist/harness/index.d.ts.map +1 -1
  37. package/dist/harness/index.js +4 -1
  38. package/dist/harness/index.js.map +1 -1
  39. package/dist/harness/ledger.d.ts.map +1 -1
  40. package/dist/harness/ledger.js +6 -2
  41. package/dist/harness/ledger.js.map +1 -1
  42. package/dist/harness/state.d.ts.map +1 -1
  43. package/dist/harness/state.js +37 -7
  44. package/dist/harness/state.js.map +1 -1
  45. package/dist/index.d.ts +2 -1
  46. package/dist/index.d.ts.map +1 -1
  47. package/dist/ink-ui/components/StatusLine.d.ts.map +1 -1
  48. package/dist/ink-ui/components/StatusLine.js +0 -2
  49. package/dist/ink-ui/components/StatusLine.js.map +1 -1
  50. package/dist/ink-ui/screens/ReplScreen.d.ts.map +1 -1
  51. package/dist/ink-ui/screens/ReplScreen.js +12 -5
  52. package/dist/ink-ui/screens/ReplScreen.js.map +1 -1
  53. package/dist/runtime/agent-runtime-controller.d.ts.map +1 -1
  54. package/dist/runtime/agent-runtime-controller.js +11 -1
  55. package/dist/runtime/agent-runtime-controller.js.map +1 -1
  56. package/dist/runtime/aggregate-tool-presenter.d.ts +13 -0
  57. package/dist/runtime/aggregate-tool-presenter.d.ts.map +1 -0
  58. package/dist/runtime/aggregate-tool-presenter.js +44 -0
  59. package/dist/runtime/aggregate-tool-presenter.js.map +1 -0
  60. package/dist/runtime/chat-controller.d.ts +9 -2
  61. package/dist/runtime/chat-controller.d.ts.map +1 -1
  62. package/dist/runtime/chat-controller.js +345 -90
  63. package/dist/runtime/chat-controller.js.map +1 -1
  64. package/dist/runtime/rich-text/ansi-parser.d.ts +1 -1
  65. package/dist/runtime/rich-text/ansi-parser.d.ts.map +1 -1
  66. package/dist/runtime/rich-text/ansi-parser.js +93 -55
  67. package/dist/runtime/rich-text/ansi-parser.js.map +1 -1
  68. package/dist/runtime/rich-text/layout.d.ts +2 -11
  69. package/dist/runtime/rich-text/layout.d.ts.map +1 -1
  70. package/dist/runtime/rich-text/layout.js +280 -245
  71. package/dist/runtime/rich-text/layout.js.map +1 -1
  72. package/dist/runtime/rich-text/markdown-parser.js +31 -24
  73. package/dist/runtime/rich-text/markdown-parser.js.map +1 -1
  74. package/dist/runtime/rich-text/types.d.ts +1 -1
  75. package/dist/runtime/rich-text/types.d.ts.map +1 -1
  76. package/dist/runtime/subagents/production.d.ts.map +1 -1
  77. package/dist/runtime/subagents/production.js +28 -3
  78. package/dist/runtime/subagents/production.js.map +1 -1
  79. package/dist/runtime/subagents/result-parser.d.ts.map +1 -1
  80. package/dist/runtime/subagents/result-parser.js +54 -40
  81. package/dist/runtime/subagents/result-parser.js.map +1 -1
  82. package/dist/runtime/subagents/types.d.ts +2 -0
  83. package/dist/runtime/subagents/types.d.ts.map +1 -1
  84. package/dist/runtime/subagents/types.js +5 -1
  85. package/dist/runtime/subagents/types.js.map +1 -1
  86. package/dist/runtime/tool-detail-repository.d.ts +45 -0
  87. package/dist/runtime/tool-detail-repository.d.ts.map +1 -0
  88. package/dist/runtime/tool-detail-repository.js +131 -0
  89. package/dist/runtime/tool-detail-repository.js.map +1 -0
  90. package/dist/runtime/tool-output-presentation.d.ts +89 -0
  91. package/dist/runtime/tool-output-presentation.d.ts.map +1 -0
  92. package/dist/runtime/tool-output-presentation.js +329 -0
  93. package/dist/runtime/tool-output-presentation.js.map +1 -0
  94. package/dist/runtime/ui-events.d.ts +17 -0
  95. package/dist/runtime/ui-events.d.ts.map +1 -1
  96. package/dist/runtime/ui-events.js.map +1 -1
  97. package/dist/runtime/ui-view-model.d.ts +9 -0
  98. package/dist/runtime/ui-view-model.d.ts.map +1 -1
  99. package/dist/runtime/ui-view-model.js +59 -37
  100. package/dist/runtime/ui-view-model.js.map +1 -1
  101. package/dist/services/compact/auto-compact.d.ts +15 -2
  102. package/dist/services/compact/auto-compact.d.ts.map +1 -1
  103. package/dist/services/compact/auto-compact.js +56 -24
  104. package/dist/services/compact/auto-compact.js.map +1 -1
  105. package/dist/services/compact/compact.d.ts +2 -0
  106. package/dist/services/compact/compact.d.ts.map +1 -1
  107. package/dist/services/compact/compact.js +22 -5
  108. package/dist/services/compact/compact.js.map +1 -1
  109. package/dist/services/compact/coordinator.d.ts +26 -0
  110. package/dist/services/compact/coordinator.d.ts.map +1 -0
  111. package/dist/services/compact/coordinator.js +44 -0
  112. package/dist/services/compact/coordinator.js.map +1 -0
  113. package/dist/services/compact/index.d.ts +1 -0
  114. package/dist/services/compact/index.d.ts.map +1 -1
  115. package/dist/services/compact/index.js +3 -1
  116. package/dist/services/compact/index.js.map +1 -1
  117. package/dist/services/compact/summary-generator.d.ts +6 -2
  118. package/dist/services/compact/summary-generator.d.ts.map +1 -1
  119. package/dist/services/compact/summary-generator.js +73 -31
  120. package/dist/services/compact/summary-generator.js.map +1 -1
  121. package/dist/services/config-dir.d.ts +11 -1
  122. package/dist/services/config-dir.d.ts.map +1 -1
  123. package/dist/services/config-dir.js +19 -2
  124. package/dist/services/config-dir.js.map +1 -1
  125. package/dist/services/config.d.ts +4 -2
  126. package/dist/services/config.d.ts.map +1 -1
  127. package/dist/services/config.js +40 -0
  128. package/dist/services/config.js.map +1 -1
  129. package/dist/services/doctor.d.ts +2 -0
  130. package/dist/services/doctor.d.ts.map +1 -1
  131. package/dist/services/doctor.js +8 -1
  132. package/dist/services/doctor.js.map +1 -1
  133. package/dist/services/global-config.d.ts +10 -0
  134. package/dist/services/global-config.d.ts.map +1 -1
  135. package/dist/services/global-config.js.map +1 -1
  136. package/dist/services/llm.d.ts +21 -4
  137. package/dist/services/llm.d.ts.map +1 -1
  138. package/dist/services/llm.js +66 -8
  139. package/dist/services/llm.js.map +1 -1
  140. package/dist/services/model-context.d.ts +36 -0
  141. package/dist/services/model-context.d.ts.map +1 -1
  142. package/dist/services/model-context.js +245 -32
  143. package/dist/services/model-context.js.map +1 -1
  144. package/dist/services/redaction.js +1 -1
  145. package/dist/services/redaction.js.map +1 -1
  146. package/dist/services/session-storage.d.ts +42 -1
  147. package/dist/services/session-storage.d.ts.map +1 -1
  148. package/dist/services/session-storage.js +175 -54
  149. package/dist/services/session-storage.js.map +1 -1
  150. package/dist/services/storage-maintenance.d.ts.map +1 -1
  151. package/dist/services/storage-maintenance.js +3 -2
  152. package/dist/services/storage-maintenance.js.map +1 -1
  153. package/dist/services/usage-state.d.ts +55 -5
  154. package/dist/services/usage-state.d.ts.map +1 -1
  155. package/dist/services/usage-state.js +185 -59
  156. package/dist/services/usage-state.js.map +1 -1
  157. package/dist/services/verification-profile.d.ts.map +1 -1
  158. package/dist/services/verification-profile.js +3 -2
  159. package/dist/services/verification-profile.js.map +1 -1
  160. package/dist/services/workspace-diff.d.ts.map +1 -1
  161. package/dist/services/workspace-diff.js +34 -3
  162. package/dist/services/workspace-diff.js.map +1 -1
  163. package/dist/services/yaml-config.js +1 -1
  164. package/dist/skills/runtime.d.ts +9 -5
  165. package/dist/skills/runtime.d.ts.map +1 -1
  166. package/dist/skills/runtime.js +157 -12
  167. package/dist/skills/runtime.js.map +1 -1
  168. package/dist/terminal-ui/editor.d.ts.map +1 -1
  169. package/dist/terminal-ui/editor.js +14 -3
  170. package/dist/terminal-ui/editor.js.map +1 -1
  171. package/dist/terminal-ui/launch.d.ts +21 -0
  172. package/dist/terminal-ui/launch.d.ts.map +1 -1
  173. package/dist/terminal-ui/launch.js +203 -45
  174. package/dist/terminal-ui/launch.js.map +1 -1
  175. package/dist/terminal-ui/output-queue.d.ts +43 -0
  176. package/dist/terminal-ui/output-queue.d.ts.map +1 -0
  177. package/dist/terminal-ui/output-queue.js +139 -0
  178. package/dist/terminal-ui/output-queue.js.map +1 -0
  179. package/dist/terminal-ui/raw-editor.d.ts +42 -0
  180. package/dist/terminal-ui/raw-editor.d.ts.map +1 -1
  181. package/dist/terminal-ui/raw-editor.js +337 -41
  182. package/dist/terminal-ui/raw-editor.js.map +1 -1
  183. package/dist/tools/bash_security.d.ts.map +1 -1
  184. package/dist/tools/bash_security.js +14 -5
  185. package/dist/tools/bash_security.js.map +1 -1
  186. package/dist/tools/index.d.ts.map +1 -1
  187. package/dist/tools/index.js +176 -73
  188. package/dist/tools/index.js.map +1 -1
  189. package/dist/tools/plan.d.ts.map +1 -1
  190. package/dist/tools/plan.js +7 -0
  191. package/dist/tools/plan.js.map +1 -1
  192. package/dist/tools/web.d.ts +10 -0
  193. package/dist/tools/web.d.ts.map +1 -1
  194. package/dist/tools/web.js +81 -1
  195. package/dist/tools/web.js.map +1 -1
  196. package/dist/tui-core/input-parser.d.ts +9 -2
  197. package/dist/tui-core/input-parser.d.ts.map +1 -1
  198. package/dist/tui-core/input-parser.js +57 -3
  199. package/dist/tui-core/input-parser.js.map +1 -1
  200. package/dist/tui-core/style.d.ts +16 -0
  201. package/dist/tui-core/style.d.ts.map +1 -1
  202. package/dist/tui-core/style.js +22 -1
  203. package/dist/tui-core/style.js.map +1 -1
  204. package/dist/tui-ui/inline-surface.d.ts +69 -12
  205. package/dist/tui-ui/inline-surface.d.ts.map +1 -1
  206. package/dist/tui-ui/inline-surface.js +366 -94
  207. package/dist/tui-ui/inline-surface.js.map +1 -1
  208. package/dist/tui-ui/input-ownership.d.ts +46 -0
  209. package/dist/tui-ui/input-ownership.d.ts.map +1 -0
  210. package/dist/tui-ui/input-ownership.js +74 -0
  211. package/dist/tui-ui/input-ownership.js.map +1 -0
  212. package/dist/tui-ui/launch.d.ts +2 -0
  213. package/dist/tui-ui/launch.d.ts.map +1 -1
  214. package/dist/tui-ui/launch.js +289 -43
  215. package/dist/tui-ui/launch.js.map +1 -1
  216. package/dist/tui-ui/layout.d.ts +52 -2
  217. package/dist/tui-ui/layout.d.ts.map +1 -1
  218. package/dist/tui-ui/layout.js +230 -76
  219. package/dist/tui-ui/layout.js.map +1 -1
  220. package/dist/tui-ui/runner.d.ts +101 -8
  221. package/dist/tui-ui/runner.d.ts.map +1 -1
  222. package/dist/tui-ui/runner.js +843 -51
  223. package/dist/tui-ui/runner.js.map +1 -1
  224. package/dist/tui-ui/state.d.ts +70 -4
  225. package/dist/tui-ui/state.d.ts.map +1 -1
  226. package/dist/tui-ui/state.js +251 -20
  227. package/dist/tui-ui/state.js.map +1 -1
  228. package/dist/tui-ui/theme-profile.d.ts +25 -0
  229. package/dist/tui-ui/theme-profile.d.ts.map +1 -0
  230. package/dist/tui-ui/theme-profile.js +130 -0
  231. package/dist/tui-ui/theme-profile.js.map +1 -0
  232. package/dist/tui-ui/theme.d.ts +13 -0
  233. package/dist/tui-ui/theme.d.ts.map +1 -0
  234. package/dist/tui-ui/theme.js +20 -0
  235. package/dist/tui-ui/theme.js.map +1 -0
  236. package/dist/tui-ui/transcript-cache.d.ts +5 -3
  237. package/dist/tui-ui/transcript-cache.d.ts.map +1 -1
  238. package/dist/tui-ui/transcript-cache.js +16 -9
  239. package/dist/tui-ui/transcript-cache.js.map +1 -1
  240. package/dist/tui-ui/transcript-inspector-layout.d.ts +9 -0
  241. package/dist/tui-ui/transcript-inspector-layout.d.ts.map +1 -0
  242. package/dist/tui-ui/transcript-inspector-layout.js +97 -0
  243. package/dist/tui-ui/transcript-inspector-layout.js.map +1 -0
  244. package/dist/tui-ui/transcript-inspector-surface.d.ts +18 -0
  245. package/dist/tui-ui/transcript-inspector-surface.d.ts.map +1 -0
  246. package/dist/tui-ui/transcript-inspector-surface.js +88 -0
  247. package/dist/tui-ui/transcript-inspector-surface.js.map +1 -0
  248. package/dist/tui-ui/transcript-inspector.d.ts +35 -0
  249. package/dist/tui-ui/transcript-inspector.d.ts.map +1 -0
  250. package/dist/tui-ui/transcript-inspector.js +128 -0
  251. package/dist/tui-ui/transcript-inspector.js.map +1 -0
  252. package/dist/tui-ui/transcript-layout.d.ts +22 -0
  253. package/dist/tui-ui/transcript-layout.d.ts.map +1 -0
  254. package/dist/tui-ui/transcript-layout.js +439 -0
  255. package/dist/tui-ui/transcript-layout.js.map +1 -0
  256. package/dist/ui/status-bar.d.ts +1 -1
  257. package/dist/ui/status-bar.d.ts.map +1 -1
  258. package/dist/ui/status-bar.js +2 -15
  259. package/dist/ui/status-bar.js.map +1 -1
  260. package/dist/ui-v2/components/shell.d.ts.map +1 -1
  261. package/dist/ui-v2/components/shell.js +0 -8
  262. package/dist/ui-v2/components/shell.js.map +1 -1
  263. package/package.json +1 -1
@@ -3,42 +3,157 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.measureTuiLiveFrameHeight = measureTuiLiveFrameHeight;
6
7
  exports.renderTuiUiFrame = renderTuiUiFrame;
8
+ exports.renderTuiLiveFrame = renderTuiLiveFrame;
7
9
  const string_width_1 = __importDefault(require("string-width"));
8
10
  const frame_1 = require("../tui-core/frame");
9
11
  const ui_view_model_1 = require("../runtime/ui-view-model");
10
12
  const format_1 = require("../services/format");
11
13
  const state_1 = require("./state");
14
+ const transcript_layout_1 = require("./transcript-layout");
12
15
  const MIN_WIDTH = 24;
13
16
  const MIN_HEIGHT = 8;
14
- const PROMPT_TOP_ROWS = 3;
17
+ const PROMPT_BORDER_ROWS = 2;
18
+ const MAX_TIMELINE_ROWS = 6;
19
+ const STATUS_ROWS = 1;
20
+ /**
21
+ * Compute a dynamic layout budget for the given terminal height and prompt.
22
+ *
23
+ * The prompt box grows with the number of prompt lines (multi-line prompts get
24
+ * a taller box); the timeline strip appears only when there is activity to show
25
+ * (tools running / subtasks). Remaining rows go to the transcript, which is the
26
+ * scrollable history region. For a single-line prompt with no activity this
27
+ * collapses to the original fixed layout (prompt = 3 rows at the bottom).
28
+ */
29
+ function computeBudget(height, promptValue, timelineCount) {
30
+ const totalPromptLines = Math.max(1, promptValue.split('\n').length);
31
+ const maxPromptLines = Math.max(1, height - PROMPT_BORDER_ROWS - STATUS_ROWS);
32
+ const promptLineCount = Math.min(totalPromptLines, maxPromptLines);
33
+ const promptRows = PROMPT_BORDER_ROWS + promptLineCount;
34
+ const maxTimelineRows = Math.max(0, height - promptRows - STATUS_ROWS);
35
+ const timelineRows = timelineCount > 0
36
+ ? Math.min(MAX_TIMELINE_ROWS, timelineCount, maxTimelineRows)
37
+ : 0;
38
+ const transcriptRows = Math.max(0, height - promptRows - STATUS_ROWS - timelineRows);
39
+ return { promptLineCount, promptRows, timelineRows, transcriptRows };
40
+ }
41
+ function countTimelineEntries(state) {
42
+ return activeSubtaskTimelineEntries(state).length + activeToolStarts(state).length;
43
+ }
44
+ function activeToolStarts(state) {
45
+ const finishedCallIds = new Set(state.runtimeToolEvents
46
+ .filter(event => event.type === 'finished')
47
+ .map(event => event.callId));
48
+ return state.runtimeToolEvents.filter(event => event.type === 'started' && !finishedCallIds.has(event.callId));
49
+ }
50
+ function activeSubtaskTimelineEntries(state) {
51
+ return state.subtaskTimeline.filter(entry => entry.state === 'queued' || entry.state === 'running');
52
+ }
53
+ /**
54
+ * Measure the cursor-owned live block. Idle TUI state stays compact like an
55
+ * ordinary shell prompt; streaming transcript and overlays grow the block only
56
+ * as needed, up to the surface's viewport-derived limit.
57
+ */
58
+ function measureTuiLiveFrameHeight(state, width, maxHeight, options = {}) {
59
+ const safeWidth = Math.max(MIN_WIDTH, Math.floor(width));
60
+ const transcriptWidth = resolveTranscriptWidth(safeWidth, options.transcriptWidth);
61
+ const safeMaxHeight = Math.max(MIN_HEIGHT, Math.floor(maxHeight));
62
+ if (state.overlay)
63
+ return safeMaxHeight;
64
+ const promptLines = Math.min(Math.max(1, state.prompt.value.split('\n').length), Math.max(1, safeMaxHeight - PROMPT_BORDER_ROWS - STATUS_ROWS));
65
+ const promptRows = PROMPT_BORDER_ROWS + promptLines;
66
+ const timelineRows = Math.min(MAX_TIMELINE_ROWS, countTimelineEntries(state));
67
+ const fixedRows = promptRows + STATUS_ROWS + timelineRows;
68
+ const transcriptRows = (0, state_1.liveTuiTranscriptRecords)(state)
69
+ .flatMap(entry => layoutRecord(entry, transcriptWidth, options))
70
+ .length;
71
+ return Math.min(safeMaxHeight, Math.max(MIN_HEIGHT, fixedRows + transcriptRows));
72
+ }
15
73
  function renderTuiUiFrame(state, options) {
16
74
  const width = Math.max(MIN_WIDTH, Math.floor(options.width));
17
75
  const height = Math.max(MIN_HEIGHT, Math.floor(options.height));
18
76
  const frame = (0, frame_1.createTuiFrame)(width, height);
19
- const promptTop = height - PROMPT_TOP_ROWS;
77
+ const budget = computeBudget(height, state.prompt.value, countTimelineEntries(state));
78
+ // Honour an explicit cap on the transcript region (used by a test to pin a
79
+ // small tail); otherwise the whole transcript region is used.
80
+ const transcriptRows = Math.max(0, Math.min(options.maxTranscriptRows ?? budget.transcriptRows, budget.transcriptRows));
81
+ const promptTop = height - budget.promptRows;
82
+ const statusRow = promptTop - 1;
83
+ const timelineTop = statusRow - budget.timelineRows;
84
+ renderTranscript(frame, state, 0, transcriptRows, options);
85
+ if (budget.timelineRows > 0)
86
+ renderTimeline(frame, state, timelineTop, budget.timelineRows);
87
+ renderStatus(frame, state, statusRow);
88
+ renderPrompt(frame, state, promptTop, width, budget.promptLineCount);
89
+ // Overlay covers the region above status (transcript + timeline).
90
+ renderOverlay(frame, state, statusRow);
91
+ return frame;
92
+ }
93
+ /**
94
+ * Render the live-region frame for InlineTerminalSurface.
95
+ *
96
+ * This frame contains ONLY the ephemeral content that sits at the bottom of
97
+ * the terminal: live (uncommitted) transcript entries, timeline (if any),
98
+ * overlay (if active), status bar, and prompt. Committed transcript entries are
99
+ * written to scrollback by surface.commit() and are NOT included in this frame.
100
+ *
101
+ * The frame height should be sized to fill the terminal viewport's bottom band
102
+ * (see InlineTerminalSurface.getLiveBandRows); the dynamic budget allocates the
103
+ * band rows between transcript / timeline / status / prompt.
104
+ */
105
+ function renderTuiLiveFrame(state, options) {
106
+ const width = Math.max(MIN_WIDTH, Math.floor(options.width));
107
+ const height = Math.max(MIN_HEIGHT, Math.floor(options.height));
108
+ const frame = (0, frame_1.createTuiFrame)(width, height);
109
+ const budget = computeBudget(height, state.prompt.value, countTimelineEntries(state));
110
+ const promptTop = height - budget.promptRows;
20
111
  const statusRow = promptTop - 1;
21
- const transcriptRows = Math.max(0, Math.min(options.maxTranscriptRows ?? statusRow, statusRow));
22
- renderTranscript(frame, state, transcriptRows);
112
+ const timelineTop = statusRow - budget.timelineRows;
113
+ renderLiveTranscript(frame, state, 0, budget.transcriptRows, options);
114
+ if (budget.timelineRows > 0)
115
+ renderTimeline(frame, state, timelineTop, budget.timelineRows);
23
116
  renderStatus(frame, state, statusRow);
24
- renderPrompt(frame, state, promptTop);
25
- renderOverlay(frame, state, transcriptRows);
26
- const cursorColumn = promptCursorColumn(state.prompt.value, state.prompt.cursor, width);
27
- (0, frame_1.setFrameCursor)(frame, promptTop + 1, cursorColumn, true);
117
+ renderPrompt(frame, state, promptTop, width, budget.promptLineCount);
118
+ renderOverlay(frame, state, statusRow);
28
119
  return frame;
29
120
  }
30
- function renderTranscript(frame, state, maxRows) {
31
- const entries = [
32
- ...(0, state_1.staticTuiTranscriptEntries)(state),
33
- ...(0, state_1.liveTuiTranscriptEntries)(state),
121
+ /** Render (live) transcript entries into [startRow, startRow + maxRows). */
122
+ function renderLiveTranscript(frame, state, startRow, maxRows, options) {
123
+ const width = resolveTranscriptWidth(frame.width, options.transcriptWidth);
124
+ const rows = (0, state_1.liveTuiTranscriptRecords)(state)
125
+ .flatMap(entry => layoutRecord(entry, width, options));
126
+ const visible = rows.slice(Math.max(0, rows.length - maxRows));
127
+ visible.forEach((row, index) => {
128
+ (0, transcript_layout_1.writeStyledRowToFrame)(frame, startRow + index, row);
129
+ });
130
+ }
131
+ function renderTranscript(frame, state, startRow, maxRows, options) {
132
+ const width = resolveTranscriptWidth(frame.width, options.transcriptWidth);
133
+ const records = [
134
+ ...(0, state_1.staticTuiTranscriptRecords)(state),
135
+ ...(0, state_1.liveTuiTranscriptRecords)(state),
34
136
  ];
35
- const lines = entries.flatMap(entry => formatTranscriptEntry(entry, frame.width));
36
- const maxOffset = Math.max(0, lines.length - maxRows);
37
- const scrollOffset = Math.min(Math.max(0, state.transcriptScrollOffset), maxOffset);
38
- const start = Math.max(0, lines.length - maxRows - scrollOffset);
39
- const visible = lines.slice(start, start + maxRows);
137
+ const rows = records.flatMap(entry => layoutRecord(entry, width, options));
138
+ const visible = rows.slice(Math.max(0, rows.length - maxRows));
139
+ visible.forEach((row, index) => {
140
+ (0, transcript_layout_1.writeStyledRowToFrame)(frame, startRow + index, row);
141
+ });
142
+ }
143
+ /** Render the activity timeline (subtasks + running tools) just above status. */
144
+ function renderTimeline(frame, state, top, maxRows) {
145
+ const items = [];
146
+ for (const t of activeSubtaskTimelineEntries(state)) {
147
+ const mark = t.state === 'running' ? '▶' : '◦';
148
+ const label = t.summary ?? t.objective ?? t.role;
149
+ items.push(`${mark} ${t.taskId.slice(0, 8)} ${t.state} ${truncateCells(label, 24)}`);
150
+ }
151
+ for (const e of activeToolStarts(state)) {
152
+ items.push(`⚙ #${e.sequence} ${e.name} running`);
153
+ }
154
+ const visible = items.slice(-maxRows);
40
155
  visible.forEach((line, index) => {
41
- (0, frame_1.writeFrameText)(frame, index, 0, line);
156
+ (0, frame_1.writeFrameText)(frame, top + index, 0, truncateCells(line, frame.width));
42
157
  });
43
158
  }
44
159
  function renderStatus(frame, state, row) {
@@ -46,19 +161,81 @@ function renderStatus(frame, state, row) {
46
161
  return;
47
162
  const left = state.processing ? 'working' : 'ready';
48
163
  const right = state.statusMessage ? state.statusMessage : '';
164
+ const activity = [];
165
+ if (state.statusState.activeTools > 0)
166
+ activity.push(`tools:${state.statusState.activeTools}`);
167
+ if (state.statusState.activeSubtasks > 0)
168
+ activity.push(`sub:${state.statusState.activeSubtasks}`);
169
+ const activityStr = activity.length ? `[${activity.join(' ')}] ` : '';
170
+ const rightFull = right ? `${right} ${activityStr}`.trimEnd() : activityStr.trimEnd();
49
171
  const available = Math.max(0, frame.width - (0, string_width_1.default)(left) - 1);
50
- const status = right
51
- ? `${left}${' '.repeat(Math.max(1, available - (0, string_width_1.default)(right)))}${truncateCells(right, available)}`
172
+ const status = rightFull
173
+ ? `${left}${' '.repeat(Math.max(1, available - (0, string_width_1.default)(rightFull)))}${truncateCells(rightFull, available)}`
52
174
  : left;
53
175
  (0, frame_1.writeFrameText)(frame, row, 0, truncateCells(status, frame.width));
54
176
  }
55
- function renderPrompt(frame, state, top) {
56
- const width = frame.width;
57
- (0, frame_1.writeFrameText)(frame, top, 0, `┌${'─'.repeat(width - 2)}┐`);
58
- (0, frame_1.writeFrameText)(frame, top + 1, 0, '│ ');
59
- (0, frame_1.writeFrameText)(frame, top + 1, 2, truncateCells(`› ${state.prompt.value}`, width - 4));
60
- (0, frame_1.writeFrameText)(frame, top + 1, width - 1, '│');
61
- (0, frame_1.writeFrameText)(frame, top + 2, 0, `└${'─'.repeat(width - 2)}┘`);
177
+ /**
178
+ * Render a bounded prompt viewport. The underlying prompt value is never
179
+ * truncated; only the lines around the cursor are painted when the terminal is
180
+ * too short to show the full multi-line value.
181
+ */
182
+ function renderPrompt(frame, state, top, width, visibleLineCount) {
183
+ const value = state.prompt.value;
184
+ const lines = value.split('\n');
185
+ const innerWidth = Math.max(0, width - 2);
186
+ const { line: cursorLine, col: cursorCol } = lineColOfCursor(value, state.prompt.cursor);
187
+ const viewportStart = Math.max(0, Math.min(cursorLine, lines.length - visibleLineCount));
188
+ const viewportLines = lines.slice(viewportStart, viewportStart + visibleLineCount);
189
+ (0, frame_1.writeFrameText)(frame, top, 0, `┌${'─'.repeat(innerWidth)}┐`);
190
+ for (let i = 0; i < viewportLines.length; i++) {
191
+ const absoluteLine = viewportStart + i;
192
+ const prefix = absoluteLine === 0 ? '› ' : ' ';
193
+ const fixed = ` ${prefix}`;
194
+ const bodyWidth = Math.max(0, innerWidth - (0, string_width_1.default)(fixed) - 1);
195
+ const viewport = absoluteLine === cursorLine
196
+ ? promptLineViewport(viewportLines[i], cursorCol, bodyWidth)
197
+ : { text: truncateCells(viewportLines[i], bodyWidth), cursorCells: 0 };
198
+ const content = `${fixed}${viewport.text}`;
199
+ const padding = ' '.repeat(Math.max(0, innerWidth - (0, string_width_1.default)(content)));
200
+ (0, frame_1.writeFrameText)(frame, top + 1 + i, 0, `│${content}${padding}│`);
201
+ }
202
+ (0, frame_1.writeFrameText)(frame, top + 1 + viewportLines.length, 0, `└${'─'.repeat(innerWidth)}┘`);
203
+ const cursorPrefix = cursorLine === 0 ? '› ' : ' ';
204
+ const cursorFixed = ` ${cursorPrefix}`;
205
+ const cursorBodyWidth = Math.max(0, innerWidth - (0, string_width_1.default)(cursorFixed) - 1);
206
+ const cursorViewport = promptLineViewport(lines[cursorLine], cursorCol, cursorBodyWidth);
207
+ const cursorColumn = 1 + (0, string_width_1.default)(cursorFixed) + cursorViewport.cursorCells;
208
+ (0, frame_1.setFrameCursor)(frame, top + 1 + cursorLine - viewportStart, cursorColumn, true);
209
+ }
210
+ function promptLineViewport(value, cursor, width) {
211
+ if (width <= 0)
212
+ return { text: '', cursorCells: 0 };
213
+ const safeCursor = Math.max(0, Math.min(cursor, value.length));
214
+ const before = Array.from(graphemeIterate(value.slice(0, safeCursor)));
215
+ const after = value.slice(safeCursor);
216
+ let visibleBefore = before.join('');
217
+ let marker = '';
218
+ if ((0, string_width_1.default)(visibleBefore) > width) {
219
+ marker = '…';
220
+ const available = Math.max(0, width - (0, string_width_1.default)(marker));
221
+ let used = 0;
222
+ const tail = [];
223
+ for (let index = before.length - 1; index >= 0; index -= 1) {
224
+ const grapheme = before[index];
225
+ const graphemeWidth = Math.max(0, (0, string_width_1.default)(grapheme));
226
+ if (used + graphemeWidth > available)
227
+ break;
228
+ tail.unshift(grapheme);
229
+ used += graphemeWidth;
230
+ }
231
+ visibleBefore = tail.join('');
232
+ }
233
+ const left = `${marker}${visibleBefore}`;
234
+ const visibleAfter = truncateCells(after, Math.max(0, width - (0, string_width_1.default)(left)));
235
+ return {
236
+ text: `${left}${visibleAfter}`,
237
+ cursorCells: (0, string_width_1.default)(left),
238
+ };
62
239
  }
63
240
  function renderOverlay(frame, state, maxRows) {
64
241
  if (!state.overlay || maxRows <= 0)
@@ -175,7 +352,7 @@ function renderOverlay(frame, state, maxRows) {
175
352
  'Shortcuts',
176
353
  '/ commands @ files ? shortcuts',
177
354
  'Enter submit/select Tab complete Esc cancel',
178
- 'PageUp/PageDown transcript history Ctrl+C interrupt / twice exits',
355
+ 'scroll terminal (↑/↓) to review history Ctrl+C interrupt / twice exits',
179
356
  ].map(row => truncateCells(row, frame.width));
180
357
  rows.slice(0, maxRows).forEach((line, index) => {
181
358
  (0, frame_1.writeFrameText)(frame, index, 0, line);
@@ -192,55 +369,17 @@ function pickerStartIndex(selectedIndex, visibleCount, total) {
192
369
  const desired = selectedIndex - halfWindow;
193
370
  return Math.min(total - visibleCount, Math.max(0, desired));
194
371
  }
195
- function formatTranscriptEntry(entry, width) {
196
- const prefix = transcriptPrefix(entry);
197
- const rawLines = entry.content.split('\n');
198
- const lines = rawLines.length > 0 ? rawLines : [''];
199
- return lines.flatMap((line, index) => {
200
- const text = `${index === 0 ? prefix : ' '}${line}`;
201
- return wrapCells(text, width);
202
- });
203
- }
204
- function transcriptPrefix(entry) {
205
- switch (entry.role) {
206
- case 'user':
207
- return '› ';
208
- case 'tool':
209
- return '• ';
210
- case 'error':
211
- return '! ';
212
- case 'command':
213
- return '/ ';
214
- case 'status':
215
- return '= ';
216
- case 'assistant':
217
- case 'system':
218
- default:
219
- return '';
220
- }
221
- }
222
- function promptCursorColumn(value, cursor, width) {
223
- const prompt = (0, ui_view_model_1.createPromptState)({ value, cursor });
224
- return Math.min(width - 2, 4 + (0, string_width_1.default)(prompt.textBeforeCursor));
372
+ function layoutRecord(entry, width, options) {
373
+ return options.layoutTranscriptRecord?.(entry, width)
374
+ ?? (0, transcript_layout_1.layoutTranscriptEntry)(entry, {
375
+ width,
376
+ theme: options.theme,
377
+ toolOutputMode: options.toolOutputMode,
378
+ });
225
379
  }
226
- function wrapCells(value, width) {
227
- if (width <= 0)
228
- return [''];
229
- const rows = [];
230
- let current = '';
231
- let currentWidth = 0;
232
- for (const char of graphemeIterate(value)) {
233
- const charWidth = Math.max(0, (0, string_width_1.default)(char));
234
- if (currentWidth > 0 && currentWidth + charWidth > width) {
235
- rows.push(current);
236
- current = '';
237
- currentWidth = 0;
238
- }
239
- current += char;
240
- currentWidth += charWidth;
241
- }
242
- rows.push(current);
243
- return rows;
380
+ function resolveTranscriptWidth(frameWidth, requested) {
381
+ const normalized = requested === undefined ? frameWidth : Math.floor(requested);
382
+ return Math.max(1, Math.min(frameWidth, normalized));
244
383
  }
245
384
  function truncateCells(value, width) {
246
385
  if (width <= 0)
@@ -256,6 +395,21 @@ function truncateCells(value, width) {
256
395
  }
257
396
  return output;
258
397
  }
398
+ /** Map an absolute character cursor to {line, col} within a multi-line value. */
399
+ function lineColOfCursor(value, cursor) {
400
+ const lines = value.split('\n');
401
+ const safeCursor = Math.max(0, Math.min(cursor, value.length));
402
+ let offset = 0;
403
+ for (let i = 0; i < lines.length; i++) {
404
+ const lineLen = lines[i].length;
405
+ if (safeCursor <= offset + lineLen) {
406
+ return { line: i, col: safeCursor - offset };
407
+ }
408
+ offset += lineLen + 1; // +1 for the newline separator
409
+ }
410
+ const last = lines.length - 1;
411
+ return { line: last, col: lines[last].length };
412
+ }
259
413
  /** Iterate by grapheme cluster (not code point) to preserve ZWJ emoji etc. */
260
414
  function* graphemeIterate(text) {
261
415
  const Segmenter = Intl.Segmenter;
@@ -1 +1 @@
1
- {"version":3,"file":"layout.js","sourceRoot":"","sources":["../../src/tui-ui/layout.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"layout.js","sourceRoot":"","sources":["../../src/tui-ui/layout.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,12 @@
1
1
  import { type TuiFrame } from '../tui-core/frame';
2
+ import type { TuiTheme } from '../tui-core/style';
2
3
  import { type TuiInputEvent } from '../tui-core/input-parser';
3
- import { type TuiTerminalRenderResult } from '../tui-core/terminal-writer';
4
4
  import type { UiEventSink } from '../runtime/ui-events';
5
- import { type TuiRenderSchedulerDeps } from './render-scheduler';
5
+ import type { ToolDetailRepository } from '../runtime/tool-detail-repository';
6
+ import { InlineTerminalSurface } from './inline-surface';
7
+ import { type TuiRenderScheduler, type TuiRenderSchedulerDeps } from './render-scheduler';
6
8
  import { type TuiUiAction, type TuiUiState } from './state';
9
+ import { TranscriptInspectorSurface } from './transcript-inspector-surface';
7
10
  export interface TuiRunnerOptions {
8
11
  output: Pick<NodeJS.WriteStream, 'write'>;
9
12
  width: number;
@@ -14,43 +17,133 @@ export interface TuiRunnerOptions {
14
17
  onPermissionDecision?: (requestId: string, approved: boolean) => void | Promise<void>;
15
18
  /** Inject scheduler deps for testing (fake timers). */
16
19
  schedulerDeps?: Partial<TuiRenderSchedulerDeps>;
17
- /** Disable scheduler for backward-compat synchronous tests (default: true). */
18
- noScheduler?: boolean;
20
+ /** Inline surface for committed scrollback + live region rendering. */
21
+ surface?: InlineTerminalSurface;
22
+ /** Fatal surface failures must restore terminal ownership and stop the renderer. */
23
+ onSurfaceError?: (error: unknown) => void;
24
+ /** Immutable transcript theme for this runner instance. */
25
+ theme?: TuiTheme;
26
+ themeId?: string;
27
+ detailRepository?: ToolDetailRepository;
28
+ inspectorSurface?: TranscriptInspectorSurface;
29
+ onOpenExternalEditor?: (filePath: string) => void | Promise<void>;
19
30
  }
20
31
  export interface TuiRunnerCounters {
21
32
  layoutCount: number;
22
33
  paintCount: number;
23
34
  changedRows: number;
35
+ commitCount: number;
24
36
  }
25
37
  export declare class TuiRunner {
26
38
  private readonly options;
27
39
  readonly events: UiEventSink;
28
40
  private readonly parser;
29
- private readonly writer;
41
+ private readonly inputOwnership;
30
42
  private readonly scheduler;
43
+ private readonly surface;
44
+ private readonly transcriptCache;
45
+ private readonly theme;
46
+ private readonly themeId;
47
+ private readonly inspectorController;
48
+ private readonly inspectorSurface;
49
+ private history;
50
+ private surfaceFailed;
51
+ private inspectorReady;
52
+ private inspectorSearchActive;
53
+ private modalTransition;
54
+ private commitSequence;
55
+ private commitInFlight;
56
+ private commitMismatchRetries;
31
57
  private state;
32
58
  private width;
33
59
  private height;
34
60
  private lastFrame;
35
- private lastRenderResult;
61
+ private surfaceResizePending;
62
+ private resizeEpoch;
63
+ private surfaceResizeGeneration;
36
64
  readonly counters: TuiRunnerCounters;
37
65
  constructor(options: TuiRunnerOptions);
38
66
  getState(): TuiUiState;
39
67
  getLastFrame(): TuiFrame | null;
40
- getLastRenderResult(): TuiTerminalRenderResult | null;
41
68
  getVisibleRows(): string[];
69
+ /** Get the scheduler for external lifecycle management (flush, stop). */
70
+ getScheduler(): TuiRenderScheduler;
71
+ /** Stop stale-width paints as soon as the terminal reports SIGWINCH. */
72
+ beginResize(width?: number): void;
42
73
  resize(width: number, height: number): void;
43
74
  dispatch(action: TuiUiAction): void;
44
75
  feedInput(chunk: Buffer | string): TuiInputEvent[];
45
- render(): TuiTerminalRenderResult;
76
+ /**
77
+ * Render the full frame (legacy path for tests without surface).
78
+ * Uses renderTuiUiFrame which includes both static and live transcript.
79
+ */
80
+ renderFullFrame(): TuiFrame;
81
+ /**
82
+ * Render the live region via InlineTerminalSurface.
83
+ * When surface is available, only ephemeral content (live transcript, overlay,
84
+ * status, prompt) is painted into the live region.
85
+ * When no surface (test mode), renders the full frame including committed
86
+ * transcript so tests can inspect complete content via getLastFrame().
87
+ */
88
+ private renderLive;
89
+ /** Build a compact live-region frame that grows only for active content. */
90
+ private buildLiveFrame;
91
+ /**
92
+ * Try to commit any newly-finalized transcript entries to scrollback.
93
+ * Called after each dispatch. Only commits entries that are committable
94
+ * but not yet queued.
95
+ */
96
+ private tryCommit;
97
+ /** Layout a transcript record once per revision/width/theme combination. */
98
+ private layoutTranscriptRecord;
99
+ private get transcriptWidth();
100
+ private transcriptLayoutOptions;
101
+ private handleSurfaceError;
46
102
  private applyInputEvent;
47
103
  private applyKey;
104
+ /** Navigate to previous history entry. */
105
+ private historyBack;
106
+ /** Navigate to next history entry (or back to draft). */
107
+ private historyForward;
108
+ /**
109
+ * Up in a multi-line prompt moves the cursor to the previous visual line;
110
+ * only at the first line does it fall back to command history (matching
111
+ * shell/editor behaviour). Single-line prompts behave exactly as before.
112
+ */
113
+ private moveCursorUpOrHistory;
114
+ /**
115
+ * Down in a multi-line prompt moves the cursor to the next visual line;
116
+ * only at the last line does it fall back to command history.
117
+ */
118
+ private moveCursorDownOrHistory;
119
+ /** Home: move to the start of the current visual line (not whole buffer). */
120
+ private moveCursorLineHome;
121
+ /** End: move to the end of the current visual line (not whole buffer). */
122
+ private moveCursorLineEnd;
48
123
  private submitPrompt;
49
124
  private reportSubmitFailure;
125
+ private handleLocalCommand;
126
+ private forceOwnedRedraw;
50
127
  private updatePrompt;
51
128
  private syncPromptOverlay;
52
129
  private completeCommand;
53
130
  private completeFile;
54
131
  private answerPermission;
132
+ /** Restore any temporary Inspector terminal ownership before shutdown. */
133
+ closeModalSurface(): Promise<void>;
134
+ /** Wait until the current Inspector ownership transition is complete. */
135
+ waitForModalSurface(): Promise<void>;
136
+ /** Flush every finalized transcript batch, including batches queued by acknowledgements. */
137
+ flushTranscriptCommits(): Promise<void>;
138
+ private openToolInspector;
139
+ private closeToolInspector;
140
+ private applyInspectorInput;
141
+ private loadSelectedInspectorDetail;
142
+ private moveInspectorSelection;
143
+ private moveInspectorSelectionTo;
144
+ private exportInspectorResults;
145
+ private openSelectedInspectorDetailInEditor;
146
+ private paintInspector;
147
+ private buildInspectorFrame;
55
148
  }
56
149
  //# sourceMappingURL=runner.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../src/tui-ui/runner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,KAAK,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AACnE,OAAO,EAIL,KAAK,aAAa,EAEnB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAqB,KAAK,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AAC9F,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAIxD,OAAO,EAGL,KAAK,sBAAsB,EAC5B,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAIL,KAAK,WAAW,EAChB,KAAK,UAAU,EAChB,MAAM,SAAS,CAAC;AAYjB,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IAC1C,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACnD,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,oBAAoB,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACtF,uDAAuD;IACvD,aAAa,CAAC,EAAE,OAAO,CAAC,sBAAsB,CAAC,CAAC;IAChD,+EAA+E;IAC/E,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,iBAAiB;IAChC,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,qBAAa,SAAS;IAYR,OAAO,CAAC,QAAQ,CAAC,OAAO;IAXpC,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAC7B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAwB;IAC/C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAoB;IAC3C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA4B;IACtD,OAAO,CAAC,KAAK,CAAiC;IAC9C,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,SAAS,CAAyB;IAC1C,OAAO,CAAC,gBAAgB,CAAwC;IAChE,QAAQ,CAAC,QAAQ,EAAE,iBAAiB,CAAqD;gBAE5D,OAAO,EAAE,gBAAgB;IAgBtD,QAAQ,IAAI,UAAU;IAItB,YAAY,IAAI,QAAQ,GAAG,IAAI;IAI/B,mBAAmB,IAAI,uBAAuB,GAAG,IAAI;IAIrD,cAAc,IAAI,MAAM,EAAE;IAI1B,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAY3C,QAAQ,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI;IAUnC,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,aAAa,EAAE;IAelD,MAAM,IAAI,uBAAuB;IAcjC,OAAO,CAAC,eAAe;IAiCvB,OAAO,CAAC,QAAQ;IAoLhB,OAAO,CAAC,YAAY;IAcpB,OAAO,CAAC,mBAAmB;IAI3B,OAAO,CAAC,YAAY;IAKpB,OAAO,CAAC,iBAAiB;IA8BzB,OAAO,CAAC,eAAe;IAcvB,OAAO,CAAC,YAAY;IASpB,OAAO,CAAC,gBAAgB;CAMzB"}
1
+ {"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../src/tui-ui/runner.ts"],"names":[],"mappings":"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"}