kader 0.1.5__tar.gz → 0.1.6__tar.gz
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.
- {kader-0.1.5 → kader-0.1.6}/PKG-INFO +1 -1
- {kader-0.1.5 → kader-0.1.6}/cli/app.py +0 -31
- kader-0.1.6/cli/app.tcss +289 -0
- {kader-0.1.5 → kader-0.1.6}/cli/utils.py +0 -5
- {kader-0.1.5 → kader-0.1.6}/pyproject.toml +1 -1
- {kader-0.1.5 → kader-0.1.6}/uv.lock +1 -1
- kader-0.1.5/cli/app.tcss +0 -664
- {kader-0.1.5 → kader-0.1.6}/.github/workflows/ci.yml +0 -0
- {kader-0.1.5 → kader-0.1.6}/.github/workflows/release.yml +0 -0
- {kader-0.1.5 → kader-0.1.6}/.gitignore +0 -0
- {kader-0.1.5 → kader-0.1.6}/.python-version +0 -0
- {kader-0.1.5 → kader-0.1.6}/.qwen/QWEN.md +0 -0
- {kader-0.1.5 → kader-0.1.6}/.qwen/agents/technical-writer.md +0 -0
- {kader-0.1.5 → kader-0.1.6}/.qwen/agents/test-automation-specialist.md +0 -0
- {kader-0.1.5 → kader-0.1.6}/README.md +0 -0
- {kader-0.1.5 → kader-0.1.6}/cli/README.md +0 -0
- {kader-0.1.5 → kader-0.1.6}/cli/__init__.py +0 -0
- {kader-0.1.5 → kader-0.1.6}/cli/__main__.py +0 -0
- {kader-0.1.5 → kader-0.1.6}/cli/widgets/__init__.py +0 -0
- {kader-0.1.5 → kader-0.1.6}/cli/widgets/confirmation.py +0 -0
- {kader-0.1.5 → kader-0.1.6}/cli/widgets/conversation.py +0 -0
- {kader-0.1.5 → kader-0.1.6}/cli/widgets/loading.py +0 -0
- {kader-0.1.5 → kader-0.1.6}/examples/.gitignore +0 -0
- {kader-0.1.5 → kader-0.1.6}/examples/README.md +0 -0
- {kader-0.1.5 → kader-0.1.6}/examples/memory_example.py +0 -0
- {kader-0.1.5 → kader-0.1.6}/examples/ollama_example.py +0 -0
- {kader-0.1.5 → kader-0.1.6}/examples/planning_agent_example.py +0 -0
- {kader-0.1.5 → kader-0.1.6}/examples/python_developer/main.py +0 -0
- {kader-0.1.5 → kader-0.1.6}/examples/python_developer/template.yaml +0 -0
- {kader-0.1.5 → kader-0.1.6}/examples/react_agent_example.py +0 -0
- {kader-0.1.5 → kader-0.1.6}/examples/simple_agent.py +0 -0
- {kader-0.1.5 → kader-0.1.6}/examples/todo_agent/main.py +0 -0
- {kader-0.1.5 → kader-0.1.6}/examples/tools_example.py +0 -0
- {kader-0.1.5 → kader-0.1.6}/kader/__init__.py +0 -0
- {kader-0.1.5 → kader-0.1.6}/kader/agent/__init__.py +0 -0
- {kader-0.1.5 → kader-0.1.6}/kader/agent/agents.py +0 -0
- {kader-0.1.5 → kader-0.1.6}/kader/agent/base.py +0 -0
- {kader-0.1.5 → kader-0.1.6}/kader/agent/logger.py +0 -0
- {kader-0.1.5 → kader-0.1.6}/kader/config.py +0 -0
- {kader-0.1.5 → kader-0.1.6}/kader/memory/__init__.py +0 -0
- {kader-0.1.5 → kader-0.1.6}/kader/memory/conversation.py +0 -0
- {kader-0.1.5 → kader-0.1.6}/kader/memory/session.py +0 -0
- {kader-0.1.5 → kader-0.1.6}/kader/memory/state.py +0 -0
- {kader-0.1.5 → kader-0.1.6}/kader/memory/types.py +0 -0
- {kader-0.1.5 → kader-0.1.6}/kader/prompts/__init__.py +0 -0
- {kader-0.1.5 → kader-0.1.6}/kader/prompts/agent_prompts.py +0 -0
- {kader-0.1.5 → kader-0.1.6}/kader/prompts/base.py +0 -0
- {kader-0.1.5 → kader-0.1.6}/kader/prompts/templates/planning_agent.j2 +0 -0
- {kader-0.1.5 → kader-0.1.6}/kader/prompts/templates/react_agent.j2 +0 -0
- {kader-0.1.5 → kader-0.1.6}/kader/providers/__init__.py +0 -0
- {kader-0.1.5 → kader-0.1.6}/kader/providers/base.py +0 -0
- {kader-0.1.5 → kader-0.1.6}/kader/providers/mock.py +0 -0
- {kader-0.1.5 → kader-0.1.6}/kader/providers/ollama.py +0 -0
- {kader-0.1.5 → kader-0.1.6}/kader/tools/README.md +0 -0
- {kader-0.1.5 → kader-0.1.6}/kader/tools/__init__.py +0 -0
- {kader-0.1.5 → kader-0.1.6}/kader/tools/base.py +0 -0
- {kader-0.1.5 → kader-0.1.6}/kader/tools/exec_commands.py +0 -0
- {kader-0.1.5 → kader-0.1.6}/kader/tools/filesys.py +0 -0
- {kader-0.1.5 → kader-0.1.6}/kader/tools/filesystem.py +0 -0
- {kader-0.1.5 → kader-0.1.6}/kader/tools/protocol.py +0 -0
- {kader-0.1.5 → kader-0.1.6}/kader/tools/rag.py +0 -0
- {kader-0.1.5 → kader-0.1.6}/kader/tools/todo.py +0 -0
- {kader-0.1.5 → kader-0.1.6}/kader/tools/utils.py +0 -0
- {kader-0.1.5 → kader-0.1.6}/kader/tools/web.py +0 -0
- {kader-0.1.5 → kader-0.1.6}/tests/conftest.py +0 -0
- {kader-0.1.5 → kader-0.1.6}/tests/providers/test_mock.py +0 -0
- {kader-0.1.5 → kader-0.1.6}/tests/providers/test_ollama.py +0 -0
- {kader-0.1.5 → kader-0.1.6}/tests/providers/test_providers_base.py +0 -0
- {kader-0.1.5 → kader-0.1.6}/tests/test_agent_logger.py +0 -0
- {kader-0.1.5 → kader-0.1.6}/tests/test_agent_logger_integration.py +0 -0
- {kader-0.1.5 → kader-0.1.6}/tests/test_base_agent.py +0 -0
- {kader-0.1.5 → kader-0.1.6}/tests/test_file_memory.py +0 -0
- {kader-0.1.5 → kader-0.1.6}/tests/test_todo_tool.py +0 -0
- {kader-0.1.5 → kader-0.1.6}/tests/tools/test_exec_commands.py +0 -0
- {kader-0.1.5 → kader-0.1.6}/tests/tools/test_filesys_tools.py +0 -0
- {kader-0.1.5 → kader-0.1.6}/tests/tools/test_filesystem_tools.py +0 -0
- {kader-0.1.5 → kader-0.1.6}/tests/tools/test_rag.py +0 -0
- {kader-0.1.5 → kader-0.1.6}/tests/tools/test_tools_base.py +0 -0
- {kader-0.1.5 → kader-0.1.6}/tests/tools/test_web.py +0 -0
|
@@ -29,7 +29,6 @@ from kader.tools import get_default_registry
|
|
|
29
29
|
from .utils import (
|
|
30
30
|
DEFAULT_MODEL,
|
|
31
31
|
HELP_TEXT,
|
|
32
|
-
THEME_NAMES,
|
|
33
32
|
)
|
|
34
33
|
from .widgets import ConversationView, InlineSelector, LoadingSpinner, ModelSelector
|
|
35
34
|
|
|
@@ -51,7 +50,6 @@ Type a message below to start chatting, or use one of the commands:
|
|
|
51
50
|
|
|
52
51
|
- `/help` - Show available commands
|
|
53
52
|
- `/models` - View available LLM models
|
|
54
|
-
- `/theme` - Change the color theme
|
|
55
53
|
- `/clear` - Clear the conversation
|
|
56
54
|
- `/save` - Save current session
|
|
57
55
|
- `/load` - Load a saved session
|
|
@@ -83,7 +81,6 @@ class KaderApp(App):
|
|
|
83
81
|
BINDINGS = [
|
|
84
82
|
Binding("ctrl+q", "quit", "Quit"),
|
|
85
83
|
Binding("ctrl+l", "clear", "Clear"),
|
|
86
|
-
Binding("ctrl+t", "cycle_theme", "Theme"),
|
|
87
84
|
Binding("ctrl+s", "save_session", "Save"),
|
|
88
85
|
Binding("ctrl+r", "refresh_tree", "Refresh"),
|
|
89
86
|
Binding("tab", "focus_next", "Next", show=False),
|
|
@@ -92,7 +89,6 @@ class KaderApp(App):
|
|
|
92
89
|
|
|
93
90
|
def __init__(self) -> None:
|
|
94
91
|
super().__init__()
|
|
95
|
-
self._current_theme_index = 0
|
|
96
92
|
self._is_processing = False
|
|
97
93
|
self._current_model = DEFAULT_MODEL
|
|
98
94
|
self._current_session_id: str | None = None
|
|
@@ -433,12 +429,6 @@ Please resize your terminal."""
|
|
|
433
429
|
conversation.add_message(HELP_TEXT, "assistant")
|
|
434
430
|
elif cmd == "/models":
|
|
435
431
|
await self._show_model_selector(conversation)
|
|
436
|
-
elif cmd == "/theme":
|
|
437
|
-
self._cycle_theme()
|
|
438
|
-
theme_name = THEME_NAMES[self._current_theme_index]
|
|
439
|
-
conversation.add_message(
|
|
440
|
-
f"{{~}} Theme changed to **{theme_name}**!", "assistant"
|
|
441
|
-
)
|
|
442
432
|
elif cmd == "/clear":
|
|
443
433
|
conversation.clear_messages()
|
|
444
434
|
self._agent.memory.clear()
|
|
@@ -522,21 +512,6 @@ Please resize your terminal."""
|
|
|
522
512
|
# Auto-refresh directory tree in case agent created/modified files
|
|
523
513
|
self._refresh_directory_tree()
|
|
524
514
|
|
|
525
|
-
def _cycle_theme(self) -> None:
|
|
526
|
-
"""Cycle through available themes."""
|
|
527
|
-
# Remove current theme class if it's not dark
|
|
528
|
-
current_theme = THEME_NAMES[self._current_theme_index]
|
|
529
|
-
if current_theme != "dark":
|
|
530
|
-
self.remove_class(f"theme-{current_theme}")
|
|
531
|
-
|
|
532
|
-
# Move to next theme
|
|
533
|
-
self._current_theme_index = (self._current_theme_index + 1) % len(THEME_NAMES)
|
|
534
|
-
new_theme = THEME_NAMES[self._current_theme_index]
|
|
535
|
-
|
|
536
|
-
# Apply new theme class (dark is default, no class needed)
|
|
537
|
-
if new_theme != "dark":
|
|
538
|
-
self.add_class(f"theme-{new_theme}")
|
|
539
|
-
|
|
540
515
|
def action_clear(self) -> None:
|
|
541
516
|
"""Clear the conversation (Ctrl+L)."""
|
|
542
517
|
conversation = self.query_one("#conversation-view", ConversationView)
|
|
@@ -544,12 +519,6 @@ Please resize your terminal."""
|
|
|
544
519
|
self._agent.memory.clear()
|
|
545
520
|
self.notify("Conversation cleared!", severity="information")
|
|
546
521
|
|
|
547
|
-
def action_cycle_theme(self) -> None:
|
|
548
|
-
"""Cycle theme (Ctrl+T)."""
|
|
549
|
-
self._cycle_theme()
|
|
550
|
-
theme_name = THEME_NAMES[self._current_theme_index]
|
|
551
|
-
self.notify(f"Theme: {theme_name}", severity="information")
|
|
552
|
-
|
|
553
522
|
def action_save_session(self) -> None:
|
|
554
523
|
"""Save session (Ctrl+S)."""
|
|
555
524
|
conversation = self.query_one("#conversation-view", ConversationView)
|
kader-0.1.6/cli/app.tcss
ADDED
|
@@ -0,0 +1,289 @@
|
|
|
1
|
+
/* Kader CLI - Modern Terminal UI Stylesheet */
|
|
2
|
+
|
|
3
|
+
/* ===== Color Themes ===== */
|
|
4
|
+
|
|
5
|
+
/* Default Dark Theme */
|
|
6
|
+
$primary: #7c3aed;
|
|
7
|
+
$secondary: #06b6d4;
|
|
8
|
+
$success: #10b981;
|
|
9
|
+
$warning: #f59e0b;
|
|
10
|
+
$error: #ef4444;
|
|
11
|
+
$surface: #1e1e2e;
|
|
12
|
+
$background: #11111b;
|
|
13
|
+
$text: #cdd6f4;
|
|
14
|
+
$text-muted: #6c7086;
|
|
15
|
+
|
|
16
|
+
/* ===== Root App ===== */
|
|
17
|
+
|
|
18
|
+
Screen {
|
|
19
|
+
background: $background;
|
|
20
|
+
min-width: 89;
|
|
21
|
+
min-height: 29;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
/* ===== Size Warning Overlay ===== */
|
|
25
|
+
|
|
26
|
+
#size-warning {
|
|
27
|
+
dock: top;
|
|
28
|
+
width: 100%;
|
|
29
|
+
height: 100%;
|
|
30
|
+
background: $background 95%;
|
|
31
|
+
color: $warning;
|
|
32
|
+
text-align: center;
|
|
33
|
+
content-align: center middle;
|
|
34
|
+
text-style: bold;
|
|
35
|
+
padding: 2;
|
|
36
|
+
layer: overlay;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
/* ===== Header ===== */
|
|
40
|
+
|
|
41
|
+
Header {
|
|
42
|
+
background: $primary;
|
|
43
|
+
color: $text;
|
|
44
|
+
text-style: bold;
|
|
45
|
+
height: 1;
|
|
46
|
+
dock: top;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
/* ===== Footer ===== */
|
|
50
|
+
|
|
51
|
+
Footer {
|
|
52
|
+
background: $surface;
|
|
53
|
+
color: $text-muted;
|
|
54
|
+
height: 1;
|
|
55
|
+
dock: bottom;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
FooterKey {
|
|
59
|
+
background: transparent;
|
|
60
|
+
color: $text-muted;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
FooterKey > .footer-key--key {
|
|
64
|
+
background: $primary;
|
|
65
|
+
color: $text;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
/* ===== Main Layout ===== */
|
|
69
|
+
|
|
70
|
+
#main-container {
|
|
71
|
+
layout: horizontal;
|
|
72
|
+
height: 1fr;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
/* ===== Sidebar (Directory Tree) ===== */
|
|
76
|
+
|
|
77
|
+
#sidebar {
|
|
78
|
+
width: 22;
|
|
79
|
+
min-width: 18;
|
|
80
|
+
max-width: 35;
|
|
81
|
+
background: $surface;
|
|
82
|
+
border-right: thick $primary;
|
|
83
|
+
padding: 0;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
#sidebar-title {
|
|
87
|
+
background: $primary 20%;
|
|
88
|
+
color: $text;
|
|
89
|
+
text-style: bold;
|
|
90
|
+
padding: 1;
|
|
91
|
+
text-align: center;
|
|
92
|
+
height: 3;
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
DirectoryTree {
|
|
96
|
+
background: transparent;
|
|
97
|
+
padding: 0 1;
|
|
98
|
+
scrollbar-size: 1 1;
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
DirectoryTree > .directory-tree--folder {
|
|
102
|
+
color: $secondary;
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
DirectoryTree > .directory-tree--file {
|
|
106
|
+
color: $text;
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
DirectoryTree > .directory-tree--extension {
|
|
110
|
+
color: $text-muted;
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
DirectoryTree:focus > .directory-tree--cursor {
|
|
114
|
+
background: $primary 40%;
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
/* ===== Content Area ===== */
|
|
118
|
+
|
|
119
|
+
#content-area {
|
|
120
|
+
width: 1fr;
|
|
121
|
+
layout: vertical;
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
/* ===== Conversation ===== */
|
|
125
|
+
|
|
126
|
+
#conversation {
|
|
127
|
+
height: 1fr;
|
|
128
|
+
background: $background;
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
ConversationView {
|
|
132
|
+
scrollbar-size: 1 1;
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
/* ===== Welcome Message ===== */
|
|
136
|
+
|
|
137
|
+
#welcome {
|
|
138
|
+
padding: 2 4;
|
|
139
|
+
text-align: center;
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
#welcome Markdown {
|
|
143
|
+
text-align: center;
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
/* ===== Input Area ===== */
|
|
147
|
+
|
|
148
|
+
#input-container {
|
|
149
|
+
height: auto;
|
|
150
|
+
min-height: 4;
|
|
151
|
+
max-height: 7;
|
|
152
|
+
background: $background;
|
|
153
|
+
padding: 1;
|
|
154
|
+
margin-bottom: 1;
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
#prompt-input {
|
|
158
|
+
background: transparent;
|
|
159
|
+
border: round $primary;
|
|
160
|
+
padding: 0 1;
|
|
161
|
+
height: 3;
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
#prompt-input:focus {
|
|
165
|
+
border: round $secondary;
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
Input.-valid {
|
|
169
|
+
border: round $success;
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
Input > .input--placeholder {
|
|
173
|
+
color: $text-muted;
|
|
174
|
+
text-style: italic;
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
/* ===== Loading Spinner ===== */
|
|
178
|
+
|
|
179
|
+
LoadingSpinner {
|
|
180
|
+
background: $surface;
|
|
181
|
+
margin: 0 2;
|
|
182
|
+
padding: 1;
|
|
183
|
+
border-left: thick $warning;
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
/* ===== Command Hints in Footer ===== */
|
|
187
|
+
|
|
188
|
+
#command-hints {
|
|
189
|
+
dock: bottom;
|
|
190
|
+
height: 1;
|
|
191
|
+
background: $surface;
|
|
192
|
+
padding: 0 1;
|
|
193
|
+
text-align: center;
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
.command-hint {
|
|
197
|
+
margin: 0 1;
|
|
198
|
+
color: $text-muted;
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
.command-key {
|
|
202
|
+
color: $primary;
|
|
203
|
+
text-style: bold;
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
/* ===== Markdown Styling ===== */
|
|
207
|
+
|
|
208
|
+
Markdown {
|
|
209
|
+
margin: 0;
|
|
210
|
+
padding: 0;
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
MarkdownH1 {
|
|
214
|
+
color: $primary;
|
|
215
|
+
text-style: bold underline;
|
|
216
|
+
margin: 1 0;
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
MarkdownH2 {
|
|
220
|
+
color: $secondary;
|
|
221
|
+
text-style: bold;
|
|
222
|
+
margin: 1 0;
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
MarkdownH3 {
|
|
226
|
+
color: $success;
|
|
227
|
+
text-style: bold;
|
|
228
|
+
margin: 1 0;
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
MarkdownFence {
|
|
232
|
+
background: $surface;
|
|
233
|
+
border: round #6c7086;
|
|
234
|
+
margin: 1 0;
|
|
235
|
+
padding: 1;
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
MarkdownBlockQuote {
|
|
239
|
+
background: $primary 10%;
|
|
240
|
+
border-left: thick $primary;
|
|
241
|
+
padding: 0 1;
|
|
242
|
+
margin: 1 0;
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
MarkdownBulletList {
|
|
246
|
+
margin: 0;
|
|
247
|
+
padding-left: 2;
|
|
248
|
+
}
|
|
249
|
+
|
|
250
|
+
MarkdownTable {
|
|
251
|
+
margin: 1 0;
|
|
252
|
+
}
|
|
253
|
+
|
|
254
|
+
MarkdownTH {
|
|
255
|
+
background: $primary 20%;
|
|
256
|
+
text-style: bold;
|
|
257
|
+
}
|
|
258
|
+
|
|
259
|
+
MarkdownTD {
|
|
260
|
+
padding: 0 1;
|
|
261
|
+
}
|
|
262
|
+
|
|
263
|
+
/* ===== Scrollbars ===== */
|
|
264
|
+
|
|
265
|
+
Scrollbar {
|
|
266
|
+
background: $surface;
|
|
267
|
+
}
|
|
268
|
+
|
|
269
|
+
ScrollbarSlider {
|
|
270
|
+
color: $primary;
|
|
271
|
+
}
|
|
272
|
+
|
|
273
|
+
ScrollbarSlider:hover {
|
|
274
|
+
color: $secondary;
|
|
275
|
+
}
|
|
276
|
+
|
|
277
|
+
/* ===== Scrollbars ===== */
|
|
278
|
+
|
|
279
|
+
Scrollbar {
|
|
280
|
+
background: $surface;
|
|
281
|
+
}
|
|
282
|
+
|
|
283
|
+
ScrollbarSlider {
|
|
284
|
+
color: $primary;
|
|
285
|
+
}
|
|
286
|
+
|
|
287
|
+
ScrollbarSlider:hover {
|
|
288
|
+
color: $secondary;
|
|
289
|
+
}
|
|
@@ -2,9 +2,6 @@
|
|
|
2
2
|
|
|
3
3
|
from kader.providers import OllamaProvider
|
|
4
4
|
|
|
5
|
-
# Theme names for cycling
|
|
6
|
-
THEME_NAMES = ["dark", "ocean", "forest", "sunset"]
|
|
7
|
-
|
|
8
5
|
# Default model
|
|
9
6
|
DEFAULT_MODEL = "qwen3-coder:480b-cloud"
|
|
10
7
|
|
|
@@ -13,7 +10,6 @@ HELP_TEXT = """## Kader CLI Commands
|
|
|
13
10
|
| Command | Description |
|
|
14
11
|
|---------|-------------|
|
|
15
12
|
| `/models` | Show available LLM models |
|
|
16
|
-
| `/theme` | Cycle through color themes |
|
|
17
13
|
| `/help` | Show this help message |
|
|
18
14
|
| `/clear` | Clear the conversation |
|
|
19
15
|
| `/save` | Save current session |
|
|
@@ -28,7 +24,6 @@ HELP_TEXT = """## Kader CLI Commands
|
|
|
28
24
|
| Shortcut | Action |
|
|
29
25
|
|----------|--------|
|
|
30
26
|
| `Ctrl+L` | Clear conversation |
|
|
31
|
-
| `Ctrl+T` | Cycle theme |
|
|
32
27
|
| `Ctrl+S` | Save session |
|
|
33
28
|
| `Ctrl+R` | Refresh file tree |
|
|
34
29
|
| `Ctrl+Q` | Quit |
|
kader-0.1.5/cli/app.tcss
DELETED
|
@@ -1,664 +0,0 @@
|
|
|
1
|
-
/* Kader CLI - Modern Terminal UI Stylesheet */
|
|
2
|
-
|
|
3
|
-
/* ===== Color Themes ===== */
|
|
4
|
-
|
|
5
|
-
/* Default Dark Theme */
|
|
6
|
-
$primary: #7c3aed;
|
|
7
|
-
$secondary: #06b6d4;
|
|
8
|
-
$success: #10b981;
|
|
9
|
-
$warning: #f59e0b;
|
|
10
|
-
$error: #ef4444;
|
|
11
|
-
$surface: #1e1e2e;
|
|
12
|
-
$background: #11111b;
|
|
13
|
-
$text: #cdd6f4;
|
|
14
|
-
$text-muted: #6c7086;
|
|
15
|
-
|
|
16
|
-
/* ===== Root App ===== */
|
|
17
|
-
|
|
18
|
-
Screen {
|
|
19
|
-
background: $background;
|
|
20
|
-
min-width: 89;
|
|
21
|
-
min-height: 29;
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
/* ===== Size Warning Overlay ===== */
|
|
25
|
-
|
|
26
|
-
#size-warning {
|
|
27
|
-
dock: top;
|
|
28
|
-
width: 100%;
|
|
29
|
-
height: 100%;
|
|
30
|
-
background: $background 95%;
|
|
31
|
-
color: $warning;
|
|
32
|
-
text-align: center;
|
|
33
|
-
content-align: center middle;
|
|
34
|
-
text-style: bold;
|
|
35
|
-
padding: 2;
|
|
36
|
-
layer: overlay;
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
/* ===== Header ===== */
|
|
40
|
-
|
|
41
|
-
Header {
|
|
42
|
-
background: $primary;
|
|
43
|
-
color: $text;
|
|
44
|
-
text-style: bold;
|
|
45
|
-
height: 1;
|
|
46
|
-
dock: top;
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
/* ===== Footer ===== */
|
|
50
|
-
|
|
51
|
-
Footer {
|
|
52
|
-
background: $surface;
|
|
53
|
-
color: $text-muted;
|
|
54
|
-
height: 1;
|
|
55
|
-
dock: bottom;
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
FooterKey {
|
|
59
|
-
background: transparent;
|
|
60
|
-
color: $text-muted;
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
FooterKey > .footer-key--key {
|
|
64
|
-
background: $primary;
|
|
65
|
-
color: $text;
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
/* ===== Main Layout ===== */
|
|
69
|
-
|
|
70
|
-
#main-container {
|
|
71
|
-
layout: horizontal;
|
|
72
|
-
height: 1fr;
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
/* ===== Sidebar (Directory Tree) ===== */
|
|
76
|
-
|
|
77
|
-
#sidebar {
|
|
78
|
-
width: 22;
|
|
79
|
-
min-width: 18;
|
|
80
|
-
max-width: 35;
|
|
81
|
-
background: $surface;
|
|
82
|
-
border-right: thick $primary;
|
|
83
|
-
padding: 0;
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
#sidebar-title {
|
|
87
|
-
background: $primary 20%;
|
|
88
|
-
color: $text;
|
|
89
|
-
text-style: bold;
|
|
90
|
-
padding: 1;
|
|
91
|
-
text-align: center;
|
|
92
|
-
height: 3;
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
DirectoryTree {
|
|
96
|
-
background: transparent;
|
|
97
|
-
padding: 0 1;
|
|
98
|
-
scrollbar-size: 1 1;
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
DirectoryTree > .directory-tree--folder {
|
|
102
|
-
color: $secondary;
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
DirectoryTree > .directory-tree--file {
|
|
106
|
-
color: $text;
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
DirectoryTree > .directory-tree--extension {
|
|
110
|
-
color: $text-muted;
|
|
111
|
-
}
|
|
112
|
-
|
|
113
|
-
DirectoryTree:focus > .directory-tree--cursor {
|
|
114
|
-
background: $primary 40%;
|
|
115
|
-
}
|
|
116
|
-
|
|
117
|
-
/* ===== Content Area ===== */
|
|
118
|
-
|
|
119
|
-
#content-area {
|
|
120
|
-
width: 1fr;
|
|
121
|
-
layout: vertical;
|
|
122
|
-
}
|
|
123
|
-
|
|
124
|
-
/* ===== Conversation ===== */
|
|
125
|
-
|
|
126
|
-
#conversation {
|
|
127
|
-
height: 1fr;
|
|
128
|
-
background: $background;
|
|
129
|
-
}
|
|
130
|
-
|
|
131
|
-
ConversationView {
|
|
132
|
-
scrollbar-size: 1 1;
|
|
133
|
-
}
|
|
134
|
-
|
|
135
|
-
/* ===== Welcome Message ===== */
|
|
136
|
-
|
|
137
|
-
#welcome {
|
|
138
|
-
padding: 2 4;
|
|
139
|
-
text-align: center;
|
|
140
|
-
}
|
|
141
|
-
|
|
142
|
-
#welcome Markdown {
|
|
143
|
-
text-align: center;
|
|
144
|
-
}
|
|
145
|
-
|
|
146
|
-
/* ===== Input Area ===== */
|
|
147
|
-
|
|
148
|
-
#input-container {
|
|
149
|
-
height: auto;
|
|
150
|
-
min-height: 4;
|
|
151
|
-
max-height: 7;
|
|
152
|
-
background: $background;
|
|
153
|
-
padding: 1;
|
|
154
|
-
margin-bottom: 1;
|
|
155
|
-
}
|
|
156
|
-
|
|
157
|
-
#prompt-input {
|
|
158
|
-
background: transparent;
|
|
159
|
-
border: round $primary;
|
|
160
|
-
padding: 0 1;
|
|
161
|
-
height: 3;
|
|
162
|
-
}
|
|
163
|
-
|
|
164
|
-
#prompt-input:focus {
|
|
165
|
-
border: round $secondary;
|
|
166
|
-
}
|
|
167
|
-
|
|
168
|
-
Input.-valid {
|
|
169
|
-
border: round $success;
|
|
170
|
-
}
|
|
171
|
-
|
|
172
|
-
Input > .input--placeholder {
|
|
173
|
-
color: $text-muted;
|
|
174
|
-
text-style: italic;
|
|
175
|
-
}
|
|
176
|
-
|
|
177
|
-
/* ===== Loading Spinner ===== */
|
|
178
|
-
|
|
179
|
-
LoadingSpinner {
|
|
180
|
-
background: $surface;
|
|
181
|
-
margin: 0 2;
|
|
182
|
-
padding: 1;
|
|
183
|
-
border-left: thick $warning;
|
|
184
|
-
}
|
|
185
|
-
|
|
186
|
-
/* ===== Command Hints in Footer ===== */
|
|
187
|
-
|
|
188
|
-
#command-hints {
|
|
189
|
-
dock: bottom;
|
|
190
|
-
height: 1;
|
|
191
|
-
background: $surface;
|
|
192
|
-
padding: 0 1;
|
|
193
|
-
text-align: center;
|
|
194
|
-
}
|
|
195
|
-
|
|
196
|
-
.command-hint {
|
|
197
|
-
margin: 0 1;
|
|
198
|
-
color: $text-muted;
|
|
199
|
-
}
|
|
200
|
-
|
|
201
|
-
.command-key {
|
|
202
|
-
color: $primary;
|
|
203
|
-
text-style: bold;
|
|
204
|
-
}
|
|
205
|
-
|
|
206
|
-
/* ===== Markdown Styling ===== */
|
|
207
|
-
|
|
208
|
-
Markdown {
|
|
209
|
-
margin: 0;
|
|
210
|
-
padding: 0;
|
|
211
|
-
}
|
|
212
|
-
|
|
213
|
-
MarkdownH1 {
|
|
214
|
-
color: $primary;
|
|
215
|
-
text-style: bold underline;
|
|
216
|
-
margin: 1 0;
|
|
217
|
-
}
|
|
218
|
-
|
|
219
|
-
MarkdownH2 {
|
|
220
|
-
color: $secondary;
|
|
221
|
-
text-style: bold;
|
|
222
|
-
margin: 1 0;
|
|
223
|
-
}
|
|
224
|
-
|
|
225
|
-
MarkdownH3 {
|
|
226
|
-
color: $success;
|
|
227
|
-
text-style: bold;
|
|
228
|
-
margin: 1 0;
|
|
229
|
-
}
|
|
230
|
-
|
|
231
|
-
MarkdownFence {
|
|
232
|
-
background: $surface;
|
|
233
|
-
border: round #6c7086;
|
|
234
|
-
margin: 1 0;
|
|
235
|
-
padding: 1;
|
|
236
|
-
}
|
|
237
|
-
|
|
238
|
-
MarkdownBlockQuote {
|
|
239
|
-
background: $primary 10%;
|
|
240
|
-
border-left: thick $primary;
|
|
241
|
-
padding: 0 1;
|
|
242
|
-
margin: 1 0;
|
|
243
|
-
}
|
|
244
|
-
|
|
245
|
-
MarkdownBulletList {
|
|
246
|
-
margin: 0;
|
|
247
|
-
padding-left: 2;
|
|
248
|
-
}
|
|
249
|
-
|
|
250
|
-
MarkdownTable {
|
|
251
|
-
margin: 1 0;
|
|
252
|
-
}
|
|
253
|
-
|
|
254
|
-
MarkdownTH {
|
|
255
|
-
background: $primary 20%;
|
|
256
|
-
text-style: bold;
|
|
257
|
-
}
|
|
258
|
-
|
|
259
|
-
MarkdownTD {
|
|
260
|
-
padding: 0 1;
|
|
261
|
-
}
|
|
262
|
-
|
|
263
|
-
/* ===== Scrollbars ===== */
|
|
264
|
-
|
|
265
|
-
Scrollbar {
|
|
266
|
-
background: $surface;
|
|
267
|
-
}
|
|
268
|
-
|
|
269
|
-
ScrollbarSlider {
|
|
270
|
-
color: $primary;
|
|
271
|
-
}
|
|
272
|
-
|
|
273
|
-
ScrollbarSlider:hover {
|
|
274
|
-
color: $secondary;
|
|
275
|
-
}
|
|
276
|
-
|
|
277
|
-
/* ===== Theme Variants ===== */
|
|
278
|
-
|
|
279
|
-
/* Ocean Theme */
|
|
280
|
-
.theme-ocean Screen {
|
|
281
|
-
background: #0f172a;
|
|
282
|
-
}
|
|
283
|
-
|
|
284
|
-
.theme-ocean Header {
|
|
285
|
-
background: #3b82f6;
|
|
286
|
-
color: #f1f5f9;
|
|
287
|
-
}
|
|
288
|
-
|
|
289
|
-
.theme-ocean Footer {
|
|
290
|
-
background: #1e293b;
|
|
291
|
-
color: #94a3b8;
|
|
292
|
-
}
|
|
293
|
-
|
|
294
|
-
.theme-ocean FooterKey > .footer-key--key {
|
|
295
|
-
background: #3b82f6;
|
|
296
|
-
color: #f1f5f9;
|
|
297
|
-
}
|
|
298
|
-
|
|
299
|
-
.theme-ocean #sidebar {
|
|
300
|
-
background: #1e293b;
|
|
301
|
-
border-right: thick #3b82f6;
|
|
302
|
-
}
|
|
303
|
-
|
|
304
|
-
.theme-ocean #sidebar-title {
|
|
305
|
-
background: #3b82f6 20%;
|
|
306
|
-
color: #f1f5f9;
|
|
307
|
-
}
|
|
308
|
-
|
|
309
|
-
.theme-ocean DirectoryTree > .directory-tree--folder {
|
|
310
|
-
color: #06b6d4;
|
|
311
|
-
}
|
|
312
|
-
|
|
313
|
-
.theme-ocean DirectoryTree > .directory-tree--file {
|
|
314
|
-
color: #f1f5f9;
|
|
315
|
-
}
|
|
316
|
-
|
|
317
|
-
.theme-ocean DirectoryTree > .directory-tree--extension {
|
|
318
|
-
color: #94a3b8;
|
|
319
|
-
}
|
|
320
|
-
|
|
321
|
-
.theme-ocean DirectoryTree:focus > .directory-tree--cursor {
|
|
322
|
-
background: #3b82f6 40%;
|
|
323
|
-
}
|
|
324
|
-
|
|
325
|
-
.theme-ocean #conversation {
|
|
326
|
-
background: #0f172a;
|
|
327
|
-
border-bottom: thick #1e293b;
|
|
328
|
-
}
|
|
329
|
-
|
|
330
|
-
.theme-ocean #input-container {
|
|
331
|
-
background: #1e293b;
|
|
332
|
-
border-top: thick #3b82f6;
|
|
333
|
-
}
|
|
334
|
-
|
|
335
|
-
.theme-ocean #prompt-input {
|
|
336
|
-
background: #0f172a;
|
|
337
|
-
border: round #3b82f6;
|
|
338
|
-
}
|
|
339
|
-
|
|
340
|
-
.theme-ocean #prompt-input:focus {
|
|
341
|
-
border: round #06b6d4;
|
|
342
|
-
}
|
|
343
|
-
|
|
344
|
-
.theme-ocean Input.-valid {
|
|
345
|
-
border: round #10b981;
|
|
346
|
-
}
|
|
347
|
-
|
|
348
|
-
.theme-ocean Input > .input--placeholder {
|
|
349
|
-
color: #94a3b8;
|
|
350
|
-
text-style: italic;
|
|
351
|
-
}
|
|
352
|
-
|
|
353
|
-
.theme-ocean LoadingSpinner {
|
|
354
|
-
background: #1e293b;
|
|
355
|
-
border-left: thick #f59e0b;
|
|
356
|
-
}
|
|
357
|
-
|
|
358
|
-
.theme-ocean #command-hints {
|
|
359
|
-
background: #1e293b;
|
|
360
|
-
}
|
|
361
|
-
|
|
362
|
-
.theme-ocean .command-hint {
|
|
363
|
-
color: #94a3b8;
|
|
364
|
-
}
|
|
365
|
-
|
|
366
|
-
.theme-ocean .command-key {
|
|
367
|
-
color: #3b82f6;
|
|
368
|
-
}
|
|
369
|
-
|
|
370
|
-
.theme-ocean MarkdownH1 {
|
|
371
|
-
color: #3b82f6;
|
|
372
|
-
}
|
|
373
|
-
|
|
374
|
-
.theme-ocean MarkdownH2 {
|
|
375
|
-
color: #06b6d4;
|
|
376
|
-
}
|
|
377
|
-
|
|
378
|
-
.theme-ocean MarkdownH3 {
|
|
379
|
-
color: #10b981;
|
|
380
|
-
}
|
|
381
|
-
|
|
382
|
-
.theme-ocean MarkdownFence {
|
|
383
|
-
background: #1e293b;
|
|
384
|
-
border: round #94a3b8;
|
|
385
|
-
}
|
|
386
|
-
|
|
387
|
-
.theme-ocean MarkdownBlockQuote {
|
|
388
|
-
background: #3b82f6 10%;
|
|
389
|
-
border-left: thick #3b82f6;
|
|
390
|
-
}
|
|
391
|
-
|
|
392
|
-
.theme-ocean MarkdownTH {
|
|
393
|
-
background: #3b82f6 20%;
|
|
394
|
-
}
|
|
395
|
-
|
|
396
|
-
.theme-ocean Scrollbar {
|
|
397
|
-
background: #1e293b;
|
|
398
|
-
}
|
|
399
|
-
|
|
400
|
-
.theme-ocean ScrollbarSlider {
|
|
401
|
-
color: #3b82f6;
|
|
402
|
-
}
|
|
403
|
-
|
|
404
|
-
.theme-ocean ScrollbarSlider:hover {
|
|
405
|
-
color: #06b6d4;
|
|
406
|
-
}
|
|
407
|
-
|
|
408
|
-
/* Forest Theme */
|
|
409
|
-
.theme-forest Screen {
|
|
410
|
-
background: #0d1f0d;
|
|
411
|
-
}
|
|
412
|
-
|
|
413
|
-
.theme-forest Header {
|
|
414
|
-
background: #16a34a;
|
|
415
|
-
color: #dcfce7;
|
|
416
|
-
}
|
|
417
|
-
|
|
418
|
-
.theme-forest Footer {
|
|
419
|
-
background: #0f2f0f;
|
|
420
|
-
color: #6ee7b7;
|
|
421
|
-
}
|
|
422
|
-
|
|
423
|
-
.theme-forest FooterKey > .footer-key--key {
|
|
424
|
-
background: #16a34a;
|
|
425
|
-
color: #dcfce7;
|
|
426
|
-
}
|
|
427
|
-
|
|
428
|
-
.theme-forest #sidebar {
|
|
429
|
-
background: #0f2f0f;
|
|
430
|
-
border-right: thick #16a34a;
|
|
431
|
-
}
|
|
432
|
-
|
|
433
|
-
.theme-forest #sidebar-title {
|
|
434
|
-
background: #16a34a 20%;
|
|
435
|
-
color: #dcfce7;
|
|
436
|
-
}
|
|
437
|
-
|
|
438
|
-
.theme-forest DirectoryTree > .directory-tree--folder {
|
|
439
|
-
color: #0891b2;
|
|
440
|
-
}
|
|
441
|
-
|
|
442
|
-
.theme-forest DirectoryTree > .directory-tree--file {
|
|
443
|
-
color: #dcfce7;
|
|
444
|
-
}
|
|
445
|
-
|
|
446
|
-
.theme-forest DirectoryTree > .directory-tree--extension {
|
|
447
|
-
color: #6ee7b7;
|
|
448
|
-
}
|
|
449
|
-
|
|
450
|
-
.theme-forest DirectoryTree:focus > .directory-tree--cursor {
|
|
451
|
-
background: #16a34a 40%;
|
|
452
|
-
}
|
|
453
|
-
|
|
454
|
-
.theme-forest #conversation {
|
|
455
|
-
background: #0d1f0d;
|
|
456
|
-
border-bottom: thick #0f2f0f;
|
|
457
|
-
}
|
|
458
|
-
|
|
459
|
-
.theme-forest #input-container {
|
|
460
|
-
background: #0f2f0f;
|
|
461
|
-
border-top: thick #16a34a;
|
|
462
|
-
}
|
|
463
|
-
|
|
464
|
-
.theme-forest #prompt-input {
|
|
465
|
-
background: #0d1f0d;
|
|
466
|
-
border: round #16a34a;
|
|
467
|
-
}
|
|
468
|
-
|
|
469
|
-
.theme-forest #prompt-input:focus {
|
|
470
|
-
border: round #0891b2;
|
|
471
|
-
}
|
|
472
|
-
|
|
473
|
-
.theme-forest Input.-valid {
|
|
474
|
-
border: round #22c55e;
|
|
475
|
-
}
|
|
476
|
-
|
|
477
|
-
.theme-forest Input > .input--placeholder {
|
|
478
|
-
color: #6ee7b7;
|
|
479
|
-
text-style: italic;
|
|
480
|
-
}
|
|
481
|
-
|
|
482
|
-
.theme-forest LoadingSpinner {
|
|
483
|
-
background: #0f2f0f;
|
|
484
|
-
border-left: thick #eab308;
|
|
485
|
-
}
|
|
486
|
-
|
|
487
|
-
.theme-forest #command-hints {
|
|
488
|
-
background: #0f2f0f;
|
|
489
|
-
}
|
|
490
|
-
|
|
491
|
-
.theme-forest .command-hint {
|
|
492
|
-
color: #6ee7b7;
|
|
493
|
-
}
|
|
494
|
-
|
|
495
|
-
.theme-forest .command-key {
|
|
496
|
-
color: #16a34a;
|
|
497
|
-
}
|
|
498
|
-
|
|
499
|
-
.theme-forest MarkdownH1 {
|
|
500
|
-
color: #16a34a;
|
|
501
|
-
}
|
|
502
|
-
|
|
503
|
-
.theme-forest MarkdownH2 {
|
|
504
|
-
color: #0891b2;
|
|
505
|
-
}
|
|
506
|
-
|
|
507
|
-
.theme-forest MarkdownH3 {
|
|
508
|
-
color: #22c55e;
|
|
509
|
-
}
|
|
510
|
-
|
|
511
|
-
.theme-forest MarkdownFence {
|
|
512
|
-
background: #0f2f0f;
|
|
513
|
-
border: round #6ee7b7;
|
|
514
|
-
}
|
|
515
|
-
|
|
516
|
-
.theme-forest MarkdownBlockQuote {
|
|
517
|
-
background: #16a34a 10%;
|
|
518
|
-
border-left: thick #16a34a;
|
|
519
|
-
}
|
|
520
|
-
|
|
521
|
-
.theme-forest MarkdownTH {
|
|
522
|
-
background: #16a34a 20%;
|
|
523
|
-
}
|
|
524
|
-
|
|
525
|
-
.theme-forest Scrollbar {
|
|
526
|
-
background: #0f2f0f;
|
|
527
|
-
}
|
|
528
|
-
|
|
529
|
-
.theme-forest ScrollbarSlider {
|
|
530
|
-
color: #16a34a;
|
|
531
|
-
}
|
|
532
|
-
|
|
533
|
-
.theme-forest ScrollbarSlider:hover {
|
|
534
|
-
color: #0891b2;
|
|
535
|
-
}
|
|
536
|
-
|
|
537
|
-
/* Sunset Theme */
|
|
538
|
-
.theme-sunset Screen {
|
|
539
|
-
background: #1f1315;
|
|
540
|
-
}
|
|
541
|
-
|
|
542
|
-
.theme-sunset Header {
|
|
543
|
-
background: #dc2626;
|
|
544
|
-
color: #fef2f2;
|
|
545
|
-
}
|
|
546
|
-
|
|
547
|
-
.theme-sunset Footer {
|
|
548
|
-
background: #2f171a;
|
|
549
|
-
color: #fecaca;
|
|
550
|
-
}
|
|
551
|
-
|
|
552
|
-
.theme-sunset FooterKey > .footer-key--key {
|
|
553
|
-
background: #dc2626;
|
|
554
|
-
color: #fef2f2;
|
|
555
|
-
}
|
|
556
|
-
|
|
557
|
-
.theme-sunset #sidebar {
|
|
558
|
-
background: #2f171a;
|
|
559
|
-
border-right: thick #dc2626;
|
|
560
|
-
}
|
|
561
|
-
|
|
562
|
-
.theme-sunset #sidebar-title {
|
|
563
|
-
background: #dc2626 20%;
|
|
564
|
-
color: #fef2f2;
|
|
565
|
-
}
|
|
566
|
-
|
|
567
|
-
.theme-sunset DirectoryTree > .directory-tree--folder {
|
|
568
|
-
color: #ea580c;
|
|
569
|
-
}
|
|
570
|
-
|
|
571
|
-
.theme-sunset DirectoryTree > .directory-tree--file {
|
|
572
|
-
color: #fef2f2;
|
|
573
|
-
}
|
|
574
|
-
|
|
575
|
-
.theme-sunset DirectoryTree > .directory-tree--extension {
|
|
576
|
-
color: #fecaca;
|
|
577
|
-
}
|
|
578
|
-
|
|
579
|
-
.theme-sunset DirectoryTree:focus > .directory-tree--cursor {
|
|
580
|
-
background: #dc2626 40%;
|
|
581
|
-
}
|
|
582
|
-
|
|
583
|
-
.theme-sunset #conversation {
|
|
584
|
-
background: #1f1315;
|
|
585
|
-
border-bottom: thick #2f171a;
|
|
586
|
-
}
|
|
587
|
-
|
|
588
|
-
.theme-sunset #input-container {
|
|
589
|
-
background: #2f171a;
|
|
590
|
-
border-top: thick #dc2626;
|
|
591
|
-
}
|
|
592
|
-
|
|
593
|
-
.theme-sunset #prompt-input {
|
|
594
|
-
background: #1f1315;
|
|
595
|
-
border: round #dc2626;
|
|
596
|
-
}
|
|
597
|
-
|
|
598
|
-
.theme-sunset #prompt-input:focus {
|
|
599
|
-
border: round #ea580c;
|
|
600
|
-
}
|
|
601
|
-
|
|
602
|
-
.theme-sunset Input.-valid {
|
|
603
|
-
border: round #16a34a;
|
|
604
|
-
}
|
|
605
|
-
|
|
606
|
-
.theme-sunset Input > .input--placeholder {
|
|
607
|
-
color: #fecaca;
|
|
608
|
-
text-style: italic;
|
|
609
|
-
}
|
|
610
|
-
|
|
611
|
-
.theme-sunset LoadingSpinner {
|
|
612
|
-
background: #2f171a;
|
|
613
|
-
border-left: thick #eab308;
|
|
614
|
-
}
|
|
615
|
-
|
|
616
|
-
.theme-sunset #command-hints {
|
|
617
|
-
background: #2f171a;
|
|
618
|
-
}
|
|
619
|
-
|
|
620
|
-
.theme-sunset .command-hint {
|
|
621
|
-
color: #fecaca;
|
|
622
|
-
}
|
|
623
|
-
|
|
624
|
-
.theme-sunset .command-key {
|
|
625
|
-
color: #dc2626;
|
|
626
|
-
}
|
|
627
|
-
|
|
628
|
-
.theme-sunset MarkdownH1 {
|
|
629
|
-
color: #dc2626;
|
|
630
|
-
}
|
|
631
|
-
|
|
632
|
-
.theme-sunset MarkdownH2 {
|
|
633
|
-
color: #ea580c;
|
|
634
|
-
}
|
|
635
|
-
|
|
636
|
-
.theme-sunset MarkdownH3 {
|
|
637
|
-
color: #16a34a;
|
|
638
|
-
}
|
|
639
|
-
|
|
640
|
-
.theme-sunset MarkdownFence {
|
|
641
|
-
background: #2f171a;
|
|
642
|
-
border: round #fecaca;
|
|
643
|
-
}
|
|
644
|
-
|
|
645
|
-
.theme-sunset MarkdownBlockQuote {
|
|
646
|
-
background: #dc2626 10%;
|
|
647
|
-
border-left: thick #dc2626;
|
|
648
|
-
}
|
|
649
|
-
|
|
650
|
-
.theme-sunset MarkdownTH {
|
|
651
|
-
background: #dc2626 20%;
|
|
652
|
-
}
|
|
653
|
-
|
|
654
|
-
.theme-sunset Scrollbar {
|
|
655
|
-
background: #2f171a;
|
|
656
|
-
}
|
|
657
|
-
|
|
658
|
-
.theme-sunset ScrollbarSlider {
|
|
659
|
-
color: #dc2626;
|
|
660
|
-
}
|
|
661
|
-
|
|
662
|
-
.theme-sunset ScrollbarSlider:hover {
|
|
663
|
-
color: #ea580c;
|
|
664
|
-
}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|