@sunub/obsidian-mcp-server 0.3.19 → 0.3.20

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 (524) hide show
  1. package/build/cli/App.d.ts +1 -0
  2. package/build/cli/App.js +247 -0
  3. package/build/cli/App.js.map +1 -0
  4. package/build/cli/AppContainer.d.ts +1 -0
  5. package/build/cli/AppContainer.js +19 -0
  6. package/build/cli/AppContainer.js.map +1 -0
  7. package/build/cli/colors.d.ts +15 -0
  8. package/build/cli/colors.js +15 -0
  9. package/build/cli/colors.js.map +1 -0
  10. package/build/cli/commands/types.d.ts +19 -0
  11. package/build/cli/commands/types.js +11 -0
  12. package/build/cli/commands/types.js.map +1 -0
  13. package/build/cli/config/SettingContext.d.ts +1 -0
  14. package/build/cli/config/SettingContext.js +2 -0
  15. package/build/cli/config/SettingContext.js.map +1 -0
  16. package/build/cli/config/mcpServersConfig.d.ts +30 -0
  17. package/build/cli/config/mcpServersConfig.js +123 -0
  18. package/build/cli/config/mcpServersConfig.js.map +1 -0
  19. package/build/cli/config/settingSchema.d.ts +180 -0
  20. package/build/cli/config/settingSchema.js +128 -0
  21. package/build/cli/config/settingSchema.js.map +1 -0
  22. package/build/cli/constants.d.ts +47 -0
  23. package/build/cli/constants.js +101 -0
  24. package/build/cli/constants.js.map +1 -0
  25. package/build/cli/context/InputContext.d.ts +12 -0
  26. package/build/cli/context/InputContext.js +10 -0
  27. package/build/cli/context/InputContext.js.map +1 -0
  28. package/build/cli/context/KeypressContext.d.ts +30 -0
  29. package/build/cli/context/KeypressContext.js +200 -0
  30. package/build/cli/context/KeypressContext.js.map +1 -0
  31. package/build/cli/context/KeypressContext.util.d.ts +7 -0
  32. package/build/cli/context/KeypressContext.util.js +476 -0
  33. package/build/cli/context/KeypressContext.util.js.map +1 -0
  34. package/build/cli/errors/index.d.ts +3 -0
  35. package/build/cli/errors/index.js +7 -0
  36. package/build/cli/errors/index.js.map +1 -0
  37. package/build/cli/hooks/useAtCompletion.d.ts +12 -0
  38. package/build/cli/hooks/useAtCompletion.js +5 -0
  39. package/build/cli/hooks/useAtCompletion.js.map +1 -0
  40. package/build/cli/hooks/useCommandCompletion.d.ts +59 -0
  41. package/build/cli/hooks/useCommandCompletion.js +344 -0
  42. package/build/cli/hooks/useCommandCompletion.js.map +1 -0
  43. package/build/cli/hooks/useCompletion.d.ts +22 -0
  44. package/build/cli/hooks/useCompletion.js +84 -0
  45. package/build/cli/hooks/useCompletion.js.map +1 -0
  46. package/build/cli/hooks/useDispatcher.d.ts +6 -0
  47. package/build/cli/hooks/useDispatcher.js +286 -0
  48. package/build/cli/hooks/useDispatcher.js.map +1 -0
  49. package/build/cli/hooks/useFocus.d.ts +2 -0
  50. package/build/cli/hooks/useFocus.js +3 -0
  51. package/build/cli/hooks/useFocus.js.map +1 -0
  52. package/build/cli/hooks/useHistoryManager.d.ts +32 -0
  53. package/build/cli/hooks/useHistoryManager.js +78 -0
  54. package/build/cli/hooks/useHistoryManager.js.map +1 -0
  55. package/build/cli/hooks/useInputHistory.d.ts +24 -0
  56. package/build/cli/hooks/useInputHistory.js +159 -0
  57. package/build/cli/hooks/useInputHistory.js.map +1 -0
  58. package/build/cli/hooks/useKeyMatchers.d.ts +17 -0
  59. package/build/cli/hooks/useKeyMatchers.js +18 -0
  60. package/build/cli/hooks/useKeyMatchers.js.map +1 -0
  61. package/build/cli/hooks/useKeypress.d.ts +19 -0
  62. package/build/cli/hooks/useKeypress.js +28 -0
  63. package/build/cli/hooks/useKeypress.js.map +1 -0
  64. package/build/cli/hooks/useLlmStream/constants.d.ts +4 -0
  65. package/build/cli/hooks/useLlmStream/constants.js +5 -0
  66. package/build/cli/hooks/useLlmStream/constants.js.map +1 -0
  67. package/build/cli/hooks/useLlmStream/index.d.ts +2 -0
  68. package/build/cli/hooks/useLlmStream/index.js +2 -0
  69. package/build/cli/hooks/useLlmStream/index.js.map +1 -0
  70. package/build/cli/hooks/useLlmStream/llmService.d.ts +2 -0
  71. package/build/cli/hooks/useLlmStream/llmService.js +111 -0
  72. package/build/cli/hooks/useLlmStream/llmService.js.map +1 -0
  73. package/build/cli/hooks/useLlmStream/types.d.ts +38 -0
  74. package/build/cli/hooks/useLlmStream/types.js.map +1 -0
  75. package/build/cli/hooks/useLlmStream/useLlmStream.d.ts +12 -0
  76. package/build/cli/hooks/useLlmStream/useLlmStream.js +175 -0
  77. package/build/cli/hooks/useLlmStream/useLlmStream.js.map +1 -0
  78. package/build/cli/hooks/useLlmStream/utils.d.ts +17 -0
  79. package/build/cli/hooks/useLlmStream/utils.js +142 -0
  80. package/build/cli/hooks/useLlmStream/utils.js.map +1 -0
  81. package/build/cli/hooks/useMcpClient.d.ts +10 -0
  82. package/build/cli/hooks/useMcpClient.js +102 -0
  83. package/build/cli/hooks/useMcpClient.js.map +1 -0
  84. package/build/cli/hooks/useMcpManager.d.ts +26 -0
  85. package/build/cli/hooks/useMcpManager.js +89 -0
  86. package/build/cli/hooks/useMcpManager.js.map +1 -0
  87. package/build/cli/hooks/usePromptCompletion.d.ts +19 -0
  88. package/build/cli/hooks/usePromptCompletion.js +13 -0
  89. package/build/cli/hooks/usePromptCompletion.js.map +1 -0
  90. package/build/cli/hooks/useRagContext.d.ts +6 -0
  91. package/build/cli/hooks/useRagContext.js +84 -0
  92. package/build/cli/hooks/useRagContext.js.map +1 -0
  93. package/build/cli/hooks/useShellCompletion.d.ts +18 -0
  94. package/build/cli/hooks/useShellCompletion.js +10 -0
  95. package/build/cli/hooks/useShellCompletion.js.map +1 -0
  96. package/build/cli/hooks/useSlashCompletion.d.ts +21 -0
  97. package/build/cli/hooks/useSlashCompletion.js +11 -0
  98. package/build/cli/hooks/useSlashCompletion.js.map +1 -0
  99. package/build/cli/hooks/useTerminalSize.d.ts +4 -0
  100. package/build/cli/hooks/useTerminalSize.js +21 -0
  101. package/build/cli/hooks/useTerminalSize.js.map +1 -0
  102. package/build/cli/index.d.ts +1 -0
  103. package/build/cli/index.js +26 -0
  104. package/build/cli/index.js.map +1 -0
  105. package/build/cli/key/input.d.ts +5 -0
  106. package/build/cli/key/input.js +9 -0
  107. package/build/cli/key/input.js.map +1 -0
  108. package/build/cli/key/keyBindings.d.ts +152 -0
  109. package/build/cli/key/keyBindings.js +630 -0
  110. package/build/cli/key/keyBindings.js.map +1 -0
  111. package/build/cli/key/keyMatchers.d.ts +19 -0
  112. package/build/cli/key/keyMatchers.js +25 -0
  113. package/build/cli/key/keyMatchers.js.map +1 -0
  114. package/build/cli/key/mouse.d.ts +23 -0
  115. package/build/cli/key/mouse.js +155 -0
  116. package/build/cli/key/mouse.js.map +1 -0
  117. package/build/cli/key/text-buffer.d.ts +156 -0
  118. package/build/cli/key/text-buffer.js +937 -0
  119. package/build/cli/key/text-buffer.js.map +1 -0
  120. package/build/cli/main.d.ts +1 -0
  121. package/build/cli/main.js +20 -0
  122. package/build/cli/main.js.map +1 -0
  123. package/build/cli/services/McpClientService.d.ts +32 -0
  124. package/build/cli/services/McpClientService.js +123 -0
  125. package/build/cli/services/McpClientService.js.map +1 -0
  126. package/build/cli/services/McpManager.d.ts +28 -0
  127. package/build/cli/services/McpManager.js +146 -0
  128. package/build/cli/services/McpManager.js.map +1 -0
  129. package/build/cli/theme/builtin/default-dark.d.ts +7 -0
  130. package/build/cli/theme/builtin/default-dark.js +143 -0
  131. package/build/cli/theme/builtin/default-dark.js.map +1 -0
  132. package/build/cli/theme/builtin/no-color.d.ts +7 -0
  133. package/build/cli/theme/builtin/no-color.js +125 -0
  134. package/build/cli/theme/builtin/no-color.js.map +1 -0
  135. package/build/cli/theme/builtin/tokyonight-dark.d.ts +7 -0
  136. package/build/cli/theme/builtin/tokyonight-dark.js +146 -0
  137. package/build/cli/theme/builtin/tokyonight-dark.js.map +1 -0
  138. package/build/cli/theme/semantic-colors.d.ts +2 -0
  139. package/build/cli/theme/semantic-colors.js +19 -0
  140. package/build/cli/theme/semantic-colors.js.map +1 -0
  141. package/build/cli/theme/semantic-tokens.d.ts +42 -0
  142. package/build/cli/theme/semantic-tokens.js +77 -0
  143. package/build/cli/theme/semantic-tokens.js.map +1 -0
  144. package/build/cli/theme/theme-manager.d.ts +32 -0
  145. package/build/cli/theme/theme-manager.js +150 -0
  146. package/build/cli/theme/theme-manager.js.map +1 -0
  147. package/build/cli/theme/theme.d.ts +107 -0
  148. package/build/cli/theme/theme.js +333 -0
  149. package/build/cli/theme/theme.js.map +1 -0
  150. package/build/cli/tmp.d.ts +1 -0
  151. package/build/cli/tmp.js +27 -0
  152. package/build/cli/tmp.js.map +1 -0
  153. package/build/cli/types.d.ts +97 -0
  154. package/build/cli/types.js +2 -0
  155. package/build/cli/types.js.map +1 -0
  156. package/build/cli/ui/ConnectionStatus.d.ts +13 -0
  157. package/build/cli/ui/ConnectionStatus.js +19 -0
  158. package/build/cli/ui/ConnectionStatus.js.map +1 -0
  159. package/build/cli/ui/HalfPaddingBox.d.ts +13 -0
  160. package/build/cli/ui/HalfPaddingBox.js +11 -0
  161. package/build/cli/ui/HalfPaddingBox.js.map +1 -0
  162. package/build/cli/ui/HelpCommands.d.ts +5 -0
  163. package/build/cli/ui/HelpCommands.js +11 -0
  164. package/build/cli/ui/HelpCommands.js.map +1 -0
  165. package/build/cli/ui/HistoryItemDisplay.d.ts +9 -0
  166. package/build/cli/ui/HistoryItemDisplay.js +34 -0
  167. package/build/cli/ui/HistoryItemDisplay.js.map +1 -0
  168. package/build/cli/ui/InputPrompt.d.ts +13 -0
  169. package/build/cli/ui/InputPrompt.js +138 -0
  170. package/build/cli/ui/InputPrompt.js.map +1 -0
  171. package/build/cli/ui/LLMErrorComponent.d.ts +6 -0
  172. package/build/cli/ui/LLMErrorComponent.js +18 -0
  173. package/build/cli/ui/LLMErrorComponent.js.map +1 -0
  174. package/build/cli/ui/LLMHealthChecker.d.ts +8 -0
  175. package/build/cli/ui/LLMHealthChecker.js +22 -0
  176. package/build/cli/ui/LLMHealthChecker.js.map +1 -0
  177. package/build/cli/ui/MCPServers.d.ts +11 -0
  178. package/build/cli/ui/MCPServers.js +15 -0
  179. package/build/cli/ui/MCPServers.js.map +1 -0
  180. package/build/cli/ui/MainContent.d.ts +12 -0
  181. package/build/cli/ui/MainContent.js +28 -0
  182. package/build/cli/ui/MainContent.js.map +1 -0
  183. package/build/cli/ui/MarkdownDisplay.d.ts +8 -0
  184. package/build/cli/ui/MarkdownDisplay.js +6 -0
  185. package/build/cli/ui/MarkdownDisplay.js.map +1 -0
  186. package/build/cli/ui/MouseContext.d.ts +1 -0
  187. package/build/cli/ui/MouseContext.js +2 -0
  188. package/build/cli/ui/MouseContext.js.map +1 -0
  189. package/build/cli/ui/SuggestionsDisplay.d.ts +25 -0
  190. package/build/cli/ui/SuggestionsDisplay.js +45 -0
  191. package/build/cli/ui/SuggestionsDisplay.js.map +1 -0
  192. package/build/cli/ui/SystemInfoSummaryBox.d.ts +6 -0
  193. package/build/cli/ui/SystemInfoSummaryBox.js +6 -0
  194. package/build/cli/ui/SystemInfoSummaryBox.js.map +1 -0
  195. package/build/cli/ui/ThinkingIndicator.d.ts +2 -0
  196. package/build/cli/ui/ThinkingIndicator.js +16 -0
  197. package/build/cli/ui/ThinkingIndicator.js.map +1 -0
  198. package/build/cli/ui/layout/DefaultAppLayout.d.ts +2 -0
  199. package/build/cli/ui/layout/DefaultAppLayout.js +6 -0
  200. package/build/cli/ui/layout/DefaultAppLayout.js.map +1 -0
  201. package/build/cli/ui/shared/ExpandableText.d.ts +14 -0
  202. package/build/cli/ui/shared/ExpandableText.js +19 -0
  203. package/build/cli/ui/shared/ExpandableText.js.map +1 -0
  204. package/build/cli/utils/cache.d.ts +21 -0
  205. package/build/cli/utils/cache.js +56 -0
  206. package/build/cli/utils/cache.js.map +1 -0
  207. package/build/cli/utils/cleanup.d.ts +1 -0
  208. package/build/cli/utils/cleanup.js +5 -0
  209. package/build/cli/utils/cleanup.js.map +1 -0
  210. package/build/cli/utils/commandUtils.d.ts +11 -0
  211. package/build/cli/utils/commandUtils.js +16 -0
  212. package/build/cli/utils/commandUtils.js.map +1 -0
  213. package/build/cli/utils/historyStorage.d.ts +13 -0
  214. package/build/cli/utils/historyStorage.js +64 -0
  215. package/build/cli/utils/historyStorage.js.map +1 -0
  216. package/build/cli/utils/stdio.d.ts +18 -0
  217. package/build/cli/utils/stdio.js +58 -0
  218. package/build/cli/utils/stdio.js.map +1 -0
  219. package/build/cli/utils/textUtil.d.ts +63 -0
  220. package/build/cli/utils/textUtil.js +231 -0
  221. package/build/cli/utils/textUtil.js.map +1 -0
  222. package/build/config.d.ts +31 -0
  223. package/{dist/src → build}/config.js +31 -2
  224. package/build/config.js.map +1 -0
  225. package/build/db.d.ts +1 -0
  226. package/{dist/src → build}/db.js +0 -3
  227. package/build/db.js.map +1 -0
  228. package/build/index.d.ts +2 -0
  229. package/{dist/src → build}/index.js +0 -3
  230. package/build/index.js.map +1 -0
  231. package/{dist/src → build}/server.d.ts +0 -1
  232. package/{dist/src → build}/server.js +1 -1
  233. package/build/server.js.map +1 -0
  234. package/{dist/src → build}/setup.d.ts +0 -2
  235. package/{dist/src → build}/setup.js +2 -4
  236. package/build/setup.js.map +1 -0
  237. package/build/shared/configSchema.d.ts +27 -0
  238. package/build/shared/configSchema.js +31 -0
  239. package/build/shared/configSchema.js.map +1 -0
  240. package/build/shared/index.d.ts +3 -0
  241. package/build/shared/index.js +4 -0
  242. package/build/shared/index.js.map +1 -0
  243. package/build/shared/types.d.ts +20 -0
  244. package/build/shared/types.js +2 -0
  245. package/build/shared/types.js.map +1 -0
  246. package/build/shared/utils/debugLogger.d.ts +12 -0
  247. package/build/shared/utils/debugLogger.js +54 -0
  248. package/build/shared/utils/debugLogger.js.map +1 -0
  249. package/{dist/src → build}/tools/create_document_with_properties/index.d.ts +22 -5
  250. package/{dist/src → build}/tools/create_document_with_properties/index.js +2 -2
  251. package/build/tools/create_document_with_properties/index.js.map +1 -0
  252. package/build/tools/create_document_with_properties/params.d.ts +66 -0
  253. package/{dist/src → build}/tools/create_document_with_properties/params.js +1 -1
  254. package/build/tools/create_document_with_properties/params.js.map +1 -0
  255. package/{dist/src → build}/tools/generate_property/index.d.ts +1 -2
  256. package/{dist/src → build}/tools/generate_property/index.js +1 -1
  257. package/build/tools/generate_property/index.js.map +1 -0
  258. package/{dist/src → build}/tools/generate_property/params.d.ts +30 -7
  259. package/build/tools/generate_property/params.js.map +1 -0
  260. package/{dist/src → build}/tools/index.d.ts +51 -36
  261. package/build/tools/index.js +13 -0
  262. package/build/tools/index.js.map +1 -0
  263. package/{dist/src → build}/tools/organize_attachments/index.d.ts +1 -2
  264. package/{dist/src → build}/tools/organize_attachments/index.js +2 -2
  265. package/build/tools/organize_attachments/index.js.map +1 -0
  266. package/build/tools/organize_attachments/params.d.ts +122 -0
  267. package/{dist/src → build}/tools/organize_attachments/params.js +3 -3
  268. package/build/tools/organize_attachments/params.js.map +1 -0
  269. package/{dist/src → build}/tools/organize_attachments/utils.d.ts +0 -1
  270. package/build/tools/organize_attachments/utils.js.map +1 -0
  271. package/{dist/src → build}/tools/vault/index.d.ts +5 -26
  272. package/{dist/src → build}/tools/vault/index.js +3 -3
  273. package/build/tools/vault/index.js.map +1 -0
  274. package/{dist/src → build}/tools/vault/metrics.d.ts +0 -1
  275. package/build/tools/vault/metrics.js.map +1 -0
  276. package/build/tools/vault/params.d.ts +115 -0
  277. package/{dist/src → build}/tools/vault/params.js +0 -1
  278. package/build/tools/vault/params.js.map +1 -0
  279. package/build/tools/vault/types/collect_context.d.ts +1340 -0
  280. package/{dist/src → build}/tools/vault/types/collect_context.js +1 -1
  281. package/build/tools/vault/types/collect_context.js.map +1 -0
  282. package/build/tools/vault/types/list_all.d.ts +387 -0
  283. package/{dist/src → build}/tools/vault/types/list_all.js +4 -9
  284. package/build/tools/vault/types/list_all.js.map +1 -0
  285. package/build/tools/vault/types/read_specific.d.ts +297 -0
  286. package/{dist/src → build}/tools/vault/types/read_specific.js +1 -3
  287. package/build/tools/vault/types/read_specific.js.map +1 -0
  288. package/build/tools/vault/types/search.d.ts +598 -0
  289. package/{dist/src → build}/tools/vault/types/search.js +8 -16
  290. package/build/tools/vault/types/search.js.map +1 -0
  291. package/{dist/src → build}/tools/vault/utils/actions/collect_context.d.ts +1 -2
  292. package/{dist/src → build}/tools/vault/utils/actions/collect_context.js +4 -4
  293. package/build/tools/vault/utils/actions/collect_context.js.map +1 -0
  294. package/{dist/src → build}/tools/vault/utils/actions/index_rag.d.ts +0 -1
  295. package/build/tools/vault/utils/actions/index_rag.js.map +1 -0
  296. package/{dist/src → build}/tools/vault/utils/actions/list_all.d.ts +1 -2
  297. package/{dist/src → build}/tools/vault/utils/actions/list_all.js +1 -1
  298. package/build/tools/vault/utils/actions/list_all.js.map +1 -0
  299. package/{dist/src → build}/tools/vault/utils/actions/load_memory.d.ts +1 -2
  300. package/{dist/src → build}/tools/vault/utils/actions/load_memory.js +3 -3
  301. package/build/tools/vault/utils/actions/load_memory.js.map +1 -0
  302. package/{dist/src → build}/tools/vault/utils/actions/read.d.ts +1 -2
  303. package/{dist/src → build}/tools/vault/utils/actions/read.js +1 -1
  304. package/build/tools/vault/utils/actions/read.js.map +1 -0
  305. package/{dist/src → build}/tools/vault/utils/actions/search.d.ts +1 -2
  306. package/{dist/src → build}/tools/vault/utils/actions/search.js +2 -2
  307. package/build/tools/vault/utils/actions/search.js.map +1 -0
  308. package/{dist/src → build}/tools/vault/utils/actions/stats.d.ts +0 -1
  309. package/build/tools/vault/utils/actions/stats.js.map +1 -0
  310. package/{dist/src → build}/tools/vault/utils/constants.d.ts +0 -1
  311. package/build/tools/vault/utils/constants.js.map +1 -0
  312. package/{dist/src → build}/tools/vault/utils/document.d.ts +0 -6
  313. package/{dist/src → build}/tools/vault/utils/document.js +0 -1
  314. package/build/tools/vault/utils/document.js.map +1 -0
  315. package/{dist/src → build}/tools/vault/utils/shared.d.ts +1 -2
  316. package/build/tools/vault/utils/shared.js.map +1 -0
  317. package/build/tools/vault/utils.d.ts +7 -0
  318. package/build/tools/vault/utils.js +8 -0
  319. package/build/tools/vault/utils.js.map +1 -0
  320. package/{dist/src → build}/tools/write_property/index.d.ts +22 -5
  321. package/{dist/src → build}/tools/write_property/index.js +1 -1
  322. package/build/tools/write_property/index.js.map +1 -0
  323. package/build/tools/write_property/params.d.ts +60 -0
  324. package/build/tools/write_property/params.js.map +1 -0
  325. package/{dist/src → build}/utils/DirectoryWalker.d.ts +1 -2
  326. package/build/utils/DirectoryWalker.js.map +1 -0
  327. package/{dist/src → build}/utils/Embedder.d.ts +0 -1
  328. package/{dist/src → build}/utils/Embedder.js +1 -1
  329. package/build/utils/Embedder.js.map +1 -0
  330. package/{dist/src → build}/utils/Indexer.d.ts +2 -3
  331. package/{dist/src → build}/utils/Indexer.js +2 -2
  332. package/build/utils/Indexer.js.map +1 -0
  333. package/{dist/src → build}/utils/LLMClient.d.ts +0 -1
  334. package/{dist/src → build}/utils/LLMClient.js +0 -16
  335. package/build/utils/LLMClient.js.map +1 -0
  336. package/{dist/src → build}/utils/LocalReranker.d.ts +0 -1
  337. package/{dist/src → build}/utils/LocalReranker.js +1 -1
  338. package/build/utils/LocalReranker.js.map +1 -0
  339. package/{dist/src → build}/utils/RAGIndexer.d.ts +1 -2
  340. package/{dist/src → build}/utils/RAGIndexer.js +6 -6
  341. package/build/utils/RAGIndexer.js.map +1 -0
  342. package/build/utils/RerankerClient.d.ts +61 -0
  343. package/{dist/src → build}/utils/RerankerClient.js +1 -20
  344. package/build/utils/RerankerClient.js.map +1 -0
  345. package/{dist/src → build}/utils/VaultManger/VaultManager.d.ts +3 -4
  346. package/{dist/src → build}/utils/VaultManger/VaultManager.js +9 -9
  347. package/build/utils/VaultManger/VaultManager.js.map +1 -0
  348. package/{dist/src → build}/utils/VaultManger/VaultPathError.d.ts +0 -1
  349. package/build/utils/VaultManger/VaultPathError.js.map +1 -0
  350. package/build/utils/VaultManger/index.d.ts +3 -0
  351. package/build/utils/VaultManger/index.js +3 -0
  352. package/build/utils/VaultManger/index.js.map +1 -0
  353. package/{dist/src → build}/utils/VaultManger/types.d.ts +1 -2
  354. package/build/utils/VaultManger/types.js +2 -0
  355. package/build/utils/VaultManger/types.js.map +1 -0
  356. package/{dist/src → build}/utils/VaultWatcher.d.ts +0 -1
  357. package/{dist/src → build}/utils/VaultWatcher.js +1 -1
  358. package/build/utils/VaultWatcher.js.map +1 -0
  359. package/{dist/src → build}/utils/VectorDB.d.ts +0 -1
  360. package/build/utils/VectorDB.js +243 -0
  361. package/build/utils/VectorDB.js.map +1 -0
  362. package/{dist/src → build}/utils/constants.d.ts +0 -1
  363. package/build/utils/constants.js.map +1 -0
  364. package/{dist/src → build}/utils/createToolError.d.ts +0 -1
  365. package/build/utils/createToolError.js.map +1 -0
  366. package/build/utils/getVaultManager.d.ts +2 -0
  367. package/{dist/src → build}/utils/getVaultManager.js +1 -7
  368. package/build/utils/getVaultManager.js.map +1 -0
  369. package/{dist/src → build}/utils/processor/LinkExtractor.d.ts +0 -1
  370. package/build/utils/processor/LinkExtractor.js.map +1 -0
  371. package/build/utils/processor/MatterParser.d.ts +2 -0
  372. package/build/utils/processor/MatterParser.js +28 -0
  373. package/build/utils/processor/MatterParser.js.map +1 -0
  374. package/build/utils/processor/types.d.ts +104 -0
  375. package/{dist/src → build}/utils/processor/types.js +2 -10
  376. package/build/utils/processor/types.js.map +1 -0
  377. package/{dist/src → build}/utils/semaphore.d.ts +0 -1
  378. package/build/utils/semaphore.js.map +1 -0
  379. package/package.json +84 -72
  380. package/dist/package.json +0 -74
  381. package/dist/src/config.d.ts +0 -6
  382. package/dist/src/config.d.ts.map +0 -1
  383. package/dist/src/config.js.map +0 -1
  384. package/dist/src/db.d.ts +0 -2
  385. package/dist/src/db.d.ts.map +0 -1
  386. package/dist/src/db.js.map +0 -1
  387. package/dist/src/index.d.ts +0 -3
  388. package/dist/src/index.d.ts.map +0 -1
  389. package/dist/src/index.js.map +0 -1
  390. package/dist/src/server.d.ts.map +0 -1
  391. package/dist/src/server.js.map +0 -1
  392. package/dist/src/setup.d.ts.map +0 -1
  393. package/dist/src/setup.js.map +0 -1
  394. package/dist/src/tools/create_document_with_properties/index.d.ts.map +0 -1
  395. package/dist/src/tools/create_document_with_properties/index.js.map +0 -1
  396. package/dist/src/tools/create_document_with_properties/params.d.ts +0 -19
  397. package/dist/src/tools/create_document_with_properties/params.d.ts.map +0 -1
  398. package/dist/src/tools/create_document_with_properties/params.js.map +0 -1
  399. package/dist/src/tools/generate_property/index.d.ts.map +0 -1
  400. package/dist/src/tools/generate_property/index.js.map +0 -1
  401. package/dist/src/tools/generate_property/params.d.ts.map +0 -1
  402. package/dist/src/tools/generate_property/params.js.map +0 -1
  403. package/dist/src/tools/index.d.ts.map +0 -1
  404. package/dist/src/tools/index.js +0 -13
  405. package/dist/src/tools/index.js.map +0 -1
  406. package/dist/src/tools/organize_attachments/index.d.ts.map +0 -1
  407. package/dist/src/tools/organize_attachments/index.js.map +0 -1
  408. package/dist/src/tools/organize_attachments/params.d.ts +0 -47
  409. package/dist/src/tools/organize_attachments/params.d.ts.map +0 -1
  410. package/dist/src/tools/organize_attachments/params.js.map +0 -1
  411. package/dist/src/tools/organize_attachments/utils.d.ts.map +0 -1
  412. package/dist/src/tools/organize_attachments/utils.js.map +0 -1
  413. package/dist/src/tools/vault/index.d.ts.map +0 -1
  414. package/dist/src/tools/vault/index.js.map +0 -1
  415. package/dist/src/tools/vault/metrics.d.ts.map +0 -1
  416. package/dist/src/tools/vault/metrics.js.map +0 -1
  417. package/dist/src/tools/vault/params.d.ts +0 -100
  418. package/dist/src/tools/vault/params.d.ts.map +0 -1
  419. package/dist/src/tools/vault/params.js.map +0 -1
  420. package/dist/src/tools/vault/types/collect_context.d.ts +0 -388
  421. package/dist/src/tools/vault/types/collect_context.d.ts.map +0 -1
  422. package/dist/src/tools/vault/types/collect_context.js.map +0 -1
  423. package/dist/src/tools/vault/types/list_all.d.ts +0 -89
  424. package/dist/src/tools/vault/types/list_all.d.ts.map +0 -1
  425. package/dist/src/tools/vault/types/list_all.js.map +0 -1
  426. package/dist/src/tools/vault/types/read_specific.d.ts +0 -68
  427. package/dist/src/tools/vault/types/read_specific.d.ts.map +0 -1
  428. package/dist/src/tools/vault/types/read_specific.js.map +0 -1
  429. package/dist/src/tools/vault/types/search.d.ts +0 -151
  430. package/dist/src/tools/vault/types/search.d.ts.map +0 -1
  431. package/dist/src/tools/vault/types/search.js.map +0 -1
  432. package/dist/src/tools/vault/utils/actions/collect_context.d.ts.map +0 -1
  433. package/dist/src/tools/vault/utils/actions/collect_context.js.map +0 -1
  434. package/dist/src/tools/vault/utils/actions/index_rag.d.ts.map +0 -1
  435. package/dist/src/tools/vault/utils/actions/index_rag.js.map +0 -1
  436. package/dist/src/tools/vault/utils/actions/list_all.d.ts.map +0 -1
  437. package/dist/src/tools/vault/utils/actions/list_all.js.map +0 -1
  438. package/dist/src/tools/vault/utils/actions/load_memory.d.ts.map +0 -1
  439. package/dist/src/tools/vault/utils/actions/load_memory.js.map +0 -1
  440. package/dist/src/tools/vault/utils/actions/read.d.ts.map +0 -1
  441. package/dist/src/tools/vault/utils/actions/read.js.map +0 -1
  442. package/dist/src/tools/vault/utils/actions/search.d.ts.map +0 -1
  443. package/dist/src/tools/vault/utils/actions/search.js.map +0 -1
  444. package/dist/src/tools/vault/utils/actions/stats.d.ts.map +0 -1
  445. package/dist/src/tools/vault/utils/actions/stats.js.map +0 -1
  446. package/dist/src/tools/vault/utils/constants.d.ts.map +0 -1
  447. package/dist/src/tools/vault/utils/constants.js.map +0 -1
  448. package/dist/src/tools/vault/utils/document.d.ts.map +0 -1
  449. package/dist/src/tools/vault/utils/document.js.map +0 -1
  450. package/dist/src/tools/vault/utils/shared.d.ts.map +0 -1
  451. package/dist/src/tools/vault/utils/shared.js.map +0 -1
  452. package/dist/src/tools/vault/utils.d.ts +0 -8
  453. package/dist/src/tools/vault/utils.d.ts.map +0 -1
  454. package/dist/src/tools/vault/utils.js +0 -8
  455. package/dist/src/tools/vault/utils.js.map +0 -1
  456. package/dist/src/tools/write_property/index.d.ts.map +0 -1
  457. package/dist/src/tools/write_property/index.js.map +0 -1
  458. package/dist/src/tools/write_property/params.d.ts +0 -17
  459. package/dist/src/tools/write_property/params.d.ts.map +0 -1
  460. package/dist/src/tools/write_property/params.js.map +0 -1
  461. package/dist/src/utils/DirectoryWalker.d.ts.map +0 -1
  462. package/dist/src/utils/DirectoryWalker.js.map +0 -1
  463. package/dist/src/utils/Embedder.d.ts.map +0 -1
  464. package/dist/src/utils/Embedder.js.map +0 -1
  465. package/dist/src/utils/Indexer.d.ts.map +0 -1
  466. package/dist/src/utils/Indexer.js.map +0 -1
  467. package/dist/src/utils/LLMClient.d.ts.map +0 -1
  468. package/dist/src/utils/LLMClient.js.map +0 -1
  469. package/dist/src/utils/LocalReranker.d.ts.map +0 -1
  470. package/dist/src/utils/LocalReranker.js.map +0 -1
  471. package/dist/src/utils/RAGIndexer.d.ts.map +0 -1
  472. package/dist/src/utils/RAGIndexer.js.map +0 -1
  473. package/dist/src/utils/RerankerClient.d.ts +0 -28
  474. package/dist/src/utils/RerankerClient.d.ts.map +0 -1
  475. package/dist/src/utils/RerankerClient.js.map +0 -1
  476. package/dist/src/utils/VaultManger/VaultManager.d.ts.map +0 -1
  477. package/dist/src/utils/VaultManger/VaultManager.js.map +0 -1
  478. package/dist/src/utils/VaultManger/VaultPathError.d.ts.map +0 -1
  479. package/dist/src/utils/VaultManger/VaultPathError.js.map +0 -1
  480. package/dist/src/utils/VaultManger/index.d.ts +0 -4
  481. package/dist/src/utils/VaultManger/index.d.ts.map +0 -1
  482. package/dist/src/utils/VaultManger/index.js +0 -3
  483. package/dist/src/utils/VaultManger/index.js.map +0 -1
  484. package/dist/src/utils/VaultManger/types.d.ts.map +0 -1
  485. package/dist/src/utils/VaultManger/types.js.map +0 -1
  486. package/dist/src/utils/VaultWatcher.d.ts.map +0 -1
  487. package/dist/src/utils/VaultWatcher.js.map +0 -1
  488. package/dist/src/utils/VectorDB.d.ts.map +0 -1
  489. package/dist/src/utils/VectorDB.js +0 -305
  490. package/dist/src/utils/VectorDB.js.map +0 -1
  491. package/dist/src/utils/constants.d.ts.map +0 -1
  492. package/dist/src/utils/constants.js.map +0 -1
  493. package/dist/src/utils/createToolError.d.ts.map +0 -1
  494. package/dist/src/utils/createToolError.js.map +0 -1
  495. package/dist/src/utils/getVaultManager.d.ts +0 -7
  496. package/dist/src/utils/getVaultManager.d.ts.map +0 -1
  497. package/dist/src/utils/getVaultManager.js.map +0 -1
  498. package/dist/src/utils/processor/LinkExtractor.d.ts.map +0 -1
  499. package/dist/src/utils/processor/LinkExtractor.js.map +0 -1
  500. package/dist/src/utils/processor/MatterParser.d.ts +0 -3
  501. package/dist/src/utils/processor/MatterParser.d.ts.map +0 -1
  502. package/dist/src/utils/processor/MatterParser.js +0 -27
  503. package/dist/src/utils/processor/MatterParser.js.map +0 -1
  504. package/dist/src/utils/processor/types.d.ts +0 -53
  505. package/dist/src/utils/processor/types.d.ts.map +0 -1
  506. package/dist/src/utils/processor/types.js.map +0 -1
  507. package/dist/src/utils/semaphore.d.ts.map +0 -1
  508. package/dist/src/utils/semaphore.js.map +0 -1
  509. package/dist/tsconfig.build.tsbuildinfo +0 -1
  510. /package/{dist/src/utils/VaultManger → build/cli/hooks/useLlmStream}/types.js +0 -0
  511. /package/{dist/src → build}/tools/generate_property/params.js +0 -0
  512. /package/{dist/src → build}/tools/organize_attachments/utils.js +0 -0
  513. /package/{dist/src → build}/tools/vault/metrics.js +0 -0
  514. /package/{dist/src → build}/tools/vault/utils/actions/index_rag.js +0 -0
  515. /package/{dist/src → build}/tools/vault/utils/actions/stats.js +0 -0
  516. /package/{dist/src → build}/tools/vault/utils/constants.js +0 -0
  517. /package/{dist/src → build}/tools/vault/utils/shared.js +0 -0
  518. /package/{dist/src → build}/tools/write_property/params.js +0 -0
  519. /package/{dist/src → build}/utils/DirectoryWalker.js +0 -0
  520. /package/{dist/src → build}/utils/VaultManger/VaultPathError.js +0 -0
  521. /package/{dist/src → build}/utils/constants.js +0 -0
  522. /package/{dist/src → build}/utils/createToolError.js +0 -0
  523. /package/{dist/src → build}/utils/processor/LinkExtractor.js +0 -0
  524. /package/{dist/src → build}/utils/semaphore.js +0 -0
