carrick 0.3.70 → 0.3.73

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 (55) hide show
  1. package/README.md +10 -2
  2. package/bin/carrick.mjs +4 -1
  3. package/dist/contract.d.ts +3 -0
  4. package/dist/contract.js.map +1 -1
  5. package/dist/init/doctor.d.ts +3 -1
  6. package/dist/init/doctor.js +33 -6
  7. package/dist/init/doctor.js.map +1 -1
  8. package/dist/init/install-id.d.ts +32 -0
  9. package/dist/init/install-id.js +118 -0
  10. package/dist/init/install-id.js.map +1 -0
  11. package/dist/init/mcp.d.ts +59 -5
  12. package/dist/init/mcp.js +133 -27
  13. package/dist/init/mcp.js.map +1 -1
  14. package/dist/init/remove.d.ts +4 -0
  15. package/dist/init/remove.js +26 -5
  16. package/dist/init/remove.js.map +1 -1
  17. package/dist/init/run.d.ts +8 -0
  18. package/dist/init/run.js +20 -2
  19. package/dist/init/run.js.map +1 -1
  20. package/dist/native.d.ts +25 -5
  21. package/dist/native.js +41 -10
  22. package/dist/native.js.map +1 -1
  23. package/dist/render.js +7 -2
  24. package/dist/render.js.map +1 -1
  25. package/package.json +6 -6
  26. package/sidecar/dist/src/capture/anchors.d.ts +15 -0
  27. package/sidecar/dist/src/capture/anchors.js +70 -5
  28. package/sidecar/dist/src/capture/api.d.ts +43 -4
  29. package/sidecar/dist/src/capture/check-classify.d.ts +2 -0
  30. package/sidecar/dist/src/capture/check-classify.js +28 -0
  31. package/sidecar/dist/src/capture/check-deep.js +1 -1
  32. package/sidecar/dist/src/capture/check-probe.d.ts +1 -1
  33. package/sidecar/dist/src/capture/check-probe.js +16 -0
  34. package/sidecar/dist/src/capture/deep-walk.d.ts +33 -6
  35. package/sidecar/dist/src/capture/deep-walk.js +81 -28
  36. package/sidecar/dist/src/capture/index.js +16 -6
  37. package/sidecar/dist/src/capture/installed-package.d.ts +58 -0
  38. package/sidecar/dist/src/capture/installed-package.js +311 -0
  39. package/sidecar/dist/src/capture/lockfile.d.ts +8 -0
  40. package/sidecar/dist/src/capture/lockfile.js +1 -1
  41. package/sidecar/dist/src/capture/node-builder.d.ts +27 -0
  42. package/sidecar/dist/src/capture/node-builder.js +107 -1
  43. package/sidecar/dist/src/capture/paths-rewrite.d.ts +23 -6
  44. package/sidecar/dist/src/capture/paths-rewrite.js +43 -11
  45. package/sidecar/dist/src/capture/self-check.js +12 -3
  46. package/sidecar/dist/src/capture/unresolved.d.ts +28 -0
  47. package/sidecar/dist/src/capture/unresolved.js +107 -0
  48. package/sidecar/dist/src/type-inferrer.d.ts +227 -30
  49. package/sidecar/dist/src/type-inferrer.js +926 -144
  50. package/sidecar/dist/src/type-structural-expander.d.ts +53 -3
  51. package/sidecar/dist/src/type-structural-expander.js +108 -19
  52. package/sidecar/dist/src/type-text-canonicalizer.d.ts +14 -0
  53. package/sidecar/dist/src/type-text-canonicalizer.js +23 -2
  54. package/sidecar/dist/src/validators.d.ts +10 -0
  55. package/sidecar/dist/src/validators.js +1 -0
package/dist/native.d.ts CHANGED
@@ -25,16 +25,36 @@ export type ResolveOptions = {
25
25
  resolveManifest?: (specifier: string) => string;
26
26
  exists?: (target: string) => boolean;
27
27
  };
