renma 0.17.0 → 0.18.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 (171) hide show
  1. package/CHANGELOG.md +152 -1
  2. package/README.md +11 -1
  3. package/architecture.md +21 -10
  4. package/design.md +52 -34
  5. package/dist/agent-skills.d.ts +1 -1
  6. package/dist/agent-skills.d.ts.map +1 -1
  7. package/dist/agent-skills.js +28 -8
  8. package/dist/agent-skills.js.map +1 -1
  9. package/dist/catalog.d.ts +1 -1
  10. package/dist/catalog.d.ts.map +1 -1
  11. package/dist/catalog.js +120 -12
  12. package/dist/catalog.js.map +1 -1
  13. package/dist/cli-help.d.ts +12 -8
  14. package/dist/cli-help.d.ts.map +1 -1
  15. package/dist/cli-help.js +23 -1
  16. package/dist/cli-help.js.map +1 -1
  17. package/dist/cli.d.ts.map +1 -1
  18. package/dist/cli.js +23 -0
  19. package/dist/cli.js.map +1 -1
  20. package/dist/commands/bom.d.ts +6 -3
  21. package/dist/commands/bom.d.ts.map +1 -1
  22. package/dist/commands/bom.js +27 -7
  23. package/dist/commands/bom.js.map +1 -1
  24. package/dist/commands/catalog.d.ts +1 -1
  25. package/dist/commands/catalog.d.ts.map +1 -1
  26. package/dist/commands/catalog.js +7 -1
  27. package/dist/commands/catalog.js.map +1 -1
  28. package/dist/commands/ci-report.d.ts.map +1 -1
  29. package/dist/commands/ci-report.js +18 -5
  30. package/dist/commands/ci-report.js.map +1 -1
  31. package/dist/commands/diff.js +8 -2
  32. package/dist/commands/diff.js.map +1 -1
  33. package/dist/commands/graph.d.ts +6 -2
  34. package/dist/commands/graph.d.ts.map +1 -1
  35. package/dist/commands/graph.js +23 -2
  36. package/dist/commands/graph.js.map +1 -1
  37. package/dist/commands/inspect.d.ts.map +1 -1
  38. package/dist/commands/inspect.js +2 -0
  39. package/dist/commands/inspect.js.map +1 -1
  40. package/dist/commands/ownership.d.ts +4 -3
  41. package/dist/commands/ownership.d.ts.map +1 -1
  42. package/dist/commands/ownership.js +27 -23
  43. package/dist/commands/ownership.js.map +1 -1
  44. package/dist/commands/readiness.d.ts +2 -1
  45. package/dist/commands/readiness.d.ts.map +1 -1
  46. package/dist/commands/readiness.js +98 -30
  47. package/dist/commands/readiness.js.map +1 -1
  48. package/dist/commands/scaffold.d.ts +3 -0
  49. package/dist/commands/scaffold.d.ts.map +1 -1
  50. package/dist/commands/scaffold.js +44 -9
  51. package/dist/commands/scaffold.js.map +1 -1
  52. package/dist/commands/suggest-metadata.d.ts.map +1 -1
  53. package/dist/commands/suggest-metadata.js +2 -0
  54. package/dist/commands/suggest-metadata.js.map +1 -1
  55. package/dist/commands/trust-graph.d.ts.map +1 -1
  56. package/dist/commands/trust-graph.js +12 -0
  57. package/dist/commands/trust-graph.js.map +1 -1
  58. package/dist/config.d.ts.map +1 -1
  59. package/dist/config.js +10 -3
  60. package/dist/config.js.map +1 -1
  61. package/dist/context-lens.d.ts +1 -0
  62. package/dist/context-lens.d.ts.map +1 -1
  63. package/dist/context-lens.js +19 -1
  64. package/dist/context-lens.js.map +1 -1
  65. package/dist/diagnostic-ids.d.ts +9 -0
  66. package/dist/diagnostic-ids.d.ts.map +1 -1
  67. package/dist/diagnostic-ids.js +9 -0
  68. package/dist/diagnostic-ids.js.map +1 -1
  69. package/dist/discovery.d.ts +5 -0
  70. package/dist/discovery.d.ts.map +1 -1
  71. package/dist/discovery.js +108 -65
  72. package/dist/discovery.js.map +1 -1
  73. package/dist/markdown.d.ts.map +1 -1
  74. package/dist/markdown.js +15 -0
  75. package/dist/markdown.js.map +1 -1
  76. package/dist/metadata.d.ts +15 -1
  77. package/dist/metadata.d.ts.map +1 -1
  78. package/dist/metadata.js +235 -0
  79. package/dist/metadata.js.map +1 -1
  80. package/dist/model.d.ts +20 -1
  81. package/dist/model.d.ts.map +1 -1
  82. package/dist/model.js +4 -1
  83. package/dist/model.js.map +1 -1
  84. package/dist/quality-profile.d.ts +91 -0
  85. package/dist/quality-profile.d.ts.map +1 -0
  86. package/dist/quality-profile.js +91 -0
  87. package/dist/quality-profile.js.map +1 -0
  88. package/dist/repeated-context.d.ts.map +1 -1
  89. package/dist/repeated-context.js +38 -83
  90. package/dist/repeated-context.js.map +1 -1
  91. package/dist/repository-boundary.d.ts +30 -0
  92. package/dist/repository-boundary.d.ts.map +1 -0
  93. package/dist/repository-boundary.js +116 -0
  94. package/dist/repository-boundary.js.map +1 -0
  95. package/dist/repository-evidence.d.ts +2 -0
  96. package/dist/repository-evidence.d.ts.map +1 -1
  97. package/dist/repository-evidence.js +6 -4
  98. package/dist/repository-evidence.js.map +1 -1
  99. package/dist/repository-paths.d.ts +6 -2
  100. package/dist/repository-paths.d.ts.map +1 -1
  101. package/dist/repository-paths.js +75 -24
  102. package/dist/repository-paths.js.map +1 -1
  103. package/dist/rules.d.ts +2 -0
  104. package/dist/rules.d.ts.map +1 -1
  105. package/dist/rules.js +322 -189
  106. package/dist/rules.js.map +1 -1
  107. package/dist/scanner.d.ts.map +1 -1
  108. package/dist/scanner.js +5 -1
  109. package/dist/scanner.js.map +1 -1
  110. package/dist/security-diagnostics.d.ts.map +1 -1
  111. package/dist/security-diagnostics.js +95 -30
  112. package/dist/security-diagnostics.js.map +1 -1
  113. package/dist/security-diff.d.ts +5 -2
  114. package/dist/security-diff.d.ts.map +1 -1
  115. package/dist/security-diff.js +20 -4
  116. package/dist/security-diff.js.map +1 -1
  117. package/dist/security-policy-inventory.d.ts +15 -3
  118. package/dist/security-policy-inventory.d.ts.map +1 -1
  119. package/dist/security-policy-inventory.js +123 -26
  120. package/dist/security-policy-inventory.js.map +1 -1
  121. package/dist/security-policy.d.ts +7 -0
  122. package/dist/security-policy.d.ts.map +1 -1
  123. package/dist/security-policy.js +70 -7
  124. package/dist/security-policy.js.map +1 -1
  125. package/dist/security-posture.d.ts.map +1 -1
  126. package/dist/security-posture.js +2 -1
  127. package/dist/security-posture.js.map +1 -1
  128. package/dist/skill-migration.js +2 -0
  129. package/dist/skill-migration.js.map +1 -1
  130. package/dist/static-support.d.ts +13 -0
  131. package/dist/static-support.d.ts.map +1 -0
  132. package/dist/static-support.js +284 -0
  133. package/dist/static-support.js.map +1 -0
  134. package/dist/token-estimator.d.ts +21 -0
  135. package/dist/token-estimator.d.ts.map +1 -0
  136. package/dist/token-estimator.js +84 -0
  137. package/dist/token-estimator.js.map +1 -0
  138. package/dist/trust-graph.d.ts +3 -3
  139. package/dist/trust-graph.d.ts.map +1 -1
  140. package/dist/trust-graph.js +69 -10
  141. package/dist/trust-graph.js.map +1 -1
  142. package/dist/types.d.ts +6 -1
  143. package/dist/types.d.ts.map +1 -1
  144. package/docs/README.md +15 -8
  145. package/docs/advanced-skill-authoring.md +16 -9
  146. package/docs/agent-skills-compatibility.md +10 -2
  147. package/docs/authoring-guide.md +89 -6
  148. package/docs/context-lens.md +319 -153
  149. package/docs/diagnostics.md +46 -11
  150. package/docs/metadata-budget.md +32 -0
  151. package/docs/quality-profile.md +135 -0
  152. package/docs/repository-context-bom.md +67 -8
  153. package/docs/schemas/repository-context-bom-v2.schema.json +648 -0
  154. package/docs/schemas/trust-graph-v2.schema.json +301 -0
  155. package/docs/security-policy.md +21 -5
  156. package/docs/trust-graph.md +47 -0
  157. package/docs/user-manual.md +48 -7
  158. package/examples/context-lens/README.md +8 -3
  159. package/examples/context-lens/contexts/testing/boundary-value-analysis.md +6 -2
  160. package/examples/context-lens/lenses/testing/spec-review-boundary-values.md +27 -5
  161. package/examples/context-lens/lenses/testing/test-design-boundary-values.md +27 -5
  162. package/examples/context-lens/skills/testing/spec-review/SKILL.md +33 -4
  163. package/examples/context-repo/README.md +6 -7
  164. package/examples/context-repo/contexts/domain/payment/idempotency.md +7 -0
  165. package/examples/context-repo/contexts/testing/boundary-value-analysis.md +7 -0
  166. package/examples/context-repo/contexts/testing/negative-testing.md +7 -0
  167. package/examples/context-repo/skills/testing/spec-review/SKILL.md +5 -0
  168. package/package.json +3 -1
  169. package/plan-discovery.md +24 -15
  170. package/plan.md +59 -119
  171. package/scripts/verify-package.mjs +8 -1
