unity-agentic-tools 0.5.1 → 0.6.1

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 (99) hide show
  1. package/README.md +49 -103
  2. package/dist/animator-utils.d.ts +46 -0
  3. package/dist/animator-utils.d.ts.map +1 -0
  4. package/dist/animator-utils.js +161 -0
  5. package/dist/animator-utils.js.map +1 -0
  6. package/dist/bridge-install.d.ts +11 -0
  7. package/dist/bridge-install.d.ts.map +1 -0
  8. package/dist/bridge-install.js +23 -0
  9. package/dist/bridge-install.js.map +1 -0
  10. package/dist/build-settings.d.ts +43 -0
  11. package/dist/build-settings.d.ts.map +1 -0
  12. package/dist/build-settings.js +196 -0
  13. package/dist/build-settings.js.map +1 -0
  14. package/dist/build-version.d.ts +40 -0
  15. package/dist/build-version.d.ts.map +1 -0
  16. package/dist/build-version.js +114 -0
  17. package/dist/build-version.js.map +1 -0
  18. package/dist/class-ids.d.ts +30 -0
  19. package/dist/class-ids.d.ts.map +1 -0
  20. package/dist/class-ids.js +322 -0
  21. package/dist/class-ids.js.map +1 -0
  22. package/dist/cleanup.d.ts +21 -0
  23. package/dist/cleanup.d.ts.map +1 -0
  24. package/dist/cleanup.js +161 -0
  25. package/dist/cleanup.js.map +1 -0
  26. package/dist/cli-output.d.ts +7 -0
  27. package/dist/cli-output.d.ts.map +1 -0
  28. package/dist/cli-output.js +24 -0
  29. package/dist/cli-output.js.map +1 -0
  30. package/dist/cli.d.ts +3 -0
  31. package/dist/cli.d.ts.map +1 -0
  32. package/dist/cli.js +795 -8143
  33. package/dist/cli.js.map +1 -0
  34. package/dist/doc-indexer-cli.js +1 -1
  35. package/dist/editor-client.d.ts +18 -0
  36. package/dist/editor-client.d.ts.map +1 -0
  37. package/dist/editor-client.js +256 -0
  38. package/dist/editor-client.js.map +1 -0
  39. package/dist/editor-discovery.d.ts +17 -0
  40. package/dist/editor-discovery.d.ts.map +1 -0
  41. package/dist/editor-discovery.js +248 -0
  42. package/dist/editor-discovery.js.map +1 -0
  43. package/dist/editor-transport.d.ts +30 -0
  44. package/dist/editor-transport.d.ts.map +1 -0
  45. package/dist/editor-transport.js +175 -0
  46. package/dist/editor-transport.js.map +1 -0
  47. package/dist/gitignore.d.ts +3 -0
  48. package/dist/gitignore.d.ts.map +1 -0
  49. package/dist/gitignore.js +40 -0
  50. package/dist/gitignore.js.map +1 -0
  51. package/dist/guid-cache.d.ts +45 -0
  52. package/dist/guid-cache.d.ts.map +1 -0
  53. package/dist/guid-cache.js +111 -0
  54. package/dist/guid-cache.js.map +1 -0
  55. package/dist/index.d.ts +11 -0
  56. package/dist/index.d.ts.map +1 -0
  57. package/dist/index.js +743 -8040
  58. package/dist/index.js.map +1 -0
  59. package/dist/loaded-protection.d.ts +6 -0
  60. package/dist/loaded-protection.d.ts.map +1 -0
  61. package/dist/loaded-protection.js +95 -0
  62. package/dist/loaded-protection.js.map +1 -0
  63. package/dist/packages.d.ts +55 -0
  64. package/dist/packages.d.ts.map +1 -0
  65. package/dist/packages.js +102 -0
  66. package/dist/packages.js.map +1 -0
  67. package/dist/params.d.ts +54 -0
  68. package/dist/params.d.ts.map +1 -0
  69. package/dist/params.js +106 -0
  70. package/dist/params.js.map +1 -0
  71. package/dist/project-search.d.ts +16 -0
  72. package/dist/project-search.d.ts.map +1 -0
  73. package/dist/project-search.js +538 -0
  74. package/dist/project-search.js.map +1 -0
  75. package/dist/scanner.d.ts +150 -0
  76. package/dist/scanner.d.ts.map +1 -0
  77. package/dist/scanner.js +223 -0
  78. package/dist/scanner.js.map +1 -0
  79. package/dist/setup.d.ts +25 -0
  80. package/dist/setup.d.ts.map +1 -0
  81. package/dist/setup.js +185 -0
  82. package/dist/setup.js.map +1 -0
  83. package/dist/types.d.ts +390 -0
  84. package/dist/types.d.ts.map +1 -0
  85. package/dist/types.js +3 -0
  86. package/dist/types.js.map +1 -0
  87. package/dist/util.d.ts +2 -0
  88. package/dist/util.d.ts.map +1 -0
  89. package/dist/util.js +7 -0
  90. package/dist/util.js.map +1 -0
  91. package/dist/utils.d.ts +82 -0
  92. package/dist/utils.d.ts.map +1 -0
  93. package/dist/utils.js +291 -0
  94. package/dist/utils.js.map +1 -0
  95. package/native/unity-file-tools.darwin-arm64.node +0 -0
  96. package/native/unity-file-tools.darwin-x64.node +0 -0
  97. package/native/unity-file-tools.linux-x64-gnu.node +0 -0
  98. package/native/unity-file-tools.win32-x64-msvc.node +0 -0
  99. package/package.json +4 -3
