@gettrace/cli 2.0.6 → 2.0.8

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.
package/dist/search.js DELETED
@@ -1,169 +0,0 @@
1
- /**
2
- * Code search engine for the Trace IDE bridge.
3
- *
4
- * Strategy:
5
- * 1. ripgrep (rg) — tried first. 10-100x faster than an FS walk, natively
6
- * supports regex and case-insensitive matching. Outputs JSON per match.
7
- * Falls back gracefully if rg is not installed.
8
- * 2. FS walk — same behaviour as the original searchInFiles() in index.ts,
9
- * extended with optional regex and case-insensitive matching.
10
- *
11
- * Public API:
12
- * searchCode(projectPath, query, opts?)
13
- * → { matches: SearchMatch[], engine: 'ripgrep' | 'fs' }
14
- *
15
- * The `engine` field is returned to callers so they can include it in
16
- * tool responses — agents can see which path ran and adjust expectations.
17
- */
18
- import * as fs from 'fs';
19
- import * as path from 'path';
20
- import { exec } from 'child_process';
21
- import { promisify } from 'util';
22
- const execAsync = promisify(exec);
23
- // ── ripgrep path ──────────────────────────────────────────────────────────────
24
- async function searchWithRipgrep(projectPath, query, opts) {
25
- const flags = [
26
- '--json',
27
- '--line-number',
28
- opts.isRegex ? '' : '--fixed-strings',
29
- opts.caseSensitive ? '--case-sensitive' : '--ignore-case',
30
- `--max-count=${opts.maxResults}`,
31
- // Exclude directories that are never source code
32
- '--glob', '!node_modules/**',
33
- '--glob', '!.git/**',
34
- '--glob', '!dist/**',
35
- '--glob', '!build/**',
36
- '--glob', '!.next/**',
37
- '--glob', '!coverage/**',
38
- '--glob', '!.cache/**',
39
- '--glob', '!.turbo/**',
40
- ].filter(Boolean);
41
- // Shell-safe: escape backslashes and double-quotes in the query
42
- const escapedQuery = query.replace(/\\/g, '\\\\').replace(/"/g, '\\"');
43
- const cmd = `rg ${flags.join(' ')} "${escapedQuery}"`;
44
- const { stdout } = await execAsync(cmd, {
45
- cwd: projectPath,
46
- maxBuffer: 10 * 1024 * 1024, // 10 MB — generous for large codebases
47
- });
48
- const matches = [];
49
- for (const line of stdout.split('\n')) {
50
- const trimmed = line.trim();
51
- if (!trimmed || !trimmed.startsWith('{'))
52
- continue;
53
- try {
54
- const obj = JSON.parse(trimmed);
55
- if (obj.type !== 'match')
56
- continue;
57
- matches.push({
58
- file: path.relative(projectPath, obj.data.path.text),
59
- line: obj.data.line_number,
60
- content: obj.data.lines.text.trimEnd().substring(0, 200),
61
- });
62
- if (matches.length >= opts.maxResults)
63
- break;
64
- }
65
- catch {
66
- // Skip malformed JSON lines (ripgrep guarantees valid JSON but be safe)
67
- }
68
- }
69
- return matches;
70
- }
71
- // ── FS walk fallback ──────────────────────────────────────────────────────────
72
- const FS_SEARCH_EXTENSIONS = new Set([
73
- '.js', '.ts', '.jsx', '.tsx', '.vue', '.svelte',
74
- '.css', '.scss', '.sass', '.less',
75
- '.html', '.htm', '.json', '.md',
76
- ]);
77
- const FS_IGNORE_DIRS = new Set([
78
- 'node_modules', '.git', 'dist', 'build',
79
- '.next', '.nuxt', '.svelte-kit', '.cache',
80
- 'coverage', '.turbo', '.vercel', '.output',
81
- ]);
82
- /** Build a line-matcher function from query + options. */
83
- function buildMatcher(query, opts) {
84
- if (opts.isRegex) {
85
- try {
86
- const re = new RegExp(query, opts.caseSensitive ? '' : 'i');
87
- return (line) => re.test(line);
88
- }
89
- catch {
90
- // Invalid regex — treat as a literal string (safe fallback)
91
- }
92
- }
93
- if (opts.caseSensitive) {
94
- return (line) => line.includes(query);
95
- }
96
- const lowerQuery = query.toLowerCase();
97
- return (line) => line.toLowerCase().includes(lowerQuery);
98
- }
99
- function searchWithFs(projectPath, query, opts) {
100
- const results = [];
101
- const matcher = buildMatcher(query, opts);
102
- function walkDir(dir) {
103
- if (results.length >= opts.maxResults)
104
- return;
105
- let entries;
106
- try {
107
- entries = fs.readdirSync(dir);
108
- }
109
- catch {
110
- return;
111
- }
112
- for (const entry of entries) {
113
- if (results.length >= opts.maxResults)
114
- return;
115
- if (FS_IGNORE_DIRS.has(entry) || entry.startsWith('.'))
116
- continue;
117
- const fullPath = path.join(dir, entry);
118
- let stat;
119
- try {
120
- stat = fs.statSync(fullPath);
121
- }
122
- catch {
123
- continue;
124
- }
125
- if (stat.isDirectory()) {
126
- walkDir(fullPath);
127
- }
128
- else if (FS_SEARCH_EXTENSIONS.has(path.extname(entry).toLowerCase())) {
129
- let content;
130
- try {
131
- content = fs.readFileSync(fullPath, 'utf-8');
132
- }
133
- catch {
134
- continue;
135
- }
136
- const lines = content.split('\n');
137
- for (let i = 0; i < lines.length && results.length < opts.maxResults; i++) {
138
- if (matcher(lines[i])) {
139
- results.push({
140
- file: path.relative(projectPath, fullPath),
141
- line: i + 1,
142
- content: lines[i].trim().substring(0, 200),
143
- });
144
- }
145
- }
146
- }
147
- }
148
- }
149
- walkDir(projectPath);
150
- return results;
151
- }
152
- // ── Public API ────────────────────────────────────────────────────────────────
153
- export async function searchCode(projectPath, query, opts = {}) {
154
- const resolved = {
155
- isRegex: opts.isRegex ?? false,
156
- caseSensitive: opts.caseSensitive ?? true,
157
- maxResults: opts.maxResults ?? 20,
158
- };
159
- // Try ripgrep first — falls back to FS walk if rg is not installed
160
- try {
161
- const matches = await searchWithRipgrep(projectPath, query, resolved);
162
- return { matches, engine: 'ripgrep' };
163
- }
164
- catch {
165
- const matches = searchWithFs(projectPath, query, resolved);
166
- return { matches, engine: 'fs' };
167
- }
168
- }
169
- //# sourceMappingURL=search.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"search.js","sourceRoot":"","sources":["../src/search.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- /Users/dakshsaini
@@ -1,4 +0,0 @@
1
- 2026-06-25T19:19:53.055Z [host-entry] started, node=v24.4.1 pid=34002
2
- 2026-06-25T19:19:53.058Z [host-entry] host.cjs loaded OK
3
- 2026-06-25T19:25:54.655Z [host-entry] started, node=v24.4.1 pid=34709
4
- 2026-06-25T19:25:54.659Z [host-entry] host.cjs loaded OK