centaurus-cli 2.5.2 → 2.6.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 (310) hide show
  1. package/dist/cli-adapter.d.ts +6 -0
  2. package/dist/cli-adapter.d.ts.map +1 -1
  3. package/dist/cli-adapter.js +215 -29
  4. package/dist/cli-adapter.js.map +1 -1
  5. package/dist/commands/CommandParser.js +2 -2
  6. package/dist/commands/CommandParser.js.map +1 -1
  7. package/dist/config/defaultConfig.js +1 -1
  8. package/dist/config/defaultConfig.js.map +1 -1
  9. package/dist/config/models.d.ts +50 -5
  10. package/dist/config/models.d.ts.map +1 -1
  11. package/dist/config/models.js +144 -20
  12. package/dist/config/models.js.map +1 -1
  13. package/dist/config/types.d.ts +3 -0
  14. package/dist/config/types.d.ts.map +1 -1
  15. package/dist/config/types.js +3 -1
  16. package/dist/config/types.js.map +1 -1
  17. package/dist/index.js +9 -0
  18. package/dist/index.js.map +1 -1
  19. package/dist/services/ai-service-client.d.ts +8 -2
  20. package/dist/services/ai-service-client.d.ts.map +1 -1
  21. package/dist/services/ai-service-client.js +2 -1
  22. package/dist/services/ai-service-client.js.map +1 -1
  23. package/dist/services/environment-context-injector.d.ts +69 -0
  24. package/dist/services/environment-context-injector.d.ts.map +1 -0
  25. package/dist/services/environment-context-injector.js +198 -0
  26. package/dist/services/environment-context-injector.js.map +1 -0
  27. package/dist/tools/ToolRegistry.d.ts.map +1 -1
  28. package/dist/tools/ToolRegistry.js +120 -26
  29. package/dist/tools/ToolRegistry.js.map +1 -1
  30. package/dist/tools/command.d.ts.map +1 -1
  31. package/dist/tools/command.js +30 -6
  32. package/dist/tools/command.js.map +1 -1
  33. package/dist/tools/file-ops.d.ts.map +1 -1
  34. package/dist/tools/file-ops.js +70 -23
  35. package/dist/tools/file-ops.js.map +1 -1
  36. package/dist/tools/find-files.d.ts +47 -0
  37. package/dist/tools/find-files.d.ts.map +1 -0
  38. package/dist/tools/find-files.js +190 -0
  39. package/dist/tools/find-files.js.map +1 -0
  40. package/dist/tools/get-diff.d.ts +45 -0
  41. package/dist/tools/get-diff.d.ts.map +1 -0
  42. package/dist/tools/get-diff.js +138 -0
  43. package/dist/tools/get-diff.js.map +1 -0
  44. package/dist/tools/grep-search.d.ts +85 -0
  45. package/dist/tools/grep-search.d.ts.map +1 -0
  46. package/dist/tools/grep-search.js +497 -0
  47. package/dist/tools/grep-search.js.map +1 -0
  48. package/dist/tools/inspect-symbol.d.ts +27 -0
  49. package/dist/tools/inspect-symbol.d.ts.map +1 -0
  50. package/dist/tools/inspect-symbol.js +259 -0
  51. package/dist/tools/inspect-symbol.js.map +1 -0
  52. package/dist/tools/validation.d.ts +49 -0
  53. package/dist/tools/validation.d.ts.map +1 -0
  54. package/dist/tools/validation.js +125 -0
  55. package/dist/tools/validation.js.map +1 -0
  56. package/dist/types/index.d.ts +13 -0
  57. package/dist/types/index.d.ts.map +1 -1
  58. package/dist/ui/components/App.d.ts +3 -0
  59. package/dist/ui/components/App.d.ts.map +1 -1
  60. package/dist/ui/components/App.js +272 -72
  61. package/dist/ui/components/App.js.map +1 -1
  62. package/dist/ui/components/ContextWindowIndicator.d.ts +8 -0
  63. package/dist/ui/components/ContextWindowIndicator.d.ts.map +1 -0
  64. package/dist/ui/components/ContextWindowIndicator.js +34 -0
  65. package/dist/ui/components/ContextWindowIndicator.js.map +1 -0
  66. package/dist/ui/components/FontRecommendation.d.ts +1 -0
  67. package/dist/ui/components/FontRecommendation.d.ts.map +1 -0
  68. package/dist/ui/components/FontRecommendation.js +1 -0
  69. package/dist/ui/components/FontRecommendation.js.map +1 -0
  70. package/dist/ui/components/InputBox.d.ts +2 -0
  71. package/dist/ui/components/InputBox.d.ts.map +1 -1
  72. package/dist/ui/components/InputBox.js +9 -4
  73. package/dist/ui/components/InputBox.js.map +1 -1
  74. package/dist/ui/components/MarkdownRenderer.d.ts.map +1 -1
  75. package/dist/ui/components/MarkdownRenderer.js +34 -9
  76. package/dist/ui/components/MarkdownRenderer.js.map +1 -1
  77. package/dist/ui/components/MessageDisplay.d.ts.map +1 -1
  78. package/dist/ui/components/MessageDisplay.js +9 -2
  79. package/dist/ui/components/MessageDisplay.js.map +1 -1
  80. package/dist/ui/components/StreamingMessageDisplay.d.ts.map +1 -1
  81. package/dist/ui/components/StreamingMessageDisplay.js +11 -3
  82. package/dist/ui/components/StreamingMessageDisplay.js.map +1 -1
  83. package/dist/ui/components/ThinkingDisplay.d.ts +12 -0
  84. package/dist/ui/components/ThinkingDisplay.d.ts.map +1 -0
  85. package/dist/ui/components/ThinkingDisplay.js +41 -0
  86. package/dist/ui/components/ThinkingDisplay.js.map +1 -0
  87. package/dist/utils/markdown-parser.d.ts +4 -0
  88. package/dist/utils/markdown-parser.d.ts.map +1 -1
  89. package/dist/utils/markdown-parser.js +15 -1
  90. package/dist/utils/markdown-parser.js.map +1 -1
  91. package/dist/utils/version-checker.d.ts.map +1 -1
  92. package/dist/utils/version-checker.js +3 -31
  93. package/dist/utils/version-checker.js.map +1 -1
  94. package/package.json +6 -5
  95. package/README.md +0 -501
  96. package/dist/ai/provider-factory.d.ts +0 -6
  97. package/dist/ai/provider-factory.d.ts.map +0 -1
  98. package/dist/ai/provider-factory.js +0 -27
  99. package/dist/ai/provider-factory.js.map +0 -1
  100. package/dist/ai/providers/base.d.ts +0 -25
  101. package/dist/ai/providers/base.d.ts.map +0 -1
  102. package/dist/ai/providers/base.js +0 -9
  103. package/dist/ai/providers/base.js.map +0 -1
  104. package/dist/ai/providers/gemini.d.ts +0 -34
  105. package/dist/ai/providers/gemini.d.ts.map +0 -1
  106. package/dist/ai/providers/gemini.js +0 -146
  107. package/dist/ai/providers/gemini.js.map +0 -1
  108. package/dist/commands/view-duplication-logs.d.ts +0 -5
  109. package/dist/commands/view-duplication-logs.d.ts.map +0 -1
  110. package/dist/commands/view-duplication-logs.js +0 -14
  111. package/dist/commands/view-duplication-logs.js.map +0 -1
  112. package/dist/context/__tests__/command-detector.test.d.ts +0 -14
  113. package/dist/context/__tests__/command-detector.test.d.ts.map +0 -1
  114. package/dist/context/__tests__/command-detector.test.js +0 -318
  115. package/dist/context/__tests__/command-detector.test.js.map +0 -1
  116. package/dist/context/__tests__/context-manager.test.d.ts +0 -16
  117. package/dist/context/__tests__/context-manager.test.d.ts.map +0 -1
  118. package/dist/context/__tests__/context-manager.test.js +0 -375
  119. package/dist/context/__tests__/context-manager.test.js.map +0 -1
  120. package/dist/context/__tests__/error-handling.test.d.ts +0 -15
  121. package/dist/context/__tests__/error-handling.test.d.ts.map +0 -1
  122. package/dist/context/__tests__/error-handling.test.js +0 -447
  123. package/dist/context/__tests__/error-handling.test.js.map +0 -1
  124. package/dist/context/handlers/__tests__/docker-handler.test.d.ts +0 -13
  125. package/dist/context/handlers/__tests__/docker-handler.test.d.ts.map +0 -1
  126. package/dist/context/handlers/__tests__/docker-handler.test.js +0 -285
  127. package/dist/context/handlers/__tests__/docker-handler.test.js.map +0 -1
  128. package/dist/context/handlers/__tests__/ssh-handler.test.d.ts +0 -13
  129. package/dist/context/handlers/__tests__/ssh-handler.test.d.ts.map +0 -1
  130. package/dist/context/handlers/__tests__/ssh-handler.test.js +0 -251
  131. package/dist/context/handlers/__tests__/ssh-handler.test.js.map +0 -1
  132. package/dist/context/handlers/__tests__/wsl-handler.test.d.ts +0 -7
  133. package/dist/context/handlers/__tests__/wsl-handler.test.d.ts.map +0 -1
  134. package/dist/context/handlers/__tests__/wsl-handler.test.js +0 -331
  135. package/dist/context/handlers/__tests__/wsl-handler.test.js.map +0 -1
  136. package/dist/index-custom.d.ts +0 -3
  137. package/dist/index-custom.d.ts.map +0 -1
  138. package/dist/index-custom.js +0 -65
  139. package/dist/index-custom.js.map +0 -1
  140. package/dist/prompts/system-prompt.d.ts +0 -47
  141. package/dist/prompts/system-prompt.d.ts.map +0 -1
  142. package/dist/prompts/system-prompt.js +0 -377
  143. package/dist/prompts/system-prompt.js.map +0 -1
  144. package/dist/providers/GoogleProvider.d.ts +0 -26
  145. package/dist/providers/GoogleProvider.d.ts.map +0 -1
  146. package/dist/providers/GoogleProvider.js +0 -313
  147. package/dist/providers/GoogleProvider.js.map +0 -1
  148. package/dist/providers/Provider.d.ts +0 -114
  149. package/dist/providers/Provider.d.ts.map +0 -1
  150. package/dist/providers/Provider.js +0 -44
  151. package/dist/providers/Provider.js.map +0 -1
  152. package/dist/services/__tests__/ai-context-injector.test.d.ts +0 -15
  153. package/dist/services/__tests__/ai-context-injector.test.d.ts.map +0 -1
  154. package/dist/services/__tests__/ai-context-injector.test.js +0 -326
  155. package/dist/services/__tests__/ai-context-injector.test.js.map +0 -1
  156. package/dist/src/context/types.js +0 -27
  157. package/dist/src/services/ai-context-injector.js +0 -96
  158. package/dist/src/services/ai-service-client.js +0 -270
  159. package/dist/src/services/api-client.js +0 -349
  160. package/dist/src/tools/types.js +0 -1
  161. package/dist/src/types/index.js +0 -1
  162. package/dist/test/context/types.js +0 -27
  163. package/dist/test/services/__tests__/ai-context-injector.test.js +0 -325
  164. package/dist/test/services/ai-context-injector.js +0 -96
  165. package/dist/test/services/ai-service-client.js +0 -270
  166. package/dist/test/services/api-client.js +0 -349
  167. package/dist/test/tools/types.js +0 -1
  168. package/dist/test/types/index.js +0 -1
  169. package/dist/test-ai-context-injector.js +0 -97
  170. package/dist/tests/automated-verification.d.ts +0 -27
  171. package/dist/tests/automated-verification.d.ts.map +0 -1
  172. package/dist/tests/automated-verification.js +0 -359
  173. package/dist/tests/automated-verification.js.map +0 -1
  174. package/dist/tests/integration-tests.d.ts +0 -50
  175. package/dist/tests/integration-tests.d.ts.map +0 -1
  176. package/dist/tests/integration-tests.js +0 -648
  177. package/dist/tests/integration-tests.js.map +0 -1
  178. package/dist/tools/file-ops-test.d.ts +0 -6
  179. package/dist/tools/file-ops-test.d.ts.map +0 -1
  180. package/dist/tools/file-ops-test.js +0 -197
  181. package/dist/tools/file-ops-test.js.map +0 -1
  182. package/dist/ui/DisplayHistory.d.ts +0 -53
  183. package/dist/ui/DisplayHistory.d.ts.map +0 -1
  184. package/dist/ui/DisplayHistory.js +0 -82
  185. package/dist/ui/DisplayHistory.js.map +0 -1
  186. package/dist/ui/clack-ui.d.ts +0 -83
  187. package/dist/ui/clack-ui.d.ts.map +0 -1
  188. package/dist/ui/clack-ui.js +0 -304
  189. package/dist/ui/clack-ui.js.map +0 -1
  190. package/dist/ui/components/DisplayItemRenderer.d.ts +0 -18
  191. package/dist/ui/components/DisplayItemRenderer.d.ts.map +0 -1
  192. package/dist/ui/components/DisplayItemRenderer.js +0 -53
  193. package/dist/ui/components/DisplayItemRenderer.js.map +0 -1
  194. package/dist/ui/components/DynamicMessage.d.ts +0 -13
  195. package/dist/ui/components/DynamicMessage.d.ts.map +0 -1
  196. package/dist/ui/components/DynamicMessage.js +0 -27
  197. package/dist/ui/components/DynamicMessage.js.map +0 -1
  198. package/dist/ui/components/FileViewerScreen.d.ts +0 -14
  199. package/dist/ui/components/FileViewerScreen.d.ts.map +0 -1
  200. package/dist/ui/components/FileViewerScreen.js +0 -74
  201. package/dist/ui/components/FileViewerScreen.js.map +0 -1
  202. package/dist/ui/components/ScrollableContent.d.ts +0 -7
  203. package/dist/ui/components/ScrollableContent.d.ts.map +0 -1
  204. package/dist/ui/components/ScrollableContent.js +0 -6
  205. package/dist/ui/components/ScrollableContent.js.map +0 -1
  206. package/dist/ui/components/ScrollableMessageList.d.ts +0 -10
  207. package/dist/ui/components/ScrollableMessageList.d.ts.map +0 -1
  208. package/dist/ui/components/ScrollableMessageList.js +0 -133
  209. package/dist/ui/components/ScrollableMessageList.js.map +0 -1
  210. package/dist/ui/components/ScrollableScreen.d.ts +0 -9
  211. package/dist/ui/components/ScrollableScreen.d.ts.map +0 -1
  212. package/dist/ui/components/ScrollableScreen.js +0 -22
  213. package/dist/ui/components/ScrollableScreen.js.map +0 -1
  214. package/dist/ui/components/StaticMessageHistory.d.ts +0 -14
  215. package/dist/ui/components/StaticMessageHistory.d.ts.map +0 -1
  216. package/dist/ui/components/StaticMessageHistory.js +0 -19
  217. package/dist/ui/components/StaticMessageHistory.js.map +0 -1
  218. package/dist/ui/components/code-block.d.ts +0 -10
  219. package/dist/ui/components/code-block.d.ts.map +0 -1
  220. package/dist/ui/components/code-block.js +0 -74
  221. package/dist/ui/components/code-block.js.map +0 -1
  222. package/dist/ui/components/confirm-prompt.d.ts +0 -12
  223. package/dist/ui/components/confirm-prompt.d.ts.map +0 -1
  224. package/dist/ui/components/confirm-prompt.js +0 -104
  225. package/dist/ui/components/confirm-prompt.js.map +0 -1
  226. package/dist/ui/components/diff-viewer.d.ts +0 -9
  227. package/dist/ui/components/diff-viewer.d.ts.map +0 -1
  228. package/dist/ui/components/diff-viewer.js +0 -57
  229. package/dist/ui/components/diff-viewer.js.map +0 -1
  230. package/dist/ui/components/input-box.d.ts +0 -18
  231. package/dist/ui/components/input-box.d.ts.map +0 -1
  232. package/dist/ui/components/input-box.js +0 -157
  233. package/dist/ui/components/input-box.js.map +0 -1
  234. package/dist/ui/components/keyboard-help.d.ts +0 -7
  235. package/dist/ui/components/keyboard-help.d.ts.map +0 -1
  236. package/dist/ui/components/keyboard-help.js +0 -43
  237. package/dist/ui/components/keyboard-help.js.map +0 -1
  238. package/dist/ui/components/loading-indicator.d.ts +0 -3
  239. package/dist/ui/components/loading-indicator.d.ts.map +0 -1
  240. package/dist/ui/components/loading-indicator.js +0 -42
  241. package/dist/ui/components/loading-indicator.js.map +0 -1
  242. package/dist/ui/components/message-display.d.ts +0 -7
  243. package/dist/ui/components/message-display.d.ts.map +0 -1
  244. package/dist/ui/components/message-display.js +0 -104
  245. package/dist/ui/components/message-display.js.map +0 -1
  246. package/dist/ui/components/misc.d.ts +0 -28
  247. package/dist/ui/components/misc.d.ts.map +0 -1
  248. package/dist/ui/components/misc.js +0 -128
  249. package/dist/ui/components/misc.js.map +0 -1
  250. package/dist/ui/components/select-prompt.d.ts +0 -13
  251. package/dist/ui/components/select-prompt.d.ts.map +0 -1
  252. package/dist/ui/components/select-prompt.js +0 -42
  253. package/dist/ui/components/select-prompt.js.map +0 -1
  254. package/dist/ui/components/status-bar.d.ts +0 -11
  255. package/dist/ui/components/status-bar.d.ts.map +0 -1
  256. package/dist/ui/components/status-bar.js +0 -47
  257. package/dist/ui/components/status-bar.js.map +0 -1
  258. package/dist/ui/components/tool-execution.d.ts +0 -3
  259. package/dist/ui/components/tool-execution.d.ts.map +0 -1
  260. package/dist/ui/components/tool-execution.js +0 -374
  261. package/dist/ui/components/tool-execution.js.map +0 -1
  262. package/dist/ui/components/tool-result.d.ts +0 -11
  263. package/dist/ui/components/tool-result.d.ts.map +0 -1
  264. package/dist/ui/components/tool-result.js +0 -58
  265. package/dist/ui/components/tool-result.js.map +0 -1
  266. package/dist/ui/components/welcome-banner.d.ts +0 -3
  267. package/dist/ui/components/welcome-banner.d.ts.map +0 -1
  268. package/dist/ui/components/welcome-banner.js +0 -46
  269. package/dist/ui/components/welcome-banner.js.map +0 -1
  270. package/dist/ui/hooks/useDisplayHistory.d.ts +0 -13
  271. package/dist/ui/hooks/useDisplayHistory.d.ts.map +0 -1
  272. package/dist/ui/hooks/useDisplayHistory.js +0 -45
  273. package/dist/ui/hooks/useDisplayHistory.js.map +0 -1
  274. package/dist/ui/render-engine.d.ts +0 -69
  275. package/dist/ui/render-engine.d.ts.map +0 -1
  276. package/dist/ui/render-engine.js +0 -197
  277. package/dist/ui/render-engine.js.map +0 -1
  278. package/dist/ui/terminal/TerminalRenderer.d.ts +0 -84
  279. package/dist/ui/terminal/TerminalRenderer.d.ts.map +0 -1
  280. package/dist/ui/terminal/TerminalRenderer.js +0 -154
  281. package/dist/ui/terminal/TerminalRenderer.js.map +0 -1
  282. package/dist/ui/terminal/TerminalUI.d.ts +0 -139
  283. package/dist/ui/terminal/TerminalUI.d.ts.map +0 -1
  284. package/dist/ui/terminal/TerminalUI.js +0 -430
  285. package/dist/ui/terminal/TerminalUI.js.map +0 -1
  286. package/dist/ui/terminal/VirtualChatBuffer.d.ts +0 -32
  287. package/dist/ui/terminal/VirtualChatBuffer.d.ts.map +0 -1
  288. package/dist/ui/terminal/VirtualChatBuffer.js +0 -37
  289. package/dist/ui/terminal/VirtualChatBuffer.js.map +0 -1
  290. package/dist/ui/terminal-kit-base.d.ts +0 -117
  291. package/dist/ui/terminal-kit-base.d.ts.map +0 -1
  292. package/dist/ui/terminal-kit-base.js +0 -188
  293. package/dist/ui/terminal-kit-base.js.map +0 -1
  294. package/dist/ui/utils/duplication-detector.d.ts +0 -32
  295. package/dist/ui/utils/duplication-detector.d.ts.map +0 -1
  296. package/dist/ui/utils/duplication-detector.js +0 -227
  297. package/dist/ui/utils/duplication-detector.js.map +0 -1
  298. package/dist/ui/utils/duplication-logger.d.ts +0 -21
  299. package/dist/ui/utils/duplication-logger.d.ts.map +0 -1
  300. package/dist/ui/utils/duplication-logger.js +0 -85
  301. package/dist/ui/utils/duplication-logger.js.map +0 -1
  302. package/dist/ui/utils/terminal-scanner.d.ts +0 -19
  303. package/dist/ui/utils/terminal-scanner.d.ts.map +0 -1
  304. package/dist/ui/utils/terminal-scanner.js +0 -217
  305. package/dist/ui/utils/terminal-scanner.js.map +0 -1
  306. package/dist/version.d.ts +0 -2
  307. package/dist/version.d.ts.map +0 -1
  308. package/dist/version.js +0 -3
  309. package/dist/version.js.map +0 -1
  310. package/scripts/generate-version.js +0 -25
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-diff.js","sourceRoot":"","sources":["../../src/tools/get-diff.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,85 @@
1
+ import { Tool } from './types.js';
2
+ export interface GrepSearchParams {
3
+ pattern: string;
4
+ caseSensitive?: boolean;
5
+ filePattern?: string;
6
+ excludePattern?: string;
7
+ }
8
+ export interface GrepMatch {
9
+ file: string;
10
+ line: number;
11
+ column: number;
12
+ match: string;
13
+ contextBefore: string[];
14
+ contextAfter: string[];
15
+ }
16
+ export interface GrepSearchResult {
17
+ matches: GrepMatch[];
18
+ totalMatches: number;
19
+ truncated: boolean;
20
+ searchPattern: string;
21
+ }
22
+ /**
23
+ * GrepSearchTool - Search for text patterns across files in the codebase
24
+ *
25
+ * This tool wraps ripgrep (rg) or falls back to native grep/findstr
26
+ * to provide fast, efficient code search capabilities.
27
+ */
28
+ export declare class GrepSearchTool {
29
+ private static readonly MAX_MATCHES;
30
+ private static readonly MAX_LINE_LENGTH;
31
+ private static readonly CONTEXT_LINES;
32
+ /**
33
+ * Check if ripgrep is available
34
+ */
35
+ private hasRipgrep;
36
+ /**
37
+ * Check if native grep is available (Linux/Mac)
38
+ */
39
+ private hasGrep;
40
+ /**
41
+ * Validate regex pattern
42
+ */
43
+ private validatePattern;
44
+ /**
45
+ * Normalize file path to use forward slashes
46
+ */
47
+ private normalizePath;
48
+ /**
49
+ * Truncate long lines
50
+ */
51
+ private truncateLine;
52
+ /**
53
+ * Execute search using ripgrep
54
+ */
55
+ private searchWithRipgrep;
56
+ /**
57
+ * Parse ripgrep JSON output
58
+ */
59
+ private parseRipgrepOutput;
60
+ /**
61
+ * Execute search using native grep (Linux/Mac)
62
+ */
63
+ private searchWithGrep;
64
+ /**
65
+ * Execute search using findstr (Windows)
66
+ */
67
+ private searchWithFindstr;
68
+ /**
69
+ * Parse grep output
70
+ */
71
+ private parseGrepOutput;
72
+ /**
73
+ * Parse findstr output
74
+ */
75
+ private parseFindstrOutput;
76
+ /**
77
+ * Execute the grep search
78
+ */
79
+ execute(params: GrepSearchParams, cwd: string): Promise<GrepSearchResult>;
80
+ }
81
+ /**
82
+ * Grep search tool for the tool registry
83
+ */
84
+ export declare const grepSearchTool: Tool;
85
+ //# sourceMappingURL=grep-search.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"grep-search.d.ts","sourceRoot":"","sources":["../../src/tools/grep-search.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAwB,MAAM,YAAY,CAAC;AAOxD,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,YAAY,EAAE,MAAM,EAAE,CAAC;CACxB;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,SAAS,EAAE,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,OAAO,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED;;;;;GAKG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAM;IACzC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAO;IAC9C,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAK;IAE1C;;OAEG;YACW,UAAU;IASxB;;OAEG;YACW,OAAO;IASrB;;OAEG;IACH,OAAO,CAAC,eAAe;IAYvB;;OAEG;IACH,OAAO,CAAC,aAAa;IAIrB;;OAEG;IACH,OAAO,CAAC,YAAY;IAOpB;;OAEG;YACW,iBAAiB;IAyC/B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAiF1B;;OAEG;YACW,cAAc;IAuC5B;;OAEG;YACW,iBAAiB;IAyC/B;;OAEG;IACH,OAAO,CAAC,eAAe;IA2EvB;;OAEG;YACW,kBAAkB;IA+DhC;;OAEG;IACG,OAAO,CAAC,MAAM,EAAE,gBAAgB,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;CA0BhF;AA6CD;;GAEG;AACH,eAAO,MAAM,cAAc,EAAE,IAyD5B,CAAC"}
@@ -0,0 +1,497 @@
1
+ import { exec } from 'child_process';
2
+ import { promisify } from 'util';
3
+ import * as path from 'path';
4
+ const execAsync = promisify(exec);
5
+ /**
6
+ * GrepSearchTool - Search for text patterns across files in the codebase
7
+ *
8
+ * This tool wraps ripgrep (rg) or falls back to native grep/findstr
9
+ * to provide fast, efficient code search capabilities.
10
+ */
11
+ export class GrepSearchTool {
12
+ static MAX_MATCHES = 50;
13
+ static MAX_LINE_LENGTH = 200;
14
+ static CONTEXT_LINES = 2;
15
+ /**
16
+ * Check if ripgrep is available
17
+ */
18
+ async hasRipgrep() {
19
+ try {
20
+ await execAsync('rg --version');
21
+ return true;
22
+ }
23
+ catch {
24
+ return false;
25
+ }
26
+ }
27
+ /**
28
+ * Check if native grep is available (Linux/Mac)
29
+ */
30
+ async hasGrep() {
31
+ try {
32
+ await execAsync('grep --version');
33
+ return true;
34
+ }
35
+ catch {
36
+ return false;
37
+ }
38
+ }
39
+ /**
40
+ * Validate regex pattern
41
+ */
42
+ validatePattern(pattern) {
43
+ try {
44
+ new RegExp(pattern);
45
+ return { valid: true };
46
+ }
47
+ catch (error) {
48
+ return {
49
+ valid: false,
50
+ error: `Invalid regex pattern: "${pattern}"\nSuggestion: Check your regex syntax. Common issues: unmatched parentheses, invalid escape sequences.`
51
+ };
52
+ }
53
+ }
54
+ /**
55
+ * Normalize file path to use forward slashes
56
+ */
57
+ normalizePath(filePath) {
58
+ return filePath.replace(/\\/g, '/');
59
+ }
60
+ /**
61
+ * Truncate long lines
62
+ */
63
+ truncateLine(line) {
64
+ if (line.length <= GrepSearchTool.MAX_LINE_LENGTH) {
65
+ return line;
66
+ }
67
+ return line.substring(0, GrepSearchTool.MAX_LINE_LENGTH) + ' [truncated]';
68
+ }
69
+ /**
70
+ * Execute search using ripgrep
71
+ */
72
+ async searchWithRipgrep(params, cwd) {
73
+ const args = [
74
+ 'rg',
75
+ '--json',
76
+ `--context=${GrepSearchTool.CONTEXT_LINES}`,
77
+ `--max-count=${GrepSearchTool.MAX_MATCHES}`,
78
+ ];
79
+ // Case sensitivity
80
+ if (!params.caseSensitive) {
81
+ args.push('--ignore-case');
82
+ }
83
+ // File pattern
84
+ if (params.filePattern) {
85
+ args.push('--glob', params.filePattern);
86
+ }
87
+ // Exclude pattern
88
+ if (params.excludePattern) {
89
+ args.push('--glob', `!${params.excludePattern}`);
90
+ }
91
+ // Pattern
92
+ args.push('--', params.pattern);
93
+ try {
94
+ const { stdout } = await execAsync(args.join(' '), { cwd, maxBuffer: 10 * 1024 * 1024 });
95
+ return this.parseRipgrepOutput(stdout, params.pattern);
96
+ }
97
+ catch (error) {
98
+ // ripgrep returns exit code 1 when no matches found
99
+ if (error.code === 1 && error.stdout) {
100
+ return this.parseRipgrepOutput(error.stdout, params.pattern);
101
+ }
102
+ throw error;
103
+ }
104
+ }
105
+ /**
106
+ * Parse ripgrep JSON output
107
+ */
108
+ parseRipgrepOutput(output, searchPattern) {
109
+ const lines = output.trim().split('\n').filter(line => line);
110
+ const matches = [];
111
+ let currentMatch = null;
112
+ let contextBefore = [];
113
+ let contextAfter = [];
114
+ let totalMatches = 0;
115
+ for (const line of lines) {
116
+ try {
117
+ const data = JSON.parse(line);
118
+ if (data.type === 'match') {
119
+ // Save previous match if exists
120
+ if (currentMatch && currentMatch.file && currentMatch.line !== undefined) {
121
+ matches.push({
122
+ file: this.normalizePath(currentMatch.file),
123
+ line: currentMatch.line,
124
+ column: currentMatch.column || 1,
125
+ match: this.truncateLine(currentMatch.match || ''),
126
+ contextBefore: contextBefore.map(l => this.truncateLine(l)),
127
+ contextAfter: contextAfter.map(l => this.truncateLine(l)),
128
+ });
129
+ contextBefore = [];
130
+ contextAfter = [];
131
+ }
132
+ totalMatches++;
133
+ if (matches.length < GrepSearchTool.MAX_MATCHES) {
134
+ const matchData = data.data;
135
+ currentMatch = {
136
+ file: matchData.path.text,
137
+ line: matchData.line_number,
138
+ column: matchData.submatches?.[0]?.start || 1,
139
+ match: matchData.lines.text.trimEnd(),
140
+ };
141
+ }
142
+ }
143
+ else if (data.type === 'context') {
144
+ const contextData = data.data;
145
+ const contextLine = contextData.lines.text.trimEnd();
146
+ if (currentMatch && currentMatch.line !== undefined) {
147
+ // Determine if this is before or after the match
148
+ if (contextData.line_number < currentMatch.line) {
149
+ contextBefore.push(contextLine);
150
+ // Keep only last N lines
151
+ if (contextBefore.length > GrepSearchTool.CONTEXT_LINES) {
152
+ contextBefore.shift();
153
+ }
154
+ }
155
+ else {
156
+ contextAfter.push(contextLine);
157
+ }
158
+ }
159
+ }
160
+ }
161
+ catch (parseError) {
162
+ // Skip invalid JSON lines
163
+ continue;
164
+ }
165
+ }
166
+ // Save last match
167
+ if (currentMatch && currentMatch.file && currentMatch.line !== undefined) {
168
+ matches.push({
169
+ file: this.normalizePath(currentMatch.file),
170
+ line: currentMatch.line,
171
+ column: currentMatch.column || 1,
172
+ match: this.truncateLine(currentMatch.match || ''),
173
+ contextBefore: contextBefore.map(l => this.truncateLine(l)),
174
+ contextAfter: contextAfter.map(l => this.truncateLine(l)),
175
+ });
176
+ }
177
+ return {
178
+ matches,
179
+ totalMatches,
180
+ truncated: totalMatches > matches.length,
181
+ searchPattern,
182
+ };
183
+ }
184
+ /**
185
+ * Execute search using native grep (Linux/Mac)
186
+ */
187
+ async searchWithGrep(params, cwd) {
188
+ const args = ['grep', '-rn'];
189
+ // Case sensitivity
190
+ if (!params.caseSensitive) {
191
+ args.push('-i');
192
+ }
193
+ // Context lines
194
+ args.push(`--context=${GrepSearchTool.CONTEXT_LINES}`);
195
+ // File pattern
196
+ if (params.filePattern) {
197
+ args.push(`--include=${params.filePattern}`);
198
+ }
199
+ // Exclude pattern
200
+ if (params.excludePattern) {
201
+ args.push(`--exclude=${params.excludePattern}`);
202
+ }
203
+ // Pattern and directory
204
+ args.push(params.pattern, '.');
205
+ try {
206
+ const { stdout } = await execAsync(args.join(' '), { cwd, maxBuffer: 10 * 1024 * 1024 });
207
+ return this.parseGrepOutput(stdout, params.pattern);
208
+ }
209
+ catch (error) {
210
+ // grep returns exit code 1 when no matches found
211
+ if (error.code === 1 && error.stdout) {
212
+ return this.parseGrepOutput(error.stdout, params.pattern);
213
+ }
214
+ throw error;
215
+ }
216
+ }
217
+ /**
218
+ * Execute search using findstr (Windows)
219
+ */
220
+ async searchWithFindstr(params, cwd) {
221
+ // findstr has limited capabilities, so we'll use a simpler approach
222
+ const pattern = params.pattern;
223
+ const filePattern = params.filePattern || '*.*';
224
+ // findstr doesn't support context lines, so we'll need to handle that separately
225
+ const args = [
226
+ 'findstr',
227
+ '/S', // Search subdirectories
228
+ '/N', // Show line numbers
229
+ ];
230
+ if (!params.caseSensitive) {
231
+ args.push('/I'); // Case-insensitive
232
+ }
233
+ args.push(`/C:"${pattern}"`, filePattern);
234
+ try {
235
+ const { stdout } = await execAsync(args.join(' '), { cwd, maxBuffer: 10 * 1024 * 1024 });
236
+ return this.parseFindstrOutput(stdout, params.pattern, cwd);
237
+ }
238
+ catch (error) {
239
+ // findstr returns exit code 1 when no matches found
240
+ if (error.code === 1 && (!error.stdout || error.stdout.trim() === '')) {
241
+ return {
242
+ matches: [],
243
+ totalMatches: 0,
244
+ truncated: false,
245
+ searchPattern: params.pattern,
246
+ };
247
+ }
248
+ if (error.stdout) {
249
+ return this.parseFindstrOutput(error.stdout, params.pattern, cwd);
250
+ }
251
+ throw error;
252
+ }
253
+ }
254
+ /**
255
+ * Parse grep output
256
+ */
257
+ parseGrepOutput(output, searchPattern) {
258
+ const lines = output.trim().split('\n').filter(line => line);
259
+ const matches = [];
260
+ let i = 0;
261
+ while (i < lines.length && matches.length < GrepSearchTool.MAX_MATCHES) {
262
+ const line = lines[i];
263
+ // Skip separator lines
264
+ if (line === '--') {
265
+ i++;
266
+ continue;
267
+ }
268
+ // Parse match line: filename:linenum:content or filename:linenum-content (for context)
269
+ const matchRegex = /^([^:]+):(\d+):(.*)$/;
270
+ const contextRegex = /^([^:]+):(\d+)-(.*)$/;
271
+ const matchMatch = line.match(matchRegex);
272
+ if (matchMatch) {
273
+ const [, file, lineNum, content] = matchMatch;
274
+ const contextBefore = [];
275
+ const contextAfter = [];
276
+ // Look back for context
277
+ let j = i - 1;
278
+ while (j >= 0 && contextBefore.length < GrepSearchTool.CONTEXT_LINES) {
279
+ const prevLine = lines[j];
280
+ if (prevLine === '--')
281
+ break;
282
+ const contextMatch = prevLine.match(contextRegex);
283
+ if (contextMatch && contextMatch[1] === file) {
284
+ contextBefore.unshift(contextMatch[3]);
285
+ }
286
+ else {
287
+ break;
288
+ }
289
+ j--;
290
+ }
291
+ // Look ahead for context
292
+ let k = i + 1;
293
+ while (k < lines.length && contextAfter.length < GrepSearchTool.CONTEXT_LINES) {
294
+ const nextLine = lines[k];
295
+ if (nextLine === '--')
296
+ break;
297
+ const contextMatch = nextLine.match(contextRegex);
298
+ if (contextMatch && contextMatch[1] === file) {
299
+ contextAfter.push(contextMatch[3]);
300
+ }
301
+ else {
302
+ break;
303
+ }
304
+ k++;
305
+ }
306
+ matches.push({
307
+ file: this.normalizePath(file),
308
+ line: parseInt(lineNum, 10),
309
+ column: 1, // grep doesn't provide column info
310
+ match: this.truncateLine(content),
311
+ contextBefore: contextBefore.map(l => this.truncateLine(l)),
312
+ contextAfter: contextAfter.map(l => this.truncateLine(l)),
313
+ });
314
+ }
315
+ i++;
316
+ }
317
+ return {
318
+ matches,
319
+ totalMatches: lines.filter(l => l.match(/^[^:]+:\d+:/)).length,
320
+ truncated: matches.length >= GrepSearchTool.MAX_MATCHES,
321
+ searchPattern,
322
+ };
323
+ }
324
+ /**
325
+ * Parse findstr output
326
+ */
327
+ async parseFindstrOutput(output, searchPattern, cwd) {
328
+ const lines = output.trim().split('\n').filter(line => line);
329
+ const matches = [];
330
+ const fs = await import('fs/promises');
331
+ for (const line of lines) {
332
+ if (matches.length >= GrepSearchTool.MAX_MATCHES)
333
+ break;
334
+ // Parse findstr output: filename:linenum:content
335
+ const match = line.match(/^([^:]+):(\d+):(.*)$/);
336
+ if (!match)
337
+ continue;
338
+ const [, file, lineNum, content] = match;
339
+ const lineNumber = parseInt(lineNum, 10);
340
+ // Read context lines from file
341
+ const contextBefore = [];
342
+ const contextAfter = [];
343
+ try {
344
+ const fullPath = path.resolve(cwd, file);
345
+ const fileContent = await fs.readFile(fullPath, 'utf-8');
346
+ const fileLines = fileContent.split('\n');
347
+ // Get context before
348
+ for (let i = Math.max(0, lineNumber - GrepSearchTool.CONTEXT_LINES - 1); i < lineNumber - 1; i++) {
349
+ if (fileLines[i] !== undefined) {
350
+ contextBefore.push(fileLines[i]);
351
+ }
352
+ }
353
+ // Get context after
354
+ for (let i = lineNumber; i < Math.min(fileLines.length, lineNumber + GrepSearchTool.CONTEXT_LINES); i++) {
355
+ if (fileLines[i] !== undefined) {
356
+ contextAfter.push(fileLines[i]);
357
+ }
358
+ }
359
+ }
360
+ catch (error) {
361
+ // If we can't read the file, just skip context
362
+ }
363
+ matches.push({
364
+ file: this.normalizePath(file),
365
+ line: lineNumber,
366
+ column: 1, // findstr doesn't provide column info
367
+ match: this.truncateLine(content),
368
+ contextBefore: contextBefore.map(l => this.truncateLine(l)),
369
+ contextAfter: contextAfter.map(l => this.truncateLine(l)),
370
+ });
371
+ }
372
+ return {
373
+ matches,
374
+ totalMatches: lines.length,
375
+ truncated: matches.length >= GrepSearchTool.MAX_MATCHES,
376
+ searchPattern,
377
+ };
378
+ }
379
+ /**
380
+ * Execute the grep search
381
+ */
382
+ async execute(params, cwd) {
383
+ // Validate pattern
384
+ const validation = this.validatePattern(params.pattern);
385
+ if (!validation.valid) {
386
+ throw new Error(validation.error);
387
+ }
388
+ // Try ripgrep first
389
+ if (await this.hasRipgrep()) {
390
+ return await this.searchWithRipgrep(params, cwd);
391
+ }
392
+ // Try native grep (Linux/Mac)
393
+ if (await this.hasGrep()) {
394
+ return await this.searchWithGrep(params, cwd);
395
+ }
396
+ // Fall back to findstr (Windows)
397
+ if (process.platform === 'win32') {
398
+ return await this.searchWithFindstr(params, cwd);
399
+ }
400
+ throw new Error('No search tool available. Please install ripgrep for better performance: https://github.com/BurntSushi/ripgrep');
401
+ }
402
+ }
403
+ /**
404
+ * Format grep search results for display
405
+ */
406
+ function formatGrepResults(result) {
407
+ if (result.matches.length === 0) {
408
+ return `No matches found for pattern "${result.searchPattern}"\nSuggestion: Try a broader search pattern or check spelling. Use case-insensitive search if needed.`;
409
+ }
410
+ const lines = [];
411
+ lines.push(`Found ${result.totalMatches} match${result.totalMatches === 1 ? '' : 'es'} for pattern "${result.searchPattern}"`);
412
+ if (result.truncated) {
413
+ lines.push(`(showing first ${result.matches.length} matches)`);
414
+ }
415
+ lines.push('');
416
+ for (const match of result.matches) {
417
+ lines.push(`${match.file}:${match.line}:${match.column}`);
418
+ // Context before
419
+ if (match.contextBefore.length > 0) {
420
+ for (const ctx of match.contextBefore) {
421
+ lines.push(` | ${ctx}`);
422
+ }
423
+ }
424
+ // The match itself
425
+ lines.push(` > ${match.match}`);
426
+ // Context after
427
+ if (match.contextAfter.length > 0) {
428
+ for (const ctx of match.contextAfter) {
429
+ lines.push(` | ${ctx}`);
430
+ }
431
+ }
432
+ lines.push('');
433
+ }
434
+ return lines.join('\n');
435
+ }
436
+ /**
437
+ * Grep search tool for the tool registry
438
+ */
439
+ export const grepSearchTool = {
440
+ schema: {
441
+ name: 'grep_search',
442
+ description: `Search for text patterns across files in the codebase using regex.
443
+
444
+ USE THIS TOOL WHEN:
445
+ - User asks "where is X defined"
446
+ - You need to find all occurrences of a function, class, or variable
447
+ - You need to locate TODO comments or specific code patterns
448
+ - You want to understand how a feature is implemented across files
449
+
450
+ BEFORE using read_file on multiple files, use this to find relevant files first.
451
+
452
+ EXAMPLES:
453
+ - Find class definition: pattern="class User"
454
+ - Find function calls: pattern="connectDatabase\\\\("
455
+ - Find TODO comments: pattern="TODO.*auth"
456
+ - Find imports: pattern="import.*express"`,
457
+ parameters: {
458
+ type: 'object',
459
+ properties: {
460
+ pattern: {
461
+ type: 'string',
462
+ description: 'Regex pattern to search for. Use \\\\ to escape special characters.',
463
+ },
464
+ caseSensitive: {
465
+ type: 'boolean',
466
+ description: 'Whether search should be case-sensitive. Default: false',
467
+ },
468
+ filePattern: {
469
+ type: 'string',
470
+ description: 'Glob pattern to filter files (e.g., "*.ts", "src/**/*.py"). Optional.',
471
+ },
472
+ excludePattern: {
473
+ type: 'string',
474
+ description: 'Glob pattern to exclude files (e.g., "*.test.ts", "dist/**"). Optional.',
475
+ },
476
+ },
477
+ required: ['pattern'],
478
+ },
479
+ },
480
+ async execute(args, context) {
481
+ const tool = new GrepSearchTool();
482
+ const params = {
483
+ pattern: args.pattern,
484
+ caseSensitive: args.caseSensitive ?? false,
485
+ filePattern: args.filePattern,
486
+ excludePattern: args.excludePattern,
487
+ };
488
+ try {
489
+ const result = await tool.execute(params, context.cwd);
490
+ return formatGrepResults(result);
491
+ }
492
+ catch (error) {
493
+ throw new Error(`Grep search failed: ${error.message}`);
494
+ }
495
+ },
496
+ };
497
+ //# sourceMappingURL=grep-search.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"grep-search.js","sourceRoot":"","sources":["../../src/tools/grep-search.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ export interface InspectSymbolParams {
2
+ filePath: string;
3
+ }
4
+ export interface Symbol {
5
+ name: string;
6
+ type: 'function' | 'class' | 'method' | 'export' | 'interface' | 'type';
7
+ signature?: string;
8
+ line: number;
9
+ parentClass?: string;
10
+ }
11
+ export interface InspectSymbolResult {
12
+ symbols: Symbol[];
13
+ filePath: string;
14
+ language: string;
15
+ truncated: boolean;
16
+ }
17
+ export declare class InspectSymbolTool {
18
+ private readonly MAX_SYMBOLS;
19
+ private readonly languageParsers;
20
+ execute(params: InspectSymbolParams, cwd: string): Promise<InspectSymbolResult>;
21
+ private parseTypeScriptJavaScript;
22
+ private parsePython;
23
+ private parseJava;
24
+ private getIndentLevel;
25
+ private normalizePath;
26
+ }
27
+ //# sourceMappingURL=inspect-symbol.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inspect-symbol.d.ts","sourceRoot":"","sources":["../../src/tools/inspect-symbol.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,MAAM;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,UAAU,GAAG,OAAO,GAAG,QAAQ,GAAG,QAAQ,GAAG,WAAW,GAAG,MAAM,CAAC;IACxE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,OAAO,CAAC;CACpB;AAQD,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAO;IAEnC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAgB9B;IAEI,OAAO,CAAC,MAAM,EAAE,mBAAmB,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC;IA4CrF,OAAO,CAAC,yBAAyB;IA+GjC,OAAO,CAAC,WAAW;IAmDnB,OAAO,CAAC,SAAS;IA2DjB,OAAO,CAAC,cAAc;IAKtB,OAAO,CAAC,aAAa;CAGtB"}