@sunub/obsidian-mcp-server 0.3.19 → 0.3.21

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 (527) hide show
  1. package/README.md +1 -24
  2. package/build/cli/App.d.ts +1 -0
  3. package/build/cli/App.js +273 -0
  4. package/build/cli/App.js.map +1 -0
  5. package/build/cli/AppContainer.d.ts +1 -0
  6. package/build/cli/AppContainer.js +19 -0
  7. package/build/cli/AppContainer.js.map +1 -0
  8. package/build/cli/colors.d.ts +15 -0
  9. package/build/cli/colors.js +15 -0
  10. package/build/cli/colors.js.map +1 -0
  11. package/build/cli/commands/types.d.ts +19 -0
  12. package/build/cli/commands/types.js +11 -0
  13. package/build/cli/commands/types.js.map +1 -0
  14. package/build/cli/config/SettingContext.d.ts +1 -0
  15. package/build/cli/config/SettingContext.js +2 -0
  16. package/build/cli/config/SettingContext.js.map +1 -0
  17. package/build/cli/config/mcpServersConfig.d.ts +30 -0
  18. package/build/cli/config/mcpServersConfig.js +119 -0
  19. package/build/cli/config/mcpServersConfig.js.map +1 -0
  20. package/build/cli/config/settingSchema.d.ts +162 -0
  21. package/build/cli/config/settingSchema.js +110 -0
  22. package/build/cli/config/settingSchema.js.map +1 -0
  23. package/build/cli/constants.d.ts +47 -0
  24. package/build/cli/constants.js +101 -0
  25. package/build/cli/constants.js.map +1 -0
  26. package/build/cli/context/InputContext.d.ts +12 -0
  27. package/build/cli/context/InputContext.js +10 -0
  28. package/build/cli/context/InputContext.js.map +1 -0
  29. package/build/cli/context/KeypressContext.d.ts +30 -0
  30. package/build/cli/context/KeypressContext.js +200 -0
  31. package/build/cli/context/KeypressContext.js.map +1 -0
  32. package/build/cli/context/KeypressContext.util.d.ts +7 -0
  33. package/build/cli/context/KeypressContext.util.js +476 -0
  34. package/build/cli/context/KeypressContext.util.js.map +1 -0
  35. package/build/cli/errors/index.d.ts +3 -0
  36. package/build/cli/errors/index.js +7 -0
  37. package/build/cli/errors/index.js.map +1 -0
  38. package/build/cli/hooks/useAtCompletion.d.ts +12 -0
  39. package/build/cli/hooks/useAtCompletion.js +5 -0
  40. package/build/cli/hooks/useAtCompletion.js.map +1 -0
  41. package/build/cli/hooks/useCommandCompletion.d.ts +59 -0
  42. package/build/cli/hooks/useCommandCompletion.js +344 -0
  43. package/build/cli/hooks/useCommandCompletion.js.map +1 -0
  44. package/build/cli/hooks/useCompletion.d.ts +22 -0
  45. package/build/cli/hooks/useCompletion.js +84 -0
  46. package/build/cli/hooks/useCompletion.js.map +1 -0
  47. package/build/cli/hooks/useDispatcher.d.ts +6 -0
  48. package/build/cli/hooks/useDispatcher.js +286 -0
  49. package/build/cli/hooks/useDispatcher.js.map +1 -0
  50. package/build/cli/hooks/useFocus.d.ts +2 -0
  51. package/build/cli/hooks/useFocus.js +3 -0
  52. package/build/cli/hooks/useFocus.js.map +1 -0
  53. package/build/cli/hooks/useHistoryManager.d.ts +32 -0
  54. package/build/cli/hooks/useHistoryManager.js +78 -0
  55. package/build/cli/hooks/useHistoryManager.js.map +1 -0
  56. package/build/cli/hooks/useInputHistory.d.ts +24 -0
  57. package/build/cli/hooks/useInputHistory.js +159 -0
  58. package/build/cli/hooks/useInputHistory.js.map +1 -0
  59. package/build/cli/hooks/useKeyMatchers.d.ts +17 -0
  60. package/build/cli/hooks/useKeyMatchers.js +18 -0
  61. package/build/cli/hooks/useKeyMatchers.js.map +1 -0
  62. package/build/cli/hooks/useKeypress.d.ts +19 -0
  63. package/build/cli/hooks/useKeypress.js +28 -0
  64. package/build/cli/hooks/useKeypress.js.map +1 -0
  65. package/build/cli/hooks/useLlmStream/constants.d.ts +4 -0
  66. package/build/cli/hooks/useLlmStream/constants.js +5 -0
  67. package/build/cli/hooks/useLlmStream/constants.js.map +1 -0
  68. package/build/cli/hooks/useLlmStream/index.d.ts +2 -0
  69. package/build/cli/hooks/useLlmStream/index.js +2 -0
  70. package/build/cli/hooks/useLlmStream/index.js.map +1 -0
  71. package/build/cli/hooks/useLlmStream/llmService.d.ts +2 -0
  72. package/build/cli/hooks/useLlmStream/llmService.js +111 -0
  73. package/build/cli/hooks/useLlmStream/llmService.js.map +1 -0
  74. package/build/cli/hooks/useLlmStream/types.d.ts +38 -0
  75. package/build/cli/hooks/useLlmStream/types.js.map +1 -0
  76. package/build/cli/hooks/useLlmStream/useLlmStream.d.ts +12 -0
  77. package/build/cli/hooks/useLlmStream/useLlmStream.js +176 -0
  78. package/build/cli/hooks/useLlmStream/useLlmStream.js.map +1 -0
  79. package/build/cli/hooks/useLlmStream/utils.d.ts +17 -0
  80. package/build/cli/hooks/useLlmStream/utils.js +142 -0
  81. package/build/cli/hooks/useLlmStream/utils.js.map +1 -0
  82. package/build/cli/hooks/useMcpClient.d.ts +10 -0
  83. package/build/cli/hooks/useMcpClient.js +98 -0
  84. package/build/cli/hooks/useMcpClient.js.map +1 -0
  85. package/build/cli/hooks/useMcpManager.d.ts +26 -0
  86. package/build/cli/hooks/useMcpManager.js +89 -0
  87. package/build/cli/hooks/useMcpManager.js.map +1 -0
  88. package/build/cli/hooks/usePromptCompletion.d.ts +19 -0
  89. package/build/cli/hooks/usePromptCompletion.js +13 -0
  90. package/build/cli/hooks/usePromptCompletion.js.map +1 -0
  91. package/build/cli/hooks/useRagContext.d.ts +6 -0
  92. package/build/cli/hooks/useRagContext.js +84 -0
  93. package/build/cli/hooks/useRagContext.js.map +1 -0
  94. package/build/cli/hooks/useShellCompletion.d.ts +18 -0
  95. package/build/cli/hooks/useShellCompletion.js +10 -0
  96. package/build/cli/hooks/useShellCompletion.js.map +1 -0
  97. package/build/cli/hooks/useSlashCompletion.d.ts +21 -0
  98. package/build/cli/hooks/useSlashCompletion.js +11 -0
  99. package/build/cli/hooks/useSlashCompletion.js.map +1 -0
  100. package/build/cli/hooks/useTerminalSize.d.ts +4 -0
  101. package/build/cli/hooks/useTerminalSize.js +21 -0
  102. package/build/cli/hooks/useTerminalSize.js.map +1 -0
  103. package/build/cli/index.d.ts +1 -0
  104. package/build/cli/index.js +27 -0
  105. package/build/cli/index.js.map +1 -0
  106. package/build/cli/key/input.d.ts +5 -0
  107. package/build/cli/key/input.js +9 -0
  108. package/build/cli/key/input.js.map +1 -0
  109. package/build/cli/key/keyBindings.d.ts +152 -0
  110. package/build/cli/key/keyBindings.js +630 -0
  111. package/build/cli/key/keyBindings.js.map +1 -0
  112. package/build/cli/key/keyMatchers.d.ts +19 -0
  113. package/build/cli/key/keyMatchers.js +25 -0
  114. package/build/cli/key/keyMatchers.js.map +1 -0
  115. package/build/cli/key/mouse.d.ts +23 -0
  116. package/build/cli/key/mouse.js +155 -0
  117. package/build/cli/key/mouse.js.map +1 -0
  118. package/build/cli/key/text-buffer.d.ts +156 -0
  119. package/build/cli/key/text-buffer.js +937 -0
  120. package/build/cli/key/text-buffer.js.map +1 -0
  121. package/build/cli/main.d.ts +1 -0
  122. package/build/cli/main.js +20 -0
  123. package/build/cli/main.js.map +1 -0
  124. package/build/cli/services/McpClientService.d.ts +32 -0
  125. package/build/cli/services/McpClientService.js +123 -0
  126. package/build/cli/services/McpClientService.js.map +1 -0
  127. package/build/cli/services/McpManager.d.ts +28 -0
  128. package/build/cli/services/McpManager.js +146 -0
  129. package/build/cli/services/McpManager.js.map +1 -0
  130. package/build/cli/theme/builtin/default-dark.d.ts +7 -0
  131. package/build/cli/theme/builtin/default-dark.js +143 -0
  132. package/build/cli/theme/builtin/default-dark.js.map +1 -0
  133. package/build/cli/theme/builtin/no-color.d.ts +7 -0
  134. package/build/cli/theme/builtin/no-color.js +125 -0
  135. package/build/cli/theme/builtin/no-color.js.map +1 -0
  136. package/build/cli/theme/builtin/tokyonight-dark.d.ts +7 -0
  137. package/build/cli/theme/builtin/tokyonight-dark.js +146 -0
  138. package/build/cli/theme/builtin/tokyonight-dark.js.map +1 -0
  139. package/build/cli/theme/semantic-colors.d.ts +2 -0
  140. package/build/cli/theme/semantic-colors.js +19 -0
  141. package/build/cli/theme/semantic-colors.js.map +1 -0
  142. package/build/cli/theme/semantic-tokens.d.ts +42 -0
  143. package/build/cli/theme/semantic-tokens.js +77 -0
  144. package/build/cli/theme/semantic-tokens.js.map +1 -0
  145. package/build/cli/theme/theme-manager.d.ts +32 -0
  146. package/build/cli/theme/theme-manager.js +150 -0
  147. package/build/cli/theme/theme-manager.js.map +1 -0
  148. package/build/cli/theme/theme.d.ts +107 -0
  149. package/build/cli/theme/theme.js +333 -0
  150. package/build/cli/theme/theme.js.map +1 -0
  151. package/build/cli/tmp.d.ts +1 -0
  152. package/build/cli/tmp.js +27 -0
  153. package/build/cli/tmp.js.map +1 -0
  154. package/build/cli/types.d.ts +97 -0
  155. package/build/cli/types.js +2 -0
  156. package/build/cli/types.js.map +1 -0
  157. package/build/cli/ui/ConnectionStatus.d.ts +13 -0
  158. package/build/cli/ui/ConnectionStatus.js +19 -0
  159. package/build/cli/ui/ConnectionStatus.js.map +1 -0
  160. package/build/cli/ui/HalfPaddingBox.d.ts +13 -0
  161. package/build/cli/ui/HalfPaddingBox.js +11 -0
  162. package/build/cli/ui/HalfPaddingBox.js.map +1 -0
  163. package/build/cli/ui/HelpCommands.d.ts +5 -0
  164. package/build/cli/ui/HelpCommands.js +11 -0
  165. package/build/cli/ui/HelpCommands.js.map +1 -0
  166. package/build/cli/ui/HistoryItemDisplay.d.ts +9 -0
  167. package/build/cli/ui/HistoryItemDisplay.js +34 -0
  168. package/build/cli/ui/HistoryItemDisplay.js.map +1 -0
  169. package/build/cli/ui/InputPrompt.d.ts +13 -0
  170. package/build/cli/ui/InputPrompt.js +138 -0
  171. package/build/cli/ui/InputPrompt.js.map +1 -0
  172. package/build/cli/ui/LLMErrorComponent.d.ts +6 -0
  173. package/build/cli/ui/LLMErrorComponent.js +18 -0
  174. package/build/cli/ui/LLMErrorComponent.js.map +1 -0
  175. package/build/cli/ui/LLMHealthChecker.d.ts +8 -0
  176. package/build/cli/ui/LLMHealthChecker.js +22 -0
  177. package/build/cli/ui/LLMHealthChecker.js.map +1 -0
  178. package/build/cli/ui/MCPServers.d.ts +11 -0
  179. package/build/cli/ui/MCPServers.js +15 -0
  180. package/build/cli/ui/MCPServers.js.map +1 -0
  181. package/build/cli/ui/MainContent.d.ts +12 -0
  182. package/build/cli/ui/MainContent.js +28 -0
  183. package/build/cli/ui/MainContent.js.map +1 -0
  184. package/build/cli/ui/MarkdownDisplay.d.ts +8 -0
  185. package/build/cli/ui/MarkdownDisplay.js +6 -0
  186. package/build/cli/ui/MarkdownDisplay.js.map +1 -0
  187. package/build/cli/ui/MouseContext.d.ts +1 -0
  188. package/build/cli/ui/MouseContext.js +2 -0
  189. package/build/cli/ui/MouseContext.js.map +1 -0
  190. package/build/cli/ui/SuggestionsDisplay.d.ts +25 -0
  191. package/build/cli/ui/SuggestionsDisplay.js +45 -0
  192. package/build/cli/ui/SuggestionsDisplay.js.map +1 -0
  193. package/build/cli/ui/SystemInfoSummaryBox.d.ts +6 -0
  194. package/build/cli/ui/SystemInfoSummaryBox.js +6 -0
  195. package/build/cli/ui/SystemInfoSummaryBox.js.map +1 -0
  196. package/build/cli/ui/ThinkingIndicator.d.ts +2 -0
  197. package/build/cli/ui/ThinkingIndicator.js +16 -0
  198. package/build/cli/ui/ThinkingIndicator.js.map +1 -0
  199. package/build/cli/ui/layout/DefaultAppLayout.d.ts +2 -0
  200. package/build/cli/ui/layout/DefaultAppLayout.js +6 -0
  201. package/build/cli/ui/layout/DefaultAppLayout.js.map +1 -0
  202. package/build/cli/ui/shared/ExpandableText.d.ts +14 -0
  203. package/build/cli/ui/shared/ExpandableText.js +19 -0
  204. package/build/cli/ui/shared/ExpandableText.js.map +1 -0
  205. package/build/cli/utils/cache.d.ts +21 -0
  206. package/build/cli/utils/cache.js +56 -0
  207. package/build/cli/utils/cache.js.map +1 -0
  208. package/build/cli/utils/cleanup.d.ts +1 -0
  209. package/build/cli/utils/cleanup.js +5 -0
  210. package/build/cli/utils/cleanup.js.map +1 -0
  211. package/build/cli/utils/commandUtils.d.ts +11 -0
  212. package/build/cli/utils/commandUtils.js +16 -0
  213. package/build/cli/utils/commandUtils.js.map +1 -0
  214. package/build/cli/utils/historyStorage.d.ts +13 -0
  215. package/build/cli/utils/historyStorage.js +64 -0
  216. package/build/cli/utils/historyStorage.js.map +1 -0
  217. package/build/cli/utils/stdio.d.ts +18 -0
  218. package/build/cli/utils/stdio.js +58 -0
  219. package/build/cli/utils/stdio.js.map +1 -0
  220. package/build/cli/utils/terminal.d.ts +15 -0
  221. package/build/cli/utils/terminal.js +51 -0
  222. package/build/cli/utils/terminal.js.map +1 -0
  223. package/build/cli/utils/textUtil.d.ts +63 -0
  224. package/build/cli/utils/textUtil.js +231 -0
  225. package/build/cli/utils/textUtil.js.map +1 -0
  226. package/build/config.d.ts +25 -0
  227. package/{dist/src → build}/config.js +29 -8
  228. package/build/config.js.map +1 -0
  229. package/build/index.d.ts +2 -0
  230. package/{dist/src → build}/index.js +0 -3
  231. package/build/index.js.map +1 -0
  232. package/{dist/src → build}/server.d.ts +0 -1
  233. package/{dist/src → build}/server.js +1 -2
  234. package/build/server.js.map +1 -0
  235. package/{dist/src → build}/setup.d.ts +0 -2
  236. package/{dist/src → build}/setup.js +2 -4
  237. package/build/setup.js.map +1 -0
  238. package/build/shared/configSchema.d.ts +27 -0
  239. package/build/shared/configSchema.js +31 -0
  240. package/build/shared/configSchema.js.map +1 -0
  241. package/build/shared/index.d.ts +3 -0
  242. package/build/shared/index.js +4 -0
  243. package/build/shared/index.js.map +1 -0
  244. package/build/shared/types.d.ts +20 -0
  245. package/build/shared/types.js +2 -0
  246. package/build/shared/types.js.map +1 -0
  247. package/build/shared/utils/debugLogger.d.ts +12 -0
  248. package/build/shared/utils/debugLogger.js +54 -0
  249. package/build/shared/utils/debugLogger.js.map +1 -0
  250. package/{dist/src → build}/tools/create_document_with_properties/index.d.ts +22 -5
  251. package/{dist/src → build}/tools/create_document_with_properties/index.js +2 -2
  252. package/build/tools/create_document_with_properties/index.js.map +1 -0
  253. package/build/tools/create_document_with_properties/params.d.ts +66 -0
  254. package/{dist/src → build}/tools/create_document_with_properties/params.js +1 -1
  255. package/build/tools/create_document_with_properties/params.js.map +1 -0
  256. package/{dist/src → build}/tools/generate_property/index.d.ts +1 -2
  257. package/{dist/src → build}/tools/generate_property/index.js +1 -1
  258. package/build/tools/generate_property/index.js.map +1 -0
  259. package/{dist/src → build}/tools/generate_property/params.d.ts +30 -7
  260. package/build/tools/generate_property/params.js.map +1 -0
  261. package/{dist/src → build}/tools/index.d.ts +51 -36
  262. package/build/tools/index.js +13 -0
  263. package/build/tools/index.js.map +1 -0
  264. package/{dist/src → build}/tools/organize_attachments/index.d.ts +1 -2
  265. package/{dist/src → build}/tools/organize_attachments/index.js +2 -2
  266. package/build/tools/organize_attachments/index.js.map +1 -0
  267. package/build/tools/organize_attachments/params.d.ts +122 -0
  268. package/{dist/src → build}/tools/organize_attachments/params.js +3 -3
  269. package/build/tools/organize_attachments/params.js.map +1 -0
  270. package/{dist/src → build}/tools/organize_attachments/utils.d.ts +0 -1
  271. package/build/tools/organize_attachments/utils.js.map +1 -0
  272. package/{dist/src → build}/tools/vault/index.d.ts +5 -26
  273. package/{dist/src → build}/tools/vault/index.js +3 -3
  274. package/build/tools/vault/index.js.map +1 -0
  275. package/{dist/src → build}/tools/vault/metrics.d.ts +0 -1
  276. package/build/tools/vault/metrics.js.map +1 -0
  277. package/build/tools/vault/params.d.ts +115 -0
  278. package/{dist/src → build}/tools/vault/params.js +0 -1
  279. package/build/tools/vault/params.js.map +1 -0
  280. package/build/tools/vault/types/collect_context.d.ts +1340 -0
  281. package/{dist/src → build}/tools/vault/types/collect_context.js +1 -1
  282. package/build/tools/vault/types/collect_context.js.map +1 -0
  283. package/build/tools/vault/types/list_all.d.ts +387 -0
  284. package/{dist/src → build}/tools/vault/types/list_all.js +4 -9
  285. package/build/tools/vault/types/list_all.js.map +1 -0
  286. package/build/tools/vault/types/read_specific.d.ts +297 -0
  287. package/{dist/src → build}/tools/vault/types/read_specific.js +1 -3
  288. package/build/tools/vault/types/read_specific.js.map +1 -0
  289. package/build/tools/vault/types/search.d.ts +598 -0
  290. package/{dist/src → build}/tools/vault/types/search.js +8 -16
  291. package/build/tools/vault/types/search.js.map +1 -0
  292. package/{dist/src → build}/tools/vault/utils/actions/collect_context.d.ts +1 -2
  293. package/{dist/src → build}/tools/vault/utils/actions/collect_context.js +4 -4
  294. package/build/tools/vault/utils/actions/collect_context.js.map +1 -0
  295. package/{dist/src → build}/tools/vault/utils/actions/index_rag.d.ts +0 -1
  296. package/build/tools/vault/utils/actions/index_rag.js.map +1 -0
  297. package/{dist/src → build}/tools/vault/utils/actions/list_all.d.ts +1 -2
  298. package/{dist/src → build}/tools/vault/utils/actions/list_all.js +1 -1
  299. package/build/tools/vault/utils/actions/list_all.js.map +1 -0
  300. package/{dist/src → build}/tools/vault/utils/actions/load_memory.d.ts +1 -2
  301. package/{dist/src → build}/tools/vault/utils/actions/load_memory.js +3 -3
  302. package/build/tools/vault/utils/actions/load_memory.js.map +1 -0
  303. package/{dist/src → build}/tools/vault/utils/actions/read.d.ts +1 -2
  304. package/{dist/src → build}/tools/vault/utils/actions/read.js +1 -1
  305. package/build/tools/vault/utils/actions/read.js.map +1 -0
  306. package/{dist/src → build}/tools/vault/utils/actions/search.d.ts +1 -2
  307. package/{dist/src → build}/tools/vault/utils/actions/search.js +2 -2
  308. package/build/tools/vault/utils/actions/search.js.map +1 -0
  309. package/{dist/src → build}/tools/vault/utils/actions/stats.d.ts +0 -1
  310. package/build/tools/vault/utils/actions/stats.js.map +1 -0
  311. package/{dist/src → build}/tools/vault/utils/constants.d.ts +0 -1
  312. package/build/tools/vault/utils/constants.js.map +1 -0
  313. package/{dist/src → build}/tools/vault/utils/document.d.ts +0 -6
  314. package/{dist/src → build}/tools/vault/utils/document.js +0 -1
  315. package/build/tools/vault/utils/document.js.map +1 -0
  316. package/{dist/src → build}/tools/vault/utils/shared.d.ts +1 -2
  317. package/build/tools/vault/utils/shared.js.map +1 -0
  318. package/build/tools/vault/utils.d.ts +7 -0
  319. package/build/tools/vault/utils.js +8 -0
  320. package/build/tools/vault/utils.js.map +1 -0
  321. package/{dist/src → build}/tools/write_property/index.d.ts +22 -5
  322. package/{dist/src → build}/tools/write_property/index.js +1 -1
  323. package/build/tools/write_property/index.js.map +1 -0
  324. package/build/tools/write_property/params.d.ts +60 -0
  325. package/build/tools/write_property/params.js.map +1 -0
  326. package/{dist/src → build}/utils/DirectoryWalker.d.ts +1 -2
  327. package/build/utils/DirectoryWalker.js.map +1 -0
  328. package/{dist/src → build}/utils/Embedder.d.ts +0 -1
  329. package/{dist/src → build}/utils/Embedder.js +1 -1
  330. package/build/utils/Embedder.js.map +1 -0
  331. package/{dist/src → build}/utils/Indexer.d.ts +2 -3
  332. package/{dist/src → build}/utils/Indexer.js +2 -2
  333. package/build/utils/Indexer.js.map +1 -0
  334. package/{dist/src → build}/utils/LLMClient.d.ts +0 -5
  335. package/build/utils/LLMClient.js +53 -0
  336. package/build/utils/LLMClient.js.map +1 -0
  337. package/{dist/src → build}/utils/LocalReranker.d.ts +0 -1
  338. package/{dist/src → build}/utils/LocalReranker.js +1 -1
  339. package/build/utils/LocalReranker.js.map +1 -0
  340. package/{dist/src → build}/utils/RAGIndexer.d.ts +1 -2
  341. package/{dist/src → build}/utils/RAGIndexer.js +8 -11
  342. package/build/utils/RAGIndexer.js.map +1 -0
  343. package/build/utils/RerankerClient.d.ts +61 -0
  344. package/{dist/src → build}/utils/RerankerClient.js +1 -20
  345. package/build/utils/RerankerClient.js.map +1 -0
  346. package/{dist/src → build}/utils/VaultManger/VaultManager.d.ts +3 -7
  347. package/{dist/src → build}/utils/VaultManger/VaultManager.js +17 -20
  348. package/build/utils/VaultManger/VaultManager.js.map +1 -0
  349. package/{dist/src → build}/utils/VaultManger/VaultPathError.d.ts +0 -1
  350. package/build/utils/VaultManger/VaultPathError.js.map +1 -0
  351. package/build/utils/VaultManger/index.d.ts +3 -0
  352. package/build/utils/VaultManger/index.js +3 -0
  353. package/build/utils/VaultManger/index.js.map +1 -0
  354. package/{dist/src → build}/utils/VaultManger/types.d.ts +1 -2
  355. package/build/utils/VaultManger/types.js +2 -0
  356. package/build/utils/VaultManger/types.js.map +1 -0
  357. package/{dist/src → build}/utils/VaultWatcher.d.ts +0 -1
  358. package/{dist/src → build}/utils/VaultWatcher.js +1 -1
  359. package/build/utils/VaultWatcher.js.map +1 -0
  360. package/{dist/src → build}/utils/VectorDB.d.ts +0 -1
  361. package/build/utils/VectorDB.js +241 -0
  362. package/build/utils/VectorDB.js.map +1 -0
  363. package/{dist/src → build}/utils/constants.d.ts +0 -1
  364. package/build/utils/constants.js.map +1 -0
  365. package/{dist/src → build}/utils/createToolError.d.ts +0 -1
  366. package/build/utils/createToolError.js.map +1 -0
  367. package/build/utils/getVaultManager.d.ts +2 -0
  368. package/{dist/src → build}/utils/getVaultManager.js +1 -7
  369. package/build/utils/getVaultManager.js.map +1 -0
  370. package/{dist/src → build}/utils/processor/LinkExtractor.d.ts +0 -1
  371. package/build/utils/processor/LinkExtractor.js.map +1 -0
  372. package/build/utils/processor/MatterParser.d.ts +2 -0
  373. package/build/utils/processor/MatterParser.js +28 -0
  374. package/build/utils/processor/MatterParser.js.map +1 -0
  375. package/build/utils/processor/types.d.ts +104 -0
  376. package/{dist/src → build}/utils/processor/types.js +2 -10
  377. package/build/utils/processor/types.js.map +1 -0
  378. package/{dist/src → build}/utils/semaphore.d.ts +0 -1
  379. package/build/utils/semaphore.js.map +1 -0
  380. package/package.json +84 -72
  381. package/dist/package.json +0 -74
  382. package/dist/src/config.d.ts +0 -6
  383. package/dist/src/config.d.ts.map +0 -1
  384. package/dist/src/config.js.map +0 -1
  385. package/dist/src/db.d.ts +0 -2
  386. package/dist/src/db.d.ts.map +0 -1
  387. package/dist/src/db.js +0 -58
  388. package/dist/src/db.js.map +0 -1
  389. package/dist/src/index.d.ts +0 -3
  390. package/dist/src/index.d.ts.map +0 -1
  391. package/dist/src/index.js.map +0 -1
  392. package/dist/src/server.d.ts.map +0 -1
  393. package/dist/src/server.js.map +0 -1
  394. package/dist/src/setup.d.ts.map +0 -1
  395. package/dist/src/setup.js.map +0 -1
  396. package/dist/src/tools/create_document_with_properties/index.d.ts.map +0 -1
  397. package/dist/src/tools/create_document_with_properties/index.js.map +0 -1
  398. package/dist/src/tools/create_document_with_properties/params.d.ts +0 -19
  399. package/dist/src/tools/create_document_with_properties/params.d.ts.map +0 -1
  400. package/dist/src/tools/create_document_with_properties/params.js.map +0 -1
  401. package/dist/src/tools/generate_property/index.d.ts.map +0 -1
  402. package/dist/src/tools/generate_property/index.js.map +0 -1
  403. package/dist/src/tools/generate_property/params.d.ts.map +0 -1
  404. package/dist/src/tools/generate_property/params.js.map +0 -1
  405. package/dist/src/tools/index.d.ts.map +0 -1
  406. package/dist/src/tools/index.js +0 -13
  407. package/dist/src/tools/index.js.map +0 -1
  408. package/dist/src/tools/organize_attachments/index.d.ts.map +0 -1
  409. package/dist/src/tools/organize_attachments/index.js.map +0 -1
  410. package/dist/src/tools/organize_attachments/params.d.ts +0 -47
  411. package/dist/src/tools/organize_attachments/params.d.ts.map +0 -1
  412. package/dist/src/tools/organize_attachments/params.js.map +0 -1
  413. package/dist/src/tools/organize_attachments/utils.d.ts.map +0 -1
  414. package/dist/src/tools/organize_attachments/utils.js.map +0 -1
  415. package/dist/src/tools/vault/index.d.ts.map +0 -1
  416. package/dist/src/tools/vault/index.js.map +0 -1
  417. package/dist/src/tools/vault/metrics.d.ts.map +0 -1
  418. package/dist/src/tools/vault/metrics.js.map +0 -1
  419. package/dist/src/tools/vault/params.d.ts +0 -100
  420. package/dist/src/tools/vault/params.d.ts.map +0 -1
  421. package/dist/src/tools/vault/params.js.map +0 -1
  422. package/dist/src/tools/vault/types/collect_context.d.ts +0 -388
  423. package/dist/src/tools/vault/types/collect_context.d.ts.map +0 -1
  424. package/dist/src/tools/vault/types/collect_context.js.map +0 -1
  425. package/dist/src/tools/vault/types/list_all.d.ts +0 -89
  426. package/dist/src/tools/vault/types/list_all.d.ts.map +0 -1
  427. package/dist/src/tools/vault/types/list_all.js.map +0 -1
  428. package/dist/src/tools/vault/types/read_specific.d.ts +0 -68
  429. package/dist/src/tools/vault/types/read_specific.d.ts.map +0 -1
  430. package/dist/src/tools/vault/types/read_specific.js.map +0 -1
  431. package/dist/src/tools/vault/types/search.d.ts +0 -151
  432. package/dist/src/tools/vault/types/search.d.ts.map +0 -1
  433. package/dist/src/tools/vault/types/search.js.map +0 -1
  434. package/dist/src/tools/vault/utils/actions/collect_context.d.ts.map +0 -1
  435. package/dist/src/tools/vault/utils/actions/collect_context.js.map +0 -1
  436. package/dist/src/tools/vault/utils/actions/index_rag.d.ts.map +0 -1
  437. package/dist/src/tools/vault/utils/actions/index_rag.js.map +0 -1
  438. package/dist/src/tools/vault/utils/actions/list_all.d.ts.map +0 -1
  439. package/dist/src/tools/vault/utils/actions/list_all.js.map +0 -1
  440. package/dist/src/tools/vault/utils/actions/load_memory.d.ts.map +0 -1
  441. package/dist/src/tools/vault/utils/actions/load_memory.js.map +0 -1
  442. package/dist/src/tools/vault/utils/actions/read.d.ts.map +0 -1
  443. package/dist/src/tools/vault/utils/actions/read.js.map +0 -1
  444. package/dist/src/tools/vault/utils/actions/search.d.ts.map +0 -1
  445. package/dist/src/tools/vault/utils/actions/search.js.map +0 -1
  446. package/dist/src/tools/vault/utils/actions/stats.d.ts.map +0 -1
  447. package/dist/src/tools/vault/utils/actions/stats.js.map +0 -1
  448. package/dist/src/tools/vault/utils/constants.d.ts.map +0 -1
  449. package/dist/src/tools/vault/utils/constants.js.map +0 -1
  450. package/dist/src/tools/vault/utils/document.d.ts.map +0 -1
  451. package/dist/src/tools/vault/utils/document.js.map +0 -1
  452. package/dist/src/tools/vault/utils/shared.d.ts.map +0 -1
  453. package/dist/src/tools/vault/utils/shared.js.map +0 -1
  454. package/dist/src/tools/vault/utils.d.ts +0 -8
  455. package/dist/src/tools/vault/utils.d.ts.map +0 -1
  456. package/dist/src/tools/vault/utils.js +0 -8
  457. package/dist/src/tools/vault/utils.js.map +0 -1
  458. package/dist/src/tools/write_property/index.d.ts.map +0 -1
  459. package/dist/src/tools/write_property/index.js.map +0 -1
  460. package/dist/src/tools/write_property/params.d.ts +0 -17
  461. package/dist/src/tools/write_property/params.d.ts.map +0 -1
  462. package/dist/src/tools/write_property/params.js.map +0 -1
  463. package/dist/src/utils/DirectoryWalker.d.ts.map +0 -1
  464. package/dist/src/utils/DirectoryWalker.js.map +0 -1
  465. package/dist/src/utils/Embedder.d.ts.map +0 -1
  466. package/dist/src/utils/Embedder.js.map +0 -1
  467. package/dist/src/utils/Indexer.d.ts.map +0 -1
  468. package/dist/src/utils/Indexer.js.map +0 -1
  469. package/dist/src/utils/LLMClient.d.ts.map +0 -1
  470. package/dist/src/utils/LLMClient.js +0 -112
  471. package/dist/src/utils/LLMClient.js.map +0 -1
  472. package/dist/src/utils/LocalReranker.d.ts.map +0 -1
  473. package/dist/src/utils/LocalReranker.js.map +0 -1
  474. package/dist/src/utils/RAGIndexer.d.ts.map +0 -1
  475. package/dist/src/utils/RAGIndexer.js.map +0 -1
  476. package/dist/src/utils/RerankerClient.d.ts +0 -28
  477. package/dist/src/utils/RerankerClient.d.ts.map +0 -1
  478. package/dist/src/utils/RerankerClient.js.map +0 -1
  479. package/dist/src/utils/VaultManger/VaultManager.d.ts.map +0 -1
  480. package/dist/src/utils/VaultManger/VaultManager.js.map +0 -1
  481. package/dist/src/utils/VaultManger/VaultPathError.d.ts.map +0 -1
  482. package/dist/src/utils/VaultManger/VaultPathError.js.map +0 -1
  483. package/dist/src/utils/VaultManger/index.d.ts +0 -4
  484. package/dist/src/utils/VaultManger/index.d.ts.map +0 -1
  485. package/dist/src/utils/VaultManger/index.js +0 -3
  486. package/dist/src/utils/VaultManger/index.js.map +0 -1
  487. package/dist/src/utils/VaultManger/types.d.ts.map +0 -1
  488. package/dist/src/utils/VaultManger/types.js.map +0 -1
  489. package/dist/src/utils/VaultWatcher.d.ts.map +0 -1
  490. package/dist/src/utils/VaultWatcher.js.map +0 -1
  491. package/dist/src/utils/VectorDB.d.ts.map +0 -1
  492. package/dist/src/utils/VectorDB.js +0 -305
  493. package/dist/src/utils/VectorDB.js.map +0 -1
  494. package/dist/src/utils/constants.d.ts.map +0 -1
  495. package/dist/src/utils/constants.js.map +0 -1
  496. package/dist/src/utils/createToolError.d.ts.map +0 -1
  497. package/dist/src/utils/createToolError.js.map +0 -1
  498. package/dist/src/utils/getVaultManager.d.ts +0 -7
  499. package/dist/src/utils/getVaultManager.d.ts.map +0 -1
  500. package/dist/src/utils/getVaultManager.js.map +0 -1
  501. package/dist/src/utils/processor/LinkExtractor.d.ts.map +0 -1
  502. package/dist/src/utils/processor/LinkExtractor.js.map +0 -1
  503. package/dist/src/utils/processor/MatterParser.d.ts +0 -3
  504. package/dist/src/utils/processor/MatterParser.d.ts.map +0 -1
  505. package/dist/src/utils/processor/MatterParser.js +0 -27
  506. package/dist/src/utils/processor/MatterParser.js.map +0 -1
  507. package/dist/src/utils/processor/types.d.ts +0 -53
  508. package/dist/src/utils/processor/types.d.ts.map +0 -1
  509. package/dist/src/utils/processor/types.js.map +0 -1
  510. package/dist/src/utils/semaphore.d.ts.map +0 -1
  511. package/dist/src/utils/semaphore.js.map +0 -1
  512. package/dist/tsconfig.build.tsbuildinfo +0 -1
  513. /package/{dist/src/utils/VaultManger → build/cli/hooks/useLlmStream}/types.js +0 -0
  514. /package/{dist/src → build}/tools/generate_property/params.js +0 -0
  515. /package/{dist/src → build}/tools/organize_attachments/utils.js +0 -0
  516. /package/{dist/src → build}/tools/vault/metrics.js +0 -0
  517. /package/{dist/src → build}/tools/vault/utils/actions/index_rag.js +0 -0
  518. /package/{dist/src → build}/tools/vault/utils/actions/stats.js +0 -0
  519. /package/{dist/src → build}/tools/vault/utils/constants.js +0 -0
  520. /package/{dist/src → build}/tools/vault/utils/shared.js +0 -0
  521. /package/{dist/src → build}/tools/write_property/params.js +0 -0
  522. /package/{dist/src → build}/utils/DirectoryWalker.js +0 -0
  523. /package/{dist/src → build}/utils/VaultManger/VaultPathError.js +0 -0
  524. /package/{dist/src → build}/utils/constants.js +0 -0
  525. /package/{dist/src → build}/utils/createToolError.js +0 -0
  526. /package/{dist/src → build}/utils/processor/LinkExtractor.js +0 -0
  527. /package/{dist/src → build}/utils/semaphore.js +0 -0
