intentpatch 0.9.2 → 0.10.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 (42) hide show
  1. package/README.ko.md +28 -22
  2. package/README.md +24 -20
  3. package/dist/application/ports/analysis-rule.d.ts +2 -0
  4. package/dist/application/ports/analysis-rule.d.ts.map +1 -1
  5. package/dist/application/ports/code-structure-extractor.d.ts +2 -0
  6. package/dist/application/ports/code-structure-extractor.d.ts.map +1 -1
  7. package/dist/application/rules/duplicate-implementation-rule.d.ts +1 -1
  8. package/dist/application/rules/duplicate-implementation-rule.d.ts.map +1 -1
  9. package/dist/application/rules/duplicate-implementation-rule.js +6 -3
  10. package/dist/application/rules/duplicate-implementation-rule.js.map +1 -1
  11. package/dist/application/rules/missing-test-change-rule.js +2 -2
  12. package/dist/application/rules/missing-test-change-rule.js.map +1 -1
  13. package/dist/application/rules/public-api-compatibility-rule.d.ts +1 -1
  14. package/dist/application/rules/public-api-compatibility-rule.d.ts.map +1 -1
  15. package/dist/application/rules/public-api-compatibility-rule.js +8 -4
  16. package/dist/application/rules/public-api-compatibility-rule.js.map +1 -1
  17. package/dist/application/services/analyze-code-structure.d.ts.map +1 -1
  18. package/dist/application/services/analyze-code-structure.js +18 -4
  19. package/dist/application/services/analyze-code-structure.js.map +1 -1
  20. package/dist/application/services/analyze-test-changes.d.ts +1 -1
  21. package/dist/application/services/analyze-test-changes.d.ts.map +1 -1
  22. package/dist/application/services/analyze-test-changes.js +28 -2
  23. package/dist/application/services/analyze-test-changes.js.map +1 -1
  24. package/dist/application/services/trace-intent-to-files.d.ts +10 -0
  25. package/dist/application/services/trace-intent-to-files.d.ts.map +1 -0
  26. package/dist/application/services/trace-intent-to-files.js +20 -0
  27. package/dist/application/services/trace-intent-to-files.js.map +1 -0
  28. package/dist/application/use-cases/analyze-changes.js +6 -6
  29. package/dist/application/use-cases/analyze-changes.js.map +1 -1
  30. package/dist/domain/code-structure.d.ts +2 -0
  31. package/dist/domain/code-structure.d.ts.map +1 -1
  32. package/dist/domain/code-structure.js +2 -0
  33. package/dist/domain/code-structure.js.map +1 -1
  34. package/dist/infrastructure/typescript/typescript-code-structure-extractor.d.ts.map +1 -1
  35. package/dist/infrastructure/typescript/typescript-code-structure-extractor.js +79 -4
  36. package/dist/infrastructure/typescript/typescript-code-structure-extractor.js.map +1 -1
  37. package/dist/infrastructure/typescript/typescript-symbol-extractor.js +19 -7
  38. package/dist/infrastructure/typescript/typescript-symbol-extractor.js.map +1 -1
  39. package/dist/presentation/html/html-report.d.ts.map +1 -1
  40. package/dist/presentation/html/html-report.js +59 -2
  41. package/dist/presentation/html/html-report.js.map +1 -1
  42. package/package.json +1 -1
@@ -3,7 +3,7 @@ import { createTestChangeAnalysis } from "../../domain/test-change.js";
3
3
  import { matchesPathPattern } from "./path-pattern.js";
4
4
  const sourceExtension = /\.(?:[cm]?[jt]sx?)$/u;
5
5
  const testSuffix = /\.(?:(?:unit|integration|e2e)\.)?(?:test|spec)$/u;
