@zhijiewang/openharness 2.0.0 → 2.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (235) hide show
  1. package/README.md +4 -4
  2. package/dist/DeferredTool.js +3 -1
  3. package/dist/Tool.d.ts +1 -1
  4. package/dist/agents/roles.js +58 -62
  5. package/dist/commands/cybergotchi.d.ts +1 -1
  6. package/dist/commands/cybergotchi.js +30 -30
  7. package/dist/commands/index.js +360 -122
  8. package/dist/components/App.d.ts +1 -1
  9. package/dist/components/App.js +6 -6
  10. package/dist/components/CompanionFooter.d.ts +1 -1
  11. package/dist/components/CompanionFooter.js +6 -8
  12. package/dist/components/CybergotchiBubble.js +5 -5
  13. package/dist/components/CybergotchiPanel.d.ts +1 -1
  14. package/dist/components/CybergotchiPanel.js +7 -7
  15. package/dist/components/CybergotchiPanelConnected.js +2 -2
  16. package/dist/components/CybergotchiSetup.js +26 -24
  17. package/dist/components/CybergotchiSprite.d.ts +1 -1
  18. package/dist/components/CybergotchiSprite.js +8 -12
  19. package/dist/components/DiffView.d.ts +1 -1
  20. package/dist/components/DiffView.js +10 -10
  21. package/dist/components/ErrorBoundary.d.ts +1 -1
  22. package/dist/components/ErrorBoundary.js +1 -1
  23. package/dist/components/InitWizard.js +65 -33
  24. package/dist/components/Markdown.js +2 -4
  25. package/dist/components/Messages.js +4 -4
  26. package/dist/components/PermissionPrompt.d.ts +1 -1
  27. package/dist/components/PermissionPrompt.js +15 -17
  28. package/dist/components/REPL.d.ts +1 -1
  29. package/dist/components/REPL.js +74 -49
  30. package/dist/components/Spinner.js +2 -2
  31. package/dist/components/TextInput.js +35 -29
  32. package/dist/components/ToolCallDisplay.js +3 -5
  33. package/dist/cybergotchi/bones.d.ts +1 -1
  34. package/dist/cybergotchi/bones.js +8 -8
  35. package/dist/cybergotchi/config.d.ts +2 -2
  36. package/dist/cybergotchi/config.js +13 -13
  37. package/dist/cybergotchi/events.d.ts +5 -5
  38. package/dist/cybergotchi/events.js +7 -7
  39. package/dist/cybergotchi/needs.d.ts +2 -2
  40. package/dist/cybergotchi/needs.js +7 -9
  41. package/dist/cybergotchi/personality.d.ts +2 -2
  42. package/dist/cybergotchi/personality.js +2 -2
  43. package/dist/cybergotchi/species.d.ts +1 -1
  44. package/dist/cybergotchi/species.js +145 -217
  45. package/dist/cybergotchi/speech.d.ts +2 -2
  46. package/dist/cybergotchi/speech.js +43 -43
  47. package/dist/cybergotchi/types.d.ts +4 -4
  48. package/dist/cybergotchi/types.js +26 -26
  49. package/dist/cybergotchi/useCybergotchi.d.ts +1 -1
  50. package/dist/cybergotchi/useCybergotchi.js +29 -25
  51. package/dist/git/index.js +11 -9
  52. package/dist/harness/checkpoints.js +29 -21
  53. package/dist/harness/config.d.ts +12 -2
  54. package/dist/harness/config.js +15 -9
  55. package/dist/harness/context-warning.d.ts +1 -1
  56. package/dist/harness/context-warning.js +1 -1
  57. package/dist/harness/cost.js +1 -1
  58. package/dist/harness/credentials.js +13 -13
  59. package/dist/harness/hooks.js +7 -5
  60. package/dist/harness/keybindings.js +20 -18
  61. package/dist/harness/marketplace.d.ts +3 -3
  62. package/dist/harness/marketplace.js +55 -42
  63. package/dist/harness/memory.d.ts +23 -5
  64. package/dist/harness/memory.js +142 -41
  65. package/dist/harness/onboarding.js +30 -10
  66. package/dist/harness/plugins.d.ts +9 -1
  67. package/dist/harness/plugins.js +54 -30
  68. package/dist/harness/rules.js +12 -7
  69. package/dist/harness/sandbox.d.ts +34 -0
  70. package/dist/harness/sandbox.js +104 -0
  71. package/dist/harness/session-db.d.ts +55 -0
  72. package/dist/harness/session-db.js +165 -0
  73. package/dist/harness/session.d.ts +1 -1
  74. package/dist/harness/session.js +34 -15
  75. package/dist/harness/store.d.ts +3 -3
  76. package/dist/harness/store.js +6 -4
  77. package/dist/harness/submit-handler.d.ts +4 -4
  78. package/dist/harness/submit-handler.js +57 -21
  79. package/dist/harness/telemetry.d.ts +1 -1
  80. package/dist/harness/telemetry.js +23 -19
  81. package/dist/harness/traces.d.ts +2 -2
  82. package/dist/harness/traces.js +44 -33
  83. package/dist/harness/verification.d.ts +1 -1
  84. package/dist/harness/verification.js +50 -44
  85. package/dist/lsp/client.js +44 -40
  86. package/dist/main.js +100 -59
  87. package/dist/mcp/DeferredMcpTool.d.ts +4 -4
  88. package/dist/mcp/DeferredMcpTool.js +9 -5
  89. package/dist/mcp/McpTool.d.ts +4 -4
  90. package/dist/mcp/McpTool.js +8 -4
  91. package/dist/mcp/client.d.ts +2 -2
  92. package/dist/mcp/client.js +21 -21
  93. package/dist/mcp/loader.d.ts +1 -1
  94. package/dist/mcp/loader.js +17 -12
  95. package/dist/mcp/registry.d.ts +3 -3
  96. package/dist/mcp/registry.js +97 -97
  97. package/dist/mcp/schema.d.ts +1 -1
  98. package/dist/mcp/schema.js +16 -16
  99. package/dist/mcp/server.d.ts +1 -1
  100. package/dist/mcp/server.js +21 -21
  101. package/dist/mcp/types.d.ts +3 -3
  102. package/dist/providers/anthropic.d.ts +2 -2
  103. package/dist/providers/anthropic.js +10 -9
  104. package/dist/providers/base.d.ts +1 -1
  105. package/dist/providers/index.js +10 -3
  106. package/dist/providers/llamacpp.d.ts +2 -2
  107. package/dist/providers/llamacpp.js +1 -3
  108. package/dist/providers/ollama.d.ts +2 -2
  109. package/dist/providers/ollama.js +3 -4
  110. package/dist/providers/openai.d.ts +2 -2
  111. package/dist/providers/openai.js +3 -5
  112. package/dist/providers/openrouter.d.ts +2 -2
  113. package/dist/providers/router.d.ts +1 -1
  114. package/dist/providers/router.js +7 -7
  115. package/dist/query/compress.d.ts +2 -2
  116. package/dist/query/compress.js +22 -21
  117. package/dist/query/context-manager.d.ts +2 -2
  118. package/dist/query/context-manager.js +8 -11
  119. package/dist/query/errors.js +1 -1
  120. package/dist/query/index.d.ts +1 -1
  121. package/dist/query/index.js +30 -22
  122. package/dist/query/tools.js +15 -12
  123. package/dist/query/types.d.ts +1 -1
  124. package/dist/query.d.ts +1 -1
  125. package/dist/query.js +1 -1
  126. package/dist/remote/auth.d.ts +2 -2
  127. package/dist/remote/auth.js +8 -8
  128. package/dist/remote/server.d.ts +3 -3
  129. package/dist/remote/server.js +60 -60
  130. package/dist/renderer/cells.js +9 -9
  131. package/dist/renderer/colors.js +24 -6
  132. package/dist/renderer/diff.d.ts +2 -2
  133. package/dist/renderer/diff.js +27 -19
  134. package/dist/renderer/differ.d.ts +1 -1
  135. package/dist/renderer/differ.js +9 -9
  136. package/dist/renderer/image.js +19 -19
  137. package/dist/renderer/index.d.ts +6 -6
  138. package/dist/renderer/index.js +163 -93
  139. package/dist/renderer/input.js +66 -48
  140. package/dist/renderer/layout.d.ts +6 -6
  141. package/dist/renderer/layout.js +163 -124
  142. package/dist/renderer/markdown.d.ts +2 -2
  143. package/dist/renderer/markdown.js +173 -54
  144. package/dist/renderer/session-browser.d.ts +2 -2
  145. package/dist/renderer/session-browser.js +19 -21
  146. package/dist/repl.d.ts +5 -5
  147. package/dist/repl.js +300 -198
  148. package/dist/sdk/index.d.ts +8 -7
  149. package/dist/sdk/index.js +59 -42
  150. package/dist/services/AgentDispatcher.d.ts +3 -3
  151. package/dist/services/AgentDispatcher.js +33 -29
  152. package/dist/services/CronExecutor.d.ts +4 -4
  153. package/dist/services/CronExecutor.js +12 -8
  154. package/dist/services/EvaluatorLoop.d.ts +3 -3
  155. package/dist/services/EvaluatorLoop.js +29 -21
  156. package/dist/services/MetaHarness.d.ts +1 -1
  157. package/dist/services/MetaHarness.js +41 -33
  158. package/dist/services/PipelineExecutor.d.ts +1 -1
  159. package/dist/services/PipelineExecutor.js +23 -25
  160. package/dist/services/SkillExtractor.d.ts +43 -0
  161. package/dist/services/SkillExtractor.js +143 -0
  162. package/dist/services/StreamingToolExecutor.d.ts +2 -2
  163. package/dist/services/StreamingToolExecutor.js +11 -7
  164. package/dist/services/a2a.d.ts +8 -8
  165. package/dist/services/a2a.js +44 -34
  166. package/dist/services/agent-messaging.d.ts +33 -15
  167. package/dist/services/agent-messaging.js +65 -13
  168. package/dist/services/cron.js +16 -16
  169. package/dist/tools/AgentTool/index.d.ts +5 -2
  170. package/dist/tools/AgentTool/index.js +35 -15
  171. package/dist/tools/AskUserTool/index.js +1 -1
  172. package/dist/tools/BashTool/index.d.ts +2 -2
  173. package/dist/tools/BashTool/index.js +18 -10
  174. package/dist/tools/CronTool/index.d.ts +2 -2
  175. package/dist/tools/CronTool/index.js +30 -12
  176. package/dist/tools/DiagnosticsTool/index.js +28 -22
  177. package/dist/tools/EnterPlanModeTool/index.js +93 -14
  178. package/dist/tools/EnterWorktreeTool/index.js +7 -3
  179. package/dist/tools/ExitPlanModeTool/index.d.ts +22 -1
  180. package/dist/tools/ExitPlanModeTool/index.js +20 -5
  181. package/dist/tools/ExitWorktreeTool/index.js +11 -4
  182. package/dist/tools/FileEditTool/index.js +3 -5
  183. package/dist/tools/FileReadTool/index.js +16 -10
  184. package/dist/tools/FileWriteTool/index.js +2 -2
  185. package/dist/tools/GlobTool/index.js +5 -9
  186. package/dist/tools/GrepTool/index.d.ts +2 -2
  187. package/dist/tools/GrepTool/index.js +14 -9
  188. package/dist/tools/ImageReadTool/index.js +2 -2
  189. package/dist/tools/KillProcessTool/index.js +11 -7
  190. package/dist/tools/LSTool/index.js +3 -3
  191. package/dist/tools/MemoryTool/index.d.ts +11 -11
  192. package/dist/tools/MemoryTool/index.js +28 -14
  193. package/dist/tools/MonitorTool/index.d.ts +2 -2
  194. package/dist/tools/MonitorTool/index.js +24 -19
  195. package/dist/tools/MultiEditTool/index.js +9 -5
  196. package/dist/tools/NotebookEditTool/index.js +3 -3
  197. package/dist/tools/ParallelAgentTool/index.d.ts +4 -4
  198. package/dist/tools/ParallelAgentTool/index.js +12 -6
  199. package/dist/tools/PipelineTool/index.d.ts +4 -4
  200. package/dist/tools/PipelineTool/index.js +3 -3
  201. package/dist/tools/PowerShellTool/index.js +10 -6
  202. package/dist/tools/RemoteTriggerTool/index.js +8 -4
  203. package/dist/tools/ScheduleWakeupTool/index.d.ts +42 -0
  204. package/dist/tools/ScheduleWakeupTool/index.js +115 -0
  205. package/dist/tools/SendMessageTool/index.js +25 -7
  206. package/dist/tools/SessionSearchTool/index.d.ts +15 -0
  207. package/dist/tools/SessionSearchTool/index.js +36 -0
  208. package/dist/tools/SkillTool/index.d.ts +3 -0
  209. package/dist/tools/SkillTool/index.js +39 -9
  210. package/dist/tools/TaskCreateTool/index.d.ts +2 -2
  211. package/dist/tools/TaskCreateTool/index.js +2 -2
  212. package/dist/tools/TaskGetTool/index.js +2 -2
  213. package/dist/tools/TaskListTool/index.js +3 -5
  214. package/dist/tools/TaskOutputTool/index.js +2 -2
  215. package/dist/tools/TaskStopTool/index.js +3 -3
  216. package/dist/tools/TaskUpdateTool/index.d.ts +4 -4
  217. package/dist/tools/TaskUpdateTool/index.js +2 -2
  218. package/dist/tools/ToolSearchTool/index.js +9 -6
  219. package/dist/tools/WebFetchTool/index.js +1 -1
  220. package/dist/tools/WebSearchTool/index.js +2 -6
  221. package/dist/tools.js +31 -30
  222. package/dist/types/permissions.js +15 -9
  223. package/dist/utils/bash-safety.d.ts +1 -1
  224. package/dist/utils/bash-safety.js +64 -54
  225. package/dist/utils/diff-algorithm.d.ts +3 -3
  226. package/dist/utils/diff-algorithm.js +7 -7
  227. package/dist/utils/fs.js +3 -3
  228. package/dist/utils/safe-env.js +1 -1
  229. package/dist/utils/theme-data.d.ts +1 -1
  230. package/dist/utils/theme-data.js +1 -1
  231. package/dist/utils/theme.d.ts +1 -1
  232. package/dist/utils/theme.js +1 -1
  233. package/dist/utils/tool-summary.d.ts +1 -1
  234. package/dist/utils/tool-summary.js +27 -9
  235. package/package.json +10 -3
