@sunub/obsidian-mcp-server 0.2.0 → 0.3.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 (283) hide show
  1. package/README.md +201 -25
  2. package/build/cli/AppContainer.d.ts +1 -0
  3. package/build/cli/AppContainer.js +197 -0
  4. package/build/cli/AppContainer.js.map +1 -0
  5. package/build/cli/app.js +7 -0
  6. package/build/cli/app.js.map +1 -0
  7. package/build/cli/config/SettingContext.d.ts +1 -0
  8. package/build/cli/config/SettingContext.js +2 -0
  9. package/build/cli/config/SettingContext.js.map +1 -0
  10. package/build/cli/config/mcpServersConfig.d.ts +18 -0
  11. package/build/cli/config/mcpServersConfig.js +119 -0
  12. package/build/cli/config/mcpServersConfig.js.map +1 -0
  13. package/build/cli/config/settingSchema.d.ts +180 -0
  14. package/build/cli/config/settingSchema.js +128 -0
  15. package/build/cli/config/settingSchema.js.map +1 -0
  16. package/build/cli/context/InputContext.d.ts +12 -0
  17. package/build/cli/context/InputContext.js +10 -0
  18. package/build/cli/context/InputContext.js.map +1 -0
  19. package/build/cli/context/KeypressContext.d.ts +30 -0
  20. package/build/cli/context/KeypressContext.js +200 -0
  21. package/build/cli/context/KeypressContext.js.map +1 -0
  22. package/build/cli/context/KeypressContext.util.d.ts +7 -0
  23. package/build/cli/context/KeypressContext.util.js +474 -0
  24. package/build/cli/context/KeypressContext.util.js.map +1 -0
  25. package/build/cli/hooks/useAtCompletion.d.ts +12 -0
  26. package/build/cli/hooks/useAtCompletion.js +5 -0
  27. package/build/cli/hooks/useAtCompletion.js.map +1 -0
  28. package/build/cli/hooks/useCommandCompletion.d.ts +59 -0
  29. package/build/cli/hooks/useCommandCompletion.js +344 -0
  30. package/build/cli/hooks/useCommandCompletion.js.map +1 -0
  31. package/build/cli/hooks/useCompletion.d.ts +22 -0
  32. package/build/cli/hooks/useCompletion.js +84 -0
  33. package/build/cli/hooks/useCompletion.js.map +1 -0
  34. package/build/cli/hooks/useDispatcher.d.ts +6 -0
  35. package/build/cli/hooks/useDispatcher.js +286 -0
  36. package/build/cli/hooks/useDispatcher.js.map +1 -0
  37. package/build/cli/hooks/useFocus.d.ts +2 -0
  38. package/build/cli/hooks/useFocus.js +3 -0
  39. package/build/cli/hooks/useFocus.js.map +1 -0
  40. package/build/cli/hooks/useInputHistory.d.ts +24 -0
  41. package/build/cli/hooks/useInputHistory.js +159 -0
  42. package/build/cli/hooks/useInputHistory.js.map +1 -0
  43. package/build/cli/hooks/useKeyMatchers.d.ts +17 -0
  44. package/build/cli/hooks/useKeyMatchers.js +13 -0
  45. package/build/cli/hooks/useKeyMatchers.js.map +1 -0
  46. package/build/cli/hooks/useKeypress.d.ts +19 -0
  47. package/build/cli/hooks/useKeypress.js +28 -0
  48. package/build/cli/hooks/useKeypress.js.map +1 -0
  49. package/build/cli/hooks/useLlmStream.d.ts +12 -0
  50. package/build/cli/hooks/useLlmStream.js +365 -0
  51. package/build/cli/hooks/useLlmStream.js.map +1 -0
  52. package/build/cli/hooks/useMcpClient.d.ts +10 -0
  53. package/build/cli/hooks/useMcpClient.js +100 -0
  54. package/build/cli/hooks/useMcpClient.js.map +1 -0
  55. package/build/cli/hooks/useMcpManager.d.ts +22 -0
  56. package/build/cli/hooks/useMcpManager.js +86 -0
  57. package/build/cli/hooks/useMcpManager.js.map +1 -0
  58. package/build/cli/hooks/usePromptCompletion.d.ts +19 -0
  59. package/build/cli/hooks/usePromptCompletion.js +13 -0
  60. package/build/cli/hooks/usePromptCompletion.js.map +1 -0
  61. package/build/cli/hooks/useRagContext.d.ts +6 -0
  62. package/build/cli/hooks/useRagContext.js +83 -0
  63. package/build/cli/hooks/useRagContext.js.map +1 -0
  64. package/build/cli/hooks/useShellCompletion.d.ts +18 -0
  65. package/build/cli/hooks/useShellCompletion.js +10 -0
  66. package/build/cli/hooks/useShellCompletion.js.map +1 -0
  67. package/build/cli/hooks/useSlashCompletion.d.ts +21 -0
  68. package/build/cli/hooks/useSlashCompletion.js +11 -0
  69. package/build/cli/hooks/useSlashCompletion.js.map +1 -0
  70. package/build/cli/hooks/useTerminalSize.d.ts +9 -0
  71. package/build/cli/hooks/useTerminalSize.js +26 -0
  72. package/build/cli/hooks/useTerminalSize.js.map +1 -0
  73. package/build/cli/index.js +27 -0
  74. package/build/cli/index.js.map +1 -0
  75. package/build/cli/key/keyBindings.d.ts +152 -0
  76. package/build/cli/key/keyBindings.js +630 -0
  77. package/build/cli/key/keyBindings.js.map +1 -0
  78. package/build/cli/key/keyMatchers.d.ts +27 -0
  79. package/build/cli/key/keyMatchers.js +33 -0
  80. package/build/cli/key/keyMatchers.js.map +1 -0
  81. package/build/cli/key/text-buffer-bestcase.js +2754 -0
  82. package/build/cli/key/text-buffer-bestcase.js.map +1 -0
  83. package/build/cli/key/text-buffer.js +918 -0
  84. package/build/cli/key/text-buffer.js.map +1 -0
  85. package/build/cli/reference/HistoryItemDisplay.d.ts +23 -0
  86. package/build/cli/reference/HistoryItemDisplay.js +63 -0
  87. package/build/cli/reference/HistoryItemDisplay.js.map +1 -0
  88. package/build/cli/reference/InputContext.d.ts +17 -0
  89. package/build/cli/reference/InputContext.js +16 -0
  90. package/build/cli/reference/InputContext.js.map +1 -0
  91. package/build/cli/reference/KerypressContext.d.ts +37 -0
  92. package/build/cli/reference/KerypressContext.js +791 -0
  93. package/build/cli/reference/KerypressContext.js.map +1 -0
  94. package/build/cli/reference/MainContent.d.ts +6 -0
  95. package/build/cli/reference/MainContent.js +207 -0
  96. package/build/cli/reference/MainContent.js.map +1 -0
  97. package/build/cli/reference/UIStateContext.d.ts +188 -0
  98. package/build/cli/reference/UIStateContext.js +16 -0
  99. package/build/cli/reference/UIStateContext.js.map +1 -0
  100. package/build/cli/reference/useGeminiStream.d.ts +42 -0
  101. package/build/cli/reference/useGeminiStream.js +1404 -0
  102. package/build/cli/reference/useGeminiStream.js.map +1 -0
  103. package/build/cli/services/McpClientService.d.ts +32 -0
  104. package/build/cli/services/McpClientService.js +123 -0
  105. package/build/cli/services/McpClientService.js.map +1 -0
  106. package/build/cli/services/McpManager.d.ts +28 -0
  107. package/build/cli/services/McpManager.js +146 -0
  108. package/build/cli/services/McpManager.js.map +1 -0
  109. package/build/cli/theme/builtin/no-color.js +125 -0
  110. package/build/cli/theme/builtin/no-color.js.map +1 -0
  111. package/build/cli/theme/builtin/tokyonight-dark.js +146 -0
  112. package/build/cli/theme/builtin/tokyonight-dark.js.map +1 -0
  113. package/build/cli/theme/semantic-colors.js +19 -0
  114. package/build/cli/theme/semantic-colors.js.map +1 -0
  115. package/build/cli/theme/semantic-tokens.js +77 -0
  116. package/build/cli/theme/semantic-tokens.js.map +1 -0
  117. package/build/cli/theme/theme-manager.d.ts +32 -0
  118. package/build/cli/theme/theme-manager.js +150 -0
  119. package/build/cli/theme/theme-manager.js.map +1 -0
  120. package/build/cli/theme/theme.js +333 -0
  121. package/build/cli/theme/theme.js.map +1 -0
  122. package/build/cli/tmp.js +27 -0
  123. package/build/cli/tmp.js.map +1 -0
  124. package/build/cli/types.d.ts +72 -0
  125. package/build/cli/types.js +8 -0
  126. package/build/cli/types.js.map +1 -0
  127. package/build/cli/ui/ConnectionStatus.d.ts +13 -0
  128. package/build/cli/ui/ConnectionStatus.js +24 -0
  129. package/build/cli/ui/ConnectionStatus.js.map +1 -0
  130. package/build/cli/ui/HelpCommands.d.ts +5 -0
  131. package/build/cli/ui/HelpCommands.js +11 -0
  132. package/build/cli/ui/HelpCommands.js.map +1 -0
  133. package/build/cli/ui/HistoryItemDisplay.d.ts +9 -0
  134. package/build/cli/ui/HistoryItemDisplay.js +38 -0
  135. package/build/cli/ui/HistoryItemDisplay.js.map +1 -0
  136. package/build/cli/ui/InputPrompt-bestcase.d.ts +63 -0
  137. package/build/cli/ui/InputPrompt-bestcase.js +1301 -0
  138. package/build/cli/ui/InputPrompt-bestcase.js.map +1 -0
  139. package/build/cli/ui/InputPrompt.d.ts +12 -0
  140. package/build/cli/ui/InputPrompt.js +145 -0
  141. package/build/cli/ui/InputPrompt.js.map +1 -0
  142. package/build/cli/ui/InputPrompt.tmp.d.ts +7 -0
  143. package/build/cli/ui/InputPrompt.tmp.js +215 -0
  144. package/build/cli/ui/InputPrompt.tmp.js.map +1 -0
  145. package/build/cli/ui/MainContent.d.ts +10 -0
  146. package/build/cli/ui/MainContent.js +24 -0
  147. package/build/cli/ui/MainContent.js.map +1 -0
  148. package/build/cli/ui/MouseContext.d.ts +1 -0
  149. package/build/cli/ui/MouseContext.js +2 -0
  150. package/build/cli/ui/MouseContext.js.map +1 -0
  151. package/build/cli/ui/SuggestionsDisplay.d.ts +25 -0
  152. package/build/cli/ui/SuggestionsDisplay.js +45 -0
  153. package/build/cli/ui/SuggestionsDisplay.js.map +1 -0
  154. package/build/cli/ui/ThinkingIndicator.d.ts +2 -0
  155. package/build/cli/ui/ThinkingIndicator.js +16 -0
  156. package/build/cli/ui/ThinkingIndicator.js.map +1 -0
  157. package/build/cli/ui/layout/DefaultAppLayout.d.ts +2 -0
  158. package/build/cli/ui/layout/DefaultAppLayout.js +6 -0
  159. package/build/cli/ui/layout/DefaultAppLayout.js.map +1 -0
  160. package/build/cli/ui/shared/ExpandableText.d.ts +14 -0
  161. package/build/cli/ui/shared/ExpandableText.js +19 -0
  162. package/build/cli/ui/shared/ExpandableText.js.map +1 -0
  163. package/build/cli/utils/commandUtils.d.ts +11 -0
  164. package/build/cli/utils/commandUtils.js +16 -0
  165. package/build/cli/utils/commandUtils.js.map +1 -0
  166. package/build/cli/utils/debugLogger.d.ts +12 -0
  167. package/build/cli/utils/debugLogger.js +52 -0
  168. package/build/cli/utils/debugLogger.js.map +1 -0
  169. package/build/cli/utils/historyStorage.d.ts +13 -0
  170. package/build/cli/utils/historyStorage.js +64 -0
  171. package/build/cli/utils/historyStorage.js.map +1 -0
  172. package/build/cli/utils/textUtil.d.ts +68 -0
  173. package/build/cli/utils/textUtil.js +236 -0
  174. package/build/cli/utils/textUtil.js.map +1 -0
  175. package/build/config.js +31 -5
  176. package/build/config.js.map +1 -0
  177. package/build/db.js +55 -0
  178. package/build/db.js.map +1 -0
  179. package/build/index.js +4 -0
  180. package/build/index.js.map +1 -0
  181. package/build/tools/create_document_with_properties/index.d.ts +60 -0
  182. package/build/tools/create_document_with_properties/index.js +6 -0
  183. package/build/tools/create_document_with_properties/index.js.map +1 -0
  184. package/build/tools/create_document_with_properties/params.d.ts +66 -0
  185. package/build/tools/generate_property/index.js +6 -0
  186. package/build/tools/generate_property/index.js.map +1 -0
  187. package/build/tools/index.d.ts +184 -0
  188. package/build/tools/organize_attachments/index.js +6 -0
  189. package/build/tools/organize_attachments/index.js.map +1 -0
  190. package/build/tools/organize_attachments/params.d.ts +122 -0
  191. package/build/tools/vault/index.js +16 -2
  192. package/build/tools/vault/index.js.map +1 -0
  193. package/build/tools/vault/params.d.ts +115 -0
  194. package/build/tools/vault/types/collect_context.d.ts +1340 -0
  195. package/build/tools/vault/types/list_all.d.ts +387 -0
  196. package/build/tools/vault/types/read_specific.d.ts +297 -0
  197. package/build/tools/vault/types/search.d.ts +598 -0
  198. package/build/tools/vault/utils/actions/collect_context.js +26 -1
  199. package/build/tools/vault/utils/actions/collect_context.js.map +1 -0
  200. package/build/tools/vault/utils/actions/index_rag.js +27 -0
  201. package/build/tools/vault/utils/actions/index_rag.js.map +1 -0
  202. package/build/tools/vault/utils/actions/list_all.js +1 -0
  203. package/build/tools/vault/utils/actions/list_all.js.map +1 -0
  204. package/build/tools/vault/utils/actions/load_memory.js +23 -13
  205. package/build/tools/vault/utils/actions/load_memory.js.map +1 -0
  206. package/build/tools/vault/utils/actions/read.js +2 -1
  207. package/build/tools/vault/utils/actions/read.js.map +1 -0
  208. package/build/tools/vault/utils/actions/search.js +2 -1
  209. package/build/tools/vault/utils/actions/search.js.map +1 -0
  210. package/build/tools/vault/utils/actions/search_semantic.js +54 -0
  211. package/build/tools/vault/utils/actions/search_semantic.js.map +1 -0
  212. package/build/tools/vault/utils/actions/stats.js +1 -0
  213. package/build/tools/vault/utils/actions/stats.js.map +1 -0
  214. package/build/tools/vault/utils/document.js +1 -0
  215. package/build/tools/vault/utils/document.js.map +1 -0
  216. package/build/tools/write_property/index.d.ts +58 -0
  217. package/build/tools/write_property/index.js +6 -0
  218. package/build/tools/write_property/index.js.map +1 -0
  219. package/build/utils/DirectoryWalker.d.ts +6 -0
  220. package/build/utils/DirectoryWalker.js +7 -0
  221. package/build/utils/DirectoryWalker.js.map +1 -0
  222. package/build/utils/Indexer.d.ts +18 -0
  223. package/build/utils/Indexer.js +5 -9
  224. package/build/utils/Indexer.js.map +1 -0
  225. package/build/utils/LLMClient.d.ts +37 -0
  226. package/build/utils/LLMClient.js +82 -0
  227. package/build/utils/LLMClient.js.map +1 -0
  228. package/build/utils/RAGIndexer.d.ts +22 -0
  229. package/build/utils/RAGIndexer.js +206 -0
  230. package/build/utils/RAGIndexer.js.map +1 -0
  231. package/build/utils/RerankerClient.d.ts +27 -0
  232. package/build/utils/RerankerClient.js +69 -0
  233. package/build/utils/RerankerClient.js.map +1 -0
  234. package/build/utils/VaultManger/VaultManager.d.ts +34 -0
  235. package/build/utils/VaultManger/VaultManager.js +1 -0
  236. package/build/utils/VaultManger/VaultManager.js.map +1 -0
  237. package/build/utils/VaultManger/VaultPathError.d.ts +6 -0
  238. package/build/utils/VaultManger/VaultPathError.js +1 -0
  239. package/build/utils/VaultManger/VaultPathError.js.map +1 -0
  240. package/build/utils/VaultManger/index.d.ts +3 -0
  241. package/build/utils/VaultManger/index.js +1 -0
  242. package/build/utils/VaultManger/index.js.map +1 -0
  243. package/build/utils/VaultManger/types.d.ts +16 -0
  244. package/build/utils/VaultManger/types.js +1 -0
  245. package/build/utils/VaultManger/types.js.map +1 -0
  246. package/build/utils/VaultWatcher.d.ts +8 -0
  247. package/build/utils/VaultWatcher.js +96 -0
  248. package/build/utils/VaultWatcher.js.map +1 -0
  249. package/build/utils/VectorDB.d.ts +53 -0
  250. package/build/utils/VectorDB.js +243 -0
  251. package/build/utils/VectorDB.js.map +1 -0
  252. package/build/utils/createToolError.d.ts +2 -0
  253. package/build/utils/createToolError.js +1 -0
  254. package/build/utils/createToolError.js.map +1 -0
  255. package/build/utils/getVaultManager.d.ts +2 -0
  256. package/build/utils/getVaultManager.js +1 -0
  257. package/build/utils/getVaultManager.js.map +1 -0
  258. package/build/utils/processor/LinkExtractor.d.ts +2 -0
  259. package/build/utils/processor/LinkExtractor.js +1 -0
  260. package/build/utils/processor/LinkExtractor.js.map +1 -0
  261. package/build/utils/processor/MatterParser.d.ts +2 -0
  262. package/build/utils/processor/MatterParser.js +12 -3
  263. package/build/utils/processor/MatterParser.js.map +1 -0
  264. package/build/utils/processor/types.d.ts +100 -0
  265. package/package.json +28 -3
  266. package/build/server.js +0 -32
  267. package/build/tools/create_document_with_properties/params.js +0 -32
  268. package/build/tools/generate_property/params.js +0 -54
  269. package/build/tools/index.js +0 -12
  270. package/build/tools/organize_attachments/params.js +0 -60
  271. package/build/tools/organize_attachments/utils.js +0 -65
  272. package/build/tools/vault/metrics.js +0 -126
  273. package/build/tools/vault/params.js +0 -141
  274. package/build/tools/vault/types/collect_context.js +0 -102
  275. package/build/tools/vault/types/list_all.js +0 -52
  276. package/build/tools/vault/types/read_specific.js +0 -40
  277. package/build/tools/vault/types/search.js +0 -58
  278. package/build/tools/vault/utils/constants.js +0 -2
  279. package/build/tools/vault/utils/shared.js +0 -74
  280. package/build/tools/vault/utils.js +0 -6
  281. package/build/tools/write_property/params.js +0 -51
  282. package/build/utils/processor/types.js +0 -27
  283. package/build/utils/semaphore.js +0 -25
