@spenceriam/impulse 0.15.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 (240) hide show
  1. package/README.md +194 -0
  2. package/dist/api/client.d.ts +53 -0
  3. package/dist/api/client.d.ts.map +1 -0
  4. package/dist/api/client.js +271 -0
  5. package/dist/api/client.js.map +1 -0
  6. package/dist/api/index.d.ts +6 -0
  7. package/dist/api/index.d.ts.map +1 -0
  8. package/dist/api/index.js +7 -0
  9. package/dist/api/index.js.map +1 -0
  10. package/dist/api/stream.d.ts +98 -0
  11. package/dist/api/stream.d.ts.map +1 -0
  12. package/dist/api/stream.js +202 -0
  13. package/dist/api/stream.js.map +1 -0
  14. package/dist/api/types.d.ts +1353 -0
  15. package/dist/api/types.d.ts.map +1 -0
  16. package/dist/api/types.js +143 -0
  17. package/dist/api/types.js.map +1 -0
  18. package/dist/bash.txt +28 -0
  19. package/dist/bus/bus.d.ts +21 -0
  20. package/dist/bus/bus.d.ts.map +1 -0
  21. package/dist/bus/bus.js +22 -0
  22. package/dist/bus/bus.js.map +1 -0
  23. package/dist/bus/events.d.ts +100 -0
  24. package/dist/bus/events.d.ts.map +1 -0
  25. package/dist/bus/events.js +45 -0
  26. package/dist/bus/events.js.map +1 -0
  27. package/dist/bus/index.d.ts +3 -0
  28. package/dist/bus/index.d.ts.map +1 -0
  29. package/dist/bus/index.js +3 -0
  30. package/dist/bus/index.js.map +1 -0
  31. package/dist/file-edit.txt +21 -0
  32. package/dist/file-read.txt +18 -0
  33. package/dist/file-write.txt +16 -0
  34. package/dist/glob.txt +19 -0
  35. package/dist/global.d.ts +8 -0
  36. package/dist/global.d.ts.map +1 -0
  37. package/dist/global.js +14 -0
  38. package/dist/global.js.map +1 -0
  39. package/dist/grep.txt +20 -0
  40. package/dist/highlights-eq9cgrbb.scm +604 -0
  41. package/dist/highlights-ghv9g403.scm +205 -0
  42. package/dist/highlights-hk7bwhj4.scm +284 -0
  43. package/dist/highlights-r812a2qc.scm +150 -0
  44. package/dist/highlights-x6tmsnaa.scm +115 -0
  45. package/dist/index.d.ts +2 -0
  46. package/dist/index.d.ts.map +1 -0
  47. package/dist/index.js +62122 -0
  48. package/dist/index.js.map +1 -0
  49. package/dist/index.jsx +5 -0
  50. package/dist/index.jsx.map +1 -0
  51. package/dist/injections-73j83es3.scm +27 -0
  52. package/dist/input/at-refs.d.ts +42 -0
  53. package/dist/input/at-refs.d.ts.map +1 -0
  54. package/dist/input/at-refs.js +154 -0
  55. package/dist/input/at-refs.js.map +1 -0
  56. package/dist/input/history.d.ts +26 -0
  57. package/dist/input/history.d.ts.map +1 -0
  58. package/dist/input/history.js +109 -0
  59. package/dist/input/history.js.map +1 -0
  60. package/dist/input/index.d.ts +5 -0
  61. package/dist/input/index.d.ts.map +1 -0
  62. package/dist/input/index.js +5 -0
  63. package/dist/input/index.js.map +1 -0
  64. package/dist/input/paste.d.ts +19 -0
  65. package/dist/input/paste.d.ts.map +1 -0
  66. package/dist/input/paste.js +75 -0
  67. package/dist/input/paste.js.map +1 -0
  68. package/dist/input/shortcuts.d.ts +6 -0
  69. package/dist/input/shortcuts.d.ts.map +1 -0
  70. package/dist/input/shortcuts.js +84 -0
  71. package/dist/input/shortcuts.js.map +1 -0
  72. package/dist/mcp/index.d.ts +3 -0
  73. package/dist/mcp/index.d.ts.map +1 -0
  74. package/dist/mcp/index.js +3 -0
  75. package/dist/mcp/index.js.map +1 -0
  76. package/dist/mcp/manager.d.ts +51 -0
  77. package/dist/mcp/manager.d.ts.map +1 -0
  78. package/dist/mcp/manager.js +158 -0
  79. package/dist/mcp/manager.js.map +1 -0
  80. package/dist/mcp/types.d.ts +18 -0
  81. package/dist/mcp/types.d.ts.map +1 -0
  82. package/dist/mcp/types.js +5 -0
  83. package/dist/mcp/types.js.map +1 -0
  84. package/dist/session/todo.d.ts +24 -0
  85. package/dist/session/todo.d.ts.map +1 -0
  86. package/dist/session/todo.js +39 -0
  87. package/dist/session/todo.js.map +1 -0
  88. package/dist/storage/index.d.ts +2 -0
  89. package/dist/storage/index.d.ts.map +1 -0
  90. package/dist/storage/index.js +2 -0
  91. package/dist/storage/index.js.map +1 -0
  92. package/dist/storage/storage.d.ts +13 -0
  93. package/dist/storage/storage.d.ts.map +1 -0
  94. package/dist/storage/storage.js +84 -0
  95. package/dist/storage/storage.js.map +1 -0
  96. package/dist/task.txt +26 -0
  97. package/dist/todo-read.txt +14 -0
  98. package/dist/todo-write.txt +166 -0
  99. package/dist/tools/bash.d.ts +22 -0
  100. package/dist/tools/bash.d.ts.map +1 -0
  101. package/dist/tools/bash.js +70 -0
  102. package/dist/tools/bash.js.map +1 -0
  103. package/dist/tools/file-edit.d.ts +22 -0
  104. package/dist/tools/file-edit.d.ts.map +1 -0
  105. package/dist/tools/file-edit.js +67 -0
  106. package/dist/tools/file-edit.js.map +1 -0
  107. package/dist/tools/file-read.d.ts +19 -0
  108. package/dist/tools/file-read.d.ts.map +1 -0
  109. package/dist/tools/file-read.js +70 -0
  110. package/dist/tools/file-read.js.map +1 -0
  111. package/dist/tools/file-write.d.ts +16 -0
  112. package/dist/tools/file-write.d.ts.map +1 -0
  113. package/dist/tools/file-write.js +45 -0
  114. package/dist/tools/file-write.js.map +1 -0
  115. package/dist/tools/glob.d.ts +16 -0
  116. package/dist/tools/glob.d.ts.map +1 -0
  117. package/dist/tools/glob.js +45 -0
  118. package/dist/tools/glob.js.map +1 -0
  119. package/dist/tools/grep.d.ts +19 -0
  120. package/dist/tools/grep.d.ts.map +1 -0
  121. package/dist/tools/grep.js +65 -0
  122. package/dist/tools/grep.js.map +1 -0
  123. package/dist/tools/index.d.ts +11 -0
  124. package/dist/tools/index.d.ts.map +1 -0
  125. package/dist/tools/index.js +11 -0
  126. package/dist/tools/index.js.map +1 -0
  127. package/dist/tools/registry.d.ts +22 -0
  128. package/dist/tools/registry.d.ts.map +1 -0
  129. package/dist/tools/registry.js +75 -0
  130. package/dist/tools/registry.js.map +1 -0
  131. package/dist/tools/task.d.ts +19 -0
  132. package/dist/tools/task.d.ts.map +1 -0
  133. package/dist/tools/task.js +51 -0
  134. package/dist/tools/task.js.map +1 -0
  135. package/dist/tools/todo-read.d.ts +7 -0
  136. package/dist/tools/todo-read.d.ts.map +1 -0
  137. package/dist/tools/todo-read.js +56 -0
  138. package/dist/tools/todo-read.js.map +1 -0
  139. package/dist/tools/todo-write.d.ts +38 -0
  140. package/dist/tools/todo-write.d.ts.map +1 -0
  141. package/dist/tools/todo-write.js +40 -0
  142. package/dist/tools/todo-write.js.map +1 -0
  143. package/dist/tree-sitter-javascript-nd0q4pe9.wasm +0 -0
  144. package/dist/tree-sitter-markdown-411r6y9b.wasm +0 -0
  145. package/dist/tree-sitter-markdown_inline-j5349f42.wasm +0 -0
  146. package/dist/tree-sitter-typescript-zxjzwt75.wasm +0 -0
  147. package/dist/tree-sitter-zig-e78zbjpm.wasm +0 -0
  148. package/dist/ui/App.d.ts +6 -0
  149. package/dist/ui/App.d.ts.map +1 -0
  150. package/dist/ui/App.jsx +37 -0
  151. package/dist/ui/App.jsx.map +1 -0
  152. package/dist/ui/components/Autocomplete.d.ts +24 -0
  153. package/dist/ui/components/Autocomplete.d.ts.map +1 -0
  154. package/dist/ui/components/Autocomplete.jsx +67 -0
  155. package/dist/ui/components/Autocomplete.jsx.map +1 -0
  156. package/dist/ui/components/ChatView.d.ts +14 -0
  157. package/dist/ui/components/ChatView.d.ts.map +1 -0
  158. package/dist/ui/components/ChatView.jsx +11 -0
  159. package/dist/ui/components/ChatView.jsx.map +1 -0
  160. package/dist/ui/components/InputArea.d.ts +18 -0
  161. package/dist/ui/components/InputArea.d.ts.map +1 -0
  162. package/dist/ui/components/InputArea.jsx +35 -0
  163. package/dist/ui/components/InputArea.jsx.map +1 -0
  164. package/dist/ui/components/MessageBlock.d.ts +21 -0
  165. package/dist/ui/components/MessageBlock.d.ts.map +1 -0
  166. package/dist/ui/components/MessageBlock.jsx +94 -0
  167. package/dist/ui/components/MessageBlock.jsx.map +1 -0
  168. package/dist/ui/components/Overlay.d.ts +28 -0
  169. package/dist/ui/components/Overlay.d.ts.map +1 -0
  170. package/dist/ui/components/Overlay.jsx +102 -0
  171. package/dist/ui/components/Overlay.jsx.map +1 -0
  172. package/dist/ui/components/ProgressBar.d.ts +9 -0
  173. package/dist/ui/components/ProgressBar.d.ts.map +1 -0
  174. package/dist/ui/components/ProgressBar.jsx +17 -0
  175. package/dist/ui/components/ProgressBar.jsx.map +1 -0
  176. package/dist/ui/components/Sidebar.d.ts +22 -0
  177. package/dist/ui/components/Sidebar.d.ts.map +1 -0
  178. package/dist/ui/components/Sidebar.jsx +96 -0
  179. package/dist/ui/components/Sidebar.jsx.map +1 -0
  180. package/dist/ui/components/StatusLine.d.ts +6 -0
  181. package/dist/ui/components/StatusLine.d.ts.map +1 -0
  182. package/dist/ui/components/StatusLine.jsx +32 -0
  183. package/dist/ui/components/StatusLine.jsx.map +1 -0
  184. package/dist/ui/components/ThinkingBlock.d.ts +15 -0
  185. package/dist/ui/components/ThinkingBlock.d.ts.map +1 -0
  186. package/dist/ui/components/ThinkingBlock.jsx +33 -0
  187. package/dist/ui/components/ThinkingBlock.jsx.map +1 -0
  188. package/dist/ui/components/TodoItem.d.ts +22 -0
  189. package/dist/ui/components/TodoItem.d.ts.map +1 -0
  190. package/dist/ui/components/TodoItem.jsx +11 -0
  191. package/dist/ui/components/TodoItem.jsx.map +1 -0
  192. package/dist/ui/components/ToolBlock.d.ts +27 -0
  193. package/dist/ui/components/ToolBlock.d.ts.map +1 -0
  194. package/dist/ui/components/ToolBlock.jsx +76 -0
  195. package/dist/ui/components/ToolBlock.jsx.map +1 -0
  196. package/dist/ui/components/index.d.ts +12 -0
  197. package/dist/ui/components/index.d.ts.map +1 -0
  198. package/dist/ui/components/index.js +12 -0
  199. package/dist/ui/components/index.js.map +1 -0
  200. package/dist/ui/context/index.d.ts +4 -0
  201. package/dist/ui/context/index.d.ts.map +1 -0
  202. package/dist/ui/context/index.js +4 -0
  203. package/dist/ui/context/index.js.map +1 -0
  204. package/dist/ui/context/mode.d.ts +24 -0
  205. package/dist/ui/context/mode.d.ts.map +1 -0
  206. package/dist/ui/context/mode.jsx +53 -0
  207. package/dist/ui/context/mode.jsx.map +1 -0
  208. package/dist/ui/context/session.d.ts +43 -0
  209. package/dist/ui/context/session.d.ts.map +1 -0
  210. package/dist/ui/context/session.jsx +63 -0
  211. package/dist/ui/context/session.jsx.map +1 -0
  212. package/dist/ui/context/todo.d.ts +32 -0
  213. package/dist/ui/context/todo.d.ts.map +1 -0
  214. package/dist/ui/context/todo.jsx +75 -0
  215. package/dist/ui/context/todo.jsx.map +1 -0
  216. package/dist/ui/design.d.ts +182 -0
  217. package/dist/ui/design.d.ts.map +1 -0
  218. package/dist/ui/design.js +189 -0
  219. package/dist/ui/design.js.map +1 -0
  220. package/dist/ui/index.d.ts +4 -0
  221. package/dist/ui/index.d.ts.map +1 -0
  222. package/dist/ui/index.js +3 -0
  223. package/dist/ui/index.js.map +1 -0
  224. package/dist/util/config.d.ts +22 -0
  225. package/dist/util/config.d.ts.map +1 -0
  226. package/dist/util/config.js +55 -0
  227. package/dist/util/config.js.map +1 -0
  228. package/dist/util/instructions.d.ts +39 -0
  229. package/dist/util/instructions.d.ts.map +1 -0
  230. package/dist/util/instructions.js +96 -0
  231. package/dist/util/instructions.js.map +1 -0
  232. package/dist/util/lock.d.ts +18 -0
  233. package/dist/util/lock.d.ts.map +1 -0
  234. package/dist/util/lock.js +65 -0
  235. package/dist/util/lock.js.map +1 -0
  236. package/dist/util/logger.d.ts +8 -0
  237. package/dist/util/logger.d.ts.map +1 -0
  238. package/dist/util/logger.js +81 -0
  239. package/dist/util/logger.js.map +1 -0
  240. package/package.json +64 -0
