centaurus-cli 3.0.1 → 3.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (552) hide show
  1. package/dist/ai/types.js +0 -1
  2. package/dist/ai/types.js.map +1 -1
  3. package/dist/cli-adapter.js +5047 -5158
  4. package/dist/cli-adapter.js.map +1 -1
  5. package/dist/commands/CommandParser.js +372 -315
  6. package/dist/commands/CommandParser.js.map +1 -1
  7. package/dist/config/build-config.js +11 -42
  8. package/dist/config/build-config.js.map +1 -1
  9. package/dist/config/defaultConfig.js +94 -82
  10. package/dist/config/defaultConfig.js.map +1 -1
  11. package/dist/config/manager.js +144 -160
  12. package/dist/config/manager.js.map +1 -1
  13. package/dist/config/mcp-config-manager.js +411 -364
  14. package/dist/config/mcp-config-manager.js.map +1 -1
  15. package/dist/config/models.js +118 -185
  16. package/dist/config/models.js.map +1 -1
  17. package/dist/config/slash-commands.js +186 -184
  18. package/dist/config/slash-commands.js.map +1 -1
  19. package/dist/config/types.js +33 -26
  20. package/dist/config/types.js.map +1 -1
  21. package/dist/context/command-detector.js +63 -67
  22. package/dist/context/command-detector.js.map +1 -1
  23. package/dist/context/context-manager.js +533 -518
  24. package/dist/context/context-manager.js.map +1 -1
  25. package/dist/context/handlers/docker-handler.js +518 -576
  26. package/dist/context/handlers/docker-handler.js.map +1 -1
  27. package/dist/context/handlers/ssh-handler.js +1050 -1109
  28. package/dist/context/handlers/ssh-handler.js.map +1 -1
  29. package/dist/context/handlers/wsl-handler.js +558 -630
  30. package/dist/context/handlers/wsl-handler.js.map +1 -1
  31. package/dist/context/index.js +42 -6
  32. package/dist/context/index.js.map +1 -1
  33. package/dist/context/subshell-handler.js +0 -4
  34. package/dist/context/subshell-handler.js.map +1 -1
  35. package/dist/context/types.js +20 -31
  36. package/dist/context/types.js.map +1 -1
  37. package/dist/hooks/useConnectivity.js +13 -10
  38. package/dist/hooks/useConnectivity.js.map +1 -1
  39. package/dist/hooks/useTerminalDimensions.js +67 -79
  40. package/dist/hooks/useTerminalDimensions.js.map +1 -1
  41. package/dist/index.js +228 -251
  42. package/dist/index.js.map +1 -1
  43. package/dist/mcp/mcp-command-handler.js +297 -260
  44. package/dist/mcp/mcp-command-handler.js.map +1 -1
  45. package/dist/mcp/mcp-server-manager.js +139 -155
  46. package/dist/mcp/mcp-server-manager.js.map +1 -1
  47. package/dist/mcp/mcp-tool-wrapper.js +74 -94
  48. package/dist/mcp/mcp-tool-wrapper.js.map +1 -1
  49. package/dist/services/ai-autocomplete-agent.js +169 -181
  50. package/dist/services/ai-autocomplete-agent.js.map +1 -1
  51. package/dist/services/ai-context-injector.js +180 -93
  52. package/dist/services/ai-context-injector.js.map +1 -1
  53. package/dist/services/ai-service-client.js +513 -456
  54. package/dist/services/ai-service-client.js.map +1 -1
  55. package/dist/services/api-client.js +443 -441
  56. package/dist/services/api-client.js.map +1 -1
  57. package/dist/services/auth-handler.js +162 -198
  58. package/dist/services/auth-handler.js.map +1 -1
  59. package/dist/services/background-task-manager.js +258 -282
  60. package/dist/services/background-task-manager.js.map +1 -1
  61. package/dist/services/checkpoint-manager.js +1526 -1512
  62. package/dist/services/checkpoint-manager.js.map +1 -1
  63. package/dist/services/clipboard-service.js +151 -200
  64. package/dist/services/clipboard-service.js.map +1 -1
  65. package/dist/services/connectivity-manager.js +63 -65
  66. package/dist/services/connectivity-manager.js.map +1 -1
  67. package/dist/services/conversation-manager.js +118 -121
  68. package/dist/services/conversation-manager.js.map +1 -1
  69. package/dist/services/environment-context-injector.js +160 -187
  70. package/dist/services/environment-context-injector.js.map +1 -1
  71. package/dist/services/fast-context-agent.js +203 -243
  72. package/dist/services/fast-context-agent.js.map +1 -1
  73. package/dist/services/input-detection-agent.js +190 -202
  74. package/dist/services/input-detection-agent.js.map +1 -1
  75. package/dist/services/input-requirement-detector.js +155 -189
  76. package/dist/services/input-requirement-detector.js.map +1 -1
  77. package/dist/services/local-chat-storage.js +342 -365
  78. package/dist/services/local-chat-storage.js.map +1 -1
  79. package/dist/services/monitored-shell-manager.js +225 -233
  80. package/dist/services/monitored-shell-manager.js.map +1 -1
  81. package/dist/services/ollama-service.js +293 -310
  82. package/dist/services/ollama-service.js.map +1 -1
  83. package/dist/services/rules-storage.js +142 -0
  84. package/dist/services/rules-storage.js.map +1 -0
  85. package/dist/services/session-quota-manager.js +219 -235
  86. package/dist/services/session-quota-manager.js.map +1 -1
  87. package/dist/services/shell-input-agent.js +299 -334
  88. package/dist/services/shell-input-agent.js.map +1 -1
  89. package/dist/services/sub-agent-manager.js +459 -501
  90. package/dist/services/sub-agent-manager.js.map +1 -1
  91. package/dist/services/warpify-detector.js +133 -183
  92. package/dist/services/warpify-detector.js.map +1 -1
  93. package/dist/services/workflow-storage.js +202 -217
  94. package/dist/services/workflow-storage.js.map +1 -1
  95. package/dist/test-ssh-handler.js +148 -193
  96. package/dist/test-ssh-handler.js.map +1 -1
  97. package/dist/tools/add-mcp.js +161 -0
  98. package/dist/tools/add-mcp.js.map +1 -0
  99. package/dist/tools/background-command.js +240 -273
  100. package/dist/tools/background-command.js.map +1 -1
  101. package/dist/tools/command.js +447 -440
  102. package/dist/tools/command.js.map +1 -1
  103. package/dist/tools/create-image.js +172 -202
  104. package/dist/tools/create-image.js.map +1 -1
  105. package/dist/tools/enter-remote-session.js +169 -215
  106. package/dist/tools/enter-remote-session.js.map +1 -1
  107. package/dist/tools/fast-context.js +60 -67
  108. package/dist/tools/fast-context.js.map +1 -1
  109. package/dist/tools/file-ops.js +601 -572
  110. package/dist/tools/file-ops.js.map +1 -1
  111. package/dist/tools/find-files.js +262 -303
  112. package/dist/tools/find-files.js.map +1 -1
  113. package/dist/tools/get-diff.js +423 -406
  114. package/dist/tools/get-diff.js.map +1 -1
  115. package/dist/tools/grep-search.js +966 -948
  116. package/dist/tools/grep-search.js.map +1 -1
  117. package/dist/tools/inspect-symbol.js +308 -323
  118. package/dist/tools/inspect-symbol.js.map +1 -1
  119. package/dist/tools/plan-mode.js +459 -503
  120. package/dist/tools/plan-mode.js.map +1 -1
  121. package/dist/tools/read-binary-file.js +160 -190
  122. package/dist/tools/read-binary-file.js.map +1 -1
  123. package/dist/tools/registry.js +100 -84
  124. package/dist/tools/registry.js.map +1 -1
  125. package/dist/tools/reproduce_issue.js +170 -151
  126. package/dist/tools/reproduce_issue.js.map +1 -1
  127. package/dist/tools/sub-agent.js +223 -228
  128. package/dist/tools/sub-agent.js.map +1 -1
  129. package/dist/tools/task-complete.js +28 -27
  130. package/dist/tools/task-complete.js.map +1 -1
  131. package/dist/tools/types.js +0 -1
  132. package/dist/tools/types.js.map +1 -1
  133. package/dist/tools/validation.js +96 -118
  134. package/dist/tools/validation.js.map +1 -1
  135. package/dist/tools/web-search.js +194 -194
  136. package/dist/tools/web-search.js.map +1 -1
  137. package/dist/tools/workflow-tool.js +77 -82
  138. package/dist/tools/workflow-tool.js.map +1 -1
  139. package/dist/types/index.js +0 -1
  140. package/dist/types/index.js.map +1 -1
  141. package/dist/types/rule.js +1 -0
  142. package/dist/types/rule.js.map +1 -0
  143. package/dist/types/workflow.js +0 -7
  144. package/dist/types/workflow.js.map +1 -1
  145. package/dist/ui/components/AgentTimer.js +24 -25
  146. package/dist/ui/components/AgentTimer.js.map +1 -1
  147. package/dist/ui/components/App.js +3266 -3263
  148. package/dist/ui/components/App.js.map +1 -1
  149. package/dist/ui/components/AuthScreen.js +22 -34
  150. package/dist/ui/components/AuthScreen.js.map +1 -1
  151. package/dist/ui/components/AuthWelcomeScreen.js +30 -24
  152. package/dist/ui/components/AuthWelcomeScreen.js.map +1 -1
  153. package/dist/ui/components/Breadcrumbs.js +53 -82
  154. package/dist/ui/components/Breadcrumbs.js.map +1 -1
  155. package/dist/ui/components/CircularSelectInput.js +59 -67
  156. package/dist/ui/components/CircularSelectInput.js.map +1 -1
  157. package/dist/ui/components/ClipboardFileAutocomplete.js +78 -39
  158. package/dist/ui/components/ClipboardFileAutocomplete.js.map +1 -1
  159. package/dist/ui/components/CodeBlock.js +24 -42
  160. package/dist/ui/components/CodeBlock.js.map +1 -1
  161. package/dist/ui/components/ConfigViewer.js +18 -25
  162. package/dist/ui/components/ConfigViewer.js.map +1 -1
  163. package/dist/ui/components/ConfirmPrompt.js +49 -71
  164. package/dist/ui/components/ConfirmPrompt.js.map +1 -1
  165. package/dist/ui/components/ConnectionStatusMessage.js +32 -83
  166. package/dist/ui/components/ConnectionStatusMessage.js.map +1 -1
  167. package/dist/ui/components/ContextWindowIndicator.js +34 -49
  168. package/dist/ui/components/ContextWindowIndicator.js.map +1 -1
  169. package/dist/ui/components/DetailedPlanReviewScreen.js +104 -106
  170. package/dist/ui/components/DetailedPlanReviewScreen.js.map +1 -1
  171. package/dist/ui/components/DiffViewer.js +68 -121
  172. package/dist/ui/components/DiffViewer.js.map +1 -1
  173. package/dist/ui/components/ErrorBoundary.js +40 -48
  174. package/dist/ui/components/ErrorBoundary.js.map +1 -1
  175. package/dist/ui/components/FileCreationPreview.js +29 -60
  176. package/dist/ui/components/FileCreationPreview.js.map +1 -1
  177. package/dist/ui/components/FileOperation.js +34 -29
  178. package/dist/ui/components/FileOperation.js.map +1 -1
  179. package/dist/ui/components/FileTagAutocomplete.js +55 -25
  180. package/dist/ui/components/FileTagAutocomplete.js.map +1 -1
  181. package/dist/ui/components/FontRecommendation.js.map +1 -1
  182. package/dist/ui/components/GitDiffBreadcrumb.js +29 -0
  183. package/dist/ui/components/GitDiffBreadcrumb.js.map +1 -0
  184. package/dist/ui/components/InputBox.js +1620 -2150
  185. package/dist/ui/components/InputBox.js.map +1 -1
  186. package/dist/ui/components/InteractiveShell.js +234 -352
  187. package/dist/ui/components/InteractiveShell.js.map +1 -1
  188. package/dist/ui/components/KeyboardHelp.js +34 -35
  189. package/dist/ui/components/KeyboardHelp.js.map +1 -1
  190. package/dist/ui/components/LoadingIndicator.js +22 -25
  191. package/dist/ui/components/LoadingIndicator.js.map +1 -1
  192. package/dist/ui/components/MCPAddScreen.js +40 -51
  193. package/dist/ui/components/MCPAddScreen.js.map +1 -1
  194. package/dist/ui/components/MCPListScreen.js +40 -48
  195. package/dist/ui/components/MCPListScreen.js.map +1 -1
  196. package/dist/ui/components/MCPServerListScreen.js +49 -56
  197. package/dist/ui/components/MCPServerListScreen.js.map +1 -1
  198. package/dist/ui/components/MarkdownRenderer.js +69 -96
  199. package/dist/ui/components/MarkdownRenderer.js.map +1 -1
  200. package/dist/ui/components/MessageBox.js +66 -48
  201. package/dist/ui/components/MessageBox.js.map +1 -1
  202. package/dist/ui/components/MessageDisplay.js +150 -142
  203. package/dist/ui/components/MessageDisplay.js.map +1 -1
  204. package/dist/ui/components/MonitorModeAIPanel.js +46 -65
  205. package/dist/ui/components/MonitorModeAIPanel.js.map +1 -1
  206. package/dist/ui/components/MultiLineInput.js +243 -277
  207. package/dist/ui/components/MultiLineInput.js.map +1 -1
  208. package/dist/ui/components/PasswordPrompt.js +37 -18
  209. package/dist/ui/components/PasswordPrompt.js.map +1 -1
  210. package/dist/ui/components/PlanAcceptedMessage.js +27 -38
  211. package/dist/ui/components/PlanAcceptedMessage.js.map +1 -1
  212. package/dist/ui/components/PlanReviewScreen.js +46 -50
  213. package/dist/ui/components/PlanReviewScreen.js.map +1 -1
  214. package/dist/ui/components/RulesEditorScreen.js +81 -0
  215. package/dist/ui/components/RulesEditorScreen.js.map +1 -0
  216. package/dist/ui/components/SelectPrompt.js +19 -8
  217. package/dist/ui/components/SelectPrompt.js.map +1 -1
  218. package/dist/ui/components/ShimmerText.js +44 -0
  219. package/dist/ui/components/ShimmerText.js.map +1 -0
  220. package/dist/ui/components/SlashCommandAutocomplete.js +49 -22
  221. package/dist/ui/components/SlashCommandAutocomplete.js.map +1 -1
  222. package/dist/ui/components/StatusBar.js +56 -87
  223. package/dist/ui/components/StatusBar.js.map +1 -1
  224. package/dist/ui/components/StreamingMessageDisplay.js +116 -99
  225. package/dist/ui/components/StreamingMessageDisplay.js.map +1 -1
  226. package/dist/ui/components/TaskCompletedMessage.js +28 -23
  227. package/dist/ui/components/TaskCompletedMessage.js.map +1 -1
  228. package/dist/ui/components/TaskProgressIndicator.js +44 -70
  229. package/dist/ui/components/TaskProgressIndicator.js.map +1 -1
  230. package/dist/ui/components/ThinkingDisplay.js +44 -41
  231. package/dist/ui/components/ThinkingDisplay.js.map +1 -1
  232. package/dist/ui/components/ToolExecutionMessage.js +772 -1326
  233. package/dist/ui/components/ToolExecutionMessage.js.map +1 -1
  234. package/dist/ui/components/ToolExecutionStatus.js +53 -84
  235. package/dist/ui/components/ToolExecutionStatus.js.map +1 -1
  236. package/dist/ui/components/ToolResult.js +22 -15
  237. package/dist/ui/components/ToolResult.js.map +1 -1
  238. package/dist/ui/components/VersionUpdatePrompt.js +88 -120
  239. package/dist/ui/components/VersionUpdatePrompt.js.map +1 -1
  240. package/dist/ui/components/WelcomeBanner.js +176 -26
  241. package/dist/ui/components/WelcomeBanner.js.map +1 -1
  242. package/dist/ui/components/WorkflowCreatorScreen.js +94 -161
  243. package/dist/ui/components/WorkflowCreatorScreen.js.map +1 -1
  244. package/dist/utils/ansi-encoder.js +30 -61
  245. package/dist/utils/ansi-encoder.js.map +1 -1
  246. package/dist/utils/chat-formatter.js +327 -305
  247. package/dist/utils/chat-formatter.js.map +1 -1
  248. package/dist/utils/command-history.js +152 -174
  249. package/dist/utils/command-history.js.map +1 -1
  250. package/dist/utils/context-sanitizer.js +49 -112
  251. package/dist/utils/context-sanitizer.js.map +1 -1
  252. package/dist/utils/conversation-logger.js +292 -324
  253. package/dist/utils/conversation-logger.js.map +1 -1
  254. package/dist/utils/custom-commands-manager.js +126 -131
  255. package/dist/utils/custom-commands-manager.js.map +1 -1
  256. package/dist/utils/editor-utils.js +732 -837
  257. package/dist/utils/editor-utils.js.map +1 -1
  258. package/dist/utils/file.js +174 -213
  259. package/dist/utils/file.js.map +1 -1
  260. package/dist/utils/git-stats.js +169 -0
  261. package/dist/utils/git-stats.js.map +1 -0
  262. package/dist/utils/input-classifier.js +960 -482
  263. package/dist/utils/input-classifier.js.map +1 -1
  264. package/dist/utils/logger.js +48 -73
  265. package/dist/utils/logger.js.map +1 -1
  266. package/dist/utils/markdown-parser.js +277 -310
  267. package/dist/utils/markdown-parser.js.map +1 -1
  268. package/dist/utils/rule-reference-resolver.js +54 -0
  269. package/dist/utils/rule-reference-resolver.js.map +1 -0
  270. package/dist/utils/shell.js +144 -156
  271. package/dist/utils/shell.js.map +1 -1
  272. package/dist/utils/state.js +23 -22
  273. package/dist/utils/state.js.map +1 -1
  274. package/dist/utils/syntax-checker.js +279 -327
  275. package/dist/utils/syntax-checker.js.map +1 -1
  276. package/dist/utils/terminal-output.js +199 -302
  277. package/dist/utils/terminal-output.js.map +1 -1
  278. package/dist/utils/text-clipboard.js +47 -70
  279. package/dist/utils/text-clipboard.js.map +1 -1
  280. package/dist/utils/unicode-sanitizer.js +134 -197
  281. package/dist/utils/unicode-sanitizer.js.map +1 -1
  282. package/dist/utils/version-checker.js +46 -56
  283. package/dist/utils/version-checker.js.map +1 -1
  284. package/package.json +6 -4
  285. package/dist/ai/types.d.ts +0 -20
  286. package/dist/ai/types.d.ts.map +0 -1
  287. package/dist/cli-adapter.d.ts +0 -514
  288. package/dist/cli-adapter.d.ts.map +0 -1
  289. package/dist/commands/CommandParser.d.ts +0 -27
  290. package/dist/commands/CommandParser.d.ts.map +0 -1
  291. package/dist/config/build-config.d.ts +0 -42
  292. package/dist/config/build-config.d.ts.map +0 -1
  293. package/dist/config/defaultConfig.d.ts +0 -79
  294. package/dist/config/defaultConfig.d.ts.map +0 -1
  295. package/dist/config/manager.d.ts +0 -62
  296. package/dist/config/manager.d.ts.map +0 -1
  297. package/dist/config/mcp-config-manager.d.ts +0 -79
  298. package/dist/config/mcp-config-manager.d.ts.map +0 -1
  299. package/dist/config/models.d.ts +0 -83
  300. package/dist/config/models.d.ts.map +0 -1
  301. package/dist/config/slash-commands.d.ts +0 -23
  302. package/dist/config/slash-commands.d.ts.map +0 -1
  303. package/dist/config/types.d.ts +0 -35
  304. package/dist/config/types.d.ts.map +0 -1
  305. package/dist/context/command-detector.d.ts +0 -50
  306. package/dist/context/command-detector.d.ts.map +0 -1
  307. package/dist/context/context-manager.d.ts +0 -157
  308. package/dist/context/context-manager.d.ts.map +0 -1
  309. package/dist/context/handlers/docker-handler.d.ts +0 -130
  310. package/dist/context/handlers/docker-handler.d.ts.map +0 -1
  311. package/dist/context/handlers/ssh-handler.d.ts +0 -201
  312. package/dist/context/handlers/ssh-handler.d.ts.map +0 -1
  313. package/dist/context/handlers/wsl-handler.d.ts +0 -146
  314. package/dist/context/handlers/wsl-handler.d.ts.map +0 -1
  315. package/dist/context/index.d.ts +0 -8
  316. package/dist/context/index.d.ts.map +0 -1
  317. package/dist/context/subshell-handler.d.ts +0 -165
  318. package/dist/context/subshell-handler.d.ts.map +0 -1
  319. package/dist/context/types.d.ts +0 -70
  320. package/dist/context/types.d.ts.map +0 -1
  321. package/dist/hooks/useConnectivity.d.ts +0 -2
  322. package/dist/hooks/useConnectivity.d.ts.map +0 -1
  323. package/dist/hooks/useTerminalDimensions.d.ts +0 -41
  324. package/dist/hooks/useTerminalDimensions.d.ts.map +0 -1
  325. package/dist/index.d.ts +0 -9
  326. package/dist/index.d.ts.map +0 -1
  327. package/dist/mcp/mcp-command-handler.d.ts +0 -47
  328. package/dist/mcp/mcp-command-handler.d.ts.map +0 -1
  329. package/dist/mcp/mcp-server-manager.d.ts +0 -30
  330. package/dist/mcp/mcp-server-manager.d.ts.map +0 -1
  331. package/dist/mcp/mcp-tool-wrapper.d.ts +0 -12
  332. package/dist/mcp/mcp-tool-wrapper.d.ts.map +0 -1
  333. package/dist/services/ai-autocomplete-agent.d.ts +0 -39
  334. package/dist/services/ai-autocomplete-agent.d.ts.map +0 -1
  335. package/dist/services/ai-context-injector.d.ts +0 -41
  336. package/dist/services/ai-context-injector.d.ts.map +0 -1
  337. package/dist/services/ai-service-client.d.ts +0 -128
  338. package/dist/services/ai-service-client.d.ts.map +0 -1
  339. package/dist/services/api-client.d.ts +0 -353
  340. package/dist/services/api-client.d.ts.map +0 -1
  341. package/dist/services/auth-handler.d.ts +0 -30
  342. package/dist/services/auth-handler.d.ts.map +0 -1
  343. package/dist/services/background-task-manager.d.ts +0 -114
  344. package/dist/services/background-task-manager.d.ts.map +0 -1
  345. package/dist/services/checkpoint-manager.d.ts +0 -204
  346. package/dist/services/checkpoint-manager.d.ts.map +0 -1
  347. package/dist/services/clipboard-service.d.ts +0 -37
  348. package/dist/services/clipboard-service.d.ts.map +0 -1
  349. package/dist/services/connectivity-manager.d.ts +0 -18
  350. package/dist/services/connectivity-manager.d.ts.map +0 -1
  351. package/dist/services/conversation-manager.d.ts +0 -73
  352. package/dist/services/conversation-manager.d.ts.map +0 -1
  353. package/dist/services/environment-context-injector.d.ts +0 -69
  354. package/dist/services/environment-context-injector.d.ts.map +0 -1
  355. package/dist/services/fast-context-agent.d.ts +0 -12
  356. package/dist/services/fast-context-agent.d.ts.map +0 -1
  357. package/dist/services/input-detection-agent.d.ts +0 -40
  358. package/dist/services/input-detection-agent.d.ts.map +0 -1
  359. package/dist/services/input-requirement-detector.d.ts +0 -28
  360. package/dist/services/input-requirement-detector.d.ts.map +0 -1
  361. package/dist/services/local-chat-storage.d.ts +0 -182
  362. package/dist/services/local-chat-storage.d.ts.map +0 -1
  363. package/dist/services/monitored-shell-manager.d.ts +0 -120
  364. package/dist/services/monitored-shell-manager.d.ts.map +0 -1
  365. package/dist/services/ollama-service.d.ts +0 -197
  366. package/dist/services/ollama-service.d.ts.map +0 -1
  367. package/dist/services/session-quota-manager.d.ts +0 -101
  368. package/dist/services/session-quota-manager.d.ts.map +0 -1
  369. package/dist/services/shell-input-agent.d.ts +0 -89
  370. package/dist/services/shell-input-agent.d.ts.map +0 -1
  371. package/dist/services/sub-agent-manager.d.ts +0 -140
  372. package/dist/services/sub-agent-manager.d.ts.map +0 -1
  373. package/dist/services/warpify-detector.d.ts +0 -43
  374. package/dist/services/warpify-detector.d.ts.map +0 -1
  375. package/dist/services/workflow-storage.d.ts +0 -72
  376. package/dist/services/workflow-storage.d.ts.map +0 -1
  377. package/dist/test-ssh-handler.d.ts +0 -8
  378. package/dist/test-ssh-handler.d.ts.map +0 -1
  379. package/dist/tools/background-command.d.ts +0 -11
  380. package/dist/tools/background-command.d.ts.map +0 -1
  381. package/dist/tools/command.d.ts +0 -3
  382. package/dist/tools/command.d.ts.map +0 -1
  383. package/dist/tools/create-image.d.ts +0 -10
  384. package/dist/tools/create-image.d.ts.map +0 -1
  385. package/dist/tools/enter-remote-session.d.ts +0 -48
  386. package/dist/tools/enter-remote-session.d.ts.map +0 -1
  387. package/dist/tools/fast-context.d.ts +0 -3
  388. package/dist/tools/fast-context.d.ts.map +0 -1
  389. package/dist/tools/file-ops.d.ts +0 -7
  390. package/dist/tools/file-ops.d.ts.map +0 -1
  391. package/dist/tools/find-files.d.ts +0 -49
  392. package/dist/tools/find-files.d.ts.map +0 -1
  393. package/dist/tools/get-diff.d.ts +0 -14
  394. package/dist/tools/get-diff.d.ts.map +0 -1
  395. package/dist/tools/grep-search.d.ts +0 -155
  396. package/dist/tools/grep-search.d.ts.map +0 -1
  397. package/dist/tools/inspect-symbol.d.ts +0 -32
  398. package/dist/tools/inspect-symbol.d.ts.map +0 -1
  399. package/dist/tools/plan-mode.d.ts +0 -140
  400. package/dist/tools/plan-mode.d.ts.map +0 -1
  401. package/dist/tools/read-binary-file.d.ts +0 -10
  402. package/dist/tools/read-binary-file.d.ts.map +0 -1
  403. package/dist/tools/registry.d.ts +0 -31
  404. package/dist/tools/registry.d.ts.map +0 -1
  405. package/dist/tools/reproduce_issue.d.ts +0 -2
  406. package/dist/tools/reproduce_issue.d.ts.map +0 -1
  407. package/dist/tools/sub-agent.d.ts +0 -9
  408. package/dist/tools/sub-agent.d.ts.map +0 -1
  409. package/dist/tools/task-complete.d.ts +0 -3
  410. package/dist/tools/task-complete.d.ts.map +0 -1
  411. package/dist/tools/types.d.ts +0 -40
  412. package/dist/tools/types.d.ts.map +0 -1
  413. package/dist/tools/validation.d.ts +0 -47
  414. package/dist/tools/validation.d.ts.map +0 -1
  415. package/dist/tools/web-search.d.ts +0 -24
  416. package/dist/tools/web-search.d.ts.map +0 -1
  417. package/dist/tools/workflow-tool.d.ts +0 -11
  418. package/dist/tools/workflow-tool.d.ts.map +0 -1
  419. package/dist/types/index.d.ts +0 -123
  420. package/dist/types/index.d.ts.map +0 -1
  421. package/dist/types/workflow.d.ts +0 -110
  422. package/dist/types/workflow.d.ts.map +0 -1
  423. package/dist/ui/components/AgentTimer.d.ts +0 -7
  424. package/dist/ui/components/AgentTimer.d.ts.map +0 -1
  425. package/dist/ui/components/App.d.ts +0 -197
  426. package/dist/ui/components/App.d.ts.map +0 -1
  427. package/dist/ui/components/AuthScreen.d.ts +0 -8
  428. package/dist/ui/components/AuthScreen.d.ts.map +0 -1
  429. package/dist/ui/components/AuthWelcomeScreen.d.ts +0 -8
  430. package/dist/ui/components/AuthWelcomeScreen.d.ts.map +0 -1
  431. package/dist/ui/components/Breadcrumbs.d.ts +0 -13
  432. package/dist/ui/components/Breadcrumbs.d.ts.map +0 -1
  433. package/dist/ui/components/CircularSelectInput.d.ts +0 -24
  434. package/dist/ui/components/CircularSelectInput.d.ts.map +0 -1
  435. package/dist/ui/components/ClipboardFileAutocomplete.d.ts +0 -10
  436. package/dist/ui/components/ClipboardFileAutocomplete.d.ts.map +0 -1
  437. package/dist/ui/components/CodeBlock.d.ts +0 -9
  438. package/dist/ui/components/CodeBlock.d.ts.map +0 -1
  439. package/dist/ui/components/ConfigViewer.d.ts +0 -11
  440. package/dist/ui/components/ConfigViewer.d.ts.map +0 -1
  441. package/dist/ui/components/ConfirmPrompt.d.ts +0 -13
  442. package/dist/ui/components/ConfirmPrompt.d.ts.map +0 -1
  443. package/dist/ui/components/ConnectionStatusMessage.d.ts +0 -17
  444. package/dist/ui/components/ConnectionStatusMessage.d.ts.map +0 -1
  445. package/dist/ui/components/ContextWindowIndicator.d.ts +0 -8
  446. package/dist/ui/components/ContextWindowIndicator.d.ts.map +0 -1
  447. package/dist/ui/components/DetailedPlanReviewScreen.d.ts +0 -17
  448. package/dist/ui/components/DetailedPlanReviewScreen.d.ts.map +0 -1
  449. package/dist/ui/components/DiffViewer.d.ts +0 -9
  450. package/dist/ui/components/DiffViewer.d.ts.map +0 -1
  451. package/dist/ui/components/ErrorBoundary.d.ts +0 -17
  452. package/dist/ui/components/ErrorBoundary.d.ts.map +0 -1
  453. package/dist/ui/components/FileCreationPreview.d.ts +0 -8
  454. package/dist/ui/components/FileCreationPreview.d.ts.map +0 -1
  455. package/dist/ui/components/FileOperation.d.ts +0 -10
  456. package/dist/ui/components/FileOperation.d.ts.map +0 -1
  457. package/dist/ui/components/FileTagAutocomplete.d.ts +0 -11
  458. package/dist/ui/components/FileTagAutocomplete.d.ts.map +0 -1
  459. package/dist/ui/components/FontRecommendation.d.ts +0 -1
  460. package/dist/ui/components/FontRecommendation.d.ts.map +0 -1
  461. package/dist/ui/components/InputBox.d.ts +0 -42
  462. package/dist/ui/components/InputBox.d.ts.map +0 -1
  463. package/dist/ui/components/InteractiveShell.d.ts +0 -30
  464. package/dist/ui/components/InteractiveShell.d.ts.map +0 -1
  465. package/dist/ui/components/KeyboardHelp.d.ts +0 -7
  466. package/dist/ui/components/KeyboardHelp.d.ts.map +0 -1
  467. package/dist/ui/components/LoadingIndicator.d.ts +0 -3
  468. package/dist/ui/components/LoadingIndicator.d.ts.map +0 -1
  469. package/dist/ui/components/MCPAddScreen.d.ts +0 -13
  470. package/dist/ui/components/MCPAddScreen.d.ts.map +0 -1
  471. package/dist/ui/components/MCPListScreen.d.ts +0 -17
  472. package/dist/ui/components/MCPListScreen.d.ts.map +0 -1
  473. package/dist/ui/components/MCPServerListScreen.d.ts +0 -16
  474. package/dist/ui/components/MCPServerListScreen.d.ts.map +0 -1
  475. package/dist/ui/components/MarkdownRenderer.d.ts +0 -8
  476. package/dist/ui/components/MarkdownRenderer.d.ts.map +0 -1
  477. package/dist/ui/components/MessageBox.d.ts +0 -10
  478. package/dist/ui/components/MessageBox.d.ts.map +0 -1
  479. package/dist/ui/components/MessageDisplay.d.ts +0 -14
  480. package/dist/ui/components/MessageDisplay.d.ts.map +0 -1
  481. package/dist/ui/components/MonitorModeAIPanel.d.ts +0 -23
  482. package/dist/ui/components/MonitorModeAIPanel.d.ts.map +0 -1
  483. package/dist/ui/components/MultiLineInput.d.ts +0 -13
  484. package/dist/ui/components/MultiLineInput.d.ts.map +0 -1
  485. package/dist/ui/components/PasswordPrompt.d.ts +0 -9
  486. package/dist/ui/components/PasswordPrompt.d.ts.map +0 -1
  487. package/dist/ui/components/PlanAcceptedMessage.d.ts +0 -20
  488. package/dist/ui/components/PlanAcceptedMessage.d.ts.map +0 -1
  489. package/dist/ui/components/PlanReviewScreen.d.ts +0 -14
  490. package/dist/ui/components/PlanReviewScreen.d.ts.map +0 -1
  491. package/dist/ui/components/SelectPrompt.d.ts +0 -12
  492. package/dist/ui/components/SelectPrompt.d.ts.map +0 -1
  493. package/dist/ui/components/SlashCommandAutocomplete.d.ts +0 -13
  494. package/dist/ui/components/SlashCommandAutocomplete.d.ts.map +0 -1
  495. package/dist/ui/components/StatusBar.d.ts +0 -14
  496. package/dist/ui/components/StatusBar.d.ts.map +0 -1
  497. package/dist/ui/components/StreamingMessageDisplay.d.ts +0 -15
  498. package/dist/ui/components/StreamingMessageDisplay.d.ts.map +0 -1
  499. package/dist/ui/components/TaskCompletedMessage.d.ts +0 -14
  500. package/dist/ui/components/TaskCompletedMessage.d.ts.map +0 -1
  501. package/dist/ui/components/TaskProgressIndicator.d.ts +0 -18
  502. package/dist/ui/components/TaskProgressIndicator.d.ts.map +0 -1
  503. package/dist/ui/components/ThinkingDisplay.d.ts +0 -15
  504. package/dist/ui/components/ThinkingDisplay.d.ts.map +0 -1
  505. package/dist/ui/components/ToolExecutionMessage.d.ts +0 -8
  506. package/dist/ui/components/ToolExecutionMessage.d.ts.map +0 -1
  507. package/dist/ui/components/ToolExecutionStatus.d.ts +0 -10
  508. package/dist/ui/components/ToolExecutionStatus.d.ts.map +0 -1
  509. package/dist/ui/components/ToolResult.d.ts +0 -10
  510. package/dist/ui/components/ToolResult.d.ts.map +0 -1
  511. package/dist/ui/components/VersionUpdatePrompt.d.ts +0 -9
  512. package/dist/ui/components/VersionUpdatePrompt.d.ts.map +0 -1
  513. package/dist/ui/components/WelcomeBanner.d.ts +0 -3
  514. package/dist/ui/components/WelcomeBanner.d.ts.map +0 -1
  515. package/dist/ui/components/WorkflowCreatorScreen.d.ts +0 -25
  516. package/dist/ui/components/WorkflowCreatorScreen.d.ts.map +0 -1
  517. package/dist/utils/ansi-encoder.d.ts +0 -7
  518. package/dist/utils/ansi-encoder.d.ts.map +0 -1
  519. package/dist/utils/chat-formatter.d.ts +0 -12
  520. package/dist/utils/chat-formatter.d.ts.map +0 -1
  521. package/dist/utils/command-history.d.ts +0 -24
  522. package/dist/utils/command-history.d.ts.map +0 -1
  523. package/dist/utils/context-sanitizer.d.ts +0 -50
  524. package/dist/utils/context-sanitizer.d.ts.map +0 -1
  525. package/dist/utils/conversation-logger.d.ts +0 -142
  526. package/dist/utils/conversation-logger.d.ts.map +0 -1
  527. package/dist/utils/custom-commands-manager.d.ts +0 -59
  528. package/dist/utils/custom-commands-manager.d.ts.map +0 -1
  529. package/dist/utils/editor-utils.d.ts +0 -101
  530. package/dist/utils/editor-utils.d.ts.map +0 -1
  531. package/dist/utils/file.d.ts +0 -61
  532. package/dist/utils/file.d.ts.map +0 -1
  533. package/dist/utils/input-classifier.d.ts +0 -25
  534. package/dist/utils/input-classifier.d.ts.map +0 -1
  535. package/dist/utils/logger.d.ts +0 -17
  536. package/dist/utils/logger.d.ts.map +0 -1
  537. package/dist/utils/markdown-parser.d.ts +0 -60
  538. package/dist/utils/markdown-parser.d.ts.map +0 -1
  539. package/dist/utils/shell.d.ts +0 -47
  540. package/dist/utils/shell.d.ts.map +0 -1
  541. package/dist/utils/state.d.ts +0 -13
  542. package/dist/utils/state.d.ts.map +0 -1
  543. package/dist/utils/syntax-checker.d.ts +0 -24
  544. package/dist/utils/syntax-checker.d.ts.map +0 -1
  545. package/dist/utils/terminal-output.d.ts +0 -25
  546. package/dist/utils/terminal-output.d.ts.map +0 -1
  547. package/dist/utils/text-clipboard.d.ts +0 -12
  548. package/dist/utils/text-clipboard.d.ts.map +0 -1
  549. package/dist/utils/unicode-sanitizer.d.ts +0 -44
  550. package/dist/utils/unicode-sanitizer.d.ts.map +0 -1
  551. package/dist/utils/version-checker.d.ts +0 -14
  552. package/dist/utils/version-checker.d.ts.map +0 -1