6
- /** 변경 파일을 테스트 정책으로 분류하고 파일명 기반 관련 테스트를 연결한다. */
6
+ /** 변경 파일을 테스트 정책으로 분류하고 명시적 매핑·정적 import·파일명 근거로 연결한다. */
7
7
  export class AnalyzeTestChanges {
8
8
  async analyze(context) {
9
9
  const policy = context.contract?.tests;
@@ -16,6 +16,14 @@ export class AnalyzeTestChanges {
16
16
  const sourceFiles = context.changes.files.filter((file) => !matchesAny(file.path, policy.include) &&
17
17
  matchesAny(file.path, policy.requireFor) &&
18
18
  !matchesAny(file.path, policy.exclude));
19
+ const imports = context.impact?.dependencies ?? [];
20
+ const importedBy = new Map();
21
+ for (const dependency of imports) {
22
+ const targets = importedBy.get(dependency.importer) ?? new Set();
23
+ targets.add(dependency.imported);
24
+ importedBy.set(dependency.importer, targets);
25
+ }
26
+ const importedPathsByTest = new Map(testFiles.map((test) => [test.path, reachableImports(test.path, importedBy)]));
19
27
  return createTestChangeAnalysis({
20
28
  testFiles,
21
29
  sourceCoverage: sourceFiles.map((source) => ({
@@ -24,13 +32,31 @@ export class AnalyzeTestChanges {
24
32
  matchingTests: testFiles
25
33
  .filter((test) => (Object.hasOwn(policy.related ?? {}, source.path)
26
34
  ? (policy.related?.[source.path] ?? []).some((path) => matchesPathPattern(test.path, path))
27
- : testIdentity(test.path) === sourceIdentity(source.path)) &&
35
+ : testIdentity(test.path) === sourceIdentity(source.path) ||
36
+ (importedPathsByTest.get(test.path)?.has(source.path) ?? false)) &&
28
37
  (source.kind === "deleted" || test.changeKind !== "deleted"))
29
38
  .map((test) => test.path),
30
39
  })),
31
40
  });
32
41
  }
33
42
  }
43
+ function reachableImports(testPath, importedBy) {
44
+ const seen = new Set([testPath]);
45
+ const queue = [testPath];
46
+ for (let index = 0; index < queue.length; index += 1) {
47
+ const current = queue[index];
48
+ if (current === undefined)
49
+ continue;
50
+ for (const imported of importedBy.get(current) ?? []) {
51
+ if (!seen.has(imported)) {
52
+ seen.add(imported);
53
+ queue.push(imported);
54
+ }
55
+ }
56
+ }
57
+ seen.delete(testPath);
58
+ return seen;
59
+ }
34
60
  function matchesAny(path, patterns) {
35
61
  return patterns.some((pattern) => matchesPathPattern(path, pattern));
36
62
  }
@@ -1 +1 @@
1
- {"version":3,"file":"analyze-test-changes.js","sourceRoot":"","sources":["../../../src/application/services/analyze-test-changes.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"analyze-test-changes.js","sourceRoot":"","sources":["../../../src/application/services/analyze-test-changes.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import type { FileChange } from "../../domain/change.js";
2
+ import type { ChangeContract } from "../../domain/change-contract.js";
3
+ export interface IntentFileTrace {
4
+ readonly path: string;
5
+ readonly relation: "expected" | "allowed" | "outside" | "unclassified";
6
+ readonly patterns: readonly string[];
7
+ }
8
+ /** 명시된 계약 경로와 실제 변경 파일의 관계만 기록한다. 자연어 의도는 추정하지 않는다. */
9
+ export declare function traceIntentToFiles(contract: ChangeContract, files: readonly FileChange[]): readonly IntentFileTrace[];
10
+ //# sourceMappingURL=trace-intent-to-files.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trace-intent-to-files.d.ts","sourceRoot":"","sources":["../../../src/application/services/trace-intent-to-files.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AAGtE,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,EAAE,UAAU,GAAG,SAAS,GAAG,SAAS,GAAG,cAAc,CAAC;IACvE,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;CACtC;AAED,uDAAuD;AACvD,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,cAAc,EACxB,KAAK,EAAE,SAAS,UAAU,EAAE,GAC3B,SAAS,eAAe,EAAE,CAoB5B"}
@@ -0,0 +1,20 @@
1
+ import { matchesPathPattern } from "./path-pattern.js";
2
+ /** 명시된 계약 경로와 실제 변경 파일의 관계만 기록한다. 자연어 의도는 추정하지 않는다. */
3
+ export function traceIntentToFiles(contract, files) {
4
+ return files.map((file) => {
5
+ const expected = contract.scope.include.filter((pattern) => matchesPathPattern(file.path, pattern));
6
+ if (expected.length > 0) {
7
+ return { path: file.path, relation: "expected", patterns: expected };
8
+ }
9
+ const allowed = contract.scope.allow.filter((pattern) => matchesPathPattern(file.path, pattern));
10
+ if (allowed.length > 0) {
11
+ return { path: file.path, relation: "allowed", patterns: allowed };
12
+ }
13
+ return {
14
+ path: file.path,
15
+ relation: contract.scope.include.length > 0 ? "outside" : "unclassified",
16
+ patterns: [],
17
+ };
18
+ });
19
+ }
20
+ //# sourceMappingURL=trace-intent-to-files.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trace-intent-to-files.js","sourceRoot":"","sources":["../../../src/application/services/trace-intent-to-files.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAQvD,uDAAuD;AACvD,MAAM,UAAU,kBAAkB,CAChC,QAAwB,EACxB,KAA4B;IAE5B,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QACxB,MAAM,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CACzD,kBAAkB,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CACvC,CAAC;QACF,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxB,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;QACvE,CAAC;QACD,MAAM,OAAO,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CACtD,kBAAkB,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CACvC,CAAC;QACF,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvB,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC;QACrE,CAAC;QACD,OAAO;YACL,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,QAAQ,EAAE,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,cAAc;YACxE,QAAQ,EAAE,EAAE;SACb,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -57,16 +57,16 @@ export class AnalyzeChanges {
57
57
  changes,
58
58
  ...(input.contract === undefined ? {} : { contract: input.contract }),
59
59
  };
60
- const [testChanges, symbolChanges] = await Promise.all([
61
- this.testChangeAnalyzer.analyze(initialContext),
60
+ const [impact, symbolChanges] = await Promise.all([
61
+ this.impactAnalyzer.analyze(initialContext),
62
62
  this.symbolChangeAnalyzer.analyze(initialContext),
63
63
  ]);
64
- const factContext = { ...initialContext, testChanges, symbolChanges };
65
- const [codeStructure, impact] = await Promise.all([
64
+ const factContext = { ...initialContext, impact, symbolChanges };
65
+ const [codeStructure, testChanges] = await Promise.all([
66
66
  this.codeStructureAnalyzer.analyze(factContext),
67
- this.impactAnalyzer.analyze(factContext),
67
+ this.testChangeAnalyzer.analyze(factContext),
68
68
  ]);
69
- const context = { ...factContext, codeStructure };
69
+ const context = { ...factContext, codeStructure, testChanges };
70
70
  const findings = await this.ruleEngine.run(context);
71
71
  return {
72
72
  target,
@@ -1 +1 @@
1
- {"version":3,"file":"analyze-changes.js","sourceRoot":"","sources":["../../../src/application/use-cases/analyze-changes.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,2BAA2B,EAAE,MAAM,gCAAgC,CAAC;AAC7E,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAE9D,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AACtE,OAAO,EAAE,wBAAwB,EAAE,MAAM,6BAA6B,CAAC;AAMvE,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAQxD,MAAM,yBAAyB,GAAyB;IACtD,OAAO,EAAE,KAAK,IAAI,EAAE,CAAC,qBAAqB,CAAC,EAAE,CAAC;CAC/C,CAAC;AAEF,MAAM,mBAAmB,GAAyB;IAChD,OAAO,EAAE,KAAK,IAAI,EAAE,CAClB,oBAAoB,CAAC;QACnB,WAAW,EAAE,CAAC;QACd,cAAc,EAAE,EAAE;QAClB,YAAY,EAAE,EAAE;QAChB,aAAa,EAAE,EAAE;KAClB,CAAC;CACL,CAAC;AAEF,MAAM,uBAAuB,GAAuB;IAClD,OAAO,EAAE,KAAK,IAAI,EAAE,CAAC,wBAAwB,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,cAAc,EAAE,EAAE,EAAE,CAAC;CACrF,CAAC;AAEF,MAAM,0BAA0B,GAA0B;IACxD,OAAO,EAAE,KAAK,IAAI,EAAE,CAClB,2BAA2B,CAAC;QAC1B,WAAW,EAAE,CAAC;QACd,mBAAmB,EAAE,EAAE;QACvB,gCAAgC,EAAE,EAAE;KACrC,CAAC;CACL,CAAC;AAEF;;;GAGG;AACH,MAAM,OAAO,cAAc;IAEN;IACA;IACA;IACA;IACA;IACA;IANnB,YACmB,YAA0B,EAC1B,aAAyB,IAAI,UAAU,CAAC,EAAE,CAAC,EAC3C,uBAA6C,yBAAyB,EACtE,iBAAuC,mBAAmB,EAC1D,qBAAyC,uBAAuB,EAChE,wBAA+C,0BAA0B;QALzE,iBAAY,GAAZ,YAAY,CAAc;QAC1B,eAAU,GAAV,UAAU,CAAiC;QAC3C,yBAAoB,GAApB,oBAAoB,CAAkD;QACtE,mBAAc,GAAd,cAAc,CAA4C;QAC1D,uBAAkB,GAAlB,kBAAkB,CAA8C;QAChE,0BAAqB,GAArB,qBAAqB,CAAoD;IACzF,CAAC;IAEG,KAAK,CAAC,OAAO,CAAC,QAA6B,EAAE;QAClD,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,MAAM,CAAC;QAChD,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,SAAS,CAAC;QACnD,gBAAgB,CAAC,OAAO,CAAC,CAAC;QAC1B,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YAC1B,gBAAgB,CAAC,OAAO,CAAC,CAAC;QAC5B,CAAC;QACD,MAAM,MAAM,GAAG,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;QAE1E,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACxD,MAAM,cAAc,GAAG;YACrB,MAAM;YACN,OAAO;YACP,GAAG,CAAC,KAAK,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC;SACtE,CAAC;QACF,MAAM,CAAC,WAAW,EAAE,aAAa,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YACrD,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,cAAc,CAAC;YAC/C,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,cAAc,CAAC;SAClD,CAAC,CAAC;QACH,MAAM,WAAW,GAAG,EAAE,GAAG,cAAc,EAAE,WAAW,EAAE,aAAa,EAAE,CAAC;QACtE,MAAM,CAAC,aAAa,EAAE,MAAM,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YAChD,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,WAAW,CAAC;YAC/C,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,WAAW,CAAC;SACzC,CAAC,CAAC;QACH,MAAM,OAAO,GAAG,EAAE,GAAG,WAAW,EAAE,aAAa,EAAE,CAAC;QAClD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAEpD,OAAO;YACL,MAAM;YACN,GAAG,CAAC,KAAK,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC;YACrE,OAAO;YACP,QAAQ;YACR,aAAa;YACb,aAAa;YACb,MAAM;YACN,WAAW;SACZ,CAAC;IACJ,CAAC;CACF;AAED,SAAS,gBAAgB,CAAC,GAAW;IACnC,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACxB,MAAM,IAAI,KAAK,CAAC,gDAAgD,GAAG,EAAE,CAAC,CAAC;IACzE,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"analyze-changes.js","sourceRoot":"","sources":["../../../src/application/use-cases/analyze-changes.ts"],"names":[],"mappings":"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"}
@@ -6,6 +6,8 @@ export interface CodeSymbolLocation {
6
6
  export interface DuplicateImplementationCandidate {
7
7
  readonly added: CodeSymbolLocation;
8
8
  readonly existing: CodeSymbolLocation;
9
+ readonly addedKind?: "method";
10
+ readonly matchKind?: "renamed-locals";
9
11
  }
10
12
  export interface SingleImplementationAbstraction {
11
13
  readonly abstraction: CodeSymbolLocation;
@@ -1 +1 @@
1
- {"version":3,"file":"code-structure.d.ts","sourceRoot":"","sources":["../../src/domain/code-structure.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,gCAAgC;IAC/C,QAAQ,CAAC,KAAK,EAAE,kBAAkB,CAAC;IACnC,QAAQ,CAAC,QAAQ,EAAE,kBAAkB,CAAC;CACvC;AAED,MAAM,WAAW,+BAA+B;IAC9C,QAAQ,CAAC,WAAW,EAAE,kBAAkB,CAAC;IACzC,QAAQ,CAAC,cAAc,EAAE,kBAAkB,CAAC;CAC7C;AAED,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC;IACrC,QAAQ,CAAC,gCAAgC,EAAE,MAAM,CAAC;CACnD;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,mBAAmB,EAAE,SAAS,gCAAgC,EAAE,CAAC;IAC1E,QAAQ,CAAC,gCAAgC,EAAE,SAAS,+BAA+B,EAAE,CAAC;IACtF,QAAQ,CAAC,MAAM,EAAE,SAAS,0BAA0B,EAAE,CAAC;IACvD,QAAQ,CAAC,OAAO,EAAE,4BAA4B,CAAC;CAChD;AAED,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,mBAAmB,EAAE,SAAS,gCAAgC,EAAE,CAAC;IAC1E,QAAQ,CAAC,gCAAgC,EAAE,SAAS,+BAA+B,EAAE,CAAC;IACtF,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,0BAA0B,EAAE,CAAC;CACzD;AAED,kDAAkD;AAClD,wBAAgB,2BAA2B,CACzC,KAAK,EAAE,0BAA0B,GAChC,qBAAqB,CAsCvB"}
1
+ {"version":3,"file":"code-structure.d.ts","sourceRoot":"","sources":["../../src/domain/code-structure.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,gCAAgC;IAC/C,QAAQ,CAAC,KAAK,EAAE,kBAAkB,CAAC;IACnC,QAAQ,CAAC,QAAQ,EAAE,kBAAkB,CAAC;IACtC,QAAQ,CAAC,SAAS,CAAC,EAAE,QAAQ,CAAC;IAC9B,QAAQ,CAAC,SAAS,CAAC,EAAE,gBAAgB,CAAC;CACvC;AAED,MAAM,WAAW,+BAA+B;IAC9C,QAAQ,CAAC,WAAW,EAAE,kBAAkB,CAAC;IACzC,QAAQ,CAAC,cAAc,EAAE,kBAAkB,CAAC;CAC7C;AAED,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC;IACrC,QAAQ,CAAC,gCAAgC,EAAE,MAAM,CAAC;CACnD;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,mBAAmB,EAAE,SAAS,gCAAgC,EAAE,CAAC;IAC1E,QAAQ,CAAC,gCAAgC,EAAE,SAAS,+BAA+B,EAAE,CAAC;IACtF,QAAQ,CAAC,MAAM,EAAE,SAAS,0BAA0B,EAAE,CAAC;IACvD,QAAQ,CAAC,OAAO,EAAE,4BAA4B,CAAC;CAChD;AAED,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,mBAAmB,EAAE,SAAS,gCAAgC,EAAE,CAAC;IAC1E,QAAQ,CAAC,gCAAgC,EAAE,SAAS,+BAA+B,EAAE,CAAC;IACtF,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,0BAA0B,EAAE,CAAC;CACzD;AAED,kDAAkD;AAClD,wBAAgB,2BAA2B,CACzC,KAAK,EAAE,0BAA0B,GAChC,qBAAqB,CAwCvB"}
@@ -9,6 +9,8 @@ export function createCodeStructureAnalysis(input) {
9
9
  .map((candidate) => Object.freeze({
10
10
  added: freezeLocation(candidate.added),
11
11
  existing: freezeLocation(candidate.existing),
12
+ ...(candidate.addedKind === undefined ? {} : { addedKind: candidate.addedKind }),
13
+ ...(candidate.matchKind === undefined ? {} : { matchKind: candidate.matchKind }),
12
14
  }))
13
15
  .sort(compareDuplicateCandidates);
14
16
  const singleImplementationAbstractions = input.singleImplementationAbstractions
@@ -1 +1 @@
1
- {"version":3,"file":"code-structure.js","sourceRoot":"","sources":["../../src/domain/code-structure.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"code-structure.js","sourceRoot":"","sources":["../../src/domain/code-structure.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"typescript-code-structure-extractor.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/typescript/typescript-code-structure-extractor.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAEV,6BAA6B,EAC7B,sBAAsB,EAGvB,MAAM,qDAAqD,CAAC;AAG7D,sDAAsD;AACtD,qBAAa,gCAAiC,YAAW,sBAAsB;IACtE,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAI/B,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,6BAA6B;CAiD5E"}
1
+ {"version":3,"file":"typescript-code-structure-extractor.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/typescript/typescript-code-structure-extractor.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAEV,6BAA6B,EAC7B,sBAAsB,EAGvB,MAAM,qDAAqD,CAAC;AAG7D,sDAAsD;AACtD,qBAAa,gCAAiC,YAAW,sBAAsB;IACtE,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAI/B,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,6BAA6B;CAmE5E"}
@@ -4,7 +4,7 @@ import { parseTypeScriptSource } from "./parse-typescript-source.js";
4
4
  /** TypeScript AST에서 구현 중복과 단일 구현 추론에 필요한 사실만 추출한다. */
5
5
  export class TypeScriptCodeStructureExtractor {
6
6
  supports(path) {
7
- return path.endsWith(".ts") || path.endsWith(".tsx");
7
+ return /\.(?:[cm]?[jt]s|[jt]sx)$/u.test(path);
8
8
  }
9
9
  extract(path, source) {
10
10
  const parseResult = parseTypeScriptSource(path, source);
@@ -20,7 +20,7 @@ export class TypeScriptCodeStructureExtractor {
20
20
  if (ts.isFunctionDeclaration(statement) &&
21
21
  statement.name !== undefined &&
22
22
  statement.body !== undefined) {
23
- const implementation = fingerprintImplementation(statement.body, sourceFile);
23
+ const implementation = fingerprintImplementation(statement.body, sourceFile, statement.parameters);
24
24
  functions.push({ name: statement.name.text, line, ...implementation });
25
25
  continue;
26
26
  }
@@ -36,6 +36,20 @@ export class TypeScriptCodeStructureExtractor {
36
36
  line,
37
37
  implementedTypes: implementedTypeNames(statement),
38
38
  });
39
+ for (const member of statement.members) {
40
+ if (!ts.isMethodDeclaration(member) || member.body === undefined)
41
+ continue;
42
+ const methodName = staticMethodName(member.name);
43
+ if (methodName === undefined)
44
+ continue;
45
+ const isStatic = (ts.getModifiers(member) ?? []).some((modifier) => modifier.kind === ts.SyntaxKind.StaticKeyword);
46
+ functions.push({
47
+ name: `${statement.name.text}${isStatic ? ".static" : ""}.${methodName}`,
48
+ line: sourceFile.getLineAndCharacterOfPosition(member.getStart(sourceFile)).line + 1,
49
+ symbolKind: "method",
50
+ ...fingerprintImplementation(member.body, sourceFile, member.parameters),
51
+ });
52
+ }
39
53
  }
40
54
  }
41
55
  return {
@@ -48,17 +62,78 @@ export class TypeScriptCodeStructureExtractor {
48
62
  };
49
63
  }
50
64
  }
51
- function fingerprintImplementation(body, sourceFile) {
65
+ function fingerprintImplementation(body, sourceFile, parameters) {
66
+ const substitutions = localIdentifierSubstitutions(body, parameters, sourceFile);
52
67
  const scanner = ts.createScanner(sourceFile.languageVersion, true, sourceFile.languageVariant, body.getText(sourceFile));
53
68
  const tokens = [];
69
+ const structuralTokens = [];
54
70
  for (let token = scanner.scan(); token !== ts.SyntaxKind.EndOfFileToken; token = scanner.scan()) {
55
- tokens.push(`${token}:${scanner.getTokenText()}`);
71
+ const value = scanner.getTokenText();
72
+ tokens.push(`${token}:${value}`);
73
+ structuralTokens.push(`${token}:${substitutions?.get(scanner.getTokenPos()) ?? value}`);
56
74
  }
57
75
  return {
58
76
  implementationFingerprint: createHash("sha256").update(tokens.join("\0")).digest("hex"),
77
+ ...(substitutions === undefined
78
+ ? {}
79
+ : {
80
+ structuralFingerprint: createHash("sha256")
81
+ .update(structuralTokens.join("\0"))
82
+ .digest("hex"),
83
+ }),
59
84
  tokenCount: tokens.length,
60
85
  };
61
86
  }
87
+ /** 매개변수·지역 변수의 참조만 치환한다. 중첩 스코프와 구조 분해는 추정하지 않는다. */
88
+ function localIdentifierSubstitutions(body, parameters, sourceFile) {
89
+ const names = [];
90
+ for (const parameter of parameters) {
91
+ if (!ts.isIdentifier(parameter.name))
92
+ return undefined;
93
+ names.push(parameter.name.text);
94
+ }
95
+ let supported = true;
96
+ const collect = (node) => {
97
+ if (node !== body && ts.isFunctionLike(node)) {
98
+ supported = false;
99
+ return;
100
+ }
101
+ if (ts.isVariableDeclaration(node)) {
102
+ if (!ts.isIdentifier(node.name))
103
+ supported = false;
104
+ else
105
+ names.push(node.name.text);
106
+ }
107
+ ts.forEachChild(node, collect);
108
+ };
109
+ collect(body);
110
+ if (!supported || new Set(names).size !== names.length)
111
+ return undefined;
112
+ // NUL 접두사는 실제 식별자와 충돌하지 않아 외부 호출명을 지역 변수로 오인하지 않는다.
113
+ const canonical = new Map(names.map((name, index) => [name, `\0local${index}`]));
114
+ const substitutions = new Map();
115
+ const visit = (node) => {
116
+ if (ts.isIdentifier(node) && canonical.has(node.text) && !isPropertyName(node)) {
117
+ substitutions.set(node.getStart(sourceFile) - body.getStart(sourceFile), canonical.get(node.text) ?? "");
118
+ }
119
+ ts.forEachChild(node, visit);
120
+ };
121
+ visit(body);
122
+ return substitutions;
123
+ }
124
+ function isPropertyName(node) {
125
+ const parent = node.parent;
126
+ return ((ts.isPropertyAccessExpression(parent) && parent.name === node) ||
127
+ (ts.isPropertyAssignment(parent) && parent.name === node) ||
128
+ (ts.isShorthandPropertyAssignment(parent) && parent.name === node) ||
129
+ (ts.isMethodDeclaration(parent) && parent.name === node) ||
130
+ (ts.isLabeledStatement(parent) && parent.label === node));
131
+ }
132
+ function staticMethodName(name) {
133
+ return ts.isIdentifier(name) || ts.isStringLiteral(name) || ts.isNumericLiteral(name)
134
+ ? name.text
135
+ : undefined;
136
+ }
62
137
  function implementedTypeNames(declaration) {
63
138
  const names = declaration.heritageClauses
64
139
  ?.filter((clause) => clause.token === ts.SyntaxKind.ImplementsKeyword)
@@ -1 +1 @@
1
- {"version":3,"file":"typescript-code-structure-extractor.js","sourceRoot":"","sources":["../../../src/infrastructure/typescript/typescript-code-structure-extractor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"typescript-code-structure-extractor.js","sourceRoot":"","sources":["../../../src/infrastructure/typescript/typescript-code-structure-extractor.ts"],"names":[],"mappings":"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"}
@@ -161,20 +161,32 @@ function classMethodSymbols(group, sourceFile) {
161
161
  line: sourceFile.getLineAndCharacterOfPosition(member.getStart(sourceFile)).line + 1,
162
162
  exported: group.exported && !isPrivate,
163
163
  declarations: [member.getText(sourceFile)],
164
+ nodes: [member],
164
165
  });
165
166
  }
166
167
  else {
167
168
  existing.declarations.push(member.getText(sourceFile));
169
+ existing.nodes.push(member);
168
170
  }
169
171
  }
170
172
  }
171
- return [...methods].map(([name, method]) => ({
172
- name,
173
- kind: "method",
174
- line: method.line,
175
- exported: method.exported,
176
- fingerprint: createHash("sha256").update(method.declarations.join("\0")).digest("hex"),
177
- }));
173
+ return [...methods].map(([name, method]) => {
174
+ const overloads = method.nodes.filter((node) => node.body === undefined);
175
+ const signatures = (overloads.length > 0 ? overloads : method.nodes)
176
+ .map((node) => functionSignature(node, sourceFile))
177
+ .sort();
178
+ const publicApi = method.exported
179
+ ? { kind: "function", signatures }
180
+ : undefined;
181
+ return {
182
+ name,
183
+ kind: "method",
184
+ line: method.line,
185
+ exported: method.exported,
186
+ fingerprint: createHash("sha256").update(method.declarations.join("\0")).digest("hex"),
187
+ ...(publicApi === undefined ? {} : { publicApi }),
188
+ };
189
+ });
178
190
  }
179
191
  function staticClassMemberName(name) {
180
192
  return ts.isIdentifier(name) || ts.isStringLiteral(name) || ts.isNumericLiteral(name)
@@ -1 +1 @@
1
- {"version":3,"file":"typescript-symbol-extractor.js","sourceRoot":"","sources":["../../../src/infrastructure/typescript/typescript-symbol-extractor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"typescript-symbol-extractor.js","sourceRoot":"","sources":["../../../src/infrastructure/typescript/typescript-symbol-extractor.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"html-report.d.ts","sourceRoot":"","sources":["../../../src/presentation/html/html-report.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,YAAY,EAAgB,MAAM,wBAAwB,CAAC;AAIzE,oDAAoD;AACpD,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,CAyD7D"}
1
+ {"version":3,"file":"html-report.d.ts","sourceRoot":"","sources":["../../../src/presentation/html/html-report.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,YAAY,EAAgB,MAAM,wBAAwB,CAAC;AAIzE,oDAAoD;AACpD,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,CA0D7D"}
@@ -1,3 +1,4 @@
1
+ import { traceIntentToFiles } from "../../application/services/trace-intent-to-files.js";
1
2
  /** ChangeReport를 외부 리소스가 필요 없는 정적 HTML 문서로 변환한다. */
2
3
  export function formatHtmlReport(report) {
3
4
  const target = report.target.headRef === undefined
@@ -33,6 +34,7 @@ export function formatHtmlReport(report) {
33
34
  ${renderSeverityBar(report)}
34
35
  ${renderReportControls()}
35
36
  ${renderContract(report.contract)}
37
+ ${renderIntentTrace(report.contract, report.changes.files)}
36
38
  ${renderImpact(report.impact.changedModules, report.impact.impactedFiles, report.changes.files)}
37
39
  ${renderFindings(report.findings.items, report.patchPreviews ?? [])}
38
40
  ${renderPatchPreviews(report.patchPreviews ?? [], report.changes.files.length)}
@@ -49,7 +51,7 @@ export function formatHtmlReport(report) {
49
51
  <script>${reportScript}</script>
50
52
  </body>
51
53
  </html>
52
- `;
54
+ `.replace(/[ \t]+$/gmu, "");
53
55
  }
54
56
  function renderIntent(contract) {
55
57
  if (contract?.intent === undefined) {
@@ -139,6 +141,39 @@ function renderContract(contract) {
139
141
  .map(([label, value]) => `<div><dt>${escapeHtml(label ?? "")}</dt><dd>${escapeHtml(value ?? "")}</dd></div>`)
140
142
  .join("")}</dl>`);
141
143
  }
144
+ function renderIntentTrace(contract, files) {
145
+ if (contract === undefined)
146
+ return "";
147
+ const traces = traceIntentToFiles(contract, files);
148
+ const groups = [
149
+ { relation: "expected", label: "Expected scope", note: "Matched scope.include" },
150
+ { relation: "allowed", label: "Allowed scope", note: "Matched scope.allow" },
151
+ { relation: "outside", label: "Outside scope", note: "No declared path matched" },
152
+ { relation: "unclassified", label: "Unclassified", note: "Expected paths not configured" },
153
+ ];
154
+ const columns = groups.flatMap((group) => {
155
+ const matches = traces.filter((trace) => trace.relation === group.relation);
156
+ if (matches.length === 0)
157
+ return [];
158
+ return [
159
+ `<div class="intent-trace-group ${group.relation}" data-intent-group>
160
+ <h3>${group.label} <small data-intent-count>${matches.length}</small></h3>
161
+ <p>${group.note}</p>
162
+ <ul>${matches
163
+ .map((trace) => {
164
+ const fileIndex = files.findIndex((file) => file.path === trace.path);
165
+ return `<li data-report-path="${escapeHtml(trace.path)}"><a href="#file-${fileIndex}">${escapeHtml(trace.path)}</a>${trace.patterns.length === 0 ? "" : `<small>${escapeHtml(trace.patterns.join(", "))}</small>`}</li>`;
166
+ })
167
+ .join("")}</ul>
168
+ </div>`,
169
+ ];
170
+ });
171
+ const root = contract.intent === undefined ? "Declared change" : contract.intent;
172
+ return renderSection("Request → changed files", "Contract path evidence", `<div class="intent-trace">
173
+ <div class="intent-trace-root"><span>REQUEST</span><strong>${escapeHtml(root)}</strong></div>
174
+ <div class="intent-trace-groups">${columns.join("") || renderEmpty("No changed files were found.")}</div>
175
+ </div><p class="intent-trace-note">Connections show declared path matches, not inferred natural-language intent.</p>`);
176
+ }
142
177
  function renderFindings(findings, previews) {
143
178
  const body = findings.length === 0
144
179
  ? renderEmpty("No potential issues were detected by the enabled rules.")
@@ -368,6 +403,7 @@ const reportScript = `(() => {
368
403
  const graphNodes = [...document.querySelectorAll("[data-graph-path]")];
369
404
  const graphEdges = [...document.querySelectorAll("[data-graph-from]")];
370
405
  const graphStatus = document.getElementById("graph-visible-count");
406
+ const intentGroups = [...document.querySelectorAll("[data-intent-group]")];
371
407
  function update() {
372
408
  const path = input.value.trim().toLocaleLowerCase();
373
409
  let findings = 0;
@@ -381,6 +417,12 @@ const reportScript = `(() => {
381
417
  findingPaths.add(entry.getAttribute("data-report-path"));
382
418
  }
383
419
  }
420
+ for (const group of intentGroups) {
421
+ const count = [...group.querySelectorAll("li[data-report-path]")].filter((item) => !item.hidden).length;
422
+ group.hidden = count === 0;
423
+ const label = group.querySelector("[data-intent-count]");
424
+ if (label) label.textContent = String(count);
425
+ }
384
426
  status.textContent = [findings, "findings shown"].join(" ");
385
427
  const visiblePaths = new Set();
386
428
  for (const node of graphNodes) {
@@ -505,6 +547,21 @@ details dl { display:grid; gap:7px; margin:12px 0 0; } details dl div { display:
505
547
  .contract-grid div { padding:16px; background:var(--panel-2); }
506
548
  .contract-grid dt { color:var(--muted); font-size:11px; text-transform:uppercase; letter-spacing:.08em; }
507
549
  .contract-grid dd { margin:7px 0 0; overflow-wrap:anywhere; font:13px ui-monospace,SFMono-Regular,Menlo,monospace; }
550
+ .intent-trace { display:grid; grid-template-columns:minmax(170px,1fr) 3fr; gap:22px; align-items:start; }
551
+ .intent-trace-root,.intent-trace-group { padding:16px; border:1px solid var(--line); border-radius:12px; background:var(--panel-2); }
552
+ .intent-trace-root { border-color:var(--cyan); overflow-wrap:anywhere; }
553
+ .intent-trace-root span { display:block; margin-bottom:8px; color:var(--cyan); font-size:10px; font-weight:800; letter-spacing:.14em; }
554
+ .intent-trace-root strong { font-size:15px; }
555
+ .intent-trace-groups { display:grid; grid-template-columns:repeat(auto-fit,minmax(210px,1fr)); gap:12px; border-left:2px solid var(--line); padding-left:20px; }
556
+ .intent-trace-group { position:relative; }
557
+ .intent-trace-group::before { content:""; position:absolute; width:20px; height:2px; left:-21px; top:29px; background:var(--line); }
558
+ .intent-trace-group.outside { border-color:var(--medium); }
559
+ .intent-trace-group h3 small { color:var(--muted); font-size:12px; }
560
+ .intent-trace-group p,.intent-trace-note { color:var(--muted); font-size:12px; }
561
+ .intent-trace-group ul { padding:0; margin:12px 0 0; list-style:none; }
562
+ .intent-trace-group li { padding:8px 0; border-top:1px solid var(--line); overflow-wrap:anywhere; }
563
+ .intent-trace-group li a { color:var(--text); font:12px ui-monospace,SFMono-Regular,Menlo,monospace; }
564
+ .intent-trace-group li small { display:block; margin-top:4px; color:var(--muted); }
508
565
  .finding-list { display:grid; gap:10px; }
509
566
  .finding { padding:18px; border:1px solid var(--line); border-left:3px solid var(--low); border-radius:12px; background:var(--panel-2); }
510
567
  .finding.high { border-left-color:var(--high); }.finding.medium { border-left-color:var(--medium); }
@@ -553,6 +610,6 @@ td { padding:14px 12px; border-bottom:1px solid #202735; vertical-align:top; } t
553
610
  .notes { display:grid; gap:8px; margin:0; padding-left:18px; color:#b9c2d0; }
554
611
  .empty { margin:0; padding:28px; border:1px dashed #303949; border-radius:12px; color:var(--muted); text-align:center; }
555
612
  footer { display:flex; justify-content:space-between; padding:26px 4px 0; color:#536074; font-size:11px; letter-spacing:.05em; text-transform:uppercase; }
556
- @media (max-width:760px) { .shell{width:min(100% - 24px,1180px);padding-top:32px}.hero{align-items:flex-start;flex-direction:column}.metrics{grid-template-columns:repeat(2,1fr)}.contract-grid,.impact-list{grid-template-columns:1fr}.severity-bar{flex-wrap:wrap}.panel{padding:18px}.intent{grid-template-columns:1fr}.report-state{width:100%} }
613
+ @media (max-width:760px) { .shell{width:min(100% - 24px,1180px);padding-top:32px}.hero{align-items:flex-start;flex-direction:column}.metrics{grid-template-columns:repeat(2,1fr)}.contract-grid,.impact-list,.intent-trace{grid-template-columns:1fr}.intent-trace-groups{border-left:0;border-top:2px solid var(--line);padding:20px 0 0}.intent-trace-group::before{display:none}.severity-bar{flex-wrap:wrap}.panel{padding:18px}.intent{grid-template-columns:1fr}.report-state{width:100%} }
557
614
  `;
558
615
  //# sourceMappingURL=html-report.js.map