codesift-mcp 0.5.30 → 0.7.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 (94) hide show
  1. package/README.md +7 -2
  2. package/dist/cli/commands.d.ts.map +1 -1
  3. package/dist/cli/commands.js +25 -3
  4. package/dist/cli/commands.js.map +1 -1
  5. package/dist/cli/git-hooks-installer.d.ts +2 -0
  6. package/dist/cli/git-hooks-installer.d.ts.map +1 -1
  7. package/dist/cli/git-hooks-installer.js +33 -6
  8. package/dist/cli/git-hooks-installer.js.map +1 -1
  9. package/dist/parser/extractors/_shared.js +2 -2
  10. package/dist/parser/extractors/_shared.js.map +1 -1
  11. package/dist/parser/extractors/hono.d.ts.map +1 -1
  12. package/dist/parser/extractors/hono.js +47 -10
  13. package/dist/parser/extractors/hono.js.map +1 -1
  14. package/dist/parser/extractors/python.js +4 -5
  15. package/dist/parser/extractors/python.js.map +1 -1
  16. package/dist/parser/extractors/typescript.d.ts.map +1 -1
  17. package/dist/parser/extractors/typescript.js +70 -22
  18. package/dist/parser/extractors/typescript.js.map +1 -1
  19. package/dist/register-tool-loaders.d.ts +6 -0
  20. package/dist/register-tool-loaders.d.ts.map +1 -1
  21. package/dist/register-tool-loaders.js +12 -0
  22. package/dist/register-tool-loaders.js.map +1 -1
  23. package/dist/register-tools.d.ts.map +1 -1
  24. package/dist/register-tools.js +174 -1
  25. package/dist/register-tools.js.map +1 -1
  26. package/dist/storage/index-store.d.ts +13 -1
  27. package/dist/storage/index-store.d.ts.map +1 -1
  28. package/dist/storage/index-store.js +27 -28
  29. package/dist/storage/index-store.js.map +1 -1
  30. package/dist/tools/_helpers.d.ts +2 -0
  31. package/dist/tools/_helpers.d.ts.map +1 -1
  32. package/dist/tools/_helpers.js +2 -1
  33. package/dist/tools/_helpers.js.map +1 -1
  34. package/dist/tools/astro-audit.d.ts +40 -0
  35. package/dist/tools/astro-audit.d.ts.map +1 -1
  36. package/dist/tools/astro-audit.js +94 -5
  37. package/dist/tools/astro-audit.js.map +1 -1
  38. package/dist/tools/astro-env-validator.d.ts +38 -0
  39. package/dist/tools/astro-env-validator.d.ts.map +1 -0
  40. package/dist/tools/astro-env-validator.js +190 -0
  41. package/dist/tools/astro-env-validator.js.map +1 -0
  42. package/dist/tools/astro-helpers.js +2 -2
  43. package/dist/tools/astro-helpers.js.map +1 -1
  44. package/dist/tools/astro-image-audit.d.ts +35 -0
  45. package/dist/tools/astro-image-audit.d.ts.map +1 -0
  46. package/dist/tools/astro-image-audit.js +129 -0
  47. package/dist/tools/astro-image-audit.js.map +1 -0
  48. package/dist/tools/astro-middleware.d.ts.map +1 -1
  49. package/dist/tools/astro-middleware.js +36 -11
  50. package/dist/tools/astro-middleware.js.map +1 -1
  51. package/dist/tools/astro-migration.d.ts.map +1 -1
  52. package/dist/tools/astro-migration.js +66 -0
  53. package/dist/tools/astro-migration.js.map +1 -1
  54. package/dist/tools/astro-svg-components.d.ts +32 -0
  55. package/dist/tools/astro-svg-components.d.ts.map +1 -0
  56. package/dist/tools/astro-svg-components.js +123 -0
  57. package/dist/tools/astro-svg-components.js.map +1 -0
  58. package/dist/tools/context-tools.d.ts.map +1 -1
  59. package/dist/tools/context-tools.js +45 -7
  60. package/dist/tools/context-tools.js.map +1 -1
  61. package/dist/tools/index-tools.d.ts.map +1 -1
  62. package/dist/tools/index-tools.js +2 -1
  63. package/dist/tools/index-tools.js.map +1 -1
  64. package/dist/tools/pattern-tools.d.ts.map +1 -1
  65. package/dist/tools/pattern-tools.js +5 -4
  66. package/dist/tools/pattern-tools.js.map +1 -1
  67. package/dist/tools/project-tools.js +1 -1
  68. package/dist/tools/project-tools.js.map +1 -1
  69. package/dist/tools/react-tools.d.ts +15 -9
  70. package/dist/tools/react-tools.d.ts.map +1 -1
  71. package/dist/tools/react-tools.js +23 -17
  72. package/dist/tools/react-tools.js.map +1 -1
  73. package/dist/tools/status-tools.d.ts +1 -0
  74. package/dist/tools/status-tools.d.ts.map +1 -1
  75. package/dist/tools/status-tools.js +1 -0
  76. package/dist/tools/status-tools.js.map +1 -1
  77. package/dist/tools/symbol-tools.d.ts +11 -0
  78. package/dist/tools/symbol-tools.d.ts.map +1 -1
  79. package/dist/tools/symbol-tools.js +104 -6
  80. package/dist/tools/symbol-tools.js.map +1 -1
  81. package/dist/utils/heritage-edges.d.ts +13 -0
  82. package/dist/utils/heritage-edges.d.ts.map +1 -0
  83. package/dist/utils/heritage-edges.js +73 -0
  84. package/dist/utils/heritage-edges.js.map +1 -0
  85. package/dist/utils/ts-imports.d.ts +7 -1
  86. package/dist/utils/ts-imports.d.ts.map +1 -1
  87. package/dist/utils/ts-imports.js +40 -7
  88. package/dist/utils/ts-imports.js.map +1 -1
  89. package/dist/utils/tsconfig-paths.d.ts +6 -5
  90. package/dist/utils/tsconfig-paths.d.ts.map +1 -1
  91. package/dist/utils/tsconfig-paths.js +46 -14
  92. package/dist/utils/tsconfig-paths.js.map +1 -1
  93. package/package.json +1 -1
  94. package/rules/codesift.md +6 -3
