@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.
- package/README.md +194 -0
- package/dist/api/client.d.ts +53 -0
- package/dist/api/client.d.ts.map +1 -0
- package/dist/api/client.js +271 -0
- package/dist/api/client.js.map +1 -0
- package/dist/api/index.d.ts +6 -0
- package/dist/api/index.d.ts.map +1 -0
- package/dist/api/index.js +7 -0
- package/dist/api/index.js.map +1 -0
- package/dist/api/stream.d.ts +98 -0
- package/dist/api/stream.d.ts.map +1 -0
- package/dist/api/stream.js +202 -0
- package/dist/api/stream.js.map +1 -0
- package/dist/api/types.d.ts +1353 -0
- package/dist/api/types.d.ts.map +1 -0
- package/dist/api/types.js +143 -0
- package/dist/api/types.js.map +1 -0
- package/dist/bash.txt +28 -0
- package/dist/bus/bus.d.ts +21 -0
- package/dist/bus/bus.d.ts.map +1 -0
- package/dist/bus/bus.js +22 -0
- package/dist/bus/bus.js.map +1 -0
- package/dist/bus/events.d.ts +100 -0
- package/dist/bus/events.d.ts.map +1 -0
- package/dist/bus/events.js +45 -0
- package/dist/bus/events.js.map +1 -0
- package/dist/bus/index.d.ts +3 -0
- package/dist/bus/index.d.ts.map +1 -0
- package/dist/bus/index.js +3 -0
- package/dist/bus/index.js.map +1 -0
- package/dist/file-edit.txt +21 -0
- package/dist/file-read.txt +18 -0
- package/dist/file-write.txt +16 -0
- package/dist/glob.txt +19 -0
- package/dist/global.d.ts +8 -0
- package/dist/global.d.ts.map +1 -0
- package/dist/global.js +14 -0
- package/dist/global.js.map +1 -0
- package/dist/grep.txt +20 -0
- package/dist/highlights-eq9cgrbb.scm +604 -0
- package/dist/highlights-ghv9g403.scm +205 -0
- package/dist/highlights-hk7bwhj4.scm +284 -0
- package/dist/highlights-r812a2qc.scm +150 -0
- package/dist/highlights-x6tmsnaa.scm +115 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +62122 -0
- package/dist/index.js.map +1 -0
- package/dist/index.jsx +5 -0
- package/dist/index.jsx.map +1 -0
- package/dist/injections-73j83es3.scm +27 -0
- package/dist/input/at-refs.d.ts +42 -0
- package/dist/input/at-refs.d.ts.map +1 -0
- package/dist/input/at-refs.js +154 -0
- package/dist/input/at-refs.js.map +1 -0
- package/dist/input/history.d.ts +26 -0
- package/dist/input/history.d.ts.map +1 -0
- package/dist/input/history.js +109 -0
- package/dist/input/history.js.map +1 -0
- package/dist/input/index.d.ts +5 -0
- package/dist/input/index.d.ts.map +1 -0
- package/dist/input/index.js +5 -0
- package/dist/input/index.js.map +1 -0
- package/dist/input/paste.d.ts +19 -0
- package/dist/input/paste.d.ts.map +1 -0
- package/dist/input/paste.js +75 -0
- package/dist/input/paste.js.map +1 -0
- package/dist/input/shortcuts.d.ts +6 -0
- package/dist/input/shortcuts.d.ts.map +1 -0
- package/dist/input/shortcuts.js +84 -0
- package/dist/input/shortcuts.js.map +1 -0
- package/dist/mcp/index.d.ts +3 -0
- package/dist/mcp/index.d.ts.map +1 -0
- package/dist/mcp/index.js +3 -0
- package/dist/mcp/index.js.map +1 -0
- package/dist/mcp/manager.d.ts +51 -0
- package/dist/mcp/manager.d.ts.map +1 -0
- package/dist/mcp/manager.js +158 -0
- package/dist/mcp/manager.js.map +1 -0
- package/dist/mcp/types.d.ts +18 -0
- package/dist/mcp/types.d.ts.map +1 -0
- package/dist/mcp/types.js +5 -0
- package/dist/mcp/types.js.map +1 -0
- package/dist/session/todo.d.ts +24 -0
- package/dist/session/todo.d.ts.map +1 -0
- package/dist/session/todo.js +39 -0
- package/dist/session/todo.js.map +1 -0
- package/dist/storage/index.d.ts +2 -0
- package/dist/storage/index.d.ts.map +1 -0
- package/dist/storage/index.js +2 -0
- package/dist/storage/index.js.map +1 -0
- package/dist/storage/storage.d.ts +13 -0
- package/dist/storage/storage.d.ts.map +1 -0
- package/dist/storage/storage.js +84 -0
- package/dist/storage/storage.js.map +1 -0
- package/dist/task.txt +26 -0
- package/dist/todo-read.txt +14 -0
- package/dist/todo-write.txt +166 -0
- package/dist/tools/bash.d.ts +22 -0
- package/dist/tools/bash.d.ts.map +1 -0
- package/dist/tools/bash.js +70 -0
- package/dist/tools/bash.js.map +1 -0
- package/dist/tools/file-edit.d.ts +22 -0
- package/dist/tools/file-edit.d.ts.map +1 -0
- package/dist/tools/file-edit.js +67 -0
- package/dist/tools/file-edit.js.map +1 -0
- package/dist/tools/file-read.d.ts +19 -0
- package/dist/tools/file-read.d.ts.map +1 -0
- package/dist/tools/file-read.js +70 -0
- package/dist/tools/file-read.js.map +1 -0
- package/dist/tools/file-write.d.ts +16 -0
- package/dist/tools/file-write.d.ts.map +1 -0
- package/dist/tools/file-write.js +45 -0
- package/dist/tools/file-write.js.map +1 -0
- package/dist/tools/glob.d.ts +16 -0
- package/dist/tools/glob.d.ts.map +1 -0
- package/dist/tools/glob.js +45 -0
- package/dist/tools/glob.js.map +1 -0
- package/dist/tools/grep.d.ts +19 -0
- package/dist/tools/grep.d.ts.map +1 -0
- package/dist/tools/grep.js +65 -0
- package/dist/tools/grep.js.map +1 -0
- package/dist/tools/index.d.ts +11 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +11 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/registry.d.ts +22 -0
- package/dist/tools/registry.d.ts.map +1 -0
- package/dist/tools/registry.js +75 -0
- package/dist/tools/registry.js.map +1 -0
- package/dist/tools/task.d.ts +19 -0
- package/dist/tools/task.d.ts.map +1 -0
- package/dist/tools/task.js +51 -0
- package/dist/tools/task.js.map +1 -0
- package/dist/tools/todo-read.d.ts +7 -0
- package/dist/tools/todo-read.d.ts.map +1 -0
- package/dist/tools/todo-read.js +56 -0
- package/dist/tools/todo-read.js.map +1 -0
- package/dist/tools/todo-write.d.ts +38 -0
- package/dist/tools/todo-write.d.ts.map +1 -0
- package/dist/tools/todo-write.js +40 -0
- package/dist/tools/todo-write.js.map +1 -0
- package/dist/tree-sitter-javascript-nd0q4pe9.wasm +0 -0
- package/dist/tree-sitter-markdown-411r6y9b.wasm +0 -0
- package/dist/tree-sitter-markdown_inline-j5349f42.wasm +0 -0
- package/dist/tree-sitter-typescript-zxjzwt75.wasm +0 -0
- package/dist/tree-sitter-zig-e78zbjpm.wasm +0 -0
- package/dist/ui/App.d.ts +6 -0
- package/dist/ui/App.d.ts.map +1 -0
- package/dist/ui/App.jsx +37 -0
- package/dist/ui/App.jsx.map +1 -0
- package/dist/ui/components/Autocomplete.d.ts +24 -0
- package/dist/ui/components/Autocomplete.d.ts.map +1 -0
- package/dist/ui/components/Autocomplete.jsx +67 -0
- package/dist/ui/components/Autocomplete.jsx.map +1 -0
- package/dist/ui/components/ChatView.d.ts +14 -0
- package/dist/ui/components/ChatView.d.ts.map +1 -0
- package/dist/ui/components/ChatView.jsx +11 -0
- package/dist/ui/components/ChatView.jsx.map +1 -0
- package/dist/ui/components/InputArea.d.ts +18 -0
- package/dist/ui/components/InputArea.d.ts.map +1 -0
- package/dist/ui/components/InputArea.jsx +35 -0
- package/dist/ui/components/InputArea.jsx.map +1 -0
- package/dist/ui/components/MessageBlock.d.ts +21 -0
- package/dist/ui/components/MessageBlock.d.ts.map +1 -0
- package/dist/ui/components/MessageBlock.jsx +94 -0
- package/dist/ui/components/MessageBlock.jsx.map +1 -0
- package/dist/ui/components/Overlay.d.ts +28 -0
- package/dist/ui/components/Overlay.d.ts.map +1 -0
- package/dist/ui/components/Overlay.jsx +102 -0
- package/dist/ui/components/Overlay.jsx.map +1 -0
- package/dist/ui/components/ProgressBar.d.ts +9 -0
- package/dist/ui/components/ProgressBar.d.ts.map +1 -0
- package/dist/ui/components/ProgressBar.jsx +17 -0
- package/dist/ui/components/ProgressBar.jsx.map +1 -0
- package/dist/ui/components/Sidebar.d.ts +22 -0
- package/dist/ui/components/Sidebar.d.ts.map +1 -0
- package/dist/ui/components/Sidebar.jsx +96 -0
- package/dist/ui/components/Sidebar.jsx.map +1 -0
- package/dist/ui/components/StatusLine.d.ts +6 -0
- package/dist/ui/components/StatusLine.d.ts.map +1 -0
- package/dist/ui/components/StatusLine.jsx +32 -0
- package/dist/ui/components/StatusLine.jsx.map +1 -0
- package/dist/ui/components/ThinkingBlock.d.ts +15 -0
- package/dist/ui/components/ThinkingBlock.d.ts.map +1 -0
- package/dist/ui/components/ThinkingBlock.jsx +33 -0
- package/dist/ui/components/ThinkingBlock.jsx.map +1 -0
- package/dist/ui/components/TodoItem.d.ts +22 -0
- package/dist/ui/components/TodoItem.d.ts.map +1 -0
- package/dist/ui/components/TodoItem.jsx +11 -0
- package/dist/ui/components/TodoItem.jsx.map +1 -0
- package/dist/ui/components/ToolBlock.d.ts +27 -0
- package/dist/ui/components/ToolBlock.d.ts.map +1 -0
- package/dist/ui/components/ToolBlock.jsx +76 -0
- package/dist/ui/components/ToolBlock.jsx.map +1 -0
- package/dist/ui/components/index.d.ts +12 -0
- package/dist/ui/components/index.d.ts.map +1 -0
- package/dist/ui/components/index.js +12 -0
- package/dist/ui/components/index.js.map +1 -0
- package/dist/ui/context/index.d.ts +4 -0
- package/dist/ui/context/index.d.ts.map +1 -0
- package/dist/ui/context/index.js +4 -0
- package/dist/ui/context/index.js.map +1 -0
- package/dist/ui/context/mode.d.ts +24 -0
- package/dist/ui/context/mode.d.ts.map +1 -0
- package/dist/ui/context/mode.jsx +53 -0
- package/dist/ui/context/mode.jsx.map +1 -0
- package/dist/ui/context/session.d.ts +43 -0
- package/dist/ui/context/session.d.ts.map +1 -0
- package/dist/ui/context/session.jsx +63 -0
- package/dist/ui/context/session.jsx.map +1 -0
- package/dist/ui/context/todo.d.ts +32 -0
- package/dist/ui/context/todo.d.ts.map +1 -0
- package/dist/ui/context/todo.jsx +75 -0
- package/dist/ui/context/todo.jsx.map +1 -0
- package/dist/ui/design.d.ts +182 -0
- package/dist/ui/design.d.ts.map +1 -0
- package/dist/ui/design.js +189 -0
- package/dist/ui/design.js.map +1 -0
- package/dist/ui/index.d.ts +4 -0
- package/dist/ui/index.d.ts.map +1 -0
- package/dist/ui/index.js +3 -0
- package/dist/ui/index.js.map +1 -0
- package/dist/util/config.d.ts +22 -0
- package/dist/util/config.d.ts.map +1 -0
- package/dist/util/config.js +55 -0
- package/dist/util/config.js.map +1 -0
- package/dist/util/instructions.d.ts +39 -0
- package/dist/util/instructions.d.ts.map +1 -0
- package/dist/util/instructions.js +96 -0
- package/dist/util/instructions.js.map +1 -0
- package/dist/util/lock.d.ts +18 -0
- package/dist/util/lock.d.ts.map +1 -0
- package/dist/util/lock.js +65 -0
- package/dist/util/lock.js.map +1 -0
- package/dist/util/logger.d.ts +8 -0
- package/dist/util/logger.d.ts.map +1 -0
- package/dist/util/logger.js +81 -0
- package/dist/util/logger.js.map +1 -0
- 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":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAC/B,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAoBnC;;;GAGG;AACH,SAAS,aAAa,CAAC,IAAY;IACjC,MAAM,KAAK,GAAmB,EAAE,CAAC;IACjC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAE/B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAE5B,aAAa;QACb,IAAI,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;YAC9B,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACjC,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,MAAM,CAAC;YAC5C,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;YACpD,SAAS;QACX,CAAC;QAED,YAAY;QACZ,IAAI,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YAC7B,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YACzC,IAAI,QAAQ,IAAI,QAAQ,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;gBACzC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YACxC,CAAC;iBAAM,CAAC;gBACN,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YAC1D,CAAC;YACD,SAAS;QACX,CAAC;QAED,uBAAuB;QACvB,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;QACjD,IAAI,SAAS,IAAI,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;YAC9B,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YACpD,SAAS;QACX,CAAC;QAED,uBAAuB;QACvB,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QAC3C,IAAI,SAAS,IAAI,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;YAC9B,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;YACtE,SAAS;QACX,CAAC;QAED,aAAa;QACb,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9C,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;GAEG;AACH,SAAS,kBAAkB,CAAC,IAAkB;IAC5C,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;QAClB,KAAK,MAAM;YACT,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,CAAC;QACrC,KAAK,MAAM;YACT,OAAO,CACL,CAAC,IAAI,CACH;UAAA,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,MAAM,CAChC;QAAA,EAAE,IAAI,CAAC,CACR,CAAC;QACJ,KAAK,MAAM;YACT,OAAO,CACL,CAAC,IAAI;YACH,mDAAmD;YACnD,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CACnB,QAAQ,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,EACxB,CACH,CAAC;QACJ,KAAK,MAAM;YACT,OAAO,CACL,CAAC,GAAG,CAAC,aAAa,CAAC,QAAQ,CACzB;UAAA,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CACpB;YAAA,CAAC,CAAC,IAAY,EAAE,EAAE,CAAC,CACjB,CAAC,GAAG,CAAC,aAAa,CAAC,KAAK,CACtB;gBAAA,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,IAAI,CACjC;gBAAA,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,IAAI,CACpB;cAAA,EAAE,GAAG,CAAC,CACP,CACH;UAAA,EAAE,GAAG,CACP;QAAA,EAAE,GAAG,CAAC,CACP,CAAC;QACJ;YACE,OAAO,IAAI,CAAC;IAChB,CAAC;AACH,CAAC;AAcD,MAAM,UAAU,YAAY,CAAC,KAAwB;IACnD,MAAM,MAAM,GAAG,GAAG,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAE1D,MAAM,MAAM,GAAG,GAAG,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,KAAK,MAAM,CAAC;IAEnD,OAAO,CACL,CAAC,GAAG,CAAC,aAAa,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAC1C;MAAA,CAAC,GAAG,CAAC,aAAa,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CACvC;QAAA,CAAC,IAAI,CACH;UAAA,CAAC,MAAM,CACL;YAAA,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAC/B;UAAA,EAAE,MAAM,CACV;QAAA,EAAE,IAAI,CACN;QAAA,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,CAAE,KAAI,EAAE,IAAI,CACtC;MAAA,EAAE,GAAG,CACL;MAAA,CAAC,GAAG,CAAC,aAAa,CAAC,QAAQ,CACzB;QAAA,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,CAClB;UAAA,CAAC,CAAC,IAAkB,EAAE,EAAE,CAAC,kBAAkB,CAAC,IAAI,CAAC,CACnD;QAAA,EAAE,GAAG,CACP;MAAA,EAAE,GAAG,CACP;IAAA,EAAE,GAAG,CAAC,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -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 @@
|
|
|
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 @@
|
|
|
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"}
|