@vybestack/llxprt-ui 0.7.0-nightly.251211.5750c518a
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/PLAN-messages.md +681 -0
- package/PLAN.md +47 -0
- package/README.md +25 -0
- package/bun.lock +1024 -0
- package/dev-docs/ARCHITECTURE.md +178 -0
- package/dev-docs/CODE_ORGANIZATION.md +232 -0
- package/dev-docs/STANDARDS.md +235 -0
- package/dev-docs/UI_DESIGN.md +425 -0
- package/eslint.config.cjs +194 -0
- package/images/nui.png +0 -0
- package/llxprt.png +0 -0
- package/llxprt.svg +128 -0
- package/package.json +66 -0
- package/scripts/check-limits.ts +177 -0
- package/scripts/start.js +71 -0
- package/src/app.tsx +599 -0
- package/src/bootstrap.tsx +23 -0
- package/src/commands/AuthCommand.tsx +80 -0
- package/src/commands/ModelCommand.tsx +102 -0
- package/src/commands/ProviderCommand.tsx +103 -0
- package/src/commands/ThemeCommand.tsx +71 -0
- package/src/features/chat/history.ts +178 -0
- package/src/features/chat/index.ts +3 -0
- package/src/features/chat/persistentHistory.ts +102 -0
- package/src/features/chat/responder.ts +217 -0
- package/src/features/completion/completions.ts +161 -0
- package/src/features/completion/index.ts +3 -0
- package/src/features/completion/slash.test.ts +82 -0
- package/src/features/completion/slash.ts +248 -0
- package/src/features/completion/suggestions.test.ts +51 -0
- package/src/features/completion/suggestions.ts +112 -0
- package/src/features/config/configSession.test.ts +189 -0
- package/src/features/config/configSession.ts +179 -0
- package/src/features/config/index.ts +4 -0
- package/src/features/config/llxprtAdapter.integration.test.ts +202 -0
- package/src/features/config/llxprtAdapter.test.ts +139 -0
- package/src/features/config/llxprtAdapter.ts +257 -0
- package/src/features/config/llxprtCommands.test.ts +40 -0
- package/src/features/config/llxprtCommands.ts +35 -0
- package/src/features/config/llxprtConfig.test.ts +261 -0
- package/src/features/config/llxprtConfig.ts +418 -0
- package/src/features/theme/index.ts +2 -0
- package/src/features/theme/theme.test.ts +51 -0
- package/src/features/theme/theme.ts +105 -0
- package/src/features/theme/themeManager.ts +84 -0
- package/src/hooks/useAppCommands.ts +129 -0
- package/src/hooks/useApprovalKeyboard.ts +156 -0
- package/src/hooks/useChatStore.test.ts +112 -0
- package/src/hooks/useChatStore.ts +252 -0
- package/src/hooks/useInputManager.ts +99 -0
- package/src/hooks/useKeyboardHandlers.ts +130 -0
- package/src/hooks/useListNavigation.test.ts +166 -0
- package/src/hooks/useListNavigation.ts +62 -0
- package/src/hooks/usePersistentHistory.ts +94 -0
- package/src/hooks/useScrollManagement.ts +107 -0
- package/src/hooks/useSelectionClipboard.ts +48 -0
- package/src/hooks/useSessionManager.test.ts +85 -0
- package/src/hooks/useSessionManager.ts +101 -0
- package/src/hooks/useStreamingLifecycle.ts +71 -0
- package/src/hooks/useStreamingResponder.ts +401 -0
- package/src/hooks/useSuggestionSetup.ts +23 -0
- package/src/hooks/useToolApproval.test.ts +140 -0
- package/src/hooks/useToolApproval.ts +264 -0
- package/src/hooks/useToolScheduler.ts +432 -0
- package/src/index.ts +3 -0
- package/src/jsx.d.ts +11 -0
- package/src/lib/clipboard.ts +18 -0
- package/src/lib/logger.ts +107 -0
- package/src/lib/random.ts +5 -0
- package/src/main.tsx +13 -0
- package/src/test/mockTheme.ts +51 -0
- package/src/types/events.ts +87 -0
- package/src/types.ts +13 -0
- package/src/ui/components/ChatLayout.tsx +694 -0
- package/src/ui/components/CommandComponents.tsx +74 -0
- package/src/ui/components/DiffViewer.tsx +306 -0
- package/src/ui/components/FilterInput.test.ts +69 -0
- package/src/ui/components/FilterInput.tsx +62 -0
- package/src/ui/components/HeaderBar.tsx +137 -0
- package/src/ui/components/RadioSelect.test.ts +140 -0
- package/src/ui/components/RadioSelect.tsx +88 -0
- package/src/ui/components/SelectableList.test.ts +83 -0
- package/src/ui/components/SelectableList.tsx +35 -0
- package/src/ui/components/StatusBar.tsx +45 -0
- package/src/ui/components/SuggestionPanel.tsx +102 -0
- package/src/ui/components/messages/ModelMessage.tsx +14 -0
- package/src/ui/components/messages/SystemMessage.tsx +29 -0
- package/src/ui/components/messages/ThinkingMessage.tsx +14 -0
- package/src/ui/components/messages/UserMessage.tsx +26 -0
- package/src/ui/components/messages/index.ts +15 -0
- package/src/ui/components/messages/renderMessage.test.ts +49 -0
- package/src/ui/components/messages/renderMessage.tsx +43 -0
- package/src/ui/components/messages/types.test.ts +24 -0
- package/src/ui/components/messages/types.ts +36 -0
- package/src/ui/modals/AuthModal.tsx +106 -0
- package/src/ui/modals/ModalShell.tsx +60 -0
- package/src/ui/modals/SearchSelectModal.tsx +236 -0
- package/src/ui/modals/ThemeModal.tsx +204 -0
- package/src/ui/modals/ToolApprovalModal.test.ts +206 -0
- package/src/ui/modals/ToolApprovalModal.tsx +282 -0
- package/src/ui/modals/index.ts +20 -0
- package/src/ui/modals/modals.test.ts +26 -0
- package/src/ui/modals/types.ts +19 -0
- package/src/uicontext/Command.tsx +102 -0
- package/src/uicontext/Dialog.tsx +65 -0
- package/src/uicontext/index.ts +2 -0
- package/themes/ansi-light.json +59 -0
- package/themes/ansi.json +59 -0
- package/themes/atom-one-dark.json +59 -0
- package/themes/ayu-light.json +59 -0
- package/themes/ayu.json +59 -0
- package/themes/default-light.json +59 -0
- package/themes/default.json +59 -0
- package/themes/dracula.json +59 -0
- package/themes/github-dark.json +59 -0
- package/themes/github-light.json +59 -0
- package/themes/googlecode.json +59 -0
- package/themes/green-screen.json +59 -0
- package/themes/no-color.json +59 -0
- package/themes/shades-of-purple.json +59 -0
- package/themes/xcode.json +59 -0
- package/tsconfig.json +28 -0
- package/vitest.config.ts +10 -0
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "Google Code",
|
|
3
|
+
"slug": "google-code",
|
|
4
|
+
"kind": "light",
|
|
5
|
+
"colors": {
|
|
6
|
+
"background": "white",
|
|
7
|
+
"panel": {
|
|
8
|
+
"bg": "white",
|
|
9
|
+
"border": "#97a0b0",
|
|
10
|
+
"headerBg": "white",
|
|
11
|
+
"headerFg": "#444"
|
|
12
|
+
},
|
|
13
|
+
"text": {
|
|
14
|
+
"primary": "#444",
|
|
15
|
+
"muted": "#5f6368",
|
|
16
|
+
"user": "#066",
|
|
17
|
+
"responder": "#660",
|
|
18
|
+
"thinking": "#97a0b0",
|
|
19
|
+
"tool": "#080"
|
|
20
|
+
},
|
|
21
|
+
"input": {
|
|
22
|
+
"bg": "white",
|
|
23
|
+
"fg": "#444",
|
|
24
|
+
"placeholder": "#5f6368",
|
|
25
|
+
"border": "#97a0b0"
|
|
26
|
+
},
|
|
27
|
+
"status": {
|
|
28
|
+
"fg": "#080",
|
|
29
|
+
"muted": "#5f6368"
|
|
30
|
+
},
|
|
31
|
+
"accent": {
|
|
32
|
+
"primary": "#008",
|
|
33
|
+
"secondary": "#606",
|
|
34
|
+
"warning": "#660",
|
|
35
|
+
"error": "#800",
|
|
36
|
+
"success": "#080"
|
|
37
|
+
},
|
|
38
|
+
"selection": {
|
|
39
|
+
"fg": "#f8fafc",
|
|
40
|
+
"bg": "#008"
|
|
41
|
+
},
|
|
42
|
+
"diff": {
|
|
43
|
+
"addedBg": "#C6EAD8",
|
|
44
|
+
"addedFg": "#444",
|
|
45
|
+
"removedBg": "#FEDEDE",
|
|
46
|
+
"removedFg": "#444"
|
|
47
|
+
},
|
|
48
|
+
"scrollbar": {
|
|
49
|
+
"thumb": "#008",
|
|
50
|
+
"track": "#97a0b0"
|
|
51
|
+
},
|
|
52
|
+
"message": {
|
|
53
|
+
"userBorder": "#066",
|
|
54
|
+
"systemBorder": "#660",
|
|
55
|
+
"systemText": "#660",
|
|
56
|
+
"systemBg": "#f5f5f5"
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "Green Screen",
|
|
3
|
+
"slug": "green-screen",
|
|
4
|
+
"kind": "dark",
|
|
5
|
+
"colors": {
|
|
6
|
+
"background": "#000000",
|
|
7
|
+
"panel": {
|
|
8
|
+
"bg": "#000000",
|
|
9
|
+
"border": "#6a9955",
|
|
10
|
+
"headerBg": "#000000",
|
|
11
|
+
"headerFg": "#6a9955"
|
|
12
|
+
},
|
|
13
|
+
"text": {
|
|
14
|
+
"primary": "#6a9955",
|
|
15
|
+
"muted": "#6a9955",
|
|
16
|
+
"user": "#6a9955",
|
|
17
|
+
"responder": "#6a9955",
|
|
18
|
+
"thinking": "#6a9955",
|
|
19
|
+
"tool": "#6a9955"
|
|
20
|
+
},
|
|
21
|
+
"input": {
|
|
22
|
+
"bg": "#000000",
|
|
23
|
+
"fg": "#6a9955",
|
|
24
|
+
"placeholder": "#3b7a3b",
|
|
25
|
+
"border": "#6a9955"
|
|
26
|
+
},
|
|
27
|
+
"status": {
|
|
28
|
+
"fg": "#6a9955",
|
|
29
|
+
"muted": "#6a9955"
|
|
30
|
+
},
|
|
31
|
+
"accent": {
|
|
32
|
+
"primary": "#6a9955",
|
|
33
|
+
"secondary": "#6a9955",
|
|
34
|
+
"warning": "#6a9955",
|
|
35
|
+
"error": "#6a9955",
|
|
36
|
+
"success": "#00ff00"
|
|
37
|
+
},
|
|
38
|
+
"selection": {
|
|
39
|
+
"fg": "#000000",
|
|
40
|
+
"bg": "#6a9955"
|
|
41
|
+
},
|
|
42
|
+
"diff": {
|
|
43
|
+
"addedBg": "#6a9955",
|
|
44
|
+
"addedFg": "#000000",
|
|
45
|
+
"removedBg": "#6a9955",
|
|
46
|
+
"removedFg": "#000000"
|
|
47
|
+
},
|
|
48
|
+
"scrollbar": {
|
|
49
|
+
"thumb": "#6a9955",
|
|
50
|
+
"track": "#1a3318"
|
|
51
|
+
},
|
|
52
|
+
"message": {
|
|
53
|
+
"userBorder": "#6a9955",
|
|
54
|
+
"systemBorder": "#00ff00",
|
|
55
|
+
"systemText": "#00ff00",
|
|
56
|
+
"systemBg": "#0a1a0a"
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "NoColor",
|
|
3
|
+
"slug": "nocolor",
|
|
4
|
+
"kind": "dark",
|
|
5
|
+
"colors": {
|
|
6
|
+
"background": "#0f172a",
|
|
7
|
+
"panel": {
|
|
8
|
+
"bg": "#0f172a",
|
|
9
|
+
"border": "#94a3b8",
|
|
10
|
+
"headerBg": "#0f172a",
|
|
11
|
+
"headerFg": "#e5e7eb"
|
|
12
|
+
},
|
|
13
|
+
"text": {
|
|
14
|
+
"primary": "#e5e7eb",
|
|
15
|
+
"muted": "#94a3b8",
|
|
16
|
+
"user": "#e5e7eb",
|
|
17
|
+
"responder": "#e5e7eb",
|
|
18
|
+
"thinking": "#94a3b8",
|
|
19
|
+
"tool": "#e5e7eb"
|
|
20
|
+
},
|
|
21
|
+
"input": {
|
|
22
|
+
"bg": "#0f172a",
|
|
23
|
+
"fg": "#e5e7eb",
|
|
24
|
+
"placeholder": "#94a3b8",
|
|
25
|
+
"border": "#94a3b8"
|
|
26
|
+
},
|
|
27
|
+
"status": {
|
|
28
|
+
"fg": "#e5e7eb",
|
|
29
|
+
"muted": "#94a3b8"
|
|
30
|
+
},
|
|
31
|
+
"accent": {
|
|
32
|
+
"primary": "#e5e7eb",
|
|
33
|
+
"secondary": "#e5e7eb",
|
|
34
|
+
"warning": "#e5e7eb",
|
|
35
|
+
"error": "#e5e7eb",
|
|
36
|
+
"success": "#e5e7eb"
|
|
37
|
+
},
|
|
38
|
+
"selection": {
|
|
39
|
+
"fg": "#0f172a",
|
|
40
|
+
"bg": "#e5e7eb"
|
|
41
|
+
},
|
|
42
|
+
"diff": {
|
|
43
|
+
"addedBg": "#e5e7eb",
|
|
44
|
+
"addedFg": "#e5e7eb",
|
|
45
|
+
"removedBg": "#e5e7eb",
|
|
46
|
+
"removedFg": "#e5e7eb"
|
|
47
|
+
},
|
|
48
|
+
"scrollbar": {
|
|
49
|
+
"thumb": "#e5e7eb",
|
|
50
|
+
"track": "#94a3b8"
|
|
51
|
+
},
|
|
52
|
+
"message": {
|
|
53
|
+
"userBorder": "#e5e7eb",
|
|
54
|
+
"systemBorder": "#e5e7eb",
|
|
55
|
+
"systemText": "#e5e7eb",
|
|
56
|
+
"systemBg": "#1a2435"
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "Shades Of Purple",
|
|
3
|
+
"slug": "shades-of-purple",
|
|
4
|
+
"kind": "dark",
|
|
5
|
+
"colors": {
|
|
6
|
+
"background": "#2d2b57",
|
|
7
|
+
"panel": {
|
|
8
|
+
"bg": "#2d2b57",
|
|
9
|
+
"border": "#726c86",
|
|
10
|
+
"headerBg": "#2d2b57",
|
|
11
|
+
"headerFg": "#e3dfff"
|
|
12
|
+
},
|
|
13
|
+
"text": {
|
|
14
|
+
"primary": "#e3dfff",
|
|
15
|
+
"muted": "#B362FF",
|
|
16
|
+
"user": "#847ace",
|
|
17
|
+
"responder": "#fad000",
|
|
18
|
+
"thinking": "#726c86",
|
|
19
|
+
"tool": "#A5FF90"
|
|
20
|
+
},
|
|
21
|
+
"input": {
|
|
22
|
+
"bg": "#2d2b57",
|
|
23
|
+
"fg": "#e3dfff",
|
|
24
|
+
"placeholder": "#B362FF",
|
|
25
|
+
"border": "#726c86"
|
|
26
|
+
},
|
|
27
|
+
"status": {
|
|
28
|
+
"fg": "#A5FF90",
|
|
29
|
+
"muted": "#B362FF"
|
|
30
|
+
},
|
|
31
|
+
"accent": {
|
|
32
|
+
"primary": "#a599e9",
|
|
33
|
+
"secondary": "#ac65ff",
|
|
34
|
+
"warning": "#fad000",
|
|
35
|
+
"error": "#ff628c",
|
|
36
|
+
"success": "#A5FF90"
|
|
37
|
+
},
|
|
38
|
+
"selection": {
|
|
39
|
+
"fg": "#0f172a",
|
|
40
|
+
"bg": "#a599e9"
|
|
41
|
+
},
|
|
42
|
+
"diff": {
|
|
43
|
+
"addedBg": "#383E45",
|
|
44
|
+
"addedFg": "#e3dfff",
|
|
45
|
+
"removedBg": "#572244",
|
|
46
|
+
"removedFg": "#e3dfff"
|
|
47
|
+
},
|
|
48
|
+
"scrollbar": {
|
|
49
|
+
"thumb": "#a599e9",
|
|
50
|
+
"track": "#726c86"
|
|
51
|
+
},
|
|
52
|
+
"message": {
|
|
53
|
+
"userBorder": "#847ace",
|
|
54
|
+
"systemBorder": "#fad000",
|
|
55
|
+
"systemText": "#fad000",
|
|
56
|
+
"systemBg": "#3a3866"
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "Xcode",
|
|
3
|
+
"slug": "xcode",
|
|
4
|
+
"kind": "light",
|
|
5
|
+
"colors": {
|
|
6
|
+
"background": "#fff",
|
|
7
|
+
"panel": {
|
|
8
|
+
"bg": "#fff",
|
|
9
|
+
"border": "#c0c0c0",
|
|
10
|
+
"headerBg": "#fff",
|
|
11
|
+
"headerFg": "#444"
|
|
12
|
+
},
|
|
13
|
+
"text": {
|
|
14
|
+
"primary": "#444",
|
|
15
|
+
"muted": "#007400",
|
|
16
|
+
"user": "#0E0EFF",
|
|
17
|
+
"responder": "#836C28",
|
|
18
|
+
"thinking": "#c0c0c0",
|
|
19
|
+
"tool": "#007400"
|
|
20
|
+
},
|
|
21
|
+
"input": {
|
|
22
|
+
"bg": "#fff",
|
|
23
|
+
"fg": "#444",
|
|
24
|
+
"placeholder": "#007400",
|
|
25
|
+
"border": "#c0c0c0"
|
|
26
|
+
},
|
|
27
|
+
"status": {
|
|
28
|
+
"fg": "#007400",
|
|
29
|
+
"muted": "#007400"
|
|
30
|
+
},
|
|
31
|
+
"accent": {
|
|
32
|
+
"primary": "#1c00cf",
|
|
33
|
+
"secondary": "#aa0d91",
|
|
34
|
+
"warning": "#836C28",
|
|
35
|
+
"error": "#c41a16",
|
|
36
|
+
"success": "#007400"
|
|
37
|
+
},
|
|
38
|
+
"selection": {
|
|
39
|
+
"fg": "#f8fafc",
|
|
40
|
+
"bg": "#1c00cf"
|
|
41
|
+
},
|
|
42
|
+
"diff": {
|
|
43
|
+
"addedBg": "#C6EAD8",
|
|
44
|
+
"addedFg": "#444",
|
|
45
|
+
"removedBg": "#FEDEDE",
|
|
46
|
+
"removedFg": "#444"
|
|
47
|
+
},
|
|
48
|
+
"scrollbar": {
|
|
49
|
+
"thumb": "#1c00cf",
|
|
50
|
+
"track": "#c0c0c0"
|
|
51
|
+
},
|
|
52
|
+
"message": {
|
|
53
|
+
"userBorder": "#0E0EFF",
|
|
54
|
+
"systemBorder": "#836C28",
|
|
55
|
+
"systemText": "#836C28",
|
|
56
|
+
"systemBg": "#f5f5f5"
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
package/tsconfig.json
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
{
|
|
2
|
+
"compilerOptions": {
|
|
3
|
+
"target": "ES2022",
|
|
4
|
+
"module": "ESNext",
|
|
5
|
+
"moduleResolution": "bundler",
|
|
6
|
+
"lib": ["ESNext", "DOM", "DOM.Iterable"],
|
|
7
|
+
"jsx": "react-jsx",
|
|
8
|
+
"jsxImportSource": "@vybestack/opentui-react",
|
|
9
|
+
"strict": true,
|
|
10
|
+
"noImplicitAny": true,
|
|
11
|
+
"strictNullChecks": true,
|
|
12
|
+
"resolveJsonModule": true,
|
|
13
|
+
"esModuleInterop": true,
|
|
14
|
+
"allowSyntheticDefaultImports": true,
|
|
15
|
+
"allowImportingTsExtensions": true,
|
|
16
|
+
"noEmit": true,
|
|
17
|
+
"types": ["node", "bun", "vitest/globals"],
|
|
18
|
+
"skipLibCheck": true,
|
|
19
|
+
"baseUrl": ".",
|
|
20
|
+
"paths": {
|
|
21
|
+
"@vybestack/llxprt-code-core": ["../core/src/index.ts"],
|
|
22
|
+
"@vybestack/llxprt-code-core/*": ["../core/src/*"]
|
|
23
|
+
}
|
|
24
|
+
},
|
|
25
|
+
"include": ["src", "scripts"],
|
|
26
|
+
"exclude": ["node_modules", "dist"],
|
|
27
|
+
"references": [{ "path": "../core" }]
|
|
28
|
+
}
|