@promptci/core 0.2.2 → 0.3.0

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 (119) hide show
  1. package/dist/ai-config.d.ts +13 -6
  2. package/dist/ai-config.d.ts.map +1 -1
  3. package/dist/ai-config.js +25 -78
  4. package/dist/ai-config.js.map +1 -1
  5. package/dist/close-match.d.ts +97 -0
  6. package/dist/close-match.d.ts.map +1 -0
  7. package/dist/close-match.js +215 -0
  8. package/dist/close-match.js.map +1 -0
  9. package/dist/command-validity.d.ts.map +1 -1
  10. package/dist/command-validity.js +126 -20
  11. package/dist/command-validity.js.map +1 -1
  12. package/dist/context-optimizer.d.ts.map +1 -1
  13. package/dist/context-optimizer.js +9 -2
  14. package/dist/context-optimizer.js.map +1 -1
  15. package/dist/dead-references.d.ts +8 -1
  16. package/dist/dead-references.d.ts.map +1 -1
  17. package/dist/dead-references.js +149 -15
  18. package/dist/dead-references.js.map +1 -1
  19. package/dist/dependency-staleness.d.ts.map +1 -1
  20. package/dist/dependency-staleness.js +24 -38
  21. package/dist/dependency-staleness.js.map +1 -1
  22. package/dist/detectors.js +1 -1
  23. package/dist/detectors.js.map +1 -1
  24. package/dist/discovery.d.ts +138 -0
  25. package/dist/discovery.d.ts.map +1 -0
  26. package/dist/discovery.js +569 -0
  27. package/dist/discovery.js.map +1 -0
  28. package/dist/fix-engine.d.ts.map +1 -1
  29. package/dist/fix-engine.js +75 -1
  30. package/dist/fix-engine.js.map +1 -1
  31. package/dist/frameworks/dotnet.d.ts.map +1 -1
  32. package/dist/frameworks/dotnet.js +10 -11
  33. package/dist/frameworks/dotnet.js.map +1 -1
  34. package/dist/frameworks/go.d.ts.map +1 -1
  35. package/dist/frameworks/go.js +8 -4
  36. package/dist/frameworks/go.js.map +1 -1
  37. package/dist/frameworks/nextjs.d.ts.map +1 -1
  38. package/dist/frameworks/nextjs.js +8 -17
  39. package/dist/frameworks/nextjs.js.map +1 -1
  40. package/dist/frameworks/python.d.ts.map +1 -1
  41. package/dist/frameworks/python.js +5 -3
  42. package/dist/frameworks/python.js.map +1 -1
  43. package/dist/frameworks/rust.d.ts.map +1 -1
  44. package/dist/frameworks/rust.js +3 -3
  45. package/dist/frameworks/rust.js.map +1 -1
  46. package/dist/frameworks/unity.d.ts.map +1 -1
  47. package/dist/frameworks/unity.js +6 -5
  48. package/dist/frameworks/unity.js.map +1 -1
  49. package/dist/gitignore.d.ts +31 -2
  50. package/dist/gitignore.d.ts.map +1 -1
  51. package/dist/gitignore.js +33 -8
  52. package/dist/gitignore.js.map +1 -1
  53. package/dist/hooks-settings-detector.d.ts.map +1 -1
  54. package/dist/hooks-settings-detector.js +5 -1
  55. package/dist/hooks-settings-detector.js.map +1 -1
  56. package/dist/index.d.ts +7 -0
  57. package/dist/index.d.ts.map +1 -1
  58. package/dist/index.js +12 -0
  59. package/dist/index.js.map +1 -1
  60. package/dist/known-paths.d.ts +82 -0
  61. package/dist/known-paths.d.ts.map +1 -0
  62. package/dist/known-paths.js +152 -0
  63. package/dist/known-paths.js.map +1 -0
  64. package/dist/makefile.d.ts.map +1 -1
  65. package/dist/makefile.js +17 -13
  66. package/dist/makefile.js.map +1 -1
  67. package/dist/manifest-consistency.d.ts +1 -1
  68. package/dist/manifest-consistency.d.ts.map +1 -1
  69. package/dist/manifest-consistency.js +12 -8
  70. package/dist/manifest-consistency.js.map +1 -1
  71. package/dist/mcp-config-detector.d.ts.map +1 -1
  72. package/dist/mcp-config-detector.js +5 -1
  73. package/dist/mcp-config-detector.js.map +1 -1
  74. package/dist/project-type.d.ts +2 -1
  75. package/dist/project-type.d.ts.map +1 -1
  76. package/dist/project-type.js +36 -48
  77. package/dist/project-type.js.map +1 -1
  78. package/dist/prompt-cache.d.ts.map +1 -1
  79. package/dist/prompt-cache.js +13 -2
  80. package/dist/prompt-cache.js.map +1 -1
  81. package/dist/repo-context.d.ts +9 -0
  82. package/dist/repo-context.d.ts.map +1 -1
  83. package/dist/repo-context.js +32 -35
  84. package/dist/repo-context.js.map +1 -1
  85. package/dist/repo-tree.d.ts +163 -9
  86. package/dist/repo-tree.d.ts.map +1 -1
  87. package/dist/repo-tree.js +226 -34
  88. package/dist/repo-tree.js.map +1 -1
  89. package/dist/report.d.ts.map +1 -1
  90. package/dist/report.js +3 -0
  91. package/dist/report.js.map +1 -1
  92. package/dist/sarif.d.ts +27 -0
  93. package/dist/sarif.d.ts.map +1 -0
  94. package/dist/sarif.js +357 -0
  95. package/dist/sarif.js.map +1 -0
  96. package/dist/scan.d.ts.map +1 -1
  97. package/dist/scan.js +8 -2
  98. package/dist/scan.js.map +1 -1
  99. package/dist/scanner.d.ts +4 -3
  100. package/dist/scanner.d.ts.map +1 -1
  101. package/dist/scanner.js +36 -77
  102. package/dist/scanner.js.map +1 -1
  103. package/dist/security-pack.d.ts.map +1 -1
  104. package/dist/security-pack.js +34 -35
  105. package/dist/security-pack.js.map +1 -1
  106. package/dist/skill-supply-chain.d.ts.map +1 -1
  107. package/dist/skill-supply-chain.js +29 -19
  108. package/dist/skill-supply-chain.js.map +1 -1
  109. package/dist/skills-detector.d.ts.map +1 -1
  110. package/dist/skills-detector.js +11 -3
  111. package/dist/skills-detector.js.map +1 -1
  112. package/dist/token-estimates.d.ts +42 -0
  113. package/dist/token-estimates.d.ts.map +1 -0
  114. package/dist/token-estimates.js +200 -0
  115. package/dist/token-estimates.js.map +1 -0
  116. package/dist/types.d.ts +89 -0
  117. package/dist/types.d.ts.map +1 -1
  118. package/dist/types.js.map +1 -1
  119. package/package.json +5 -2
@@ -12,12 +12,23 @@
12
12
  * repo, a stable file lister, and issue path normalization.
13
13
  */
14
14
  import { resolveReadableWithinRoot, resolveWithinRoot } from './path-containment.js';
15
+ import { RepoTree } from './repo-tree.js';
15
16
  import type { PromptCiIssue, ScanInput } from './types.js';
17
+ export { isSkillContainerDir, isPriorityBundleFile, MAX_BUNDLED_FILES_PER_SKILL } from './discovery.js';
16
18
  /** Convert a filesystem path to forward-slash form for stable, portable output. */
17
19
  export declare function toPosix(p: string): string;
18
20
  export { resolveWithinRoot, resolveReadableWithinRoot };
19
- /** True when a repo-relative path exists and is a regular file. */
20
- export declare function isFileWithinRoot(repoRoot: string, relativePath: string): boolean;
21
+ /**
22
+ * True when a repo-relative path exists and is a regular file.
23
+ *
24
+ * pcic-e6xa: pass the scan's {@link RepoTree} (`treeFor(context)`) rather than
25
+ * the root string wherever the answer feeds a finding. The tree looks the path
26
+ * up by listing the root downwards, so a committed link out of the repository
27
+ * is never followed and names match with exact case on every platform; it also
28
+ * lets a caller's file inventory answer (pcic-csf). The root-string form
29
+ * remains for callers inside file DISCOVERY, which walks the real filesystem.
30
+ */
31
+ export declare function isFileWithinRoot(repoRootOrTree: string | RepoTree, relativePath: string): boolean;
21
32
  /** Read a repo-relative text file, or `undefined` if it is absent/unreadable. */