package/README.md CHANGED
@@ -89,8 +89,6 @@ MCP 클라이언트 설정(`mcpServers.env`) 또는 셸 환경변수로 주입
89
89
  "VAULT_DIR_PATH": "/abs/path/to/your/vault",
90
90
  "LOGGING_LEVEL": "info",
91
91
  "LLM_API_URL": "http://127.0.0.1:8080",
92
- "LLM_EMBEDDING_API_URL": "http://127.0.0.1:8081",
93
- "LLM_EMBEDDING_MODEL": "nomic-embed-text",
94
92
  "LLM_CHAT_MODEL": "llama3",
95
93
  "LLM_RERANKER_API_URL": "http://127.0.0.1:8082",
96
94
  "VAULT_METRICS_LOG_PATH": "/abs/path/to/vault-metrics.ndjson"
@@ -107,15 +105,9 @@ MCP 클라이언트 설정(`mcpServers.env`) 또는 셸 환경변수로 주입
107
105
  | `VAULT_DIR_PATH` | — | Obsidian Vault 절대 경로 | **필수** |
108
106
  | `LOGGING_LEVEL` | `info` | 로그 수준 (`debug` / `info` / `warn` / `error`) | 선택 |
109
107
  | `LLM_API_URL` | `http://127.0.0.1:8080` | llama-server 채팅 엔드포인트 | 선택 |