@@ -0,0 +1,14 @@
1
+ import { type Message } from "./MessageBlock";
2
+ /**
3
+ * Chat View Component
4
+ * Scrollable message list with auto-scroll support
5
+ *
6
+ * Props:
7
+ * - messages: Array of messages to display
8
+ */
9
+ interface ChatViewProps {
10
+ messages?: Message[];
11
+ }
12
+ export declare function ChatView(props: ChatViewProps): any;
13
+ export {};
14
+ //# sourceMappingURL=ChatView.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ChatView.d.ts","sourceRoot":"","sources":["../../../src/ui/components/ChatView.tsx"],"names":[],"mappings":"AACA,OAAO,EAAgB,KAAK,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAE5D;;;;;;GAMG;AAEH,UAAU,aAAa;IACrB,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAC;CACtB;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,aAAa,OAU5C"}
@@ -0,0 +1,11 @@
1
+ import { For } from "solid-js";
2
+ import { MessageBlock } from "./MessageBlock";
3
+ export function ChatView(props) {
4
+ const messages = () => props.messages ?? [];
5
+ return (<scrollbox height="100%" focused>
6
+ <For each={messages()}>
7
+ {(message) => <MessageBlock message={message}/>}
8
+ </For>
9
+ </scrollbox>);
10
+ }
11
+ //# sourceMappingURL=ChatView.jsx.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ChatView.jsx","sourceRoot":"","sources":["../../../src/ui/components/ChatView.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAC/B,OAAO,EAAE,YAAY,EAAgB,MAAM,gBAAgB,CAAC;AAc5D,MAAM,UAAU,QAAQ,CAAC,KAAoB;IAC3C,MAAM,QAAQ,GAAG,GAAG,EAAE,CAAC,KAAK,CAAC,QAAQ,IAAI,EAAE,CAAC;IAE5C,OAAO,CACL,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAC9B;MAAA,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC,CACpB;QAAA,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,EAAG,CAClD;MAAA,EAAE,GAAG,CACP;IAAA,EAAE,SAAS,CAAC,CACb,CAAC;AACJ,CAAC"}
@@ -0,0 +1,18 @@
1
+ import { Mode } from "../design";
2
+ /**
3
+ * Input Area Component
4
+ * Boxed input with mode in title, ghost text, and multi-line support
5
+ *
6
+ * Props:
7
+ * - mode: Current mode (AUTO, AGENT, PLANNER, PLAN-PRD, DEBUG)
8
+ * - thinking: Whether thinking mode is enabled
9
+ * - onSubmit: Callback when user presses Enter to submit
10
+ */
11
+ interface InputAreaProps {
12
+ mode: Mode;
13
+ thinking: boolean;
14
+ onSubmit?: (value: string) => void;
15
+ }
16
+ export declare function InputArea(props: InputAreaProps): any;
17
+ export {};
18
+ //# sourceMappingURL=InputArea.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InputArea.d.ts","sourceRoot":"","sources":["../../../src/ui/components/InputArea.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAU,IAAI,EAAU,MAAM,WAAW,CAAC;AAEjD;;;;;;;;GAQG;AAEH,UAAU,cAAc;IACtB,IAAI,EAAE,IAAI,CAAC;IACX,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACpC;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,cAAc,OAgD9C"}
@@ -0,0 +1,35 @@
1
+ import { createSignal, Show } from "solid-js";
2
+ import { useKeyboard } from "@opentui/solid";
3
+ import { Colors, Layout } from "../design";
4
+ export function InputArea(props) {
5
+ const [value, setValue] = createSignal("");
6
+ const ghostText = "What are we building, breaking, or making better?";
7
+ useKeyboard((key) => {
8
+ if (key.name === "enter" && !key.shift) {
9
+ if (value().trim()) {
10
+ props.onSubmit?.(value());
11
+ setValue("");
12
+ }
13
+ }
14
+ });
15
+ const title = () => {
16
+ const thinkingSuffix = props.thinking ? " (Thinking)" : "";
17
+ return `${props.mode}${thinkingSuffix}`;
18
+ };
19
+ return (<box border title={title()} titleAlignment="left" flexDirection="column" padding={1}>
20
+ <box flexDirection="column">
21
+ <box flexDirection="row">
22
+ <text fg={Colors.ui.dim}>{">"} </text>
23
+ <textarea
24
+ // @ts-expect-error: OpenTUI types incomplete for SolidJS
25
+ value={value()} onInput={setValue} placeholder="" width={-1} height={Layout.input.maxHeight - 2} focused/>
26
+ </box>
27
+ <Show when={!value()}>
28
+ <text fg={Colors.ui.dim}>
29
+ {" "}{ghostText}
30
+ </text>
31
+ </Show>
32
+ </box>
33
+ </box>);
34
+ }
35
+ //# sourceMappingURL=InputArea.jsx.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InputArea.jsx","sourceRoot":"","sources":["../../../src/ui/components/InputArea.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,MAAM,EAAQ,MAAM,EAAE,MAAM,WAAW,CAAC;AAkBjD,MAAM,UAAU,SAAS,CAAC,KAAqB;IAC7C,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,YAAY,CAAC,EAAE,CAAC,CAAC;IAE3C,MAAM,SAAS,GAAG,mDAAmD,CAAC;IAEtE,WAAW,CAAC,CAAC,GAAG,EAAE,EAAE;QAClB,IAAI,GAAG,CAAC,IAAI,KAAK,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;YACvC,IAAI,KAAK,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC;gBACnB,KAAK,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;gBAC1B,QAAQ,CAAC,EAAE,CAAC,CAAC;YACf,CAAC;QACH,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,MAAM,KAAK,GAAG,GAAG,EAAE;QACjB,MAAM,cAAc,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3D,OAAO,GAAG,KAAK,CAAC,IAAI,GAAG,cAAc,EAAE,CAAC;IAC1C,CAAC,CAAC;IAEF,OAAO,CACL,CAAC,GAAG,CACF,MAAM,CACN,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC,CACf,cAAc,CAAC,MAAM,CACrB,aAAa,CAAC,QAAQ,CACtB,OAAO,CAAC,CAAC,CAAC,CAAC,CAEX;MAAA,CAAC,GAAG,CAAC,aAAa,CAAC,QAAQ,CACzB;QAAA,CAAC,GAAG,CAAC,aAAa,CAAC,KAAK,CACtB;UAAA,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAE,CAAA,EAAE,IAAI,CACrC;UAAA,CAAC,QAAQ;IACP,yDAAyD;IACzD,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC,CACf,OAAO,CAAC,CAAC,QAAQ,CAAC,CAClB,WAAW,CAAC,EAAE,CACd,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CACV,MAAM,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC,CACnC,OAAO,EAEX;QAAA,EAAE,GAAG,CACL;QAAA,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CACnB;UAAA,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,CACtB;YAAA,CAAC,IAAI,CAAC,CAAC,SAAS,CAClB;UAAA,EAAE,IAAI,CACR;QAAA,EAAE,IAAI,CACR;MAAA,EAAE,GAAG,CACP;IAAA,EAAE,GAAG,CAAC,CACP,CAAC;AACJ,CAAC"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Message type
3
+ */
4
+ export interface Message {
5
+ id: string;
6
+ role: "user" | "assistant";
7
+ content: string;
8
+ }
9
+ /**
10
+ * Message Block Component
11
+ * Message display with role-based styling and markdown rendering
12
+ *
13
+ * Props:
14
+ * - message: Message to display
15
+ */
16
+ interface MessageBlockProps {
17
+ message: Message;
18
+ }
19
+ export declare function MessageBlock(props: MessageBlockProps): any;
20
+ export {};
21
+ //# sourceMappingURL=MessageBlock.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MessageBlock.d.ts","sourceRoot":"","sources":["../../../src/ui/components/MessageBlock.tsx"],"names":[],"mappings":"AAGA;;GAEG;AACH,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,GAAG,WAAW,CAAC;IAC3B,OAAO,EAAE,MAAM,CAAC;CACjB;AAqGD;;;;;;GAMG;AAEH,UAAU,iBAAiB;IACzB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,iBAAiB,OAsBpD"}
@@ -0,0 +1,94 @@
1
+ import { For } from "solid-js";
2
+ import { Colors } from "../design";
3
+ /**
4
+ * Simple markdown parser
5
+ * Supports: **bold**, `code`, - lists
6
+ */
7
+ function parseMarkdown(text) {
8
+ const nodes = [];
9
+ const lines = text.split("\n");
10
+ for (const line of lines) {
11
+ const trimmed = line.trim();
12
+ // Code block
13
+ if (trimmed.startsWith("```")) {
14
+ const parts = trimmed.split(" ");
15
+ const language = parts[1]?.trim() || "text";
16
+ nodes.push({ type: "code", content: "", language });
17
+ continue;
18
+ }
19
+ // List item
20
+ if (trimmed.startsWith("- ")) {
21
+ const lastNode = nodes[nodes.length - 1];
22
+ if (lastNode && lastNode.type === "list") {
23
+ lastNode.items.push(trimmed.slice(2));
24
+ }
25
+ else {
26
+ nodes.push({ type: "list", items: [trimmed.slice(2)] });
27
+ }
28
+ continue;
29
+ }
30
+ // Bold text (**text**)
31
+ const boldMatch = trimmed.match(/\*\*(.*?)\*\*/);
32
+ if (boldMatch && boldMatch[1]) {
33
+ nodes.push({ type: "bold", content: boldMatch[1] });
34
+ continue;
35
+ }
36
+ // Inline code (`code`)
37
+ const codeMatch = trimmed.match(/`(.*?)`/);
38
+ if (codeMatch && codeMatch[1]) {
39
+ nodes.push({ type: "code", content: codeMatch[1], language: "text" });
40
+ continue;
41
+ }
42
+ // Plain text
43
+ nodes.push({ type: "text", content: line });
44
+ }
45
+ return nodes;
46
+ }
47
+ /**
48
+ * Render markdown node
49
+ */
50
+ function renderMarkdownNode(node) {
51
+ switch (node.type) {
52
+ case "text":
53
+ return <text>{node.content}</text>;
54
+ case "bold":
55
+ return (<text>
56
+ <strong>{node.content}</strong>
57
+ </text>);
58
+ case "code":
59
+ return (<code
60
+ // @ts-ignore: OpenTUI types incomplete for SolidJS
61
+ code={node.content} language={node.language}/>);
62
+ case "list":
63
+ return (<box flexDirection="column">
64
+ <For each={node.items}>
65
+ {(item) => (<box flexDirection="row">
66
+ <text fg={Colors.ui.dim}>• </text>
67
+ <text>{item}</text>
68
+ </box>)}
69
+ </For>
70
+ </box>);
71
+ default:
72
+ return null;
73
+ }
74
+ }
75
+ export function MessageBlock(props) {
76
+ const parsed = () => parseMarkdown(props.message.content);
77
+ const isUser = () => props.message.role === "user";
78
+ return (<box flexDirection="column" marginBottom={2}>
79
+ <box flexDirection="row" marginBottom={1}>
80
+ <text>
81
+ <strong>
82
+ {isUser() ? "You" : "GLM-4.7"}
83
+ </strong>
84
+ </text>
85
+ <text fg={Colors.ui.dim}> ─── </text>
86
+ </box>
87
+ <box flexDirection="column">
88
+ <For each={parsed()}>
89
+ {(node) => renderMarkdownNode(node)}
90
+ </For>
91
+ </box>
92
+ </box>);
93
+ }
94
+ //# sourceMappingURL=MessageBlock.jsx.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MessageBlock.jsx","sourceRoot":"","sources":["../../../src/ui/components/MessageBlock.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Overlay mode
3
+ */
4
+ export type OverlayMode = "command-palette" | "mcp-status" | "session-stats" | "help" | "config" | null;
5
+ /**
6
+ * Command option for palette
7
+ */
8
+ export interface CommandOption {
9
+ name: string;
10
+ description: string;
11
+ shortcut?: string;
12
+ action: () => void;
13
+ }
14
+ /**
15
+ * Overlay Props
16
+ */
17
+ interface OverlayProps {
18
+ mode: OverlayMode;
19
+ onClose: () => void;
20
+ commands?: CommandOption[];
21
+ }
22
+ /**
23
+ * Overlay Component
24
+ * Modal overlay for commands, dialogs, and informational displays
25
+ */
26
+ export declare function Overlay(props: OverlayProps): any;
27
+ export {};
28
+ //# sourceMappingURL=Overlay.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Overlay.d.ts","sourceRoot":"","sources":["../../../src/ui/components/Overlay.tsx"],"names":[],"mappings":"AAIA;;GAEG;AACH,MAAM,MAAM,WAAW,GACnB,iBAAiB,GACjB,YAAY,GACZ,eAAe,GACf,MAAM,GACN,QAAQ,GACR,IAAI,CAAC;AAET;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,IAAI,CAAC;CACpB;AAED;;GAEG;AACH,UAAU,YAAY;IACpB,IAAI,EAAE,WAAW,CAAC;IAClB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,QAAQ,CAAC,EAAE,aAAa,EAAE,CAAC;CAC5B;AAED;;;GAGG;AACH,wBAAgB,OAAO,CAAC,KAAK,EAAE,YAAY,OA6H1C"}
@@ -0,0 +1,102 @@
1
+ import { createSignal, Show, For } from "solid-js";
2
+ import { useKeyboard } from "@opentui/solid";
3
+ import { Colors } from "../design";
4
+ /**
5
+ * Overlay Component
6
+ * Modal overlay for commands, dialogs, and informational displays
7
+ */
8
+ export function Overlay(props) {
9
+ const [selectedIndex, setSelectedIndex] = createSignal(0);
10
+ useKeyboard((key) => {
11
+ if (key.name === "escape") {
12
+ props.onClose();
13
+ }
14
+ });
15
+ const handleSelect = (index) => {
16
+ setSelectedIndex(index);
17
+ props.commands?.[index]?.action();
18
+ };
19
+ const renderContent = () => {
20
+ switch (props.mode) {
21
+ case "command-palette":
22
+ return (<box flexDirection="column">
23
+ <text><strong>Command Palette</strong></text>
24
+ <text>────────────────</text>
25
+ <Show when={props.commands && props.commands.length > 0}>
26
+ <box flexDirection="column" marginTop={1}>
27
+ <For each={props.commands}>
28
+ {(cmd, i) => (<box flexDirection="row"
29
+ // @ts-ignore: OpenTUI types incomplete
30
+ onMouseDown={() => handleSelect(i())}>
31
+ <text fg={i() === selectedIndex() ? Colors.ui.primary : Colors.ui.text}>
32
+ {i() === selectedIndex() ? ">" : " "}
33
+ </text>
34
+ <text>{cmd.name}</text>
35
+ <text fg={Colors.ui.dim}> - {cmd.description}</text>
36
+ <Show when={cmd.shortcut}>
37
+ <box flexGrow={1}/>
38
+ <text fg={Colors.ui.dim}>({cmd.shortcut})</text>
39
+ </Show>
40
+ </box>)}
41
+ </For>
42
+ </box>
43
+ </Show>
44
+ </box>);
45
+ case "mcp-status":
46
+ return (<box flexDirection="column">
47
+ <text><strong>MCP Status</strong></text>
48
+ <text>─────────────</text>
49
+ <box flexDirection="column" marginTop={1}>
50
+ <text fg={Colors.status.success}>Vision: Connected</text>
51
+ <text fg={Colors.status.success}>Web Search: Connected</text>
52
+ <text fg={Colors.status.success}>Web Reader: Connected</text>
53
+ <text fg={Colors.status.success}>Zread: Connected</text>
54
+ </box>
55
+ </box>);
56
+ case "session-stats":
57
+ return (<box flexDirection="column">
58
+ <text><strong>Session Statistics</strong></text>
59
+ <text>───────────────────────</text>
60
+ <box flexDirection="column" marginTop={1}>
61
+ <text>Messages: 5</text>
62
+ <text>Tokens: 8,450</text>
63
+ <text>Cost: $0.12</text>
64
+ <text>Duration: 12m 34s</text>
65
+ </box>
66
+ </box>);
67
+ case "help":
68
+ return (<box flexDirection="column">
69
+ <text><strong>Keyboard Shortcuts</strong></text>
70
+ <text>───────────────────────</text>
71
+ <box flexDirection="column" marginTop={1}>
72
+ <text>Tab - Cycle modes</text>
73
+ <text>Shift+Tab - Reverse cycle modes</text>
74
+ <text>Enter - Submit / Select</text>
75
+ <text>Esc (2x) - Cancel operation</text>
76
+ <text>Ctrl+C (2x) - Exit</text>
77
+ <text>Ctrl+P - Command palette</text>
78
+ <text>Ctrl+M - MCP status</text>
79
+ </box>
80
+ </box>);
81
+ default:
82
+ return <text>Unknown overlay mode</text>;
83
+ }
84
+ };
85
+ return (<Show when={props.mode !== null}>
86
+ <box flexDirection="column" width="100%" height="100%"
87
+ // @ts-ignore: OpenTUI types incomplete
88
+ style={{
89
+ backgroundColor: "rgba(0, 0, 0, 0.8)",
90
+ }} padding={4}>
91
+ <box border flexDirection="column" padding={2} width={50}
92
+ // @ts-ignore: OpenTUI types incomplete
93
+ style={{
94
+ backgroundColor: "#000000",
95
+ }}>
96
+ <text fg={Colors.ui.dim}>(Esc to close)</text>
97
+ {renderContent()}
98
+ </box>
99
+ </box>
100
+ </Show>);
101
+ }
102
+ //# sourceMappingURL=Overlay.jsx.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Overlay.jsx","sourceRoot":"","sources":["../../../src/ui/components/Overlay.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Progress Bar Component
3
+ * Displays context usage as a visual progress bar
4
+ */
5
+ export declare function ProgressBar(props: {
6
+ percent: number;
7
+ width?: number;
8
+ }): any;
9
+ //# sourceMappingURL=ProgressBar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProgressBar.d.ts","sourceRoot":"","sources":["../../../src/ui/components/ProgressBar.tsx"],"names":[],"mappings":"AAEA;;;GAGG;AAEH,wBAAgB,WAAW,CAAC,KAAK,EAAE;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,OAarE"}
@@ -0,0 +1,17 @@
1
+ import { Indicators } from "../design";
2
+ /**
3
+ * Progress Bar Component
4
+ * Displays context usage as a visual progress bar
5
+ */
6
+ export function ProgressBar(props) {
7
+ const width = props.width ?? 10;
8
+ const filled = Math.round((props.percent / 100) * width);
9
+ const empty = width - filled;
10
+ return (<text>
11
+ <text>[</text>
12
+ <text>{Indicators.progress.filled.repeat(filled)}</text>
13
+ <text>{Indicators.progress.empty.repeat(empty)}</text>
14
+ <text>] {props.percent}%</text>
15
+ </text>);
16
+ }
17
+ //# sourceMappingURL=ProgressBar.jsx.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProgressBar.jsx","sourceRoot":"","sources":["../../../src/ui/components/ProgressBar.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAEvC;;;GAGG;AAEH,MAAM,UAAU,WAAW,CAAC,KAA0C;IACpE,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC;IAChC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,OAAO,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC;IACzD,MAAM,KAAK,GAAG,KAAK,GAAG,MAAM,CAAC;IAE7B,OAAO,CACL,CAAC,IAAI,CACH;MAAA,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CACb;MAAA,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CACvD;MAAA,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CACrD;MAAA,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,IAAI,CAChC;IAAA,EAAE,IAAI,CAAC,CACR,CAAC;AACJ,CAAC"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Sidebar Panel Component
3
+ * Right sidebar with session info, todos, MCP status
4
+ *
5
+ * Props: None (uses props for extensibility)
6
+ */
7
+ interface SidebarProps {
8
+ messages?: {
9
+ id: string;
10
+ content: string;
11
+ }[];
12
+ todos?: {
13
+ id: string;
14
+ content: string;
15
+ status: string;
16
+ }[];
17
+ contextUsage?: number;
18
+ cost?: number;
19
+ }
20
+ export declare function Sidebar(props?: SidebarProps): any;
21
+ export {};
22
+ //# sourceMappingURL=Sidebar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Sidebar.d.ts","sourceRoot":"","sources":["../../../src/ui/components/Sidebar.tsx"],"names":[],"mappings":"AAGA;;;;;GAKG;AAEH,UAAU,YAAY;IACpB,QAAQ,CAAC,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAC7C,KAAK,CAAC,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAC1D,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,wBAAgB,OAAO,CAAC,KAAK,GAAE,YAAiB,OA8G/C"}
@@ -0,0 +1,96 @@
1
+ import { createSignal, Show, For } from "solid-js";
2
+ import { Colors, Indicators, Layout } from "../design";
3
+ export function Sidebar(props = {}) {
4
+ const [mcpExpanded, setMcpExpanded] = createSignal(false);
5
+ const [todoExpanded, setTodoExpanded] = createSignal(false);
6
+ const [filesExpanded, setFilesExpanded] = createSignal(false);
7
+ const hasTodos = () => (props.todos?.length ?? 0) > 0;
8
+ const incompleteTodos = () => props.todos?.filter(t => t.status !== "completed") ?? [];
9
+ const shouldShowTodo = () => !!(hasTodos() && incompleteTodos().length > 0);
10
+ const contextUsage = () => props.contextUsage ?? 0;
11
+ const cost = () => props.cost ?? 0;
12
+ return (<box border width={Layout.sidebar.width} flexDirection="column" padding={1}>
13
+ {/* Session Info */}
14
+ <box flexDirection="column" marginBottom={2}>
15
+ <text><strong>Session</strong></text>
16
+ <text>──────────</text>
17
+ </box>
18
+
19
+ {/* Context Usage */}
20
+ <Show when={props.contextUsage !== undefined}>
21
+ <box flexDirection="column" marginBottom={2}>
22
+ <text fg={Colors.ui.dim}>Context:</text>
23
+ <text>
24
+ {contextUsage()}% ({(contextUsage() / 100 * 200).toFixed(0)}k/200k)
25
+ </text>
26
+ <Show when={props.cost !== undefined}>
27
+ <text fg={Colors.ui.dim}>Cost: ${cost().toFixed(2)}</text>
28
+ </Show>
29
+ </box>
30
+ </Show>
31
+
32
+ {/* Todo Section */}
33
+ <Show when={shouldShowTodo()}>
34
+ <box flexDirection="column" marginBottom={2}>
35
+ <box flexDirection="row"
36
+ // @ts-ignore: OpenTUI types incomplete
37
+ onMouseDown={() => setTodoExpanded((e) => !e)}>
38
+ <text fg={Colors.ui.dim}>
39
+ {todoExpanded() ? Indicators.expanded : Indicators.collapsed}{" "}
40
+ </text>
41
+ <text><strong>Todo</strong></text>
42
+ <text fg={Colors.ui.dim}> ({incompleteTodos().length})</text>
43
+ </box>
44
+ <Show when={todoExpanded()}>
45
+ <box flexDirection="column" marginLeft={1} marginTop={1}>
46
+ <For each={incompleteTodos()}>
47
+ {(todo) => (<text fg={Colors.ui.dim}>
48
+ [ ] {todo.content}
49
+ </text>)}
50
+ </For>
51
+ </box>
52
+ </Show>
53
+ </box>
54
+ </Show>
55
+
56
+ {/* MCP Section */}
57
+ <box flexDirection="column" marginBottom={2}>
58
+ <box flexDirection="row"
59
+ // @ts-ignore: OpenTUI types incomplete
60
+ onMouseDown={() => setMcpExpanded((e) => !e)}>
61
+ <text fg={Colors.ui.dim}>
62
+ {mcpExpanded() ? Indicators.expanded : Indicators.collapsed}{" "}
63
+ </text>
64
+ <text><strong>MCPs</strong></text>
65
+ <text fg={Colors.status.success}> 4/4</text>
66
+ </box>
67
+ <Show when={mcpExpanded()}>
68
+ <box flexDirection="column" marginLeft={1} marginTop={1}>
69
+ <text fg={Colors.ui.dim}> Vision - Connected</text>
70
+ <text fg={Colors.ui.dim}> Web Search - Connected</text>
71
+ <text fg={Colors.ui.dim}> Web Reader - Connected</text>
72
+ <text fg={Colors.ui.dim}> Zread - Connected</text>
73
+ </box>
74
+ </Show>
75
+ </box>
76
+
77
+ {/* Modified Files Section */}
78
+ <box flexDirection="column">
79
+ <box flexDirection="row"
80
+ // @ts-ignore: OpenTUI types incomplete
81
+ onMouseDown={() => setFilesExpanded((e) => !e)}>
82
+ <text fg={Colors.ui.dim}>
83
+ {filesExpanded() ? Indicators.expanded : Indicators.collapsed}{" "}
84
+ </text>
85
+ <text><strong>Modified Files</strong></text>
86
+ </box>
87
+ <Show when={filesExpanded()}>
88
+ <box flexDirection="column" marginLeft={1} marginTop={1}>
89
+ <text fg={Colors.ui.dim}> src/ui/App.tsx</text>
90
+ <text fg={Colors.ui.dim}> src/ui/components/InputArea.tsx</text>
91
+ </box>
92
+ </Show>
93
+ </box>
94
+ </box>);
95
+ }
96
+ //# sourceMappingURL=Sidebar.jsx.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Sidebar.jsx","sourceRoot":"","sources":["../../../src/ui/components/Sidebar.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Status Line Component
3
+ * Bottom status bar with comprehensive information display
4
+ */
5
+ export declare function StatusLine(): any;
6
+ //# sourceMappingURL=StatusLine.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StatusLine.d.ts","sourceRoot":"","sources":["../../../src/ui/components/StatusLine.tsx"],"names":[],"mappings":"AAEA;;;GAGG;AAEH,wBAAgB,UAAU,QA4BzB"}
@@ -0,0 +1,32 @@
1
+ import { ProgressBar } from "./ProgressBar";
2
+ /**
3
+ * Status Line Component
4
+ * Bottom status bar with comprehensive information display
5
+ */
6
+ export function StatusLine() {
7
+ const model = "GLM-4.7";
8
+ const mode = "AUTO";
9
+ const progress = 0;
10
+ const dir = "~/glm-cli";
11
+ const branch = "main";
12
+ const mcpStatus = "4/4";
13
+ const date = "01-20-2026";
14
+ return (<box border height={1} padding={1}>
15
+ <text>
16
+ <span>{model}</span>
17
+ <span> │ </span>
18
+ <span>{mode}</span>
19
+ <span> │ </span>
20
+ <ProgressBar percent={progress} width={8}/>
21
+ <span> │ </span>
22
+ <span>{dir}</span>
23
+ <span> │ </span>
24
+ <span>{branch}</span>
25
+ <span> │ MCPs: </span>
26
+ <span>{mcpStatus}</span>
27
+ <span> │ </span>
28
+ <span>{date}</span>
29
+ </text>
30
+ </box>);
31
+ }
32
+ //# sourceMappingURL=StatusLine.jsx.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StatusLine.jsx","sourceRoot":"","sources":["../../../src/ui/components/StatusLine.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C;;;GAGG;AAEH,MAAM,UAAU,UAAU;IACxB,MAAM,KAAK,GAAG,SAAS,CAAC;IACxB,MAAM,IAAI,GAAG,MAAM,CAAC;IACpB,MAAM,QAAQ,GAAG,CAAC,CAAC;IACnB,MAAM,GAAG,GAAG,WAAW,CAAC;IACxB,MAAM,MAAM,GAAG,MAAM,CAAC;IACtB,MAAM,SAAS,GAAG,KAAK,CAAC;IACxB,MAAM,IAAI,GAAG,YAAY,CAAC;IAE1B,OAAO,CACL,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAChC;MAAA,CAAC,IAAI,CACH;QAAA,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,EAAE,IAAI,CACnB;QAAA,CAAC,IAAI,CAAE,GAAE,EAAE,IAAI,CACf;QAAA,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,IAAI,CAClB;QAAA,CAAC,IAAI,CAAE,GAAE,EAAE,IAAI,CACf;QAAA,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EACzC;QAAA,CAAC,IAAI,CAAE,GAAE,EAAE,IAAI,CACf;QAAA,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,CACjB;QAAA,CAAC,IAAI,CAAE,GAAE,EAAE,IAAI,CACf;QAAA,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,CACpB;QAAA,CAAC,IAAI,CAAE,SAAQ,EAAE,IAAI,CACrB;QAAA,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,EAAE,IAAI,CACvB;QAAA,CAAC,IAAI,CAAE,GAAE,EAAE,IAAI,CACf;QAAA,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,IAAI,CACpB;MAAA,EAAE,IAAI,CACR;IAAA,EAAE,GAAG,CAAC,CACP,CAAC;AACJ,CAAC"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Thinking Block Component
3
+ * Collapsible thinking display with "Thinking..." label
4
+ *
5
+ * Props:
6
+ * - content: Thinking content to display
7
+ * - streaming: Whether content is currently being streamed
8
+ */
9
+ interface ThinkingBlockProps {
10
+ content?: string;
11
+ streaming?: boolean;
12
+ }
13
+ export declare function ThinkingBlock(props: ThinkingBlockProps): any;
14
+ export {};
15
+ //# sourceMappingURL=ThinkingBlock.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ThinkingBlock.d.ts","sourceRoot":"","sources":["../../../src/ui/components/ThinkingBlock.tsx"],"names":[],"mappings":"AAIA;;;;;;;GAOG;AAEH,UAAU,kBAAkB;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,kBAAkB,OAqCtD"}