@@ -1,321 +1,280 @@
1
- import fg from 'fast-glob';
2
- import * as path from 'path';
3
- /**
4
- * FindFilesTool - Find files by name using fuzzy matching
5
- *
6
- * This tool uses fast-glob for efficient, cross-platform file searching
7
- * with gitignore support and smart result sorting.
8
- */
9
- export class FindFilesTool {
10
- static DEFAULT_MAX_RESULTS = 10;
11
- static EXCLUDE_PATTERNS = [
12
- 'node_modules/**',
13
- 'dist/**',
14
- 'build/**',
15
- '.git/**',
16
- '.next/**',
17
- '.nuxt/**',
18
- 'coverage/**',
19
- '.cache/**',
20
- 'out/**',
21
- 'target/**',
22
- 'vendor/**',
23
- ];
24
- /**
25
- * Normalize file path to use forward slashes
26
- */
27
- normalizePath(filePath) {
28
- return filePath.replace(/\\/g, '/');
1
+ import fg from "fast-glob";
2
+ import * as path from "path";
3
+ class FindFilesTool {
4
+ static DEFAULT_MAX_RESULTS = 10;
5
+ static EXCLUDE_PATTERNS = [
6
+ "node_modules/**",
7
+ "dist/**",
8
+ "build/**",
9
+ ".git/**",
10
+ ".next/**",
11
+ ".nuxt/**",
12
+ "coverage/**",
13
+ ".cache/**",
14
+ "out/**",
15
+ "target/**",
16
+ "vendor/**"
17
+ ];
18
+ /**
19
+ * Normalize file path to use forward slashes
20
+ */
21
+ normalizePath(filePath) {
22
+ return filePath.replace(/\\/g, "/");
23
+ }
24
+ /**
25
+ * Validate glob pattern
26
+ */
27
+ validatePattern(pattern) {
28
+ if (pattern.includes("[") && !pattern.includes("]")) {
29
+ return {
30
+ valid: false,
31
+ error: `Invalid glob pattern: "${pattern}"
32
+ Suggestion: Use valid glob syntax. Examples: "*.ts", "**/*.py", "*user*"`
33
+ };
29
34
  }
30
- /**
31
- * Validate glob pattern
32
- */
33
- validatePattern(pattern) {
34
- // Check for common invalid patterns
35
- if (pattern.includes('[') && !pattern.includes(']')) {
36
- return {
37
- valid: false,
38
- error: `Invalid glob pattern: "${pattern}"\nSuggestion: Use valid glob syntax. Examples: "*.ts", "**/*.py", "*user*"`,
39
- };
40
- }
41
- if (pattern.includes('{') && !pattern.includes('}')) {
42
- return {
43
- valid: false,
44
- error: `Invalid glob pattern: "${pattern}"\nSuggestion: Use valid glob syntax. Examples: "*.ts", "**/*.py", "*user*"`,
45
- };
46
- }
47
- return { valid: true };
35
+ if (pattern.includes("{") && !pattern.includes("}")) {
36
+ return {
37
+ valid: false,
38
+ error: `Invalid glob pattern: "${pattern}"
39
+ Suggestion: Use valid glob syntax. Examples: "*.ts", "**/*.py", "*user*"`
40
+ };
48
41
  }
49
- /**
50
- * Calculate relevance score for sorting
51
- * Lower score = more relevant
52
- */
53
- calculateRelevance(filePath, pattern) {
54
- const fileName = path.basename(filePath);
55
- const normalizedPattern = pattern.replace(/\*/g, '').toLowerCase();
56
- const normalizedFileName = fileName.toLowerCase();
57
- // Exact match gets highest priority
58
- if (fileName === pattern || normalizedFileName === normalizedPattern) {
59
- return 0;
60
- }
61
- // Exact match without extension
62
- const fileNameWithoutExt = fileName.replace(/\.[^.]+$/, '');
63
- if (fileNameWithoutExt === pattern || fileNameWithoutExt.toLowerCase() === normalizedPattern) {
64
- return 1;
65
- }
66
- // Calculate path depth (shallower is better)
67
- const depth = filePath.split('/').length;
68
- // Combine factors: depth + position of match in filename
69
- const matchIndex = normalizedFileName.indexOf(normalizedPattern);
70
- const positionScore = matchIndex >= 0 ? matchIndex : 1000;
71
- return depth * 10 + positionScore;
42
+ return { valid: true };
43
+ }
44
+ /**
45
+ * Calculate relevance score for sorting
46
+ * Lower score = more relevant
47
+ */
48
+ calculateRelevance(filePath, pattern) {
49
+ const fileName = path.basename(filePath);
50
+ const normalizedPattern = pattern.replace(/\*/g, "").toLowerCase();
51
+ const normalizedFileName = fileName.toLowerCase();
52
+ if (fileName === pattern || normalizedFileName === normalizedPattern) {
53
+ return 0;
72
54
  }
73
- /**
74
- * Sort files by relevance
75
- */
76
- sortByRelevance(files, pattern) {
77
- return files.sort((a, b) => {
78
- const scoreA = this.calculateRelevance(a, pattern);
79
- const scoreB = this.calculateRelevance(b, pattern);
80
- return scoreA - scoreB;
81
- });
55
+ const fileNameWithoutExt = fileName.replace(/\.[^.]+$/, "");
56
+ if (fileNameWithoutExt === pattern || fileNameWithoutExt.toLowerCase() === normalizedPattern) {
57
+ return 1;
82
58
  }
83
- /**
84
- * Execute the file search
85
- */
86
- async execute(params, cwd, contextManager) {
87
- // Validate pattern
88
- const validation = this.validatePattern(params.pattern);
89
- if (!validation.valid) {
90
- throw new Error(validation.error);
91
- }
92
- const currentContext = contextManager?.getCurrentContext?.();
93
- const isRemote = currentContext && currentContext.type !== 'local';
94
- if (isRemote) {
95
- return this.searchRemote(params, cwd, contextManager);
96
- }
97
- const maxResults = params.maxResults ?? FindFilesTool.DEFAULT_MAX_RESULTS;
98
- const searchType = params.searchType ?? 'all';
99
- try {
100
- // Determine search options based on searchType
101
- const searchOptions = {
102
- cwd,
103
- ignore: FindFilesTool.EXCLUDE_PATTERNS,
104
- caseSensitiveMatch: false,
105
- dot: false, // Don't include hidden files by default
106
- suppressErrors: true, // Gracefully handle permission errors
107
- };
108
- if (searchType === 'files') {
109
- searchOptions.onlyFiles = true;
110
- searchOptions.onlyDirectories = false;
111
- }
112
- else if (searchType === 'directories') {
113
- searchOptions.onlyFiles = false;
114
- searchOptions.onlyDirectories = true;
115
- }
116
- else {
117
- // 'all' - search both files and directories
118
- searchOptions.onlyFiles = false;
119
- searchOptions.onlyDirectories = false;
120
- }
121
- // Build patterns to search - handle multi-word patterns for fuzzy matching
122
- const patterns = [];
123
- // Auto-prefix with **/ if pattern is simple (no path separators) and not already recursive
124
- // This allows finding "file.txt" anywhere in the project without typing "**/"
125
- let mainPattern = params.pattern;
126
- const normalizedPattern = mainPattern.replace(/\\/g, '/');
127
- if (!normalizedPattern.includes('/') && !normalizedPattern.startsWith('**')) {
128
- mainPattern = `**/${mainPattern}`;
129
- }
130
- // Always add the main pattern
131
- patterns.push(mainPattern);
132
- // If pattern contains spaces or is multi-word (without glob chars), also search individual terms
133
- const cleanPattern = params.pattern.replace(/\*\*/g, '').replace(/\*/g, '').trim();
134
- if (cleanPattern.includes(' ')) {
135
- const words = cleanPattern.split(/\s+/).filter(w => w.length > 2); // Skip very short words
136
- for (const word of words) {
137
- // Add pattern for each word
138
- patterns.push(`**/*${word}*`);
139
- }
140
- }
141
- // Execute search for all patterns and merge results
142
- const allFiles = [];
143
- const seenFiles = new Set();
144
- for (const searchPattern of patterns) {
145
- try {
146
- const files = await fg(searchPattern, searchOptions);
147
- for (const file of files) {
148
- const normalizedFile = this.normalizePath(String(file));
149
- if (!seenFiles.has(normalizedFile)) {
150
- seenFiles.add(normalizedFile);
151
- allFiles.push(normalizedFile);
152
- }
153
- }
154
- }
155
- catch (patternError) {
156
- // Skip individual pattern errors (permission issues, etc.)
157
- continue;
158
- }
159
- }
160
- // Sort by relevance
161
- const sortedFiles = this.sortByRelevance(allFiles, params.pattern);
162
- // Truncate results
163
- const totalFound = sortedFiles.length;
164
- const truncated = totalFound > maxResults;
165
- const resultFiles = sortedFiles.slice(0, maxResults);
166
- return {
167
- files: resultFiles,
168
- totalFound,
169
- truncated,
170
- searchPattern: params.pattern,
171
- };
172
- }
173
- catch (error) {
174
- // Return empty results with helpful message instead of crashing
175
- if (error.message?.includes('EPERM') || error.message?.includes('EACCES')) {
176
- return {
177
- files: [],
178
- totalFound: 0,
179
- truncated: false,
180
- searchPattern: params.pattern,
181
- };
182
- }
183
- throw new Error(`File search failed: ${error.message}`);
184
- }
59
+ const depth = filePath.split("/").length;
60
+ const matchIndex = normalizedFileName.indexOf(normalizedPattern);
61
+ const positionScore = matchIndex >= 0 ? matchIndex : 1e3;
62
+ return depth * 10 + positionScore;
63
+ }
64
+ /**
65
+ * Sort files by relevance
66
+ */
67
+ sortByRelevance(files, pattern) {
68
+ return files.sort((a, b) => {
69
+ const scoreA = this.calculateRelevance(a, pattern);
70
+ const scoreB = this.calculateRelevance(b, pattern);
71
+ return scoreA - scoreB;
72
+ });
73
+ }
74
+ /**
75
+ * Execute the file search
76
+ */
77
+ async execute(params, cwd, contextManager) {
78
+ const validation = this.validatePattern(params.pattern);
79
+ if (!validation.valid) {
80
+ throw new Error(validation.error);
185
81
  }
186
- async searchRemote(params, cwd, contextManager) {
187
- const maxResults = params.maxResults ?? FindFilesTool.DEFAULT_MAX_RESULTS;
188
- const searchType = params.searchType ?? 'all';
189
- // Check OS type of remote
190
- const currentContext = contextManager.getCurrentContext();
191
- const isWindows = currentContext.metadata?.os === 'windows';
192
- let command;
193
- let mainPattern = params.pattern.replace(/\*\*/g, '*'); // simplify glob for find
194
- if (!mainPattern.includes('*')) {
195
- mainPattern = `*${mainPattern}*`;
196
- }
197
- if (isWindows) {
198
- // PowerShell Get-ChildItem
199
- let typeFilter = '';
200
- if (searchType === 'files')
201
- typeFilter = '-File';
202
- else if (searchType === 'directories')
203
- typeFilter = '-Directory';
204
- command = `Get-ChildItem -Path . -Recurse ${typeFilter} -Filter "${mainPattern}" -ErrorAction SilentlyContinue | Select-Object -First ${maxResults} | Select-Object -ExpandProperty FullName`;
205
- }
206
- else {
207
- // Unix find
208
- let typeFilter = '';
209
- if (searchType === 'files')
210
- typeFilter = '-type f';
211
- else if (searchType === 'directories')
212
- typeFilter = '-type d';
213
- // Escape pattern
214
- const escapedPattern = mainPattern.replace(/'/g, "'\\''");
215
- // We'll search up to maxResults, ignore permission denied errors
216
- command = `find . ${typeFilter} -name '${escapedPattern}' 2>/dev/null | head -n ${maxResults}`;
82
+ const currentContext = contextManager?.getCurrentContext?.();
83
+ const isRemote = currentContext && currentContext.type !== "local";
84
+ if (isRemote) {
85
+ return this.searchRemote(params, cwd, contextManager);
86
+ }
87
+ const maxResults = params.maxResults ?? FindFilesTool.DEFAULT_MAX_RESULTS;
88
+ const searchType = params.searchType ?? "all";
89
+ try {
90
+ const searchOptions = {
91
+ cwd,
92
+ ignore: FindFilesTool.EXCLUDE_PATTERNS,
93
+ caseSensitiveMatch: false,
94
+ dot: false,
95
+ // Don't include hidden files by default
96
+ suppressErrors: true
97
+ // Gracefully handle permission errors
98
+ };
99
+ if (searchType === "files") {
100
+ searchOptions.onlyFiles = true;
101
+ searchOptions.onlyDirectories = false;
102
+ } else if (searchType === "directories") {
103
+ searchOptions.onlyFiles = false;
104
+ searchOptions.onlyDirectories = true;
105
+ } else {
106
+ searchOptions.onlyFiles = false;
107
+ searchOptions.onlyDirectories = false;
108
+ }
109
+ const patterns = [];
110
+ let mainPattern = params.pattern;
111
+ const normalizedPattern = mainPattern.replace(/\\/g, "/");
112
+ if (!normalizedPattern.includes("/") && !normalizedPattern.startsWith("**")) {
113
+ mainPattern = `**/${mainPattern}`;
114
+ }
115
+ patterns.push(mainPattern);
116
+ const cleanPattern = params.pattern.replace(/\*\*/g, "").replace(/\*/g, "").trim();
117
+ if (cleanPattern.includes(" ")) {
118
+ const words = cleanPattern.split(/\s+/).filter((w) => w.length > 2);
119
+ for (const word of words) {
120
+ patterns.push(`**/*${word}*`);
217
121
  }
122
+ }
123
+ const allFiles = [];
124
+ const seenFiles = /* @__PURE__ */ new Set();
125
+ for (const searchPattern of patterns) {
218
126
  try {
219
- const result = await contextManager.executeCommand(command, 30000, cwd);
220
- const output = result.stdout;
221
- const files = output.split('\n')
222
- .map((line) => line.trim())
223
- .filter((line) => line.length > 0)
224
- .map((line) => this.normalizePath(line.startsWith('./') ? line.substring(2) : line));
225
- return {
226
- files,
227
- totalFound: files.length,
228
- truncated: files.length >= maxResults,
229
- searchPattern: params.pattern
230
- };
231
- }
232
- catch (error) {
233
- return {
234
- files: [],
235
- totalFound: 0,
236
- truncated: false,
237
- searchPattern: params.pattern
238
- };
127
+ const files = await fg(searchPattern, searchOptions);
128
+ for (const file of files) {
129
+ const normalizedFile = this.normalizePath(String(file));
130
+ if (!seenFiles.has(normalizedFile)) {
131
+ seenFiles.add(normalizedFile);
132
+ allFiles.push(normalizedFile);
133
+ }
134
+ }
135
+ } catch (patternError) {
136
+ continue;
239
137
  }
138
+ }
139
+ const sortedFiles = this.sortByRelevance(allFiles, params.pattern);
140
+ const totalFound = sortedFiles.length;
141
+ const truncated = totalFound > maxResults;
142
+ const resultFiles = sortedFiles.slice(0, maxResults);
143
+ return {
144
+ files: resultFiles,
145
+ totalFound,
146
+ truncated,
147
+ searchPattern: params.pattern
148
+ };
149
+ } catch (error) {
150
+ if (error.message?.includes("EPERM") || error.message?.includes("EACCES")) {
151
+ return {
152
+ files: [],
153
+ totalFound: 0,
154
+ truncated: false,
155
+ searchPattern: params.pattern
156
+ };
157
+ }
158
+ throw new Error(`File search failed: ${error.message}`);
240
159
  }
241
- }
242
- /**
243
- * Format find files results for display
244
- */
245
- function formatFindFilesResults(result) {
246
- if (result.files.length === 0) {
247
- return `No files found matching pattern "${result.searchPattern}"\nSuggestion: Try a broader pattern like "*${result.searchPattern}*" or check if the file exists in the project.`;
160
+ }
161
+ async searchRemote(params, cwd, contextManager) {
162
+ const maxResults = params.maxResults ?? FindFilesTool.DEFAULT_MAX_RESULTS;
163
+ const searchType = params.searchType ?? "all";
164
+ const currentContext = contextManager.getCurrentContext();
165
+ const isWindows = currentContext.metadata?.os === "windows";
166
+ let command;
167
+ let mainPattern = params.pattern.replace(/\*\*/g, "*");
168
+ if (!mainPattern.includes("*")) {
169
+ mainPattern = `*${mainPattern}*`;
248
170
  }
249
- const lines = [];
250
- lines.push(`Found ${result.totalFound} file${result.totalFound === 1 ? '' : 's'} matching pattern "${result.searchPattern}"`);
251
- if (result.truncated) {
252
- lines.push(`(showing first ${result.files.length} matches)`);
171
+ if (isWindows) {
172
+ let typeFilter = "";
173
+ if (searchType === "files") typeFilter = "-File";
174
+ else if (searchType === "directories") typeFilter = "-Directory";
175
+ command = `Get-ChildItem -Path . -Recurse ${typeFilter} -Filter "${mainPattern}" -ErrorAction SilentlyContinue | Select-Object -First ${maxResults} | Select-Object -ExpandProperty FullName`;
176
+ } else {
177
+ let typeFilter = "";
178
+ if (searchType === "files") typeFilter = "-type f";
179
+ else if (searchType === "directories") typeFilter = "-type d";
180
+ const escapedPattern = mainPattern.replace(/'/g, "'\\''");
181
+ command = `find . ${typeFilter} -name '${escapedPattern}' 2>/dev/null | head -n ${maxResults}`;
253
182
  }
254
- lines.push('');
255
- for (const file of result.files) {
256
- lines.push(` ${file}`);
183
+ try {
184
+ const result = await contextManager.executeCommand(command, 3e4, cwd);
185
+ const output = result.stdout;
186
+ const files = output.split("\n").map((line) => line.trim()).filter((line) => line.length > 0).map((line) => this.normalizePath(line.startsWith("./") ? line.substring(2) : line));
187
+ return {
188
+ files,
189
+ totalFound: files.length,
190
+ truncated: files.length >= maxResults,
191
+ searchPattern: params.pattern
192
+ };
193
+ } catch (error) {
194
+ return {
195
+ files: [],
196
+ totalFound: 0,
197
+ truncated: false,
198
+ searchPattern: params.pattern
199
+ };
257
200
  }
258
- return lines.join('\n');
201
+ }
202
+ }
203
+ function formatFindFilesResults(result) {
204
+ if (result.files.length === 0) {
205
+ return `No files found matching pattern "${result.searchPattern}"
206
+ Suggestion: Try a broader pattern like "*${result.searchPattern}*" or check if the file exists in the project.`;
207
+ }
208
+ const lines = [];
209
+ lines.push(`Found ${result.totalFound} file${result.totalFound === 1 ? "" : "s"} matching pattern "${result.searchPattern}"`);
210
+ if (result.truncated) {
211
+ lines.push(`(showing first ${result.files.length} matches)`);
212
+ }
213
+ lines.push("");
214
+ for (const file of result.files) {
215
+ lines.push(` ${file}`);
216
+ }
217
+ return lines.join("\n");
259
218
  }
260
- /**
261
- * Find files tool for the tool registry
262
- */
263
- export const findFilesTool = {
264
- schema: {
265
- name: 'find_files',
266
- description: `Find files AND folders by name using glob patterns without knowing exact paths.
267
-
268
- USE THIS TOOL WHEN:
269
- - User mentions a file or folder name without providing the full path
270
- - You need to locate a file or directory but don't know where it is
271
- - You want to find all files/folders matching a pattern (e.g., all test files, or a project folder)
272
- - Searching for multi-word names like "Major Project" or "control system"
273
-
274
- EXAMPLES:
275
- - Find a folder: pattern="*Major Project*" or pattern="**/*Major*Project*"
276
- - Find user controller: pattern="*user*controller*"
277
- - Find specific file: pattern="database.ts"
278
- - Find all test files: pattern="**/*.test.ts"
279
- - Find by partial name: pattern="*screenshot*" (finds files AND folders containing "screenshot")
280
-
281
- IMPORTANT: This tool searches BOTH files AND directories by default. For multi-word searches,
282
- it also searches for each word individually to give you more results.
283
-
219
+ const findFilesTool = {
220
+ schema: {
221
+ name: "find_files",
222
+ description: `Find files AND folders by name using glob patterns without knowing exact paths.
223
+
224
+ USE THIS TOOL WHEN:
225
+ - User mentions a file or folder name without providing the full path
226
+ - You need to locate a file or directory but don't know where it is
227
+ - You want to find all files/folders matching a pattern (e.g., all test files, or a project folder)
228
+ - Searching for multi-word names like "Major Project" or "control system"
229
+
230
+ EXAMPLES:
231
+ - Find a folder: pattern="*Major Project*" or pattern="**/*Major*Project*"
232
+ - Find user controller: pattern="*user*controller*"
233
+ - Find specific file: pattern="database.ts"
234
+ - Find all test files: pattern="**/*.test.ts"
235
+ - Find by partial name: pattern="*screenshot*" (finds files AND folders containing "screenshot")
236
+
237
+ IMPORTANT: This tool searches BOTH files AND directories by default. For multi-word searches,
238
+ it also searches for each word individually to give you more results.
239
+
284
240
  Use this BEFORE trying to read a file when you don't know its exact path.`,
285
- parameters: {
286
- type: 'object',
287
- properties: {
288
- pattern: {
289
- type: 'string',
290
- description: 'Glob pattern to match file/folder names. Use * for wildcards, ** for recursive search. For multi-word names use *word1*word2* pattern.',
291
- },
292
- maxResults: {
293
- type: 'number',
294
- description: 'Maximum number of results to return. Default: 10',
295
- },
296
- searchType: {
297
- type: 'string',
298
- enum: ['all', 'files', 'directories'],
299
- description: 'What to search for: "all" (default - files and directories), "files" (only files), "directories" (only folders)',
300
- },
301
- },
302
- required: ['pattern'],
241
+ parameters: {
242
+ type: "object",
243
+ properties: {
244
+ pattern: {
245
+ type: "string",
246
+ description: "Glob pattern to match file/folder names. Use * for wildcards, ** for recursive search. For multi-word names use *word1*word2* pattern."
303
247
  },
304
- },
305
- async execute(args, context) {
306
- const tool = new FindFilesTool();
307
- const params = {
308
- pattern: args.pattern,
309
- maxResults: args.maxResults,
310
- searchType: args.searchType,
311
- };
312
- try {
313
- const result = await tool.execute(params, context.cwd, context.contextManager);
314
- return formatFindFilesResults(result);
315
- }
316
- catch (error) {
317
- throw new Error(`Find files failed: ${error.message}`);
248
+ maxResults: {
249
+ type: "number",
250
+ description: "Maximum number of results to return. Default: 10"
251
+ },
252
+ searchType: {
253
+ type: "string",
254
+ enum: ["all", "files", "directories"],
255
+ description: 'What to search for: "all" (default - files and directories), "files" (only files), "directories" (only folders)'
318
256
  }
319
- },
257
+ },
258
+ required: ["pattern"]
259
+ }
260
+ },
261
+ async execute(args, context) {
262
+ const tool = new FindFilesTool();
263
+ const params = {
264
+ pattern: args.pattern,
265
+ maxResults: args.maxResults,
266
+ searchType: args.searchType
267
+ };
268
+ try {
269
+ const result = await tool.execute(params, context.cwd, context.contextManager);
270
+ return formatFindFilesResults(result);
271
+ } catch (error) {
272
+ throw new Error(`Find files failed: ${error.message}`);
273
+ }
274
+ }
275
+ };
276
+ export {
277
+ FindFilesTool,
278
+ findFilesTool
320
279
  };
321
280
  //# sourceMappingURL=find-files.js.map