110
- | `LLM_EMBEDDING_API_URL` | `http://127.0.0.1:8081` | llama-server 임베딩 엔드포인트 (벡터 색인 필수) | 선택 |
111
- | `LLM_EMBEDDING_MODEL` | `nomic-embed-text` | 임베딩 모델명 | 선택 |
112
108
  | `LLM_CHAT_MODEL` | `llama3` | 채팅 모델명 | 선택 |
113
- | `LLM_RERANKER_API_URL` | `http://127.0.0.1:8082` | llama-server 리랭커 엔드포인트 (미설정 시 폴백) | 선택 |
114
109
  | `VAULT_METRICS_LOG_PATH` | — | 응답 압축·토큰 메트릭 JSONL 기록 경로 | 선택 |
115
110
 
116
- > `LLM_EMBEDDING_API_URL`이 없으면 `search_vault_by_semantic`과 `index_vault_to_vectordb`가 동작하지 않습니다.
117
- > `LLM_RERANKER_API_URL`에 서버가 없으면 오류 없이 폴백(원래 정렬 유지)됩니다.
118
-
119
111
  ## 시작하기 (빠른 설정)
120
112
 
121
113
  ### 1) 공통 요구사항
@@ -249,10 +241,7 @@ npx -y @sunub/obsidian-mcp-server@latest --vault-path /abs/path/to/your/vault --
249
241
  "VAULT_METRICS_LOG_PATH": "/path/to/vault-metrics.ndjson",