@@ -0,0 +1 @@
1
+ {"version":3,"file":"heritage-edges.js","sourceRoot":"","sources":["../../src/utils/heritage-edges.ts"],"names":[],"mappings":"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"}
@@ -15,13 +15,19 @@
15
15
  * - `import { } from "y"` (empty named clause) → runtime (module still evaluated)
16
16
  * - `import * as ns from "y"` / default / side-effect → runtime
17
17
  * - `export { X } from "y"` → runtime; `export type { X } from "y"` → type_only:true
18
+ * - per-specifier `export { type X, Y } from "y"` → runtime if any runtime export (same rule as imports)
18
19
  * - `export * from "y"` → runtime; `export type * from "y"` → type_only:true
20
+ * - `import x = require("y")` → runtime edge to `y` (handled via `import_require_clause`)
21
+ *
22
+ * Limitation: `import { type X } from "m"` is modeled type-only when all named bindings are
23
+ * `type`-only; with `verbatimModuleSyntax`, TS may still emit a runtime module dependency —
24
+ * we do not read compilerOptions here, so graphs may under-report runtime edges in that mode.
19
25
  */
20
26
  import type Parser from "web-tree-sitter";
21
27
  export interface TsImportEdge {
22
28
  /** raw specifier text from the import source (relative or bare/aliased) */
23
29
  path: string;
24
- /** true when entire statement is type-only OR every named specifier is `type`-only */
30
+ /** true when statement-level `import type` / `export type`, all per-specifier `type` bindings in a named clause, or `export type *`; see file header for edge cases */
25
31
  is_type_only: boolean;
26
32
  /** imported/re-exported names (for future use; empty for side-effect imports) */
27
33
  specifiers: string[];
@@ -1 +1 @@
1
- {"version":3,"file":"ts-imports.d.ts","sourceRoot":"","sources":["../../src/utils/ts-imports.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,KAAK,MAAM,MAAM,iBAAiB,CAAC;AAE1C,MAAM,WAAW,YAAY;IAC3B,2EAA2E;IAC3E,IAAI,EAAE,MAAM,CAAC;IACb,sFAAsF;IACtF,YAAY,EAAE,OAAO,CAAC;IACtB,iFAAiF;IACjF,UAAU,EAAE,MAAM,EAAE,CAAC;CACtB;AAqGD,6DAA6D;AAC7D,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,GAAG,YAAY,EAAE,CAqD1E"}
1
+ {"version":3,"file":"ts-imports.d.ts","sourceRoot":"","sources":["../../src/utils/ts-imports.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,OAAO,KAAK,MAAM,MAAM,iBAAiB,CAAC;AAE1C,MAAM,WAAW,YAAY;IAC3B,2EAA2E;IAC3E,IAAI,EAAE,MAAM,CAAC;IACb,uKAAuK;IACvK,YAAY,EAAE,OAAO,CAAC;IACtB,iFAAiF;IACjF,UAAU,EAAE,MAAM,EAAE,CAAC;CACtB;AA8GD,6DAA6D;AAC7D,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,GAAG,YAAY,EAAE,CA+E1E"}
@@ -15,7 +15,13 @@
15
15
  * - `import { } from "y"` (empty named clause) → runtime (module still evaluated)
16
16
  * - `import * as ns from "y"` / default / side-effect → runtime
17
17
  * - `export { X } from "y"` → runtime; `export type { X } from "y"` → type_only:true
18
+ * - per-specifier `export { type X, Y } from "y"` → runtime if any runtime export (same rule as imports)
18
19
  * - `export * from "y"` → runtime; `export type * from "y"` → type_only:true
20
+ * - `import x = require("y")` → runtime edge to `y` (handled via `import_require_clause`)
21
+ *
22
+ * Limitation: `import { type X } from "m"` is modeled type-only when all named bindings are
23
+ * `type`-only; with `verbatimModuleSyntax`, TS may still emit a runtime module dependency —
24
+ * we do not read compilerOptions here, so graphs may under-report runtime edges in that mode.
19
25
  */
20
26
  /** True when this statement node has a top-level `type` keyword child
21
27
  * (e.g., `import type {...}` or `export type {...}`).
@@ -101,28 +107,48 @@ function walkImportClause(clause) {
101
107
  }
102
108
  return { specifiers, anyRuntimeSpecifier };
103
109
  }
104
- /** Walk an `export_clause` (named re-exports) to collect names.
105
- * Returns specifiers list. Type-only-ness is derived from the parent
106
- * export_statement, not per-specifier here (TS does not distinguish at the
107
- * specifier level inside `export {X} from "y"` to the same extent as imports). */
110
+ /** Walk an `export_clause` (named re-exports) to collect names and whether any
111
+ * specifier is not `type`-only (mirrors `import_specifier` rules). */
108
112
  function walkExportClause(clause) {
109
113
  const specifiers = [];
114
+ let anyRuntimeSpecifier = false;
115
+ let namedCount = 0;
110
116
  for (const spec of clause.namedChildren) {
111
117
  if (spec.type !== "export_specifier")
112
118
  continue;
119
+ namedCount += 1;
113
120
  const nameNode = spec.childForFieldName("name");
114
121
  const aliasNode = spec.childForFieldName("alias");
115
122
  const emitName = (aliasNode ?? nameNode)?.text;
116
123
  if (emitName)
117
124
  specifiers.push(emitName);
125
+ const isTyped = spec.children.some((c) => c.type === "type" && c.text === "type");
126
+ if (!isTyped)
127
+ anyRuntimeSpecifier = true;
118
128
  }
119
- return specifiers;
129
+ if (namedCount === 0)
130
+ anyRuntimeSpecifier = true;
131
+ return { specifiers, anyRuntimeSpecifier };
120
132
  }
121
133
  /** Walk the tree and return all import + re-export edges. */
122
134
  export function extractTypeScriptImports(tree) {
123
135
  const edges = [];
124
136
  function visit(node) {
125
137
  if (node.type === "import_statement") {
138
+ const requireClause = node.namedChildren.find((c) => c.type === "import_require_clause");
139
+ if (requireClause) {
140
+ const src = requireClause.childForFieldName("source");
141
+ if (!src)
142
+ return;
143
+ const path = src.text.replace(/^['"`]|['"`]$/g, "");
144
+ const id = requireClause.namedChildren.find((c) => c.type === "identifier");
145
+ edges.push({
146
+ path,
147
+ is_type_only: false,
148
+ specifiers: id ? [id.text] : [],
149
+ });
150
+ return;
151
+ }
126
152
  const path = getSourcePath(node);
127
153
  if (!path)
128
154
  return; // malformed; skip
@@ -149,11 +175,16 @@ export function extractTypeScriptImports(tree) {
149
175
  visit(c);
150
176
  return;
151
177
  }
152
- const is_type_only = statementIsTypeOnly(node);
178
+ const stmtTypeOnly = statementIsTypeOnly(node);
153
179
  let specifiers = [];
180
+ let sawNamedExportClause = false;
181
+ let anyRuntimeExportSpecifier = true;
154
182
  for (const child of node.namedChildren) {
155
183
  if (child.type === "export_clause") {
156
- specifiers = walkExportClause(child);
184
+ sawNamedExportClause = true;
185
+ const w = walkExportClause(child);
186
+ specifiers = w.specifiers;
187
+ anyRuntimeExportSpecifier = w.anyRuntimeSpecifier;
157
188
  }
158
189
  // namespace_export `export * as ns from "y"` → record `ns` as specifier
159
190
  if (child.type === "namespace_export") {
@@ -162,6 +193,8 @@ export function extractTypeScriptImports(tree) {
162
193
  specifiers.push(id.text);
163
194
  }
164
195
  }
196
+ const is_type_only = stmtTypeOnly ||
197
+ (sawNamedExportClause && !anyRuntimeExportSpecifier);
165
198
  edges.push({ path, is_type_only, specifiers });
166
199
  return;
167
200
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ts-imports.js","sourceRoot":"","sources":["../../src/utils/ts-imports.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ts-imports.js","sourceRoot":"","sources":["../../src/utils/ts-imports.ts"],"names":[],"mappings":"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"}
@@ -3,9 +3,10 @@
3
3
  * `tsconfig.json`, using `get-tsconfig` for `extends`-chain + paths handling.
4
4
  *
5
5
  * Two-level cache keeps long-running MCP server processes happy:
6
- * - `dirToConfigCache`: importer directory absolute path → nearest tsconfig.json path
7
- * (or null when none found up to repoRoot). Entries are per queried dir only
8
- * so adding/removing tsconfig is visible after `clearTsconfigCache()`.
6
+ * - `dirToConfigCache`: `${repoRoot}::${importerDir}` → nearest tsconfig.json path
7
+ * (or null when none found up to repoRoot). Includes repoRoot so the same
8
+ * importer directory analyzed under different root boundaries does not reuse
9
+ * a stale tsconfig from another indexing scope.
9
10
  * - `configCache`: tsconfig.json absolute path → parsed { matcher, baseUrl }.
10
11
  *
11
12
  * Both caches are cleared on `clearTsconfigCache()`. The graph builder calls
@@ -29,8 +30,8 @@ interface ResolvedTsconfig {
29
30
  export declare function clearTsconfigCache(): void;
30
31
  /** Walk up from `dir` to `repoRoot`, find nearest `tsconfig.json`.
31
32
  * Returns absolute path of the config file, or null if none found.
32
- * Caches result only for the requested `dir` (not every ancestor) so late-added
33
- * or removed tsconfig files are visible on the next lookup after cache clear. */
33
+ * Caches per `(repoRoot, dir)` pair so late-added or removed tsconfig files are
34
+ * visible on the next lookup after cache clear. */
34
35
  declare function findNearestTsconfig(dir: string, repoRoot: string): string | null;
35
36
  /** Parse a tsconfig.json (with `extends` chain) and build a paths matcher.
36
37
  * Returns null on parse error. Caches successful parses only — failures are
@@ -1 +1 @@
1
- {"version":3,"file":"tsconfig-paths.d.ts","sourceRoot":"","sources":["../../src/utils/tsconfig-paths.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAMH,UAAU,gBAAgB;IACxB,YAAY,EAAE,CAAC,CAAC,SAAS,EAAE,MAAM,KAAK,MAAM,EAAE,CAAC,GAAG,IAAI,CAAC;IACvD,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;CACpB;AAoBD,gEAAgE;AAChE,wBAAgB,kBAAkB,IAAI,IAAI,CAGzC;AAUD;;;iFAGiF;AACjF,iBAAS,mBAAmB,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAkBzE;AAED;;;mDAGmD;AACnD,iBAAS,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,gBAAgB,GAAG,IAAI,CA8BjE;AAED;qCACqC;AACrC,iBAAS,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAcnD;AAED;;;;;;mEAMmE;AACnE,wBAAgB,sBAAsB,CACpC,YAAY,EAAE,MAAM,EACpB,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,GACf,MAAM,GAAG,IAAI,CA4Bf;AAGD,eAAO,MAAM,MAAM;;;;;;;CAQlB,CAAC"}
1
+ {"version":3,"file":"tsconfig-paths.d.ts","sourceRoot":"","sources":["../../src/utils/tsconfig-paths.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAMH,UAAU,gBAAgB;IACxB,YAAY,EAAE,CAAC,CAAC,SAAS,EAAE,MAAM,KAAK,MAAM,EAAE,CAAC,GAAG,IAAI,CAAC;IACvD,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;CACpB;AA4BD,gEAAgE;AAChE,wBAAgB,kBAAkB,IAAI,IAAI,CAGzC;AA0BD;;;mDAGmD;AACnD,iBAAS,mBAAmB,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAmBzE;AAED;;;mDAGmD;AACnD,iBAAS,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,gBAAgB,GAAG,IAAI,CA8BjE;AAED;qCACqC;AACrC,iBAAS,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAcnD;AAED;;;;;;mEAMmE;AACnE,wBAAgB,sBAAsB,CACpC,YAAY,EAAE,MAAM,EACpB,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,GACf,MAAM,GAAG,IAAI,CAqCf;AAGD,eAAO,MAAM,MAAM;;;;;;;CAQlB,CAAC"}
@@ -3,9 +3,10 @@
3
3
  * `tsconfig.json`, using `get-tsconfig` for `extends`-chain + paths handling.
4
4
  *
5
5
  * Two-level cache keeps long-running MCP server processes happy:
6
- * - `dirToConfigCache`: importer directory absolute path → nearest tsconfig.json path
7
- * (or null when none found up to repoRoot). Entries are per queried dir only
8
- * so adding/removing tsconfig is visible after `clearTsconfigCache()`.
6
+ * - `dirToConfigCache`: `${repoRoot}::${importerDir}` → nearest tsconfig.json path
7
+ * (or null when none found up to repoRoot). Includes repoRoot so the same
8
+ * importer directory analyzed under different root boundaries does not reuse
9
+ * a stale tsconfig from another indexing scope.
9
10
  * - `configCache`: tsconfig.json absolute path → parsed { matcher, baseUrl }.
10
11
  *
11
12
  * Both caches are cleared on `clearTsconfigCache()`. The graph builder calls
@@ -34,10 +35,18 @@ const TS_EXTENSIONS = [
34
35
  ".d.ts",
35
36
  ".js",
36
37
  ".jsx",
38
+ ".mts",
39
+ ".cts",
40
+ ".mjs",
41
+ ".cjs",
37
42
  "/index.ts",
38
43
  "/index.tsx",
39
44
  "/index.d.ts",
40
45
  "/index.js",
46
+ "/index.mts",
47
+ "/index.cts",
48
+ "/index.mjs",
49
+ "/index.cjs",
41
50
  ];
42
51
  /** Clear both caches. Called at the start of `index_folder`. */
43
52
  export function clearTsconfigCache() {
@@ -52,12 +61,25 @@ function isDirInsideRepo(repoRootAbs, dir) {
52
61
  const rel = relative(repoRootAbs, abs);
53
62
  return rel !== "" && !isAbsolute(rel) && !rel.startsWith(`..${sep}`) && !rel.startsWith("..");
54
63
  }
64
+ /** True when `resolvedFileAbs` is a file path inside `repoRootAbs` (no `..` escape). */
65
+ function isResolvedFileInsideRepo(repoRootAbs, resolvedFileAbs) {
66
+ const abs = resolve(resolvedFileAbs);
67
+ const rel = relative(repoRootAbs, abs);
68
+ return (rel !== "" &&
69
+ !isAbsolute(rel) &&
70
+ !rel.startsWith(`..${sep}`) &&
71
+ !rel.startsWith(".."));
72
+ }
73
+ function dirToConfigCacheKey(importerDir, repoRoot) {
74
+ return `${resolve(repoRoot)}::${resolve(importerDir)}`;
75
+ }
55
76
  /** Walk up from `dir` to `repoRoot`, find nearest `tsconfig.json`.
56
77
  * Returns absolute path of the config file, or null if none found.
57
- * Caches result only for the requested `dir` (not every ancestor) so late-added
58
- * or removed tsconfig files are visible on the next lookup after cache clear. */
78
+ * Caches per `(repoRoot, dir)` pair so late-added or removed tsconfig files are
79
+ * visible on the next lookup after cache clear. */
59
80
  function findNearestTsconfig(dir, repoRoot) {
60
- const cached = dirToConfigCache.get(dir);
81
+ const cacheKey = dirToConfigCacheKey(dir, repoRoot);
82
+ const cached = dirToConfigCache.get(cacheKey);
61
83
  if (cached !== undefined)
62
84
  return cached;
63
85
  const repoRootAbs = resolve(repoRoot);
@@ -65,7 +87,7 @@ function findNearestTsconfig(dir, repoRoot) {
65
87
  while (isDirInsideRepo(repoRootAbs, cur)) {
66
88
  const candidate = join(cur, "tsconfig.json");
67
89
  if (existsSync(candidate)) {
68
- dirToConfigCache.set(dir, candidate);
90
+ dirToConfigCache.set(cacheKey, candidate);
69
91
  return candidate;
70
92
  }
71
93
  const parent = dirname(cur);
@@ -73,7 +95,7 @@ function findNearestTsconfig(dir, repoRoot) {
73
95
  break;
74
96
  cur = parent;
75
97
  }
76
- dirToConfigCache.set(dir, null);
98
+ dirToConfigCache.set(cacheKey, null);
77
99
  return null;
78
100
  }
79
101
  /** Parse a tsconfig.json (with `extends` chain) and build a paths matcher.
@@ -141,6 +163,11 @@ export function resolveTsAliasedImport(importerFile, importPath, repoRoot) {
141
163
  // Relative paths are not aliases — short-circuit.
142
164
  if (importPath.startsWith("."))
143
165
  return null;
166
+ // Absolute POSIX/Windows specifiers must not join against baseUrl/paths targets
167
+ // (would escape intended repo scope).
168
+ if (isAbsolute(importPath))
169
+ return null;
170
+ const repoRootAbs = resolve(repoRoot);
144
171
  const importerDir = dirname(resolve(importerFile));
145
172
  const configPath = findNearestTsconfig(importerDir, repoRoot);
146
173
  if (!configPath)
@@ -148,21 +175,26 @@ export function resolveTsAliasedImport(importerFile, importPath, repoRoot) {
148
175
  const config = loadTsconfig(configPath);
149
176
  if (!config)
150
177
  return null;
178
+ const acceptResolved = (hit) => {
179
+ if (!hit)
180
+ return null;
181
+ return isResolvedFileInsideRepo(repoRootAbs, hit) ? hit : null;
182
+ };
151
183
  // Try paths matcher first (alias mappings).
152
184
  if (config.pathsMatcher) {
153
185
  const candidates = config.pathsMatcher(importPath);
154
186
  for (const candidate of candidates) {
155
- const hit = probeFile(candidate);
156
- if (hit)
157
- return hit;
187
+ const accepted = acceptResolved(probeFile(candidate));
188
+ if (accepted)
189
+ return accepted;
158
190
  }
159
191
  }
160
192
  // Fallback: bare specifier resolved against baseUrl.
161
193
  if (config.baseUrl) {
162
194
  const candidate = join(config.baseUrl, importPath);
163
- const hit = probeFile(candidate);
164
- if (hit)
165
- return hit;
195
+ const accepted = acceptResolved(probeFile(candidate));
196
+ if (accepted)
197
+ return accepted;
166
198
  }
167
199
  return null;
168
200
  }
@@ -1 +1 @@
1
- {"version":3,"file":"tsconfig-paths.js","sourceRoot":"","sources":["../../src/utils/tsconfig-paths.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tsconfig-paths.js","sourceRoot":"","sources":["../../src/utils/tsconfig-paths.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "codesift-mcp",
3
- "version": "0.5.30",
3
+ "version": "0.7.0",
4
4
  "description": "MCP server for code intelligence — 146 tools for symbol search, call graph, semantic search, route tracing, community detection, LSP bridge, secret detection, conversation search, and Hono framework intelligence",
5
5
  "license": "BSL-1.1",
6
6
  "author": "Greg Laskowski",
package/rules/codesift.md CHANGED
@@ -159,11 +159,14 @@ Use this table to pick the right tool for each task:
159
159
  | starting a task, want tool recommendations | `plan_turn(query=...)` |
160
160
  | React codebase | `trace_component_tree("App")` + `analyze_hooks` |
161
161
  | React anti-patterns | `search_patterns("hook-in-condition")` |
162
- | React derived state | `search_patterns("derived-state")` |
163
- | React stale closure | `search_patterns("stale-closure-setstate")` |
164
- | React context perf trap | `search_patterns("context-provider-value-inline")` |
162
+ | React derived state | `search_patterns("derived-state")` (T5) / `derived-state-reducer` / `derived-state-custom-setter` (T6) |
163
+ | React stale closure | `search_patterns("stale-closure-setstate")` (T5) / `stale-closure-toggle` / `stale-closure-broken-functional` (T6) |
164
+ | React context perf trap | `search_patterns("context-provider-value-inline")` (T5) / `context-provider-value-via-variable` / `context-provider-value-inline-destructured` (T6) |
165
165
  | React tabnabbing security | `search_patterns("jsx-no-target-blank")` |
166
166
  | React button submit foot-gun | `search_patterns("button-no-type")` |
167
+ | React lazy without Suspense | `search_patterns("react-lazy-no-suspense-same-file")` (T6 single-file) |
168
+ | React RSC non-serializable | `search_patterns("rsc-non-serializable-prop")` / `rsc-non-serializable-prop-deep` (T6 — Map/Set/Class) |
169
+ | React ErrorBoundary incomplete | `search_patterns("error-boundary-incomplete")` (T6) |
167
170
  | React render-tree depth | `analyze_renders` → `entry.prop_chain_depth` (NOT prop-flow depth) |
168
171
  | React call graph (clean) | `trace_call_chain(filter_react_hooks=true)` |
169
172
  | new Next.js project (first look) | `framework_audit` |