22
33
  export declare function readTextWithinRoot(repoRoot: string, relativePath: string): string | undefined;
23
34
  /**
@@ -78,10 +89,6 @@ export type SkillBundleSkip = {
78
89
  };
79
90
  /** An AiConfigFiles with every surface empty — for contexts built without discovery. */
80
91
  export declare function emptyAiConfigFiles(): AiConfigFiles;
81
- export declare function isSkillContainerDir(dir: string): boolean;
82
- /** Upper bound on bundled files read per skill, so one huge skill cannot stall a scan. */
83
- export declare const MAX_BUNDLED_FILES_PER_SKILL = 200;
84
- export declare function isPriorityBundleFile(rel: string): boolean;
85
92
  /**
86
93
  * Discover the config files the ai_config detectors audit, honoring the same
87
94
  * user-facing scan policy the markdown scanner applies: `exclude` patterns
@@ -1 +1 @@
1
- {"version":3,"file":"ai-config.d.ts","sourceRoot":"","sources":["../src/ai-config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ai-config.d.ts","sourceRoot":"","sources":["../src/ai-config.ts"],"names":[],"mappings":"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"}
package/dist/ai-config.js CHANGED
@@ -18,6 +18,8 @@ import fg from 'fast-glob';
18
18
  import micromatch from 'micromatch';
19
19
  import { MAX_FILE_SIZE, BINARY_CHECK_BYTES, isBinary } from './scanner.js';
20
20
  import { resolveReadableWithinRoot, resolveWithinRoot } from './path-containment.js';
21
+ import { SKILL_GLOBS, DISCOVERY_IGNORE_DIRS, isSkillContainerDir, BUNDLE_SKIP_DIRS, MAX_BUNDLED_FILES_PER_SKILL, MAX_DEPENDENCY_MANIFESTS, isPriorityBundleFile, dependencyManifestCandidates, } from './discovery.js';
22
+ export { isSkillContainerDir, isPriorityBundleFile, MAX_BUNDLED_FILES_PER_SKILL } from './discovery.js';
21
23
  // ── Path helpers ──────────────────────────────────────────────────────────────
22
24
  /** Convert a filesystem path to forward-slash form for stable, portable output. */