@@ -1,15 +1,17 @@
1
1
  import { createHash } from "node:crypto";
2
- import path from "node:path";
3
2
  import { DIAGNOSTIC_IDS } from "./diagnostic-ids.js";
3
+ import { DEFAULT_QUALITY_PROFILE } from "./quality-profile.js";
4
+ import { estimateTokens, estimatedTokenUnits } from "./token-estimator.js";
5
+ const QUALITY = DEFAULT_QUALITY_PROFILE;
4
6
  const FINDING_CAPS = {
5
- [DIAGNOSTIC_IDS.MAINT_REPEATED_SECTION]: 10,
6
- [DIAGNOSTIC_IDS.MAINT_REPEATED_HEADING]: 10,
7
- [DIAGNOSTIC_IDS.MAINT_REPEATED_CODE_BLOCK]: 10,
8
- [DIAGNOSTIC_IDS.MAINT_REPEATED_LINK]: 10,
9
- [DIAGNOSTIC_IDS.MAINT_REPEATED_CONTEXT_PATTERN]: 10,
7
+ [DIAGNOSTIC_IDS.MAINT_REPEATED_SECTION]: QUALITY.repeatedContext.findingCap,
8
+ [DIAGNOSTIC_IDS.MAINT_REPEATED_HEADING]: QUALITY.repeatedContext.findingCap,
9
+ [DIAGNOSTIC_IDS.MAINT_REPEATED_CODE_BLOCK]: QUALITY.repeatedContext.findingCap,
10
+ [DIAGNOSTIC_IDS.MAINT_REPEATED_LINK]: QUALITY.repeatedContext.findingCap,
11
+ [DIAGNOSTIC_IDS.MAINT_REPEATED_CONTEXT_PATTERN]: QUALITY.repeatedContext.findingCap,
10
12
  };
