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
@@ -1,16 +1,21 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.launchTuiUI = launchTuiUI;
4
+ exports.parseExternalEditorCommand = parseExternalEditorCommand;
5
+ exports.statusSnapshotString = statusSnapshotString;
4
6
  const agent_runtime_controller_1 = require("../runtime/agent-runtime-controller");
7
+ const util_1 = require("util");
5
8
  const ui_events_1 = require("../runtime/ui-events");
6
9
  const ui_view_model_1 = require("../runtime/ui-view-model");
7
10
  const runner_1 = require("./runner");
8
11
  const inline_surface_1 = require("./inline-surface");
9
- const ENABLE_BRACKETED_PASTE = '\x1b[?2004h';
12
+ const tool_detail_repository_1 = require("../runtime/tool-detail-repository");
13
+ const transcript_inspector_surface_1 = require("./transcript-inspector-surface");
14
+ const child_process_1 = require("child_process");
10
15
  const DISABLE_BRACKETED_PASTE = '\x1b[?2004l';
11
16
  const SHOW_CURSOR = '\x1b[?25h';
12
- const HIDE_CURSOR = '\x1b[?25l';
13
17
  const ENABLE_AUTOWRAP = '\x1b[?7h';
18
+ const EXIT_ALTERNATE_SCREEN = '\x1b[?1049l';
14
19
  async function launchTuiUI(runtime, options = {}) {
15
20
  const input = options.input ?? process.stdin;
16
21
  const output = options.output ?? process.stdout;
@@ -20,11 +25,13 @@ async function launchTuiUI(runtime, options = {}) {
20
25
  let runner;
21
26
  let controller;
22
27
  let surface;
28
+ let systemId = null;
23
29
  let stopping = false;
24
30
  let settled = false;
25
31
  let resolveLaunch = null;
26
32
  // Once guard: shared cleanup promise so concurrent stop calls share one execution.
27
33
  let cleanupPromise = null;
34
+ let restoreConsole = null;
28
35
  const dimensions = () => {
29
36
  const size = readTtyDimensions(output);
30
37
  return {
@@ -49,15 +56,28 @@ async function launchTuiUI(runtime, options = {}) {
49
56
  input.setRawMode(false);
50
57
  }
51
58
  }
52
- catch { /* best effort */ }
59
+ catch {
60
+ /* best effort */
61
+ }
53
62
  try {
54
63
  input.pause();
55
64
  }
56
- catch { /* best effort */ }
65
+ catch {
66
+ /* best effort */
67
+ }
57
68
  try {
58
- output.write(`${SHOW_CURSOR}${ENABLE_AUTOWRAP}${DISABLE_BRACKETED_PASTE}\n`);
69
+ output.write(`${SHOW_CURSOR}${ENABLE_AUTOWRAP}${DISABLE_BRACKETED_PASTE}${EXIT_ALTERNATE_SCREEN}\n`);
59
70
  }
60
- catch { /* best effort */ }
71
+ catch {
72
+ /* best effort */
73
+ }
74
+ };
75
+ /** Route process-level rejection feedback through the owned TUI surface. */
76
+ const onUnhandledRejection = (reason) => {
77
+ if (stopping)
78
+ return;
79
+ const message = reason instanceof Error ? reason.message : String(reason);
80
+ runner.dispatch({ type: 'setStatus', message: `Unhandled rejection: ${message}` });
61
81
  };
62
82
  /**
63
83
  * Once-guarded cleanup. Multiple concurrent calls (SIGINT, SIGTERM, runtime
@@ -77,33 +97,62 @@ async function launchTuiUI(runtime, options = {}) {
77
97
  try {
78
98
  input.off('data', handleData);
79
99
  }
80
- catch { /* ok */ }
100
+ catch {
101
+ /* ok */
102
+ }
81
103
  try {
82
104
  output.off('resize', handleResize);
83
105
  }
84
- catch { /* ok */ }
106
+ catch {
107
+ /* ok */
108
+ }
85
109
  try {
86
110
  process.off('SIGWINCH', handleResize);
87
111
  }
88
- catch { /* ok */ }
112
+ catch {
113
+ /* ok */
114
+ }
89
115
  try {
90
116
  process.off('SIGINT', handleSigint);
91
117
  }
92
- catch { /* ok */ }
118
+ catch {
119
+ /* ok */
120
+ }
93
121
  try {
94
122
  process.off('SIGTERM', handleSigterm);
95
123
  }
96
- catch { /* ok */ }
124
+ catch {
125
+ /* ok */
126
+ }
97
127
  try {
98
128
  process.off('SIGHUP', handleSighup);
99
129
  }
100
- catch { /* ok */ }
130
+ catch {
131
+ /* ok */
132
+ }
133
+ try {
134
+ process.off('unhandledRejection', onUnhandledRejection);
135
+ }
136
+ catch {
137
+ /* ok */
138
+ }
101
139
  // Stop active turn (controller may not exist if init failed).
102
140
  if (controller) {
103
141
  try {
104
142
  await controller.stopActiveTurn();
105
143
  }
106
- catch { /* best effort — don't block cleanup */ }
144
+ catch {
145
+ /* best effort — don't block cleanup */
146
+ }
147
+ }
148
+ if (runner) {
149
+ try {
150
+ await runner.closeModalSurface();
151
+ await runner.flushTranscriptCommits();
152
+ }
153
+ catch {
154
+ /* best effort */
155
+ }
107
156
  }
108
157
  // Restore raw mode.
109
158
  try {
@@ -111,29 +160,59 @@ async function launchTuiUI(runtime, options = {}) {
111
160
  input.setRawMode(false);
112
161
  }
113
162
  }
114
- catch { /* best effort */ }
163
+ catch {
164
+ /* best effort */
165
+ }
115
166
  try {
116
167
  input.pause();
117
168
  }
118
- catch { /* best effort */ }
169
+ catch {
170
+ /* best effort */
171
+ }
172
+ // Stop scheduler before surface cleanup (prevents pending renders).
173
+ if (runner) {
174
+ try {
175
+ runner.getScheduler().stop();
176
+ }
177
+ catch {
178
+ /* best effort */
179
+ }
180
+ }
181
+ // Flush surface queue to ensure all pending writes complete.
182
+ if (surface) {
183
+ try {
184
+ await surface.flush();
185
+ }
186
+ catch {
187
+ /* best effort */
188
+ }
189
+ }
119
190
  // Unmount surface (clears ephemeral live region only).
120
191
  if (surface) {
121
192
  try {
122
193
  await surface.unmount();
123
194
  }
124
- catch { /* best effort */ }
195
+ catch {
196
+ /* best effort */
197
+ }
125
198
  }
199
+ restoreConsole?.();
200
+ restoreConsole = null;
126
201
  // Restore terminal state: cursor, autowrap, bracketed paste.
127
202
  // NO alternate-screen exit, NO full clear, NO erasing committed scrollback.
128
203
  try {
129
204
  output.write(`${SHOW_CURSOR}${ENABLE_AUTOWRAP}${DISABLE_BRACKETED_PASTE}`);
130
205
  }
131
- catch { /* best effort */ }
206
+ catch {
207
+ /* best effort */
208
+ }
132
209
  // Runtime shutdown last; preserves original exit code/signal semantics.
133
210
  try {
134
211
  await runtime.shutdown();
135
212
  }
136
- catch { /* best effort */ }
213
+ catch {
214
+ /* best effort */
215
+ }
137
216
  })();