28
+ /** The one variable that points this package at a scanner binary of your own. */
29
+ export declare const BINARY_ENV = "CARRICK_BIN";
28
30
  /**
29
31
  * The scanner binary this machine should run.
30
32
  *
31
- * CARRICK_NATIVE_BINARY wins, so a developer can point the shipped CLI at a
32
- * `cargo build` and the smokes can pin one. Otherwise the platform package
33
- * that npm installed carries it. A missing platform package is a message, not
34
- * a crash: the caller decides whether that is fatal (running a scan) or merely
35
- * silent (a hook that must never fail an edit).
33
+ * CARRICK_BIN wins, so a developer can point the shipped CLI at a `cargo
34
+ * build` and the smokes can pin one. It is the same variable the hook, the
35
+ * language server and `--help` read, so every command a user types runs the
36
+ * same binary (carrick#1100: `index` and `status` used to read a second name
37
+ * and quietly ran the installed binary instead). Otherwise the platform
38
+ * package that npm installed carries it. A missing platform package is a
39
+ * message, not a crash: the caller decides whether that is fatal (running a
40
+ * scan) or merely silent (a hook that must never fail an edit).
41
+ *
42
+ * An override must name a file. A bare name would be looked up on PATH, and
43
+ * `carrick` on PATH is usually this shim, which would then run itself forever.
36
44
  */
37
45
  export declare function resolveNativeBinary(options?: ResolveOptions): NativeLookup;
46
+ /** Ask a binary which version it is, or null when it does not say. */
47
+ export declare function binaryVersion(binary: string): string | null;
48
+ /**
49
+ * The line a command run through an overridden binary starts with, or null
50
+ * when nothing was overridden.
51
+ *
52
+ * An override that is set and forgotten, or set and not honoured, reads as a
53
+ * defect in whichever build the reader thought was running (carrick#1100).
54
+ * Naming the file and the version it answers with makes the run say which
55
+ * binary it was before anyone reasons about what it did.
56
+ */
57
+ export declare function overrideLine(lookup: NativeLookup, version?: (binary: string) => string | null): string | null;
38
58
  /**
39
59
  * The sidecar directory to hand the binary, or null when this checkout has
40
60
  * none built. Null is not an error here: the binary's own discovery covers a
package/dist/native.js CHANGED
@@ -11,6 +11,7 @@
11
11
  // every platform, and it needs `ts-morph` and `zod` resolvable from where it
12
12
  // sits. So it ships in THIS package, beside `node_modules/`, and the binary is
13
13
  // told where it is with CARRICK_SIDECAR_DIR (src/main.rs reads it first).
14
+ import { spawnSync } from "node:child_process";
14
15
  import fs from "node:fs";
15
16
  import path from "node:path";
16
17
  import { createRequire } from "node:module";
@@ -48,19 +49,27 @@ function defaultExists(target) {
48
49
  return false;
49
50
  }
50
51
  }
52
+ /** The one variable that points this package at a scanner binary of your own. */
53
+ export const BINARY_ENV = "CARRICK_BIN";
51
54
  /**
52
55
  * The scanner binary this machine should run.
53
56
  *
54
- * CARRICK_NATIVE_BINARY wins, so a developer can point the shipped CLI at a
55
- * `cargo build` and the smokes can pin one. Otherwise the platform package
56
- * that npm installed carries it. A missing platform package is a message, not
57
- * a crash: the caller decides whether that is fatal (running a scan) or merely
58
- * silent (a hook that must never fail an edit).
57
+ * CARRICK_BIN wins, so a developer can point the shipped CLI at a `cargo
58
+ * build` and the smokes can pin one. It is the same variable the hook, the
59
+ * language server and `--help` read, so every command a user types runs the
60
+ * same binary (carrick#1100: `index` and `status` used to read a second name
61
+ * and quietly ran the installed binary instead). Otherwise the platform
62
+ * package that npm installed carries it. A missing platform package is a
63
+ * message, not a crash: the caller decides whether that is fatal (running a
64
+ * scan) or merely silent (a hook that must never fail an edit).
65
+ *
66
+ * An override must name a file. A bare name would be looked up on PATH, and
67
+ * `carrick` on PATH is usually this shim, which would then run itself forever.
59
68
  */