11
- const SHINGLE_SIZE = 24;
12
- const TOKEN_SHINGLE_NEARBY_LINE_WINDOW = 8;
13
+ const SHINGLE_SIZE = QUALITY.repeatedContext.tokenShingleTokens;
14
+ const TOKEN_SHINGLE_NEARBY_LINE_WINDOW = QUALITY.repeatedContext.tokenShingleNearbyLineWindow;
13
15
  export function repeatedContextFindingCap(id) {
14
16
  return FINDING_CAPS[id];
15
17
  }
@@ -53,12 +55,12 @@ const COMMON_CONTEXT_TOKENS = new Set([
53
55
  "run",
54
56
  ]);
55
57
  export function detectRepeatedContextPatterns(documents) {
58
+ const markdownDocuments = documents.filter((document) => document.artifact.markdownParserEligible === true);
56
59
  const findings = [
57
- ...groupsToFindings(DIAGNOSTIC_IDS.MAINT_REPEATED_SECTION, "Repeated section", "section_hash", collectRepeatedSections(documents), "Move the repeated section into an owned source-of-truth context or reference, then replace copies with explicit references where appropriate."),
58
- ...groupsToFindings(DIAGNOSTIC_IDS.MAINT_REPEATED_HEADING, "Repeated heading", "heading", collectRepeatedHeadings(documents), "Review whether these similarly named sections are intentional navigation or a sign that knowledge should be consolidated under one owned context."),
59
- ...groupsToFindings(DIAGNOSTIC_IDS.MAINT_REPEATED_CODE_BLOCK, "Repeated code block", "code_block", collectRepeatedCodeBlocks(documents), "Move the repeated command or code sample into one maintained reference, then link to it from dependent skills or docs."),
60
- ...groupsToFindings(DIAGNOSTIC_IDS.MAINT_REPEATED_LINK, "Repeated link target", "link_target", collectRepeatedLinks(documents), "Check whether the repeated link target should be declared as a shared reference or source-of-truth dependency."),
61
- ...groupsToFindings(DIAGNOSTIC_IDS.MAINT_REPEATED_CONTEXT_PATTERN, "Repeated context pattern", "token_shingle", collectRepeatedTokenShingles(documents), "Use the repeated token sequence as evidence for a consolidation proposal, then have a human approve any reviewable patch."),
60
+ ...groupsToFindings(DIAGNOSTIC_IDS.MAINT_REPEATED_SECTION, "Repeated section", "section_hash", collectRepeatedSections(markdownDocuments), "Move the repeated section into an owned source-of-truth context or reference, then replace copies with explicit references where appropriate."),
61
+ ...groupsToFindings(DIAGNOSTIC_IDS.MAINT_REPEATED_HEADING, "Repeated heading", "heading", collectRepeatedHeadings(markdownDocuments), "Review whether these similarly named sections are intentional navigation or a sign that knowledge should be consolidated under one owned context."),
62
+ ...groupsToFindings(DIAGNOSTIC_IDS.MAINT_REPEATED_CODE_BLOCK, "Repeated code block", "code_block", collectRepeatedCodeBlocks(markdownDocuments), "Move the repeated command or code sample into one maintained reference, then link to it from dependent skills or docs."),
63
+ ...groupsToFindings(DIAGNOSTIC_IDS.MAINT_REPEATED_CONTEXT_PATTERN, "Repeated context pattern", "token_shingle", collectRepeatedTokenShingles(markdownDocuments), "Use the repeated token sequence as evidence for a consolidation proposal, then have a human approve any reviewable patch."),
62
64
  ];
63
65
  return findings.sort(compareFindings);
64
66
  }
@@ -72,7 +74,9 @@ function collectRepeatedSections(documents) {
72
74
  const endLine = findSectionEndLine(document, index);
73
75
  const lines = document.lines.slice(heading.line - 1, endLine);
74
76
  const normalized = normalizeWhitespace(lines.join("\n"));
75
- if (tokenCount(normalized) < 40 || normalized.length < 240)
77
+ if (estimateTokens(normalized) <
78
+ QUALITY.repeatedContext.exactSectionMinTokens ||
79
+ normalized.length < QUALITY.repeatedContext.exactSectionMinChars)
76
80
  continue;
77
81
  const key = hashText(normalized);
78
82
  addOccurrence(groups, {
@@ -88,15 +92,15 @@ function collectRepeatedSections(documents) {
88
92
  });
89
93
  }
90
94
  }
91
- return repeatedCrossFileGroups(groups, 2);
95
+ return repeatedCrossFileGroups(groups, QUALITY.repeatedContext.exactSectionMinFiles);
92
96
  }
93
97
  function collectRepeatedHeadings(documents) {
94
98
  const groups = new Map();
95
99
  for (const document of documents) {
96
100
  for (const heading of document.headings) {
97
101
  const normalized = normalizeHeading(heading.text);
98
- if (normalized.length < 24 ||
99
- tokenCount(normalized) < 3 ||
102
+ if (normalized.length < QUALITY.repeatedContext.headingMinChars ||
103
+ estimateTokens(normalized) < QUALITY.repeatedContext.headingMinTokens ||
100
104
  GENERIC_HEADINGS.has(normalized)) {
101
105
  continue;
102
106
  }
@@ -113,14 +117,15 @@ function collectRepeatedHeadings(documents) {
113
117
  });
114
118
  }
115
119
  }
116
- return repeatedCrossFileGroups(groups, 2);
120
+ return repeatedCrossFileGroups(groups, QUALITY.repeatedContext.headingMinFiles);
117
121
  }
