carrick 0.3.114 → 0.3.115

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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "carrick",
3
- "version": "0.3.114",
3
+ "version": "0.3.115",
4
4
  "carrickCache": {
5
5
  "cache_version": 22,
6
6
  "intent_cache_version": 2
@@ -113,11 +113,11 @@
113
113
  "zod": "^3.23.0"
114
114
  },
115
115
  "optionalDependencies": {
116
- "@carrick-tools/cli-darwin-arm64": "0.3.114",
117
- "@carrick-tools/cli-darwin-x64": "0.3.114",
118
- "@carrick-tools/cli-linux-arm64": "0.3.114",
119
- "@carrick-tools/cli-linux-x64": "0.3.114",
120
- "@carrick-tools/cli-win32-x64": "0.3.114"
116
+ "@carrick-tools/cli-darwin-arm64": "0.3.115",
117
+ "@carrick-tools/cli-darwin-x64": "0.3.115",
118
+ "@carrick-tools/cli-linux-arm64": "0.3.115",
119
+ "@carrick-tools/cli-linux-x64": "0.3.115",
120
+ "@carrick-tools/cli-win32-x64": "0.3.115"
121
121
  },
122
122
  "devDependencies": {
123
123
  "@types/node": "^24.13.3"
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "carrick",
3
3
  "description": "Claude Code plugin for Carrick, which indexes TypeScript codebases across service and repository boundaries. After each edit it adds the file's routes, calls, and cross-service type mismatches to the session, and it registers Carrick's language server. It pairs with the Carrick MCP server, which lets agents search functions by intent rather than name.",
4
- "version": "0.3.114",
4
+ "version": "0.3.115",
5
5
  "author": {
6
6
  "name": "Carrick",
7
7
  "email": "hello@carrick.tools"
@@ -6,7 +6,7 @@ import { Node, ts, } from 'ts-morph';
6
6
  import * as path from 'node:path';
7
7
  import * as fs from 'node:fs';
8
8
  import { expandTypeStructural, } from './type-structural-expander.js';
9
- import { externalImportsOf } from './origin.js';
9
+ import { externalImportsOf, isExternalOrigin } from './origin.js';
10
10
  import { statusTableBody } from './capture/index.js';
11
11
  /**
12
12
  * #248: upper bound on `SymbolRequest.array_depth`. SDL list nesting is
@@ -85,7 +85,7 @@ function declaredName(declaration) {
85
85
  * it is: a model names a type where the consumer imports it from, usually a
86
86
  * barrel that only has `export *`.
87
87
  */
88
- function declarationSite(sourceFile, name, label) {
88
+ function declarationSite(sourceFile, name, label, origin) {
89
89
  if (declaresName(sourceFile, name))
90
90
  return { sourceFile, name };
91
91
  const declarations = exportedDeclarations(sourceFile, name, new Set());
@@ -99,7 +99,10 @@ function declarationSite(sourceFile, name, label) {
99
99
  // An installed package's declaration names types from the package's own
100
100
  // files, which the bundle does not carry, so its text would dangle. The
101
101
  // failure is what it was before the walk, and inference keeps the row.
102
- if (file.isInNodeModules() || file.isFromExternalLibrary()) {
102
+ // A package of the checkout that a package manager links into
103
+ // `node_modules` is the user's own source and is followed (carrick#2304):
104
+ // the compiler marks it external too, so its flag alone cannot decide.
105
+ if (isExternalOrigin(origin.program, file.compilerNode, origin.repoRoot, origin.imports)) {
103
106
  return { reason: `Symbol '${name}' is re-exported from an installed package in ${label}` };
104
107
  }
105
108
  const declared = declaredName(declaration);
@@ -259,7 +262,7 @@ export class TypeBundler {
259
262
  reason: `Failed to load source file: ${err instanceof Error ? err.message : String(err)}`,
260
263
  };
261
264
  }
262
- const site = declarationSite(sourceFile, symbol.symbol_name, symbol.source_file);
265
+ const site = declarationSite(sourceFile, symbol.symbol_name, symbol.source_file, this.expandOrigin());
263
266
  return 'reason' in site ? { valid: false, reason: site.reason } : { valid: true };
264
267
  }
265
268
  /** Where a requested symbol is declared, or undefined when it cannot be found. */
@@ -270,7 +273,7 @@ export class TypeBundler {
270
273
  const sourceFile = this.project.getSourceFile(absolutePath);
271
274
  if (!sourceFile)
272
275
  return undefined;
273
- const site = declarationSite(sourceFile, symbol.symbol_name, symbol.source_file);
276
+ const site = declarationSite(sourceFile, symbol.symbol_name, symbol.source_file, this.expandOrigin());
274
277
  return 'reason' in site ? undefined : site;
275
278
  }
276
279
  /**