138
217
  return cleanupPromise;
139
218
  };
@@ -170,7 +249,9 @@ async function launchTuiUI(runtime, options = {}) {
170
249
  const message = error instanceof Error ? error.message : String(error);
171
250
  process.stderr.write(`\nTUI renderer error: ${message}\n`);
172
251
  }
173
- catch { /* best effort */ }
252
+ catch {
253
+ /* best effort */
254
+ }
174
255
  // Attempt full cleanup (may partially fail — that's ok).
175
256
  // Ensure finishLaunch() runs on both success and rejection so the error
176
257
  // path always completes and no unhandled promise rejection escapes.
@@ -196,7 +277,12 @@ async function launchTuiUI(runtime, options = {}) {
196
277
  runner.events.append({ role: 'error', content: 'No session selected.' });
197
278
  return '';
198
279
  }
199
- return { type: 'select_session', sessionId: selected.id, allProjects: request.allProjects, source: 'picker' };
280
+ return {
281
+ type: 'select_session',
282
+ sessionId: selected.id,
283
+ allProjects: request.allProjects,
284
+ source: 'picker',
285
+ };
200
286
  }
201
287
  if (trimmed.startsWith('/'))
202
288
  return trimmed;
@@ -208,11 +294,27 @@ async function launchTuiUI(runtime, options = {}) {
208
294
  runner.events.append({ role: 'error', content: `No session at index ${numeric[1]}.` });
209
295
  return '';
210
296
  }