118
122
  function collectRepeatedCodeBlocks(documents) {
119
123
  const groups = new Map();
120
124
  for (const document of documents) {
121
125
  for (const fence of document.codeFences) {
122
126
  const normalized = normalizeWhitespace(fence.content);
123
- if (normalized.length < 80 || tokenCount(normalized) < 10)
127
+ if (normalized.length < QUALITY.repeatedContext.exactCodeMinChars ||
128
+ estimateTokens(normalized) < QUALITY.repeatedContext.exactCodeMinTokens)
124
129
  continue;
125
130
  const language = fence.language || "plain";
126
131
  const key = hashText(`${language}\n${normalized}`);
@@ -137,29 +142,7 @@ function collectRepeatedCodeBlocks(documents) {
137
142
  });
138
143
  }
139
144
  }
140
- return repeatedCrossFileGroups(groups, 2);
141
- }
142
- function collectRepeatedLinks(documents) {
143
- const groups = new Map();
144
- for (const document of documents) {
145
- for (const link of document.links) {
146
- const target = normalizeLocalMarkdownLinkTarget(link.target, document.artifact.path);
147
- if (!target)
148
- continue;
149
- addOccurrence(groups, {
150
- kind: "link_target",
151
- key: target,
152
- label: target,
153
- occurrence: {
154
- path: document.artifact.path,
155
- startLine: link.line,
156
- endLine: link.line,
157
- snippet: document.lines[link.line - 1] ?? link.target,
158
- },
159
- });
160
- }
161
- }
162
- return repeatedCrossFileGroups(groups, 3);
145
+ return repeatedCrossFileGroups(groups, QUALITY.repeatedContext.exactCodeMinFiles);
163
146
  }
164
147
  function collectRepeatedTokenShingles(documents) {
165
148
  const groups = new Map();
@@ -190,7 +173,7 @@ function collectRepeatedTokenShingles(documents) {
190
173
  });
191
174
  }
192
175
  }
193
- return collapseNearDuplicateTokenShingles(repeatedCrossFileGroups(groups, 2));
176
+ return collapseNearDuplicateTokenShingles(repeatedCrossFileGroups(groups, QUALITY.repeatedContext.tokenShingleMinFiles));
194
177
  }
195
178
  function groupsToFindings(id, title, kind, groups, remediation) {
196
179
  return groups
@@ -209,7 +192,7 @@ function groupsToFindings(id, title, kind, groups, remediation) {
209
192
  id,
210
193
  title,
211
194
  category: "maintenance",
212
- severity: kind === "heading" || kind === "link_target" ? "low" : "medium",
195
+ severity: kind === "heading" ? "low" : "medium",
213
196
  confidence: confidenceForKind(kind),
214
197
  evidence: {
215
198
  path: first.path,
@@ -229,6 +212,11 @@ function groupsToFindings(id, title, kind, groups, remediation) {
229
212
  "Review all reported occurrences and choose an owned source of truth.",
230
213
  "Run renma scan after any consolidation patch.",
231
214
  ],
215
+ details: {
216
+ profile: QUALITY.profile,
217
+ unit: "estimated_tokens",
218
+ occurrenceCount: occurrences.length,
219
+ },
232
220
  },
233
221
  ];
234
222
  });
@@ -312,51 +300,22 @@ function tokenizeDocument(document) {
312
300
  if (codeLines.has(lineNumber))
313
301
  continue;
314
302
  const line = document.lines[index] ?? "";
315
- const matches = line.matchAll(/[A-Za-z0-9][A-Za-z0-9_./:-]*/g);
316
- for (const match of matches) {
317
- const value = match[0]?.toLowerCase();
318
- if (!value || value.length < 3)
303
+ for (const unit of estimatedTokenUnits(line)) {
304
+ if (!unit.value)
319
305
  continue;
320
- tokens.push({ value, line: lineNumber });
306
+ tokens.push({ value: unit.value, line: lineNumber });
321
307
  }
322
308
  }
323
309
  return tokens;
324
310
  }