250
242
  "LOGGING_LEVEL": "info",
251
243
  "LLM_API_URL": "http://127.0.0.1:8080",
252
- "LLM_EMBEDDING_API_URL": "http://127.0.0.1:8081",
253
- "LLM_EMBEDDING_MODEL": "nomic-embed-text",
254
244
  "LLM_CHAT_MODEL": "llama3",
255
- "LLM_RERANKER_API_URL": "http://127.0.0.1:8082"
256
245
  }
257
246
  }
258
247
  }
@@ -271,10 +260,7 @@ npx -y @sunub/obsidian-mcp-server@latest --vault-path /abs/path/to/your/vault --
271
260
  "VAULT_METRICS_LOG_PATH": "/path/to/vault-metrics.ndjson",
272
261
  "LOGGING_LEVEL": "info",
273
262
  "LLM_API_URL": "http://127.0.0.1:8080",
274
- "LLM_EMBEDDING_API_URL": "http://127.0.0.1:8081",
275
- "LLM_EMBEDDING_MODEL": "nomic-embed-text",
276
263
  "LLM_CHAT_MODEL": "llama3",
277
- "LLM_RERANKER_API_URL": "http://127.0.0.1:8082"
278
264
  }
279
265
  }
280
266
  }
@@ -289,13 +275,9 @@ npx -y @sunub/obsidian-mcp-server@latest --vault-path /abs/path/to/your/vault --
289
275
 
