@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/index.js +74 -3414
- package/instrument/trace-instrument.cjs +474 -0
- package/package.json +9 -5
- package/scripts/postinstall.js +110 -20
- package/dist/ast.d.ts +0 -48
- package/dist/ast.js +0 -203
- package/dist/ast.js.map +0 -1
- package/dist/file-lock.d.ts +0 -23
- package/dist/file-lock.js +0 -47
- package/dist/file-lock.js.map +0 -1
- package/dist/format.d.ts +0 -20
- package/dist/format.js +0 -68
- package/dist/format.js.map +0 -1
- package/dist/index.d.ts +0 -2
- package/dist/index.js.map +0 -1
- package/dist/lsp.d.ts +0 -46
- package/dist/lsp.js +0 -267
- package/dist/lsp.js.map +0 -1
- package/dist/search.d.ts +0 -31
- package/dist/search.js +0 -169
- package/dist/search.js.map +0 -1
- package/native-host/.homedir +0 -1
- package/native-host/native-host-debug.log +0 -4
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
|
package/dist/search.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"search.js","sourceRoot":"","sources":["../src/search.ts"],"names":[],"mappings":"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"}
|
package/native-host/.homedir
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
/Users/dakshsaini
|