60
69
  export function resolveNativeBinary(options = {}) {
61
70
  const env = options.env ?? process.env;
62
71
  const exists = options.exists ?? defaultExists;
63
- const override = env["CARRICK_NATIVE_BINARY"];
72
+ const override = env[BINARY_ENV];
64
73
  if (override) {
65
74
  if (exists(override)) {
66
75
  return { binary: override, problem: null, source: "env" };
@@ -68,7 +77,7 @@ export function resolveNativeBinary(options = {}) {
68
77
  return {
69
78
  binary: null,
70
79
  source: "env",
71
- problem: `CARRICK_NATIVE_BINARY is set to ${override}, which is not a file on this machine.`,
80
+ problem: `${BINARY_ENV} is set to ${override}, which is not a file on this machine.`,
72
81
  };
73
82
  }
74
83
  const platform = options.platform ?? process.platform;
@@ -85,8 +94,8 @@ export function resolveNativeBinary(options = {}) {
85
94
  binary: null,
86
95
  source: "none",
87
96
  problem: supported
88
- ? `The carrick binary for ${platform}-${arch} is not installed. It ships as ${specifier}, an optional dependency of this package. Reinstall with 'npm install carrick', or set CARRICK_NATIVE_BINARY to a binary you built.`
89
- : `Carrick publishes no binary for ${platform}-${arch}. Supported: ${PLATFORMS.map((entry) => `${entry.platform}-${entry.arch}`).join(", ")}. Set CARRICK_NATIVE_BINARY to a binary you built to use it anyway.`,
97
+ ? `The carrick binary for ${platform}-${arch} is not installed. It ships as ${specifier}, an optional dependency of this package. Reinstall with 'npm install carrick', or set ${BINARY_ENV} to a binary you built.`
98
+ : `Carrick publishes no binary for ${platform}-${arch}. Supported: ${PLATFORMS.map((entry) => `${entry.platform}-${entry.arch}`).join(", ")}. Set ${BINARY_ENV} to a binary you built to use it anyway.`,
90
99
  };
91
100
  }
92
101
  const binary = path.join(path.dirname(manifest), "bin", binaryName(platform));
@@ -94,11 +103,33 @@ export function resolveNativeBinary(options = {}) {
94
103
  return {
95
104
  binary: null,
96
105
  source: "none",
97
- problem: `${specifier} is installed but holds no binary at ${binary}. Reinstall it, or set CARRICK_NATIVE_BINARY.`,
106
+ problem: `${specifier} is installed but holds no binary at ${binary}. Reinstall it, or set ${BINARY_ENV}.`,
98
107
  };
99
108
  }
100
109
  return { binary, problem: null, source: "platform_package" };
101
110
  }
111
+ /** Ask a binary which version it is, or null when it does not say. */
112
+ export function binaryVersion(binary) {
113
+ const answer = spawnSync(binary, ["--version"], { encoding: "utf8", timeout: 5000 });
114
+ if (answer.status !== 0 || typeof answer.stdout !== "string")
115
+ return null;
116
+ return answer.stdout.trim() || null;
117
+ }
118
+ /**
119
+ * The line a command run through an overridden binary starts with, or null
120
+ * when nothing was overridden.
121
+ *
122
+ * An override that is set and forgotten, or set and not honoured, reads as a
123
+ * defect in whichever build the reader thought was running (carrick#1100).
124
+ * Naming the file and the version it answers with makes the run say which
125
+ * binary it was before anyone reasons about what it did.
126
+ */
127
+ export function overrideLine(lookup, version = binaryVersion) {
128
+ if (lookup.source !== "env" || !lookup.binary)
129
+ return null;
130
+ const answered = version(lookup.binary);
131
+ return `carrick: running ${lookup.binary} (${answered ?? "version unknown"}), set by ${BINARY_ENV}`;
132
+ }
102
133
  /**
103
134
  * The sidecar directory to hand the binary, or null when this checkout has
104
135
  * none built. Null is not an error here: the binary's own discovery covers a
@@ -1 +1 @@
1
- {"version":3,"file":"native.js","sourceRoot":"","sources":["../src/native.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"native.js","sourceRoot":"","sources":["../src/native.ts"],"names":[],"mappings":"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"}
package/dist/render.js CHANGED
@@ -392,12 +392,17 @@ export function runningScanLine(scan) {
392
392
  : "";
393
393
  const where = scan.phase ? `: ${scan.phase}` : "";
394
394
  if (scan.status === "failed") {
395
- return `- scan ${scan.scan_id} failed${scan.error ? `: ${scan.error}` : ""}`;
395
+ // The error's first line is the reason; the lines after it are an excerpt
396
+ // of the scan's own log, which is for the log's reader, not a session
397
+ // start (carrick#1103).
398
+ const reason = scan.error?.split("\n").find((line) => line.trim())?.trim();
399
+ return `- scan ${scan.scan_id} failed${reason ? `: ${reason}` : ""}`;
396
400
  }
397
401
  if (scan.status === "finished") {
398
402
  return `- scan ${scan.scan_id} finished${scan.infer ? ", paid" : ""}. The index is written.`;
399
403
  }
400
- return `- scan ${scan.scan_id} is running${where}${counts}. Its output is in .carrick/scan-${scan.scan_id}.log`;
404
+ const slow = scan.notice ? ` (${scan.notice})` : "";
405
+ return `- scan ${scan.scan_id} is running${where}${counts}${slow}. Its output is in .carrick/scan-${scan.scan_id}.log`;
401
406
  }
402
407
  /**
403
408
  * One line per repo, for the files no service in it reads: a workflow, a
@@ -1 +1 @@
1
- {"version":3,"file":"render.js","sourceRoot":"","sources":["../src/render.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"render.js","sourceRoot":"","sources":["../src/render.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "carrick",
3
- "version": "0.3.70",
3
+ "version": "0.3.73",
4
4
  "description": "The API contract index for a TypeScript workspace: what the other services do with the routes and calls in the file you are editing, in your editor and in your agent's context",
5
5
  "keywords": [
6
6
  "typescript",
@@ -57,11 +57,11 @@
57
57
  "zod": "^3.23.0"
58
58
  },
59
59
  "optionalDependencies": {
60
- "@carrick-tools/cli-darwin-arm64": "0.3.70",
61
- "@carrick-tools/cli-darwin-x64": "0.3.70",
62
- "@carrick-tools/cli-linux-arm64": "0.3.70",
63
- "@carrick-tools/cli-linux-x64": "0.3.70",
64
- "@carrick-tools/cli-win32-x64": "0.3.70"
60
+ "@carrick-tools/cli-darwin-arm64": "0.3.73",
61
+ "@carrick-tools/cli-darwin-x64": "0.3.73",
62
+ "@carrick-tools/cli-linux-arm64": "0.3.73",
63
+ "@carrick-tools/cli-linux-x64": "0.3.73",
64
+ "@carrick-tools/cli-win32-x64": "0.3.73"
65
65
  },
66
66
  "devDependencies": {
67
67
  "@types/node": "^24.13.3",
@@ -6,6 +6,7 @@
6
6
  */
7
7
  import ts from 'typescript';
8
8
  import type { CaptureAnchorRequest, InferAnchorRequest } from './api.js';
9
+ import type { UnresolvedAtAnchor } from './deep-walk.js';
9
10
  export interface ResolvedAnchor {
10
11
  request: CaptureAnchorRequest;
11
12
  /** RHS of `export type <alias> = ...;` in the surface entry. */
@@ -34,6 +35,20 @@ export interface ResolvedAnchor {
34
35
  * backfillable; the reason rides `self_check_detail` instead.
35
36
  */
36
37
  abstainReason?: string;
38
+ /**
39
+ * carrick#1165: identifiers the alias text names (a literal anchor's text
40
+ * or a node-builder print) that nothing in the producer's program declares.
41
+ * Recorded on the capture record as `undeclared_names`.
42
+ */
43
+ undeclaredNames?: string[];
44
+ /**
45
+ * carrick#1164: member paths the SOURCE program could not resolve, and the
46
+ * unresolved imports the anchor's file reaches. Printed into the surface
47
+ * those members read `any`, like an author's `any`; the self-check uses this
48
+ * to label them `unresolved_import` instead of `declared`. Absent when the
49
+ * anchor's type holds no unresolved placeholder.
50
+ */
51
+ unresolved?: UnresolvedAtAnchor;
37
52
  }
38
53
  /** Repo-root-relative source file -> extensionless specifier from entryDir. */
39
54
  export declare function entryRelativeSpecifier(entryDir: string, repoRoot: string, sourceFile: string): string;
@@ -6,8 +6,9 @@
6
6
  */
7
7
  import ts from 'typescript';
8
8
  import * as path from 'node:path';
9
- import { printTypeForDestination } from './node-builder.js';
9
+ import { printTypeForDestination, undeclaredNamesIn } from './node-builder.js';
10
10
  import { typeIsOrContainsMachinery } from './machinery.js';
11
+ import { unresolvedAtAnchor } from './unresolved.js';
11
12
  /** Repo-root-relative source file -> extensionless specifier from entryDir. */
12
13
  export function entryRelativeSpecifier(entryDir, repoRoot, sourceFile) {
13
14
  const target = path
@@ -48,6 +49,14 @@ export function resolveAnchor(program, request, args) {
48
49
  const siblingSpec = bareIdentifier
49
50
  ? args.siblingSymbolSpecs?.get(text)
50
51
  : undefined;
52
+ // carrick#1165: literal text is printed elsewhere (the v1 walk) and can
53
+ // name a type by a bare identifier that nothing in the program declares
54
+ // (a generated model that was never generated). The stub then self-checks
55
+ // such a name as an error placeholder, which no walk flags. A name a
56
+ // sibling symbol anchor imports is resolved by that import.
57
+ const undeclaredNames = siblingSpec || !args.placeholder
58
+ ? []
59
+ : undeclaredNamesInText(text, program, args.placeholder);
51
60
  return {
52
61
  request,
53
62
  aliasText: siblingSpec ? `import('${siblingSpec}').${text}` : text,
@@ -57,6 +66,7 @@ export function resolveAnchor(program, request, args) {
57
66
  // them at this tier so the legacy dependence stays measurable and
58
67
  // ratchetable. Demotions are distinguished by failureReason.
59
68
  serialization: 'structural_fallback',
69
+ ...(undeclaredNames.length > 0 ? { undeclaredNames } : {}),
60
70
  };
61
71
  }
62
72
  const sourceAbs = path.join(args.repoRoot, request.source_file);
@@ -100,10 +110,14 @@ export function resolveAnchor(program, request, args) {
100
110
  `and no sibling type alias derives from it (e.g. \`typeof ${request.symbol_name}\`); ` +
101
111
  'demoted so the surface line stays valid');
102
112
  }
113
+ const arrayDepth = Math.max(0, request.array_depth ?? 0);
114
+ const declared = checker.getDeclaredTypeOfSymbol(resolvedExport);
115
+ const unresolved = unresolvedAtAnchor(program, sourceFile, declared, resolvedExport.declarations?.[0] ?? sourceFile, '<0>'.repeat(arrayDepth));
103
116
  return {
104
117
  request,
105
118
  aliasText: `import('${spec}').${request.symbol_name}${arraySuffix}`,
106
119
  serialization: 'emitted',
120
+ ...(unresolved ? { unresolved } : {}),
107
121
  };
108
122
  }
109
123
  if (request.kind === 'handler_return') {
@@ -126,10 +140,13 @@ export function resolveAnchor(program, request, args) {
126
140
  // Type parameters erase to their constraint/unknown under ReturnType<>.
127
141
  return demote(`handler '${request.symbol_name}' is generic`);
128
142
  }
143
+ const returned = callSignatures[0].getReturnType();
144
+ const unresolved = unresolvedAtAnchor(program, sourceFile, checker.getAwaitedType(returned) ?? returned, declaration ?? sourceFile);
129
145
  return {
130
146
  request,
131
147
  aliasText: `Awaited<ReturnType<typeof import('${spec}').${request.symbol_name}>>`,
132
148
  serialization: 'emitted',
149
+ ...(unresolved ? { unresolved } : {}),
133
150
  };
134
151
  }
135
152
  // kind === 'infer'
@@ -151,6 +168,10 @@ export function resolveAnchor(program, request, args) {
151
168
  if (!located) {
152
169
  return demote(locatorFailureReason(request));
153
170
  }
171
+ // carrick#1162: a serialised body is the JSON of its argument. The call's own
172
+ // `string` result is never the payload's contract, and publishing it reads
173
+ // incompatible against every object-typed counterparty.
174
+ located = serialisedArgument(located);
154
175
  // #439 part 1: a producer anchor whose locator landed inside a fluent
155
176
  // builder chain's config-descriptor argument (an all-literal metadata
156
177
  // object) must never capture that descriptor as the request type. Re-aim at
@@ -255,13 +276,24 @@ function finishInferAnchor(program, sourceFile, request, located, placeholder, r
255
276
  if (!printed.text) {
256
277
  return demote(printed.failure ?? 'node builder print failed');
257
278
  }
279
+ const unresolved = unresolvedAtAnchor(program, sourceFile, type, located);
258
280
  return {
259
281
  request,
260
282
  aliasText: printed.text,
261
283
  serialization: 'node_builder',
262
284
  ...(reaimNote ? { reaimNote } : {}),
285
+ ...(printed.undeclaredNames ? { undeclaredNames: printed.undeclaredNames } : {}),
286
+ ...(unresolved ? { unresolved } : {}),
263
287
  };
264
288
  }
289
+ /** `undeclaredNamesIn` over type text rather than a built node. */
290
+ function undeclaredNamesInText(text, program, destination) {
291
+ const parsed = ts.createSourceFile('literal-anchor.ts', `type __LiteralAnchor = ${text};`, ts.ScriptTarget.Latest, true);
292
+ const statement = parsed.statements[0];
293
+ if (!statement || !ts.isTypeAliasDeclaration(statement))
294
+ return [];
295
+ return undeclaredNamesIn(statement.type, program, destination);
296
+ }
265
297
  /**
266
298
  * True when the anchor carries a LINE and nothing else — no payload span, no
267
299
  * expression text, no parameter name. Such an anchor states where to look, not
@@ -689,6 +721,26 @@ function paramLocatorHints(request) {
689
721
  ? `line ${request.line_number}`
690
722
  : 'no line hint';
691
723
  }
724
+ /**
725
+ * The argument of a `JSON.stringify(value)` call (through parentheses), or the
726
+ * node unchanged. The mirror of the v1 inferrer's `unwrapJsonStringifyArg`:
727
+ * the global serialiser is identified by the standard `JSON` object, the one
728
+ * name every runtime shares.
729
+ */
730
+ function serialisedArgument(node) {
731
+ let current = node;
732
+ while (ts.isParenthesizedExpression(current))
733
+ current = current.expression;
734
+ if (ts.isCallExpression(current) &&
735
+ current.arguments.length > 0 &&
736
+ ts.isPropertyAccessExpression(current.expression) &&
737
+ ts.isIdentifier(current.expression.expression) &&
738
+ current.expression.expression.text === 'JSON' &&
739
+ current.expression.name.text === 'stringify') {
740
+ return current.arguments[0];
741
+ }
742
+ return node;
743
+ }
692
744
  function locatorFailureReason(request) {
693
745
  const hints = [];
694
746
  if (request.span_start !== undefined)
@@ -741,17 +793,30 @@ function tightestCoveringNode(sourceFile, start, end) {
741
793
  visit(sourceFile);
742
794
  return best;
743
795
  }
796
+ /**
797
+ * Locator text with insignificant whitespace removed: runs collapse to one
798
+ * space, and a member chain broken before its dot (`client\n .list(…)`) reads
799
+ * as `client.list(…)` (carrick#1162), the same rule the v1 inferrer applies.
800
+ */
801
+ function normalizeLocatorText(text) {
802
+ return text
803
+ .replace(/\s+/g, ' ')
804
+ .replace(/\s*(\?\.|\.)\s*/g, '$1')
805
+ .trim();
806
+ }
744
807
  function nodeByExpressionText(sourceFile, text, fromLine) {
745
- const wanted = text.replace(/\s+/g, ' ').trim();
808
+ const wanted = normalizeLocatorText(text);
746
809
  let best;
747
810
  const visit = (node) => {
748
811
  if (best)
749
812
  return;
750
813
  if (isPreferredTarget(node)) {
751
- const nodeText = node.getText(sourceFile).replace(/\s+/g, ' ').trim();
814
+ const nodeText = normalizeLocatorText(node.getText(sourceFile));
752
815
  if (nodeText === wanted) {
753
- const line = sourceFile.getLineAndCharacterOfPosition(node.getStart(sourceFile)).line + 1;
754
- if (fromLine === undefined || line >= fromLine) {
816
+ // On or after the line, or COVERING it: a chain broken before its dot
817
+ // starts a line above the line the analyzer reports for the call.
818
+ const endLine = sourceFile.getLineAndCharacterOfPosition(node.getEnd()).line + 1;
819
+ if (fromLine === undefined || endLine >= fromLine) {
755
820
  best = node;
756
821
  return;
757
822
  }
@@ -60,6 +60,13 @@ export interface LiteralAnchorRequest {
60
60
  /** Verbatim TS type text (a bare symbol name or an inline object type). */
61
61
  type_text: string;
62
62
  anchor_origin: AnchorOrigin;
63
+ /**
64
+ * Repo-root-relative file the text was printed from, when there is one.
65
+ * It joins the analysis program, so a name the text prints bare (an enum
66
+ * member, a recursive reference) is found declared (carrick#1165). The
67
+ * record's `source_file` stays `<inline>`: the answer is still the text.
68
+ */
69
+ source_file?: string;
63
70
  }
64
71
  /**
65
72
  * Addressable handler: `export type A = Awaited<ReturnType<typeof
@@ -123,9 +130,14 @@ export type SelfCheckOutcome = 'ok' | 'allowlisted_external' | 'decayed_internal
123
130
  * honest value is `not_recorded` — never a guess.
124
131
  *
125
132
  * - `declared`: the captured declaration states `any`/`unknown` at this
126
- * position. Whatever put it there (an author annotation, or an emitter that
127
- * printed an unresolved value as `any`), it is baked into the emitted text
128
- * and no install re-resolves it.
133
+ * position, and the producer's own program had a type there too: an author
134
+ * annotation, not a failed resolution.
135
+ * - `unresolved_import`: the position is `any` in the emitted text because the
136
+ * producer's program could not resolve the type there — an import of a
137
+ * dependency that is not installed, or of a generated module that was never
138
+ * generated, on the scanned checkout (carrick#1164). The printer writes that
139
+ * placeholder as `any`, so the text alone reads like `declared`; the capture
140
+ * tells them apart on the source program at anchor time.
129
141
  * - `budget_exhausted`: the subtree was too deep or wide to finish inside the
130
142
  * capture walk's budget, so it is reported unverified rather than clean.
131
143
  * - `no_payload_evidence`: a handler returned a call whose callee has no
@@ -137,10 +149,21 @@ export type SelfCheckOutcome = 'ok' | 'allowlisted_external' | 'decayed_internal
137
149
  * - `machinery_envelope`: the return resolved to transport (a
138
150
  * Response/Request-shaped envelope) and no payload was recoverable inside
139
151
  * it or from the handler's returned arguments.
152
+ * - `coerced_input`: a request schema's INPUT is `any`/`unknown` at this
153
+ * position while its parsed output is concrete, which is what a coercion
154
+ * declares (carrick#1101). The published type carries the output there, so
155
+ * this finding describes what a caller may send, not the printed member.
156
+ * - `no_success_payload`: a route's handler sends only error or redirect
157
+ * responses (by the status each send states), or no success send carries a
158
+ * body a JSON contract can describe, so the route publishes no success body
159
+ * rather than an error body or a redirect location (carrick#1161).
160
+ * - `no_request_body`: the located request read is a validated part the
161
+ * route's validator binds that is not a body (a path parameter, a query), so
162
+ * the route states no request body contract there (carrick#1166).
140
163
  * - `not_recorded`: the position carries a top type and this layer has no
141
164
  * cause for it.
142
165
  */
143
- export type TypeProvenanceReason = 'declared' | 'budget_exhausted' | 'no_payload_evidence' | 'machinery_envelope' | 'not_recorded';
166
+ export type TypeProvenanceReason = 'declared' | 'unresolved_import' | 'budget_exhausted' | 'no_payload_evidence' | 'machinery_envelope' | 'coerced_input' | 'no_success_payload' | 'no_request_body' | 'not_recorded';
144
167
  /**
145
168
  * One `any`/`unknown` finding inside a captured or inferred type, with its
146
169
  * position and its cause. Sorted by `path` wherever a list is emitted, so the
@@ -202,6 +225,22 @@ export interface CaptureAliasRecord {
202
225
  * Sorted by `path`; absent (not empty) when the walk found nothing.
203
226
  */
204
227
  any_provenance?: TypeProvenance[];
228
+ /**
229
+ * Internal module specifiers that fail to resolve anywhere in this alias's
230
+ * closure, as the emitted files write them (carrick#1165). The emitted
231
+ * tree is missing part of what the alias refers to, so a shape printed from
232
+ * it can name types nothing declares. Sorted; absent when there are none.
233
+ */
234
+ dangling_specifiers?: string[];
235
+ /**
236
+ * Identifiers this alias's printed text names that do not resolve where the
237
+ * surface declares it (carrick#1165): a literal anchor's text naming a type
238
+ * nothing declares, or a node-builder print reusing a source annotation
239
+ * whose own import did not resolve. Checked on the producer's program, so a global the
240
+ * program declares (a runtime or `@types` global) is never listed. Sorted;
241
+ * absent when there are none.
242
+ */
243
+ undeclared_names?: string[];
205
244
  }
206
245
  /** Aggregate fidelity metric, emitted per capture (one service). */
207
246
  export interface CaptureFidelity {
@@ -10,6 +10,8 @@
10
10
  * surface import error (probe lines 1-2)-> unverifiable
11
11
  * IsAny gate fired (TS2344) -> gate_caught_baked_any
12
12
  * IsUnknown/IsNever gate fired (TS2344) -> unverifiable
13
+ * IsVoid gate fired (TS2344) -> unverifiable (no body read)
14
+ * IsFormBody gate fired (TS2344) -> unverifiable (form-encoded body)
13
15
  * assignment-class error -> incompatible
14
16
  * no diagnostics -> compatible [lowest precedence]
15
17
  *
@@ -10,6 +10,8 @@
10
10
  * surface import error (probe lines 1-2)-> unverifiable
11
11
  * IsAny gate fired (TS2344) -> gate_caught_baked_any
12
12
  * IsUnknown/IsNever gate fired (TS2344) -> unverifiable
13
+ * IsVoid gate fired (TS2344) -> unverifiable (no body read)
14
+ * IsFormBody gate fired (TS2344) -> unverifiable (form-encoded body)
13
15
  * assignment-class error -> incompatible
14
16
  * no diagnostics -> compatible [lowest precedence]
15
17
  *
@@ -127,6 +129,32 @@ export function classifyPair(input) {
127
129
  ...notAFact(`the ${side} type is '${kind}'`),
128
130
  };
129
131
  }
132
+ // 4b. A side that states no contract (carrick#1162), below the decay gates so
133
+ // an `unknown` side is reported as `unknown`: a `void`/`undefined`
134
+ // response a call site reads no body from, and a form-encoded body whose
135
+ // fields are runtime appends.
136
+ const shapeGate = gateDiags
137
+ .map((d) => plan.gateLines.get(d.line))
138
+ .find((name) => name.endsWith(':void') || name.endsWith(':form'));
139
+ if (shapeGate) {
140
+ const { side, kind } = sideForGate(shapeGate, plan);
141
+ if (kind === 'void') {
142
+ return {
143
+ ...base,
144
+ bucket: 'unverifiable',
145
+ gate: `${side}:void`,
146
+ diagnostic: `the ${side} type is 'void' (it reads no body), so there is no contract to verify.`,
147
+ ...notAFact(`the ${side} type is 'void'`),
148
+ };
149
+ }
150
+ return {
151
+ ...base,
152
+ bucket: 'unverifiable',
153
+ gate: `${side}:form`,
154
+ diagnostic: `the ${side} sends a form-encoded body, whose fields are appended at runtime and cannot be compared with a declared shape.`,
155
+ ...notAFact(`the ${side} sends a form-encoded body`),
156
+ };
157
+ }
130
158
  // 5. Assignment-class error on the value assignment line -> incompatible.
131
159
  const assignDiag = probeDiags.find((d) => d.line === plan.assignmentLine && ASSIGNMENT_CODES.has(d.code));
132
160
  if (assignDiag) {
@@ -84,7 +84,7 @@ function walkImportedAlias(file, localName, program, checker) {
84
84
  const type = checker.getDeclaredTypeOfSymbol(target);
85
85
  if (!type)
86
86
  return undefined;
87
- return findDisqualifyingTopTypes(type, program, checker, element.name).map(provenanceOf);
87
+ return findDisqualifyingTopTypes(type, program, checker, element.name).map((finding) => provenanceOf(finding));
88
88
  }
89
89
  }
90
90
  return undefined;
@@ -43,7 +43,7 @@ export declare function fnv1a(input: string): string;
43
43
  * path, so it is byte-stable across runs. */
44
44
  export declare function pairId(spec: CheckPairSpec): string;
45
45
  /** Names each gate line so a TS2344 can be attributed to a specific side+kind. */
46
- export type GateName = 'sent:any' | 'sent:unknown' | 'sent:never' | 'expected:any' | 'expected:unknown' | 'expected:never';
46
+ export type GateName = 'sent:any' | 'sent:unknown' | 'sent:never' | 'sent:void' | 'sent:form' | 'expected:any' | 'expected:unknown' | 'expected:never' | 'expected:void';
47
47
  export interface ProbePlan {
48
48
  pairId: string;
49
49
  spec: CheckPairSpec;