290
276
  ### 활성화 조건
291
277
 
292
- `LLM_EMBEDDING_API_URL`이 가리키는 서버가 실행 중이어야 합니다.
293
- 없으면 `search_vault_by_semantic`과 `index_vault_to_vectordb`가 동작하지 않고,
294
- `useRagContext`는 자동으로 키워드 검색으로 폴백됩니다.
295
-
296
278
  ```bash
297
279
  # ecosystem.config.cjs 기준 — 임베딩 서버 단독 시작
298
- pm2 start ecosystem.config.cjs --only llama-embedding-server
280
+ pm2 start ecosystem.config.cjs
299
281
  ```
300
282
 
301
283
  ### 초기 색인 실행
@@ -308,7 +290,6 @@ pm2 start ecosystem.config.cjs --only llama-embedding-server
308
290
 
309
291
  내부 동작:
310
292
 
311
-
312
293
  ```json
313
294
  {
314
295
  "mcpServers": {
@@ -323,10 +304,7 @@ pm2 start ecosystem.config.cjs --only llama-embedding-server
323
304
  "VAULT_METRICS_LOG_PATH": "/path/to/vault-metrics.ndjson",
324
305
  "LOGGING_LEVEL": "info",
325
306
  "LLM_API_URL": "http://127.0.0.1:8080",
326
- "LLM_EMBEDDING_API_URL": "http://127.0.0.1:8081",
327
- "LLM_EMBEDDING_MODEL": "nomic-embed-text",
328
307
  "LLM_CHAT_MODEL": "llama3",
329
- "LLM_RERANKER_API_URL": "http://127.0.0.1:8082"
330
308
  }
331
309
  }
332
310
  }
@@ -342,7 +320,6 @@ pm2 start ecosystem.config.cjs --only llama-embedding-server
342
320
  ```
343
321
 
344
322
  - 직접 삭제해도 무방합니다. 다음 `index_vault_to_vectordb` 호출 시 재생성됩니다.
345
- - `LLM_EMBEDDING_MODEL`을 변경하면 서버 시작 시 **자동으로 전체 재색인**이 발생합니다 (INDEX_VERSION 또는 모델명 불일치 감지).
346
323
 
