@comma-agents/tui 2.0.0-rc.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/LICENSE +21 -0
- package/README.md +10 -0
- package/dist/App/App.d.ts +24 -0
- package/dist/App/App.theme.d.ts +12 -0
- package/dist/App/App.types.d.ts +8 -0
- package/dist/App/index.d.ts +4 -0
- package/dist/Theme/DefineTheme.d.ts +53 -0
- package/dist/Theme/Theme.d.ts +11 -0
- package/dist/Theme/Theme.types.d.ts +100 -0
- package/dist/Theme/index.d.ts +9 -0
- package/dist/Theme/themes/dark.d.ts +14 -0
- package/dist/Theme/themes/dracula.d.ts +9 -0
- package/dist/Theme/themes/index.d.ts +25 -0
- package/dist/Theme/themes/light.d.ts +10 -0
- package/dist/Theme/themes/solarized-dark.d.ts +9 -0
- package/dist/Theme/useTheme/index.d.ts +3 -0
- package/dist/Theme/useTheme/useTheme.context.d.ts +31 -0
- package/dist/Theme/useTheme/useTheme.d.ts +11 -0
- package/dist/Theme/useTheme/useTheme.types.d.ts +10 -0
- package/dist/components/BorderedPanel/BorderedPanel.d.ts +70 -0
- package/dist/components/BorderedPanel/BorderedPanel.theme.d.ts +59 -0
- package/dist/components/BorderedPanel/index.d.ts +4 -0
- package/dist/components/Button/Button.d.ts +69 -0
- package/dist/components/Button/Button.theme.d.ts +50 -0
- package/dist/components/Button/Button.types.d.ts +9 -0
- package/dist/components/Button/index.d.ts +4 -0
- package/dist/components/ChatTextArea/ChatTextArea.d.ts +85 -0
- package/dist/components/ChatTextArea/ChatTextArea.theme.d.ts +34 -0
- package/dist/components/ChatTextArea/index.d.ts +2 -0
- package/dist/components/CodeView/CodeView.constants.d.ts +9 -0
- package/dist/components/CodeView/CodeView.d.ts +23 -0
- package/dist/components/CodeView/CodeView.theme.d.ts +26 -0
- package/dist/components/CodeView/index.d.ts +4 -0
- package/dist/components/CommandPalette/CommandPalette.constants.d.ts +8 -0
- package/dist/components/CommandPalette/CommandPalette.d.ts +62 -0
- package/dist/components/CommandPalette/CommandPalette.theme.d.ts +50 -0
- package/dist/components/CommandPalette/CommandPalette.types.d.ts +50 -0
- package/dist/components/CommandPalette/CommandPalette.utils.d.ts +6 -0
- package/dist/components/CommandPalette/index.d.ts +5 -0
- package/dist/components/CommandPalette/pages/HelpPage/HelpPage.constants.d.ts +2 -0
- package/dist/components/CommandPalette/pages/HelpPage/HelpPage.d.ts +12 -0
- package/dist/components/CommandPalette/pages/HelpPage/HelpPage.types.d.ts +5 -0
- package/dist/components/CommandPalette/pages/HelpPage/index.d.ts +3 -0
- package/dist/components/CommandPalette/pages/ListProvidersPage/ListProvidersPage.d.ts +42 -0
- package/dist/components/CommandPalette/pages/ListProvidersPage/index.d.ts +1 -0
- package/dist/components/CommandPalette/pages/RegisteredProvidersPage/RegisteredProvidersPage.constants.d.ts +3 -0
- package/dist/components/CommandPalette/pages/RegisteredProvidersPage/RegisteredProvidersPage.d.ts +40 -0
- package/dist/components/CommandPalette/pages/RegisteredProvidersPage/RegisteredProvidersPage.types.d.ts +13 -0
- package/dist/components/CommandPalette/pages/RegisteredProvidersPage/RegisteredProvidersPage.utils.d.ts +9 -0
- package/dist/components/CommandPalette/pages/RegisteredProvidersPage/index.d.ts +2 -0
- package/dist/components/CommandPalette/pages/RunPickerPage/RunPickerPage.constants.d.ts +3 -0
- package/dist/components/CommandPalette/pages/RunPickerPage/RunPickerPage.d.ts +31 -0
- package/dist/components/CommandPalette/pages/RunPickerPage/RunPickerPage.types.d.ts +8 -0
- package/dist/components/CommandPalette/pages/RunPickerPage/RunPickerPage.utils.d.ts +7 -0
- package/dist/components/CommandPalette/pages/RunPickerPage/index.d.ts +3 -0
- package/dist/components/CommandPalette/pages/SettingsPage/SettingsPage.d.ts +24 -0
- package/dist/components/CommandPalette/pages/SettingsPage/index.d.ts +2 -0
- package/dist/components/Frame/Frame.d.ts +48 -0
- package/dist/components/Frame/Frame.theme.d.ts +52 -0
- package/dist/components/Frame/index.d.ts +4 -0
- package/dist/components/Hide/Hide.d.ts +20 -0
- package/dist/components/Hide/Hide.types.d.ts +12 -0
- package/dist/components/Hide/index.d.ts +2 -0
- package/dist/components/MessageList/AgentMessage/AgentMessage.d.ts +71 -0
- package/dist/components/MessageList/AgentMessage/index.d.ts +2 -0
- package/dist/components/MessageList/ContextUsageModal/ContextUsageModal.constants.d.ts +2 -0
- package/dist/components/MessageList/ContextUsageModal/ContextUsageModal.d.ts +9 -0
- package/dist/components/MessageList/ContextUsageModal/ContextUsageModal.types.d.ts +12 -0
- package/dist/components/MessageList/ContextUsageModal/index.d.ts +4 -0
- package/dist/components/MessageList/MarkdownView/MarkdownView.constants.d.ts +51 -0
- package/dist/components/MessageList/MarkdownView/MarkdownView.d.ts +34 -0
- package/dist/components/MessageList/MarkdownView/MarkdownView.theme.d.ts +89 -0
- package/dist/components/MessageList/MarkdownView/MarkdownView.types.d.ts +96 -0
- package/dist/components/MessageList/MarkdownView/MarkdownView.utils.d.ts +58 -0
- package/dist/components/MessageList/MarkdownView/index.d.ts +6 -0
- package/dist/components/MessageList/MessageList.d.ts +20 -0
- package/dist/components/MessageList/MessageList.theme.d.ts +170 -0
- package/dist/components/MessageList/MessageList.types.d.ts +26 -0
- package/dist/components/MessageList/OutputModal/OutputModal.constants.d.ts +22 -0
- package/dist/components/MessageList/OutputModal/OutputModal.d.ts +37 -0
- package/dist/components/MessageList/OutputModal/OutputModal.theme.d.ts +68 -0
- package/dist/components/MessageList/OutputModal/OutputModal.types.d.ts +56 -0
- package/dist/components/MessageList/OutputModal/OutputModal.utils.d.ts +3 -0
- package/dist/components/MessageList/OutputModal/index.d.ts +6 -0
- package/dist/components/MessageList/SpawnedStrategyView/SpawnedStrategyView.d.ts +47 -0
- package/dist/components/MessageList/SpawnedStrategyView/SpawnedStrategyView.theme.d.ts +58 -0
- package/dist/components/MessageList/SpawnedStrategyView/index.d.ts +4 -0
- package/dist/components/MessageList/SystemMessage/SystemMessage.d.ts +21 -0
- package/dist/components/MessageList/SystemMessage/index.d.ts +2 -0
- package/dist/components/MessageList/ToolCallView/ToolCallView.constants.d.ts +42 -0
- package/dist/components/MessageList/ToolCallView/ToolCallView.d.ts +71 -0
- package/dist/components/MessageList/ToolCallView/ToolCallView.theme.d.ts +47 -0
- package/dist/components/MessageList/ToolCallView/ToolCallView.types.d.ts +60 -0
- package/dist/components/MessageList/ToolCallView/ToolCallView.utils.d.ts +40 -0
- package/dist/components/MessageList/ToolCallView/index.d.ts +8 -0
- package/dist/components/MessageList/UserMessage/UserMessage.d.ts +25 -0
- package/dist/components/MessageList/UserMessage/index.d.ts +2 -0
- package/dist/components/MessageList/index.d.ts +14 -0
- package/dist/components/Modal/Modal.d.ts +64 -0
- package/dist/components/Modal/Modal.theme.d.ts +29 -0
- package/dist/components/Modal/index.d.ts +4 -0
- package/dist/components/MouseProvider/MouseContext.d.ts +36 -0
- package/dist/components/MouseProvider/MouseProvider.d.ts +20 -0
- package/dist/components/MouseProvider/index.d.ts +4 -0
- package/dist/components/PermissionPrompt/PermissionPrompt.d.ts +33 -0
- package/dist/components/PermissionPrompt/index.d.ts +2 -0
- package/dist/components/QuestionPrompt/QuestionPrompt.d.ts +4 -0
- package/dist/components/QuestionPrompt/QuestionPrompt.types.d.ts +18 -0
- package/dist/components/QuestionPrompt/index.d.ts +2 -0
- package/dist/components/ScrollableList/ScrollableList.d.ts +33 -0
- package/dist/components/ScrollableList/ScrollableList.theme.d.ts +33 -0
- package/dist/components/ScrollableList/ScrollableList.types.d.ts +66 -0
- package/dist/components/ScrollableList/index.d.ts +4 -0
- package/dist/components/ScrollableView/ScrollableView.d.ts +34 -0
- package/dist/components/ScrollableView/ScrollableView.theme.d.ts +34 -0
- package/dist/components/ScrollableView/ScrollableView.types.d.ts +113 -0
- package/dist/components/ScrollableView/index.d.ts +4 -0
- package/dist/components/Scrollbar/Scrollbar.d.ts +21 -0
- package/dist/components/Scrollbar/Scrollbar.theme.d.ts +16 -0
- package/dist/components/Scrollbar/Scrollbar.types.d.ts +27 -0
- package/dist/components/Scrollbar/Scrollbar.utils.d.ts +21 -0
- package/dist/components/Scrollbar/index.d.ts +4 -0
- package/dist/components/SearchInput/SearchInput.d.ts +22 -0
- package/dist/components/SearchInput/SearchInput.theme.d.ts +30 -0
- package/dist/components/SearchInput/SearchInput.types.d.ts +25 -0
- package/dist/components/SearchInput/SearchInput.utils.d.ts +22 -0
- package/dist/components/SearchInput/index.d.ts +5 -0
- package/dist/components/Separator/Separator.d.ts +39 -0
- package/dist/components/Separator/Separator.theme.d.ts +22 -0
- package/dist/components/Separator/index.d.ts +4 -0
- package/dist/components/StatusBar/StatusBar.d.ts +4 -0
- package/dist/components/StatusBar/StatusBar.theme.d.ts +35 -0
- package/dist/components/StatusBar/StatusBar.types.d.ts +24 -0
- package/dist/components/StatusBar/index.d.ts +2 -0
- package/dist/components/TextAreaInput/TextAreaInput.d.ts +68 -0
- package/dist/components/TextAreaInput/TextAreaInput.theme.d.ts +14 -0
- package/dist/components/TextAreaInput/TextAreaInput.utils.d.ts +69 -0
- package/dist/components/TextAreaInput/index.d.ts +2 -0
- package/dist/components/TitleIcon/TitleIcon.d.ts +13 -0
- package/dist/components/TitleIcon/TitleIcon.theme.d.ts +19 -0
- package/dist/components/TitleIcon/index.d.ts +1 -0
- package/dist/components/index.d.ts +61 -0
- package/dist/hooks/index.d.ts +27 -0
- package/dist/hooks/useBreakpoint/index.d.ts +2 -0
- package/dist/hooks/useBreakpoint/useBreakpoint.d.ts +15 -0
- package/dist/hooks/useBreakpoint/useBreakpoint.types.d.ts +18 -0
- package/dist/hooks/useChat/index.d.ts +22 -0
- package/dist/hooks/useChat/useChat.context.d.ts +7 -0
- package/dist/hooks/useChat/useChat.d.ts +11 -0
- package/dist/hooks/useChat/useChat.types.d.ts +209 -0
- package/dist/hooks/useChat/useChat.utils.d.ts +18 -0
- package/dist/hooks/useChat/useChatActions.d.ts +10 -0
- package/dist/hooks/useChat/useChatAgentMessages/index.d.ts +1 -0
- package/dist/hooks/useChat/useChatAgentMessages/useChatAgentMessages.d.ts +2 -0
- package/dist/hooks/useChat/useChatInputRequests/index.d.ts +2 -0
- package/dist/hooks/useChat/useChatInputRequests/useChatInputRequests.d.ts +3 -0
- package/dist/hooks/useChat/useChatInputRequests/useChatInputRequests.types.d.ts +4 -0
- package/dist/hooks/useChat/useChatLifecycle.d.ts +5 -0
- package/dist/hooks/useChat/useChatPermissionRequests/index.d.ts +2 -0
- package/dist/hooks/useChat/useChatPermissionRequests/useChatPermissionRequestSubscriptions.d.ts +2 -0
- package/dist/hooks/useChat/useChatPermissionRequests/useChatPermissionRequests.d.ts +3 -0
- package/dist/hooks/useChat/useChatPermissionRequests/useChatPermissionRequests.types.d.ts +4 -0
- package/dist/hooks/useChat/useChatQuestionRequests/index.d.ts +2 -0
- package/dist/hooks/useChat/useChatQuestionRequests/useChatQuestionRequestSubscriptions.d.ts +2 -0
- package/dist/hooks/useChat/useChatQuestionRequests/useChatQuestionRequests.d.ts +3 -0
- package/dist/hooks/useChat/useChatQuestionRequests/useChatQuestionRequests.types.d.ts +4 -0
- package/dist/hooks/useChat/useChatRunLifecycle/index.d.ts +2 -0
- package/dist/hooks/useChat/useChatRunLifecycle/useChatRunLifecycle.d.ts +3 -0
- package/dist/hooks/useChat/useChatRunLifecycle/useChatRunLifecycle.types.d.ts +11 -0
- package/dist/hooks/useChat/useChatRunLifecycle/useChatRunLifecycleSubscriptions.d.ts +2 -0
- package/dist/hooks/useChat/useChatRunStore/index.d.ts +1 -0
- package/dist/hooks/useChat/useChatRunStore/useChatRunStore.d.ts +3 -0
- package/dist/hooks/useChat/useChatRuns.d.ts +10 -0
- package/dist/hooks/useChat/useChatState.d.ts +17 -0
- package/dist/hooks/useChat/useChatSteering/index.d.ts +2 -0
- package/dist/hooks/useChat/useChatSteering/useChatSteering.d.ts +3 -0
- package/dist/hooks/useChat/useChatSteering/useChatSteering.types.d.ts +4 -0
- package/dist/hooks/useChat/useChatStepMessages/index.d.ts +1 -0
- package/dist/hooks/useChat/useChatStepMessages/useChatStepMessages.d.ts +2 -0
- package/dist/hooks/useChat/usePersistedRunList/index.d.ts +2 -0
- package/dist/hooks/useChat/usePersistedRunList/usePersistedRunList.d.ts +3 -0
- package/dist/hooks/useChat/usePersistedRunList/usePersistedRunList.types.d.ts +5 -0
- package/dist/hooks/useDaemon/index.d.ts +6 -0
- package/dist/hooks/useDaemon/useDaemon.context.d.ts +18 -0
- package/dist/hooks/useDaemon/useDaemon.d.ts +7 -0
- package/dist/hooks/useDaemon/useDaemon.types.d.ts +62 -0
- package/dist/hooks/useDaemon/useDaemonCommand/index.d.ts +2 -0
- package/dist/hooks/useDaemon/useDaemonCommand/useDaemonCommand.d.ts +20 -0
- package/dist/hooks/useDaemon/useDaemonCommand/useDaemonCommand.types.d.ts +28 -0
- package/dist/hooks/useDaemon/useDaemonSubscription/index.d.ts +1 -0
- package/dist/hooks/useDaemon/useDaemonSubscription/useDaemonSubscription.d.ts +18 -0
- package/dist/hooks/useDebugRender/index.d.ts +2 -0
- package/dist/hooks/useDebugRender/useDebugRender.constants.d.ts +18 -0
- package/dist/hooks/useDebugRender/useDebugRender.d.ts +35 -0
- package/dist/hooks/useDebugRender/useDebugRender.types.d.ts +60 -0
- package/dist/hooks/useDebugRender/useDebugRender.utils.d.ts +34 -0
- package/dist/hooks/useLogs/index.d.ts +3 -0
- package/dist/hooks/useLogs/logStore.d.ts +18 -0
- package/dist/hooks/useLogs/useLogs.constants.d.ts +2 -0
- package/dist/hooks/useLogs/useLogs.d.ts +15 -0
- package/dist/hooks/useLogs/useLogs.types.d.ts +47 -0
- package/dist/hooks/useLogs/useLogs.utils.d.ts +13 -0
- package/dist/hooks/useModal/index.d.ts +3 -0
- package/dist/hooks/useModal/useModal.context.d.ts +20 -0
- package/dist/hooks/useModal/useModal.d.ts +22 -0
- package/dist/hooks/useModal/useModal.types.d.ts +49 -0
- package/dist/hooks/useMouse/index.d.ts +2 -0
- package/dist/hooks/useMouse/useMouse.types.d.ts +43 -0
- package/dist/hooks/useMouse/useMouse.utils.d.ts +30 -0
- package/dist/hooks/useMouseClick/index.d.ts +2 -0
- package/dist/hooks/useMouseClick/useMouseClick.d.ts +23 -0
- package/dist/hooks/useMouseClick/useMouseClick.types.d.ts +28 -0
- package/dist/hooks/useMouseHover/index.d.ts +2 -0
- package/dist/hooks/useMouseHover/useMouseHover.d.ts +25 -0
- package/dist/hooks/useMouseHover/useMouseHover.types.d.ts +38 -0
- package/dist/hooks/useMouseWheelScroll/index.d.ts +2 -0
- package/dist/hooks/useMouseWheelScroll/useMouseWheelScroll.d.ts +28 -0
- package/dist/hooks/useMouseWheelScroll/useMouseWheelScroll.types.d.ts +32 -0
- package/dist/hooks/useRegion/index.d.ts +3 -0
- package/dist/hooks/useRegion/useRegion.d.ts +21 -0
- package/dist/hooks/useRegion/useRegion.types.d.ts +41 -0
- package/dist/hooks/useRegion/useRegion.utils.d.ts +51 -0
- package/dist/hooks/useStrategies/useStrategies.d.ts +10 -0
- package/dist/hooks/useToolSpinner/index.d.ts +1 -0
- package/dist/hooks/useToolSpinner/useToolSpinner.d.ts +28 -0
- package/dist/hooks/useUserConfig/index.d.ts +4 -0
- package/dist/hooks/useUserConfig/useUserConfig.constants.d.ts +17 -0
- package/dist/hooks/useUserConfig/useUserConfig.context.d.ts +9 -0
- package/dist/hooks/useUserConfig/useUserConfig.d.ts +9 -0
- package/dist/hooks/useUserConfig/useUserConfig.types.d.ts +30 -0
- package/dist/hooks/useUserConfig/useUserConfig.utils.d.ts +19 -0
- package/dist/hooks/useWebSocket/index.d.ts +2 -0
- package/dist/hooks/useWebSocket/useWebSocket.d.ts +17 -0
- package/dist/hooks/useWebSocket/useWebSocket.types.d.ts +27 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +10592 -0
- package/dist/main.js +10655 -0
- package/dist/pages/ChatPage/ChatPage.constants.d.ts +2 -0
- package/dist/pages/ChatPage/ChatPage.d.ts +25 -0
- package/dist/pages/ChatPage/ChatPage.theme.d.ts +56 -0
- package/dist/pages/ChatPage/index.d.ts +4 -0
- package/dist/pages/IntroPage/IntroPage.d.ts +14 -0
- package/dist/pages/IntroPage/IntroPage.theme.d.ts +13 -0
- package/dist/pages/IntroPage/index.d.ts +4 -0
- package/dist/pages/LogsPage/LogsPage.d.ts +14 -0
- package/dist/pages/LogsPage/LogsPage.theme.d.ts +49 -0
- package/dist/pages/LogsPage/LogsPage.utils.d.ts +5 -0
- package/dist/pages/LogsPage/index.d.ts +4 -0
- package/dist/pages/SpawnedStrategyPage/SpawnedStrategyPage.d.ts +12 -0
- package/dist/pages/SpawnedStrategyPage/index.d.ts +2 -0
- package/dist/run-tui.d.ts +12 -0
- package/dist/run-tui.types.d.ts +12 -0
- package/dist/utils/debug.d.ts +12 -0
- package/dist/utils/mouseEscape.d.ts +29 -0
- package/dist/utils/yogaLayout.d.ts +32 -0
- package/package.json +66 -0
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { DiscoveredStrategy } from "@comma-agents/core";
|
|
2
|
+
import type { RequestPermissionMessage, RequestQuestionMessage } from "@comma-agents/daemon";
|
|
3
|
+
import type React from "react";
|
|
4
|
+
import type { ChatPageTheme } from "./ChatPage.theme";
|
|
5
|
+
export declare function ChatPage(): React.ReactElement;
|
|
6
|
+
export interface ChatPageRenderProps {
|
|
7
|
+
readonly theme: ChatPageTheme;
|
|
8
|
+
readonly messages: readonly import("../../hooks").ChatMessage[];
|
|
9
|
+
readonly chatStatus: import("../../hooks").ChatStatus;
|
|
10
|
+
readonly error: string | null;
|
|
11
|
+
readonly pendingInputAgent: string | null;
|
|
12
|
+
readonly pendingPermissionRequest: RequestPermissionMessage | null;
|
|
13
|
+
readonly pendingQuestionRequest: RequestQuestionMessage | null;
|
|
14
|
+
readonly activeStrategyPath: string | null;
|
|
15
|
+
readonly canContinue: boolean;
|
|
16
|
+
readonly strategies: readonly DiscoveredStrategy[];
|
|
17
|
+
readonly onReplySubmit: (text: string) => void;
|
|
18
|
+
readonly onSteerSubmit: (text: string) => void;
|
|
19
|
+
readonly onContinueSubmit: (strategy: DiscoveredStrategy, text: string) => void;
|
|
20
|
+
readonly onPermissionDecide: (decision: "allow" | "deny" | "allow-session" | "deny-session") => void;
|
|
21
|
+
readonly onQuestionSubmit: (response: string) => void;
|
|
22
|
+
readonly onAbort: () => void;
|
|
23
|
+
readonly onOpenSubStrategy?: (toolCallId: string) => void;
|
|
24
|
+
}
|
|
25
|
+
export declare function ChatPageRender({ theme, messages, chatStatus, error: _error, pendingInputAgent, pendingPermissionRequest, pendingQuestionRequest, activeStrategyPath, canContinue, onReplySubmit, onSteerSubmit, onContinueSubmit, onPermissionDecide, onQuestionSubmit, onAbort, strategies, onOpenSubStrategy, }: ChatPageRenderProps): React.ReactElement;
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { type ThemeOf } from "../../Theme";
|
|
2
|
+
/**
|
|
3
|
+
* Memoized themed style objects for the ChatPage component.
|
|
4
|
+
*
|
|
5
|
+
* Authored with `defineTheme` so the resolved shape is inferred from the
|
|
6
|
+
* value — no parallel `ChatPageTheme` interface to maintain. Consumers that
|
|
7
|
+
* need to type the resolved shape import {@link ChatPageTheme}, which is a
|
|
8
|
+
* `ReturnType` alias rather than a hand-written declaration.
|
|
9
|
+
*
|
|
10
|
+
* Note: separator styling is now owned by the `<Separator />` component, so
|
|
11
|
+
* it no longer appears here.
|
|
12
|
+
*/
|
|
13
|
+
export declare const useChatPageTheme: () => {
|
|
14
|
+
/** Root container (column layout, full height). */
|
|
15
|
+
root: {
|
|
16
|
+
flexDirection: "column";
|
|
17
|
+
height: string;
|
|
18
|
+
};
|
|
19
|
+
/** Header bar (strategy title). */
|
|
20
|
+
header: {
|
|
21
|
+
paddingX: number;
|
|
22
|
+
marginBottom: number;
|
|
23
|
+
/** Title text style. */
|
|
24
|
+
title: {
|
|
25
|
+
bold: boolean;
|
|
26
|
+
color: string;
|
|
27
|
+
};
|
|
28
|
+
};
|
|
29
|
+
/**
|
|
30
|
+
* Message list wrapper.
|
|
31
|
+
*
|
|
32
|
+
* `flexGrow: 1` claims leftover vertical space, but `flexShrink: 1` is
|
|
33
|
+
* equally important: when the reply `<ChatTextArea>` (re)mounts on
|
|
34
|
+
* `waiting_input`, the message area must yield rows for it. Yoga's
|
|
35
|
+
* default `flexShrink` is 0, which would otherwise keep the message
|
|
36
|
+
* area at its prior height and let the input overflow on top of the
|
|
37
|
+
* messages. `minHeight: 0` removes the automatic min-content floor so
|
|
38
|
+
* the shrink can actually take effect.
|
|
39
|
+
*/
|
|
40
|
+
messageArea: {
|
|
41
|
+
flexDirection: "column";
|
|
42
|
+
flexGrow: number;
|
|
43
|
+
flexShrink: number;
|
|
44
|
+
minHeight: number;
|
|
45
|
+
};
|
|
46
|
+
/** Footer bar (keyboard shortcuts). */
|
|
47
|
+
footer: {
|
|
48
|
+
paddingX: number;
|
|
49
|
+
/** Footer text style. */
|
|
50
|
+
text: {
|
|
51
|
+
dimColor: boolean;
|
|
52
|
+
};
|
|
53
|
+
};
|
|
54
|
+
};
|
|
55
|
+
/** Resolved style shape returned by {@link useChatPageTheme}. */
|
|
56
|
+
export type ChatPageTheme = ThemeOf<typeof useChatPageTheme>;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { DiscoveredStrategy } from "@comma-agents/core";
|
|
2
|
+
import React from "react";
|
|
3
|
+
import type { ChatTextAreaProps } from "../../components/ChatTextArea/ChatTextArea";
|
|
4
|
+
import type { IntroPageTheme } from "./IntroPage.theme";
|
|
5
|
+
export declare function IntroPage(): React.ReactElement;
|
|
6
|
+
export interface IntroPageRenderProps {
|
|
7
|
+
/** Resolved theme style objects. */
|
|
8
|
+
readonly theme: IntroPageTheme;
|
|
9
|
+
/** Strategies to expose to the input's strategy switcher. */
|
|
10
|
+
readonly strategies: readonly DiscoveredStrategy[];
|
|
11
|
+
/** Submit handler — `(strategyKey, input)`. */
|
|
12
|
+
readonly onSubmit: ChatTextAreaProps["onSubmit"];
|
|
13
|
+
}
|
|
14
|
+
export declare function IntroPageRender({ theme, strategies, onSubmit, }: IntroPageRenderProps): React.ReactElement;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/** Spread-ready style objects for the IntroPage component. */
|
|
2
|
+
export interface IntroPageTheme {
|
|
3
|
+
/** Root container — vertically centers TitleIcon + ChatTextArea. */
|
|
4
|
+
readonly root: {
|
|
5
|
+
readonly flexDirection: "column";
|
|
6
|
+
readonly alignItems: "center";
|
|
7
|
+
};
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Returns themed style objects for the IntroPage component.
|
|
11
|
+
* Consumes global tokens via `useTheme()`.
|
|
12
|
+
*/
|
|
13
|
+
export declare function useIntroPageTheme(): IntroPageTheme;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type React from "react";
|
|
2
|
+
import { type LogEntry } from "../../hooks/useLogs";
|
|
3
|
+
import type { LogsPageTheme } from "./LogsPage.theme";
|
|
4
|
+
export type LogsPageProps = {};
|
|
5
|
+
export declare function LogsPage({}: LogsPageProps): React.ReactElement;
|
|
6
|
+
export interface LogsPageRenderProps {
|
|
7
|
+
/** Resolved theme style objects. */
|
|
8
|
+
readonly theme: LogsPageTheme;
|
|
9
|
+
/** The log entries to display. */
|
|
10
|
+
readonly logs: readonly LogEntry[];
|
|
11
|
+
/** Debug render ref. */
|
|
12
|
+
readonly debugRef?: React.Ref<import("ink").DOMElement>;
|
|
13
|
+
}
|
|
14
|
+
export declare function LogsPageRender({ theme, logs, debugRef, }: LogsPageRenderProps): React.ReactElement;
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/** Spread-ready style objects for the LogsPage component. */
|
|
2
|
+
export interface LogsPageTheme {
|
|
3
|
+
/** Root container (column layout, full height). */
|
|
4
|
+
readonly root: {
|
|
5
|
+
readonly flexDirection: "column";
|
|
6
|
+
readonly flexGrow: number;
|
|
7
|
+
readonly paddingX: number;
|
|
8
|
+
};
|
|
9
|
+
/** Single log entry row. */
|
|
10
|
+
readonly logRow: {
|
|
11
|
+
readonly flexDirection: "row";
|
|
12
|
+
readonly gap: number;
|
|
13
|
+
};
|
|
14
|
+
/** Timestamp text style. */
|
|
15
|
+
readonly timestamp: {
|
|
16
|
+
readonly dimColor: boolean;
|
|
17
|
+
};
|
|
18
|
+
/** Level badge styles by level. */
|
|
19
|
+
readonly levels: {
|
|
20
|
+
readonly log: {
|
|
21
|
+
readonly color: string;
|
|
22
|
+
};
|
|
23
|
+
readonly info: {
|
|
24
|
+
readonly color: string;
|
|
25
|
+
};
|
|
26
|
+
readonly warn: {
|
|
27
|
+
readonly color: string;
|
|
28
|
+
};
|
|
29
|
+
readonly error: {
|
|
30
|
+
readonly color: string;
|
|
31
|
+
};
|
|
32
|
+
readonly debug: {
|
|
33
|
+
readonly dimColor: boolean;
|
|
34
|
+
};
|
|
35
|
+
};
|
|
36
|
+
/** Log message body. */
|
|
37
|
+
readonly messageBody: {
|
|
38
|
+
readonly wrap: "wrap";
|
|
39
|
+
};
|
|
40
|
+
/** Empty state text. */
|
|
41
|
+
readonly emptyState: {
|
|
42
|
+
readonly dimColor: boolean;
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Returns themed style objects for the LogsPage component.
|
|
47
|
+
* Consumes global tokens via `useTheme()`.
|
|
48
|
+
*/
|
|
49
|
+
export declare function useLogsPageTheme(): LogsPageTheme;
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { LogLevel } from "../../hooks/useLogs";
|
|
2
|
+
/** Format a Unix timestamp as HH:MM:SS.mmm for log display. */
|
|
3
|
+
export declare function formatTimestamp(timestamp: number): string;
|
|
4
|
+
/** Format a log level as a fixed-width uppercase label (e.g. "INFO "). */
|
|
5
|
+
export declare function formatLevel(level: LogLevel): string;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type React from "react";
|
|
2
|
+
import type { ChatMessage } from "../../hooks/useChat";
|
|
3
|
+
import type { ChatPageTheme } from "../ChatPage";
|
|
4
|
+
/** Read-only, live transcript for one spawned strategy invocation. */
|
|
5
|
+
export declare function SpawnedStrategyPage(): React.ReactElement;
|
|
6
|
+
export interface SpawnedStrategyPageRenderProps {
|
|
7
|
+
readonly theme: ChatPageTheme;
|
|
8
|
+
readonly strategyName: string;
|
|
9
|
+
readonly messages: readonly ChatMessage[];
|
|
10
|
+
readonly onOpenSubStrategy?: (toolCallId: string) => void;
|
|
11
|
+
}
|
|
12
|
+
export declare function SpawnedStrategyPageRender({ theme, strategyName, messages, onOpenSubStrategy, }: SpawnedStrategyPageRenderProps): React.ReactElement;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { RunTuiOptions, TuiInstance } from "./run-tui.types";
|
|
2
|
+
/**
|
|
3
|
+
* Render the CommaAgents terminal interface against a daemon WebSocket URL.
|
|
4
|
+
*
|
|
5
|
+
* @param options - Initial strategy, prompt, daemon URL, and development mode.
|
|
6
|
+
* @example
|
|
7
|
+
* ```ts
|
|
8
|
+
* const tui = runTui({ strategy: "Plan", input: "Review this repo" });
|
|
9
|
+
* await tui.waitUntilExit();
|
|
10
|
+
* ```
|
|
11
|
+
*/
|
|
12
|
+
export declare function runTui({ daemonUrl, dev, }?: RunTuiOptions): TuiInstance;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { Instance } from "ink";
|
|
2
|
+
export interface RunTuiOptions {
|
|
3
|
+
/** Strategy name to open immediately. */
|
|
4
|
+
readonly strategy?: string;
|
|
5
|
+
/** Initial input message passed to the selected strategy. */
|
|
6
|
+
readonly input?: string;
|
|
7
|
+
/** Daemon WebSocket URL. @default ws://localhost:7422/ws */
|
|
8
|
+
readonly daemonUrl?: string;
|
|
9
|
+
/** Enable the component playground. @default false */
|
|
10
|
+
readonly dev?: boolean;
|
|
11
|
+
}
|
|
12
|
+
export type TuiInstance = Instance;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Global debug flags for the TUI package.
|
|
3
|
+
*
|
|
4
|
+
* Flip these to `true` during development to enable visual debugging aids.
|
|
5
|
+
* All flags MUST default to `false` — never commit with flags enabled.
|
|
6
|
+
*/
|
|
7
|
+
/** When `true`, every Ink component briefly flashes a yellow background on re-render. */
|
|
8
|
+
export declare const DEBUG_RENDER = false;
|
|
9
|
+
/** When `true`, all log entries are also written to {@link LOG_FILE_PATH} on disk. */
|
|
10
|
+
export declare const DEBUG_LOG = false;
|
|
11
|
+
/** Absolute path to the debug log file written when {@link DEBUG_LOG} is enabled. */
|
|
12
|
+
export declare const LOG_FILE_PATH: string;
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SGR (1006) mouse escape prefix, as forwarded by Ink's `useInput` after
|
|
3
|
+
* the leading `\x1b` has been stripped: `[<`
|
|
4
|
+
*/
|
|
5
|
+
export declare const SGR_MOUSE_PREFIX = "[<";
|
|
6
|
+
/**
|
|
7
|
+
* Tail-fragment heuristic: a run of digits, semicolons, and an optional
|
|
8
|
+
* trailing `M`/`m`. When Ink's CSI parser consumes the `\x1b[<` opener
|
|
9
|
+
* but the rest of the event arrives on a later read, the tail looks like
|
|
10
|
+
* `5;47;30M`. Requires at least one `;` so plain numeric typing isn't
|
|
11
|
+
* swallowed.
|
|
12
|
+
*/
|
|
13
|
+
export declare const SGR_MOUSE_TAIL_PATTERN: RegExp;
|
|
14
|
+
/**
|
|
15
|
+
* Returns `true` when `input` looks like an SGR mouse escape sequence (or a
|
|
16
|
+
* fragment thereof) and should be swallowed by text-consuming inputs before
|
|
17
|
+
* they treat the chunk as typed characters.
|
|
18
|
+
*
|
|
19
|
+
* Matches:
|
|
20
|
+
* - Complete SGR sequence: `[<BTN;COL;ROW(M|m)`
|
|
21
|
+
* - Several concatenated sequences
|
|
22
|
+
* - A partial sequence starting with `[<`
|
|
23
|
+
* - A tail fragment like `5;47;30M`
|
|
24
|
+
*
|
|
25
|
+
* Deliberately permissive: the `[<` opener and the tail shape are vanishingly
|
|
26
|
+
* unlikely in real typing, and it is better to occasionally swallow an exotic
|
|
27
|
+
* keystroke than to let mouse noise leak into a text input.
|
|
28
|
+
*/
|
|
29
|
+
export declare function isMouseEscape(input: string): boolean;
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import type { DOMElement } from "ink";
|
|
2
|
+
/**
|
|
3
|
+
* Yoga-computed bounding box of a DOM element with absolute terminal
|
|
4
|
+
* coordinates. All values are in terminal cells (columns / rows).
|
|
5
|
+
*/
|
|
6
|
+
export interface BoundingBox {
|
|
7
|
+
/** Absolute row of the element's top edge (0-indexed). */
|
|
8
|
+
readonly top: number;
|
|
9
|
+
/** Absolute column of the element's left edge (0-indexed). */
|
|
10
|
+
readonly left: number;
|
|
11
|
+
/** Element width in terminal columns. */
|
|
12
|
+
readonly width: number;
|
|
13
|
+
/** Element height in terminal rows. */
|
|
14
|
+
readonly height: number;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Walk up the Yoga layout tree from a {@link DOMElement} to compute its
|
|
18
|
+
* absolute top/left position within Ink's terminal output.
|
|
19
|
+
*
|
|
20
|
+
* Each node's `getComputedTop()` / `getComputedLeft()` is relative to its
|
|
21
|
+
* parent, so we accumulate offsets up to the root.
|
|
22
|
+
*/
|
|
23
|
+
export declare function getAbsolutePosition(node: DOMElement): {
|
|
24
|
+
top: number;
|
|
25
|
+
left: number;
|
|
26
|
+
};
|
|
27
|
+
/**
|
|
28
|
+
* Return the absolute {@link BoundingBox} of a {@link DOMElement} by
|
|
29
|
+
* combining a Yoga tree-walk for position with the node's own computed
|
|
30
|
+
* width and height.
|
|
31
|
+
*/
|
|
32
|
+
export declare function getBoundingBox(node: DOMElement): BoundingBox;
|
package/package.json
ADDED
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@comma-agents/tui",
|
|
3
|
+
"version": "2.0.0-rc.0",
|
|
4
|
+
"description": "Terminal UI for CommaAgents that connects to the daemon via WebSocket",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "dist/index.js",
|
|
7
|
+
"types": "dist/index.d.ts",
|
|
8
|
+
"exports": {
|
|
9
|
+
".": {
|
|
10
|
+
"types": "./dist/index.d.ts",
|
|
11
|
+
"import": "./dist/index.js"
|
|
12
|
+
}
|
|
13
|
+
},
|
|
14
|
+
"files": ["dist", "README.md", "LICENSE"],
|
|
15
|
+
"bin": {
|
|
16
|
+
"comma-agents-tui": "dist/main.js"
|
|
17
|
+
},
|
|
18
|
+
"scripts": {
|
|
19
|
+
"start": "bun --inspect-wait=127.0.0.1:6499/tui run src/main.tsx",
|
|
20
|
+
"build": "bun run ../../scripts/build-public-package.ts tui",
|
|
21
|
+
"prepack": "bun run build",
|
|
22
|
+
"generate:frames": "bun run src/components/TitleIcon/icon-generator/generator.ts",
|
|
23
|
+
"test": "bun test --coverage",
|
|
24
|
+
"lint": "bunx @biomejs/biome check src",
|
|
25
|
+
"lint:fix": "bunx @biomejs/biome check --write src",
|
|
26
|
+
"format": "bunx @biomejs/biome format --write src",
|
|
27
|
+
"docs": "bun run --cwd docs dev",
|
|
28
|
+
"docs:build": "bun run --cwd docs build"
|
|
29
|
+
},
|
|
30
|
+
"dependencies": {
|
|
31
|
+
"@amandaghassaei/stl-parser": "1.7.0",
|
|
32
|
+
"@comma-agents/core": "2.0.0-rc.0",
|
|
33
|
+
"@comma-agents/daemon": "2.0.0-rc.0",
|
|
34
|
+
"@shikijs/cli": "^4.0.2",
|
|
35
|
+
"chalk": "5.6.2",
|
|
36
|
+
"cli-table3": "0.6.5",
|
|
37
|
+
"gl-matrix": "3.4.4",
|
|
38
|
+
"ink": "7.0.1",
|
|
39
|
+
"ink-select-input": "6.2.0",
|
|
40
|
+
"ink-spinner": "5.0.0",
|
|
41
|
+
"ink-text-input": "6.0.0",
|
|
42
|
+
"marked": "18.0.3",
|
|
43
|
+
"react": "19.2.5",
|
|
44
|
+
"react-devtools-core": "7.0.1",
|
|
45
|
+
"react-router": "^7.15.0",
|
|
46
|
+
"shiki": "4.0.2",
|
|
47
|
+
"string-width": "8.2.0",
|
|
48
|
+
"word-wrap": "1.2.5",
|
|
49
|
+
"yargs": "17.7.2"
|
|
50
|
+
},
|
|
51
|
+
"devDependencies": {
|
|
52
|
+
"@types/react": "19.2.14",
|
|
53
|
+
"@types/yargs": "17.0.33",
|
|
54
|
+
"ink-testing-library": "4.0.0",
|
|
55
|
+
"typescript": "6.0.2"
|
|
56
|
+
},
|
|
57
|
+
"engines": { "bun": ">=1.3.0" },
|
|
58
|
+
"publishConfig": { "access": "public", "tag": "next" },
|
|
59
|
+
"repository": {
|
|
60
|
+
"type": "git",
|
|
61
|
+
"url": "https://github.com/CloAI/CommaAgents.git",
|
|
62
|
+
"directory": "packages/tui"
|
|
63
|
+
},
|
|
64
|
+
"author": "CloAI",
|
|
65
|
+
"license": "MIT"
|
|
66
|
+
}
|