325
311
  function isUsefulShingle(words) {
326
312
  const uniqueWords = new Set(words);
327
- if (uniqueWords.size < 12)
313
+ if (uniqueWords.size < QUALITY.repeatedContext.tokenShingleMinUniqueTokens)
328
314
  return false;
329
315
  const usefulWords = words.filter((word) => !COMMON_CONTEXT_TOKENS.has(word));
330
- if (usefulWords.length < 14)
316
+ if (usefulWords.length < QUALITY.repeatedContext.tokenShingleMinUsefulTokens)
331
317
  return false;
332
- return words.join(" ").length >= 140;
333
- }
334
- function normalizeLocalMarkdownLinkTarget(value, sourcePath) {
335
- const target = normalizeWhitespace(value);
336
- if (!target ||
337
- target.startsWith("#") ||
338
- /^[a-z][a-z0-9+.-]*:/i.test(target)) {
339
- return undefined;
340
- }
341
- const withoutFragment = target.replace(/#.*/, "").replace(/\?.*/, "");
342
- if (!withoutFragment)
343
- return undefined;
344
- const normalizedTarget = withoutFragment.replace(/\\/g, "/");
345
- const normalizedSource = sourcePath.replace(/\\/g, "/");
346
- const sourceDirectory = path.posix.dirname(normalizedSource);
347
- const resolved = normalizedTarget.startsWith("/")
348
- ? path.posix.normalize(normalizedTarget.slice(1))
349
- : path.posix.normalize(path.posix.join(sourceDirectory === "." ? "" : sourceDirectory, normalizedTarget));
350
- if (!resolved || resolved === "." || resolved.startsWith("../")) {
351
- return undefined;
352
- }
353
- const repositoryRelative = resolved.replace(/^\.\//, "");
354
- if (!repositoryRelative.includes("/") &&
355
- !repositoryRelative.endsWith(".md") &&
356
- !repositoryRelative.endsWith(".mdx")) {
357
- return undefined;
358
- }
359
- return repositoryRelative;
318
+ return words.join(" ").length >= QUALITY.repeatedContext.tokenShingleMinChars;
360
319
  }
361
320
  function normalizeHeading(value) {
362
321
  return normalizeWhitespace(value)
@@ -370,9 +329,6 @@ function normalizeWhitespace(value) {
370
329
  function hashText(value) {
371
330
  return createHash("sha256").update(value).digest("hex");
372
331
  }
373
- function tokenCount(value) {
374
- return value.length === 0 ? 0 : value.split(/\s+/).length;
375
- }
376
332
  function snippet(lines) {
377
333
  return lines.join("\n").trim().slice(0, 600);
378
334
  }
@@ -402,7 +358,6 @@ function confidenceForKind(kind) {
402
358
  case "token_shingle":
403
359
  return "medium";
404
360
  case "heading":
405
- case "link_target":
406
361
  return "low";
407
362
  }
408
363
  }
@@ -1 +1 @@
1
- {"version":3,"file":"repeated-context.js","sourceRoot":"","sources":["../src/repeated-context.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"repeated-context.js","sourceRoot":"","sources":["../src/repeated-context.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ import type { Stats } from "node:fs";
2
+ export type SafeRepositoryPathResult = {
3
+ state: "present";
4
+ path: string;
5
+ absolutePath: string;
6
+ stats: Stats;
7
+ } | {
8
+ state: "symlink";
9
+ path: string;
10
+ boundaryPath: string;
11
+ } | {
12
+ state: "absent" | "unreadable" | "outside";
13
+ path: string;
14
+ };
15
+ export interface RepositoryWalkResult {
16
+ files: string[];
17
+ symlinks: string[];
18
+ unreadable: Array<{
19
+ path: string;
20
+ error: string;
21
+ }>;
22
+ }
23
+ /** Walk repository files without ever following a symbolic link. */
24
+ export declare function walkRepositoryFiles(root: string, options: {
25
+ maxDepth: number;
26
+ excluded: (relativePath: string) => boolean;
27
+ }): Promise<RepositoryWalkResult>;
28
+ /** Inspect every component with lstat, never following a repository symlink. */
29
+ export declare function safeRepositoryPath(root: string, candidate: string): Promise<SafeRepositoryPathResult>;
30
+ //# sourceMappingURL=repository-boundary.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"repository-boundary.d.ts","sourceRoot":"","sources":["../src/repository-boundary.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAIrC,MAAM,MAAM,wBAAwB,GAChC;IAAE,KAAK,EAAE,SAAS,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,KAAK,CAAA;CAAE,GACtE;IAAE,KAAK,EAAE,SAAS,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,GACxD;IAAE,KAAK,EAAE,QAAQ,GAAG,YAAY,GAAG,SAAS,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAEjE,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,UAAU,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACpD;AAED,oEAAoE;AACpE,wBAAsB,mBAAmB,CACvC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE;IACP,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,OAAO,CAAC;CAC7C,GACA,OAAO,CAAC,oBAAoB,CAAC,CA0D/B;AAED,gFAAgF;AAChF,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,wBAAwB,CAAC,CA8CnC"}
@@ -0,0 +1,116 @@
1
+ import { lstat, opendir } from "node:fs/promises";
2
+ import path from "node:path";
3
+ /** Walk repository files without ever following a symbolic link. */
4
+ export async function walkRepositoryFiles(root, options) {
5
+ const result = {
6
+ files: [],
7
+ symlinks: [],
8
+ unreadable: [],
9
+ };
10
+ const absoluteRoot = path.resolve(root);
11
+ async function walk(relativeDirectory, depth) {
12
+ let directory;
13
+ try {
14
+ directory = await opendir(relativeDirectory
15
+ ? path.join(absoluteRoot, relativeDirectory)
16
+ : absoluteRoot);
17
+ }
18
+ catch (error) {
19
+ result.unreadable.push({
20
+ path: relativeDirectory || ".",
21
+ error: error instanceof Error ? error.message : String(error),
22
+ });
23
+ return;
24
+ }
25
+ const entries = [];
26
+ for await (const entry of directory) {
27
+ entries.push({
28
+ name: entry.name,
29
+ isSymbolicLink: entry.isSymbolicLink(),
30
+ isDirectory: entry.isDirectory(),
31
+ isFile: entry.isFile(),
32
+ });
33
+ }
34
+ entries.sort((left, right) => left.name.localeCompare(right.name));
35
+ for (const entry of entries) {
36
+ const relativePath = relativeDirectory
37
+ ? `${relativeDirectory}/${entry.name}`
38
+ : entry.name;
39
+ if (options.excluded(relativePath))
40
+ continue;
41
+ const entryDepth = depth + 1;
42
+ if (entryDepth > options.maxDepth)
43
+ continue;
44
+ if (entry.isSymbolicLink) {
45
+ result.symlinks.push(relativePath);
46
+ }
47
+ else if (entry.isDirectory) {
48
+ await walk(relativePath, entryDepth);
49
+ }
50
+ else if (entry.isFile) {
51
+ result.files.push(relativePath);
52
+ }
53
+ }
54
+ }
55
+ await walk("", 0);
56
+ return result;
57
+ }
58
+ /** Inspect every component with lstat, never following a repository symlink. */
59
+ export async function safeRepositoryPath(root, candidate) {
60
+ const normalized = normalizeCandidate(candidate);
61
+ if (!normalized)
62
+ return { state: "outside", path: candidate };
63
+ const absoluteRoot = path.resolve(root);
64
+ const absolutePath = path.resolve(absoluteRoot, normalized);
65
+ if (absolutePath === absoluteRoot ||
66
+ !absolutePath.startsWith(`${absoluteRoot}${path.sep}`)) {
67
+ return { state: "outside", path: normalized };
68
+ }
69
+ let current = absoluteRoot;
70
+ const segments = normalized.split("/");
71
+ for (const [index, segment] of segments.entries()) {
72
+ current = path.join(current, segment);
73
+ try {
74
+ const stats = await lstat(current);
75
+ if (stats.isSymbolicLink()) {
76
+ return {
77
+ state: "symlink",
78
+ path: normalized,
79
+ boundaryPath: segments.slice(0, index + 1).join("/"),
80
+ };
81
+ }
82
+ if (index === segments.length - 1) {
83
+ return {
84
+ state: "present",
85
+ path: normalized,
86
+ absolutePath,
87
+ stats,
88
+ };
89
+ }
90
+ if (!stats.isDirectory()) {
91
+ return { state: "absent", path: normalized };
92
+ }
93
+ }
94
+ catch (error) {
95
+ const code = error.code;
96
+ return {
97
+ state: code === "ENOENT" || code === "ENOTDIR" ? "absent" : "unreadable",
98
+ path: normalized,
99
+ };
100
+ }
101
+ }
102
+ return { state: "absent", path: normalized };
103
+ }
104
+ function normalizeCandidate(candidate) {
105
+ const posix = candidate.replaceAll("\\", "/");
106
+ if (path.posix.isAbsolute(posix))
107
+ return undefined;
108
+ const rawSegments = posix.split("/");
109
+ if (rawSegments.includes(".."))
110
+ return undefined;
111
+ const normalized = path.posix.normalize(posix).replace(/^\.\//, "");
112
+ if (!normalized || normalized === "." || normalized.startsWith("../"))
113
+ return undefined;
114
+ return normalized;
115
+ }
116
+ //# sourceMappingURL=repository-boundary.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"repository-boundary.js","sourceRoot":"","sources":["../src/repository-boundary.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,7 @@
1
1
  import { type ConfigOverrides } from "./config.js";
2
2
  import { type ContextLensSummary } from "./context-lens.js";
3
3
  import type { Catalog } from "./model.js";
4
+ import { type RepositoryPathState } from "./repository-paths.js";
4
5
  import type { Artifact, Diagnostic, ParsedDocument, ScanConfig } from "./types.js";
5
6
  export interface RepositoryEvidence {
6
7
  root: string;
@@ -15,6 +16,7 @@ export interface RepositorySnapshot extends RepositoryEvidence {
15
16
  artifacts: Artifact[];
16
17
  documents: ParsedDocument[];
17
18
  repositoryPaths: ReadonlySet<string>;
19
+ repositoryPathStates: ReadonlyMap<string, RepositoryPathState>;
18
20
  discoveryDiagnostics: Diagnostic[];
19
21
  catalogDiagnostics: Diagnostic[];
20
22
  contextLensDiagnostics: Diagnostic[];
@@ -1 +1 @@
1
- {"version":3,"file":"repository-evidence.d.ts","sourceRoot":"","sources":["../src/repository-evidence.ts"],"names":[],"mappings":"AAEA,OAAO,EAAc,KAAK,eAAe,EAAE,MAAM,aAAa,CAAC;AAC/D,OAAO,EAEL,KAAK,kBAAkB,EACxB,MAAM,mBAAmB,CAAC;AAG3B,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAE1C,OAAO,KAAK,EACV,QAAQ,EACR,UAAU,EACV,cAAc,EACd,UAAU,EACX,MAAM,YAAY,CAAC;AAEpB,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gBAAgB,EAAE,MAAM,CAAC;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,EAAE,kBAAkB,CAAC;IAChC,WAAW,EAAE,UAAU,EAAE,CAAC;CAC3B;AAED,MAAM,WAAW,kBAAmB,SAAQ,kBAAkB;IAC5D,MAAM,EAAE,UAAU,CAAC;IACnB,SAAS,EAAE,QAAQ,EAAE,CAAC;IACtB,SAAS,EAAE,cAAc,EAAE,CAAC;IAC5B,eAAe,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACrC,oBAAoB,EAAE,UAAU,EAAE,CAAC;IACnC,kBAAkB,EAAE,UAAU,EAAE,CAAC;IACjC,sBAAsB,EAAE,UAAU,EAAE,CAAC;CACtC;AAED,wBAAsB,yBAAyB,CAC7C,UAAU,EAAE,MAAM,EAClB,SAAS,GAAE,eAAoB,GAC9B,OAAO,CAAC,kBAAkB,CAAC,CAU7B;AAED,wBAAsB,yBAAyB,CAC7C,UAAU,EAAE,MAAM,EAClB,SAAS,GAAE,eAAoB,GAC9B,OAAO,CAAC,kBAAkB,CAAC,CAkC7B"}
1
+ {"version":3,"file":"repository-evidence.d.ts","sourceRoot":"","sources":["../src/repository-evidence.ts"],"names":[],"mappings":"AAEA,OAAO,EAAc,KAAK,eAAe,EAAE,MAAM,aAAa,CAAC;AAC/D,OAAO,EAEL,KAAK,kBAAkB,EACxB,MAAM,mBAAmB,CAAC;AAG3B,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAIL,KAAK,mBAAmB,EACzB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EACV,QAAQ,EACR,UAAU,EACV,cAAc,EACd,UAAU,EACX,MAAM,YAAY,CAAC;AAEpB,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gBAAgB,EAAE,MAAM,CAAC;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,EAAE,kBAAkB,CAAC;IAChC,WAAW,EAAE,UAAU,EAAE,CAAC;CAC3B;AAED,MAAM,WAAW,kBAAmB,SAAQ,kBAAkB;IAC5D,MAAM,EAAE,UAAU,CAAC;IACnB,SAAS,EAAE,QAAQ,EAAE,CAAC;IACtB,SAAS,EAAE,cAAc,EAAE,CAAC;IAC5B,eAAe,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACrC,oBAAoB,EAAE,WAAW,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;IAC/D,oBAAoB,EAAE,UAAU,EAAE,CAAC;IACnC,kBAAkB,EAAE,UAAU,EAAE,CAAC;IACjC,sBAAsB,EAAE,UAAU,EAAE,CAAC;CACtC;AAED,wBAAsB,yBAAyB,CAC7C,UAAU,EAAE,MAAM,EAClB,SAAS,GAAE,eAAoB,GAC9B,OAAO,CAAC,kBAAkB,CAAC,CAU7B;AAED,wBAAsB,yBAAyB,CAC7C,UAAU,EAAE,MAAM,EAClB,SAAS,GAAE,eAAoB,GAC9B,OAAO,CAAC,kBAAkB,CAAC,CA6C7B"}
@@ -4,7 +4,7 @@ import { loadConfig } from "./config.js";
4
4
  import { summarizeContextLensGovernance, } from "./context-lens.js";
5
5
  import { discoverArtifacts } from "./discovery.js";
6
6
  import { parseDocument } from "./markdown.js";
7
- import { collectRepositoryPaths } from "./repository-paths.js";
7
+ import { collectRepositoryPaths, collectRepositoryPathStates, repositoryPathCandidates, } from "./repository-paths.js";
8
8
  export async function collectRepositoryEvidence(targetPath, overrides = {}) {
9
9
  const snapshot = await collectRepositorySnapshot(targetPath, overrides);
10
10
  return {
@@ -19,11 +19,12 @@ export async function collectRepositoryEvidence(targetPath, overrides = {}) {
19
19
  export async function collectRepositorySnapshot(targetPath, overrides = {}) {
20
20
  const root = path.resolve(targetPath);
21
21
  const { config, configPath } = await loadConfig(root, overrides);
22
- const { artifacts, diagnostics: discoveryDiagnostics } = await discoverArtifacts(root, config);
22
+ const { artifacts, diagnostics: discoveryDiagnostics, discoveredPaths, } = await discoverArtifacts(root, config);
23
23
  const documents = artifacts.map(parseDocument);
24
- const built = buildCatalog(documents);
24
+ const built = buildCatalog(documents, discoveredPaths);
25
25
  const contextLens = summarizeContextLensGovernance(documents, built.catalog);
26
- const repositoryPaths = await collectRepositoryPaths(root, artifacts, documents, built.catalog);
26
+ const repositoryPaths = await collectRepositoryPaths(root, artifacts, documents, built.catalog, discoveredPaths);
27
+ const repositoryPathStates = await collectRepositoryPathStates(root, [...repositoryPaths, ...repositoryPathCandidates(documents, built.catalog)], artifacts, config);
27
28
  return {
28
29
  root,
29
30
  ...(configPath ? { configPath } : {}),
@@ -31,6 +32,7 @@ export async function collectRepositorySnapshot(targetPath, overrides = {}) {
31
32
  artifacts,
32
33
  documents,
33
34
  repositoryPaths,
35
+ repositoryPathStates,
34
36
  scannedFileCount: artifacts.length,
35
37
  catalog: built.catalog,
36
38
  contextLens: contextLens.summary,
@@ -1 +1 @@
1
- {"version":3,"file":"repository-evidence.js","sourceRoot":"","sources":["../src/repository-evidence.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAwB,MAAM,aAAa,CAAC;AAC/D,OAAO,EACL,8BAA8B,GAE/B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAE9C,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AA2B/D,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAC7C,UAAkB,EAClB,YAA6B,EAAE;IAE/B,MAAM,QAAQ,GAAG,MAAM,yBAAyB,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;IACxE,OAAO;QACL,IAAI,EAAE,QAAQ,CAAC,IAAI;QACnB,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACnE,gBAAgB,EAAE,QAAQ,CAAC,gBAAgB;QAC3C,OAAO,EAAE,QAAQ,CAAC,OAAO;QACzB,WAAW,EAAE,QAAQ,CAAC,WAAW;QACjC,WAAW,EAAE,QAAQ,CAAC,WAAW;KAClC,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAC7C,UAAkB,EAClB,YAA6B,EAAE;IAE/B,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IACtC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,UAAU,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IACjE,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,oBAAoB,EAAE,GACpD,MAAM,iBAAiB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACxC,MAAM,SAAS,GAAG,SAAS,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;IAC/C,MAAM,KAAK,GAAG,YAAY,CAAC,SAAS,CAAC,CAAC;IACtC,MAAM,WAAW,GAAG,8BAA8B,CAAC,SAAS,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;IAC7E,MAAM,eAAe,GAAG,MAAM,sBAAsB,CAClD,IAAI,EACJ,SAAS,EACT,SAAS,EACT,KAAK,CAAC,OAAO,CACd,CAAC;IAEF,OAAO;QACL,IAAI;QACJ,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACrC,MAAM;QACN,SAAS;QACT,SAAS;QACT,eAAe;QACf,gBAAgB,EAAE,SAAS,CAAC,MAAM;QAClC,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,WAAW,EAAE,WAAW,CAAC,OAAO;QAChC,oBAAoB;QACpB,kBAAkB,EAAE,KAAK,CAAC,WAAW;QACrC,sBAAsB,EAAE,WAAW,CAAC,WAAW;QAC/C,WAAW,EAAE;YACX,GAAG,oBAAoB;YACvB,GAAG,KAAK,CAAC,WAAW;YACpB,GAAG,WAAW,CAAC,WAAW;SAC3B;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"repository-evidence.js","sourceRoot":"","sources":["../src/repository-evidence.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAwB,MAAM,aAAa,CAAC;AAC/D,OAAO,EACL,8BAA8B,GAE/B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAE9C,OAAO,EACL,sBAAsB,EACtB,2BAA2B,EAC3B,wBAAwB,GAEzB,MAAM,uBAAuB,CAAC;AA4B/B,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAC7C,UAAkB,EAClB,YAA6B,EAAE;IAE/B,MAAM,QAAQ,GAAG,MAAM,yBAAyB,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;IACxE,OAAO;QACL,IAAI,EAAE,QAAQ,CAAC,IAAI;QACnB,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACnE,gBAAgB,EAAE,QAAQ,CAAC,gBAAgB;QAC3C,OAAO,EAAE,QAAQ,CAAC,OAAO;QACzB,WAAW,EAAE,QAAQ,CAAC,WAAW;QACjC,WAAW,EAAE,QAAQ,CAAC,WAAW;KAClC,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAC7C,UAAkB,EAClB,YAA6B,EAAE;IAE/B,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IACtC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,UAAU,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IACjE,MAAM,EACJ,SAAS,EACT,WAAW,EAAE,oBAAoB,EACjC,eAAe,GAChB,GAAG,MAAM,iBAAiB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAC1C,MAAM,SAAS,GAAG,SAAS,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;IAC/C,MAAM,KAAK,GAAG,YAAY,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC;IACvD,MAAM,WAAW,GAAG,8BAA8B,CAAC,SAAS,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;IAC7E,MAAM,eAAe,GAAG,MAAM,sBAAsB,CAClD,IAAI,EACJ,SAAS,EACT,SAAS,EACT,KAAK,CAAC,OAAO,EACb,eAAe,CAChB,CAAC;IACF,MAAM,oBAAoB,GAAG,MAAM,2BAA2B,CAC5D,IAAI,EACJ,CAAC,GAAG,eAAe,EAAE,GAAG,wBAAwB,CAAC,SAAS,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,EAC3E,SAAS,EACT,MAAM,CACP,CAAC;IAEF,OAAO;QACL,IAAI;QACJ,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACrC,MAAM;QACN,SAAS;QACT,SAAS;QACT,eAAe;QACf,oBAAoB;QACpB,gBAAgB,EAAE,SAAS,CAAC,MAAM;QAClC,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,WAAW,EAAE,WAAW,CAAC,OAAO;QAChC,oBAAoB;QACpB,kBAAkB,EAAE,KAAK,CAAC,WAAW;QACrC,sBAAsB,EAAE,WAAW,CAAC,WAAW;QAC/C,WAAW,EAAE;YACX,GAAG,oBAAoB;YACvB,GAAG,KAAK,CAAC,WAAW;YACpB,GAAG,WAAW,CAAC,WAAW;SAC3B;KACF,CAAC;AACJ,CAAC"}
@@ -1,5 +1,6 @@
1
1
  import type { Catalog } from "./model.js";
2
- import type { Artifact, ParsedDocument } from "./types.js";
2
+ import type { Artifact, ParsedDocument, ScanConfig } from "./types.js";
3
+ export type RepositoryPathState = "parsed" | "excluded" | "oversize" | "deep" | "unsupported" | "symlink" | "unreadable" | "absent";
3
4
  export type HelperScriptPathResolution = {
4
5
  kind: "candidate";
5
6
  path: string;
@@ -12,8 +13,11 @@ export type HelperScriptPathResolution = {
12
13
  path: string;
13
14
  };
14
15
  /** Collect immutable repository-relative path existence evidence for rules. */
15
- export declare function collectRepositoryPaths(root: string, artifacts: Artifact[], documents: ParsedDocument[], catalog: Catalog): Promise<ReadonlySet<string>>;
16
+ export declare function collectRepositoryPaths(root: string, artifacts: Artifact[], documents: ParsedDocument[], catalog: Catalog, discoveredPaths?: ReadonlySet<string>): Promise<ReadonlySet<string>>;
16
17
  export declare function helperScriptPath(command: string): string | undefined;
17
18
  /** Resolve a helper command path without escaping an unambiguous owning Skill. */
18
19
  export declare function resolveHelperScriptPath(sourcePath: string, scriptPath: string): HelperScriptPathResolution;
20
+ export declare function repositoryPathCandidates(documents: ParsedDocument[], catalog: Catalog): string[];
21
+ /** Capture exact lstat-based states once without following symbolic links. */
22
+ export declare function collectRepositoryPathStates(root: string, candidates: Iterable<string>, artifacts: Artifact[], config: ScanConfig): Promise<ReadonlyMap<string, RepositoryPathState>>;
19
23
  //# sourceMappingURL=repository-paths.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"repository-paths.d.ts","sourceRoot":"","sources":["../src/repository-paths.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAE3D,MAAM,MAAM,0BAA0B,GAClC;IACE,IAAI,EAAE,WAAW,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,iBAAiB,GAAG,gBAAgB,CAAC;CAC9C,GACD;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAChC;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAEvC,+EAA+E;AAC/E,wBAAsB,sBAAsB,CAC1C,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,QAAQ,EAAE,EACrB,SAAS,EAAE,cAAc,EAAE,EAC3B,OAAO,EAAE,OAAO,GACf,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAa9B;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAYpE;AAED,kFAAkF;AAClF,wBAAgB,uBAAuB,CACrC,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,GACjB,0BAA0B,CAgC5B"}
1
+ {"version":3,"file":"repository-paths.d.ts","sourceRoot":"","sources":["../src/repository-paths.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAE1C,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAGvE,MAAM,MAAM,mBAAmB,GAC3B,QAAQ,GACR,UAAU,GACV,UAAU,GACV,MAAM,GACN,aAAa,GACb,SAAS,GACT,YAAY,GACZ,QAAQ,CAAC;AAEb,MAAM,MAAM,0BAA0B,GAClC;IACE,IAAI,EAAE,WAAW,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,iBAAiB,GAAG,gBAAgB,CAAC;CAC9C,GACD;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAChC;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAEvC,+EAA+E;AAC/E,wBAAsB,sBAAsB,CAC1C,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,QAAQ,EAAE,EACrB,SAAS,EAAE,cAAc,EAAE,EAC3B,OAAO,EAAE,OAAO,EAChB,eAAe,GAAE,WAAW,CAAC,MAAM,CAAa,GAC/C,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAa9B;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAYpE;AAED,kFAAkF;AAClF,wBAAgB,uBAAuB,CACrC,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,GACjB,0BAA0B,CAiC5B;AAED,wBAAgB,wBAAwB,CACtC,SAAS,EAAE,cAAc,EAAE,EAC3B,OAAO,EAAE,OAAO,GACf,MAAM,EAAE,CAYV;AA2BD,8EAA8E;AAC9E,wBAAsB,2BAA2B,CAC/C,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,EAC5B,SAAS,EAAE,QAAQ,EAAE,EACrB,MAAM,EAAE,UAAU,GACjB,OAAO,CAAC,WAAW,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC,CAwCnD"}