347
324
  ### 검색 전략 흐름
348
325
 
@@ -0,0 +1 @@
1
+ export declare const App: () => import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,273 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { InputContext } from "./context/InputContext.js";
3
+ import { useDispatcher } from "./hooks/useDispatcher.js";
4
+ import { useHistoryManager } from "./hooks/useHistoryManager.js";
5
+ import { useInputHistoryStore } from "./hooks/useInputHistory.js";
6
+ import { useKeyMatchers } from "./hooks/useKeyMatchers.js";
7
+ import { useKeypress } from "./hooks/useKeypress.js";
8
+ import { useLlmStream } from "./hooks/useLlmStream/index.js";
9
+ import { useMcpManager } from "./hooks/useMcpManager.js";
10
+ import { useRagContext } from "./hooks/useRagContext.js";
11
+ import { useTerminalSize } from "./hooks/useTerminalSize.js";
12
+ import { Command } from "./key/keyMatchers.js";
13
+ import { useTextBuffer } from "./key/text-buffer.js";
14
+ import { theme } from "./theme/semantic-colors.js";
15
+ import { calculatePromptWidths, InputPrompt } from "./ui/InputPrompt.js";
16
+ import { MainContent } from "./ui/MainContent.js";
17
+ import { MCPServers } from "./ui/MCPServers.js";
18
+ import { SystemInfoSummaryBox } from "./ui/SystemInfoSummaryBox.js";
19
+ import { historyStorage } from "./utils/historyStorage.js";
20
+ import { Box, Text } from "ink";
21
+ import { useCallback, useEffect, useMemo, useRef, useState } from "react";
22
+ import { debugLogger } from "../shared/index.js";
23
+ import { disableMouseEvents } from "./utils/terminal.js";
24
+ export const App = () => {
25
+ const [shellModeActive] = useState(false);
26
+ const [copyModeEnabled, setCopyModeEnabled] = useState(false);
27
+ const [showEscapePrompt] = useState(false);
28
+ const lastCtrlCPress = useRef(0);
29
+ const keyMatchers = useKeyMatchers();
30
+ const { columns: terminalWidth, rows: terminalHeight } = useTerminalSize();
31
+ useEffect(() => {
32
+ disableMouseEvents();
33
+ }, []);
34
+ //
35
+ // useEffect(() => {
36
+ // if (copyModeEnabled) {
37
+ // process.stdout.write("\x1b[?1000l\x1b[?1003l\x1b[?1015l\x1b[?1006l");
38
+ // } else {
39
+ // process.stdout.write("\x1b[?1000h\x1b[?1003h\x1b[?1015h\x1b[?1006h");
40
+ // }
41
+ // return () => {
42
+ // process.stdout.write("\x1b[?1000l\x1b[?1003l\x1b[?1015l\x1b[?1006l");
43
+ // };
44
+ // }, [copyModeEnabled]);
45
+ const mainAreaWidth = terminalWidth;
46
+ const { inputWidth, suggestionsWidth } = useMemo(() => {
47
+ const { inputWidth, suggestionsWidth } = calculatePromptWidths(mainAreaWidth);
48
+ return { inputWidth, suggestionsWidth };
49
+ }, [mainAreaWidth]);
50
+ const availableTerminalHeight = Math.max(0, terminalHeight - 2);
51
+ const { inputHistory, addInput, initializeFromLogger } = useInputHistoryStore();
52
+ const { isConnected: mcpConnected, connections: mcpConnections, tools: mcpTools, toolsByServer: mcpToolsByServer, callTool, errors: mcpErrors, serverCount: mcpServerCount, connectedCount: mcpConnectedCount, isAnyConnecting, hasAnyError, } = useMcpManager();
53
+ const { handleDispatch } = useDispatcher(mcpTools);
54
+ const [isCommandProcessing, setIsCommandProcessing] = useState(false);
55
+ const { fetchContext, isFetching: isRagFetching } = useRagContext(callTool, mcpConnected);
56
+ const buffer = useTextBuffer({
57
+ initialText: "",
58
+ viewportWidth: inputWidth,
59
+ viewportHeight: availableTerminalHeight,
60
+ });
61
+ const inputState = useMemo(() => ({
62
+ buffer,
63
+ userMessages: inputHistory,
64
+ shellModeActive,
65
+ showEscapePrompt,
66
+ copyModeEnabled,
67
+ inputWidth,
68
+ suggestionsWidth,
69
+ }), [
70
+ buffer,
71
+ inputHistory,
72
+ shellModeActive,
73
+ showEscapePrompt,
74
+ copyModeEnabled,
75
+ inputWidth,
76
+ suggestionsWidth,
77
+ ]);
78
+ const { pendingItem, streamingState, isLoading, error, sendMessage, reset, clearStreamingHistory, } = useLlmStream(callTool, mcpTools);
79
+ const historyManager = useHistoryManager();
80
+ const addInfoMessage = useCallback((content) => {
81
+ const id = historyManager.addItem({
82
+ type: "info",
83
+ content,
84
+ timestamp: Date.now(),
85
+ });
86
+ setTimeout(() => {
87
+ historyManager.removeItem(id);
88
+ }, 2000);
89
+ }, [historyManager]);
90
+ const genMcpToolsText = useCallback(() => {
91
+ const toolsText = mcpConnected
92
+ ? Array.from(mcpToolsByServer.entries())
93
+ .map(([serverName, serverTools]) => {
94
+ const toolList = serverTools
95
+ .map((t) => ` • ${t.name}${t.description ? ` — ${t.description}` : ""}`)
96
+ .join("\n");
97
+ return `[${serverName}] (${serverTools.length} tools)\n${toolList}`;
98
+ })
99
+ .join("\n\n")
100
+ : "MCP 서버에 연결되지 않았습니다.";
101
+ return `Mcp List:\n${toolsText}`;
102
+ }, [mcpConnected, mcpToolsByServer]);
103
+ useEffect(() => {
104
+ void initializeFromLogger(historyStorage);
105
+ }, [initializeFromLogger]);
106
+ useEffect(() => {
107
+ if (pendingItem?.isComplete) {
108
+ historyManager.addItem({
109
+ type: "assistant",
110
+ content: pendingItem.content,
111
+ timestamp: Date.now(),
112
+ });
113
+ reset();
114
+ }
115
+ }, [pendingItem, reset, historyManager]);
116
+ // 에러 로깅
117
+ useEffect(() => {
118
+ if (error) {
119
+ debugLogger.error("[AppContainer] LLM stream error:", error.message);
120
+ }
121
+ }, [error]);
122
+ const handleGlobalKeypress = useCallback((key) => {
123
+ // 1. Ctrl+C Handling (3-Stage)
124
+ if (keyMatchers[Command.QUIT](key) ||
125
+ keyMatchers[Command.CLEAR_INPUT](key)) {
126
+ // Stage 1: Clear Input
127
+ if (buffer.text.length > 0) {
128
+ buffer.setText("");
129
+ lastCtrlCPress.current = 0;
130
+ return true;
131
+ }
132
+ // Stage 2: Cancel Ongoing Request
133
+ if (isLoading || isCommandProcessing) {
134
+ reset();
135
+ setIsCommandProcessing(false);
136
+ lastCtrlCPress.current = 0;
137
+ addInfoMessage("요청이 취소되었습니다.");
138
+ return true;
139
+ }
140
+ // Stage 3: Quit Program
141
+ const now = Date.now();
142
+ if (now - lastCtrlCPress.current < 2000) {
143
+ process.exit(0);
144
+ }
145
+ else {
146
+ lastCtrlCPress.current = now;
147
+ addInfoMessage("Press Ctrl+C again to exit.");
148
+ }
149
+ return true;
150
+ }
151
+ // 2. Toggle Copy Mode (F9)
152
+ if (keyMatchers[Command.TOGGLE_COPY_MODE](key)) {
153
+ setCopyModeEnabled((prev) => !prev);
154
+ addInfoMessage(!copyModeEnabled
155
+ ? "복사 모드가 활성화되었습니다. (마우스 드래그 가능)"
156
+ : "복사 모드가 비활성화되었습니다. (마우스 트래킹 활성)");
157
+ return true;
158
+ }
159
+ return false;
160
+ }, [
161
+ buffer,
162
+ isLoading,
163
+ isCommandProcessing,
164
+ reset,
165
+ copyModeEnabled,
166
+ keyMatchers,
167
+ addInfoMessage,
168
+ ]);
169
+ useKeypress(handleGlobalKeypress, { isActive: true, priority: true });
170
+ const handleFinalSubmit = useCallback(async (value) => {
171
+ if (!value.trim() || isLoading)
172
+ return;
173
+ // Add to UI state session & past session recalculator
174
+ addInput(value);
175
+ // Save to physical file via storage utility
176
+ void historyStorage.appendMessage(value);
177
+ if (value.startsWith("/")) {
178
+ // 슬래시 커맨드 → Dispatcher → MCP 도구 호출
179
+ buffer.setText("");
180
+ setIsCommandProcessing(true);
181
+ try {
182
+ const result = await handleDispatch(value, callTool);
183
+ // 로컬 액션 처리
184
+ if (result.content === "__CLEAR_HISTORY__") {
185
+ historyManager.clearItems();
186
+ clearStreamingHistory();
187
+ addInfoMessage("대화 히스토리가 초기화되었습니다.");
188
+ return;
189
+ }
190
+ if (result.content === "__LIST_TOOLS__") {
191
+ addInfoMessage(genMcpToolsText());
192
+ return;
193
+ }
194
+ if (result.type === "llm_required") {
195
+ historyManager.addItem({
196
+ type: "user",
197
+ content: result.userIntent ?? value,
198
+ timestamp: Date.now(),
199
+ });
200
+ void sendMessage(result.userIntent ?? value, result.content);
201
+ }
202
+ else {
203
+ // result.type is "tool_result" | "local_action" | "unknown_command"
204
+ if (result.type === "info" ||
205
+ result.type === "unknown_command") {
206
+ addInfoMessage(result.content);
207
+ }
208
+ else {
209
+ const historyType = result.type === "tool_result" ? "assistant" : "info";
210
+ historyManager.addItem({
211
+ type: historyType,
212
+ content: result.content,
213
+ timestamp: Date.now(),
214
+ });
215
+ }
216
+ }
217
+ }
218
+ finally {
219
+ setIsCommandProcessing(false);
220
+ }
221
+ }
222
+ else {
223
+ historyManager.addItem({
224
+ type: "user",
225
+ content: value,
226
+ timestamp: Date.now(),
227
+ });
228
+ buffer.setText("");
229
+ // 1. 도구 트리거 감지 (도구 이름이나 서버 이름이 포함된 경우)
230
+ const triggeredTools = [];
231
+ const lowerValue = value.toLowerCase();
232
+ for (const [serverName, serverTools] of mcpToolsByServer.entries()) {
233
+ // 서버 이름이 언급된 경우 해당 서버의 모든 도구 활성화
234
+ if (lowerValue.includes(serverName.toLowerCase())) {
235
+ triggeredTools.push(...serverTools);
236
+ continue;
237
+ }
238
+ // 특정 도구 이름이 언급된 경우 해당 도구만 활성화
239
+ for (const tool of serverTools) {
240
+ if (lowerValue.includes(tool.name.toLowerCase())) {
241
+ triggeredTools.push(tool);
242
+ }
243
+ }
244
+ }
245
+ // 중복 제거
246
+ const uniqueTriggered = Array.from(new Set(triggeredTools));
247
+ // 2. Vault 도구가 트리거된 경우에만 RAG 컨텍스트 수집
248
+ const isVaultTriggered = uniqueTriggered.some((t) => t.name === "vault");
249
+ const ragContext = isVaultTriggered ? await fetchContext(value) : null;
250
+ // 3. 트리거된 도구만 LLM에 전달
251
+ void sendMessage(value, ragContext, uniqueTriggered);
252
+ }
253
+ }, [
254
+ addInput,
255
+ buffer,
256
+ handleDispatch,
257
+ callTool,
258
+ historyManager,
259
+ clearStreamingHistory,
260
+ genMcpToolsText,
261
+ mcpToolsByServer,
262
+ fetchContext,
263
+ sendMessage,
264
+ isLoading,
265
+ addInfoMessage,
266
+ ]);
267
+ return (_jsxs(InputContext.Provider, { value: inputState, children: [_jsxs(Box, { flexDirection: "column", width: "100%", children: [_jsx(MainContent, { history: historyManager.history, pendingItem: pendingItem, streamingState: streamingState, isRagFetching: isRagFetching, isCommandProcessing: isCommandProcessing, width: mainAreaWidth }), error && (_jsx(Box, { paddingX: 1, marginBottom: 1, children: _jsxs(Text, { color: "red", bold: true, children: ["\u2716 ", error.message] }) }))] }), _jsxs(Box, { paddingX: 1, marginTop: 1, flexDirection: "column", gap: 0, width: "100%", borderTop: true, borderBottom: false, borderLeft: false, borderRight: false, borderTopColor: theme.border.default, borderStyle: "bold", children: [_jsx(SystemInfoSummaryBox, { children: _jsx(MCPServers, { isConnected: mcpConnected, connections: mcpConnections, serverCount: mcpServerCount, connectedCount: mcpConnectedCount, errors: mcpErrors }) }), _jsx(InputPrompt, { onSubmit: handleFinalSubmit, focus: streamingState === "idle" && mcpConnected, placeholder: isAnyConnecting
268
+ ? ` MCP 서버 연결 중... (${mcpConnectedCount}/${mcpServerCount})`
269
+ : hasAnyError && !mcpConnected
270
+ ? " MCP 연결에 실패했습니다"
271
+ : " Type your message..." })] })] }));
272
+ };
273
+ //# sourceMappingURL=App.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"App.js","sourceRoot":"","sources":["../../src/cli/App.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export declare const AppContainer: () => import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,19 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { App } from "./App.js";
3
+ import { KeypressProvider } from "./context/KeypressContext.js";
4
+ import { LLMErrorComponent } from "./ui/LLMErrorComponent.js";
5
+ import { LLMHealthChecker } from "./ui/LLMHealthChecker.js";
6
+ import { useState } from "react";
7
+ export const AppContainer = () => {
8
+ const [llmStatus, setLLMStatus] = useState("checking");
9
+ const [errorMessage, setErrorMessage] = useState("");
10
+ const llmApi_URL = (process.env["LLM_API_URL"] || "http://127.0.0.1:8080").replace(/\/$/, "");
11
+ if (llmStatus === "checking") {
12
+ return (_jsx(LLMHealthChecker, { llmApi_URL: llmApi_URL, setLLMStatus: setLLMStatus, setErrorMessage: setErrorMessage }));
13
+ }
14
+ if (llmStatus === "error") {
15
+ return (_jsx(LLMErrorComponent, { apiUrl: llmApi_URL, errorMessage: errorMessage }));
16
+ }
17
+ return (_jsx(KeypressProvider, { children: _jsx(App, {}) }));
18
+ };
19
+ //# sourceMappingURL=AppContainer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AppContainer.js","sourceRoot":"","sources":["../../src/cli/AppContainer.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AAClC,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AAEnE,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAEjC,MAAM,CAAC,MAAM,YAAY,GAAG,GAAG,EAAE;IAChC,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAkB,UAAU,CAAC,CAAC;IACxE,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;IACrD,MAAM,UAAU,GAAG,CAClB,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,uBAAuB,CACrD,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IAErB,IAAI,SAAS,KAAK,UAAU,EAAE,CAAC;QAC9B,OAAO,CACN,KAAC,gBAAgB,IAChB,UAAU,EAAE,UAAU,EACtB,YAAY,EAAE,YAAY,EAC1B,eAAe,EAAE,eAAe,GAC/B,CACF,CAAC;IACH,CAAC;IAED,IAAI,SAAS,KAAK,OAAO,EAAE,CAAC;QAC3B,OAAO,CACN,KAAC,iBAAiB,IAAC,MAAM,EAAE,UAAU,EAAE,YAAY,EAAE,YAAY,GAAI,CACrE,CAAC;IACH,CAAC;IAED,OAAO,CACN,KAAC,gBAAgB,cAChB,KAAC,GAAG,KAAG,GACW,CACnB,CAAC;AACH,CAAC,CAAC"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Shared color constants for the CLI UI.
3
+ */
4
+ export declare const Colors: {
5
+ readonly Gray: "#808080";
6
+ readonly DimGray: "#696969";
7
+ readonly LightGray: "#d3d3d3";
8
+ readonly Cyan: "#00bcd4";
9
+ readonly Green: "#4caf50";
10
+ readonly Yellow: "#ffeb3b";
11
+ readonly Red: "#f44336";
12
+ readonly White: "#ffffff";
13
+ readonly Black: "#000000";
14
+ };
15
+ export type ColorKey = keyof typeof Colors;
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Shared color constants for the CLI UI.
3
+ */
4
+ export const Colors = {
5
+ Gray: "#808080",
6
+ DimGray: "#696969",
7
+ LightGray: "#d3d3d3",
8
+ Cyan: "#00bcd4",
9
+ Green: "#4caf50",
10
+ Yellow: "#ffeb3b",
11
+ Red: "#f44336",
12
+ White: "#ffffff",
13
+ Black: "#000000",
14
+ };
15
+ //# sourceMappingURL=colors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"colors.js","sourceRoot":"","sources":["../../src/cli/colors.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG;IACrB,IAAI,EAAE,SAAS;IACf,OAAO,EAAE,SAAS;IAClB,SAAS,EAAE,SAAS;IACpB,IAAI,EAAE,SAAS;IACf,KAAK,EAAE,SAAS;IAChB,MAAM,EAAE,SAAS;IACjB,GAAG,EAAE,SAAS;IACd,KAAK,EAAE,SAAS;IAChB,KAAK,EAAE,SAAS;CACP,CAAC"}
@@ -0,0 +1,19 @@
1
+ export declare enum CommandKind {
2
+ BUILT_IN = "built-in",
3
+ USER_FILE = "user-file",
4
+ WORKSPACE_FILE = "workspace-file",
5
+ EXTENSION_FILE = "extension-file",
6
+ MCP_PROMPT = "mcp-prompt",
7
+ AGENT = "agent",
8
+ SKILL = "skill"
9
+ }
10
+ export interface SlashCommand {
11
+ name: string;
12
+ description?: string;
13
+ action?: (args: string) => void | Promise<void>;
14
+ completion?: (query: string) => Promise<string[]>;
15
+ subcommands?: SlashCommand[];
16
+ }
17
+ export interface CommandContext {
18
+ [key: string]: unknown;
19
+ }
@@ -0,0 +1,11 @@
1
+ export var CommandKind;
2
+ (function (CommandKind) {
3
+ CommandKind["BUILT_IN"] = "built-in";
4
+ CommandKind["USER_FILE"] = "user-file";
5
+ CommandKind["WORKSPACE_FILE"] = "workspace-file";
6
+ CommandKind["EXTENSION_FILE"] = "extension-file";
7
+ CommandKind["MCP_PROMPT"] = "mcp-prompt";
8
+ CommandKind["AGENT"] = "agent";
9
+ CommandKind["SKILL"] = "skill";
10
+ })(CommandKind || (CommandKind = {}));
11
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/cli/commands/types.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,WAQX;AARD,WAAY,WAAW;IACtB,oCAAqB,CAAA;IACrB,sCAAuB,CAAA;IACvB,gDAAiC,CAAA;IACjC,gDAAiC,CAAA;IACjC,wCAAyB,CAAA;IACzB,8BAAe,CAAA;IACf,8BAAe,CAAA;AAChB,CAAC,EARW,WAAW,KAAX,WAAW,QAQtB"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=SettingContext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SettingContext.js","sourceRoot":"","sources":["../../../src/cli/config/SettingContext.tsx"],"names":[],"mappings":""}
@@ -0,0 +1,30 @@
1
+ import { z } from "zod";
2
+ declare const mcpServerEntrySchema: z.ZodObject<{
3
+ command: z.ZodString;
4
+ args: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodString, "many">>>;
5
+ env: z.ZodDefault<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>>;
6
+ cwd: z.ZodOptional<z.ZodString>;
7
+ disabled: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
8
+ }, "strip", z.ZodTypeAny, {
9
+ command: string;
10
+ args: string[];
11
+ env: Record<string, string>;
12
+ disabled: boolean;
13
+ cwd?: string | undefined;
14
+ }, {
15
+ command: string;
16
+ cwd?: string | undefined;
17
+ args?: string[] | undefined;
18
+ env?: Record<string, string> | undefined;
19
+ disabled?: boolean | undefined;
20
+ }>;
21
+ export type McpServerEntry = z.infer<typeof mcpServerEntrySchema>;
22
+ export interface McpServerConfig {
23
+ name: string;
24
+ command: string;
25
+ args: string[];
26
+ env: Record<string, string>;
27
+ cwd?: string;
28
+ }
29
+ export declare function loadMcpServersConfig(): McpServerConfig[];
30
+ export {};
@@ -0,0 +1,119 @@
1
+ import { existsSync, readFileSync } from "node:fs";
2
+ import path, { join, resolve } from "node:path";
3
+ import { fileURLToPath } from "node:url";
4
+ import { z } from "zod";
5
+ import { configSchema, debugLogger } from "../../shared/index.js";
6
+ const mcpServerEntrySchema = z.object({
7
+ command: z.string().min(1),
8
+ args: z.array(z.string()).optional().default([]),
9
+ env: z.record(z.string(), z.string()).optional().default({}),
10
+ cwd: z.string().optional(),
11
+ disabled: z.boolean().optional().default(false),
12
+ });
13
+ const mcpServersFileSchema = z.object({
14
+ mcpServers: z.record(z.string(), mcpServerEntrySchema),
15
+ });
16
+ const ENV_VAR_PATTERN = /\$\{([^}:]+?)(?::-(.*?))?\}/g;
17
+ function substituteEnvVars(value) {
18
+ return value.replace(ENV_VAR_PATTERN, (_match, varName, defaultValue) => {
19
+ const envValue = process.env[varName];
20
+ if (envValue !== undefined && envValue !== "") {
21
+ return envValue;
22
+ }
23
+ if (defaultValue !== undefined) {
24
+ return defaultValue;
25
+ }
26
+ return "";
27
+ });
28
+ }
29
+ function substituteEnvInRecord(record) {
30
+ const result = {};
31
+ for (const [key, value] of Object.entries(record)) {
32
+ result[key] = substituteEnvVars(value);
33
+ }
34
+ return result;
35
+ }
36
+ function findConfigFile() {
37
+ const candidates = [
38
+ join(process.cwd(), "mcp-servers.json"),
39
+ join(process.cwd(), ".mcp-servers.json"),
40
+ ];
41
+ for (const candidate of candidates) {
42
+ if (existsSync(candidate)) {
43
+ return candidate;
44
+ }
45
+ }
46
+ return null;
47
+ }
48
+ function buildFallbackConfig() {
49
+ const parseResult = configSchema.safeParse({
50
+ vaultPath: process.env["VAULT_DIR_PATH"],
51
+ loggingLevel: process.env["LOGGING_LEVEL"],
52
+ llmApiUrl: process.env["LLM_API_URL"],
53
+ llmChatModel: process.env["LLM_CHAT_MODEL"],
54
+ });
55
+ const env = parseResult.success ? parseResult.data : null;
56
+ const vaultPath = env?.vaultPath || process.env["VAULT_DIR_PATH"];
57
+ if (!vaultPath) {
58
+ debugLogger.warn("[McpConfig] VAULT_DIR_PATH가 설정되지 않아 폴백 서버를 생성할 수 없습니다.");
59
+ return [];
60
+ }
61
+ try {
62
+ // 현재 파일 위치를 기준으로 packages/server/dist/index.js 위치를 계산
63
+ const __dirname = path.dirname(fileURLToPath(import.meta.url));
64
+ const serverEntry = path.resolve(__dirname, "../../../server/dist/index.js");
65
+ const projectRoot = path.resolve(__dirname, "../../../../");
66
+ return [
67
+ {
68
+ name: "obsidian",
69
+ command: "node",
70
+ args: [serverEntry],
71
+ cwd: projectRoot,
72
+ env: {
73
+ VAULT_DIR_PATH: vaultPath,
74
+ LLM_API_URL: env?.llmApiUrl ?? "http://127.0.0.1:8080",
75
+ LLM_CHAT_MODEL: env?.llmChatModel ?? "llama3",
76
+ LOGGING_LEVEL: process.env["LOGGING_LEVEL"] ?? "info",
77
+ },
78
+ },
79
+ ];
80
+ }
81
+ catch (err) {
82
+ debugLogger.error("[McpConfig] 폴백 설정 생성 실패:", err);
83
+ return [];
84
+ }
85
+ }
86
+ export function loadMcpServersConfig() {
87
+ const configPath = findConfigFile();
88
+ if (!configPath) {
89
+ debugLogger.warn("[McpConfig] mcp-servers.json을 찾을 수 없습니다. 환경변수 폴백을 사용합니다.");
90
+ return buildFallbackConfig();
91
+ }
92
+ try {
93
+ const raw = readFileSync(configPath, "utf-8");
94
+ const parsed = JSON.parse(raw);
95
+ const validated = mcpServersFileSchema.parse(parsed);
96
+ const configs = [];
97
+ for (const [name, entry] of Object.entries(validated.mcpServers)) {
98
+ if (entry.disabled) {
99
+ debugLogger.info(`[McpConfig] "${name}" 서버가 비활성화되어 있어 건너뜁니다.`);
100
+ continue;
101
+ }
102
+ configs.push({
103
+ name,
104
+ command: substituteEnvVars(entry.command),
105
+ args: entry.args.map(substituteEnvVars),
106
+ env: substituteEnvInRecord(entry.env),
107
+ cwd: entry.cwd ? resolve(entry.cwd) : process.cwd(),
108
+ });
109
+ }
110
+ debugLogger.info(`[McpConfig] ${configPath}에서 ${configs.length}개의 MCP 서버 설정을 로드했습니다.`);
111
+ return configs;
112
+ }
113
+ catch (err) {
114
+ debugLogger.error(`[McpConfig] 설정 파일 파싱 실패 (${configPath}):`, err);
115
+ debugLogger.warn("[McpConfig] 환경변수 폴백을 사용합니다.");
116
+ return buildFallbackConfig();
117
+ }
118
+ }
119
+ //# sourceMappingURL=mcpServersConfig.js.map