@@ -0,0 +1,286 @@
1
+ import { HELP_COMMAND_MARKER } from "../constants.js";
2
+ import { useCallback } from "react";
3
+ import { debugLogger } from "../../shared/index.js";
4
+ function extractText(result) {
5
+ return result.content
6
+ .filter((c) => c.type === "text" && c.text)
7
+ .map((c) => c.text ?? "")
8
+ .join("\n");
9
+ }
10
+ function extractFilenameFromArgs(args) {
11
+ const quoted = args.match(/[\u201C"]([^\u201D"]+)[\u201D"]/) ??
12
+ args.match(/"([^"]+)"/) ??
13
+ args.match(/\u300C([^\u300D]+)\u300D/);
14
+ if (quoted?.[1]) {
15
+ return quoted[1].trim();
16
+ }
17
+ return args;
18
+ }
19
+ function parseKeyValueArgs(args) {
20
+ const result = {};
21
+ const regex = /(\w+)\s*=\s*(?:"([^"]*)"|'([^']*)'|(\S+))/g;
22
+ for (const match of args.matchAll(regex)) {
23
+ const key = match[1];
24
+ const value = match[2] ?? match[3] ?? match[4];
25
+ if (value === "true")
26
+ result[key] = true;
27
+ else if (value === "false")
28
+ result[key] = false;
29
+ else if (/^\d+$/.test(value))
30
+ result[key] = Number(value);
31
+ else
32
+ result[key] = value;
33
+ }
34
+ return result;
35
+ }
36
+ const COMMAND_MAP = {
37
+ "/search": {
38
+ tool: "vault",
39
+ requiresArgs: true,
40
+ noArgsMessage: "사용법: /search <검색어>",
41
+ buildArgs: (args) => ({
42
+ action: "search",
43
+ keyword: args,
44
+ limit: 10,
45
+ includeContent: true,
46
+ compressionMode: "balanced",
47
+ }),
48
+ },
49
+ "/read": {
50
+ tool: "vault",
51
+ requiresArgs: true,
52
+ noArgsMessage: '사용법: /read <파일명>\n예: /read "브라우저의 교차 출처 리소스 공유(CORS).md"',
53
+ buildArgs: (args) => ({
54
+ action: "read",
55
+ filename: extractFilenameFromArgs(args),
56
+ }),
57
+ },
58
+ "/semantic": {
59
+ tool: "vault",
60
+ requiresArgs: true,
61
+ noArgsMessage: "사용법: /semantic <검색 쿼리>",
62
+ buildArgs: (args) => ({
63
+ action: "search_vault_by_semantic",
64
+ query: args,
65
+ limit: 5,
66
+ }),
67
+ },
68
+ "/stats": {
69
+ tool: "vault",
70
+ buildArgs: () => ({ action: "stats" }),
71
+ },
72
+ "/index": {
73
+ tool: "vault",
74
+ buildArgs: () => ({ action: "index_vault_to_vectordb" }),
75
+ },
76
+ "/context": {
77
+ tool: "vault",
78
+ requiresArgs: true,
79
+ noArgsMessage: "사용법: /context <토픽>",
80
+ buildArgs: (args) => ({
81
+ action: "collect_context",
82
+ topic: args,
83
+ scope: "topic",
84
+ maxDocs: 10,
85
+ memoryMode: "response_only",
86
+ }),
87
+ },
88
+ "/organize": {
89
+ tool: "organize_attachments",
90
+ requiresArgs: true,
91
+ noArgsMessage: "사용법: /organize <검색키워드>",
92
+ buildArgs: (args) => ({ keyword: args }),
93
+ },
94
+ "/genprop": {
95
+ tool: "generate_property",
96
+ requiresArgs: true,
97
+ noArgsMessage: '사용법: /genprop <파일명>\n예: /genprop "my-post.md"',
98
+ buildArgs: (args) => ({
99
+ filename: extractFilenameFromArgs(args),
100
+ }),
101
+ },
102
+ };
103
+ async function handleReadFallback(args, callTool) {
104
+ const filename = extractFilenameFromArgs(args);
105
+ debugLogger.debug(`[Dispatcher] Read failed, trying search fallback for: "${filename}"`);
106
+ try {
107
+ const searchResult = await callTool("vault", {
108
+ action: "search",
109
+ keyword: filename,
110
+ limit: 5,
111
+ includeContent: false,
112
+ compressionMode: "aggressive",
113
+ });
114
+ if (!searchResult.isError) {
115
+ const searchText = extractText(searchResult);
116
+ if (searchText && !searchText.includes("No results")) {
117
+ return {
118
+ type: "tool_result",
119
+ content: `"${filename}" 파일을 찾지 못했습니다.\n\n유사한 문서:\n${searchText}\n\n💡 정확한 파일명으로 다시 시도하세요: /read "파일명.md"`,
120
+ };
121
+ }
122
+ }
123
+ }
124
+ catch { }
125
+ return {
126
+ type: "tool_result",
127
+ content: `"${filename}" 파일을 찾지 못했습니다.\n💡 /search ${filename} 으로 먼저 검색해보세요.`,
128
+ };
129
+ }
130
+ function isToolAvailable(toolName, availableTools) {
131
+ return availableTools.some((t) => t.name === toolName);
132
+ }
133
+ function buildAvailableToolsHint(availableTools) {
134
+ if (availableTools.length === 0)
135
+ return "등록된 도구가 없습니다.";
136
+ return availableTools.map((t) => ` • ${t.name}`).join("\n");
137
+ }
138
+ function tryMatchDynamicTool(command, availableTools) {
139
+ const toolName = command.slice(1);
140
+ return availableTools.find((t) => t.name === toolName);
141
+ }
142
+ function buildDynamicArgs(rawArgs, tool) {
143
+ if (!rawArgs)
144
+ return {};
145
+ const kvArgs = parseKeyValueArgs(rawArgs);
146
+ if (Object.keys(kvArgs).length > 0)
147
+ return kvArgs;
148
+ if (rawArgs.startsWith("{")) {
149
+ try {
150
+ return JSON.parse(rawArgs);
151
+ }
152
+ catch { }
153
+ }
154
+ const extractedIdentifier = extractFilenameFromArgs(rawArgs);
155
+ const isExtracted = extractedIdentifier !== rawArgs &&
156
+ extractedIdentifier.length < rawArgs.length;
157
+ const schema = tool.inputSchema;
158
+ if (schema?.required?.length && schema.properties) {
159
+ for (const paramName of schema.required) {
160
+ const prop = schema.properties[paramName];
161
+ if (prop?.type === "string") {
162
+ const value = isExtracted ? extractedIdentifier : rawArgs;
163
+ debugLogger.debug(`[Dispatcher] Schema-based arg mapping: "${paramName}" ← ${isExtracted ? `extracted "${value}"` : "raw text"}`);
164
+ return { [paramName]: value };
165
+ }
166
+ }
167
+ }
168
+ const commonParamNames = [
169
+ "filename",
170
+ "keyword",
171
+ "query",
172
+ "sourcePath",
173
+ "filePath",
174
+ "name",
175
+ "input",
176
+ "text",
177
+ ];
178
+ if (schema?.properties) {
179
+ for (const name of commonParamNames) {
180
+ if (name in schema.properties) {
181
+ const value = isExtracted ? extractedIdentifier : rawArgs;
182
+ return { [name]: value };
183
+ }
184
+ }
185
+ }
186
+ return { input: isExtracted ? extractedIdentifier : rawArgs };
187
+ }
188
+ export function useDispatcher(availableTools = []) {
189
+ const handleDispatch = useCallback(async (text, callTool) => {
190
+ const trimmed = text.trim();
191
+ const [command, ...argParts] = trimmed.split(/\s+/);
192
+ const args = argParts.join(" ").trim();
193
+ debugLogger.debug(`[Dispatcher] Command: ${command}, Args: "${args}"`);
194
+ switch (command) {
195
+ case "/help":
196
+ return { type: "local_action", content: HELP_COMMAND_MARKER };
197
+ case "/clear":
198
+ return { type: "local_action", content: "__CLEAR_HISTORY__" };
199
+ case "/tools":
200
+ return { type: "local_action", content: "__LIST_TOOLS__" };
201
+ }
202
+ const mapping = COMMAND_MAP[command];
203
+ if (mapping) {
204
+ if (availableTools.length > 0 &&
205
+ !isToolAvailable(mapping.tool, availableTools)) {
206
+ return {
207
+ type: "tool_result",
208
+ content: `도구 "${mapping.tool}"이(가) 현재 연결된 MCP 서버에 등록되어 있지 않습니다.\n\n` +
209
+ `사용 가능한 도구:\n${buildAvailableToolsHint(availableTools)}`,
210
+ };
211
+ }
212
+ if (mapping.requiresArgs && !args) {
213
+ return {
214
+ type: "tool_result",
215
+ content: mapping.noArgsMessage ?? "인자가 필요합니다.",
216
+ };
217
+ }
218
+ const toolArgs = mapping.buildArgs(args);
219
+ return executeToolCall(command, mapping.tool, toolArgs, args, callTool, text);
220
+ }
221
+ const dynamicTool = tryMatchDynamicTool(command, availableTools);
222
+ if (dynamicTool) {
223
+ const toolArgs = buildDynamicArgs(args, dynamicTool);
224
+ debugLogger.debug(`[Dispatcher] Dynamic tool dispatch: ${dynamicTool.name}`, JSON.stringify(toolArgs).slice(0, 200));
225
+ return executeToolCall(command, dynamicTool.name, toolArgs, args, callTool, text);
226
+ }
227
+ const hint = availableTools.length > 0
228
+ ? `\n\n사용 가능한 도구 (/<tool_name> 형태로 직접 호출 가능):\n${buildAvailableToolsHint(availableTools)}`
229
+ : "";
230
+ return {
231
+ type: "unknown_command",
232
+ content: `알 수 없는 커맨드: ${command}\n/help 를 입력하여 사용 가능한 커맨드를 확인하세요.${hint}`,
233
+ };
234
+ }, [availableTools]);
235
+ return { handleDispatch };
236
+ }
237
+ async function executeToolCall(command, toolName, toolArgs, rawArgs, callTool, userIntent) {
238
+ try {
239
+ const result = await callTool(toolName, toolArgs);
240
+ if (result.isError) {
241
+ if (command === "/read") {
242
+ return handleReadFallback(rawArgs, callTool);
243
+ }
244
+ return {
245
+ type: "tool_result",
246
+ content: `실행 실패: ${extractText(result)}`,
247
+ };
248
+ }
249
+ const text = extractText(result);
250
+ if (isLlmInstructionPayload(text)) {
251
+ debugLogger.info(`[Dispatcher] Tool "${toolName}" returned LLM instruction payload — routing to LLM`);
252
+ return {
253
+ type: "llm_required",
254
+ content: text,
255
+ userIntent: userIntent ?? rawArgs,
256
+ };
257
+ }
258
+ return {
259
+ type: "tool_result",
260
+ content: text || "결과가 없습니다.",
261
+ };
262
+ }
263
+ catch (err) {
264
+ const msg = err instanceof Error ? err.message : String(err);
265
+ debugLogger.error(`[Dispatcher] Tool call failed:`, msg);
266
+ return {
267
+ type: "tool_result",
268
+ content: `도구 호출 오류: ${msg}`,
269
+ };
270
+ }
271
+ }
272
+ function isLlmInstructionPayload(text) {
273
+ try {
274
+ const parsed = JSON.parse(text);
275
+ return (parsed !== null &&
276
+ typeof parsed === "object" &&
277
+ "instructions" in parsed &&
278
+ typeof parsed.instructions === "object" &&
279
+ parsed.instructions !== null &&
280
+ ("purpose" in parsed.instructions || "usage" in parsed.instructions));
281
+ }
282
+ catch {
283
+ return false;
284
+ }
285
+ }
286
+ //# sourceMappingURL=useDispatcher.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useDispatcher.js","sourceRoot":"","sources":["../../../src/cli/hooks/useDispatcher.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare const FOCUS_IN = "\u001B[I";
2
+ export declare const FOCUS_OUT = "\u001B[O";
@@ -0,0 +1,3 @@
1
+ export const FOCUS_IN = "\x1b[I";
2
+ export const FOCUS_OUT = "\x1b[O";
3
+ //# sourceMappingURL=useFocus.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useFocus.js","sourceRoot":"","sources":["../../../src/cli/hooks/useFocus.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,QAAQ,GAAG,QAAQ,CAAC;AACjC,MAAM,CAAC,MAAM,SAAS,GAAG,QAAQ,CAAC"}
@@ -0,0 +1,32 @@
1
+ import type { HistoryItem } from "../types.js";
2
+ export declare enum MessageType {
3
+ INFO = "info",
4
+ ERROR = "error",
5
+ WARNING = "warning",
6
+ USER = "user",
7
+ ABOUT = "about",
8
+ HELP = "help",
9
+ STATS = "stats",
10
+ MODEL_STATS = "model_stats",
11
+ TOOL_STATS = "tool_stats",
12
+ QUIT = "quit",
13
+ GEMINI = "gemini",
14
+ COMPRESSION = "compression",
15
+ EXTENSIONS_LIST = "extensions_list",
16
+ TOOLS_LIST = "tools_list",
17
+ SKILLS_LIST = "skills_list",
18
+ AGENTS_LIST = "agents_list",
19
+ MCP_STATUS = "mcp_status",
20
+ CHAT_LIST = "chat_list",
21
+ HINT = "hint"
22
+ }
23
+ type HistoryItemUpdater = (prevItem: HistoryItem) => Partial<Omit<HistoryItem, "id">>;
24
+ export declare function useHistoryManager(initialItems?: HistoryItem[]): {
25
+ history: HistoryItem[];
26
+ addItem: (itemData: Omit<HistoryItem, "id">, baseTimestamp?: number) => number;
27
+ updateItem: (id: number, updates: Partial<Omit<HistoryItem, "id">> | HistoryItemUpdater) => void;
28
+ removeItem: (id: number) => void;
29
+ clearItems: () => void;
30
+ loadHistory: (newHistory: HistoryItem[]) => void;
31
+ };
32
+ export {};
@@ -0,0 +1,78 @@
1
+ import { useCallback, useMemo, useRef, useState } from "react";
2
+ export var MessageType;
3
+ (function (MessageType) {
4
+ MessageType["INFO"] = "info";
5
+ MessageType["ERROR"] = "error";
6
+ MessageType["WARNING"] = "warning";
7
+ MessageType["USER"] = "user";
8
+ MessageType["ABOUT"] = "about";
9
+ MessageType["HELP"] = "help";
10
+ MessageType["STATS"] = "stats";
11
+ MessageType["MODEL_STATS"] = "model_stats";
12
+ MessageType["TOOL_STATS"] = "tool_stats";
13
+ MessageType["QUIT"] = "quit";
14
+ MessageType["GEMINI"] = "gemini";
15
+ MessageType["COMPRESSION"] = "compression";
16
+ MessageType["EXTENSIONS_LIST"] = "extensions_list";
17
+ MessageType["TOOLS_LIST"] = "tools_list";
18
+ MessageType["SKILLS_LIST"] = "skills_list";
19
+ MessageType["AGENTS_LIST"] = "agents_list";
20
+ MessageType["MCP_STATUS"] = "mcp_status";
21
+ MessageType["CHAT_LIST"] = "chat_list";
22
+ MessageType["HINT"] = "hint";
23
+ })(MessageType || (MessageType = {}));
24
+ export function useHistoryManager(initialItems = []) {
25
+ const [history, setHistory] = useState(initialItems);
26
+ const lastIdRef = useRef(initialItems.reduce((max, item) => Math.max(max, item.id), 0));
27
+ const getNextMessageId = useCallback((baseTimestamp) => {
28
+ const nextId = Math.max(baseTimestamp, lastIdRef.current + 1);
29
+ lastIdRef.current = nextId;
30
+ return nextId;
31
+ }, []);
32
+ const clearItems = useCallback(() => {
33
+ setHistory([]);
34
+ lastIdRef.current = 0;
35
+ }, []);
36
+ const addItem = useCallback((itemData, baseTimestamp = Date.now()) => {
37
+ const id = getNextMessageId(baseTimestamp);
38
+ const newItem = { ...itemData, id };
39
+ setHistory((prevHistory) => {
40
+ if (prevHistory.length > 0) {
41
+ const lastItem = prevHistory[prevHistory.length - 1];
42
+ if (lastItem.type === "user" &&
43
+ newItem.type === "user" &&
44
+ lastItem.content === newItem.content) {
45
+ return prevHistory;
46
+ }
47
+ }
48
+ return [...prevHistory, newItem];
49
+ });
50
+ return id; // Return the ID
51
+ }, [getNextMessageId]);
52
+ const updateItem = useCallback((id, updates) => {
53
+ setHistory((prevHistory) => prevHistory.map((item) => {
54
+ if (item.id === id) {
55
+ const newUpdates = typeof updates === "function" ? updates(item) : updates;
56
+ return { ...item, ...newUpdates };
57
+ }
58
+ return item;
59
+ }));
60
+ }, []);
61
+ const removeItem = useCallback((id) => {
62
+ setHistory((prevHistory) => prevHistory.filter((item) => item.id !== id));
63
+ }, []);
64
+ const loadHistory = useCallback((newHistory) => {
65
+ setHistory(newHistory);
66
+ const maxId = newHistory.reduce((max, item) => Math.max(max, item.id), 0);
67
+ lastIdRef.current = Math.max(lastIdRef.current, maxId);
68
+ }, []);
69
+ return useMemo(() => ({
70
+ history,
71
+ addItem,
72
+ updateItem,
73
+ removeItem,
74
+ clearItems,
75
+ loadHistory,
76
+ }), [history, addItem, updateItem, removeItem, clearItems, loadHistory]);
77
+ }
78
+ //# sourceMappingURL=useHistoryManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useHistoryManager.js","sourceRoot":"","sources":["../../../src/cli/hooks/useHistoryManager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ interface Logger {
2
+ getPreviousUserMessages(): Promise<string[]>;
3
+ }
4
+ export interface UseInputHistoryStoreReturn {
5
+ inputHistory: string[];
6
+ addInput: (input: string) => void;
7
+ initializeFromLogger: (logger: Logger | null) => Promise<void>;
8
+ }
9
+ interface UseInputHistoryProps {
10
+ userMessages: readonly string[];
11
+ onSubmit: (value: string) => void;
12
+ isActive: boolean;
13
+ currentQuery: string;
14
+ currentCursorOffset: number;
15
+ onChange: (value: string, cursorPosition?: "start" | "end" | number) => void;
16
+ }
17
+ export interface UseInputHistoryReturn {
18
+ handleSubmit: (value: string) => void;
19
+ navigateUp: () => boolean;
20
+ navigateDown: () => boolean;
21
+ }
22
+ export declare function useInputHistory({ userMessages, onSubmit, isActive, currentQuery, currentCursorOffset, onChange, }: UseInputHistoryProps): UseInputHistoryReturn;
23
+ export declare function useInputHistoryStore(): UseInputHistoryStoreReturn;
24
+ export {};
@@ -0,0 +1,159 @@
1
+ import { cpLen } from "../utils/textUtil.js";
2
+ import { useCallback, useRef, useState } from "react";
3
+ import { debugLogger } from "../../shared/index.js";
4
+ export function useInputHistory({ userMessages, onSubmit, isActive, currentQuery, currentCursorOffset, onChange, }) {
5
+ const [historyIndex, setHistoryIndex] = useState(-1);
6
+ // previousHistoryIndexRef tracks the index we occupied *immediately before* the current historyIndex.
7
+ // This allows us to detect when we are "returning" to a level we just left.
8
+ const previousHistoryIndexRef = useRef(undefined);
9
+ // Cache stores text and cursor offset for each history index level.
10
+ // Level -1 is the current unsubmitted prompt.
11
+ const historyCacheRef = useRef({});
12
+ const resetHistoryNav = useCallback(() => {
13
+ setHistoryIndex(-1);
14
+ previousHistoryIndexRef.current = undefined;
15
+ historyCacheRef.current = {};
16
+ }, []);
17
+ const handleSubmit = useCallback((value) => {
18
+ const trimmedValue = value.trim();
19
+ if (trimmedValue) {
20
+ onSubmit(trimmedValue); // Parent handles clearing the query
21
+ }
22
+ resetHistoryNav();
23
+ }, [onSubmit, resetHistoryNav]);
24
+ const navigateTo = useCallback((nextIndex, defaultCursor) => {
25
+ const prevIndexBeforeMove = historyIndex;
26
+ // 1. Save current state to cache before moving
27
+ historyCacheRef.current[prevIndexBeforeMove] = {
28
+ text: currentQuery,
29
+ offset: currentCursorOffset,
30
+ };
31
+ // 2. Update index
32
+ setHistoryIndex(nextIndex);
33
+ // 3. Restore next state
34
+ const saved = historyCacheRef.current[nextIndex];
35
+ // We robustly restore the cursor position IF:
36
+ // 1. We are returning to the compose prompt (-1)
37
+ // 2. OR we are returning to the level we occupied *just before* the current one.
38
+ // AND in both cases, the cursor was not at the very first or last character.
39
+ const isReturningToPrevious = nextIndex === -1 || nextIndex === previousHistoryIndexRef.current;
40
+ if (isReturningToPrevious &&
41
+ saved &&
42
+ saved.offset > 0 &&
43
+ saved.offset < cpLen(saved.text)) {
44
+ onChange(saved.text, saved.offset);
45
+ }
46
+ else if (nextIndex === -1) {
47
+ onChange(saved ? saved.text : "", defaultCursor);
48
+ }
49
+ else {
50
+ // For regular history browsing, use default cursor position.
51
+ if (saved) {
52
+ onChange(saved.text, defaultCursor);
53
+ }
54
+ else {
55
+ const newValue = userMessages[userMessages.length - 1 - nextIndex];
56
+ onChange(newValue, defaultCursor);
57
+ }
58
+ }
59
+ // Record the level we just came from for the next navigation
60
+ previousHistoryIndexRef.current = prevIndexBeforeMove;
61
+ }, [historyIndex, currentQuery, currentCursorOffset, userMessages, onChange]);
62
+ const navigateUp = useCallback(() => {
63
+ if (!isActive)
64
+ return false;
65
+ if (userMessages.length === 0)
66
+ return false;
67
+ if (historyIndex < userMessages.length - 1) {
68
+ navigateTo(historyIndex + 1, "start");
69
+ return true;
70
+ }
71
+ return false;
72
+ }, [historyIndex, userMessages, isActive, navigateTo]);
73
+ const navigateDown = useCallback(() => {
74
+ if (!isActive)
75
+ return false;
76
+ if (historyIndex === -1)
77
+ return false; // Not currently navigating history
78
+ navigateTo(historyIndex - 1, "end");
79
+ return true;
80
+ }, [historyIndex, isActive, navigateTo]);
81
+ return {
82
+ handleSubmit,
83
+ navigateUp,
84
+ navigateDown,
85
+ };
86
+ }
87
+ export function useInputHistoryStore() {
88
+ const [inputHistory, setInputHistory] = useState([]);
89
+ const [_pastSessionMessages, setPastSessionMessages] = useState([]);
90
+ const [_currentSessionMessages, setCurrentSessionMessages] = useState([]);
91
+ const [isInitialized, setIsInitialized] = useState(false);
92
+ /**
93
+ * Recalculate the complete input history from past and current sessions.
94
+ * Applies the same deduplication logic as the previous implementation.
95
+ */
96
+ const recalculateHistory = useCallback((currentSession, pastSession) => {
97
+ // Combine current session (newest first) + past session (newest first)
98
+ const combinedMessages = [...currentSession, ...pastSession];
99
+ // Deduplicate consecutive identical messages (same algorithm as before)
100
+ const deduplicatedMessages = [];
101
+ if (combinedMessages.length > 0) {
102
+ deduplicatedMessages.push(combinedMessages[0]); // Add the newest one unconditionally
103
+ for (let i = 1; i < combinedMessages.length; i++) {
104
+ if (combinedMessages[i] !== combinedMessages[i - 1]) {
105
+ deduplicatedMessages.push(combinedMessages[i]);
106
+ }
107
+ }
108
+ }
109
+ // Reverse to oldest first for useInputHistory
110
+ setInputHistory(deduplicatedMessages.reverse());
111
+ }, []);
112
+ /**
113
+ * Initialize input history from logger with past session data.
114
+ * Executed only once at app startup.
115
+ */
116
+ const initializeFromLogger = useCallback(async (logger) => {
117
+ if (isInitialized || !logger)
118
+ return;
119
+ try {
120
+ const pastMessages = (await logger.getPreviousUserMessages()) || [];
121
+ setPastSessionMessages(pastMessages); // Store as newest first
122
+ recalculateHistory([], pastMessages);
123
+ setIsInitialized(true);
124
+ }
125
+ catch (error) {
126
+ // Start with empty history even if logger initialization fails
127
+ debugLogger.warn("Failed to initialize input history from logger:", error);
128
+ setPastSessionMessages([]);
129
+ recalculateHistory([], []);
130
+ setIsInitialized(true);
131
+ }
132
+ }, [isInitialized, recalculateHistory]);
133
+ /**
134
+ * Add new input to history.
135
+ * Recalculates the entire history with deduplication.
136
+ */
137
+ const addInput = useCallback((input) => {
138
+ const trimmedInput = input.trim();
139
+ if (!trimmedInput)
140
+ return; // Filter empty/whitespace-only inputs
141
+ setCurrentSessionMessages((prevCurrent) => {
142
+ const newCurrentSession = [...prevCurrent, trimmedInput];
143
+ setPastSessionMessages((prevPast) => {
144
+ recalculateHistory(newCurrentSession
145
+ .slice()
146
+ .reverse(), // Convert to newest first
147
+ prevPast);
148
+ return prevPast; // No change to past messages
149
+ });
150
+ return newCurrentSession;
151
+ });
152
+ }, [recalculateHistory]);
153
+ return {
154
+ inputHistory,
155
+ addInput,
156
+ initializeFromLogger,
157
+ };
158
+ }
159
+ //# sourceMappingURL=useInputHistory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useInputHistory.js","sourceRoot":"","sources":["../../../src/cli/hooks/useInputHistory.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { type KeyMatchers } from "../key/keyMatchers.js";
7
+ import type React from "react";
8
+ export declare const KeyMatchersContext: React.Context<KeyMatchers>;
9
+ export declare const KeyMatchersProvider: ({ children, value, }: {
10
+ children: React.ReactNode;
11
+ value: KeyMatchers;
12
+ }) => React.JSX.Element;
13
+ /**
14
+ * Hook to retrieve the currently active key matchers.
15
+ * Defaults to defaultKeyMatchers if no provider is present, allowing tests to run without explicit wrappers.
16
+ */
17
+ export declare function useKeyMatchers(): KeyMatchers;