auq-mcp-server 2.6.4 → 2.7.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 +56 -2
- package/dist/bin/auq.js +36 -3
- package/dist/bin/tui-app.js +27 -6
- package/dist/package.json +7 -2
- package/dist/src/__tests__/schema-validation.test.js +61 -1
- package/dist/src/cli/commands/__tests__/fetch-answers.test.js +310 -0
- package/dist/src/cli/commands/__tests__/history.test.js +211 -0
- package/dist/src/cli/commands/answer.js +11 -0
- package/dist/src/cli/commands/config.js +48 -0
- package/dist/src/cli/commands/fetch-answers.js +205 -0
- package/dist/src/cli/commands/history.js +375 -0
- package/dist/src/config/__tests__/ConfigLoader.test.js +38 -0
- package/dist/src/config/defaults.js +1 -0
- package/dist/src/config/types.js +1 -0
- package/dist/src/core/ask-user-questions.js +63 -0
- package/dist/src/i18n/locales/en.js +2 -2
- package/dist/src/server.js +59 -2
- package/dist/src/session/ResponseFormatter.js +79 -2
- package/dist/src/session/SessionManager.js +36 -0
- package/dist/src/session/__tests__/ResponseFormatter.test.js +86 -0
- package/dist/src/session/__tests__/SessionManager.test.js +129 -0
- package/dist/src/shared/schemas.js +8 -0
- package/dist/src/tui/ThemeProvider.js +3 -3
- package/dist/src/tui/components/Header.js +2 -1
- package/dist/src/tui/components/OptionsList.js +1 -1
- package/dist/src/tui/components/SessionPicker.js +1 -1
- package/dist/src/tui/components/StepperView.js +1 -1
- package/dist/src/tui/components/__tests__/ConfirmationDialog.test.js +1 -1
- package/dist/src/tui/components/__tests__/Footer.test.js +1 -1
- package/dist/src/tui/components/__tests__/MarkdownPrompt.test.js +1 -1
- package/dist/src/tui/components/__tests__/ReviewScreen.test.js +1 -1
- package/dist/src/tui/components/__tests__/SessionDots.test.js +1 -1
- package/dist/src/tui/components/__tests__/SessionPicker.test.js +1 -1
- package/dist/src/tui/components/__tests__/StepperView.abandoned.test.js +1 -1
- package/dist/src/tui/components/__tests__/StepperView.keyboard.test.js +1 -1
- package/dist/src/tui/components/__tests__/StepperView.state.test.js +1 -1
- package/dist/src/tui/components/__tests__/WaitingScreen.test.js +1 -1
- package/dist/src/tui/shared/session-events.js +4 -0
- package/dist/src/tui/shared/themes/catppuccin-latte.js +130 -0
- package/dist/src/tui/shared/themes/catppuccin-mocha.js +131 -0
- package/dist/src/tui/shared/themes/dark.js +131 -0
- package/dist/src/tui/shared/themes/dracula.js +131 -0
- package/dist/src/tui/shared/themes/github-dark.js +129 -0
- package/dist/src/tui/shared/themes/github-light.js +129 -0
- package/dist/src/tui/shared/themes/gruvbox-dark.js +130 -0
- package/dist/src/tui/shared/themes/gruvbox-light.js +130 -0
- package/dist/src/tui/shared/themes/index.js +70 -0
- package/dist/src/tui/shared/themes/light.js +130 -0
- package/dist/src/tui/shared/themes/loader.js +111 -0
- package/dist/src/tui/shared/themes/monokai.js +132 -0
- package/dist/src/tui/shared/themes/nord.js +130 -0
- package/dist/src/tui/shared/themes/one-dark.js +131 -0
- package/dist/src/tui/shared/themes/rose-pine.js +131 -0
- package/dist/src/tui/shared/themes/solarized-dark.js +130 -0
- package/dist/src/tui/shared/themes/solarized-light.js +130 -0
- package/dist/src/tui/shared/themes/tokyo-night.js +131 -0
- package/dist/src/tui/shared/themes/types.js +1 -0
- package/dist/src/tui/shared/types.js +1 -0
- package/dist/src/tui/shared/utils/config.js +80 -0
- package/dist/src/tui/shared/utils/detectTheme.js +33 -0
- package/dist/src/tui/shared/utils/index.js +6 -0
- package/dist/src/tui/shared/utils/recommended.js +52 -0
- package/dist/src/tui/shared/utils/relativeTime.js +24 -0
- package/dist/src/tui/shared/utils/sessionSwitching.js +56 -0
- package/dist/src/tui/shared/utils/staleDetection.js +51 -0
- package/dist/src/tui/themes/catppuccin-latte.js +2 -127
- package/dist/src/tui/themes/catppuccin-mocha.js +2 -127
- package/dist/src/tui/themes/dark.js +2 -128
- package/dist/src/tui/themes/dracula.js +2 -127
- package/dist/src/tui/themes/github-dark.js +2 -126
- package/dist/src/tui/themes/github-light.js +2 -126
- package/dist/src/tui/themes/gruvbox-dark.js +2 -127
- package/dist/src/tui/themes/gruvbox-light.js +2 -127
- package/dist/src/tui/themes/index.js +2 -70
- package/dist/src/tui/themes/light.js +2 -127
- package/dist/src/tui/themes/loader.js +2 -111
- package/dist/src/tui/themes/monokai.js +2 -128
- package/dist/src/tui/themes/nord.js +2 -127
- package/dist/src/tui/themes/one-dark.js +2 -127
- package/dist/src/tui/themes/rose-pine.js +2 -128
- package/dist/src/tui/themes/solarized-dark.js +2 -127
- package/dist/src/tui/themes/solarized-light.js +2 -127
- package/dist/src/tui/themes/tokyo-night.js +2 -127
- package/dist/src/tui/themes/types.js +2 -1
- package/dist/src/tui/types.js +1 -1
- package/dist/src/tui/utils/__tests__/recommended.test.js +1 -1
- package/dist/src/tui/utils/__tests__/relativeTime.test.js +1 -1
- package/dist/src/tui/utils/__tests__/sessionSwitching.test.js +1 -1
- package/dist/src/tui/utils/__tests__/staleDetection.test.js +1 -1
- package/dist/src/tui/utils/config.js +1 -80
- package/dist/src/tui/utils/detectTheme.js +1 -22
- package/dist/src/tui/utils/recommended.js +1 -52
- package/dist/src/tui/utils/relativeTime.js +1 -24
- package/dist/src/tui/utils/sessionSwitching.js +1 -56
- package/dist/src/tui/utils/staleDetection.js +1 -51
- package/package.json +7 -2
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Stale Session Detection Utilities
|
|
3
|
+
*
|
|
4
|
+
* Pure functions for computing session staleness. No I/O or React dependencies.
|
|
5
|
+
* Design Decision 4: "Stale is computed flag, not persisted status"
|
|
6
|
+
* Design Decision 8: "Interaction resets stale check for that session"
|
|
7
|
+
*/
|
|
8
|
+
/**
|
|
9
|
+
* Default grace period in milliseconds (30 minutes).
|
|
10
|
+
* If a user interacted with a session within this window, it is not considered stale.
|
|
11
|
+
*/
|
|
12
|
+
export const DEFAULT_GRACE_PERIOD = 1800000; // 30 minutes
|
|
13
|
+
/**
|
|
14
|
+
* Determine whether a session should be considered stale based on its age,
|
|
15
|
+
* a configurable threshold, and an optional last-interaction timestamp.
|
|
16
|
+
*
|
|
17
|
+
* @param requestTimestamp - When the session was originally created (epoch ms)
|
|
18
|
+
* @param staleThreshold - Maximum allowed age before a session is stale (ms)
|
|
19
|
+
* @param lastInteraction - Last time the user interacted with this session (epoch ms)
|
|
20
|
+
* @param gracePeriod - Time after an interaction during which the session is not stale (ms)
|
|
21
|
+
* @returns true if the session is stale
|
|
22
|
+
*/
|
|
23
|
+
export function isSessionStale(requestTimestamp, staleThreshold, lastInteraction, gracePeriod = DEFAULT_GRACE_PERIOD) {
|
|
24
|
+
const now = Date.now();
|
|
25
|
+
// If the user interacted recently (within grace period), session is not stale
|
|
26
|
+
if (lastInteraction && now - lastInteraction < gracePeriod) {
|
|
27
|
+
return false;
|
|
28
|
+
}
|
|
29
|
+
return now - requestTimestamp > staleThreshold;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Check whether a session has been explicitly marked as abandoned
|
|
33
|
+
* (e.g. AI disconnected).
|
|
34
|
+
*
|
|
35
|
+
* @param status - The session's current status string
|
|
36
|
+
* @returns true if status is "abandoned"
|
|
37
|
+
*/
|
|
38
|
+
export function isSessionAbandoned(status) {
|
|
39
|
+
return status === "abandoned";
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Build a human-readable toast message for a stale session.
|
|
43
|
+
*
|
|
44
|
+
* @param sessionTitle - Display name or ID of the session
|
|
45
|
+
* @param createdAtMs - Session creation time in epoch milliseconds
|
|
46
|
+
* @returns Formatted message string
|
|
47
|
+
*/
|
|
48
|
+
export function formatStaleToastMessage(sessionTitle, createdAtMs) {
|
|
49
|
+
const hoursAgo = Math.floor((Date.now() - createdAtMs) / 3600000);
|
|
50
|
+
return `Session "${sessionTitle}" may be orphaned (created ${hoursAgo}h ago)`;
|
|
51
|
+
}
|
|
@@ -1,127 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
*
|
|
3
|
-
* Soothing pastel theme - light flavor.
|
|
4
|
-
* https://github.com/catppuccin/catppuccin
|
|
5
|
-
*/
|
|
6
|
-
export const catppuccinLatteTheme = {
|
|
7
|
-
name: "catppuccin-latte",
|
|
8
|
-
gradient: {
|
|
9
|
-
start: "#1e66f5", // blue
|
|
10
|
-
middle: "#8839ef", // mauve
|
|
11
|
-
end: "#1e66f5",
|
|
12
|
-
},
|
|
13
|
-
colors: {
|
|
14
|
-
primary: "#1e66f5", // blue
|
|
15
|
-
success: "#40a02b", // green
|
|
16
|
-
warning: "#df8e1d", // yellow
|
|
17
|
-
error: "#d20f39", // red
|
|
18
|
-
info: "#04a5e5", // sky
|
|
19
|
-
focused: "#1e66f5",
|
|
20
|
-
selected: "#40a02b",
|
|
21
|
-
pending: "#fe640b", // peach
|
|
22
|
-
unansweredHighlight: "#d20f39",
|
|
23
|
-
text: "#4c4f69", // text
|
|
24
|
-
textDim: "#acb0c0", // overlay0 lightened
|
|
25
|
-
textBold: "#4c4f69",
|
|
26
|
-
},
|
|
27
|
-
borders: {
|
|
28
|
-
primary: "#1e66f5",
|
|
29
|
-
warning: "#df8e1d",
|
|
30
|
-
error: "#d20f39",
|
|
31
|
-
neutral: "#ccd0da", // surface0
|
|
32
|
-
},
|
|
33
|
-
components: {
|
|
34
|
-
header: {
|
|
35
|
-
border: "#9ca0b0", // overlay0 - slightly more visible
|
|
36
|
-
queueActive: "#1e66f5",
|
|
37
|
-
queueEmpty: "#acb0c0",
|
|
38
|
-
queueFlash: "#8839ef",
|
|
39
|
-
pillBg: "#ccd0da",
|
|
40
|
-
},
|
|
41
|
-
directory: {
|
|
42
|
-
label: "#acb0c0",
|
|
43
|
-
path: "#4c4f69",
|
|
44
|
-
},
|
|
45
|
-
tabBar: {
|
|
46
|
-
selected: "#4c4f69",
|
|
47
|
-
selectedBg: "#ccd0da",
|
|
48
|
-
default: "#acb0c0",
|
|
49
|
-
answered: "#40a02b",
|
|
50
|
-
unanswered: "#acb0c0",
|
|
51
|
-
divider: "#ccd0da",
|
|
52
|
-
},
|
|
53
|
-
options: {
|
|
54
|
-
focused: "#40a02b",
|
|
55
|
-
focusedBg: "#ccd0da",
|
|
56
|
-
selected: "#1e66f5",
|
|
57
|
-
selectedBg: "#ccd0da",
|
|
58
|
-
default: "#4c4f69",
|
|
59
|
-
description: "#6c6f85", // subtext0 - darker for readability
|
|
60
|
-
hint: "#6c6f85", // subtext0 - darker for readability
|
|
61
|
-
},
|
|
62
|
-
input: {
|
|
63
|
-
border: "#ccd0da",
|
|
64
|
-
borderFocused: "#1e66f5",
|
|
65
|
-
placeholder: "#acb0c0",
|
|
66
|
-
cursor: "#1e66f5",
|
|
67
|
-
cursorDim: "#8839ef",
|
|
68
|
-
},
|
|
69
|
-
review: {
|
|
70
|
-
border: "#ccd0da",
|
|
71
|
-
confirmBorder: "#1e66f5",
|
|
72
|
-
selectedOption: "#40a02b",
|
|
73
|
-
customAnswer: "#df8e1d",
|
|
74
|
-
questionId: "#acb0c0",
|
|
75
|
-
divider: "#ccd0da",
|
|
76
|
-
},
|
|
77
|
-
questionDisplay: {
|
|
78
|
-
questionId: "#1e66f5",
|
|
79
|
-
typeIndicator: "#acb0c0",
|
|
80
|
-
elapsed: "#acb0c0",
|
|
81
|
-
},
|
|
82
|
-
footer: {
|
|
83
|
-
border: "#ccd0da",
|
|
84
|
-
keyBg: "#ccd0da",
|
|
85
|
-
keyFg: "#1e66f5",
|
|
86
|
-
action: "#7c7f93", // overlay1 - darker for visibility
|
|
87
|
-
separator: "#ccd0da",
|
|
88
|
-
},
|
|
89
|
-
toast: {
|
|
90
|
-
success: "#40a02b",
|
|
91
|
-
successPillBg: "#dce0e8",
|
|
92
|
-
error: "#d20f39",
|
|
93
|
-
info: "#1e66f5",
|
|
94
|
-
warning: "#df8e1d",
|
|
95
|
-
border: "#ccd0da",
|
|
96
|
-
},
|
|
97
|
-
markdown: {
|
|
98
|
-
codeBlockBg: "#eff1f5",
|
|
99
|
-
codeBlockText: "#4c4f69",
|
|
100
|
-
codeBlockBorder: "#ccd0da",
|
|
101
|
-
},
|
|
102
|
-
sessionDots: {
|
|
103
|
-
active: "#1e66f5",
|
|
104
|
-
answered: "#40a02b",
|
|
105
|
-
inProgress: "#df8e1d",
|
|
106
|
-
untouched: "#acb0c0",
|
|
107
|
-
number: "#4c4f69",
|
|
108
|
-
activeNumber: "#1e66f5",
|
|
109
|
-
stale: "#df8e1d",
|
|
110
|
-
abandoned: "#d20f39",
|
|
111
|
-
},
|
|
112
|
-
sessionPicker: {
|
|
113
|
-
border: "#1e66f5",
|
|
114
|
-
title: "#1e66f5",
|
|
115
|
-
rowText: "#4c4f69",
|
|
116
|
-
rowDim: "#acb0c0",
|
|
117
|
-
highlightBg: "#ccd0da",
|
|
118
|
-
highlightFg: "#40a02b",
|
|
119
|
-
activeMark: "#1e66f5",
|
|
120
|
-
progress: "#04a5e5",
|
|
121
|
-
staleIcon: "#df8e1d",
|
|
122
|
-
staleText: "#df8e1d",
|
|
123
|
-
staleAge: "#df8e1d",
|
|
124
|
-
staleSubtitle: "#acb0c0",
|
|
125
|
-
},
|
|
126
|
-
},
|
|
127
|
-
};
|
|
1
|
+
// Re-export from shared location for backward compatibility
|
|
2
|
+
export * from "../shared/themes/catppuccin-latte.js";
|
|
@@ -1,127 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
*
|
|
3
|
-
* Soothing pastel theme - darkest flavor.
|
|
4
|
-
* https://github.com/catppuccin/catppuccin
|
|
5
|
-
*/
|
|
6
|
-
export const catppuccinMochaTheme = {
|
|
7
|
-
name: "catppuccin-mocha",
|
|
8
|
-
gradient: {
|
|
9
|
-
start: "#89b4fa", // blue
|
|
10
|
-
middle: "#cba6f7", // mauve
|
|
11
|
-
end: "#89b4fa",
|
|
12
|
-
},
|
|
13
|
-
colors: {
|
|
14
|
-
primary: "#89b4fa", // blue
|
|
15
|
-
success: "#a6e3a1", // green
|
|
16
|
-
warning: "#f9e2af", // yellow
|
|
17
|
-
error: "#f38ba8", // red
|
|
18
|
-
info: "#89dceb", // sky
|
|
19
|
-
focused: "#89b4fa",
|
|
20
|
-
selected: "#a6e3a1",
|
|
21
|
-
pending: "#fab387", // peach
|
|
22
|
-
unansweredHighlight: "#f38ba8",
|
|
23
|
-
text: "#cdd6f4", // text
|
|
24
|
-
textDim: "#8688a0", // overlay0 brightened
|
|
25
|
-
textBold: "#cdd6f4",
|
|
26
|
-
},
|
|
27
|
-
borders: {
|
|
28
|
-
primary: "#89b4fa",
|
|
29
|
-
warning: "#f9e2af",
|
|
30
|
-
error: "#f38ba8",
|
|
31
|
-
neutral: "#313244", // surface0
|
|
32
|
-
},
|
|
33
|
-
components: {
|
|
34
|
-
header: {
|
|
35
|
-
border: "#45475a", // surface1 - slightly more visible
|
|
36
|
-
queueActive: "#89b4fa",
|
|
37
|
-
queueEmpty: "#8688a0",
|
|
38
|
-
queueFlash: "#cba6f7",
|
|
39
|
-
pillBg: "#313244",
|
|
40
|
-
},
|
|
41
|
-
directory: {
|
|
42
|
-
label: "#8688a0",
|
|
43
|
-
path: "#cdd6f4",
|
|
44
|
-
},
|
|
45
|
-
tabBar: {
|
|
46
|
-
selected: "#cdd6f4",
|
|
47
|
-
selectedBg: "#313244",
|
|
48
|
-
default: "#8688a0",
|
|
49
|
-
answered: "#a6e3a1",
|
|
50
|
-
unanswered: "#8688a0",
|
|
51
|
-
divider: "#313244",
|
|
52
|
-
},
|
|
53
|
-
options: {
|
|
54
|
-
focused: "#a6e3a1",
|
|
55
|
-
focusedBg: "#313244",
|
|
56
|
-
selected: "#89b4fa",
|
|
57
|
-
selectedBg: "#313244",
|
|
58
|
-
default: "#cdd6f4",
|
|
59
|
-
description: "#a6adc8", // subtext0 - lighter for readability
|
|
60
|
-
hint: "#a6adc8", // subtext0 - lighter for readability
|
|
61
|
-
},
|
|
62
|
-
input: {
|
|
63
|
-
border: "#313244",
|
|
64
|
-
borderFocused: "#89b4fa",
|
|
65
|
-
placeholder: "#8688a0",
|
|
66
|
-
cursor: "#89b4fa",
|
|
67
|
-
cursorDim: "#cba6f7",
|
|
68
|
-
},
|
|
69
|
-
review: {
|
|
70
|
-
border: "#313244",
|
|
71
|
-
confirmBorder: "#89b4fa",
|
|
72
|
-
selectedOption: "#a6e3a1",
|
|
73
|
-
customAnswer: "#f9e2af",
|
|
74
|
-
questionId: "#8688a0",
|
|
75
|
-
divider: "#313244",
|
|
76
|
-
},
|
|
77
|
-
questionDisplay: {
|
|
78
|
-
questionId: "#89b4fa",
|
|
79
|
-
typeIndicator: "#8688a0",
|
|
80
|
-
elapsed: "#8688a0",
|
|
81
|
-
},
|
|
82
|
-
footer: {
|
|
83
|
-
border: "#313244",
|
|
84
|
-
keyBg: "#313244",
|
|
85
|
-
keyFg: "#89b4fa",
|
|
86
|
-
action: "#9399b2", // overlay2 - brighter for visibility
|
|
87
|
-
separator: "#313244",
|
|
88
|
-
},
|
|
89
|
-
toast: {
|
|
90
|
-
success: "#a6e3a1",
|
|
91
|
-
successPillBg: "#313244",
|
|
92
|
-
error: "#f38ba8",
|
|
93
|
-
info: "#89b4fa",
|
|
94
|
-
warning: "#f9e2af",
|
|
95
|
-
border: "#313244",
|
|
96
|
-
},
|
|
97
|
-
markdown: {
|
|
98
|
-
codeBlockBg: "#1e1e2e",
|
|
99
|
-
codeBlockText: "#cdd6f4",
|
|
100
|
-
codeBlockBorder: "#313244",
|
|
101
|
-
},
|
|
102
|
-
sessionDots: {
|
|
103
|
-
active: "#89b4fa",
|
|
104
|
-
answered: "#a6e3a1",
|
|
105
|
-
inProgress: "#f9e2af",
|
|
106
|
-
untouched: "#8688a0",
|
|
107
|
-
number: "#cdd6f4",
|
|
108
|
-
activeNumber: "#89b4fa",
|
|
109
|
-
stale: "#f9e2af",
|
|
110
|
-
abandoned: "#f38ba8",
|
|
111
|
-
},
|
|
112
|
-
sessionPicker: {
|
|
113
|
-
border: "#89b4fa",
|
|
114
|
-
title: "#89b4fa",
|
|
115
|
-
rowText: "#cdd6f4",
|
|
116
|
-
rowDim: "#8688a0",
|
|
117
|
-
highlightBg: "#313244",
|
|
118
|
-
highlightFg: "#a6e3a1",
|
|
119
|
-
activeMark: "#89b4fa",
|
|
120
|
-
progress: "#89dceb",
|
|
121
|
-
staleIcon: "#f9e2af",
|
|
122
|
-
staleText: "#f9e2af",
|
|
123
|
-
staleAge: "#f9e2af",
|
|
124
|
-
staleSubtitle: "#8688a0",
|
|
125
|
-
},
|
|
126
|
-
},
|
|
127
|
-
};
|
|
1
|
+
// Re-export from shared location for backward compatibility
|
|
2
|
+
export * from "../shared/themes/catppuccin-mocha.js";
|
|
@@ -1,128 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
*
|
|
3
|
-
* Keep the palette tight; lean on neutrals for structure.
|
|
4
|
-
*
|
|
5
|
-
* This is the original AUQ theme, optimized for dark terminals.
|
|
6
|
-
*/
|
|
7
|
-
export const darkTheme = {
|
|
8
|
-
name: "AUQ dark",
|
|
9
|
-
gradient: {
|
|
10
|
-
start: "#46D9FF",
|
|
11
|
-
middle: "#B8F2FF",
|
|
12
|
-
end: "#46D9FF",
|
|
13
|
-
},
|
|
14
|
-
colors: {
|
|
15
|
-
primary: "#46D9FF",
|
|
16
|
-
success: "#5AF78E",
|
|
17
|
-
warning: "#FFD36A",
|
|
18
|
-
error: "#FF5C57",
|
|
19
|
-
info: "#46D9FF",
|
|
20
|
-
focused: "#46D9FF",
|
|
21
|
-
selected: "#5AF78E",
|
|
22
|
-
pending: "#FFD36A",
|
|
23
|
-
unansweredHighlight: "#FF6B6B",
|
|
24
|
-
text: "#E7EEF5",
|
|
25
|
-
textDim: "#A0AAB4",
|
|
26
|
-
textBold: "#F5FAFF",
|
|
27
|
-
},
|
|
28
|
-
borders: {
|
|
29
|
-
primary: "#46D9FF",
|
|
30
|
-
warning: "#FFD36A",
|
|
31
|
-
error: "#FF5C57",
|
|
32
|
-
neutral: "#2A3238",
|
|
33
|
-
},
|
|
34
|
-
components: {
|
|
35
|
-
header: {
|
|
36
|
-
border: "#3D4852", // slightly more visible
|
|
37
|
-
queueActive: "#46D9FF",
|
|
38
|
-
queueEmpty: "#A0AAB4",
|
|
39
|
-
queueFlash: "#B8F2FF",
|
|
40
|
-
pillBg: "#0B1F26",
|
|
41
|
-
},
|
|
42
|
-
directory: {
|
|
43
|
-
label: "#A0AAB4",
|
|
44
|
-
path: "#E7EEF5",
|
|
45
|
-
},
|
|
46
|
-
tabBar: {
|
|
47
|
-
selected: "#E7EEF5",
|
|
48
|
-
selectedBg: "#0B1F26",
|
|
49
|
-
default: "#A0AAB4",
|
|
50
|
-
answered: "#5AF78E",
|
|
51
|
-
unanswered: "#A0AAB4",
|
|
52
|
-
divider: "#2A3238",
|
|
53
|
-
},
|
|
54
|
-
options: {
|
|
55
|
-
focused: "#5AF78E",
|
|
56
|
-
focusedBg: "#0F2417",
|
|
57
|
-
selected: "#46D9FF",
|
|
58
|
-
selectedBg: "#0B1F26",
|
|
59
|
-
default: "#E7EEF5",
|
|
60
|
-
description: "#A8B2BC",
|
|
61
|
-
hint: "#A8B2BC",
|
|
62
|
-
},
|
|
63
|
-
input: {
|
|
64
|
-
border: "#2A3238",
|
|
65
|
-
borderFocused: "#46D9FF",
|
|
66
|
-
placeholder: "#A0AAB4",
|
|
67
|
-
cursor: "#46D9FF",
|
|
68
|
-
cursorDim: "#B8F2FF",
|
|
69
|
-
},
|
|
70
|
-
review: {
|
|
71
|
-
border: "#2A3238",
|
|
72
|
-
confirmBorder: "#46D9FF",
|
|
73
|
-
selectedOption: "#5AF78E",
|
|
74
|
-
customAnswer: "#FFD36A",
|
|
75
|
-
questionId: "#A0AAB4",
|
|
76
|
-
divider: "#2A3238",
|
|
77
|
-
},
|
|
78
|
-
questionDisplay: {
|
|
79
|
-
questionId: "#46D9FF",
|
|
80
|
-
typeIndicator: "#A0AAB4",
|
|
81
|
-
elapsed: "#A0AAB4",
|
|
82
|
-
},
|
|
83
|
-
footer: {
|
|
84
|
-
border: "#2A3238",
|
|
85
|
-
keyBg: "#0B1F26",
|
|
86
|
-
keyFg: "#46D9FF",
|
|
87
|
-
action: "#A8B2BC",
|
|
88
|
-
separator: "#2A3238",
|
|
89
|
-
},
|
|
90
|
-
toast: {
|
|
91
|
-
success: "#5AF78E",
|
|
92
|
-
successPillBg: "#0F2417",
|
|
93
|
-
error: "#FF5C57",
|
|
94
|
-
info: "#46D9FF",
|
|
95
|
-
warning: "#FFD36A",
|
|
96
|
-
border: "#2A3238",
|
|
97
|
-
},
|
|
98
|
-
markdown: {
|
|
99
|
-
codeBlockBg: "#0F1419",
|
|
100
|
-
codeBlockText: "#E7EEF5",
|
|
101
|
-
codeBlockBorder: "#2A3238",
|
|
102
|
-
},
|
|
103
|
-
sessionDots: {
|
|
104
|
-
active: "#46D9FF",
|
|
105
|
-
answered: "#5AF78E",
|
|
106
|
-
inProgress: "#FFD36A",
|
|
107
|
-
untouched: "#A0AAB4",
|
|
108
|
-
number: "#E7EEF5",
|
|
109
|
-
activeNumber: "#46D9FF",
|
|
110
|
-
stale: "#FFD36A",
|
|
111
|
-
abandoned: "#FF5C57",
|
|
112
|
-
},
|
|
113
|
-
sessionPicker: {
|
|
114
|
-
border: "#46D9FF",
|
|
115
|
-
title: "#46D9FF",
|
|
116
|
-
rowText: "#E7EEF5",
|
|
117
|
-
rowDim: "#A0AAB4",
|
|
118
|
-
highlightBg: "#0F2417",
|
|
119
|
-
highlightFg: "#5AF78E",
|
|
120
|
-
activeMark: "#46D9FF",
|
|
121
|
-
progress: "#46D9FF",
|
|
122
|
-
staleIcon: "#FFD36A",
|
|
123
|
-
staleText: "#FFD36A",
|
|
124
|
-
staleAge: "#FFD36A",
|
|
125
|
-
staleSubtitle: "#A0AAB4",
|
|
126
|
-
},
|
|
127
|
-
},
|
|
128
|
-
};
|
|
1
|
+
// Re-export from shared location for backward compatibility
|
|
2
|
+
export * from "../shared/themes/dark.js";
|
|
@@ -1,127 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
*
|
|
3
|
-
* A dark theme for code editors and terminal applications.
|
|
4
|
-
* https://draculatheme.com/
|
|
5
|
-
*/
|
|
6
|
-
export const draculaTheme = {
|
|
7
|
-
name: "dracula",
|
|
8
|
-
gradient: {
|
|
9
|
-
start: "#bd93f9", // purple
|
|
10
|
-
middle: "#ff79c6", // pink
|
|
11
|
-
end: "#bd93f9",
|
|
12
|
-
},
|
|
13
|
-
colors: {
|
|
14
|
-
primary: "#bd93f9", // purple
|
|
15
|
-
success: "#50fa7b", // green
|
|
16
|
-
warning: "#f1fa8c", // yellow
|
|
17
|
-
error: "#ff5555", // red
|
|
18
|
-
info: "#8be9fd", // cyan
|
|
19
|
-
focused: "#bd93f9",
|
|
20
|
-
selected: "#50fa7b",
|
|
21
|
-
pending: "#ffb86c", // orange
|
|
22
|
-
unansweredHighlight: "#ff5555", // dracula red
|
|
23
|
-
text: "#f8f8f2", // foreground
|
|
24
|
-
textDim: "#7C8BBE", // comment brightened
|
|
25
|
-
textBold: "#f8f8f2",
|
|
26
|
-
},
|
|
27
|
-
borders: {
|
|
28
|
-
primary: "#bd93f9",
|
|
29
|
-
warning: "#f1fa8c",
|
|
30
|
-
error: "#ff5555",
|
|
31
|
-
neutral: "#44475a", // current line
|
|
32
|
-
},
|
|
33
|
-
components: {
|
|
34
|
-
header: {
|
|
35
|
-
border: "#6272a4", // comment - slightly more visible
|
|
36
|
-
queueActive: "#bd93f9",
|
|
37
|
-
queueEmpty: "#7C8BBE",
|
|
38
|
-
queueFlash: "#ff79c6",
|
|
39
|
-
pillBg: "#44475a",
|
|
40
|
-
},
|
|
41
|
-
directory: {
|
|
42
|
-
label: "#7C8BBE",
|
|
43
|
-
path: "#f8f8f2",
|
|
44
|
-
},
|
|
45
|
-
tabBar: {
|
|
46
|
-
selected: "#f8f8f2",
|
|
47
|
-
selectedBg: "#44475a",
|
|
48
|
-
default: "#7C8BBE",
|
|
49
|
-
answered: "#50fa7b",
|
|
50
|
-
unanswered: "#7C8BBE",
|
|
51
|
-
divider: "#44475a",
|
|
52
|
-
},
|
|
53
|
-
options: {
|
|
54
|
-
focused: "#50fa7b",
|
|
55
|
-
focusedBg: "#44475a",
|
|
56
|
-
selected: "#bd93f9",
|
|
57
|
-
selectedBg: "#44475a",
|
|
58
|
-
default: "#f8f8f2",
|
|
59
|
-
description: "#bd93f9", // lighter purple for readability
|
|
60
|
-
hint: "#f8f8f2", // foreground for readability
|
|
61
|
-
},
|
|
62
|
-
input: {
|
|
63
|
-
border: "#44475a",
|
|
64
|
-
borderFocused: "#bd93f9",
|
|
65
|
-
placeholder: "#7C8BBE",
|
|
66
|
-
cursor: "#bd93f9",
|
|
67
|
-
cursorDim: "#ff79c6",
|
|
68
|
-
},
|
|
69
|
-
review: {
|
|
70
|
-
border: "#44475a",
|
|
71
|
-
confirmBorder: "#bd93f9",
|
|
72
|
-
selectedOption: "#50fa7b",
|
|
73
|
-
customAnswer: "#f1fa8c",
|
|
74
|
-
questionId: "#7C8BBE",
|
|
75
|
-
divider: "#44475a",
|
|
76
|
-
},
|
|
77
|
-
questionDisplay: {
|
|
78
|
-
questionId: "#bd93f9",
|
|
79
|
-
typeIndicator: "#7C8BBE",
|
|
80
|
-
elapsed: "#7C8BBE",
|
|
81
|
-
},
|
|
82
|
-
footer: {
|
|
83
|
-
border: "#44475a",
|
|
84
|
-
keyBg: "#44475a",
|
|
85
|
-
keyFg: "#bd93f9",
|
|
86
|
-
action: "#8294C4",
|
|
87
|
-
separator: "#44475a",
|
|
88
|
-
},
|
|
89
|
-
toast: {
|
|
90
|
-
success: "#50fa7b",
|
|
91
|
-
successPillBg: "#44475a", // current line
|
|
92
|
-
error: "#ff5555",
|
|
93
|
-
info: "#bd93f9",
|
|
94
|
-
warning: "#f1fa8c",
|
|
95
|
-
border: "#44475a",
|
|
96
|
-
},
|
|
97
|
-
markdown: {
|
|
98
|
-
codeBlockBg: "#282a36",
|
|
99
|
-
codeBlockText: "#f8f8f2",
|
|
100
|
-
codeBlockBorder: "#44475a",
|
|
101
|
-
},
|
|
102
|
-
sessionDots: {
|
|
103
|
-
active: "#bd93f9",
|
|
104
|
-
answered: "#50fa7b",
|
|
105
|
-
inProgress: "#f1fa8c",
|
|
106
|
-
untouched: "#7C8BBE",
|
|
107
|
-
number: "#f8f8f2",
|
|
108
|
-
activeNumber: "#bd93f9",
|
|
109
|
-
stale: "#f1fa8c",
|
|
110
|
-
abandoned: "#ff5555",
|
|
111
|
-
},
|
|
112
|
-
sessionPicker: {
|
|
113
|
-
border: "#bd93f9",
|
|
114
|
-
title: "#bd93f9",
|
|
115
|
-
rowText: "#f8f8f2",
|
|
116
|
-
rowDim: "#7C8BBE",
|
|
117
|
-
highlightBg: "#44475a",
|
|
118
|
-
highlightFg: "#50fa7b",
|
|
119
|
-
activeMark: "#bd93f9",
|
|
120
|
-
progress: "#8be9fd",
|
|
121
|
-
staleIcon: "#f1fa8c",
|
|
122
|
-
staleText: "#f1fa8c",
|
|
123
|
-
staleAge: "#f1fa8c",
|
|
124
|
-
staleSubtitle: "#7C8BBE",
|
|
125
|
-
},
|
|
126
|
-
},
|
|
127
|
-
};
|
|
1
|
+
// Re-export from shared location for backward compatibility
|
|
2
|
+
export * from "../shared/themes/dracula.js";
|
|
@@ -1,126 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
*
|
|
3
|
-
* Based on GitHub's official dark mode colors.
|
|
4
|
-
*/
|
|
5
|
-
export const githubDarkTheme = {
|
|
6
|
-
name: "github-dark",
|
|
7
|
-
gradient: {
|
|
8
|
-
start: "#58a6ff",
|
|
9
|
-
middle: "#79c0ff",
|
|
10
|
-
end: "#58a6ff",
|
|
11
|
-
},
|
|
12
|
-
colors: {
|
|
13
|
-
primary: "#58a6ff",
|
|
14
|
-
success: "#3fb950",
|
|
15
|
-
warning: "#d29922",
|
|
16
|
-
error: "#f85149",
|
|
17
|
-
info: "#58a6ff",
|
|
18
|
-
focused: "#58a6ff",
|
|
19
|
-
selected: "#3fb950",
|
|
20
|
-
pending: "#d29922",
|
|
21
|
-
unansweredHighlight: "#f85149",
|
|
22
|
-
text: "#c9d1d9",
|
|
23
|
-
textDim: "#a0a8b4", // brightened
|
|
24
|
-
textBold: "#f0f6fc",
|
|
25
|
-
},
|
|
26
|
-
borders: {
|
|
27
|
-
primary: "#58a6ff",
|
|
28
|
-
warning: "#d29922",
|
|
29
|
-
error: "#f85149",
|
|
30
|
-
neutral: "#30363d",
|
|
31
|
-
},
|
|
32
|
-
components: {
|
|
33
|
-
header: {
|
|
34
|
-
border: "#30363d",
|
|
35
|
-
queueActive: "#58a6ff",
|
|
36
|
-
queueEmpty: "#a0a8b4",
|
|
37
|
-
queueFlash: "#79c0ff",
|
|
38
|
-
pillBg: "#161b22",
|
|
39
|
-
},
|
|
40
|
-
directory: {
|
|
41
|
-
label: "#a0a8b4",
|
|
42
|
-
path: "#c9d1d9",
|
|
43
|
-
},
|
|
44
|
-
tabBar: {
|
|
45
|
-
selected: "#c9d1d9",
|
|
46
|
-
selectedBg: "#161b22",
|
|
47
|
-
default: "#a0a8b4",
|
|
48
|
-
answered: "#3fb950",
|
|
49
|
-
unanswered: "#a0a8b4",
|
|
50
|
-
divider: "#30363d",
|
|
51
|
-
},
|
|
52
|
-
options: {
|
|
53
|
-
focused: "#3fb950",
|
|
54
|
-
focusedBg: "#0d1117",
|
|
55
|
-
selected: "#58a6ff",
|
|
56
|
-
selectedBg: "#161b22",
|
|
57
|
-
default: "#c9d1d9",
|
|
58
|
-
description: "#b1bac4", // brighter for readability
|
|
59
|
-
hint: "#b1bac4", // brighter for readability
|
|
60
|
-
},
|
|
61
|
-
input: {
|
|
62
|
-
border: "#30363d",
|
|
63
|
-
borderFocused: "#58a6ff",
|
|
64
|
-
placeholder: "#a0a8b4",
|
|
65
|
-
cursor: "#58a6ff",
|
|
66
|
-
cursorDim: "#79c0ff",
|
|
67
|
-
},
|
|
68
|
-
review: {
|
|
69
|
-
border: "#30363d",
|
|
70
|
-
confirmBorder: "#58a6ff",
|
|
71
|
-
selectedOption: "#3fb950",
|
|
72
|
-
customAnswer: "#d29922",
|
|
73
|
-
questionId: "#a0a8b4",
|
|
74
|
-
divider: "#30363d",
|
|
75
|
-
},
|
|
76
|
-
questionDisplay: {
|
|
77
|
-
questionId: "#58a6ff",
|
|
78
|
-
typeIndicator: "#a0a8b4",
|
|
79
|
-
elapsed: "#a0a8b4",
|
|
80
|
-
},
|
|
81
|
-
footer: {
|
|
82
|
-
border: "#30363d",
|
|
83
|
-
keyBg: "#161b22",
|
|
84
|
-
keyFg: "#58a6ff",
|
|
85
|
-
action: "#b1bac4", // brighter for visibility
|
|
86
|
-
separator: "#30363d",
|
|
87
|
-
},
|
|
88
|
-
toast: {
|
|
89
|
-
success: "#3fb950",
|
|
90
|
-
successPillBg: "#161b22",
|
|
91
|
-
error: "#f85149",
|
|
92
|
-
info: "#58a6ff",
|
|
93
|
-
warning: "#d29922",
|
|
94
|
-
border: "#30363d",
|
|
95
|
-
},
|
|
96
|
-
markdown: {
|
|
97
|
-
codeBlockBg: "#0d1117",
|
|
98
|
-
codeBlockText: "#c9d1d9",
|
|
99
|
-
codeBlockBorder: "#30363d",
|
|
100
|
-
},
|
|
101
|
-
sessionDots: {
|
|
102
|
-
active: "#58a6ff",
|
|
103
|
-
answered: "#3fb950",
|
|
104
|
-
inProgress: "#d29922",
|
|
105
|
-
untouched: "#a0a8b4",
|
|
106
|
-
number: "#c9d1d9",
|
|
107
|
-
activeNumber: "#58a6ff",
|
|
108
|
-
stale: "#d29922",
|
|
109
|
-
abandoned: "#f85149",
|
|
110
|
-
},
|
|
111
|
-
sessionPicker: {
|
|
112
|
-
border: "#58a6ff",
|
|
113
|
-
title: "#58a6ff",
|
|
114
|
-
rowText: "#c9d1d9",
|
|
115
|
-
rowDim: "#a0a8b4",
|
|
116
|
-
highlightBg: "#0d1117",
|
|
117
|
-
highlightFg: "#3fb950",
|
|
118
|
-
activeMark: "#58a6ff",
|
|
119
|
-
progress: "#58a6ff",
|
|
120
|
-
staleIcon: "#d29922",
|
|
121
|
-
staleText: "#d29922",
|
|
122
|
-
staleAge: "#d29922",
|
|
123
|
-
staleSubtitle: "#a0a8b4",
|
|
124
|
-
},
|
|
125
|
-
},
|
|
126
|
-
};
|
|
1
|
+
// Re-export from shared location for backward compatibility
|
|
2
|
+
export * from "../shared/themes/github-dark.js";
|