23
25
  export function toPosix(p) {
@@ -28,9 +30,20 @@ export function toPosix(p) {
28
30
  // module. Every filesystem read below routes through it so a hostile config
29
31
  // value cannot point the detector at `/etc/passwd`.
30
32
  export { resolveWithinRoot, resolveReadableWithinRoot };
31
- /** True when a repo-relative path exists and is a regular file. */
32
- export function isFileWithinRoot(repoRoot, relativePath) {
33
- const abs = resolveReadableWithinRoot(repoRoot, relativePath);
33
+ /**
34
+ * True when a repo-relative path exists and is a regular file.
35
+ *
36
+ * pcic-e6xa: pass the scan's {@link RepoTree} (`treeFor(context)`) rather than
37
+ * the root string wherever the answer feeds a finding. The tree looks the path
38
+ * up by listing the root downwards, so a committed link out of the repository
39
+ * is never followed and names match with exact case on every platform; it also
40
+ * lets a caller's file inventory answer (pcic-csf). The root-string form
41
+ * remains for callers inside file DISCOVERY, which walks the real filesystem.
42
+ */
43
+ export function isFileWithinRoot(repoRootOrTree, relativePath) {
44
+ if (typeof repoRootOrTree !== 'string')
45
+ return repoRootOrTree.isFile(relativePath);
46
+ const abs = resolveReadableWithinRoot(repoRootOrTree, relativePath);
34
47
  if (!abs)
35
48
  return false;
36
49
  try {
@@ -59,10 +72,7 @@ export function readTextWithinRoot(repoRoot, relativePath) {
59
72
  * *discovery* policy — do not reuse it to answer "does glob X match anything in
60
73
  * the repo" (see detectCursorRules, which needs `dist/`/`build/` visible).
61
74
  */
62
- const DISCOVERY_IGNORE = [
63
- '**/node_modules/**', '**/.git/**', '**/dist/**', '**/build/**',
64
- '**/worktrees/**', '**/.worktrees/**',
65
- ];
75
+ const DISCOVERY_IGNORE = DISCOVERY_IGNORE_DIRS.map((d) => `**/${d}/**`);
66
76
  /**
67
77
  * List files under `repoRoot` matching `patterns`, returned as repo-relative
68
78
  * POSIX paths in sorted order. Dotfiles are included (these configs all live in
@@ -85,19 +95,6 @@ export function listFiles(repoRoot, patterns, ignore = DISCOVERY_IGNORE) {
85
95
  return matches.map(toPosix).sort();
86
96
  }
87
97
  // ── Config-file discovery ─────────────────────────────────────────────────────
88
- /**
89
- * Every location an Agent Skill is installed from: the `.claude/` skills, the
90
- * cross-tool `.agents/skills/` layout, and a Claude Code plugin's (or plugin
91
- * marketplace's) root-level `skills/<name>/SKILL.md`. The root-level globs are
92
- * anchored on purpose: a `**\/skills/**` glob would also sweep up vendored
93
- * copies and test fixtures.
94
- */
95
- const SKILL_GLOBS = [
96
- '.claude/**/SKILL.md',
97
- '.agents/skills/**/SKILL.md',
98
- 'skills/*/SKILL.md',
99
- 'plugins/*/skills/*/SKILL.md',
100
- ];
101
98
  /** Repo-relative globs for each config surface the ai_config detectors audit. */
102
99
  const AI_CONFIG_GLOBS = {
103
100
  // The structural skills detector audits the same locations the supply-chain
@@ -121,50 +118,18 @@ export function emptyAiConfigFiles() {
121
118
  agents: [], settings: [], mcp: [], cursorRules: [], copilotInstructions: [],
122
119
  };
123
120
  }
124
- /**
125
- * Exact repo-relative directories that hold skills rather than being one. A
126
- * SKILL.md sitting directly in one of them is not a skill directory of its own
127
- * — enumerating "its" bundle would sweep in the whole `.claude/` tree — so
128
- * bundled-file discovery skips it. Compared as exact paths, never basenames: a
129
- * skill that is itself NAMED `skills` (`.claude/skills/skills/`) is a real skill
130
- * whose scripts must be scanned.
131
- */
132
- const SKILL_CONTAINER_DIRS = new Set([
133
- '.', '.claude', '.agents', '.claude/skills', '.agents/skills', '.claude/plugins', 'skills', 'plugins',
134
- ]);
135
- export function isSkillContainerDir(dir) {
136
- return SKILL_CONTAINER_DIRS.has(dir);
137
- }
138
- /** Upper bound on bundled files read per skill, so one huge skill cannot stall a scan. */
139
- export const MAX_BUNDLED_FILES_PER_SKILL = 200;
140
121
  /** Directory entries visited per skill before the listing stops (and says so). */
141
122
  const MAX_BUNDLE_LISTING = 20_000;
142
123
  /** Over-cap file names kept for reporting; the rest are counted. */
143
124
  const MAX_OVER_CAP_NAMES = 1_000;
144
125
  /**
145
- * Directories inside a skill that are not walked but ARE reported: dependency
146
- * trees and VCS/worktree copies (a locally installed `node_modules` would
147
- * otherwise flood the scan with third-party code). Build output (`dist/`,
148
- * `build/`) IS walked — inside a skill it is shipped, executable content.
149
- */
150
- const BUNDLE_SKIP_DIRS = new Set(['node_modules', '.git', 'worktrees', '.worktrees']);
151
- /** Dependency package manifests read per skill. */
152
- const MAX_DEPENDENCY_MANIFESTS = 100;
153
- /**
154
- * Scripts, executables, manifests, shell-like config and extensionless files:
155
- * listed (and scanned) before documents. Mirrors the supply-chain detector's
156
- * priority classes by name, without any file I/O.
126
+ * `node_modules/<pkg>/package.json` and `node_modules/@scope/<pkg>/package.json`,
127
+ * bounded. The ORDER and cap this applies (`dependencyManifestCandidates`) is
128
+ * shared with discovery.ts's path-only equivalent, so a filesystem scan and
129
+ * the pure `selectScanPaths` cannot drift on which manifests get read first
130
+ * when a skill's `node_modules` holds more than the cap.
157
131
  */
158
- const PRIORITY_BUNDLE_RE = new RegExp(String.raw `(?:^|\/)(?:[^/.]+|package\.json|requirements[^/]{0,40}\.txt|(?:GNU)?makefile|Dockerfile[^/]{0,40}|Containerfile|Justfile)$|` +
159
- String.raw `\.(?:sh|bash|zsh|ksh|fish|command|js|mjs|cjs|ts|mts|cts|jsx|tsx|py|pyw|rb|ps1|psm1|pl|php|lua|bat|cmd|mk|` +
160
- String.raw `vbs|vba|vbe|hta|applescript|wsf|jse|reg|exe|dll|so|dylib|wasm|jar|war|class|zip|tar|gz|tgz|bz2|xz|7z|rar|` +
161
- String.raw `msi|dmg|pkg|deb|rpm|appimage|apk|bin|o|a|lnk|scr|com|pif|scpt|node|env)$`, 'i');
162
- export function isPriorityBundleFile(rel) {
163
- return PRIORITY_BUNDLE_RE.test(rel);
164
- }
165
- /** `node_modules/<pkg>/package.json` and `node_modules/@scope/<pkg>/package.json`, bounded. */
166
132
  function listPackageManifests(repoRoot, nodeModules) {
167
- const out = [];
168
133
  const read = (rel) => {
169
134
  const abs = resolveReadableWithinRoot(repoRoot, rel);
170
135
  if (!abs)
@@ -176,27 +141,9 @@ function listPackageManifests(repoRoot, nodeModules) {
176
141
  return [];
177
142
  }
178
143
  };
179
- const tryPkg = (pkgDir) => {
180
- const manifest = `${pkgDir}/package.json`;
181
- if (out.length < MAX_DEPENDENCY_MANIFESTS && isFileWithinRoot(repoRoot, manifest))
182
- out.push(manifest);
183
- };
184
- for (const entry of read(nodeModules).sort((a, b) => (a.name < b.name ? -1 : 1))) {
185
- if (out.length >= MAX_DEPENDENCY_MANIFESTS)
186
- break;
187
- if (!entry.isDirectory() || entry.name.startsWith('.'))
188
- continue;
189
- if (entry.name.startsWith('@')) {
190
- for (const scoped of read(`${nodeModules}/${entry.name}`).sort((a, b) => (a.name < b.name ? -1 : 1))) {
191
- if (scoped.isDirectory())
192
- tryPkg(`${nodeModules}/${entry.name}/${scoped.name}`);
193
- }
194
- }
195
- else {
196
- tryPkg(`${nodeModules}/${entry.name}`);
197
- }
198
- }
199
- return out;
144
+ const topLevelNames = read(nodeModules).filter((e) => e.isDirectory()).map((e) => e.name);
145
+ const scopedNamesOf = (scope) => read(`${nodeModules}/${scope}`).filter((e) => e.isDirectory()).map((e) => e.name);
146
+ return dependencyManifestCandidates(topLevelNames, scopedNamesOf, (rel) => isFileWithinRoot(repoRoot, rel), nodeModules);
200
147
  }
201
148
  /** True when `rel` or any ancestor directory matches an `exclude` pattern (glob-ignore semantics). */
202
149
  function isExcluded(rel, exclude) {
@@ -1 +1 @@
1
- {"version":3,"file":"ai-config.js","sourceRoot":"","sources":["../src/ai-config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ai-config.js","sourceRoot":"","sources":["../src/ai-config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,KAAK,MAAM,MAAM,aAAa,CAAC;AACtC,OAAO,EAAE,MAAM,WAAW,CAAC;AAC3B,OAAO,UAAU,MAAM,YAAY,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAC3E,OAAO,EAAE,yBAAyB,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAGrF,OAAO,EACL,WAAW,EACX,qBAAqB,EACrB,mBAAmB,EACnB,gBAAgB,EAChB,2BAA2B,EAC3B,wBAAwB,EACxB,oBAAoB,EACpB,4BAA4B,GAC7B,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,2BAA2B,EAAE,MAAM,gBAAgB,CAAC;AAExG,iFAAiF;AAEjF,mFAAmF;AACnF,MAAM,UAAU,OAAO,CAAC,CAAS;IAC/B,OAAO,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;AAC/B,CAAC;AAED,8EAA8E;AAC9E,4EAA4E;AAC5E,4EAA4E;AAC5E,oDAAoD;AACpD,OAAO,EAAE,iBAAiB,EAAE,yBAAyB,EAAE,CAAC;AAExD;;;;;;;;;GASG;AACH,MAAM,UAAU,gBAAgB,CAAC,cAAiC,EAAE,YAAoB;IACtF,IAAI,OAAO,cAAc,KAAK,QAAQ;QAAE,OAAO,cAAc,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;IACnF,MAAM,GAAG,GAAG,yBAAyB,CAAC,cAAc,EAAE,YAAY,CAAC,CAAC;IACpE,IAAI,CAAC,GAAG;QAAE,OAAO,KAAK,CAAC;IACvB,IAAI,CAAC;QACH,OAAO,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC;IACnC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,iFAAiF;AACjF,MAAM,UAAU,kBAAkB,CAAC,QAAgB,EAAE,YAAoB;IACvE,4EAA4E;IAC5E,MAAM,GAAG,GAAG,yBAAyB,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;IAC9D,IAAI,CAAC,GAAG;QAAE,OAAO,SAAS,CAAC;IAC3B,IAAI,CAAC;QACH,OAAO,EAAE,CAAC,YAAY,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IACtC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,gBAAgB,GAAG,qBAAqB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAExE;;;;GAIG;AACH,MAAM,UAAU,SAAS,CAAC,QAAgB,EAAE,QAAkB,EAAE,SAAmB,gBAAgB;IACjG,IAAI,OAAiB,CAAC;IACtB,IAAI,CAAC;QACH,OAAO,GAAG,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE;YAC1B,GAAG,EAAE,QAAQ;YACb,GAAG,EAAE,IAAI;YACT,SAAS,EAAE,IAAI;YACf,mBAAmB,EAAE,KAAK;YAC1B,MAAM;SACP,CAAC,CAAC;IACL,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,OAAO,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;AACrC,CAAC;AAED,iFAAiF;AAEjF,iFAAiF;AACjF,MAAM,eAAe,GAAG;IACtB,4EAA4E;IAC5E,6EAA6E;IAC7E,uEAAuE;IACvE,MAAM,EAAE,WAAW;IACnB,SAAS,EAAE,WAAW;IACtB,MAAM,EAAE,CAAC,wBAAwB,CAAC;IAClC,QAAQ,EAAE,CAAC,uBAAuB,EAAE,6BAA6B,CAAC;IAClE,GAAG,EAAE,CAAC,WAAW,CAAC;IAClB,WAAW,EAAE,CAAC,wBAAwB,CAAC;IACvC,+DAA+D;IAC/D,2EAA2E;IAC3E,4EAA4E;IAC5E,mBAAmB,EAAE,CAAC,8BAA8B,CAAC;CAC7C,CAAC;AAsDX,wFAAwF;AACxF,MAAM,UAAU,kBAAkB;IAChC,OAAO;QACL,MAAM,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,iBAAiB,EAAE,EAAE,EAAE,gBAAgB,EAAE,EAAE;QACtF,MAAM,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,mBAAmB,EAAE,EAAE;KAC5E,CAAC;AACJ,CAAC;AAED,kFAAkF;AAClF,MAAM,kBAAkB,GAAG,MAAM,CAAC;AAClC,oEAAoE;AACpE,MAAM,kBAAkB,GAAG,KAAK,CAAC;AAEjC;;;;;;GAMG;AACH,SAAS,oBAAoB,CAAC,QAAgB,EAAE,WAAmB;IACjE,MAAM,IAAI,GAAG,CAAC,GAAW,EAAe,EAAE;QACxC,MAAM,GAAG,GAAG,yBAAyB,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;QACrD,IAAI,CAAC,GAAG;YAAE,OAAO,EAAE,CAAC;QACpB,IAAI,CAAC;YAAC,OAAO,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC;YAAC,OAAO,EAAE,CAAC;QAAC,CAAC;IACnF,CAAC,CAAC;IACF,MAAM,aAAa,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAC1F,MAAM,aAAa,GAAG,CAAC,KAAa,EAAY,EAAE,CAChD,IAAI,CAAC,GAAG,WAAW,IAAI,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACpF,OAAO,4BAA4B,CAAC,aAAa,EAAE,aAAa,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,gBAAgB,CAAC,QAAQ,EAAE,GAAG,CAAC,EAAE,WAAW,CAAC,CAAC;AAC3H,CAAC;AAED,sGAAsG;AACtG,SAAS,UAAU,CAAC,GAAW,EAAE,OAAiB;IAChD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACvC,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC7B,MAAM,UAAU,GAAG,CAAC,GAAG,CAAC,CAAC;IACzB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,MAAM,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACxC,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,CAAC,CAAC;IAClC,CAAC;IACD,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AAC/E,CAAC;AAED;;;;;;;;GAQG;AACH,SAAS,kBAAkB,CACzB,QAAgB,EAChB,MAAgB,EAChB,MAAiD;IAEjD,MAAM,SAAS,GAAG,CAAC,GAAG,IAAI,GAAG,CAC3B,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC,CACpF,CAAC,CAAC,IAAI,EAAE,CAAC;IACV,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC;IACvC,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,MAAM,KAAK,GAAsB,EAAE,CAAC;IAEpC,KAAK,MAAM,GAAG,IAAI,SAAS,EAAE,CAAC;QAC5B,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,MAAM,mBAAmB,GAAa,EAAE,CAAC;QACzC,IAAI,cAAc,GAAG,CAAC,CAAC;QACvB,IAAI,OAAO,GAAG,CAAC,CAAC;QAChB,IAAI,SAAS,GAAG,KAAK,CAAC;QACtB,MAAM,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC;QACpB,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxB,MAAM,OAAO,GAAG,KAAK,CAAC,GAAG,EAAG,CAAC;YAC7B,MAAM,GAAG,GAAG,yBAAyB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YACzD,IAAI,CAAC,GAAG;gBAAE,SAAS;YACnB,IAAI,OAAoB,CAAC;YACzB,IAAI,CAAC;gBACH,OAAO,GAAG,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;YACzD,CAAC;YAAC,MAAM,CAAC;gBACP,SAAS;YACX,CAAC;YACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,gCAAgC;YAC1G,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;gBAC5B,IAAI,EAAE,OAAO,GAAG,kBAAkB,EAAE,CAAC;oBAAC,SAAS,GAAG,IAAI,CAAC;oBAAC,MAAM;gBAAC,CAAC;gBAChE,MAAM,GAAG,GAAG,GAAG,OAAO,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;gBACvC,IAAI,KAAK,CAAC,cAAc,EAAE;oBAAE,SAAS;gBACrC,IAAI,UAAU,CAAC,GAAG,EAAE,MAAM,CAAC,OAAO,CAAC;oBAAE,SAAS;gBAC9C,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;oBACxB,IAAI,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC;wBAAE,SAAS,CAAC,sCAAsC;oBAC1E,IAAI,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;wBACrC,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,gBAAgB,EAAE,CAAC,CAAC;wBAClD,IAAI,KAAK,CAAC,IAAI,KAAK,cAAc;4BAAE,mBAAmB,CAAC,IAAI,CAAC,GAAG,oBAAoB,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC;wBACpG,SAAS;oBACX,CAAC;oBACD,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBAClB,CAAC;qBAAM,IAAI,KAAK,CAAC,MAAM,EAAE,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;oBACvD,IAAI,MAAM,CAAC,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,OAAO,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;wBAAC,cAAc,EAAE,CAAC;wBAAC,SAAS;oBAAC,CAAC;oBAC9G,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBAClB,CAAC;YACH,CAAC;YACD,IAAI,SAAS;gBAAE,MAAM;QACvB,CAAC;QACD,gFAAgF;QAChF,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACxH,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,2BAA2B,CAAC,CAAC,CAAC;QAC3D,qGAAqG;QACrG,KAAK,CAAC,IAAI,CAAC,GAAG,mBAAmB,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,wBAAwB,CAAC,CAAC,CAAC;QAC7E,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAC;QACzD,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,kBAAkB,CAAC,CAAC,CAAC;QACtD,IAAI,OAAO,CAAC,MAAM,GAAG,kBAAkB,IAAI,SAAS,EAAE,CAAC;YACrD,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,MAAM,GAAG,kBAAkB,CAAC,EAAE,CAAC,CAAC;QAC5G,CAAC;QACD,IAAI,cAAc,GAAG,CAAC;YAAE,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,cAAc,EAAE,CAAC,CAAC;IAC5F,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,CAAC;AACjE,CAAC;AAED;;;;GAIG;AACH,SAAS,gBAAgB,CAAC,QAAgB,EAAE,YAAoB;IAC9D,MAAM,GAAG,GAAG,yBAAyB,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;IAC9D,IAAI,CAAC,GAAG;QAAE,OAAO,KAAK,CAAC;IACvB,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QAC9B,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,IAAI,CAAC,IAAI,GAAG,aAAa;YAAE,OAAO,KAAK,CAAC;QAC9D,MAAM,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QACjC,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,kBAAkB,CAAC,CAAC,CAAC;YACnE,MAAM,IAAI,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;YACtD,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;QAC3C,CAAC;gBAAS,CAAC;YACT,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QACnB,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,qBAAqB,CACnC,QAAgB,EAChB,SAAiD,EAAE;IAEnD,MAAM,MAAM,GAAG,CAAC,GAAG,gBAAgB,EAAE,GAAG,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,CAAC;IAChE,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;IACzF,0CAA0C;IAC1C,MAAM,IAAI,GAAG,CAAC,QAA2B,EAAY,EAAE;QACrD,MAAM,KAAK,GAAG,SAAS,CAAC,QAAQ,EAAE,CAAC,GAAG,QAAQ,CAAC,EAAE,MAAM,CAAC,CAAC;QACzD,OAAO,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;IAC5E,CAAC,CAAC;IACF,MAAM,QAAQ,GAAG,CAAC,QAA2B,EAAY,EAAE,CACzD,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC;IACpE,MAAM,SAAS,GAAG,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;IAClD,MAAM,OAAO,GAAG,kBAAkB,CAAC,QAAQ,EAAE,SAAS,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,EAAE,EAAE,CAAC,CAAC;IACpG,OAAO;QACL,MAAM,EAAE,QAAQ,CAAC,eAAe,CAAC,MAAM,CAAC;QACxC,SAAS;QACT,UAAU,EAAE,OAAO,CAAC,KAAK;QACzB,iBAAiB,EAAE,OAAO,CAAC,OAAO;QAClC,gBAAgB,EAAE,OAAO,CAAC,KAAK;QAC/B,MAAM,EAAE,QAAQ,CAAC,eAAe,CAAC,MAAM,CAAC;QACxC,QAAQ,EAAE,QAAQ,CAAC,eAAe,CAAC,QAAQ,CAAC;QAC5C,GAAG,EAAE,QAAQ,CAAC,eAAe,CAAC,GAAG,CAAC;QAClC,WAAW,EAAE,QAAQ,CAAC,eAAe,CAAC,WAAW,CAAC;QAClD,mBAAmB,EAAE,QAAQ,CAAC,eAAe,CAAC,mBAAmB,CAAC;KACnE,CAAC;AACJ,CAAC;AAED,sDAAsD;AACtD,MAAM,UAAU,SAAS,CAAC,KAAa;IACrC,OAAO,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAC5E,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,gBAAgB,CAAC,QAAgB,EAAE,MAAuB;IACxE,MAAM,GAAG,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;IACrD,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAC5B,GAAG,KAAK;QACR,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC;QACnC,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,QAAQ,EAAE,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;KACnF,CAAC,CAAC,CAAC;AACN,CAAC;AAED,iFAAiF;AACjF,MAAM,CAAC,MAAM,aAAa,GAAG,2CAA2C,CAAC;AAEzE;;;;;GAKG;AACH,MAAM,UAAU,MAAM,CAAC,GAAW,EAAE,MAAc;IAChD,IAAI,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAC9B,IAAI,GAAG,GAAG,CAAC;QAAE,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACpE,IAAI,GAAG,GAAG,CAAC;QAAE,OAAO,CAAC,CAAC;IACtB,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC;AACjD,CAAC;AAuBD,SAAS,QAAQ,CAAC,CAAS;IACzB,OAAO,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACrD,CAAC;AAED;;;;GAIG;AACH,MAAM,QAAQ,GAAG,wBAAwB,CAAC;AAE1C;;;;;GAKG;AACH,SAAS,oBAAoB,CAAC,GAAW;IACvC,IAAI,KAAK,GAAG,EAAE,CAAC;IACf,IAAI,IAAI,GAAG,EAAE,CAAC;IACd,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACpC,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,CAAE,CAAC;QAClB,IAAI,KAAK,EAAE,CAAC;YACV,IAAI,CAAC,KAAK,KAAK;gBAAE,KAAK,GAAG,EAAE,CAAC;QAC9B,CAAC;aAAM,IAAI,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,IAAI,KAAK,EAAE,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;YAC9E,KAAK,GAAG,CAAC,CAAC;QACZ,CAAC;aAAM,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,KAAK,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;YACzD,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;QACnC,CAAC;QACD,IAAI,GAAG,CAAC,CAAC;IACX,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;;;GAMG;AACH,SAAS,mBAAmB,CAAC,KAAa;IACxC,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,IAAI,GAAG,GAAG,EAAE,CAAC;IACb,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,KAAK,GAAG,EAAE,CAAC;IACf,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;QACtB,IAAI,KAAK,EAAE,CAAC;YACV,GAAG,IAAI,CAAC,CAAC;YACT,IAAI,CAAC,KAAK,KAAK;gBAAE,KAAK,GAAG,EAAE,CAAC;YAC5B,SAAS;QACX,CAAC;QACD,IAAI,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;YAAC,KAAK,GAAG,CAAC,CAAC;YAAC,GAAG,IAAI,CAAC,CAAC;YAAC,SAAS;QAAC,CAAC;QACrF,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;YAAC,KAAK,EAAE,CAAC;YAAC,GAAG,IAAI,CAAC,CAAC;YAAC,SAAS;QAAC,CAAC;QACzE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;YAAC,IAAI,KAAK,GAAG,CAAC;gBAAE,KAAK,EAAE,CAAC;YAAC,GAAG,IAAI,CAAC,CAAC;YAAC,SAAS;QAAC,CAAC;QACxF,IAAI,CAAC,KAAK,GAAG,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC;YAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAAC,GAAG,GAAG,EAAE,CAAC;YAAC,SAAS;QAAC,CAAC;QACtE,GAAG,IAAI,CAAC,CAAC;IACX,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAChB,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;AACrE,CAAC;AAED,SAAS,OAAO,CAAC,CAAS;IACxB,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QACxG,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACxB,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC;AAED,SAAS,WAAW,CAAC,GAAW;IAC9B,2EAA2E;IAC3E,6EAA6E;IAC7E,MAAM,KAAK,GAAG,oBAAoB,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;IAC/C,IAAI,KAAK,KAAK,EAAE;QAAE,OAAO,IAAI,CAAC;IAC9B,6EAA6E;IAC7E,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;IAChC,IAAI,QAAQ,KAAK,KAAK;QAAE,OAAO,QAAQ,CAAC;IACxC,kCAAkC;IAClC,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QACjD,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QACxC,IAAI,KAAK,KAAK,EAAE;YAAE,OAAO,EAAE,CAAC;QAC5B,OAAO,mBAAmB,CAAC,KAAK,CAAC,CAAC;IACpC,CAAC;IACD,IAAI,KAAK,KAAK,MAAM;QAAE,OAAO,IAAI,CAAC;IAClC,IAAI,KAAK,KAAK,OAAO;QAAE,OAAO,KAAK,CAAC;IACpC,IAAI,KAAK,KAAK,MAAM,IAAI,KAAK,KAAK,GAAG;QAAE,OAAO,IAAI,CAAC;IACnD,IAAI,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;IACxD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,gBAAgB,CAAC,OAAe;IAC9C,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC;IAC/B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAClC,MAAM,MAAM,GAAgB;QAC1B,OAAO,EAAE,KAAK;QACd,MAAM,EAAE,KAAK;QACb,IAAI,EAAE,EAAE;QACR,QAAQ,EAAE,EAAE;QACZ,YAAY,EAAE,CAAC,CAAC;QAChB,aAAa,EAAE,CAAC;QAChB,MAAM,EAAE,EAAE;KACX,CAAC;IAEF,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC,CAAE,CAAC,IAAI,EAAE,KAAK,KAAK,EAAE,CAAC;QACrD,OAAO,MAAM,CAAC,CAAC,sCAAsC;IACvD,CAAC;IACD,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC;IAEtB,IAAI,WAAW,GAAkB,IAAI,CAAC;IACtC,IAAI,cAAc,GAAkB,IAAI,CAAC;IACzC,IAAI,eAAe,GAAG,KAAK,CAAC;IAC5B,IAAI,gBAAgB,GAAa,EAAE,CAAC;IAEpC,MAAM,gBAAgB,GAAG,GAAG,EAAE;QAC5B,IAAI,cAAc,KAAK,IAAI;YAAE,OAAO;QACpC,MAAM,MAAM,GAAG,eAAe,CAAC,CAAC,CAAC,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1F,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC;QAC5C,cAAc,GAAG,IAAI,CAAC;QACtB,gBAAgB,GAAG,EAAE,CAAC;IACxB,CAAC,CAAC;IAEF,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,OAAO,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC7B,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAE,CAAC;QACvB,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAE5B,IAAI,cAAc,KAAK,IAAI,EAAE,CAAC;YAC5B,wEAAwE;YACxE,wDAAwD;YACxD,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;gBACxB,gBAAgB,EAAE,CAAC;gBACnB,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC;gBACrB,MAAM,CAAC,YAAY,GAAG,CAAC,GAAG,CAAC,CAAC;gBAC5B,MAAM,CAAC,aAAa,GAAG,CAAC,GAAG,CAAC,CAAC;gBAC7B,MAAM;YACR,CAAC;YACD,IAAI,OAAO,KAAK,EAAE,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;gBACvC,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBAC/B,SAAS;YACX,CAAC;YACD,gBAAgB,EAAE,CAAC;YACnB,+CAA+C;QACjD,CAAC;QAED,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YACxB,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC;YACrB,MAAM,CAAC,YAAY,GAAG,CAAC,GAAG,CAAC,CAAC;YAC5B,MAAM,CAAC,aAAa,GAAG,CAAC,GAAG,CAAC,CAAC;YAC7B,MAAM;QACR,CAAC;QACD,IAAI,OAAO,KAAK,EAAE,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,SAAS;QAExD,iEAAiE;QACjE,MAAM,SAAS,GAAG,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/C,IAAI,SAAS,IAAI,WAAW,EAAE,CAAC;YAC7B,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YACrC,MAAM,IAAI,GAAG,OAAO,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAC,CAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;YACjE,IAAI,IAAI,KAAK,EAAE,EAAE,CAAC;gBAChB,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;oBAAE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;;oBAClC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACzC,CAAC;YACD,SAAS;QACX,CAAC;QAED,MAAM,OAAO,GAAG,8BAA8B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1D,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,gCAAgC,CAAC,GAAG,CAAC,KAAK,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;YACrF,SAAS;QACX,CAAC;QACD,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAE,CAAC,MAAM,CAAC;QAClC,MAAM,GAAG,GAAG,OAAO,CAAC,CAAC,CAAE,CAAC,IAAI,EAAE,CAAC;QAC/B,MAAM,QAAQ,GAAG,OAAO,CAAC,CAAC,CAAE,CAAC;QAE7B,IAAI,MAAM,GAAG,CAAC,EAAE,CAAC;YACf,iDAAiD;YACjD,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,2BAA2B,GAAG,aAAa,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;YACxF,SAAS;QACX,CAAC;QAED,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC;YAC3D,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,8BAA8B,GAAG,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC3E,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,mBAAmB;QACnD,CAAC;QAED,MAAM,YAAY,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC;QACrC,IAAI,YAAY,KAAK,GAAG,IAAI,YAAY,KAAK,IAAI,IAAI,YAAY,KAAK,IAAI;YACtE,YAAY,KAAK,GAAG,IAAI,YAAY,KAAK,IAAI,IAAI,YAAY,KAAK,IAAI,EAAE,CAAC;YAC3E,cAAc,GAAG,GAAG,CAAC;YACrB,eAAe,GAAG,YAAY,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;YAC/C,gBAAgB,GAAG,EAAE,CAAC;YACtB,WAAW,GAAG,IAAI,CAAC;YACnB,SAAS;QACX,CAAC;QAED,IAAI,YAAY,KAAK,EAAE,EAAE,CAAC;YACxB,2EAA2E;YAC3E,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;YACxB,WAAW,GAAG,GAAG,CAAC;YAClB,SAAS;QACX,CAAC;QAED,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC;QACzC,WAAW,GAAG,IAAI,CAAC;IACrB,CAAC;IAED,IAAI,cAAc,KAAK,IAAI;QAAE,gBAAgB,EAAE,CAAC;IAEhD,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;QACnB,qEAAqE;QACrE,MAAM,CAAC,aAAa,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;IAC1C,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,6FAA6F;AAC7F,MAAM,UAAU,YAAY,CAAC,KAAuB;IAClD,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,EAAE,CAAC;IACrD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACpF,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,uEAAuE;QACvE,OAAO,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC;IACxE,CAAC;IACD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;AACzB,CAAC;AAED,iFAAiF;AAEjF,2DAA2D;AAC3D,MAAM,UAAU,aAAa,CAAC,KACwC;IACpE,OAAO;QACL,QAAQ,EAAE,SAAS;QACnB,QAAQ,EAAE,WAAW;QACrB,UAAU,EAAE,GAAG;QACf,GAAG,KAAK;KACT,CAAC;AACJ,CAAC;AAmBD;;;;;;GAMG;AACH,MAAM,UAAU,0BAA0B,CACxC,QAAgB,EAChB,OAAe,EACf,EAAe,EACf,OAA2B;IAE3B,MAAM,GAAG,GAAG,CAAC,IAAY,EAAE,GAAW,EAAE,EAAE,CACxC,aAAa,OAAO,CAAC,QAAQ,IAAI,IAAI,IAAI,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC;IAE5D,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC;QAChB,OAAO,CAAC,aAAa,CAAC;gBACpB,EAAE,EAAE,GAAG,CAAC,gBAAgB,EAAE,QAAQ,CAAC;gBACnC,QAAQ,EAAE,OAAO,CAAC,qBAAqB,IAAI,MAAM;gBACjD,KAAK,EAAE,OAAO,CAAC,kBAAkB,IAAI,GAAG,OAAO,CAAC,IAAI,8BAA8B;gBAClF,OAAO,EAAE,GAAG,QAAQ,sCAAsC,OAAO,CAAC,GAAG,EAAE;gBACvE,SAAS,EAAE,CAAC,QAAQ,CAAC;gBACrB,SAAS,EAAE,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;gBACnD,QAAQ,EAAE,CAAC,eAAe,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,SAAS,EAAE,CAAC;gBACjF,cAAc,EAAE,OAAO,CAAC,cAAc;gBACtC,UAAU,EAAE,OAAO,CAAC,uBAAuB,IAAI,IAAI;aACpD,CAAC,CAAC,CAAC;IACN,CAAC;IAED,MAAM,MAAM,GAAoB,EAAE,CAAC;IAEnC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC;QACf,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC;YACxB,EAAE,EAAE,GAAG,CAAC,cAAc,EAAE,QAAQ,CAAC;YACjC,QAAQ,EAAE,MAAM;YAChB,KAAK,EAAE,GAAG,OAAO,CAAC,IAAI,4BAA4B;YAClD,OAAO,EAAE,GAAG,QAAQ,0DAA0D;YAC9E,SAAS,EAAE,CAAC,QAAQ,CAAC;YACrB,SAAS,EAAE,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;YACnD,QAAQ,EAAE,CAAC,+CAA+C,CAAC;YAC3D,cAAc,EAAE,gDAAgD;YAChE,UAAU,EAAE,GAAG;SAChB,CAAC,CAAC,CAAC;IACN,CAAC;IAED,KAAK,MAAM,GAAG,IAAI,EAAE,CAAC,MAAM,EAAE,CAAC;QAC5B,yEAAyE;QACzE,0EAA0E;QAC1E,sEAAsE;QACtE,yEAAyE;QACzE,wEAAwE;QACxE,sDAAsD;QACtD,MAAM,YAAY,GAAG,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAChD,MAAM,OAAO,GAAG,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QACxD,MAAM,UAAU,GAAG,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,OAAO,GAAG,CAAC;YACzD,CAAC,CAAC,OAAO;YACT,CAAC,CAAC,CAAC,EAAE,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAChD,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC;YACxB,EAAE,EAAE,GAAG,CAAC,UAAU,EAAE,GAAG,QAAQ,IAAI,GAAG,EAAE,CAAC;YACzC,KAAK,EAAE,YAAY;gBACjB,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,wCAAwC,YAAY,GAAG;gBACxE,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,uCAAuC;YAC1D,OAAO,EAAE,GAAG,QAAQ,KAAK,GAAG,GAAG;YAC/B,SAAS,EAAE,CAAC,QAAQ,CAAC;YACrB,SAAS,EAAE,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,UAAU,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC;YACrE,QAAQ,EAAE,CAAC,GAAG,CAAC;YACf,cAAc,EACZ,kEAAkE;gBAClE,qFAAqF;YACvF,UAAU,EAAE,GAAG;SAChB,CAAC,CAAC,CAAC;IACN,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -0,0 +1,97 @@
1
+ /**
2
+ * pcic-oonz: the one deterministic "is this a typo for that?" test the
3
+ * mechanical fix recipes share.
4
+ *
5
+ * A fix recipe may only rewrite a name when the repository offers exactly one
6
+ * plausible replacement — otherwise the finding stays advisory and a human
7
+ * picks. "Plausible" has to be a rule, not a judgement call: detectors are
8
+ * rule-based, make no LLM call, and must produce identical output for
9
+ * identical input, so the matcher below is a pure function of the name and the
10
+ * candidate set, with no scoring heuristics, no locale and no ordering
11
+ * dependence (a tie is resolved by reporting no match at all, never by taking
12
+ * whichever candidate the manifest happened to list first).
13
+ *
14
+ * Two rules, applied in order:
15
+ *
16
+ * 1. **Separator / case equality.** The name and the candidate are equal once
17
+ * lowercased with `- _ : . /` and spaces removed, so `type-check` matches
18
+ * `typecheck` and `Build` matches `build`. Applied first because it is an
19
+ * exact correspondence, not a guess.
20
+ * 2. **Damerau-Levenshtein distance ≤ {@link CLOSE_MATCH_MAX_DISTANCE}** —
21
+ * the optimal-string-alignment variant, so a single transposition
22
+ * (`tets` → `test`, `bulid` → `build`) costs 1 rather than 2. Only for
23
+ * names of at least {@link CLOSE_MATCH_MIN_LENGTH} characters: two edits
24
+ * on a three-character name is a different word, not a typo (`dev` would
25
+ * "match" `test`).
26
+ *
27
+ * Either rule must produce exactly ONE winner — one normalised-equal
28
+ * candidate, or one candidate alone at the minimum distance. Zero candidates
29
+ * and ties both yield `undefined`.
30
+ *
31
+ * {@link closestUniqueMatch} answers "is there one plausible candidate worth
32
+ * NAMING?" and is deliberately permissive. Whether that candidate may be
33
+ * applied without a human looking is a separate, much stricter question —
34
+ * see {@link isMechanicalRename}.
35
+ */
36
+ /** Maximum edit distance between a name and the candidate that may replace it. */
37
+ export declare const CLOSE_MATCH_MAX_DISTANCE = 2;
38
+ /** Shortest name the distance rule will judge; shorter names use rule 1 only. */
39
+ export declare const CLOSE_MATCH_MIN_LENGTH = 4;
40
+ /** Shortest name a two-edit difference may be judged a typo rather than a different script. */
41
+ export declare const MECHANICAL_TWO_EDIT_MIN_LENGTH = 8;
42
+ /** Shortest differing segment that may be corrected by an arbitrary single edit. */
43
+ export declare const MECHANICAL_SEGMENT_MIN_LENGTH = 5;
44
+ /**
45
+ * pcic-oonz: whether replacing `missing` with `candidate` is a MECHANICAL
46
+ * rename — a misspelling of one name — rather than a plausible reference to a
47
+ * genuinely different script. Only a mechanical rename may be auto-applied;
48
+ * {@link closestUniqueMatch} alone is far too loose for that.
49
+ *
50
+ * The problem the extra rules solve: a one-edit neighbour is very often a real
51
+ * sibling script, and rewriting to it silently runs the wrong command.
52
+ * `test:api` → `test:app`, `test:unit` → `test:init`, `db:up` → `db:rm`,
53
+ * `test` → `best`, `build:v1` → `build:v2` are each a unique nearest
54
+ * neighbour, and each rewrite is wrong. So:
55
+ *
56
+ * 1. A pure case / separator difference (`type-check` → `typecheck`) is always
57
+ * mechanical: the two names denote the same thing in different styles.
58
+ * 2. Otherwise both names must have the SAME number of `:`-separated segments,
59
+ * with the difference confined to exactly one of them. A command that
60
+ * gains, loses or re-scopes a segment is a different command.
61
+ * 3. That segment pair must be within one edit, or two only when the whole
62
+ * name is at least {@link MECHANICAL_TWO_EDIT_MIN_LENGTH} characters —
63
+ * two edits on a short name reaches too far (`test` → `dist`).
64
+ * 4. A trailing-digit variant suffix is never corrected: `v1` → `v2`,
65
+ * `py2` → `py3`, `1` → `2` select a version or a target, and the digit is
66
+ * the whole point of the name.
67
+ * 5. In a differing segment shorter than
68
+ * {@link MECHANICAL_SEGMENT_MIN_LENGTH} characters, only a transposition
69
+ * or a mid-name digit swap counts. A single substituted LETTER in a short
70
+ * name usually spells another real token (`api`/`app`, `test`/`best`,
71
+ * `unit`/`init`), and no deterministic rule can tell which was meant — but
72
+ * `e3e`/`e2e` is not two words, and `bulid`/`build` is a slip of the
73
+ * fingers. (A dictionary would separate these more sharply; the repository
74
+ * has no dictionary and detectors make no network call, so the test is
75
+ * structural.)
76
+ *
77
+ * Anything this rejects is still reported — with the candidate named
78
+ * cautiously in the recommendation — just never rewritten automatically.
79
+ */
80
+ export declare function isMechanicalRename(missing: string, candidate: string): boolean;
81
+ /**
82
+ * Damerau-Levenshtein distance, optimal-string-alignment variant: insertions,
83
+ * deletions, substitutions and transpositions of ADJACENT characters each cost
84
+ * 1. OSA (rather than unrestricted Damerau-Levenshtein) is deliberate — it is
85
+ * the simpler recurrence, and no substring is edited twice in a typo short
86
+ * enough for this matcher to accept.
87
+ */
88
+ export declare function damerauLevenshtein(a: string, b: string): number;
89
+ /**
90
+ * The single candidate close enough to `name` to replace it mechanically, or
91
+ * `undefined` when there is none or more than one. See the module comment for
92
+ * the two rules; a candidate equal to `name` is ignored (the caller already
93
+ * established that `name` is absent, so an equal entry is a different thing
94
+ * with the same spelling, never the fix).
95
+ */
96
+ export declare function closestUniqueMatch(name: string, candidates: Iterable<string>): string | undefined;
97
+ //# sourceMappingURL=close-match.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"close-match.d.ts","sourceRoot":"","sources":["../src/close-match.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AAEH,kFAAkF;AAClF,eAAO,MAAM,wBAAwB,IAAI,CAAC;AAE1C,iFAAiF;AACjF,eAAO,MAAM,sBAAsB,IAAI,CAAC;AAOxC,+FAA+F;AAC/F,eAAO,MAAM,8BAA8B,IAAI,CAAC;AAEhD,oFAAoF;AACpF,eAAO,MAAM,6BAA6B,IAAI,CAAC;AAsB/C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CA4B9E;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CA8B/D;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,GAAG,MAAM,GAAG,SAAS,CA2BjG"}
@@ -0,0 +1,215 @@
1
+ /**
2
+ * pcic-oonz: the one deterministic "is this a typo for that?" test the
3
+ * mechanical fix recipes share.
4
+ *
5
+ * A fix recipe may only rewrite a name when the repository offers exactly one
6
+ * plausible replacement — otherwise the finding stays advisory and a human
7
+ * picks. "Plausible" has to be a rule, not a judgement call: detectors are
8
+ * rule-based, make no LLM call, and must produce identical output for
9
+ * identical input, so the matcher below is a pure function of the name and the
10
+ * candidate set, with no scoring heuristics, no locale and no ordering
11
+ * dependence (a tie is resolved by reporting no match at all, never by taking
12
+ * whichever candidate the manifest happened to list first).
13
+ *
14
+ * Two rules, applied in order:
15
+ *
16
+ * 1. **Separator / case equality.** The name and the candidate are equal once
17
+ * lowercased with `- _ : . /` and spaces removed, so `type-check` matches
18
+ * `typecheck` and `Build` matches `build`. Applied first because it is an
19
+ * exact correspondence, not a guess.
20
+ * 2. **Damerau-Levenshtein distance ≤ {@link CLOSE_MATCH_MAX_DISTANCE}** —
21
+ * the optimal-string-alignment variant, so a single transposition
22
+ * (`tets` → `test`, `bulid` → `build`) costs 1 rather than 2. Only for
23
+ * names of at least {@link CLOSE_MATCH_MIN_LENGTH} characters: two edits
24
+ * on a three-character name is a different word, not a typo (`dev` would
25
+ * "match" `test`).
26
+ *
27
+ * Either rule must produce exactly ONE winner — one normalised-equal
28
+ * candidate, or one candidate alone at the minimum distance. Zero candidates
29
+ * and ties both yield `undefined`.
30
+ *
31
+ * {@link closestUniqueMatch} answers "is there one plausible candidate worth
32
+ * NAMING?" and is deliberately permissive. Whether that candidate may be
33
+ * applied without a human looking is a separate, much stricter question —
34
+ * see {@link isMechanicalRename}.
35
+ */
36
+ /** Maximum edit distance between a name and the candidate that may replace it. */
37
+ export const CLOSE_MATCH_MAX_DISTANCE = 2;
38
+ /** Shortest name the distance rule will judge; shorter names use rule 1 only. */
39
+ export const CLOSE_MATCH_MIN_LENGTH = 4;
40
+ /** Lowercased with the separators naming conventions disagree about removed. */
41
+ function normalizeName(name) {
42
+ return name.toLowerCase().replace(/[-_:./\s]/g, '');
43
+ }
44
+ /** Shortest name a two-edit difference may be judged a typo rather than a different script. */
45
+ export const MECHANICAL_TWO_EDIT_MIN_LENGTH = 8;
46
+ /** Shortest differing segment that may be corrected by an arbitrary single edit. */
47
+ export const MECHANICAL_SEGMENT_MIN_LENGTH = 5;
48
+ /** True when `a` and `b` are the same characters with one adjacent pair swapped. */
49
+ function isAdjacentTransposition(a, b) {
50
+ if (a.length !== b.length)
51
+ return false;
52
+ const diff = [];
53
+ for (let i = 0; i < a.length; i++)
54
+ if (a[i] !== b[i])
55
+ diff.push(i);
56
+ return diff.length === 2 && diff[1] === diff[0] + 1 && a[diff[0]] === b[diff[1]] && a[diff[1]] === b[diff[0]];
57
+ }
58
+ /** True when `a` and `b` differ only by substituting digits for digits, position for position. */
59
+ function isDigitForDigitSubstitution(a, b) {
60
+ if (a.length !== b.length)
61
+ return false;
62
+ let changed = false;
63
+ for (let i = 0; i < a.length; i++) {
64
+ if (a[i] === b[i])
65
+ continue;
66
+ if (!/^\d$/.test(a[i]) || !/^\d$/.test(b[i]))
67
+ return false;
68
+ changed = true;
69
+ }
70
+ return changed;
71
+ }
72
+ /**
73
+ * pcic-oonz: whether replacing `missing` with `candidate` is a MECHANICAL
74
+ * rename — a misspelling of one name — rather than a plausible reference to a
75
+ * genuinely different script. Only a mechanical rename may be auto-applied;
76
+ * {@link closestUniqueMatch} alone is far too loose for that.
77
+ *
78
+ * The problem the extra rules solve: a one-edit neighbour is very often a real
79
+ * sibling script, and rewriting to it silently runs the wrong command.
80
+ * `test:api` → `test:app`, `test:unit` → `test:init`, `db:up` → `db:rm`,
81
+ * `test` → `best`, `build:v1` → `build:v2` are each a unique nearest
82
+ * neighbour, and each rewrite is wrong. So:
83
+ *
84
+ * 1. A pure case / separator difference (`type-check` → `typecheck`) is always
85
+ * mechanical: the two names denote the same thing in different styles.
86
+ * 2. Otherwise both names must have the SAME number of `:`-separated segments,
87
+ * with the difference confined to exactly one of them. A command that
88
+ * gains, loses or re-scopes a segment is a different command.
89
+ * 3. That segment pair must be within one edit, or two only when the whole
90
+ * name is at least {@link MECHANICAL_TWO_EDIT_MIN_LENGTH} characters —
91
+ * two edits on a short name reaches too far (`test` → `dist`).
92
+ * 4. A trailing-digit variant suffix is never corrected: `v1` → `v2`,
93
+ * `py2` → `py3`, `1` → `2` select a version or a target, and the digit is
94
+ * the whole point of the name.
95
+ * 5. In a differing segment shorter than
96
+ * {@link MECHANICAL_SEGMENT_MIN_LENGTH} characters, only a transposition
97
+ * or a mid-name digit swap counts. A single substituted LETTER in a short
98
+ * name usually spells another real token (`api`/`app`, `test`/`best`,
99
+ * `unit`/`init`), and no deterministic rule can tell which was meant — but
100
+ * `e3e`/`e2e` is not two words, and `bulid`/`build` is a slip of the
101
+ * fingers. (A dictionary would separate these more sharply; the repository
102
+ * has no dictionary and detectors make no network call, so the test is
103
+ * structural.)
104
+ *
105
+ * Anything this rejects is still reported — with the candidate named
106
+ * cautiously in the recommendation — just never rewritten automatically.
107
+ */
108
+ export function isMechanicalRename(missing, candidate) {
109
+ if (!missing || !candidate || missing === candidate)
110
+ return false;
111
+ // 1. Same name, different convention.
112
+ if (normalizeName(missing) === normalizeName(candidate))
113
+ return true;
114
+ // 2. One differing `:` segment.
115
+ const from = missing.split(':');
116
+ const to = candidate.split(':');
117
+ if (from.length !== to.length)
118
+ return false;
119
+ const differing = from.map((seg, i) => (seg === to[i] ? -1 : i)).filter((i) => i !== -1);
120
+ if (differing.length !== 1)
121
+ return false;
122
+ const a = from[differing[0]];
123
+ const b = to[differing[0]];
124
+ // 3. Within the edit budget for this name's length.
125
+ const distance = damerauLevenshtein(a, b);
126
+ if (distance < 1 || distance > CLOSE_MATCH_MAX_DISTANCE)
127
+ return false;
128
+ if (distance === 2 && missing.length < MECHANICAL_TWO_EDIT_MIN_LENGTH)
129
+ return false;
130
+ // 4. A trailing-digit variant is a choice, not a typo.
131
+ const stem = (seg) => seg.replace(/\d+$/, '');
132
+ if (stem(a) === stem(b))
133
+ return false;
134
+ // 5. A short segment may only be transposed, or have a mid-name digit swapped.
135
+ if (Math.max(a.length, b.length) < MECHANICAL_SEGMENT_MIN_LENGTH) {
136
+ return isAdjacentTransposition(a, b) || isDigitForDigitSubstitution(a, b);
137
+ }
138
+ return true;
139
+ }
140
+ /**
141
+ * Damerau-Levenshtein distance, optimal-string-alignment variant: insertions,
142
+ * deletions, substitutions and transpositions of ADJACENT characters each cost
143
+ * 1. OSA (rather than unrestricted Damerau-Levenshtein) is deliberate — it is
144
+ * the simpler recurrence, and no substring is edited twice in a typo short
145
+ * enough for this matcher to accept.
146
+ */
147
+ export function damerauLevenshtein(a, b) {
148
+ if (a === b)
149
+ return 0;
150
+ if (a.length === 0)
151
+ return b.length;
152
+ if (b.length === 0)
153
+ return a.length;
154
+ // Three rolling rows: the previous two plus the one being filled.
155
+ let twoBack = [];
156
+ let oneBack = Array.from({ length: b.length + 1 }, (_, j) => j);
157
+ let current = new Array(b.length + 1);
158
+ for (let i = 1; i <= a.length; i++) {
159
+ current[0] = i;
160
+ for (let j = 1; j <= b.length; j++) {
161
+ const cost = a[i - 1] === b[j - 1] ? 0 : 1;
162
+ let best = Math.min(oneBack[j] + 1, // deletion
163
+ current[j - 1] + 1, // insertion
164
+ oneBack[j - 1] + cost);
165
+ if (i > 1 && j > 1 && a[i - 1] === b[j - 2] && a[i - 2] === b[j - 1]) {
166
+ best = Math.min(best, twoBack[j - 2] + 1); // transposition
167
+ }
168
+ current[j] = best;
169
+ }
170
+ twoBack = oneBack;
171
+ oneBack = current;
172
+ current = new Array(b.length + 1);
173
+ }
174
+ return oneBack[b.length];
175
+ }
176
+ /**
177
+ * The single candidate close enough to `name` to replace it mechanically, or
178
+ * `undefined` when there is none or more than one. See the module comment for
179
+ * the two rules; a candidate equal to `name` is ignored (the caller already
180
+ * established that `name` is absent, so an equal entry is a different thing
181
+ * with the same spelling, never the fix).
182
+ */
183
+ export function closestUniqueMatch(name, candidates) {
184
+ const pool = [...new Set(candidates)].filter((c) => c !== name && c.length > 0);
185
+ if (pool.length === 0 || name.length === 0)
186
+ return undefined;
187
+ // Rule 1: separator / case equality.
188
+ const normalized = normalizeName(name);
189
+ const equal = pool.filter((c) => normalizeName(c) === normalized);
190
+ if (equal.length === 1)
191
+ return equal[0];
192
+ if (equal.length > 1)
193
+ return undefined; // ambiguous: two spellings of one name
194
+ // Rule 2: a unique nearest neighbour within the distance budget.
195
+ if (name.length < CLOSE_MATCH_MIN_LENGTH)
196
+ return undefined;
197
+ let best = CLOSE_MATCH_MAX_DISTANCE + 1;
198
+ let winner;
199
+ let tied = false;
200
+ for (const candidate of pool) {
201
+ const distance = damerauLevenshtein(name, candidate);
202
+ if (distance > CLOSE_MATCH_MAX_DISTANCE)
203
+ continue;
204
+ if (distance < best) {
205
+ best = distance;
206
+ winner = candidate;
207
+ tied = false;
208
+ }
209
+ else if (distance === best) {
210
+ tied = true;
211
+ }
212
+ }
213
+ return tied ? undefined : winner;
214
+ }
215
+ //# sourceMappingURL=close-match.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"close-match.js","sourceRoot":"","sources":["../src/close-match.ts"],"names":[],"mappings":"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"}