@@ -11,7 +11,7 @@ export function startRawInput(handler) {
11
11
  process.stdin.setRawMode(true);
12
12
  }
13
13
  process.stdin.resume();
14
- process.stdin.setEncoding('utf8');
14
+ process.stdin.setEncoding("utf8");
15
15
  const onData = (data) => {
16
16
  // Paste detection: multi-byte reads with newlines → treat newlines as insertable
17
17
  const isPaste = data.length > 4;
@@ -19,17 +19,17 @@ export function startRawInput(handler) {
19
19
  while (i < data.length) {
20
20
  const result = parseKey(data, i);
21
21
  // During paste, convert 'return' to 'newline' so they insert instead of submit
22
- if (isPaste && result.event.name === 'return') {
23
- result.event.name = 'newline';
24
- result.event.char = '\n';
22
+ if (isPaste && result.event.name === "return") {
23
+ result.event.name = "newline";
24
+ result.event.char = "\n";
25
25
  }
26
26
  handler(result.event);
27
27
  i += result.consumed;
28
28
  }
29
29
  };
30
- process.stdin.on('data', onData);
30
+ process.stdin.on("data", onData);
31
31
  return () => {
32
- process.stdin.off('data', onData);
32
+ process.stdin.off("data", onData);
33
33
  if (process.stdin.setRawMode) {
34
34
  process.stdin.setRawMode(wasRaw ?? false);
35
35
  }
@@ -43,76 +43,94 @@ export function parseKey(data, offset) {
43
43
  // ESC sequences
44
44
  if (code === 0x1b) {
45
45
  // Arrow keys: ESC [ A/B/C/D
46
- if (seq.startsWith('\x1b[A'))
47
- return { event: key('', 'up', seq.slice(0, 3)), consumed: 3 };
48
- if (seq.startsWith('\x1b[B'))
49
- return { event: key('', 'down', seq.slice(0, 3)), consumed: 3 };
50
- if (seq.startsWith('\x1b[C'))
51
- return { event: key('', 'right', seq.slice(0, 3)), consumed: 3 };
52
- if (seq.startsWith('\x1b[D'))
53
- return { event: key('', 'left', seq.slice(0, 3)), consumed: 3 };
46
+ if (seq.startsWith("\x1b[A"))
47
+ return { event: key("", "up", seq.slice(0, 3)), consumed: 3 };
48
+ if (seq.startsWith("\x1b[B"))
49
+ return { event: key("", "down", seq.slice(0, 3)), consumed: 3 };
50
+ if (seq.startsWith("\x1b[C"))
51
+ return { event: key("", "right", seq.slice(0, 3)), consumed: 3 };
52
+ if (seq.startsWith("\x1b[D"))
53
+ return { event: key("", "left", seq.slice(0, 3)), consumed: 3 };
54
54
  // Home/End
55
- if (seq.startsWith('\x1b[H'))
56
- return { event: key('', 'home', seq.slice(0, 3)), consumed: 3 };
57
- if (seq.startsWith('\x1b[F'))
58
- return { event: key('', 'end', seq.slice(0, 3)), consumed: 3 };
55
+ if (seq.startsWith("\x1b[H"))
56
+ return { event: key("", "home", seq.slice(0, 3)), consumed: 3 };
57
+ if (seq.startsWith("\x1b[F"))
58
+ return { event: key("", "end", seq.slice(0, 3)), consumed: 3 };
59
59
  // Delete: ESC [ 3 ~
60
- if (seq.startsWith('\x1b[3~'))
61
- return { event: key('', 'delete', seq.slice(0, 4)), consumed: 4 };
60
+ if (seq.startsWith("\x1b[3~"))
61
+ return { event: key("", "delete", seq.slice(0, 4)), consumed: 4 };
62
62
  // SGR mouse events: ESC [ < button ; col ; row M/m
63
- if (seq.startsWith('\x1b[<')) {
63
+ if (seq.startsWith("\x1b[<")) {
64
64
  const endIdx = seq.search(/[Mm]/);
65
65
  if (endIdx === -1) {
66
66
  // Partial sequence — consume entire fragment to avoid junk
67
- return { event: key('', 'mouse', seq), consumed: seq.length };
67
+ return { event: key("", "mouse", seq), consumed: seq.length };
68
68
  }
69
69
  if (endIdx > 3) {
70
- const params = seq.slice(3, endIdx).split(';');
71
- const button = parseInt(params[0] ?? '0', 10);
70
+ const params = seq.slice(3, endIdx).split(";");
71
+ const button = parseInt(params[0] ?? "0", 10);
72
72
  const consumed = endIdx + 1;
73
73
  // button 64 = scroll up, 65 = scroll down
74
74
  if (button === 64)
75
- return { event: key('', 'scrollup', seq.slice(0, consumed)), consumed };
75
+ return { event: key("", "scrollup", seq.slice(0, consumed)), consumed };
76
76
  if (button === 65)
77
- return { event: key('', 'scrolldown', seq.slice(0, consumed)), consumed };
77
+ return { event: key("", "scrolldown", seq.slice(0, consumed)), consumed };
78
78
  // Ignore other mouse events (clicks, moves)
79
- return { event: key('', 'mouse', seq.slice(0, consumed)), consumed };
79
+ return { event: key("", "mouse", seq.slice(0, consumed)), consumed };
80
80
  }
81
81
  }
82
82
  // Page Up/Down: ESC [ 5 ~ / ESC [ 6 ~
83
- if (seq.startsWith('\x1b[5~'))
84
- return { event: key('', 'pageup', seq.slice(0, 4)), consumed: 4 };
85
- if (seq.startsWith('\x1b[6~'))
86
- return { event: key('', 'pagedown', seq.slice(0, 4)), consumed: 4 };
83
+ if (seq.startsWith("\x1b[5~"))
84
+ return { event: key("", "pageup", seq.slice(0, 4)), consumed: 4 };
85
+ if (seq.startsWith("\x1b[6~"))
86
+ return { event: key("", "pagedown", seq.slice(0, 4)), consumed: 4 };
87
87
  // Shift+Arrow: ESC [ 1 ; 2 A/B/C/D
88
- if (seq.startsWith('\x1b[1;2A'))
89
- return { event: { char: '', name: 'up', ctrl: false, meta: false, shift: true, sequence: seq.slice(0, 6) }, consumed: 6 };
90
- if (seq.startsWith('\x1b[1;2B'))
91
- return { event: { char: '', name: 'down', ctrl: false, meta: false, shift: true, sequence: seq.slice(0, 6) }, consumed: 6 };
92
- if (seq.startsWith('\x1b[1;2C'))
93
- return { event: { char: '', name: 'right', ctrl: false, meta: false, shift: true, sequence: seq.slice(0, 6) }, consumed: 6 };
94
- if (seq.startsWith('\x1b[1;2D'))
95
- return { event: { char: '', name: 'left', ctrl: false, meta: false, shift: true, sequence: seq.slice(0, 6) }, consumed: 6 };
88
+ if (seq.startsWith("\x1b[1;2A"))
89
+ return {
90
+ event: { char: "", name: "up", ctrl: false, meta: false, shift: true, sequence: seq.slice(0, 6) },
91
+ consumed: 6,
92
+ };
93
+ if (seq.startsWith("\x1b[1;2B"))
94
+ return {
95
+ event: { char: "", name: "down", ctrl: false, meta: false, shift: true, sequence: seq.slice(0, 6) },
96
+ consumed: 6,
97
+ };
98
+ if (seq.startsWith("\x1b[1;2C"))
99
+ return {
100
+ event: { char: "", name: "right", ctrl: false, meta: false, shift: true, sequence: seq.slice(0, 6) },
101
+ consumed: 6,
102
+ };
103
+ if (seq.startsWith("\x1b[1;2D"))
104
+ return {
105
+ event: { char: "", name: "left", ctrl: false, meta: false, shift: true, sequence: seq.slice(0, 6) },
106
+ consumed: 6,
107
+ };
96
108
  // Alt+Enter (ESC + CR/LF) — newline insertion
97
- if (seq.length >= 2 && (seq[1] === '\r' || seq[1] === '\n')) {
98
- return { event: { char: '\n', name: 'newline', ctrl: false, meta: true, shift: false, sequence: seq.slice(0, 2) }, consumed: 2 };
109
+ if (seq.length >= 2 && (seq[1] === "\r" || seq[1] === "\n")) {
110
+ return {
111
+ event: { char: "\n", name: "newline", ctrl: false, meta: true, shift: false, sequence: seq.slice(0, 2) },
112
+ consumed: 2,
113
+ };
99
114
  }
100
115
  // Alt+char
101
- if (seq.length >= 2 && seq[1] >= ' ') {
102
- return { event: { char: seq[1], name: seq[1], ctrl: false, meta: true, shift: false, sequence: seq.slice(0, 2) }, consumed: 2 };
116
+ if (seq.length >= 2 && seq[1] >= " ") {
117
+ return {
118
+ event: { char: seq[1], name: seq[1], ctrl: false, meta: true, shift: false, sequence: seq.slice(0, 2) },
119
+ consumed: 2,
120
+ };
103
121
  }
104
122
  // Bare escape
105
- return { event: key('', 'escape', '\x1b'), consumed: 1 };
123
+ return { event: key("", "escape", "\x1b"), consumed: 1 };
106
124
  }
107
125
  // Control characters
108
126
  if (code === 0x0d || code === 0x0a)
109
- return { event: key('', 'return', ch), consumed: 1 };
127
+ return { event: key("", "return", ch), consumed: 1 };
110
128
  if (code === 0x7f)
111
- return { event: key('', 'backspace', ch), consumed: 1 };
129
+ return { event: key("", "backspace", ch), consumed: 1 };
112
130
  if (code === 0x08)
113
- return { event: key('', 'backspace', ch), consumed: 1 };
131
+ return { event: key("", "backspace", ch), consumed: 1 };
114
132
  if (code === 0x09)
115
- return { event: key('', 'tab', ch), consumed: 1 };
133
+ return { event: key("", "tab", ch), consumed: 1 };
116
134
  // Ctrl+A through Ctrl+Z (0x01 - 0x1a)
117
135
  if (code >= 0x01 && code <= 0x1a) {
118
136
  const letter = String.fromCharCode(code + 0x60); // 0x01 → 'a'
@@ -2,11 +2,11 @@
2
2
  * Layout engine — rasterizes application state into a CellGrid.
3
3
  * Split screen: messages area (top) + footer (bottom).
4
4
  */
5
- import type { Message } from '../types/message.js';
6
- import { CellGrid } from './cells.js';
5
+ import type { Message } from "../types/message.js";
6
+ import type { CellGrid } from "./cells.js";
7
7
  export type ToolCallInfo = {
8
8
  toolName: string;
9
- status: 'running' | 'done' | 'error';
9
+ status: "running" | "done" | "error";
10
10
  output?: string;
11
11
  args?: string;
12
12
  isAgent?: boolean;
@@ -35,7 +35,7 @@ export type LayoutState = {
35
35
  spinnerFrame: number;
36
36
  thinkingStartedAt: number | null;
37
37
  tokenCount: number;
38
- vimMode: 'normal' | 'insert' | null;
38
+ vimMode: "normal" | "insert" | null;
39
39
  permissionBox: {
40
40
  toolName: string;
41
41
  description: string;
@@ -43,7 +43,7 @@ export type LayoutState = {
43
43
  suggestion: string | null;
44
44
  } | null;
45
45
  permissionDiffVisible: boolean;
46
- permissionDiffInfo: import('./diff.js').DiffInfo | null;
46
+ permissionDiffInfo: import("./diff.js").DiffInfo | null;
47
47
  expandedToolCalls: Set<string>;
48
48
  questionPrompt: {
49
49
  question: string;
@@ -56,7 +56,7 @@ export type LayoutState = {
56
56
  autocompleteIndex: number;
57
57
  manualScroll: number;
58
58
  codeBlocksExpanded: boolean;
59
- sessionBrowser: import('./session-browser.js').SessionBrowserState | null;
59
+ sessionBrowser: import("./session-browser.js").SessionBrowserState | null;
60
60
  bannerLines: string[] | null;
61
61
  thinkingExpanded: boolean;
62
62
  lastThinkingSummary: string | null;