@@ -0,0 +1,538 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.walk_project_files = walk_project_files;
37
+ exports.search_project = search_project;
38
+ exports.grep_project = grep_project;
39
+ const fs_1 = require("fs");
40
+ const path = __importStar(require("path"));
41
+ const scanner_1 = require("./scanner");
42
+ const utils_1 = require("./utils");
43
+ /** File extensions considered binary — skip for grep. */
44
+ const BINARY_EXTENSIONS = new Set([
45
+ '.png', '.jpg', '.jpeg', '.gif', '.bmp', '.tga', '.psd', '.tif', '.tiff',
46
+ '.fbx', '.obj', '.dae', '.blend', '.3ds', '.max',
47
+ '.dll', '.so', '.dylib', '.exe', '.a', '.lib',
48
+ '.mp3', '.wav', '.ogg', '.aif', '.aiff',
49
+ '.mp4', '.mov', '.avi', '.wmv',
50
+ '.zip', '.gz', '.tar', '.rar', '.7z',
51
+ '.ttf', '.otf', '.woff', '.woff2',
52
+ '.bank', '.bytes', '.db',
53
+ ]);
54
+ /** Directories to always skip during walk. */
55
+ const SKIP_DIRS = new Set(['Library', 'Temp', 'obj', 'Logs', '.git', '.unity-agentic', 'node_modules']);
56
+ /**
57
+ * Recursively walk a Unity project directory and collect files with given extensions.
58
+ * Uses native Rust walker when available, falls back to JS implementation.
59
+ */
60
+ function walk_project_files(project_path, extensions, exclude_dirs) {
61
+ // Try native Rust walker first
62
+ const nativeWalk = (0, scanner_1.getNativeWalkProjectFiles)();
63
+ if (nativeWalk) {
64
+ try {
65
+ return nativeWalk(project_path, extensions, exclude_dirs ?? null);
66
+ }
67
+ catch {
68
+ // Fall through to JS implementation
69
+ }
70
+ }
71
+ return walk_project_files_js(project_path, extensions, exclude_dirs);
72
+ }
73
+ /** JS fallback implementation of walk_project_files. */
74
+ function walk_project_files_js(project_path, extensions, exclude_dirs) {
75
+ const result = [];
76
+ const skipSet = new Set([...SKIP_DIRS, ...(exclude_dirs || [])]);
77
+ const extSet = new Set(extensions.map(e => e.startsWith('.') ? e : `.${e}`));
78
+ function walk(dir) {
79
+ let entries;
80
+ try {
81
+ entries = (0, fs_1.readdirSync)(dir);
82
+ }
83
+ catch {
84
+ return;
85
+ }
86
+ for (const entry of entries) {
87
+ const full = path.join(dir, entry);
88
+ let stat;
89
+ try {
90
+ stat = (0, fs_1.statSync)(full);
91
+ }
92
+ catch {
93
+ continue;
94
+ }
95
+ if (stat.isDirectory()) {
96
+ if (!skipSet.has(entry)) {
97
+ walk(full);
98
+ }
99
+ }
100
+ else if (stat.isFile()) {
101
+ const ext = path.extname(entry).toLowerCase();
102
+ if (extSet.has(ext)) {
103
+ result.push(full);
104
+ }
105
+ }
106
+ }
107
+ }
108
+ // Walk from Assets/ if it exists, otherwise walk project_path directly
109
+ // (handles both project-root paths and subdirectory paths like Assets/Subdir/)
110
+ const assetsDir = path.join(project_path, 'Assets');
111
+ if ((0, fs_1.existsSync)(assetsDir)) {
112
+ walk(assetsDir);
113
+ }
114
+ else {
115
+ walk(project_path);
116
+ }
117
+ // Also check ProjectSettings/ for .asset files
118
+ if (extSet.has('.asset')) {
119
+ const settingsDir = path.join(project_path, 'ProjectSettings');
120
+ if ((0, fs_1.existsSync)(settingsDir)) {
121
+ walk(settingsDir);
122
+ }
123
+ }
124
+ return result;
125
+ }
126
+ /**
127
+ * Search across all scene/prefab files in a Unity project for GameObjects.
128
+ */
129
+ function search_project(options) {
130
+ const { project_path, name, exact = false, component, tag, layer, file_type = 'all', max_matches, } = options;
131
+ if (max_matches !== undefined && max_matches < 1) {
132
+ return {
133
+ success: false,
134
+ project_path,
135
+ total_files_scanned: 0,
136
+ total_matches: 0,
137
+ cursor: 0,
138
+ truncated: false,
139
+ matches: [],
140
+ error: '--max-matches must be a positive integer (>= 1)',
141
+ };
142
+ }
143
+ if (name !== undefined && name.trim() === '') {
144
+ return {
145
+ success: false,
146
+ project_path,
147
+ total_files_scanned: 0,
148
+ total_matches: 0,
149
+ cursor: 0,
150
+ truncated: false,
151
+ matches: [],
152
+ error: 'Name pattern must not be empty',
153
+ };
154
+ }
155
+ if (!(0, fs_1.existsSync)(project_path)) {
156
+ return {
157
+ success: false,
158
+ project_path,
159
+ total_files_scanned: 0,
160
+ total_matches: 0,
161
+ cursor: 0,
162
+ truncated: false,
163
+ matches: [],
164
+ error: `Project path not found: ${project_path}`,
165
+ };
166
+ }
167
+ // Extension map for asset file types (non-scene/prefab)
168
+ const ASSET_TYPE_EXTENSIONS = {
169
+ mat: ['.mat'],
170
+ anim: ['.anim'],
171
+ controller: ['.controller'],
172
+ asset: ['.asset'],
173
+ };
174
+ // For asset types (mat, anim, controller, asset), use simple file walk + name matching
175
+ const isAssetType = file_type in ASSET_TYPE_EXTENSIONS;
176
+ if (isAssetType) {
177
+ const extensions = ASSET_TYPE_EXTENSIONS[file_type];
178
+ const files = walk_project_files(project_path, extensions);
179
+ const matches = [];
180
+ for (const file of files) {
181
+ const relPath = path.relative(project_path, file);
182
+ const fileName = path.basename(file, path.extname(file));
183
+ // Apply name filter if specified
184
+ if (name) {
185
+ const nameLower = name.toLowerCase();
186
+ const hasWildcard = name.includes('*') || name.includes('?');
187
+ if (hasWildcard) {
188
+ if (!(0, utils_1.glob_match)(name, fileName))
189
+ continue;
190
+ }
191
+ else if (exact) {
192
+ if (fileName !== name)
193
+ continue;
194
+ }
195
+ else {
196
+ if (!fileName.toLowerCase().includes(nameLower))
197
+ continue;
198
+ }
199
+ }
200
+ // Try to extract m_Name from the first ~20 lines for display
201
+ let display_name = fileName;
202
+ try {
203
+ const content = (0, fs_1.readFileSync)(file, 'utf-8');
204
+ const nameMatch = /^\s*m_Name:\s*(.+)$/m.exec(content.slice(0, 2000));
205
+ if (nameMatch)
206
+ display_name = nameMatch[1].trim();
207
+ }
208
+ catch { /* use filename */ }
209
+ matches.push({
210
+ file: relPath,
211
+ game_object: display_name,
212
+ file_id: '0',
213
+ });
214
+ if (max_matches !== undefined && matches.length >= max_matches)
215
+ break;
216
+ }
217
+ return {
218
+ success: true,
219
+ project_path,
220
+ total_files_scanned: files.length,
221
+ total_matches: matches.length,
222
+ cursor: 0,
223
+ truncated: max_matches !== undefined && matches.length >= max_matches,
224
+ matches,
225
+ };
226
+ }
227
+ // Scene/prefab types require the native scanner
228
+ if (!(0, scanner_1.isNativeModuleAvailable)()) {
229
+ return {
230
+ success: false,
231
+ project_path,
232
+ total_files_scanned: 0,
233
+ total_matches: 0,
234
+ cursor: 0,
235
+ truncated: false,
236
+ matches: [],
237
+ error: 'Native scanner module not available. Run bun install in the project root.',
238
+ };
239
+ }
240
+ // Determine extensions to scan (scene/prefab types use the scanner)
241
+ const extensions = [];
242
+ if (file_type === 'scene' || file_type === 'all')
243
+ extensions.push('.unity');
244
+ if (file_type === 'prefab' || file_type === 'all')
245
+ extensions.push('.prefab');
246
+ const files = walk_project_files(project_path, extensions);
247
+ const scanner = new scanner_1.UnityScanner();
248
+ const matches = [];
249
+ let files_with_errors = 0;
250
+ for (const file of files) {
251
+ try {
252
+ let gameObjects;
253
+ // Three-path search strategy:
254
+ // 1. Name-only: find_by_name (fast — regex match, no block extraction)
255
+ // 2. Tag/layer without component: scan_scene_metadata (medium — GO block only)
256
+ // 3. Component filter: scan_scene_with_components (slow — full extraction)
257
+ const needComponents = !!component;
258
+ const needMetadata = !!(tag || layer !== undefined);
259
+ if (name && !needMetadata && !needComponents) {
260
+ // Fast path: name search only
261
+ gameObjects = scanner.find_by_name(file, name, !exact);
262
+ }
263
+ else if (needComponents) {
264
+ // Slow path: need full component data
265
+ gameObjects = scanner.scan_scene_with_components(file);
266
+ // If name filter is also specified, post-filter by name
267
+ if (name && !(0, utils_1.is_match_all)(name)) {
268
+ const nameLower = name.toLowerCase();
269
+ const hasWildcard = name.includes('*') || name.includes('?');
270
+ gameObjects = gameObjects.filter((go) => {
271
+ if (!go.name)
272
+ return false;
273
+ if (hasWildcard) {
274
+ return (0, utils_1.glob_match)(name, go.name);
275
+ }
276
+ if (exact) {
277
+ return go.name === name;
278
+ }
279
+ return go.name.toLowerCase().includes(nameLower);
280
+ });
281
+ }
282
+ }
283
+ else if (needMetadata) {
284
+ // Medium path: tag/layer only — no component extraction
285
+ gameObjects = scanner.scan_scene_metadata(file);
286
+ // If name filter is also specified, post-filter by name
287
+ if (name && !(0, utils_1.is_match_all)(name)) {
288
+ const nameLower = name.toLowerCase();
289
+ const hasWildcard = name.includes('*') || name.includes('?');
290
+ gameObjects = gameObjects.filter((go) => {
291
+ if (!go.name)
292
+ return false;
293
+ if (hasWildcard) {
294
+ return (0, utils_1.glob_match)(name, go.name);
295
+ }
296
+ if (exact) {
297
+ return go.name === name;
298
+ }
299
+ return go.name.toLowerCase().includes(nameLower);
300
+ });
301
+ }
302
+ }
303
+ else {
304
+ gameObjects = scanner.scan_scene_minimal(file);
305
+ }
306
+ // Apply filters
307
+ for (const go of gameObjects) {
308
+ // When using name search, results are FindResult union type.
309
+ // Tag/layer/component filters only apply to GameObjects (not PrefabInstances).
310
+ const isFindResult = 'resultType' in go;
311
+ const isPrefab = isFindResult && go.resultType === 'PrefabInstance';
312
+ if (isPrefab && (component || tag || layer !== undefined)) {
313
+ continue;
314
+ }
315
+ // Component filter (supports glob patterns: * and ?)
316
+ if (component) {
317
+ if ('components' in go && go.components) {
318
+ const hasComponent = go.components.some((c) => (0, utils_1.glob_match)(component, c.type));
319
+ if (!hasComponent)
320
+ continue;
321
+ }
322
+ else {
323
+ continue;
324
+ }
325
+ }
326
+ // Tag filter — skip if tag is missing or doesn't match
327
+ if (tag) {
328
+ if (!('tag' in go) || go.tag !== tag)
329
+ continue;
330
+ }
331
+ // Layer filter — skip if layer is missing or doesn't match
332
+ if (layer !== undefined) {
333
+ if (!('layer' in go) || go.layer !== layer)
334
+ continue;
335
+ }
336
+ const relPath = path.relative(project_path, file);
337
+ const fileId = isFindResult
338
+ ? go.fileId
339
+ : go.file_id;
340
+ const match = {
341
+ file: relPath,
342
+ game_object: go.name,
343
+ file_id: fileId,
344
+ tag: 'tag' in go ? go.tag : undefined,
345
+ layer: 'layer' in go ? go.layer : undefined,
346
+ };
347
+ // Include component types if available
348
+ if ('components' in go && go.components) {
349
+ match.components = go.components.map((c) => c.type);
350
+ }
351
+ matches.push(match);
352
+ if (max_matches !== undefined && matches.length >= max_matches)
353
+ break;
354
+ }
355
+ if (max_matches !== undefined && matches.length >= max_matches)
356
+ break;
357
+ }
358
+ catch {
359
+ files_with_errors++;
360
+ continue;
361
+ }
362
+ }
363
+ return {
364
+ success: true,
365
+ project_path,
366
+ total_files_scanned: files.length,
367
+ total_matches: matches.length,
368
+ files_with_errors: files_with_errors > 0 ? files_with_errors : undefined,
369
+ cursor: 0,
370
+ truncated: max_matches !== undefined && matches.length >= max_matches,
371
+ matches,
372
+ };
373
+ }
374
+ // ========== Project Grep ==========
375
+ /**
376
+ * Search for a regex pattern across project files.
377
+ * Uses native Rust grep when available, falls back to JS implementation.
378
+ */
379
+ function grep_project(options) {
380
+ // Try native Rust grep first
381
+ const nativeGrep = (0, scanner_1.getNativeGrepProject)();
382
+ if (nativeGrep) {
383
+ try {
384
+ const nativeResult = nativeGrep({
385
+ projectPath: options.project_path,
386
+ pattern: options.pattern,
387
+ fileType: options.file_type,
388
+ maxResults: options.max_results,
389
+ contextLines: options.context_lines,
390
+ });
391
+ // Map camelCase napi result to snake_case TS types
392
+ return {
393
+ success: nativeResult.success,
394
+ project_path: nativeResult.projectPath,
395
+ pattern: nativeResult.pattern,
396
+ total_files_scanned: nativeResult.totalFilesScanned,
397
+ total_matches: nativeResult.totalMatches,
398
+ truncated: nativeResult.truncated,
399
+ error: nativeResult.error,
400
+ matches: nativeResult.matches.map((m) => ({
401
+ file: m.file,
402
+ line_number: m.lineNumber,
403
+ line: m.line,
404
+ context_before: m.contextBefore,
405
+ context_after: m.contextAfter,
406
+ })),
407
+ };
408
+ }
409
+ catch {
410
+ // Fall through to JS implementation
411
+ }
412
+ }
413
+ return grep_project_js(options);
414
+ }
415
+ /** JS fallback implementation of grep_project. */
416
+ function grep_project_js(options) {
417
+ const { project_path, pattern, file_type = 'all', max_results = 100, context_lines = 0, } = options;
418
+ if (!(0, fs_1.existsSync)(project_path)) {
419
+ return {
420
+ success: false,
421
+ project_path,
422
+ pattern,
423
+ total_files_scanned: 0,
424
+ total_matches: 0,
425
+ truncated: false,
426
+ matches: [],
427
+ error: `Project path not found: ${project_path}`,
428
+ };
429
+ }
430
+ // Compile regex
431
+ let regex;
432
+ try {
433
+ regex = new RegExp(pattern, 'i');
434
+ }
435
+ catch (err) {
436
+ return {
437
+ success: false,
438
+ project_path,
439
+ pattern,
440
+ total_files_scanned: 0,
441
+ total_matches: 0,
442
+ truncated: false,
443
+ matches: [],
444
+ error: `Invalid regex pattern: ${err instanceof Error ? err.message : String(err)}`,
445
+ };
446
+ }
447
+ // Determine extensions
448
+ const EXTENSION_MAP = {
449
+ cs: ['.cs'],
450
+ yaml: [
451
+ '.yaml', '.yml', '.unity', '.prefab', '.asset',
452
+ '.mat', '.anim', '.controller', '.overrideController',
453
+ '.mask', '.mixer', '.lighting', '.preset', '.signal',
454
+ '.playable', '.renderTexture', '.flare', '.guiskin',
455
+ '.terrainlayer', '.cubemap',
456
+ ],
457
+ unity: ['.unity'],
458
+ prefab: ['.prefab'],
459
+ asset: ['.asset'],
460
+ mat: ['.mat'],
461
+ anim: ['.anim'],
462
+ controller: ['.controller'],
463
+ all: [
464
+ '.cs', '.unity', '.prefab', '.asset', '.mat', '.anim', '.controller',
465
+ '.yaml', '.yml', '.txt', '.json', '.xml', '.shader', '.cginc', '.hlsl',
466
+ '.compute', '.asmdef', '.asmref',
467
+ ],
468
+ };
469
+ const extensions = EXTENSION_MAP[file_type] || EXTENSION_MAP.all;
470
+ const files = walk_project_files(project_path, extensions);
471
+ const matches = [];
472
+ let totalFilesScanned = 0;
473
+ let truncated = false;
474
+ for (const file of files) {
475
+ // Skip binary files
476
+ const ext = path.extname(file).toLowerCase();
477
+ if (BINARY_EXTENSIONS.has(ext))
478
+ continue;
479
+ totalFilesScanned++;
480
+ let content;
481
+ try {
482
+ content = (0, fs_1.readFileSync)(file, 'utf-8');
483
+ }
484
+ catch {
485
+ continue;
486
+ }
487
+ const lines = content.split('\n');
488
+ const relPath = path.relative(project_path, file);
489
+ for (let i = 0; i < lines.length; i++) {
490
+ if (regex.test(lines[i])) {
491
+ // Truncate long lines for token efficiency
492
+ let line = lines[i];
493
+ if (line.length > 200) {
494
+ line = line.substring(0, 200) + '...';
495
+ }
496
+ const match = {
497
+ file: relPath,
498
+ line_number: i + 1,
499
+ line,
500
+ };
501
+ // Add context lines if requested
502
+ if (context_lines > 0) {
503
+ match.context_before = [];
504
+ match.context_after = [];
505
+ for (let j = Math.max(0, i - context_lines); j < i; j++) {
506
+ let ctxLine = lines[j];
507
+ if (ctxLine.length > 200)
508
+ ctxLine = ctxLine.substring(0, 200) + '...';
509
+ match.context_before.push(ctxLine);
510
+ }
511
+ for (let j = i + 1; j <= Math.min(lines.length - 1, i + context_lines); j++) {
512
+ let ctxLine = lines[j];
513
+ if (ctxLine.length > 200)
514
+ ctxLine = ctxLine.substring(0, 200) + '...';
515
+ match.context_after.push(ctxLine);
516
+ }
517
+ }
518
+ matches.push(match);
519
+ if (matches.length >= max_results) {
520
+ truncated = true;
521
+ break;
522
+ }
523
+ }
524
+ }
525
+ if (truncated)
526
+ break;
527
+ }
528
+ return {
529
+ success: true,
530
+ project_path,
531
+ pattern,
532
+ total_files_scanned: totalFilesScanned,
533
+ total_matches: matches.length,
534
+ truncated,
535
+ matches,
536
+ };
537
+ }
538
+ //# sourceMappingURL=project-search.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project-search.js","sourceRoot":"","sources":["../src/project-search.ts"],"names":[],"mappings":"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"}