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
@@ -1,111 +1,2 @@
1
- import * as fs from "node:fs";
2
- import * as path from "node:path";
3
- import * as os from "node:os";
4
- import { darkTheme } from "./dark.js";
5
- import { registerTheme } from "./index.js";
6
- /**
7
- * Get the config directory for AUQ themes
8
- * Respects XDG_CONFIG_HOME on Linux, defaults to ~/.config/auq/themes
9
- */
10
- function getThemesDirectory() {
11
- const xdgConfig = process.env.XDG_CONFIG_HOME;
12
- const baseConfig = xdgConfig || path.join(os.homedir(), ".config");
13
- return path.join(baseConfig, "auq", "themes");
14
- }
15
- /**
16
- * Deep merge two objects, with source overriding target
17
- */
18
- function deepMerge(target, source) {
19
- const result = { ...target };
20
- for (const key of Object.keys(source)) {
21
- const sourceValue = source[key];
22
- const targetValue = target[key];
23
- if (sourceValue !== undefined &&
24
- typeof sourceValue === "object" &&
25
- sourceValue !== null &&
26
- !Array.isArray(sourceValue) &&
27
- typeof targetValue === "object" &&
28
- targetValue !== null) {
29
- // Recursively merge objects
30
- result[key] = deepMerge(targetValue, sourceValue);
31
- }
32
- else if (sourceValue !== undefined) {
33
- result[key] = sourceValue;
34
- }
35
- }
36
- return result;
37
- }
38
- /**
39
- * Validate a theme file against basic structure requirements
40
- */
41
- function validateThemeFile(data) {
42
- if (typeof data !== "object" || data === null) {
43
- return false;
44
- }
45
- const obj = data;
46
- // Name is required
47
- if (typeof obj.name !== "string" || obj.name.length === 0) {
48
- return false;
49
- }
50
- return true;
51
- }
52
- /**
53
- * Load a single theme file
54
- * Returns the theme if valid, or null if invalid/missing
55
- */
56
- export function loadThemeFile(filePath) {
57
- try {
58
- const content = fs.readFileSync(filePath, "utf-8");
59
- const data = JSON.parse(content);
60
- if (!validateThemeFile(data)) {
61
- console.error(`[AUQ] Invalid theme file: ${filePath} - missing required 'name' field`);
62
- return null;
63
- }
64
- // Merge with dark theme as base
65
- const mergedTheme = deepMerge(darkTheme, data);
66
- // Override the name from the file
67
- return {
68
- ...mergedTheme,
69
- name: data.name,
70
- };
71
- }
72
- catch (error) {
73
- if (error.code !== "ENOENT") {
74
- console.error(`[AUQ] Failed to load theme file ${filePath}:`, error);
75
- }
76
- return null;
77
- }
78
- }
79
- /**
80
- * Discover and load all custom themes from the themes directory
81
- * Registers them in the theme registry
82
- */
83
- export function loadCustomThemes() {
84
- const themesDir = getThemesDirectory();
85
- // Check if directory exists
86
- if (!fs.existsSync(themesDir)) {
87
- return; // No custom themes directory, nothing to load
88
- }
89
- try {
90
- const files = fs.readdirSync(themesDir);
91
- for (const file of files) {
92
- if (!file.endsWith(".theme.json")) {
93
- continue;
94
- }
95
- const filePath = path.join(themesDir, file);
96
- const theme = loadThemeFile(filePath);
97
- if (theme) {
98
- registerTheme(theme.name, theme);
99
- }
100
- }
101
- }
102
- catch (error) {
103
- console.error(`[AUQ] Failed to read themes directory:`, error);
104
- }
105
- }
106
- /**
107
- * Get the themes directory path (for display purposes)
108
- */
109
- export function getThemesDirectoryPath() {
110
- return getThemesDirectory();
111
- }
1
+ // Re-export from shared location for backward compatibility
2
+ export * from "../shared/themes/loader.js";
@@ -1,128 +1,2 @@
1
- /**
2
- * Visual direction: classic Monokai dark theme.
3
- * Vibrant syntax highlighting colors on a dark background.
4
- *
5
- * Based on the popular Monokai color scheme.
6
- */
7
- export const monokaiTheme = {
8
- name: "monokai",
9
- gradient: {
10
- start: "#66D9EF",
11
- middle: "#F8F8F2",
12
- end: "#66D9EF",
13
- },
14
- colors: {
15
- primary: "#66D9EF",
16
- success: "#A6E22E",
17
- warning: "#E6DB74",
18
- error: "#F92672",
19
- info: "#66D9EF",
20
- focused: "#66D9EF",
21
- selected: "#A6E22E",
22
- pending: "#E6DB74",
23
- unansweredHighlight: "#f92672",
24
- text: "#F8F8F2",
25
- textDim: "#908B78", // brightened
26
- textBold: "#F8F8F2",
27
- },
28
- borders: {
29
- primary: "#66D9EF",
30
- warning: "#E6DB74",
31
- error: "#F92672",
32
- neutral: "#49483E",
33
- },
34
- components: {
35
- header: {
36
- border: "#49483E",
37
- queueActive: "#66D9EF",
38
- queueEmpty: "#908B78",
39
- queueFlash: "#F8F8F2",
40
- pillBg: "#3E3D32",
41
- },
42
- directory: {
43
- label: "#908B78",
44
- path: "#F8F8F2",
45
- },
46
- tabBar: {
47
- selected: "#F8F8F2",
48
- selectedBg: "#3E3D32",
49
- default: "#908B78",
50
- answered: "#A6E22E",
51
- unanswered: "#908B78",
52
- divider: "#49483E",
53
- },
54
- options: {
55
- focused: "#A6E22E",
56
- focusedBg: "#383830",
57
- selected: "#66D9EF",
58
- selectedBg: "#3E3D32",
59
- default: "#F8F8F2",
60
- description: "#A0998A",
61
- hint: "#A0998A",
62
- },
63
- input: {
64
- border: "#49483E",
65
- borderFocused: "#66D9EF",
66
- placeholder: "#908B78",
67
- cursor: "#66D9EF",
68
- cursorDim: "#F8F8F2",
69
- },
70
- review: {
71
- border: "#49483E",
72
- confirmBorder: "#66D9EF",
73
- selectedOption: "#A6E22E",
74
- customAnswer: "#E6DB74",
75
- questionId: "#908B78",
76
- divider: "#49483E",
77
- },
78
- questionDisplay: {
79
- questionId: "#66D9EF",
80
- typeIndicator: "#908B78",
81
- elapsed: "#908B78",
82
- },
83
- footer: {
84
- border: "#49483E",
85
- keyBg: "#3E3D32",
86
- keyFg: "#66D9EF",
87
- action: "#A0998A",
88
- separator: "#49483E",
89
- },
90
- toast: {
91
- success: "#A6E22E",
92
- successPillBg: "#272822",
93
- error: "#F92672",
94
- info: "#66D9EF",
95
- warning: "#E6DB74",
96
- border: "#49483E",
97
- },
98
- markdown: {
99
- codeBlockBg: "#272822",
100
- codeBlockText: "#F8F8F2",
101
- codeBlockBorder: "#49483E",
102
- },
103
- sessionDots: {
104
- active: "#66D9EF",
105
- answered: "#A6E22E",
106
- inProgress: "#E6DB74",
107
- untouched: "#908B78",
108
- number: "#F8F8F2",
109
- activeNumber: "#66D9EF",
110
- stale: "#E6DB74",
111
- abandoned: "#F92672",
112
- },
113
- sessionPicker: {
114
- border: "#66D9EF",
115
- title: "#66D9EF",
116
- rowText: "#F8F8F2",
117
- rowDim: "#908B78",
118
- highlightBg: "#383830",
119
- highlightFg: "#A6E22E",
120
- activeMark: "#66D9EF",
121
- progress: "#66D9EF",
122
- staleIcon: "#E6DB74",
123
- staleText: "#E6DB74",
124
- staleAge: "#E6DB74",
125
- staleSubtitle: "#908B78",
126
- },
127
- },
128
- };
1
+ // Re-export from shared location for backward compatibility
2
+ export * from "../shared/themes/monokai.js";
@@ -1,127 +1,2 @@
1
- /**
2
- * Nord Theme
3
- * An arctic, north-bluish color palette.
4
- * https://www.nordtheme.com/
5
- */
6
- export const nordTheme = {
7
- name: "nord",
8
- gradient: {
9
- start: "#88c0d0", // nord8 - frost
10
- middle: "#8fbcbb", // nord7 - teal
11
- end: "#88c0d0",
12
- },
13
- colors: {
14
- primary: "#88c0d0", // nord8 - frost
15
- success: "#a3be8c", // nord14 - aurora green
16
- warning: "#ebcb8b", // nord13 - aurora yellow
17
- error: "#bf616a", // nord11 - aurora red
18
- info: "#81a1c1", // nord9 - frost blue
19
- focused: "#88c0d0", // nord8
20
- selected: "#a3be8c", // nord14
21
- pending: "#ebcb8b", // nord13
22
- unansweredHighlight: "#bf616a", // nord11 aurora red
23
- text: "#eceff4", // nord6 - snow storm
24
- textDim: "#616E88", // nord3 brightened
25
- textBold: "#eceff4", // nord6
26
- },
27
- borders: {
28
- primary: "#88c0d0", // nord8
29
- warning: "#ebcb8b", // nord13
30
- error: "#bf616a", // nord11
31
- neutral: "#3b4252", // nord1
32
- },
33
- components: {
34
- header: {
35
- border: "#4c566a", // nord3 - slightly more visible
36
- queueActive: "#88c0d0", // nord8
37
- queueEmpty: "#616E88", // nord3 brightened
38
- queueFlash: "#8fbcbb", // nord7
39
- pillBg: "#3b4252", // nord1
40
- },
41
- directory: {
42
- label: "#616E88", // nord3 brightened
43
- path: "#eceff4", // nord6
44
- },
45
- tabBar: {
46
- selected: "#eceff4", // nord6
47
- selectedBg: "#3b4252", // nord1
48
- default: "#616E88", // nord3 brightened
49
- answered: "#a3be8c", // nord14
50
- unanswered: "#616E88", // nord3 brightened
51
- divider: "#3b4252", // nord1
52
- },
53
- options: {
54
- focused: "#a3be8c", // nord14 - green cursor
55
- focusedBg: "#3b4252", // nord1
56
- selected: "#88c0d0", // nord8 - cyan selected
57
- selectedBg: "#3b4252", // nord1
58
- default: "#eceff4", // nord6
59
- description: "#d8dee9", // nord4 - lighter for readability
60
- hint: "#d8dee9", // nord4 - lighter for readability
61
- },
62
- input: {
63
- border: "#3b4252", // nord1
64
- borderFocused: "#88c0d0", // nord8
65
- placeholder: "#616E88", // nord3 brightened
66
- cursor: "#88c0d0", // nord8
67
- cursorDim: "#5e81ac", // nord10
68
- },
69
- review: {
70
- border: "#3b4252", // nord1
71
- confirmBorder: "#88c0d0", // nord8
72
- selectedOption: "#a3be8c", // nord14
73
- customAnswer: "#ebcb8b", // nord13
74
- questionId: "#616E88", // nord3 brightened
75
- divider: "#3b4252", // nord1
76
- },
77
- questionDisplay: {
78
- questionId: "#88c0d0", // nord8
79
- typeIndicator: "#616E88", // nord3 brightened
80
- elapsed: "#616E88", // nord3 brightened
81
- },
82
- footer: {
83
- border: "#3b4252", // nord1
84
- keyBg: "#3b4252", // nord1
85
- keyFg: "#88c0d0", // nord8
86
- action: "#7B88A1", // nord3 brightened
87
- separator: "#3b4252", // nord1
88
- },
89
- toast: {
90
- success: "#a3be8c", // nord14
91
- successPillBg: "#3b4252", // nord1
92
- error: "#bf616a", // nord11
93
- info: "#88c0d0", // nord8
94
- warning: "#ebcb8b",
95
- border: "#3b4252", // nord1
96
- },
97
- markdown: {
98
- codeBlockBg: "#2e3440",
99
- codeBlockText: "#eceff4",
100
- codeBlockBorder: "#3b4252",
101
- },
102
- sessionDots: {
103
- active: "#88c0d0",
104
- answered: "#a3be8c",
105
- inProgress: "#ebcb8b",
106
- untouched: "#616E88",
107
- number: "#eceff4",
108
- activeNumber: "#88c0d0",
109
- stale: "#ebcb8b",
110
- abandoned: "#bf616a",
111
- },
112
- sessionPicker: {
113
- border: "#88c0d0",
114
- title: "#88c0d0",
115
- rowText: "#eceff4",
116
- rowDim: "#616E88",
117
- highlightBg: "#3b4252",
118
- highlightFg: "#a3be8c",
119
- activeMark: "#88c0d0",
120
- progress: "#81a1c1",
121
- staleIcon: "#ebcb8b",
122
- staleText: "#ebcb8b",
123
- staleAge: "#ebcb8b",
124
- staleSubtitle: "#616E88",
125
- },
126
- },
127
- };
1
+ // Re-export from shared location for backward compatibility
2
+ export * from "../shared/themes/nord.js";
@@ -1,127 +1,2 @@
1
- /**
2
- * One Dark Theme
3
- * The iconic default theme from the Atom editor.
4
- * https://github.com/atom/atom/tree/master/packages/one-dark-syntax
5
- */
6
- export const oneDarkTheme = {
7
- name: "one-dark",
8
- gradient: {
9
- start: "#61afef", // blue
10
- middle: "#56b6c2", // cyan
11
- end: "#61afef",
12
- },
13
- colors: {
14
- primary: "#61afef", // blue
15
- success: "#98c379", // green
16
- warning: "#d19a66", // yellow/orange
17
- error: "#e06c75", // red
18
- info: "#56b6c2", // cyan
19
- focused: "#61afef",
20
- selected: "#98c379",
21
- pending: "#d19a66",
22
- unansweredHighlight: "#e06c75",
23
- text: "#abb2bf", // foreground
24
- textDim: "#767D8A", // comment gray brightened
25
- textBold: "#d7dae0", // lighter
26
- },
27
- borders: {
28
- primary: "#61afef",
29
- warning: "#d19a66",
30
- error: "#e06c75",
31
- neutral: "#3e4451", // gutter
32
- },
33
- components: {
34
- header: {
35
- border: "#4b5263", // slightly more visible
36
- queueActive: "#61afef",
37
- queueEmpty: "#767D8A",
38
- queueFlash: "#56b6c2",
39
- pillBg: "#3e4451",
40
- },
41
- directory: {
42
- label: "#767D8A",
43
- path: "#abb2bf",
44
- },
45
- tabBar: {
46
- selected: "#abb2bf",
47
- selectedBg: "#3e4451",
48
- default: "#767D8A",
49
- answered: "#98c379",
50
- unanswered: "#767D8A",
51
- divider: "#3e4451",
52
- },
53
- options: {
54
- focused: "#98c379",
55
- focusedBg: "#3e4451",
56
- selected: "#61afef",
57
- selectedBg: "#3e4451",
58
- default: "#abb2bf",
59
- description: "#848b98", // lighter for readability
60
- hint: "#848b98", // lighter for readability
61
- },
62
- input: {
63
- border: "#3e4451",
64
- borderFocused: "#61afef",
65
- placeholder: "#767D8A",
66
- cursor: "#61afef",
67
- cursorDim: "#56b6c2",
68
- },
69
- review: {
70
- border: "#3e4451",
71
- confirmBorder: "#61afef",
72
- selectedOption: "#98c379",
73
- customAnswer: "#d19a66",
74
- questionId: "#767D8A",
75
- divider: "#3e4451",
76
- },
77
- questionDisplay: {
78
- questionId: "#61afef",
79
- typeIndicator: "#767D8A",
80
- elapsed: "#767D8A",
81
- },
82
- footer: {
83
- border: "#3e4451",
84
- keyBg: "#3e4451",
85
- keyFg: "#61afef",
86
- action: "#848b98",
87
- separator: "#3e4451",
88
- },
89
- toast: {
90
- success: "#98c379",
91
- successPillBg: "#282c34",
92
- error: "#e06c75",
93
- info: "#61afef",
94
- warning: "#d19a66",
95
- border: "#3e4451",
96
- },
97
- markdown: {
98
- codeBlockBg: "#21252b",
99
- codeBlockText: "#abb2bf",
100
- codeBlockBorder: "#3e4451",
101
- },
102
- sessionDots: {
103
- active: "#61afef",
104
- answered: "#98c379",
105
- inProgress: "#d19a66",
106
- untouched: "#767D8A",
107
- number: "#abb2bf",
108
- activeNumber: "#61afef",
109
- stale: "#d19a66",
110
- abandoned: "#e06c75",
111
- },
112
- sessionPicker: {
113
- border: "#61afef",
114
- title: "#61afef",
115
- rowText: "#abb2bf",
116
- rowDim: "#767D8A",
117
- highlightBg: "#3e4451",
118
- highlightFg: "#98c379",
119
- activeMark: "#61afef",
120
- progress: "#56b6c2",
121
- staleIcon: "#d19a66",
122
- staleText: "#d19a66",
123
- staleAge: "#d19a66",
124
- staleSubtitle: "#767D8A",
125
- },
126
- },
127
- };
1
+ // Re-export from shared location for backward compatibility
2
+ export * from "../shared/themes/one-dark.js";
@@ -1,128 +1,2 @@
1
- /**
2
- * Visual direction: Rosé Pine - All natural pine, faux fur and a bit of soho vibes.
3
- * A warm, cozy theme with soft pinks and purples.
4
- *
5
- * Based on the Rosé Pine color palette: https://rosepinetheme.com/
6
- */
7
- export const rosePineTheme = {
8
- name: "rose-pine",
9
- gradient: {
10
- start: "#ebbcba",
11
- middle: "#f6c177",
12
- end: "#ebbcba",
13
- },
14
- colors: {
15
- primary: "#ebbcba",
16
- success: "#31748f",
17
- warning: "#f6c177",
18
- error: "#eb6f92",
19
- info: "#9ccfd8",
20
- focused: "#ebbcba",
21
- selected: "#31748f",
22
- pending: "#f6c177",
23
- unansweredHighlight: "#eb6f92",
24
- text: "#e0def4",
25
- textDim: "#8884a0", // brightened
26
- textBold: "#e0def4",
27
- },
28
- borders: {
29
- primary: "#ebbcba",
30
- warning: "#f6c177",
31
- error: "#eb6f92",
32
- neutral: "#26233a",
33
- },
34
- components: {
35
- header: {
36
- border: "#403d52",
37
- queueActive: "#ebbcba",
38
- queueEmpty: "#8884a0",
39
- queueFlash: "#f6c177",
40
- pillBg: "#1f1d2e",
41
- },
42
- directory: {
43
- label: "#8884a0",
44
- path: "#e0def4",
45
- },
46
- tabBar: {
47
- selected: "#e0def4",
48
- selectedBg: "#1f1d2e",
49
- default: "#8884a0",
50
- answered: "#31748f",
51
- unanswered: "#8884a0",
52
- divider: "#26233a",
53
- },
54
- options: {
55
- focused: "#31748f",
56
- focusedBg: "#191724",
57
- selected: "#ebbcba",
58
- selectedBg: "#1f1d2e",
59
- default: "#e0def4",
60
- description: "#908caa", // subtle - brighter for readability
61
- hint: "#908caa", // subtle - brighter for readability
62
- },
63
- input: {
64
- border: "#26233a",
65
- borderFocused: "#ebbcba",
66
- placeholder: "#8884a0",
67
- cursor: "#ebbcba",
68
- cursorDim: "#f6c177",
69
- },
70
- review: {
71
- border: "#26233a",
72
- confirmBorder: "#ebbcba",
73
- selectedOption: "#31748f",
74
- customAnswer: "#f6c177",
75
- questionId: "#8884a0",
76
- divider: "#26233a",
77
- },
78
- questionDisplay: {
79
- questionId: "#ebbcba",
80
- typeIndicator: "#8884a0",
81
- elapsed: "#8884a0",
82
- },
83
- footer: {
84
- border: "#26233a",
85
- keyBg: "#1f1d2e",
86
- keyFg: "#ebbcba",
87
- action: "#908caa", // subtle - brighter for visibility
88
- separator: "#26233a",
89
- },
90
- toast: {
91
- success: "#31748f",
92
- successPillBg: "#191724",
93
- error: "#eb6f92",
94
- info: "#9ccfd8",
95
- warning: "#f6c177",
96
- border: "#26233a",
97
- },
98
- markdown: {
99
- codeBlockBg: "#191724",
100
- codeBlockText: "#e0def4",
101
- codeBlockBorder: "#26233a",
102
- },
103
- sessionDots: {
104
- active: "#ebbcba",
105
- answered: "#31748f",
106
- inProgress: "#f6c177",
107
- untouched: "#8884a0",
108
- number: "#e0def4",
109
- activeNumber: "#ebbcba",
110
- stale: "#f6c177",
111
- abandoned: "#eb6f92",
112
- },
113
- sessionPicker: {
114
- border: "#ebbcba",
115
- title: "#ebbcba",
116
- rowText: "#e0def4",
117
- rowDim: "#8884a0",
118
- highlightBg: "#191724",
119
- highlightFg: "#31748f",
120
- activeMark: "#ebbcba",
121
- progress: "#9ccfd8",
122
- staleIcon: "#f6c177",
123
- staleText: "#f6c177",
124
- staleAge: "#f6c177",
125
- staleSubtitle: "#8884a0",
126
- },
127
- },
128
- };
1
+ // Re-export from shared location for backward compatibility
2
+ export * from "../shared/themes/rose-pine.js";