@@ -0,0 +1,146 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { interpolateColor, Theme } from "../theme.js";
7
+ const palette = {
8
+ bg: "#1a1b26",
9
+ bg_dark: "#16161e",
10
+ bg_dark1: "#0C0E14",
11
+ bg_highlight: "#292e42",
12
+ blue: "#7aa2f7",
13
+ blue0: "#3d59a1",
14
+ blue1: "#2ac3de",
15
+ blue2: "#0db9d7",
16
+ blue5: "#89ddff",
17
+ blue6: "#b4f9f8",
18
+ blue7: "#394b70",
19
+ comment: "#565f89",
20
+ cyan: "#7dcfff",
21
+ fg: "#c0caf5",
22
+ fg_dark: "#a9b1d6",
23
+ fg_gutter: "#3b4261",
24
+ green: "#9ece6a",
25
+ green1: "#73daca",
26
+ green2: "#41a6b5",
27
+ magenta: "#bb9af7",
28
+ magenta2: "#ff007c",
29
+ orange: "#ff9e64",
30
+ purple: "#9d7cd8",
31
+ red: "#f7768e",
32
+ red1: "#db4b4b",
33
+ teal: "#1abc9c",
34
+ yellow: "#e0af68",
35
+ diff: {
36
+ add: "#243e4a",
37
+ change: "#1f2231",
38
+ delete: "#4a272f",
39
+ },
40
+ };
41
+ const tokyoNightColors = {
42
+ type: "dark",
43
+ Background: palette.bg,
44
+ Foreground: palette.fg,
45
+ LightBlue: palette.purple,
46
+ AccentBlue: palette.magenta,
47
+ AccentPurple: palette.blue,
48
+ AccentCyan: palette.cyan,
49
+ AccentGreen: palette.teal,
50
+ AccentYellow: palette.yellow,
51
+ AccentRed: palette.red1,
52
+ DiffAdded: palette.diff.add,
53
+ DiffRemoved: palette.diff.delete,
54
+ Comment: palette.comment,
55
+ Gray: palette.fg_dark,
56
+ DarkGray: palette.fg_gutter,
57
+ FocusColor: palette.blue,
58
+ GradientColors: [palette.blue, palette.magenta, palette.cyan],
59
+ };
60
+ export const TokyoNight = new Theme("Tokyo Night", "dark", {
61
+ hljs: {
62
+ display: "block",
63
+ overflowX: "auto",
64
+ padding: "0.5em",
65
+ background: palette.bg,
66
+ color: palette.fg,
67
+ },
68
+ "hljs-addition": { background: palette.diff.add },
69
+ "hljs-attr": { color: palette.green1 },
70
+ "hljs-attribute": { color: palette.green1 },
71
+ "hljs-brace": { color: palette.fg_dark },
72
+ "hljs-built_in": { color: palette.blue1 },
73
+ "hljs-builtin-symbol": { color: palette.blue1 },
74
+ "hljs-bullet": {
75
+ color: palette.orange,
76
+ fontWeight: "bold",
77
+ },
78
+ "hljs-char": { color: palette.green },
79
+ "hljs-char-escape": { color: palette.magenta },
80
+ "hljs-character": { color: palette.green },
81
+ "hljs-class": { color: palette.blue1 },
82
+ "hljs-class-title": { color: palette.blue1 },
83
+ "hljs-code": { color: palette.green },
84
+ "hljs-comment": {
85
+ color: palette.comment,
86
+ fontStyle: "italic",
87
+ },
88
+ "hljs-computation-expression": { color: palette.cyan },
89
+ "hljs-deletion": { background: palette.diff.delete },
90
+ "hljs-doctag": { color: palette.yellow },
91
+ "hljs-emphasis": { fontStyle: "italic" },
92
+ "hljs-function": { color: palette.blue },
93
+ "hljs-function-dispatch": { color: palette.blue },
94
+ "hljs-keyword": {
95
+ color: palette.magenta,
96
+ fontStyle: "italic",
97
+ },
98
+ "hljs-label": { color: palette.blue },
99
+ "hljs-link": { color: palette.teal },
100
+ "hljs-literal": { color: palette.orange },
101
+ "hljs-message-name": { color: palette.blue },
102
+ "hljs-meta": { color: palette.cyan },
103
+ "hljs-meta-prompt": { color: palette.fg_dark },
104
+ "hljs-name": { color: palette.magenta },
105
+ "hljs-named-character": { color: palette.blue1 },
106
+ "hljs-number": { color: palette.orange },
107
+ "hljs-operator": { color: palette.blue5 },
108
+ "hljs-params": { color: palette.yellow },
109
+ "hljs-property": { color: palette.green1 },
110
+ "hljs-punctuation": { color: palette.fg_dark },
111
+ "hljs-quote": {
112
+ color: palette.comment,
113
+ fontStyle: "italic",
114
+ },
115
+ "hljs-regex": { color: palette.blue6 },
116
+ "hljs-regexp": { color: palette.blue6 },
117
+ "hljs-rest_arg": {
118
+ color: interpolateColor(palette.yellow, palette.fg, 0.8),
119
+ },
120
+ "hljs-section": {
121
+ color: palette.blue,
122
+ fontWeight: "bold",
123
+ },
124
+ "hljs-selector-attr": { color: palette.cyan },
125
+ "hljs-selector-class": { color: palette.green1 },
126
+ "hljs-selector-id": { color: palette.green1 },
127
+ "hljs-selector-pseudo": { color: palette.cyan },
128
+ "hljs-selector-tag": { color: palette.magenta },
129
+ "hljs-string": { color: palette.green },
130
+ "hljs-strong": { fontWeight: "bold" },
131
+ "hljs-subst": { color: palette.blue5 },
132
+ "hljs-symbol": { color: palette.magenta },
133
+ "hljs-tag": { color: palette.blue1 },
134
+ "hljs-template-tag": { color: palette.blue5 },
135
+ "hljs-template-variable": { color: palette.fg },
136
+ "hljs-title": { color: palette.blue },
137
+ "hljs-title-class": { color: palette.blue1 },
138
+ "hljs-title-class-inherited": { color: palette.blue1 },
139
+ "hljs-title-function": { color: palette.blue },
140
+ "hljs-title-function-invoke": { color: palette.blue },
141
+ "hljs-type": { color: palette.blue1 },
142
+ "hljs-variable": { color: palette.fg },
143
+ "hljs-variable-constant": { color: palette.orange },
144
+ "hljs-variable-language": { color: palette.red },
145
+ }, tokyoNightColors);
146
+ //# sourceMappingURL=tokyonight-dark.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tokyonight-dark.js","sourceRoot":"","sources":["../../../../src/cli/theme/builtin/tokyonight-dark.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ import { themeManager } from "./theme-manager.js";
2
+ export const theme = {
3
+ get text() {
4
+ return themeManager.getSemanticColors().text;
5
+ },
6
+ get background() {
7
+ return themeManager.getSemanticColors().background;
8
+ },
9
+ get border() {
10
+ return themeManager.getSemanticColors().border;
11
+ },
12
+ get ui() {
13
+ return themeManager.getSemanticColors().ui;
14
+ },
15
+ get status() {
16
+ return themeManager.getSemanticColors().status;
17
+ },
18
+ };
19
+ //# sourceMappingURL=semantic-colors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"semantic-colors.js","sourceRoot":"","sources":["../../../src/cli/theme/semantic-colors.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,MAAM,CAAC,MAAM,KAAK,GAAmB;IACpC,IAAI,IAAI;QACP,OAAO,YAAY,CAAC,iBAAiB,EAAE,CAAC,IAAI,CAAC;IAC9C,CAAC;IACD,IAAI,UAAU;QACb,OAAO,YAAY,CAAC,iBAAiB,EAAE,CAAC,UAAU,CAAC;IACpD,CAAC;IACD,IAAI,MAAM;QACT,OAAO,YAAY,CAAC,iBAAiB,EAAE,CAAC,MAAM,CAAC;IAChD,CAAC;IACD,IAAI,EAAE;QACL,OAAO,YAAY,CAAC,iBAAiB,EAAE,CAAC,EAAE,CAAC;IAC5C,CAAC;IACD,IAAI,MAAM;QACT,OAAO,YAAY,CAAC,iBAAiB,EAAE,CAAC,MAAM,CAAC;IAChD,CAAC;CACD,CAAC"}
@@ -0,0 +1,77 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { darkTheme, lightTheme } from "./theme.js";
7
+ export const lightSemanticColors = {
8
+ text: {
9
+ primary: lightTheme.Foreground,
10
+ secondary: lightTheme.Gray,
11
+ link: lightTheme.AccentBlue,
12
+ accent: lightTheme.AccentPurple,
13
+ response: lightTheme.Foreground,
14
+ },
15
+ background: {
16
+ primary: lightTheme.Background,
17
+ message: lightTheme.MessageBackground ?? "",
18
+ input: lightTheme.InputBackground ?? "",
19
+ focus: lightTheme.FocusBackground ?? "",
20
+ diff: {
21
+ added: lightTheme.DiffAdded,
22
+ removed: lightTheme.DiffRemoved,
23
+ },
24
+ },
25
+ border: {
26
+ default: lightTheme.DarkGray,
27
+ },
28
+ ui: {
29
+ comment: lightTheme.Comment,
30
+ symbol: lightTheme.Gray,
31
+ active: lightTheme.AccentBlue,
32
+ dark: lightTheme.DarkGray,
33
+ focus: lightTheme.AccentGreen,
34
+ gradient: lightTheme.GradientColors,
35
+ },
36
+ status: {
37
+ error: lightTheme.AccentRed,
38
+ success: lightTheme.AccentGreen,
39
+ warning: lightTheme.AccentYellow,
40
+ },
41
+ };
42
+ export const darkSemanticColors = {
43
+ text: {
44
+ primary: darkTheme.Foreground,
45
+ secondary: darkTheme.Gray,
46
+ link: darkTheme.AccentBlue,
47
+ accent: darkTheme.AccentPurple,
48
+ response: darkTheme.Foreground,
49
+ },
50
+ background: {
51
+ primary: darkTheme.Background,
52
+ message: darkTheme.MessageBackground ?? "",
53
+ input: darkTheme.InputBackground ?? "",
54
+ focus: darkTheme.FocusBackground ?? "",
55
+ diff: {
56
+ added: darkTheme.DiffAdded,
57
+ removed: darkTheme.DiffRemoved,
58
+ },
59
+ },
60
+ border: {
61
+ default: darkTheme.DarkGray,
62
+ },
63
+ ui: {
64
+ comment: darkTheme.Comment,
65
+ symbol: darkTheme.Gray,
66
+ active: darkTheme.AccentBlue,
67
+ dark: darkTheme.DarkGray,
68
+ focus: darkTheme.AccentGreen,
69
+ gradient: darkTheme.GradientColors,
70
+ },
71
+ status: {
72
+ error: darkTheme.AccentRed,
73
+ success: darkTheme.AccentGreen,
74
+ warning: darkTheme.AccentYellow,
75
+ },
76
+ };
77
+ //# sourceMappingURL=semantic-tokens.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"semantic-tokens.js","sourceRoot":"","sources":["../../../src/cli/theme/semantic-tokens.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAsCnD,MAAM,CAAC,MAAM,mBAAmB,GAAmB;IAClD,IAAI,EAAE;QACL,OAAO,EAAE,UAAU,CAAC,UAAU;QAC9B,SAAS,EAAE,UAAU,CAAC,IAAI;QAC1B,IAAI,EAAE,UAAU,CAAC,UAAU;QAC3B,MAAM,EAAE,UAAU,CAAC,YAAY;QAC/B,QAAQ,EAAE,UAAU,CAAC,UAAU;KAC/B;IACD,UAAU,EAAE;QACX,OAAO,EAAE,UAAU,CAAC,UAAU;QAC9B,OAAO,EAAE,UAAU,CAAC,iBAAiB,IAAI,EAAE;QAC3C,KAAK,EAAE,UAAU,CAAC,eAAe,IAAI,EAAE;QACvC,KAAK,EAAE,UAAU,CAAC,eAAe,IAAI,EAAE;QACvC,IAAI,EAAE;YACL,KAAK,EAAE,UAAU,CAAC,SAAS;YAC3B,OAAO,EAAE,UAAU,CAAC,WAAW;SAC/B;KACD;IACD,MAAM,EAAE;QACP,OAAO,EAAE,UAAU,CAAC,QAAQ;KAC5B;IACD,EAAE,EAAE;QACH,OAAO,EAAE,UAAU,CAAC,OAAO;QAC3B,MAAM,EAAE,UAAU,CAAC,IAAI;QACvB,MAAM,EAAE,UAAU,CAAC,UAAU;QAC7B,IAAI,EAAE,UAAU,CAAC,QAAQ;QACzB,KAAK,EAAE,UAAU,CAAC,WAAW;QAC7B,QAAQ,EAAE,UAAU,CAAC,cAAc;KACnC;IACD,MAAM,EAAE;QACP,KAAK,EAAE,UAAU,CAAC,SAAS;QAC3B,OAAO,EAAE,UAAU,CAAC,WAAW;QAC/B,OAAO,EAAE,UAAU,CAAC,YAAY;KAChC;CACD,CAAC;AAEF,MAAM,CAAC,MAAM,kBAAkB,GAAmB;IACjD,IAAI,EAAE;QACL,OAAO,EAAE,SAAS,CAAC,UAAU;QAC7B,SAAS,EAAE,SAAS,CAAC,IAAI;QACzB,IAAI,EAAE,SAAS,CAAC,UAAU;QAC1B,MAAM,EAAE,SAAS,CAAC,YAAY;QAC9B,QAAQ,EAAE,SAAS,CAAC,UAAU;KAC9B;IACD,UAAU,EAAE;QACX,OAAO,EAAE,SAAS,CAAC,UAAU;QAC7B,OAAO,EAAE,SAAS,CAAC,iBAAiB,IAAI,EAAE;QAC1C,KAAK,EAAE,SAAS,CAAC,eAAe,IAAI,EAAE;QACtC,KAAK,EAAE,SAAS,CAAC,eAAe,IAAI,EAAE;QACtC,IAAI,EAAE;YACL,KAAK,EAAE,SAAS,CAAC,SAAS;YAC1B,OAAO,EAAE,SAAS,CAAC,WAAW;SAC9B;KACD;IACD,MAAM,EAAE;QACP,OAAO,EAAE,SAAS,CAAC,QAAQ;KAC3B;IACD,EAAE,EAAE;QACH,OAAO,EAAE,SAAS,CAAC,OAAO;QAC1B,MAAM,EAAE,SAAS,CAAC,IAAI;QACtB,MAAM,EAAE,SAAS,CAAC,UAAU;QAC5B,IAAI,EAAE,SAAS,CAAC,QAAQ;QACxB,KAAK,EAAE,SAAS,CAAC,WAAW;QAC5B,QAAQ,EAAE,SAAS,CAAC,cAAc;KAClC;IACD,MAAM,EAAE;QACP,KAAK,EAAE,SAAS,CAAC,SAAS;QAC1B,OAAO,EAAE,SAAS,CAAC,WAAW;QAC9B,OAAO,EAAE,SAAS,CAAC,YAAY;KAC/B;CACD,CAAC"}
@@ -0,0 +1,32 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import type { SemanticColors } from "./semantic-tokens.js";
7
+ import type { ColorsTheme, Theme, ThemeType } from "./theme.js";
8
+ export interface ThemeDisplay {
9
+ name: string;
10
+ type: ThemeType;
11
+ }
12
+ export declare const DEFAULT_THEME: Theme;
13
+ declare class ThemeManager {
14
+ private readonly availableThemes;
15
+ private activeTheme;
16
+ private terminalBackground;
17
+ private cachedColors;
18
+ private cachedSemanticColors;
19
+ private lastCacheKey;
20
+ constructor();
21
+ setTerminalBackground(color: string | undefined): void;
22
+ getTerminalBackground(): string | undefined;
23
+ private clearCache;
24
+ setActiveTheme(themeName: string | undefined): boolean;
25
+ getActiveTheme(): Theme;
26
+ getColors(): ColorsTheme;
27
+ getSemanticColors(): SemanticColors;
28
+ isThemeCompatible(activeTheme: Theme, terminalBackground: string | undefined): boolean;
29
+ getAvailableThemes(): ThemeDisplay[];
30
+ }
31
+ export declare const themeManager: ThemeManager;
32
+ export {};
@@ -0,0 +1,150 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import process from "node:process";
7
+ import { DEFAULT_BACKGROUND_OPACITY, DEFAULT_BORDER_OPACITY, DEFAULT_INPUT_BACKGROUND_OPACITY, DEFAULT_SELECTION_OPACITY, } from "../constants.js";
8
+ import { DefaultDark } from "./builtin/default-dark.js";
9
+ import { NoColorTheme } from "./builtin/no-color.js";
10
+ import { TokyoNight } from "./builtin/tokyonight-dark.js";
11
+ import { getThemeTypeFromBackgroundColor, interpolateColor, resolveColor, } from "./theme.js";
12
+ // 기본 테마를 TokyoNight으로 설정
13
+ export const DEFAULT_THEME = TokyoNight;
14
+ class ThemeManager {
15
+ availableThemes;
16
+ activeTheme;
17
+ terminalBackground;
18
+ // Cache for dynamic colors
19
+ cachedColors;
20
+ cachedSemanticColors;
21
+ lastCacheKey;
22
+ constructor() {
23
+ // 고정된 테마 리스트
24
+ this.availableThemes = [TokyoNight, DefaultDark];
25
+ this.activeTheme = DEFAULT_THEME;
26
+ }
27
+ setTerminalBackground(color) {
28
+ if (this.terminalBackground !== color) {
29
+ this.terminalBackground = color;
30
+ this.clearCache();
31
+ }
32
+ }
33
+ getTerminalBackground() {
34
+ return this.terminalBackground;
35
+ }
36
+ clearCache() {
37
+ this.cachedColors = undefined;
38
+ this.cachedSemanticColors = undefined;
39
+ this.lastCacheKey = undefined;
40
+ }
41
+ setActiveTheme(themeName) {
42
+ if (!themeName) {
43
+ this.activeTheme = DEFAULT_THEME;
44
+ this.clearCache();
45
+ return true;
46
+ }
47
+ const theme = this.availableThemes.find((t) => t.name === themeName);
48
+ if (!theme) {
49
+ return false;
50
+ }
51
+ if (this.activeTheme !== theme) {
52
+ this.activeTheme = theme;
53
+ this.clearCache();
54
+ }
55
+ return true;
56
+ }
57
+ getActiveTheme() {
58
+ if (process.env["NO_COLOR"]) {
59
+ return NoColorTheme;
60
+ }
61
+ // 현재 테마가 유효한지 확인 후 반환, 아니면 기본값
62
+ const isValid = this.availableThemes.some((t) => t.name === this.activeTheme.name);
63
+ if (!isValid) {
64
+ this.activeTheme = DEFAULT_THEME;
65
+ }
66
+ return this.activeTheme;
67
+ }
68
+ getColors() {
69
+ const activeTheme = this.getActiveTheme();
70
+ const cacheKey = `${activeTheme.name}:${this.terminalBackground}`;
71
+ if (this.cachedColors && this.lastCacheKey === cacheKey) {
72
+ return this.cachedColors;
73
+ }
74
+ const colors = activeTheme.colors;
75
+ if (this.terminalBackground &&
76
+ this.isThemeCompatible(activeTheme, this.terminalBackground)) {
77
+ this.cachedColors = {
78
+ ...colors,
79
+ Background: this.terminalBackground,
80
+ DarkGray: interpolateColor(this.terminalBackground, colors.Gray, DEFAULT_BORDER_OPACITY),
81
+ InputBackground: interpolateColor(this.terminalBackground, colors.Gray, DEFAULT_INPUT_BACKGROUND_OPACITY),
82
+ MessageBackground: interpolateColor(this.terminalBackground, colors.Gray, DEFAULT_BACKGROUND_OPACITY),
83
+ FocusBackground: interpolateColor(this.terminalBackground, activeTheme.colors.FocusColor ?? activeTheme.colors.AccentGreen, DEFAULT_SELECTION_OPACITY),
84
+ };
85
+ }
86
+ else {
87
+ this.cachedColors = colors;
88
+ }
89
+ this.lastCacheKey = cacheKey;
90
+ return this.cachedColors;
91
+ }
92
+ getSemanticColors() {
93
+ const activeTheme = this.getActiveTheme();
94
+ const cacheKey = `${activeTheme.name}:${this.terminalBackground}`;
95
+ if (this.cachedSemanticColors && this.lastCacheKey === cacheKey) {
96
+ return this.cachedSemanticColors;
97
+ }
98
+ const semanticColors = activeTheme.semanticColors;
99
+ if (this.terminalBackground &&
100
+ this.isThemeCompatible(activeTheme, this.terminalBackground)) {
101
+ const colors = this.getColors();
102
+ this.cachedSemanticColors = {
103
+ ...semanticColors,
104
+ background: {
105
+ ...semanticColors.background,
106
+ primary: this.terminalBackground,
107
+ message: colors.MessageBackground ?? "",
108
+ input: colors.InputBackground ?? "",
109
+ focus: colors.FocusBackground ?? "",
110
+ },
111
+ border: {
112
+ ...semanticColors.border,
113
+ default: colors.DarkGray,
114
+ },
115
+ ui: {
116
+ ...semanticColors.ui,
117
+ dark: colors.DarkGray,
118
+ focus: colors.FocusColor ?? colors.AccentGreen,
119
+ },
120
+ };
121
+ }
122
+ else {
123
+ this.cachedSemanticColors = semanticColors;
124
+ }
125
+ this.lastCacheKey = cacheKey;
126
+ return this.cachedSemanticColors;
127
+ }
128
+ isThemeCompatible(activeTheme, terminalBackground) {
129
+ if (activeTheme.type === "ansi") {
130
+ return true;
131
+ }
132
+ const backgroundType = getThemeTypeFromBackgroundColor(terminalBackground);
133
+ if (!backgroundType) {
134
+ return true;
135
+ }
136
+ const themeType = activeTheme.type === "custom"
137
+ ? getThemeTypeFromBackgroundColor(resolveColor(activeTheme.colors.Background) ||
138
+ activeTheme.colors.Background)
139
+ : activeTheme.type;
140
+ return themeType === backgroundType;
141
+ }
142
+ getAvailableThemes() {
143
+ return this.availableThemes.map((theme) => ({
144
+ name: theme.name,
145
+ type: theme.type,
146
+ }));
147
+ }
148
+ }
149
+ export const themeManager = new ThemeManager();
150
+ //# sourceMappingURL=theme-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"theme-manager.js","sourceRoot":"","sources":["../../../src/cli/theme/theme-manager.ts"],"names":[],"mappings":"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"}