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.
Files changed (96) hide show
  1. package/README.md +56 -2
  2. package/dist/bin/auq.js +36 -3
  3. package/dist/bin/tui-app.js +27 -6
  4. package/dist/package.json +7 -2
  5. package/dist/src/__tests__/schema-validation.test.js +61 -1
  6. package/dist/src/cli/commands/__tests__/fetch-answers.test.js +310 -0
  7. package/dist/src/cli/commands/__tests__/history.test.js +211 -0
  8. package/dist/src/cli/commands/answer.js +11 -0
  9. package/dist/src/cli/commands/config.js +48 -0
  10. package/dist/src/cli/commands/fetch-answers.js +205 -0
  11. package/dist/src/cli/commands/history.js +375 -0
  12. package/dist/src/config/__tests__/ConfigLoader.test.js +38 -0
  13. package/dist/src/config/defaults.js +1 -0
  14. package/dist/src/config/types.js +1 -0
  15. package/dist/src/core/ask-user-questions.js +63 -0
  16. package/dist/src/i18n/locales/en.js +2 -2
  17. package/dist/src/server.js +59 -2
  18. package/dist/src/session/ResponseFormatter.js +79 -2
  19. package/dist/src/session/SessionManager.js +36 -0
  20. package/dist/src/session/__tests__/ResponseFormatter.test.js +86 -0
  21. package/dist/src/session/__tests__/SessionManager.test.js +129 -0
  22. package/dist/src/shared/schemas.js +8 -0
  23. package/dist/src/tui/ThemeProvider.js +3 -3
  24. package/dist/src/tui/components/Header.js +2 -1
  25. package/dist/src/tui/components/OptionsList.js +1 -1
  26. package/dist/src/tui/components/SessionPicker.js +1 -1
  27. package/dist/src/tui/components/StepperView.js +1 -1
  28. package/dist/src/tui/components/__tests__/ConfirmationDialog.test.js +1 -1
  29. package/dist/src/tui/components/__tests__/Footer.test.js +1 -1
  30. package/dist/src/tui/components/__tests__/MarkdownPrompt.test.js +1 -1
  31. package/dist/src/tui/components/__tests__/ReviewScreen.test.js +1 -1
  32. package/dist/src/tui/components/__tests__/SessionDots.test.js +1 -1
  33. package/dist/src/tui/components/__tests__/SessionPicker.test.js +1 -1
  34. package/dist/src/tui/components/__tests__/StepperView.abandoned.test.js +1 -1
  35. package/dist/src/tui/components/__tests__/StepperView.keyboard.test.js +1 -1
  36. package/dist/src/tui/components/__tests__/StepperView.state.test.js +1 -1
  37. package/dist/src/tui/components/__tests__/WaitingScreen.test.js +1 -1
  38. package/dist/src/tui/shared/session-events.js +4 -0
  39. package/dist/src/tui/shared/themes/catppuccin-latte.js +130 -0
  40. package/dist/src/tui/shared/themes/catppuccin-mocha.js +131 -0
  41. package/dist/src/tui/shared/themes/dark.js +131 -0
  42. package/dist/src/tui/shared/themes/dracula.js +131 -0
  43. package/dist/src/tui/shared/themes/github-dark.js +129 -0
  44. package/dist/src/tui/shared/themes/github-light.js +129 -0
  45. package/dist/src/tui/shared/themes/gruvbox-dark.js +130 -0
  46. package/dist/src/tui/shared/themes/gruvbox-light.js +130 -0
  47. package/dist/src/tui/shared/themes/index.js +70 -0
  48. package/dist/src/tui/shared/themes/light.js +130 -0
  49. package/dist/src/tui/shared/themes/loader.js +111 -0
  50. package/dist/src/tui/shared/themes/monokai.js +132 -0
  51. package/dist/src/tui/shared/themes/nord.js +130 -0
  52. package/dist/src/tui/shared/themes/one-dark.js +131 -0
  53. package/dist/src/tui/shared/themes/rose-pine.js +131 -0
  54. package/dist/src/tui/shared/themes/solarized-dark.js +130 -0
  55. package/dist/src/tui/shared/themes/solarized-light.js +130 -0
  56. package/dist/src/tui/shared/themes/tokyo-night.js +131 -0
  57. package/dist/src/tui/shared/themes/types.js +1 -0
  58. package/dist/src/tui/shared/types.js +1 -0
  59. package/dist/src/tui/shared/utils/config.js +80 -0
  60. package/dist/src/tui/shared/utils/detectTheme.js +33 -0
  61. package/dist/src/tui/shared/utils/index.js +6 -0
  62. package/dist/src/tui/shared/utils/recommended.js +52 -0
  63. package/dist/src/tui/shared/utils/relativeTime.js +24 -0
  64. package/dist/src/tui/shared/utils/sessionSwitching.js +56 -0
  65. package/dist/src/tui/shared/utils/staleDetection.js +51 -0
  66. package/dist/src/tui/themes/catppuccin-latte.js +2 -127
  67. package/dist/src/tui/themes/catppuccin-mocha.js +2 -127
  68. package/dist/src/tui/themes/dark.js +2 -128
  69. package/dist/src/tui/themes/dracula.js +2 -127
  70. package/dist/src/tui/themes/github-dark.js +2 -126
  71. package/dist/src/tui/themes/github-light.js +2 -126
  72. package/dist/src/tui/themes/gruvbox-dark.js +2 -127
  73. package/dist/src/tui/themes/gruvbox-light.js +2 -127
  74. package/dist/src/tui/themes/index.js +2 -70
  75. package/dist/src/tui/themes/light.js +2 -127
  76. package/dist/src/tui/themes/loader.js +2 -111
  77. package/dist/src/tui/themes/monokai.js +2 -128
  78. package/dist/src/tui/themes/nord.js +2 -127
  79. package/dist/src/tui/themes/one-dark.js +2 -127
  80. package/dist/src/tui/themes/rose-pine.js +2 -128
  81. package/dist/src/tui/themes/solarized-dark.js +2 -127
  82. package/dist/src/tui/themes/solarized-light.js +2 -127
  83. package/dist/src/tui/themes/tokyo-night.js +2 -127
  84. package/dist/src/tui/themes/types.js +2 -1
  85. package/dist/src/tui/types.js +1 -1
  86. package/dist/src/tui/utils/__tests__/recommended.test.js +1 -1
  87. package/dist/src/tui/utils/__tests__/relativeTime.test.js +1 -1
  88. package/dist/src/tui/utils/__tests__/sessionSwitching.test.js +1 -1
  89. package/dist/src/tui/utils/__tests__/staleDetection.test.js +1 -1
  90. package/dist/src/tui/utils/config.js +1 -80
  91. package/dist/src/tui/utils/detectTheme.js +1 -22
  92. package/dist/src/tui/utils/recommended.js +1 -52
  93. package/dist/src/tui/utils/relativeTime.js +1 -24
  94. package/dist/src/tui/utils/sessionSwitching.js +1 -56
  95. package/dist/src/tui/utils/staleDetection.js +1 -51
  96. 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
- * Catppuccin Latte Theme
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
- * Catppuccin Mocha Theme
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
- * Visual direction: graphite + electric-cyan accent.
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
- * Dracula Theme
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
- * GitHub Dark theme - Authentic GitHub color palette.
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";