auq-mcp-server 2.6.3 → 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 +30 -15
  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,129 @@
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
+ bg: "#010409",
14
+ surface: "#0D1117",
15
+ surfaceAlt: "#161B22",
16
+ primary: "#58a6ff",
17
+ success: "#3fb950",
18
+ warning: "#d29922",
19
+ error: "#f85149",
20
+ info: "#58a6ff",
21
+ focused: "#58a6ff",
22
+ selected: "#3fb950",
23
+ pending: "#d29922",
24
+ unansweredHighlight: "#f85149",
25
+ text: "#c9d1d9",
26
+ textDim: "#a0a8b4", // brightened
27
+ textBold: "#f0f6fc",
28
+ },
29
+ borders: {
30
+ primary: "#58a6ff",
31
+ warning: "#d29922",
32
+ error: "#f85149",
33
+ neutral: "#30363d",
34
+ },
35
+ components: {
36
+ header: {
37
+ border: "#3D444D", // differentiated from neutral #30363d
38
+ queueActive: "#58a6ff",
39
+ queueEmpty: "#a0a8b4",
40
+ queueFlash: "#79c0ff",
41
+ pillBg: "#161b22",
42
+ },
43
+ directory: {
44
+ label: "#a0a8b4",
45
+ path: "#c9d1d9",
46
+ },
47
+ tabBar: {
48
+ selected: "#c9d1d9",
49
+ selectedBg: "#161b22",
50
+ default: "#a0a8b4",
51
+ answered: "#3fb950",
52
+ unanswered: "#a0a8b4",
53
+ divider: "#30363d",
54
+ },
55
+ options: {
56
+ focused: "#3fb950",
57
+ focusedBg: "#0d1117",
58
+ selected: "#58a6ff",
59
+ selectedBg: "#161b22",
60
+ default: "#c9d1d9",
61
+ description: "#b1bac4", // brighter for readability
62
+ hint: "#b1bac4", // brighter for readability
63
+ },
64
+ input: {
65
+ border: "#30363d",
66
+ borderFocused: "#58a6ff",
67
+ placeholder: "#a0a8b4",
68
+ cursor: "#58a6ff",
69
+ cursorDim: "#79c0ff",
70
+ },
71
+ review: {
72
+ border: "#30363d",
73
+ confirmBorder: "#58a6ff",
74
+ selectedOption: "#3fb950",
75
+ customAnswer: "#d29922",
76
+ questionId: "#a0a8b4",
77
+ divider: "#30363d",
78
+ },
79
+ questionDisplay: {
80
+ questionId: "#58a6ff",
81
+ typeIndicator: "#a0a8b4",
82
+ elapsed: "#a0a8b4",
83
+ },
84
+ footer: {
85
+ border: "#30363d",
86
+ keyBg: "#161b22",
87
+ keyFg: "#58a6ff",
88
+ action: "#b1bac4", // brighter for visibility
89
+ separator: "#30363d",
90
+ },
91
+ toast: {
92
+ success: "#3fb950",
93
+ successPillBg: "#161b22",
94
+ error: "#f85149",
95
+ info: "#58a6ff",
96
+ warning: "#d29922",
97
+ border: "#30363d",
98
+ },
99
+ markdown: {
100
+ codeBlockBg: "#0d1117",
101
+ codeBlockText: "#c9d1d9",
102
+ codeBlockBorder: "#30363d",
103
+ },
104
+ sessionDots: {
105
+ active: "#58a6ff",
106
+ answered: "#3fb950",
107
+ inProgress: "#d29922",
108
+ untouched: "#a0a8b4",
109
+ number: "#c9d1d9",
110
+ activeNumber: "#58a6ff",
111
+ stale: "#d29922",
112
+ abandoned: "#f85149",
113
+ },
114
+ sessionPicker: {
115
+ border: "#58a6ff",
116
+ title: "#58a6ff",
117
+ rowText: "#c9d1d9",
118
+ rowDim: "#a0a8b4",
119
+ highlightBg: "#0d1117",
120
+ highlightFg: "#3fb950",
121
+ activeMark: "#58a6ff",
122
+ progress: "#58a6ff",
123
+ staleIcon: "#d29922",
124
+ staleText: "#d29922",
125
+ staleAge: "#d29922",
126
+ staleSubtitle: "#a0a8b4",
127
+ },
128
+ },
129
+ };
@@ -0,0 +1,129 @@
1
+ /**
2
+ * GitHub Light theme.
3
+ * Authentic GitHub Light color palette optimized for readability.
4
+ */
5
+ export const githubLightTheme = {
6
+ name: "github-light",
7
+ gradient: {
8
+ start: "#0969DA", // GitHub blue
9
+ middle: "#8250DF", // GitHub purple
10
+ end: "#0969DA",
11
+ },
12
+ colors: {
13
+ bg: "#FFFFFF",
14
+ surface: "#F6F8FA",
15
+ surfaceAlt: "#EFF2F5",
16
+ primary: "#0969DA", // GitHub blue
17
+ success: "#1A7F37", // GitHub green
18
+ warning: "#9A6700", // GitHub orange/brown
19
+ error: "#CF222E", // GitHub red
20
+ info: "#0969DA",
21
+ focused: "#0969DA",
22
+ selected: "#1A7F37",
23
+ pending: "#9A6700",
24
+ unansweredHighlight: "#cf222e",
25
+ text: "#24292F", // GitHub foreground
26
+ textDim: "#6E7781", // Muted text lightened
27
+ textBold: "#1F2328",
28
+ },
29
+ borders: {
30
+ primary: "#0969DA",
31
+ warning: "#9A6700",
32
+ error: "#CF222E",
33
+ neutral: "#D0D7DE", // Light gray border
34
+ },
35
+ components: {
36
+ header: {
37
+ border: "#A0A8B0",
38
+ queueActive: "#0969DA",
39
+ queueEmpty: "#6E7781",
40
+ queueFlash: "#DDF4FF", // Light blue flash
41
+ pillBg: "#DDF4FF", // Light blue bg
42
+ },
43
+ directory: {
44
+ label: "#6E7781",
45
+ path: "#24292F",
46
+ },
47
+ tabBar: {
48
+ selected: "#24292F",
49
+ selectedBg: "#F6F8FA", // Very light gray
50
+ default: "#6E7781",
51
+ answered: "#1A7F37",
52
+ unanswered: "#6E7781",
53
+ divider: "#D0D7DE",
54
+ },
55
+ options: {
56
+ focused: "#1A7F37", // Green cursor
57
+ focusedBg: "#DAFBE1", // Light green bg
58
+ selected: "#0969DA", // Blue selected
59
+ selectedBg: "#DDF4FF", // Light blue bg
60
+ default: "#24292F",
61
+ description: "#424a53", // darker for readability
62
+ hint: "#424a53", // darker for readability
63
+ },
64
+ input: {
65
+ border: "#D0D7DE",
66
+ borderFocused: "#0969DA",
67
+ placeholder: "#6E7781",
68
+ cursor: "#0969DA",
69
+ cursorDim: "#B8E0FF", // Lighter blue for cursor dim
70
+ },
71
+ review: {
72
+ border: "#D0D7DE",
73
+ confirmBorder: "#0969DA",
74
+ selectedOption: "#1A7F37",
75
+ customAnswer: "#9A6700",
76
+ questionId: "#6E7781",
77
+ divider: "#D0D7DE",
78
+ },
79
+ questionDisplay: {
80
+ questionId: "#0969DA",
81
+ typeIndicator: "#6E7781",
82
+ elapsed: "#6E7781",
83
+ },
84
+ footer: {
85
+ border: "#D0D7DE",
86
+ keyBg: "#F6F8FA", // Light key cap
87
+ keyFg: "#0969DA",
88
+ action: "#424a53", // darker for visibility
89
+ separator: "#D0D7DE",
90
+ },
91
+ toast: {
92
+ success: "#1A7F37",
93
+ successPillBg: "#f6f8fa",
94
+ error: "#CF222E",
95
+ info: "#0969DA",
96
+ warning: "#9A6700",
97
+ border: "#D0D7DE",
98
+ },
99
+ markdown: {
100
+ codeBlockBg: "#f6f8fa",
101
+ codeBlockText: "#24292F",
102
+ codeBlockBorder: "#D0D7DE",
103
+ },
104
+ sessionDots: {
105
+ active: "#0969DA",
106
+ answered: "#1A7F37",
107
+ inProgress: "#9A6700",
108
+ untouched: "#6E7781",
109
+ number: "#24292F",
110
+ activeNumber: "#0969DA",
111
+ stale: "#9A6700",
112
+ abandoned: "#CF222E",
113
+ },
114
+ sessionPicker: {
115
+ border: "#0969DA",
116
+ title: "#0969DA",
117
+ rowText: "#24292F",
118
+ rowDim: "#6E7781",
119
+ highlightBg: "#DAFBE1",
120
+ highlightFg: "#1A7F37",
121
+ activeMark: "#0969DA",
122
+ progress: "#0969DA",
123
+ staleIcon: "#9A6700",
124
+ staleText: "#9A6700",
125
+ staleAge: "#9A6700",
126
+ staleSubtitle: "#6E7781",
127
+ },
128
+ },
129
+ };
@@ -0,0 +1,130 @@
1
+ /**
2
+ * Gruvbox Dark Theme
3
+ * Retro groove color scheme with warm colors.
4
+ * https://github.com/morhetz/gruvbox
5
+ */
6
+ export const gruvboxDarkTheme = {
7
+ name: "gruvbox-dark",
8
+ gradient: {
9
+ start: "#458588", // blue
10
+ middle: "#689d6a", // aqua
11
+ end: "#458588",
12
+ },
13
+ colors: {
14
+ bg: "#1D2021",
15
+ surface: "#282828",
16
+ surfaceAlt: "#3C3836",
17
+ primary: "#458588", // blue
18
+ success: "#98971a", // green
19
+ warning: "#d79921", // yellow
20
+ error: "#cc241d", // red
21
+ info: "#458588", // blue
22
+ focused: "#458588", // blue
23
+ selected: "#98971a", // green
24
+ pending: "#d79921", // yellow
25
+ unansweredHighlight: "#cc241d", // gruvbox red
26
+ text: "#ebdbb2", // light1
27
+ textDim: "#a89984", // gray brightened
28
+ textBold: "#fbf1c7", // light0
29
+ },
30
+ borders: {
31
+ primary: "#458588",
32
+ warning: "#d79921",
33
+ error: "#cc241d",
34
+ neutral: "#3c3836", // dark1
35
+ },
36
+ components: {
37
+ header: {
38
+ border: "#504945", // dark2 - slightly more visible
39
+ queueActive: "#458588",
40
+ queueEmpty: "#a89984",
41
+ queueFlash: "#689d6a",
42
+ pillBg: "#3c3836",
43
+ },
44
+ directory: {
45
+ label: "#a89984",
46
+ path: "#ebdbb2",
47
+ },
48
+ tabBar: {
49
+ selected: "#ebdbb2",
50
+ selectedBg: "#3c3836",
51
+ default: "#a89984",
52
+ answered: "#98971a",
53
+ unanswered: "#a89984",
54
+ divider: "#3c3836",
55
+ },
56
+ options: {
57
+ focused: "#98971a",
58
+ focusedBg: "#3c3836",
59
+ selected: "#458588",
60
+ selectedBg: "#3c3836",
61
+ default: "#ebdbb2",
62
+ description: "#bdae93", // light3 - lighter for readability
63
+ hint: "#bdae93", // light3 - lighter for readability
64
+ },
65
+ input: {
66
+ border: "#3c3836",
67
+ borderFocused: "#458588",
68
+ placeholder: "#a89984",
69
+ cursor: "#458588",
70
+ cursorDim: "#689d6a",
71
+ },
72
+ review: {
73
+ border: "#3c3836",
74
+ confirmBorder: "#458588",
75
+ selectedOption: "#98971a",
76
+ customAnswer: "#d79921",
77
+ questionId: "#a89984",
78
+ divider: "#3c3836",
79
+ },
80
+ questionDisplay: {
81
+ questionId: "#458588",
82
+ typeIndicator: "#a89984",
83
+ elapsed: "#a89984",
84
+ },
85
+ footer: {
86
+ border: "#3c3836",
87
+ keyBg: "#3c3836",
88
+ keyFg: "#458588",
89
+ action: "#bdae93", // light3 - brighter for visibility
90
+ separator: "#3c3836",
91
+ },
92
+ toast: {
93
+ success: "#98971a",
94
+ successPillBg: "#3c3836", // dark1
95
+ error: "#cc241d",
96
+ info: "#458588",
97
+ warning: "#d79921",
98
+ border: "#3c3836",
99
+ },
100
+ markdown: {
101
+ codeBlockBg: "#282828",
102
+ codeBlockText: "#ebdbb2",
103
+ codeBlockBorder: "#3c3836",
104
+ },
105
+ sessionDots: {
106
+ active: "#458588",
107
+ answered: "#98971a",
108
+ inProgress: "#d79921",
109
+ untouched: "#a89984",
110
+ number: "#ebdbb2",
111
+ activeNumber: "#458588",
112
+ stale: "#d79921",
113
+ abandoned: "#cc241d",
114
+ },
115
+ sessionPicker: {
116
+ border: "#458588",
117
+ title: "#458588",
118
+ rowText: "#ebdbb2",
119
+ rowDim: "#a89984",
120
+ highlightBg: "#3c3836",
121
+ highlightFg: "#98971a",
122
+ activeMark: "#458588",
123
+ progress: "#458588",
124
+ staleIcon: "#d79921",
125
+ staleText: "#d79921",
126
+ staleAge: "#d79921",
127
+ staleSubtitle: "#a89984",
128
+ },
129
+ },
130
+ };
@@ -0,0 +1,130 @@
1
+ /**
2
+ * Gruvbox Light Theme
3
+ * Retro groove color scheme - light variant.
4
+ * https://github.com/morhetz/gruvbox
5
+ */
6
+ export const gruvboxLightTheme = {
7
+ name: "gruvbox-light",
8
+ gradient: {
9
+ start: "#076678", // faded blue
10
+ middle: "#427b58", // faded aqua
11
+ end: "#076678",
12
+ },
13
+ colors: {
14
+ bg: "#FBF1C7",
15
+ surface: "#F2E5BC",
16
+ surfaceAlt: "#EBDBB2",
17
+ primary: "#076678", // faded blue
18
+ success: "#79740e", // faded green
19
+ warning: "#b57614", // faded yellow
20
+ error: "#9d0006", // faded red
21
+ info: "#076678", // faded blue
22
+ focused: "#076678",
23
+ selected: "#79740e",
24
+ pending: "#b57614",
25
+ unansweredHighlight: "#cc241d", // gruvbox red
26
+ text: "#3c3836", // dark1
27
+ textDim: "#7C6F64", // gray darkened for contrast on cream
28
+ textBold: "#282828", // dark0
29
+ },
30
+ borders: {
31
+ primary: "#076678",
32
+ warning: "#b57614",
33
+ error: "#9d0006",
34
+ neutral: "#d5c4a1", // light2
35
+ },
36
+ components: {
37
+ header: {
38
+ border: "#a89984", // gray - slightly more visible
39
+ queueActive: "#076678",
40
+ queueEmpty: "#a89984",
41
+ queueFlash: "#427b58",
42
+ pillBg: "#ebdbb2", // light1
43
+ },
44
+ directory: {
45
+ label: "#7C6F64",
46
+ path: "#3c3836",
47
+ },
48
+ tabBar: {
49
+ selected: "#3c3836",
50
+ selectedBg: "#ebdbb2",
51
+ default: "#7C6F64",
52
+ answered: "#79740e",
53
+ unanswered: "#a89984",
54
+ divider: "#d5c4a1",
55
+ },
56
+ options: {
57
+ focused: "#79740e",
58
+ focusedBg: "#ebdbb2",
59
+ selected: "#076678",
60
+ selectedBg: "#ebdbb2",
61
+ default: "#3c3836",
62
+ description: "#665c54", // dark3 - darker for readability
63
+ hint: "#665c54", // dark3 - darker for readability
64
+ },
65
+ input: {
66
+ border: "#d5c4a1",
67
+ borderFocused: "#076678",
68
+ placeholder: "#a89984",
69
+ cursor: "#076678",
70
+ cursorDim: "#427b58",
71
+ },
72
+ review: {
73
+ border: "#d5c4a1",
74
+ confirmBorder: "#076678",
75
+ selectedOption: "#79740e",
76
+ customAnswer: "#b57614",
77
+ questionId: "#a89984",
78
+ divider: "#d5c4a1",
79
+ },
80
+ questionDisplay: {
81
+ questionId: "#076678",
82
+ typeIndicator: "#a89984",
83
+ elapsed: "#a89984",
84
+ },
85
+ footer: {
86
+ border: "#d5c4a1",
87
+ keyBg: "#ebdbb2",
88
+ keyFg: "#076678",
89
+ action: "#665c54", // dark3 - darker for visibility
90
+ separator: "#d5c4a1",
91
+ },
92
+ toast: {
93
+ success: "#79740e",
94
+ successPillBg: "#ebdbb2", // light1 - light bg
95
+ error: "#9d0006",
96
+ info: "#076678",
97
+ warning: "#b57614",
98
+ border: "#d5c4a1",
99
+ },
100
+ markdown: {
101
+ codeBlockBg: "#f9f5d9",
102
+ codeBlockText: "#3c3836",
103
+ codeBlockBorder: "#d5c4a1",
104
+ },
105
+ sessionDots: {
106
+ active: "#076678",
107
+ answered: "#79740e",
108
+ inProgress: "#b57614",
109
+ untouched: "#a89984",
110
+ number: "#3c3836",
111
+ activeNumber: "#076678",
112
+ stale: "#b57614",
113
+ abandoned: "#9d0006",
114
+ },
115
+ sessionPicker: {
116
+ border: "#076678",
117
+ title: "#076678",
118
+ rowText: "#3c3836",
119
+ rowDim: "#a89984",
120
+ highlightBg: "#ebdbb2",
121
+ highlightFg: "#79740e",
122
+ activeMark: "#076678",
123
+ progress: "#076678",
124
+ staleIcon: "#b57614",
125
+ staleText: "#b57614",
126
+ staleAge: "#b57614",
127
+ staleSubtitle: "#a89984",
128
+ },
129
+ },
130
+ };
@@ -0,0 +1,70 @@
1
+ import { darkTheme } from "./dark.js";
2
+ import { lightTheme } from "./light.js";
3
+ import { nordTheme } from "./nord.js";
4
+ import { draculaTheme } from "./dracula.js";
5
+ import { catppuccinMochaTheme } from "./catppuccin-mocha.js";
6
+ import { catppuccinLatteTheme } from "./catppuccin-latte.js";
7
+ import { solarizedDarkTheme } from "./solarized-dark.js";
8
+ import { solarizedLightTheme } from "./solarized-light.js";
9
+ import { gruvboxDarkTheme } from "./gruvbox-dark.js";
10
+ import { gruvboxLightTheme } from "./gruvbox-light.js";
11
+ import { tokyoNightTheme } from "./tokyo-night.js";
12
+ import { oneDarkTheme } from "./one-dark.js";
13
+ import { monokaiTheme } from "./monokai.js";
14
+ import { githubDarkTheme } from "./github-dark.js";
15
+ import { githubLightTheme } from "./github-light.js";
16
+ import { rosePineTheme } from "./rose-pine.js";
17
+ /**
18
+ * Built-in themes registry
19
+ * Order determines cycling order with Ctrl+T
20
+ */
21
+ const builtInThemes = new Map([
22
+ ["AUQ dark", darkTheme],
23
+ ["AUQ light", lightTheme],
24
+ ["nord", nordTheme],
25
+ ["dracula", draculaTheme],
26
+ ["catppuccin-mocha", catppuccinMochaTheme],
27
+ ["catppuccin-latte", catppuccinLatteTheme],
28
+ ["solarized-dark", solarizedDarkTheme],
29
+ ["solarized-light", solarizedLightTheme],
30
+ ["gruvbox-dark", gruvboxDarkTheme],
31
+ ["gruvbox-light", gruvboxLightTheme],
32
+ ["tokyo-night", tokyoNightTheme],
33
+ ["one-dark", oneDarkTheme],
34
+ ["monokai", monokaiTheme],
35
+ ["github-dark", githubDarkTheme],
36
+ ["github-light", githubLightTheme],
37
+ ["rose-pine", rosePineTheme],
38
+ ]);
39
+ /**
40
+ * Custom themes loaded from user config directory
41
+ */
42
+ const customThemes = new Map();
43
+ /**
44
+ * Register a custom theme
45
+ */
46
+ export function registerTheme(name, theme) {
47
+ customThemes.set(name, theme);
48
+ }
49
+ /**
50
+ * Get a theme by name
51
+ * @param name Theme name ('dark', 'light', or custom theme name)
52
+ * @returns Theme object or undefined if not found
53
+ */
54
+ export function getTheme(name) {
55
+ return builtInThemes.get(name) ?? customThemes.get(name);
56
+ }
57
+ /**
58
+ * List all available theme names
59
+ */
60
+ export function listThemes() {
61
+ return [...builtInThemes.keys(), ...customThemes.keys()];
62
+ }
63
+ /**
64
+ * Check if a theme exists
65
+ */
66
+ export function hasTheme(name) {
67
+ return builtInThemes.has(name) || customThemes.has(name);
68
+ }
69
+ // Re-export built-in themes for convenience
70
+ export { darkTheme, lightTheme, nordTheme, draculaTheme, catppuccinMochaTheme, catppuccinLatteTheme, solarizedDarkTheme, solarizedLightTheme, gruvboxDarkTheme, gruvboxLightTheme, tokyoNightTheme, oneDarkTheme, monokaiTheme, githubDarkTheme, githubLightTheme, rosePineTheme, };