trace-to-skill 0.1.26 → 0.1.34

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.
@@ -1,7 +1,9 @@
1
- import { promises as fs } from "node:fs";
1
+ import { constants as fsConstants, promises as fs } from "node:fs";
2
+ import os from "node:os";
2
3
  import path from "node:path";
3
4
  import { doctorRepo } from "./doctor.js";
4
5
  const SKIP_DIRS = new Set([".git", "node_modules", "dist", "coverage", ".next", "build"]);
6
+ const INSTRUCTION_SIZE_WARN_BYTES = 24000;
5
7
  export async function lintAgents(target = process.cwd()) {
6
8
  const root = path.resolve(target);
7
9
  const files = await listFiles(root);
@@ -15,6 +17,9 @@ export async function lintAgents(target = process.cwd()) {
15
17
  finding.kind === "secret_exposure" ||
16
18
  finding.kind === "hidden_unicode" ||
17
19
  finding.kind === "prompt_injection");
20
+ findings.push(...(await detectInstructionFileRisks(root, instructionFiles)));
21
+ findings.push(...(await detectMcpConfigDiagnostics(root, mcpConfigs)));
22
+ findings.push(...(await detectCodexConfigDiagnostics(root, mcpConfigs)));
18
23
  const score = calculateAgentsLintScore(checks, findings);
19
24
  const status = statusFrom(score, checks, findings);
20
25
  return {
@@ -148,9 +153,578 @@ function isInstructionFile(file) {
148
153
  }
149
154
  function isMcpConfigCandidate(file) {
150
155
  return /(^|\/)(mcp|\.mcp|mcp-config|model-context)\.(json|jsonc)$/i.test(file) ||
151
- /(^|\/)\.cursor\/mcp\.json$/i.test(file);
156
+ /(^|\/)\.cursor\/mcp\.json$/i.test(file) ||
157
+ /(^|\/)\.codex\/config\.toml$/i.test(file);
152
158
  }
153
159
  function isEvidenceArchive(file) {
154
160
  return /^(fixtures|examples|runs)\//i.test(file);
155
161
  }
162
+ async function detectInstructionFileRisks(root, instructionFiles) {
163
+ const findings = [];
164
+ const missingPathEvidence = [];
165
+ const largeFileEvidence = [];
166
+ for (const file of instructionFiles) {
167
+ const absolute = path.join(root, file);
168
+ const content = await fs.readFile(absolute, "utf8");
169
+ const lines = content.split(/\r?\n/);
170
+ if (Buffer.byteLength(content, "utf8") > INSTRUCTION_SIZE_WARN_BYTES) {
171
+ largeFileEvidence.push({
172
+ file,
173
+ line: 1,
174
+ excerpt: `${file} is ${Buffer.byteLength(content, "utf8")} bytes; split long instructions into smaller scoped files or keep critical rules near the top.`
175
+ });
176
+ }
177
+ for (const reference of collectPathReferences(lines)) {
178
+ if (!(await pathExists(root, reference.value))) {
179
+ missingPathEvidence.push({
180
+ file,
181
+ line: reference.line,
182
+ excerpt: `referenced path does not exist: ${reference.value}`
183
+ });
184
+ }
185
+ }
186
+ }
187
+ if (missingPathEvidence.length > 0) {
188
+ findings.push({
189
+ kind: "hallucinated_file",
190
+ severity: "medium",
191
+ title: "Agent instruction references missing paths",
192
+ why: "Codex and other agents lose time or follow stale guidance when AGENTS.md or tool instructions point at files that no longer exist.",
193
+ evidence: missingPathEvidence.slice(0, 8),
194
+ suggestedRule: "Keep paths in agent instruction files verified; run trace-to-skill lint-agents after moving or deleting referenced files."
195
+ });
196
+ }
197
+ if (largeFileEvidence.length > 0) {
198
+ findings.push({
199
+ kind: "ignored_instruction",
200
+ severity: "medium",
201
+ title: "Large agent instruction file may be truncated or ignored",
202
+ why: "Very large instruction files make it harder for agents to preserve high-priority rules and can hide important guidance near the end.",
203
+ evidence: largeFileEvidence,
204
+ suggestedRule: "Keep critical repository instructions short, put must-follow validation rules near the top, and split long reference material into linked docs."
205
+ });
206
+ }
207
+ return findings;
208
+ }
209
+ function collectPathReferences(lines) {
210
+ const references = [];
211
+ const seen = new Set();
212
+ lines.forEach((line, index) => {
213
+ for (const match of line.matchAll(/`([^`\n]+)`/g)) {
214
+ addPathReference(references, seen, index + 1, match[1]);
215
+ }
216
+ for (const match of line.matchAll(/\[[^\]]+\]\(([^)]+)\)/g)) {
217
+ addPathReference(references, seen, index + 1, match[1]);
218
+ }
219
+ });
220
+ return references;
221
+ }
222
+ function addPathReference(references, seen, line, raw) {
223
+ const value = normalizePathReference(raw);
224
+ if (!value || seen.has(value)) {
225
+ return;
226
+ }
227
+ seen.add(value);
228
+ references.push({ line, value });
229
+ }
230
+ function normalizePathReference(raw) {
231
+ const value = raw.trim().replace(/^file:\/\//, "").replace(/[),.;:]+$/, "");
232
+ if (!value ||
233
+ value.startsWith("http://") ||
234
+ value.startsWith("https://") ||
235
+ value.startsWith("mailto:") ||
236
+ value.startsWith("#") ||
237
+ value.includes("*") ||
238
+ value.includes("$") ||
239
+ value.includes(" ") ||
240
+ value.startsWith("@") ||
241
+ value.startsWith("~") ||
242
+ path.isAbsolute(value)) {
243
+ return undefined;
244
+ }
245
+ if (!/^[A-Za-z0-9._/@-]+(?:\/[A-Za-z0-9._@-]+)*$/.test(value)) {
246
+ return undefined;
247
+ }
248
+ const hasPathSignal = value.includes("/") || /\.[A-Za-z0-9]{1,8}$/.test(value);
249
+ return hasPathSignal ? value.replace(/^\.\//, "") : undefined;
250
+ }
251
+ async function pathExists(root, reference) {
252
+ try {
253
+ await fs.access(path.join(root, reference));
254
+ return true;
255
+ }
256
+ catch {
257
+ return false;
258
+ }
259
+ }
260
+ async function detectMcpConfigDiagnostics(root, mcpConfigs) {
261
+ const evidence = [];
262
+ for (const file of mcpConfigs) {
263
+ const absolute = path.join(root, file);
264
+ const content = await fs.readFile(absolute, "utf8");
265
+ const parsed = parseMcpConfig(file, content);
266
+ if (!parsed) {
267
+ evidence.push({
268
+ file,
269
+ line: 1,
270
+ excerpt: `MCP config could not be parsed as ${file.endsWith(".toml") ? "TOML" : "JSON/JSONC"}.`
271
+ });
272
+ continue;
273
+ }
274
+ if (isTomlConfig(file) && !asObject(parsed.mcp_servers)) {
275
+ continue;
276
+ }
277
+ if (!isTomlConfig(file) && asObject(parsed.mcp_servers) && !asObject(parsed.mcpServers)) {
278
+ evidence.push({
279
+ file,
280
+ line: findLine(content, "mcp_servers"),
281
+ excerpt: "uses mcp_servers; Codex plugin MCP configs commonly expect mcpServers or a direct top-level server map"
282
+ });
283
+ }
284
+ const servers = discoverMcpServers(parsed);
285
+ if (!servers) {
286
+ evidence.push({
287
+ file,
288
+ line: 1,
289
+ excerpt: "no MCP server map found; expected mcpServers, servers, or a direct top-level server map"
290
+ });
291
+ continue;
292
+ }
293
+ for (const [name, rawServer] of Object.entries(servers)) {
294
+ const server = asObject(rawServer);
295
+ if (!server) {
296
+ evidence.push({
297
+ file,
298
+ line: findLine(content, name),
299
+ excerpt: `server "${name}" is not an object`
300
+ });
301
+ continue;
302
+ }
303
+ if (isTomlConfig(file) && commandLooksLocal(server.command) && typeof server.cwd !== "string") {
304
+ evidence.push({
305
+ file,
306
+ line: findLine(content, name),
307
+ excerpt: `server "${name}" in project .codex/config.toml uses a local stdio command without explicit cwd`
308
+ });
309
+ }
310
+ evidence.push(...(await inspectMcpServer(root, file, content, name, server)));
311
+ }
312
+ }
313
+ if (evidence.length === 0) {
314
+ return [];
315
+ }
316
+ return [{
317
+ kind: "mcp_risk",
318
+ severity: "medium",
319
+ title: "MCP config has unresolved startup inputs",
320
+ why: "Codex MCP failures are hard to debug when config shape, command paths, cwd values, or required environment variables are invalid before the server even starts.",
321
+ evidence: evidence.slice(0, 10),
322
+ suggestedRule: "Before enabling an MCP server for coding agents, verify config key casing, command availability, cwd existence, and required environment variables with trace-to-skill lint-agents."
323
+ }];
324
+ }
325
+ async function detectCodexConfigDiagnostics(root, configFiles) {
326
+ const evidence = [];
327
+ for (const file of configFiles.filter((item) => isCodexTomlConfig(item))) {
328
+ const absolute = path.join(root, file);
329
+ const content = await fs.readFile(absolute, "utf8");
330
+ const lines = parseTomlLines(content);
331
+ const permissions = collectPermissionProfiles(lines);
332
+ const defaultPermissions = findTomlAssignment(lines, "default_permissions");
333
+ if (defaultPermissions && typeof defaultPermissions.value === "string" && !permissions.has(defaultPermissions.value)) {
334
+ evidence.push({
335
+ file,
336
+ line: defaultPermissions.line,
337
+ excerpt: `default_permissions references missing permissions profile: ${defaultPermissions.value}`
338
+ });
339
+ }
340
+ for (const item of lines) {
341
+ if (item.section === "features" && item.key === "codex_hooks") {
342
+ evidence.push({
343
+ file,
344
+ line: item.line,
345
+ excerpt: "deprecated [features].codex_hooks key is present; use [features].hooks instead"
346
+ });
347
+ }
348
+ if (item.section?.startsWith("projects.") && item.key === "trusted_level") {
349
+ evidence.push({
350
+ file,
351
+ line: item.line,
352
+ excerpt: "projects.* trusted_level is stored in config.toml; this can pollute synced dotfiles with machine-specific project metadata"
353
+ });
354
+ }
355
+ }
356
+ for (const section of collectSections(lines)) {
357
+ if (section.startsWith("projects.") && /\/|\\|:/.test(section)) {
358
+ evidence.push({
359
+ file,
360
+ line: findLine(content, section),
361
+ excerpt: `project-specific config section appears to contain a machine-local path: [${section}]`
362
+ });
363
+ }
364
+ }
365
+ }
366
+ if (evidence.length === 0) {
367
+ return [];
368
+ }
369
+ return [{
370
+ kind: "ignored_instruction",
371
+ severity: "medium",
372
+ title: "Codex config has drift-prone settings",
373
+ why: "Codex config.toml issues are hard to debug when deprecated feature flags, missing permission profiles, or machine-local project trust metadata are mixed into repository or dotfiles config.",
374
+ evidence: evidence.slice(0, 10),
375
+ suggestedRule: "Keep Codex config portable: migrate [features].codex_hooks to [features].hooks, define every default_permissions profile, and avoid syncing projects.* trusted_level entries."
376
+ }];
377
+ }
378
+ async function inspectMcpServer(root, file, content, name, server) {
379
+ const evidence = [];
380
+ const hasUrl = typeof server.url === "string" || typeof server.httpUrl === "string";
381
+ const command = typeof server.command === "string" ? server.command.trim() : "";
382
+ if (!command && !hasUrl) {
383
+ evidence.push({
384
+ file,
385
+ line: findLine(content, name),
386
+ excerpt: `server "${name}" has neither command nor url`
387
+ });
388
+ }
389
+ const commandIssue = startupStringIssue(command);
390
+ if (commandIssue) {
391
+ evidence.push({
392
+ file,
393
+ line: findLine(content, command),
394
+ excerpt: `server "${name}" command ${commandIssue}: ${command}`
395
+ });
396
+ }
397
+ else if (command && !(await commandExists(root, command))) {
398
+ evidence.push({
399
+ file,
400
+ line: findLine(content, command),
401
+ excerpt: `server "${name}" command is not resolvable without starting it: ${command}`
402
+ });
403
+ }
404
+ if (typeof server.cwd === "string" && server.cwd.trim()) {
405
+ const cwd = server.cwd.trim();
406
+ const cwdIssue = startupStringIssue(cwd);
407
+ if (cwdIssue) {
408
+ evidence.push({
409
+ file,
410
+ line: findLine(content, cwd),
411
+ excerpt: `server "${name}" cwd ${cwdIssue}: ${cwd}`
412
+ });
413
+ }
414
+ else if (!(await localPathExists(root, cwd))) {
415
+ evidence.push({
416
+ file,
417
+ line: findLine(content, cwd),
418
+ excerpt: `server "${name}" cwd does not exist: ${cwd}`
419
+ });
420
+ }
421
+ }
422
+ if (Array.isArray(server.args)) {
423
+ server.args.forEach((value) => {
424
+ if (typeof value !== "string") {
425
+ return;
426
+ }
427
+ const issue = startupStringIssue(value);
428
+ if (issue) {
429
+ evidence.push({
430
+ file,
431
+ line: findLine(content, value),
432
+ excerpt: `server "${name}" arg ${issue}: ${value}`
433
+ });
434
+ }
435
+ });
436
+ }
437
+ const env = asObject(server.env);
438
+ if (env) {
439
+ for (const [key, value] of Object.entries(env)) {
440
+ const issue = envValueIssue(key, value);
441
+ if (issue) {
442
+ evidence.push({
443
+ file,
444
+ line: findLine(content, key),
445
+ excerpt: `server "${name}" env ${key}: ${issue}`
446
+ });
447
+ }
448
+ }
449
+ }
450
+ return evidence;
451
+ }
452
+ function discoverMcpServers(parsed) {
453
+ const wrapped = asObject(parsed.mcpServers) ?? asObject(parsed.servers) ?? asObject(parsed.mcp_servers);
454
+ if (wrapped) {
455
+ return wrapped;
456
+ }
457
+ const entries = Object.entries(parsed).filter(([key, value]) => !key.startsWith("$") && asObject(value));
458
+ if (entries.length > 0 && entries.every(([, value]) => looksLikeMcpServer(value))) {
459
+ return Object.fromEntries(entries);
460
+ }
461
+ return undefined;
462
+ }
463
+ function looksLikeMcpServer(value) {
464
+ const server = asObject(value);
465
+ return Boolean(server && (typeof server.command === "string" ||
466
+ typeof server.url === "string" ||
467
+ typeof server.httpUrl === "string" ||
468
+ Array.isArray(server.args) ||
469
+ asObject(server.env)));
470
+ }
471
+ function commandLooksLocal(value) {
472
+ return typeof value === "string" && (value.includes("/") || value.includes("\\") || value === "php" || value === "node" || value === "python" || value === "python3");
473
+ }
474
+ async function commandExists(root, command) {
475
+ if (command.includes("/") || command.includes("\\")) {
476
+ return localPathExists(root, command);
477
+ }
478
+ const paths = (process.env.PATH ?? "").split(path.delimiter).filter(Boolean);
479
+ const extensions = process.platform === "win32"
480
+ ? (process.env.PATHEXT ?? ".EXE;.CMD;.BAT;.COM").split(";")
481
+ : [""];
482
+ for (const directory of paths) {
483
+ for (const extension of extensions) {
484
+ const candidate = path.join(directory, `${command}${extension}`);
485
+ if (await isExecutableFile(candidate)) {
486
+ return true;
487
+ }
488
+ }
489
+ }
490
+ return false;
491
+ }
492
+ async function localPathExists(root, value) {
493
+ const expanded = value === "~" || value.startsWith("~/")
494
+ ? path.join(os.homedir(), value.slice(2))
495
+ : value;
496
+ const candidate = path.isAbsolute(expanded) ? expanded : path.join(root, expanded);
497
+ try {
498
+ await fs.access(candidate);
499
+ return true;
500
+ }
501
+ catch {
502
+ return false;
503
+ }
504
+ }
505
+ async function isExecutableFile(candidate) {
506
+ try {
507
+ const stat = await fs.stat(candidate);
508
+ if (!stat.isFile()) {
509
+ return false;
510
+ }
511
+ if (process.platform === "win32") {
512
+ return true;
513
+ }
514
+ await fs.access(candidate, fsConstants.X_OK);
515
+ return true;
516
+ }
517
+ catch {
518
+ return false;
519
+ }
520
+ }
521
+ function envValueIssue(key, value) {
522
+ if (typeof value !== "string") {
523
+ return "value should be a string so the launcher receives the intended environment variable";
524
+ }
525
+ const trimmed = value.trim();
526
+ if (!trimmed) {
527
+ return "empty value";
528
+ }
529
+ if (/^(todo|tbd|changeme|change-me|your[-_ ]?(token|key|secret|password)|example)$/i.test(trimmed)) {
530
+ return "placeholder value";
531
+ }
532
+ const variableReference = /^\$\{?([A-Za-z_][A-Za-z0-9_]*)\}?$/.exec(trimmed);
533
+ if (variableReference && !process.env[variableReference[1]]) {
534
+ return `references unset environment variable ${variableReference[1]}`;
535
+ }
536
+ if (/token|secret|key|password/i.test(key) && /^[A-Za-z0-9_./+=-]{16,}$/.test(trimmed) && !variableReference) {
537
+ return "appears to contain a literal secret; prefer referencing an external environment variable";
538
+ }
539
+ return undefined;
540
+ }
541
+ function startupStringIssue(value) {
542
+ const variableReferences = Array.from(value.matchAll(/\$\{?([A-Za-z_][A-Za-z0-9_]*)\}?/g)).map((match) => match[1]);
543
+ const unresolved = variableReferences.filter((name) => !process.env[name]);
544
+ if (unresolved.length > 0) {
545
+ return `references unset environment variable ${unresolved.join(", ")}`;
546
+ }
547
+ return undefined;
548
+ }
549
+ function parseMcpConfig(file, content) {
550
+ if (isTomlConfig(file)) {
551
+ return parseMcpToml(content);
552
+ }
553
+ return parseJsonObject(stripJsonComments(content));
554
+ }
555
+ function isTomlConfig(file) {
556
+ return /\.toml$/i.test(file);
557
+ }
558
+ function isCodexTomlConfig(file) {
559
+ return /(^|\/)\.codex\/config\.toml$/i.test(file);
560
+ }
561
+ function parseMcpToml(content) {
562
+ const mcpServers = {};
563
+ const lines = content.split(/\r?\n/);
564
+ let currentServer;
565
+ for (const rawLine of lines) {
566
+ const line = stripTomlComment(rawLine).trim();
567
+ if (!line) {
568
+ continue;
569
+ }
570
+ const section = /^\[mcp_servers\.([A-Za-z0-9_.-]+)\]$/.exec(line) ?? /^\[mcpServers\.([A-Za-z0-9_.-]+)\]$/.exec(line);
571
+ if (section) {
572
+ currentServer = {};
573
+ mcpServers[section[1]] = currentServer;
574
+ continue;
575
+ }
576
+ if (line.startsWith("[") && line.endsWith("]")) {
577
+ currentServer = undefined;
578
+ continue;
579
+ }
580
+ if (!currentServer) {
581
+ continue;
582
+ }
583
+ const assignment = /^([A-Za-z0-9_-]+)\s*=\s*(.+)$/.exec(line);
584
+ if (!assignment) {
585
+ continue;
586
+ }
587
+ currentServer[assignment[1]] = parseTomlValue(assignment[2].trim());
588
+ }
589
+ return Object.keys(mcpServers).length > 0 ? { mcp_servers: mcpServers } : {};
590
+ }
591
+ function parseTomlValue(value) {
592
+ if (value.startsWith("\"") || value.startsWith("'")) {
593
+ return parseTomlString(value);
594
+ }
595
+ if (value.startsWith("[")) {
596
+ return parseTomlArray(value);
597
+ }
598
+ if (value === "true") {
599
+ return true;
600
+ }
601
+ if (value === "false") {
602
+ return false;
603
+ }
604
+ return value;
605
+ }
606
+ function parseTomlArray(value) {
607
+ const trimmed = value.trim();
608
+ if (!trimmed.startsWith("[") || !trimmed.endsWith("]")) {
609
+ return [];
610
+ }
611
+ const items = [];
612
+ const pattern = /"((?:\\.|[^"\\])*)"|'((?:\\.|[^'\\])*)'|([^,\s][^,]*)/g;
613
+ const inner = trimmed.slice(1, -1);
614
+ for (const match of inner.matchAll(pattern)) {
615
+ if (match[1] !== undefined) {
616
+ items.push(unescapeTomlString(match[1]));
617
+ }
618
+ else if (match[2] !== undefined) {
619
+ items.push(match[2]);
620
+ }
621
+ else if (match[3] !== undefined) {
622
+ items.push(parseTomlValue(match[3].trim()));
623
+ }
624
+ }
625
+ return items;
626
+ }
627
+ function parseTomlString(value) {
628
+ if (value.startsWith("\"")) {
629
+ const match = /^"((?:\\.|[^"\\])*)"/.exec(value);
630
+ return match ? unescapeTomlString(match[1]) : value;
631
+ }
632
+ const match = /^'([^']*)'/.exec(value);
633
+ return match ? match[1] : value;
634
+ }
635
+ function unescapeTomlString(value) {
636
+ return value
637
+ .replace(/\\"/g, "\"")
638
+ .replace(/\\n/g, "\n")
639
+ .replace(/\\t/g, "\t")
640
+ .replace(/\\\\/g, "\\");
641
+ }
642
+ function stripTomlComment(line) {
643
+ let quote;
644
+ for (let index = 0; index < line.length; index += 1) {
645
+ const char = line[index];
646
+ const previous = line[index - 1];
647
+ if ((char === "\"" || char === "'") && previous !== "\\") {
648
+ quote = quote === char ? undefined : quote ?? char;
649
+ continue;
650
+ }
651
+ if (char === "#" && !quote) {
652
+ return line.slice(0, index);
653
+ }
654
+ }
655
+ return line;
656
+ }
657
+ function parseTomlLines(content) {
658
+ const result = [];
659
+ let currentSection;
660
+ content.split(/\r?\n/).forEach((rawLine, index) => {
661
+ const line = stripTomlComment(rawLine).trim();
662
+ if (!line) {
663
+ return;
664
+ }
665
+ const section = /^\[([^\]]+)\]$/.exec(line);
666
+ if (section) {
667
+ currentSection = section[1];
668
+ result.push({ line: index + 1, section: currentSection });
669
+ return;
670
+ }
671
+ const assignment = /^([A-Za-z0-9_-]+)\s*=\s*(.+)$/.exec(line);
672
+ if (assignment) {
673
+ result.push({
674
+ line: index + 1,
675
+ section: currentSection,
676
+ key: assignment[1],
677
+ value: parseTomlValue(assignment[2].trim())
678
+ });
679
+ }
680
+ });
681
+ return result;
682
+ }
683
+ function collectPermissionProfiles(lines) {
684
+ const profiles = new Set();
685
+ for (const item of lines) {
686
+ if (!item.section) {
687
+ continue;
688
+ }
689
+ const match = /^permissions\.((?:"[^"]+"|'[^']+'|[^.]+))/.exec(item.section);
690
+ if (match) {
691
+ profiles.add(unquoteTomlBarePart(match[1]));
692
+ }
693
+ }
694
+ return profiles;
695
+ }
696
+ function findTomlAssignment(lines, key) {
697
+ return lines.find((item) => item.key === key);
698
+ }
699
+ function collectSections(lines) {
700
+ return lines.filter((item) => item.section && !item.key).map((item) => item.section);
701
+ }
702
+ function unquoteTomlBarePart(value) {
703
+ if (value.startsWith("\"") || value.startsWith("'")) {
704
+ return parseTomlString(value);
705
+ }
706
+ return value;
707
+ }
708
+ function stripJsonComments(content) {
709
+ return content
710
+ .replace(/\/\*[\s\S]*?\*\//g, "")
711
+ .replace(/^\s*\/\/.*$/gm, "");
712
+ }
713
+ function parseJsonObject(content) {
714
+ try {
715
+ const parsed = JSON.parse(content);
716
+ return asObject(parsed);
717
+ }
718
+ catch {
719
+ return undefined;
720
+ }
721
+ }
722
+ function asObject(value) {
723
+ return value && typeof value === "object" && !Array.isArray(value) ? value : undefined;
724
+ }
725
+ function findLine(content, needle) {
726
+ const lines = content.split(/\r?\n/);
727
+ const index = lines.findIndex((line) => line.includes(needle));
728
+ return index >= 0 ? index + 1 : 1;
729
+ }
156
730
  //# sourceMappingURL=agentsLint.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"agentsLint.js","sourceRoot":"","sources":["../../src/agentsLint.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agentsLint.js","sourceRoot":"","sources":["../../src/agentsLint.ts"],"names":[],"mappings":"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"}