211
- return { type: 'select_session', sessionId: selected.id, allProjects: request.allProjects, source: 'picker' };
297
+ return {
298
+ type: 'select_session',
299
+ sessionId: selected.id,
300
+ allProjects: request.allProjects,
301
+ source: 'picker',
302
+ };
212
303
  }
213
- return { type: 'select_session', sessionId: trimmed, allProjects: request.allProjects, source: 'picker' };
304
+ return {
305
+ type: 'select_session',
306
+ sessionId: trimmed,
307
+ allProjects: request.allProjects,
308
+ source: 'picker',
309
+ };
214
310
  };
215
311
  const submit = (rawInput) => {
312
+ // Finalize the initial system message so it can be committed to scrollback
313
+ // and the commit boundary can advance past it.
314
+ if (systemId !== null) {
315
+ runner.events.finalize(systemId);
316
+ systemId = null; // Only finalize once.
317
+ }
216
318
  const selectedInput = consumeSessionPickerSelection(rawInput);
217
319
  const runtimeInput = typeof selectedInput === 'string'
218
320
  ? { type: 'submit', text: selectedInput.trim(), source: 'composer' }
@@ -253,6 +355,7 @@ async function launchTuiUI(runtime, options = {}) {
253
355
  const handleResize = () => {
254
356
  if (stopping)
255
357
  return;
358
+ runner.beginResize(dimensions().width);
256
359
  if (resizeDebounceTimer !== null) {
257
360
  clearTimeout(resizeDebounceTimer);
258
361
  }
@@ -278,14 +381,13 @@ async function launchTuiUI(runtime, options = {}) {
278
381
  // Primary-screen inline surface: no alternate screen (1049).
279
382
  const { width, height } = dimensions();
280
383
  surface = new inline_surface_1.InlineTerminalSurface({ output });
281
- // Mount is serialized through the surface FIFO queue. In the real terminal,
282
- // the queue drains synchronously for the first operation (no prior ops).
283
- // Fire-and-forget is safe because subsequent output.write calls go through
284
- // the same queue via surface.commit/renderLive, not directly.
285
- // Using `await` here causes test hangs because the test FakeTTY output
286
- // doesn't trigger the async drain loop in the same way.
287
- void surface.mount(width, height);
288
- output.write(`${ENABLE_BRACKETED_PASTE}${HIDE_CURSOR}`);
384
+ const inspectorSurface = new transcript_inspector_surface_1.TranscriptInspectorSurface(output);
385
+ // Mount enters the same serialized queue as subsequent paints. Start it
386
+ // synchronously so input listeners are installed in this turn; awaiting it
387
+ // here creates a window where early keystrokes are dropped.
388
+ void surface.mount(width, height).catch(error => failRenderer(error));
389
+ // surface.mount() enables bracketed paste and hides cursor; no need for
390
+ // redundant output.write of those sequences.
289
391
  runner = new runner_1.TuiRunner({
290
392
  output,
291
393
  width,
@@ -301,18 +403,43 @@ async function launchTuiUI(runtime, options = {}) {
301
403
  source: 'keyboard',
302
404
  });
303
405
  },
406
+ surface,
407
+ onSurfaceError: failRenderer,
408
+ detailRepository: new tool_detail_repository_1.FileToolDetailRepository(),
409
+ inspectorSurface,
410
+ onOpenExternalEditor: async (filePath) => {
411
+ await surface.suspend();
412
+ input.off('data', handleData);
413
+ try {
414
+ if (typeof input.setRawMode === 'function')
415
+ input.setRawMode(false);
416
+ input.pause();
417
+ await launchExternalEditor(filePath);
418
+ }
419
+ finally {
420
+ if (!stopping) {
421
+ input.resume();
422
+ if (typeof input.setRawMode === 'function')
423
+ input.setRawMode(true);
424
+ input.on('data', handleData);
425
+ await surface.restore(() => null, dimensions().width, dimensions().height);
426
+ }
427
+ }
428
+ },
304
429
  });
430
+ restoreConsole = installTuiConsoleBridge(runner.events, () => stopping);
305
431
  const dispatchStatusSnapshot = (phase) => {
432
+ const runtimeSnapshot = runtime.store.getSnapshot();
306
433
  const snapshot = (0, ui_view_model_1.createStatusSnapshot)({
307
434
  renderer: 'tui',
308
- model: runtime.store.getSnapshot().currentModel || runtime.config.model,
435
+ model: runtimeSnapshot.currentModel || runtime.config.model,
309
436
  sessionId: runtime.getSession()?.id,
310
- costUsd: runtime.store.getSnapshot().costTracker.getSessionStats().totalCost,
437
+ context: runtimeSnapshot.contextUsage ?? undefined,
311
438
  runningState: phase,
312
439
  tokens: tokensFromRuntime(runtime),
313
440
  });
314
441
  runner.dispatch({ type: 'setStatusSnapshot', snapshot, phase });
315
- return statusSnapshotString(runtime, phase);
442
+ return statusSnapshotString(runtime);
316
443
  };
317
444
  controller = new agent_runtime_controller_1.AgentRuntimeController({
318
445
  runtime,
@@ -323,11 +450,15 @@ async function launchTuiUI(runtime, options = {}) {
323
450
  runningStatus: () => dispatchStatusSnapshot('running'),
324
451
  readyStatus: () => dispatchStatusSnapshot('ready'),
325
452
  });
326
- runner.events.append({
453
+ // The initial system message stays live (not finalized) so it's visible
454
+ // in the live region rather than scrolling off into shell scrollback.
455
+ // It's finalized when the user submits their first input.
456
+ systemId = runner.events.append({
327
457
  role: 'system',
328
- content: `OPENHORSE v${runtime.version}\nProject ${runtime.cwd}\n/ commands @ files ? shortcuts Ctrl+C twice exits`,
458
+ content: `OPENHORSE v${runtime.version}\nProject ${runtime.cwd}\n/ commands @ files ? shortcuts Ctrl+O tools Ctrl+C twice exits`,
459
+ live: true,
329
460
  });
330
- runner.events.setStatus(statusSnapshotString(runtime, 'ready'));
461
+ runner.events.setStatus(statusSnapshotString(runtime));
331
462
  dispatchStatusSnapshot('ready');
332
463
  input.resume();
333
464
  if (typeof input.setRawMode === 'function') {
@@ -339,6 +470,7 @@ async function launchTuiUI(runtime, options = {}) {
339
470
  process.on('SIGINT', handleSigint);
340
471
  process.on('SIGTERM', handleSigterm);
341
472
  process.on('SIGHUP', handleSighup);
473
+ process.on('unhandledRejection', onUnhandledRejection);
342
474
  await new Promise(resolve => {
343
475
  resolveLaunch = resolve;
344
476
  });
@@ -348,20 +480,134 @@ async function launchTuiUI(runtime, options = {}) {
348
480
  throw error;
349
481
  }
350
482
  }
483
+ function parseExternalEditorCommand(commandLine) {
484
+ const args = [];
485
+ let current = '';
486
+ let quote = null;
487
+ let escaped = false;
488
+ let started = false;
489
+ for (const character of commandLine.trim()) {
490
+ if (escaped) {
491
+ current += character;
492
+ escaped = false;
493
+ started = true;
494
+ continue;
495
+ }
496
+ if (character === '\\' && quote !== 'single') {
497
+ escaped = true;
498
+ started = true;
499
+ continue;
500
+ }
501
+ if (character === "'" && quote !== 'double') {
502
+ quote = quote === 'single' ? null : 'single';
503
+ started = true;
504
+ continue;
505
+ }
506
+ if (character === '"' && quote !== 'single') {
507
+ quote = quote === 'double' ? null : 'double';
508
+ started = true;
509
+ continue;
510
+ }
511
+ if (/\s/.test(character) && quote === null) {
512
+ if (started) {
513
+ args.push(current);
514
+ current = '';
515
+ started = false;
516
+ }
517
+ continue;
518
+ }
519
+ current += character;
520
+ started = true;
521
+ }
522
+ if (escaped || quote !== null) {
523
+ throw new Error('Invalid $VISUAL/$EDITOR command: unterminated quote or escape');
524
+ }
525
+ if (started)
526
+ args.push(current);
527
+ return args;
528
+ }
529
+ function launchExternalEditor(filePath) {
530
+ const editorCommand = process.env.VISUAL || process.env.EDITOR || 'vi';
531
+ const [editor, ...editorArgs] = parseExternalEditorCommand(editorCommand);
532
+ if (!editor) {
533
+ return Promise.reject(new Error('$VISUAL/$EDITOR does not name an executable'));
534
+ }
535
+ return new Promise((resolve, reject) => {
536
+ const child = (0, child_process_1.spawn)(editor, [...editorArgs, filePath], { stdio: 'inherit' });
537
+ child.once('error', reject);
538
+ child.once('exit', (code, signal) => {
539
+ if (code === 0) {
540
+ resolve();
541
+ return;
542
+ }
543
+ reject(new Error(signal
544
+ ? `${editor} exited from signal ${signal}`
545
+ : `${editor} exited with code ${code ?? 'unknown'}`));
546
+ });
547
+ });
548
+ }
549
+ function installTuiConsoleBridge(events, isStopping) {
550
+ const originalLog = console.log;
551
+ const originalInfo = console.info;
552
+ const originalDebug = console.debug;
553
+ const originalWarn = console.warn;
554
+ const originalError = console.error;
555
+ const publish = (role, args) => {
556
+ if (isStopping())
557
+ return;
558
+ const content = stripTerminalControlSequences((0, util_1.format)(...args)).trimEnd();
559
+ if (!content)
560
+ return;
561
+ const id = events.append({ role, content });
562
+ events.finalize(id);
563
+ };
564
+ const log = (...args) => publish('system', args);
565
+ const info = (...args) => publish('system', args);
566
+ const debug = (...args) => publish('system', args);
567
+ const warn = (...args) => publish('system', args);
568
+ const error = (...args) => publish('error', args);
569
+ console.log = log;
570
+ console.info = info;
571
+ console.debug = debug;
572
+ console.warn = warn;
573
+ console.error = error;
574
+ return () => {
575
+ console.log = originalLog;
576
+ console.info = originalInfo;
577
+ console.debug = originalDebug;
578
+ console.warn = originalWarn;
579
+ console.error = originalError;
580
+ };
581
+ }
582
+ function stripTerminalControlSequences(value) {
583
+ return value
584
+ .replace(/\x1b\[[0-?]*[ -/]*[@-~]/g, '')
585
+ .replace(/[\u0000-\u0008\u000b\u000c\u000e-\u001f\u007f]/g, '');
586
+ }
351
587
  function tokensFromRuntime(rt) {
352
- const usage = rt.store.getSnapshot().tokenUsage;
353
- if (!usage)
354
- return {};
355
- return { input: usage.promptTokens, output: usage.completionTokens };
588
+ const snapshot = rt.store.getSnapshot();
589
+ const usage = snapshot.tokenUsage;
590
+ return {
591
+ input: usage?.promptTokens,
592
+ output: usage?.completionTokens,
593
+ contextPercent: snapshot.contextUsage?.percent,
594
+ };
356
595
  }
357
- function statusSnapshotString(rt, left) {
596
+ function statusSnapshotString(rt) {
358
597
  const snapshot = rt.store.getSnapshot();
359
598
  const session = rt.getSession()?.id.slice(0, 8) ?? 'none';
360
599
  const tokens = snapshot.tokenUsage
361
600
  ? `${((snapshot.tokenUsage.promptTokens + snapshot.tokenUsage.completionTokens) / 1000).toFixed(1)}K`
362
601
  : '0.0K';
363
- const cost = snapshot.costTracker.getSessionStats().totalCost;
364
- return `${left} model=${snapshot.currentModel || rt.config.model} session=${session} tokens=${tokens} cost=$${cost.toFixed(4)}`;
602
+ const context = (0, ui_view_model_1.contextUsageStatusText)(snapshot.contextUsage);
603
+ return [
604
+ `model=${snapshot.currentModel || rt.config.model}`,
605
+ context,
606
+ `session=${session}`,
607
+ `tokens=${tokens}`,
608
+ ]
609
+ .filter(Boolean)
610
+ .join(' ');
365
611
  }
366
612
  function readTtyDimensions(output) {
367
613
  const getWindowSize = output.getWindowSize;
@@ -1 +1 @@
1
- {"version":3,"file":"launch.js","sourceRoot":"","sources":["../../src/tui-ui/launch.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"launch.js","sourceRoot":"","sources":["../../src/tui-ui/launch.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,59 @@
1
1
  import { type TuiFrame } from '../tui-core/frame';
2
- import { type TuiUiState } from './state';
3
- export interface TuiLayoutOptions {
2
+ import type { StyledRow, TuiTheme } from '../tui-core/style';
3
+ import { type TuiTranscriptRecord, type TuiUiState } from './state';
4
+ export type TranscriptRecordLayout = (entry: TuiTranscriptRecord, width: number) => StyledRow[];
5
+ export interface TuiTranscriptLayoutOptions {
6
+ /** Transcript content width; production uses the surface safe width. */
7
+ transcriptWidth?: number;
8
+ theme?: TuiTheme;
9
+ toolOutputMode?: 'adaptive' | 'collapsed' | 'full';
10
+ /** Runner-provided cached layout. Pure render callers use the shared default. */
11
+ layoutTranscriptRecord?: TranscriptRecordLayout;
12
+ }
13
+ export interface TuiLayoutOptions extends TuiTranscriptLayoutOptions {
4
14
  width: number;
5
15
  height: number;
6
16
  maxTranscriptRows?: number;
7
17
  }
18
+ /**
19
+ * Options for the live-region-only layout (renderTuiLiveFrame).
20
+ * This function produces a frame for the inline surface's live region only,
21
+ * containing: live transcript entries, timeline (if any), overlay, status, and
22
+ * prompt. Committed (static) transcript entries are handled by surface.commit()
23
+ * separately and are NOT included in this frame.
24
+ */
25
+ export interface TuiLiveLayoutOptions extends TuiTranscriptLayoutOptions {
26
+ width: number;
27
+ /** Height of the live region (the inline surface bottom band). */
28
+ height: number;
29
+ }
30
+ export interface TuiLayoutBudget {
31
+ promptLineCount: number;
32
+ /** Rows consumed by the prompt box (2 borders + N content lines). */
33
+ promptRows: number;
34
+ /** Rows consumed by the timeline strip (0 when there is no activity). */
35
+ timelineRows: number;
36
+ /** Rows available for the (live) transcript region at the top. */
37
+ transcriptRows: number;
38
+ }
39
+ /**
40
+ * Measure the cursor-owned live block. Idle TUI state stays compact like an
41
+ * ordinary shell prompt; streaming transcript and overlays grow the block only
42
+ * as needed, up to the surface's viewport-derived limit.
43
+ */
44
+ export declare function measureTuiLiveFrameHeight(state: TuiUiState, width: number, maxHeight: number, options?: TuiTranscriptLayoutOptions): number;
8
45
  export declare function renderTuiUiFrame(state: TuiUiState, options: TuiLayoutOptions): TuiFrame;
46
+ /**
47
+ * Render the live-region frame for InlineTerminalSurface.
48
+ *
49
+ * This frame contains ONLY the ephemeral content that sits at the bottom of
50
+ * the terminal: live (uncommitted) transcript entries, timeline (if any),
51
+ * overlay (if active), status bar, and prompt. Committed transcript entries are
52
+ * written to scrollback by surface.commit() and are NOT included in this frame.
53
+ *
54
+ * The frame height should be sized to fill the terminal viewport's bottom band
55
+ * (see InlineTerminalSurface.getLiveBandRows); the dynamic budget allocates the
56
+ * band rows between transcript / timeline / status / prompt.
57
+ */
58
+ export declare function renderTuiLiveFrame(state: TuiUiState, options: TuiLiveLayoutOptions): TuiFrame;
9
59
  //# sourceMappingURL=layout.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"layout.d.ts","sourceRoot":"","sources":["../../src/tui-ui/layout.ts"],"names":[],"mappings":"AACA,OAAO,EAAkD,KAAK,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAQlG,OAAO,EAGL,KAAK,UAAU,EAChB,MAAM,SAAS,CAAC;AAEjB,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAMD,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,gBAAgB,GAAG,QAAQ,CAiBvF"}
1
+ {"version":3,"file":"layout.d.ts","sourceRoot":"","sources":["../../src/tui-ui/layout.ts"],"names":[],"mappings":"AACA,OAAO,EAAkD,KAAK,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAClG,OAAO,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAM7D,OAAO,EAGL,KAAK,mBAAmB,EACxB,KAAK,UAAU,EAChB,MAAM,SAAS,CAAC;AAGjB,MAAM,MAAM,sBAAsB,GAAG,CACnC,KAAK,EAAE,mBAAmB,EAC1B,KAAK,EAAE,MAAM,KACV,SAAS,EAAE,CAAC;AAEjB,MAAM,WAAW,0BAA0B;IACzC,wEAAwE;IACxE,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,KAAK,CAAC,EAAE,QAAQ,CAAC;IACjB,cAAc,CAAC,EAAE,UAAU,GAAG,WAAW,GAAG,MAAM,CAAC;IACnD,iFAAiF;IACjF,sBAAsB,CAAC,EAAE,sBAAsB,CAAC;CACjD;AAED,MAAM,WAAW,gBAAiB,SAAQ,0BAA0B;IAClE,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED;;;;;;GAMG;AACH,MAAM,WAAW,oBAAqB,SAAQ,0BAA0B;IACtE,KAAK,EAAE,MAAM,CAAC;IACd,kEAAkE;IAClE,MAAM,EAAE,MAAM,CAAC;CAChB;AAQD,MAAM,WAAW,eAAe;IAC9B,eAAe,EAAE,MAAM,CAAC;IACxB,qEAAqE;IACrE,UAAU,EAAE,MAAM,CAAC;IACnB,yEAAyE;IACzE,YAAY,EAAE,MAAM,CAAC;IACrB,kEAAkE;IAClE,cAAc,EAAE,MAAM,CAAC;CACxB;AA2CD;;;;GAIG;AACH,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,UAAU,EACjB,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,MAAM,EACjB,OAAO,GAAE,0BAA+B,GACvC,MAAM,CAkBR;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,gBAAgB,GAAG,QAAQ,CAqBvF;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,oBAAoB,GAAG,QAAQ,CAiB7F"}