intentpatch 0.6.0 → 0.8.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 (88) hide show
  1. package/README.ko.md +44 -22
  2. package/README.md +45 -18
  3. package/dist/application/ports/property-type-compatibility.d.ts +5 -0
  4. package/dist/application/ports/property-type-compatibility.d.ts.map +1 -0
  5. package/dist/application/ports/property-type-compatibility.js +2 -0
  6. package/dist/application/ports/property-type-compatibility.js.map +1 -0
  7. package/dist/application/ports/yarn-lock-parser.d.ts +19 -0
  8. package/dist/application/ports/yarn-lock-parser.d.ts.map +1 -0
  9. package/dist/application/ports/yarn-lock-parser.js +2 -0
  10. package/dist/application/ports/yarn-lock-parser.js.map +1 -0
  11. package/dist/application/rules/missing-test-change-rule.d.ts.map +1 -1
  12. package/dist/application/rules/missing-test-change-rule.js +17 -12
  13. package/dist/application/rules/missing-test-change-rule.js.map +1 -1
  14. package/dist/application/rules/public-api-compatibility-rule.d.ts +3 -1
  15. package/dist/application/rules/public-api-compatibility-rule.d.ts.map +1 -1
  16. package/dist/application/rules/public-api-compatibility-rule.js +16 -11
  17. package/dist/application/rules/public-api-compatibility-rule.js.map +1 -1
  18. package/dist/application/rules/yarn-lockfile-rule.d.ts +12 -0
  19. package/dist/application/rules/yarn-lockfile-rule.d.ts.map +1 -0
  20. package/dist/application/rules/yarn-lockfile-rule.js +106 -0
  21. package/dist/application/rules/yarn-lockfile-rule.js.map +1 -0
  22. package/dist/application/services/analyze-test-changes.d.ts.map +1 -1
  23. package/dist/application/services/analyze-test-changes.js +3 -1
  24. package/dist/application/services/analyze-test-changes.js.map +1 -1
  25. package/dist/application/use-cases/analyze-agent-turn.d.ts +20 -0
  26. package/dist/application/use-cases/analyze-agent-turn.d.ts.map +1 -0
  27. package/dist/application/use-cases/analyze-agent-turn.js +28 -0
  28. package/dist/application/use-cases/analyze-agent-turn.js.map +1 -0
  29. package/dist/domain/change-contract.d.ts +3 -0
  30. package/dist/domain/change-contract.d.ts.map +1 -1
  31. package/dist/domain/change-contract.js +19 -0
  32. package/dist/domain/change-contract.js.map +1 -1
  33. package/dist/infrastructure/config/json-change-contract-loader.js +13 -1
  34. package/dist/infrastructure/config/json-change-contract-loader.js.map +1 -1
  35. package/dist/infrastructure/git/git-file-snapshot-source.js +1 -1
  36. package/dist/infrastructure/git/git-file-snapshot-source.js.map +1 -1
  37. package/dist/infrastructure/git/git-private-agent-intent-store.js +7 -7
  38. package/dist/infrastructure/git/git-private-agent-intent-store.js.map +1 -1
  39. package/dist/infrastructure/git/git-private-agent-report-writer.d.ts +8 -0
  40. package/dist/infrastructure/git/git-private-agent-report-writer.d.ts.map +1 -0
  41. package/dist/infrastructure/git/git-private-agent-report-writer.js +45 -0
  42. package/dist/infrastructure/git/git-private-agent-report-writer.js.map +1 -0
  43. package/dist/infrastructure/typescript/typescript-function-signature-compatibility.d.ts.map +1 -1
  44. package/dist/infrastructure/typescript/typescript-function-signature-compatibility.js +47 -3
  45. package/dist/infrastructure/typescript/typescript-function-signature-compatibility.js.map +1 -1
  46. package/dist/infrastructure/typescript/typescript-property-type-compatibility.d.ts +6 -0
  47. package/dist/infrastructure/typescript/typescript-property-type-compatibility.d.ts.map +1 -0
  48. package/dist/infrastructure/typescript/typescript-property-type-compatibility.js +72 -0
  49. package/dist/infrastructure/typescript/typescript-property-type-compatibility.js.map +1 -0
  50. package/dist/infrastructure/yarn/yarn-lock-parser.d.ts +6 -0
  51. package/dist/infrastructure/yarn/yarn-lock-parser.d.ts.map +1 -0
  52. package/dist/infrastructure/yarn/yarn-lock-parser.js +77 -0
  53. package/dist/infrastructure/yarn/yarn-lock-parser.js.map +1 -0
  54. package/dist/presentation/agent-hook/input.d.ts +3 -0
  55. package/dist/presentation/agent-hook/input.d.ts.map +1 -0
  56. package/dist/presentation/agent-hook/input.js +20 -0
  57. package/dist/presentation/agent-hook/input.js.map +1 -0
  58. package/dist/presentation/agent-hook/summary.d.ts +4 -0
  59. package/dist/presentation/agent-hook/summary.d.ts.map +1 -0
  60. package/dist/presentation/agent-hook/summary.js +8 -0
  61. package/dist/presentation/agent-hook/summary.js.map +1 -0
  62. package/dist/presentation/analyze-repository.d.ts.map +1 -1
  63. package/dist/presentation/analyze-repository.js +5 -1
  64. package/dist/presentation/analyze-repository.js.map +1 -1
  65. package/dist/presentation/claude-code/hook.d.ts +2 -7
  66. package/dist/presentation/claude-code/hook.d.ts.map +1 -1
  67. package/dist/presentation/claude-code/hook.js +12 -38
  68. package/dist/presentation/claude-code/hook.js.map +1 -1
  69. package/dist/presentation/cli/arguments.d.ts +11 -1
  70. package/dist/presentation/cli/arguments.d.ts.map +1 -1
  71. package/dist/presentation/cli/arguments.js +17 -0
  72. package/dist/presentation/cli/arguments.js.map +1 -1
  73. package/dist/presentation/cli/main.js +25 -0
  74. package/dist/presentation/cli/main.js.map +1 -1
  75. package/dist/presentation/cli/text-report.js +3 -0
  76. package/dist/presentation/cli/text-report.js.map +1 -1
  77. package/dist/presentation/codex/hook.d.ts +5 -0
  78. package/dist/presentation/codex/hook.d.ts.map +1 -0
  79. package/dist/presentation/codex/hook.js +62 -0
  80. package/dist/presentation/codex/hook.js.map +1 -0
  81. package/dist/presentation/cursor/hook.d.ts +12 -0
  82. package/dist/presentation/cursor/hook.d.ts.map +1 -0
  83. package/dist/presentation/cursor/hook.js +69 -0
  84. package/dist/presentation/cursor/hook.js.map +1 -0
  85. package/dist/presentation/html/html-report.d.ts.map +1 -1
  86. package/dist/presentation/html/html-report.js +84 -14
  87. package/dist/presentation/html/html-report.js.map +1 -1
  88. package/package.json +1 -1
@@ -0,0 +1,106 @@
1
+ const lockfilePath = "yarn.lock";
2
+ /** Yarn 4가 고정한 레지스트리 패키지의 추가·제거·단일 버전 교체를 보고한다. */
3
+ export class YarnLockfileRule {
4
+ snapshots;
5
+ parser;
6
+ constructor(snapshots, parser) {
7
+ this.snapshots = snapshots;
8
+ this.parser = parser;
9
+ }
10
+ async analyze(context) {
11
+ if (!context.changes.files.some((file) => file.path === lockfilePath || file.previousPath === lockfilePath))
12
+ return [];
13
+ const snapshot = await this.snapshots.read(context.target, lockfilePath);
14
+ const before = snapshot.before === undefined ? undefined : this.parser.parse(snapshot.before);
15
+ const after = snapshot.after === undefined ? undefined : this.parser.parse(snapshot.after);
16
+ const errors = [
17
+ ...(before !== undefined && !before.ok ? [parseFinding("base", before)] : []),
18
+ ...(after !== undefined && !after.ok ? [parseFinding("current", after)] : []),
19
+ ];
20
+ if (errors.length > 0)
21
+ return errors;
22
+ if (before === undefined && after?.ok)
23
+ return [presenceFinding("added", after.packages.size)];
24
+ if (after === undefined && before?.ok)
25
+ return [presenceFinding("removed", before.packages.size)];
26
+ if (!before?.ok || !after?.ok)
27
+ return [];
28
+ const findings = [];
29
+ const beforeByName = groupByName(before.packages);
30
+ const afterByName = groupByName(after.packages);
31
+ const names = [...new Set([...beforeByName.keys(), ...afterByName.keys()])].sort();
32
+ for (const name of names) {
33
+ const removed = (beforeByName.get(name) ?? []).filter((item) => !after.packages.has(item.id));
34
+ const added = (afterByName.get(name) ?? []).filter((item) => !before.packages.has(item.id));
35
+ if (removed.length === 1 &&
36
+ added.length === 1 &&
37
+ removed[0] !== undefined &&
38
+ added[0] !== undefined) {
39
+ findings.push({
40
+ ruleId: "dependency/locked-version-changed",
41
+ severity: "low",
42
+ title: "Resolved package version changed",
43
+ description: `${name} changed from ${removed[0].version} to ${added[0].version} in yarn.lock.`,
44
+ file: lockfilePath,
45
+ evidence: { ...evidence(added[0]), from: removed[0].version, to: added[0].version },
46
+ });
47
+ }
48
+ else {
49
+ findings.push(...added.map((item) => packageFinding("added", item)), ...removed.map((item) => packageFinding("removed", item)));
50
+ }
51
+ }
52
+ return findings;
53
+ }
54
+ }
55
+ function groupByName(packages) {
56
+ const grouped = new Map();
57
+ for (const item of packages.values()) {
58
+ const group = grouped.get(item.name) ?? [];
59
+ group.push(item);
60
+ grouped.set(item.name, group);
61
+ }
62
+ return grouped;
63
+ }
64
+ function evidence(item) {
65
+ return {
66
+ package: item.name,
67
+ version: item.version,
68
+ packageId: item.id,
69
+ rootDirect: item.rootDirect,
70
+ packageManager: "yarn",
71
+ };
72
+ }
73
+ function packageFinding(kind, item) {
74
+ return {
75
+ ruleId: `dependency/locked-package-${kind}`,
76
+ severity: "low",
77
+ title: kind === "added" ? "Resolved package added" : "Resolved package removed",
78
+ description: `${item.id} was ${kind} in yarn.lock.`,
79
+ file: lockfilePath,
80
+ evidence: evidence(item),
81
+ };
82
+ }
83
+ function parseFinding(side, result) {
84
+ const unsupported = result.kind === "unsupported";
85
+ return {
86
+ ruleId: unsupported
87
+ ? "dependency/unsupported-yarn-lockfile"
88
+ : "dependency/invalid-yarn-lockfile",
89
+ severity: unsupported ? "low" : "high",
90
+ title: unsupported ? "Unsupported Yarn lockfile" : "Invalid Yarn lockfile",
91
+ description: `Could not analyze the ${side} yarn.lock: ${result.reason}`,
92
+ file: lockfilePath,
93
+ evidence: { side, reason: result.reason },
94
+ };
95
+ }
96
+ function presenceFinding(kind, packageCount) {
97
+ return {
98
+ ruleId: `dependency/yarn-lockfile-${kind}`,
99
+ severity: "low",
100
+ title: kind === "added" ? "Yarn lockfile added" : "Yarn lockfile removed",
101
+ description: `yarn.lock was ${kind} with ${packageCount} resolved registry packages.`,
102
+ file: lockfilePath,
103
+ evidence: { packageCount },
104
+ };
105
+ }
106
+ //# sourceMappingURL=yarn-lockfile-rule.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"yarn-lockfile-rule.js","sourceRoot":"","sources":["../../../src/application/rules/yarn-lockfile-rule.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"analyze-test-changes.d.ts","sourceRoot":"","sources":["../../../src/application/services/analyze-test-changes.ts"],"names":[],"mappings":"AACA,OAAO,EAA4B,KAAK,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AAChG,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AAM3E,gDAAgD;AAChD,qBAAa,kBAAmB,YAAW,kBAAkB;IAC9C,OAAO,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,kBAAkB,CAAC;CA+B5E"}
1
+ {"version":3,"file":"analyze-test-changes.d.ts","sourceRoot":"","sources":["../../../src/application/services/analyze-test-changes.ts"],"names":[],"mappings":"AACA,OAAO,EAA4B,KAAK,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AAChG,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AAM3E,gDAAgD;AAChD,qBAAa,kBAAmB,YAAW,kBAAkB;IAC9C,OAAO,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,kBAAkB,CAAC;CAmC5E"}
@@ -22,7 +22,9 @@ export class AnalyzeTestChanges {
22
22
  sourcePath: source.path,
23
23
  sourceChangeKind: source.kind,
24
24
  matchingTests: testFiles
25
- .filter((test) => testIdentity(test.path) === sourceIdentity(source.path) &&
25
+ .filter((test) => (Object.hasOwn(policy.related ?? {}, source.path)
26
+ ? (policy.related?.[source.path] ?? []).some((path) => matchesPathPattern(test.path, path))
27
+ : testIdentity(test.path) === sourceIdentity(source.path)) &&
26
28
  (source.kind === "deleted" || test.changeKind !== "deleted"))
27
29
  .map((test) => test.path),
28
30
  })),
@@ -1 +1 @@
1
- {"version":3,"file":"analyze-test-changes.js","sourceRoot":"","sources":["../../../src/application/services/analyze-test-changes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,wBAAwB,EAA2B,MAAM,6BAA6B,CAAC;AAGhG,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAEvD,MAAM,eAAe,GAAG,sBAAsB,CAAC;AAC/C,MAAM,UAAU,GAAG,kDAAkD,CAAC;AAEtE,gDAAgD;AAChD,MAAM,OAAO,kBAAkB;IACtB,KAAK,CAAC,OAAO,CAAC,OAAwB;QAC3C,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,EAAE,KAAK,CAAC;QACvC,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,OAAO,wBAAwB,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,cAAc,EAAE,EAAE,EAAE,CAAC,CAAC;QACzE,CAAC;QAED,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK;aACpC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;aACvD,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,UAAU,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QAC/D,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAC9C,CAAC,IAAI,EAAE,EAAE,CACP,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC;YACtC,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,UAAU,CAAC;YACxC,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC,CACzC,CAAC;QAEF,OAAO,wBAAwB,CAAC;YAC9B,SAAS;YACT,cAAc,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;gBAC3C,UAAU,EAAE,MAAM,CAAC,IAAI;gBACvB,gBAAgB,EAAE,MAAM,CAAC,IAAI;gBAC7B,aAAa,EAAE,SAAS;qBACrB,MAAM,CACL,CAAC,IAAI,EAAE,EAAE,CACP,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC;oBACvD,CAAC,MAAM,CAAC,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS,CAAC,CAC/D;qBACA,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC;aAC5B,CAAC,CAAC;SACJ,CAAC,CAAC;IACL,CAAC;CACF;AAED,SAAS,UAAU,CAAC,IAAY,EAAE,QAA2B;IAC3D,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,kBAAkB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;AACvE,CAAC;AAED,SAAS,cAAc,CAAC,IAAY;IAClC,OAAO,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC;AAC3D,CAAC;AAED,SAAS,YAAY,CAAC,IAAY;IAChC,OAAO,cAAc,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;AACtD,CAAC"}
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,20 @@
1
+ import type { ChangeReport } from "../../domain/report.js";
2
+ import type { AgentIntentSessionStore } from "../ports/agent-intent-session-store.js";
3
+ export interface AgentTurnAnalysisRequest {
4
+ readonly workingDirectory: string;
5
+ readonly baseRef: string;
6
+ readonly intentOverride: string;
7
+ }
8
+ export interface AgentTurnDependencies {
9
+ readonly store: AgentIntentSessionStore;
10
+ readonly analyze: (request: AgentTurnAnalysisRequest) => Promise<ChangeReport>;
11
+ }
12
+ /** 에이전트별 이벤트 형식과 무관하게 요청 보관·Git 비교를 한 흐름으로 묶는다. */
13
+ export declare class AnalyzeAgentTurn {
14
+ private readonly dependencies;
15
+ constructor(dependencies: AgentTurnDependencies);
16
+ capture(key: string, cwd: string, prompt: string): Promise<void>;
17
+ analyze(key: string, cwd: string): Promise<ChangeReport | undefined>;
18
+ clear(key: string, cwd: string): Promise<void>;
19
+ }
20
+ //# sourceMappingURL=analyze-agent-turn.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"analyze-agent-turn.d.ts","sourceRoot":"","sources":["../../../src/application/use-cases/analyze-agent-turn.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,wCAAwC,CAAC;AAItF,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;CACjC;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,KAAK,EAAE,uBAAuB,CAAC;IACxC,QAAQ,CAAC,OAAO,EAAE,CAAC,OAAO,EAAE,wBAAwB,KAAK,OAAO,CAAC,YAAY,CAAC,CAAC;CAChF;AAED,mDAAmD;AACnD,qBAAa,gBAAgB;IACR,OAAO,CAAC,QAAQ,CAAC,YAAY;gBAAZ,YAAY,EAAE,qBAAqB;IAE1D,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAOhE,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,SAAS,CAAC;IAUpE,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAG5D"}
@@ -0,0 +1,28 @@
1
+ const maximumPromptBytes = 64 * 1024;
2
+ /** 에이전트별 이벤트 형식과 무관하게 요청 보관·Git 비교를 한 흐름으로 묶는다. */
3
+ export class AnalyzeAgentTurn {
4
+ dependencies;
5
+ constructor(dependencies) {
6
+ this.dependencies = dependencies;
7
+ }
8
+ async capture(key, cwd, prompt) {
9
+ if (prompt.trim().length === 0 || Buffer.byteLength(prompt, "utf8") > maximumPromptBytes) {
10
+ throw new Error("Agent hook prompt must be nonempty and at most 64 KiB");
11
+ }
12
+ await this.dependencies.store.capture(key, cwd, prompt);
13
+ }
14
+ async analyze(key, cwd) {
15
+ const captured = await this.dependencies.store.take(key, cwd);
16
+ if (captured === undefined)
17
+ return undefined;
18
+ return this.dependencies.analyze({
19
+ workingDirectory: cwd,
20
+ baseRef: captured.baseRef,
21
+ intentOverride: captured.intent,
22
+ });
23
+ }
24
+ async clear(key, cwd) {
25
+ await this.dependencies.store.clear(key, cwd);
26
+ }
27
+ }
28
+ //# sourceMappingURL=analyze-agent-turn.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"analyze-agent-turn.js","sourceRoot":"","sources":["../../../src/application/use-cases/analyze-agent-turn.ts"],"names":[],"mappings":"AAGA,MAAM,kBAAkB,GAAG,EAAE,GAAG,IAAI,CAAC;AAarC,mDAAmD;AACnD,MAAM,OAAO,gBAAgB;IACS;IAApC,YAAoC,YAAmC;QAAnC,iBAAY,GAAZ,YAAY,CAAuB;IAAG,CAAC;IAEpE,KAAK,CAAC,OAAO,CAAC,GAAW,EAAE,GAAW,EAAE,MAAc;QAC3D,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,kBAAkB,EAAE,CAAC;YACzF,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAC;QAC3E,CAAC;QACD,MAAM,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;IAC1D,CAAC;IAEM,KAAK,CAAC,OAAO,CAAC,GAAW,EAAE,GAAW;QAC3C,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QAC9D,IAAI,QAAQ,KAAK,SAAS;YAAE,OAAO,SAAS,CAAC;QAC7C,OAAO,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC;YAC/B,gBAAgB,EAAE,GAAG;YACrB,OAAO,EAAE,QAAQ,CAAC,OAAO;YACzB,cAAc,EAAE,QAAQ,CAAC,MAAM;SAChC,CAAC,CAAC;IACL,CAAC;IAEM,KAAK,CAAC,KAAK,CAAC,GAAW,EAAE,GAAW;QACzC,MAAM,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IAChD,CAAC;CACF"}
@@ -8,6 +8,8 @@ export interface TestChangePolicy {
8
8
  readonly requireFor: readonly string[];
9
9
  readonly include: readonly string[];
10
10
  readonly exclude: readonly string[];
11
+ /** 이전 버전의 공개 정책 객체도 계속 사용할 수 있도록 선택적으로 유지한다. */
12
+ readonly related?: Readonly<Record<string, readonly string[]>>;
11
13
  }
12
14
  export interface ChangeContract {
13
15
  readonly intent?: string;
@@ -26,6 +28,7 @@ export interface CreateChangeContractInput {
26
28
  requireFor?: readonly string[];
27
29
  include?: readonly string[];
28
30
  exclude?: readonly string[];
31
+ related?: Readonly<Record<string, readonly string[]>>;
29
32
  }>;
30
33
  }
31
34
  /** 사용자 기대 범위를 정규화해 규칙마다 설정 해석이 달라지지 않게 한다. */
@@ -1 +1 @@
1
- {"version":3,"file":"change-contract.d.ts","sourceRoot":"","sources":["../../src/domain/change-contract.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,UAAU,EAAE,SAAS,MAAM,EAAE,CAAC;IACvC,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;CACrC;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC;IAC5B,QAAQ,CAAC,KAAK,CAAC,EAAE,gBAAgB,CAAC;CACnC;AAED,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,KAAK,CAAC,EAAE,QAAQ,CAAC;QACxB,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;QAC5B,KAAK,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;QAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,CAAC,CAAC;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,QAAQ,CAAC;QACxB,UAAU,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;QAC/B,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;QAC5B,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;KAC7B,CAAC,CAAC;CACJ;AAED,8CAA8C;AAC9C,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,yBAAyB,GAAG,cAAc,CAmBrF"}
1
+ {"version":3,"file":"change-contract.d.ts","sourceRoot":"","sources":["../../src/domain/change-contract.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,UAAU,EAAE,SAAS,MAAM,EAAE,CAAC;IACvC,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,gDAAgD;IAChD,QAAQ,CAAC,OAAO,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC,CAAC,CAAC;CAChE;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC;IAC5B,QAAQ,CAAC,KAAK,CAAC,EAAE,gBAAgB,CAAC;CACnC;AAED,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,KAAK,CAAC,EAAE,QAAQ,CAAC;QACxB,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;QAC5B,KAAK,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;QAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,CAAC,CAAC;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,QAAQ,CAAC;QACxB,UAAU,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;QAC/B,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;QAC5B,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;QAC5B,OAAO,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC,CAAC,CAAC;KACvD,CAAC,CAAC;CACJ;AAED,8CAA8C;AAC9C,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,yBAAyB,GAAG,cAAc,CAmBrF"}
@@ -25,6 +25,7 @@ function normalizeTestPolicy(input) {
25
25
  const requireFor = normalizePatterns(input.requireFor ?? [], "tests.requireFor");
26
26
  const include = normalizePatterns(input.include ?? [], "tests.include");
27
27
  const exclude = normalizePatterns(input.exclude ?? [], "tests.exclude");
28
+ const related = normalizeRelatedTests(input.related ?? {});
28
29
  if (requireFor.length === 0) {
29
30
  throw new Error("Change contract tests.requireFor must contain at least one pattern.");
30
31
  }
@@ -35,8 +36,26 @@ function normalizeTestPolicy(input) {
35
36
  requireFor: Object.freeze(requireFor),
36
37
  include: Object.freeze(include),
37
38
  exclude: Object.freeze(exclude),
39
+ related: Object.freeze(related),
38
40
  });
39
41
  }
42
+ function normalizeRelatedTests(values) {
43
+ const related = Object.create(null);
44
+ for (const [source, tests] of Object.entries(values).sort(([left], [right]) => left.localeCompare(right))) {
45
+ const path = normalizePattern(source, "tests.related");
46
+ if (path.includes("*")) {
47
+ throw new Error("Change contract tests.related source paths must be exact paths.");
48
+ }
49
+ if (Object.hasOwn(related, path)) {
50
+ throw new Error(`Change contract tests.related contains a duplicate source path: ${path}`);
51
+ }
52
+ if (!Array.isArray(tests) || tests.length === 0) {
53
+ throw new Error(`Change contract tests.related[${JSON.stringify(source)}] must contain test paths.`);
54
+ }
55
+ related[path] = Object.freeze(normalizePatterns(tests, `tests.related[${source}]`));
56
+ }
57
+ return related;
58
+ }
40
59
  function normalizeIntent(value) {
41
60
  if (value === undefined) {
42
61
  return undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"change-contract.js","sourceRoot":"","sources":["../../src/domain/change-contract.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"change-contract.js","sourceRoot":"","sources":["../../src/domain/change-contract.ts"],"names":[],"mappings":"AAqCA,8CAA8C;AAC9C,MAAM,UAAU,oBAAoB,CAAC,KAAgC;IACnE,MAAM,MAAM,GAAG,eAAe,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAC7C,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC;IAChC,MAAM,OAAO,GAAG,iBAAiB,CAAC,KAAK,CAAC,OAAO,IAAI,EAAE,EAAE,eAAe,CAAC,CAAC;IACxE,MAAM,KAAK,GAAG,iBAAiB,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE,EAAE,aAAa,CAAC,CAAC;IAClE,MAAM,QAAQ,GAAG,eAAe,CAAC,KAAK,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;IAC7D,MAAM,QAAQ,GAAG,eAAe,CAAC,KAAK,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;IAC7D,MAAM,KAAK,GAAG,mBAAmB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAE/C,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,GAAG,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC;QAC3C,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC;YACnB,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC;YAC/B,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC;YAC3B,GAAG,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC;YAC/C,GAAG,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC;SAChD,CAAC;QACF,GAAG,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC;KAC1C,CAAC,CAAC;AACL,CAAC;AAED,SAAS,mBAAmB,CAC1B,KAAyC;IAEzC,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,UAAU,GAAG,iBAAiB,CAAC,KAAK,CAAC,UAAU,IAAI,EAAE,EAAE,kBAAkB,CAAC,CAAC;IACjF,MAAM,OAAO,GAAG,iBAAiB,CAAC,KAAK,CAAC,OAAO,IAAI,EAAE,EAAE,eAAe,CAAC,CAAC;IACxE,MAAM,OAAO,GAAG,iBAAiB,CAAC,KAAK,CAAC,OAAO,IAAI,EAAE,EAAE,eAAe,CAAC,CAAC;IACxE,MAAM,OAAO,GAAG,qBAAqB,CAAC,KAAK,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;IAC3D,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5B,MAAM,IAAI,KAAK,CAAC,qEAAqE,CAAC,CAAC;IACzF,CAAC;IACD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CAAC,kEAAkE,CAAC,CAAC;IACtF,CAAC;IAED,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC;QACrC,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC;QAC/B,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC;QAC/B,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC;KAChC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,qBAAqB,CAC5B,MAAmD;IAEnD,MAAM,OAAO,GAAsC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACvE,KAAK,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE,CAC5E,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAC1B,EAAE,CAAC;QACF,MAAM,IAAI,GAAG,gBAAgB,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;QACvD,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YACvB,MAAM,IAAI,KAAK,CAAC,iEAAiE,CAAC,CAAC;QACrF,CAAC;QACD,IAAI,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,CAAC;YACjC,MAAM,IAAI,KAAK,CAAC,mEAAmE,IAAI,EAAE,CAAC,CAAC;QAC7F,CAAC;QACD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAChD,MAAM,IAAI,KAAK,CACb,iCAAiC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,4BAA4B,CACpF,CAAC;QACJ,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,iBAAiB,CAAC,KAAK,EAAE,iBAAiB,MAAM,GAAG,CAAC,CAAC,CAAC;IACtF,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,eAAe,CAAC,KAAyB;IAChD,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IAC5B,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;IAC/D,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,iBAAiB,CAAC,MAAyB,EAAE,KAAa;IACjE,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,gBAAgB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;IACvE,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC;AACjF,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAa,EAAE,KAAa;IACpD,IAAI,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IACjD,OAAO,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QAChC,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC7B,CAAC;IAED,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CAAC,mBAAmB,KAAK,oCAAoC,CAAC,CAAC;IAChF,CAAC;IACD,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACjE,MAAM,IAAI,KAAK,CAAC,yDAAyD,KAAK,EAAE,CAAC,CAAC;IACpF,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,eAAe,CAAC,KAAyB,EAAE,KAA8B;IAChF,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;QAC9C,MAAM,IAAI,KAAK,CAAC,yBAAyB,KAAK,kCAAkC,CAAC,CAAC;IACpF,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
@@ -5,7 +5,7 @@ import { isRecord } from "../../domain/value-guards.js";
5
5
  const defaultConfigurationFile = ".intentpatch.json";
6
6
  const rootFields = new Set(["intent", "scope", "tests"]);
7
7
  const scopeFields = new Set(["include", "allow", "maxFiles", "maxLines"]);
8
- const testFields = new Set(["requireFor", "include", "exclude"]);
8
+ const testFields = new Set(["requireFor", "include", "exclude", "related"]);
9
9
  /** JSON 설정을 엄격하게 검증하고 ChangeContract 도메인 모델로 변환한다. */
10
10
  export class JsonChangeContractLoader {
11
11
  async load(workingDirectory, configurationPath) {
@@ -85,10 +85,22 @@ function parseConfiguration(content) {
85
85
  requireFor: optionalStringArray(testsValue.requireFor, "tests.requireFor"),
86
86
  include: optionalStringArray(testsValue.include, "tests.include"),
87
87
  exclude: optionalStringArray(testsValue.exclude, "tests.exclude"),
88
+ related: optionalRelatedTests(testsValue.related),
88
89
  },
89
90
  }),
90
91
  };
91
92
  }
93
+ function optionalRelatedTests(value) {
94
+ if (value === undefined)
95
+ return {};
96
+ if (!isRecord(value))
97
+ throw new Error("tests.related must be a JSON object.");
98
+ const related = Object.create(null);
99
+ for (const [source, paths] of Object.entries(value)) {
100
+ related[source] = optionalStringArray(paths, `tests.related[${source}]`);
101
+ }
102
+ return related;
103
+ }
92
104
  function assertKnownFields(value, knownFields, location) {
93
105
  const unknownField = Object.keys(value).find((field) => !knownFields.has(field));
94
106
  if (unknownField !== undefined) {
@@ -1 +1 @@
1
- {"version":3,"file":"json-change-contract-loader.js","sourceRoot":"","sources":["../../../src/infrastructure/config/json-change-contract-loader.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"json-change-contract-loader.js","sourceRoot":"","sources":["../../../src/infrastructure/config/json-change-contract-loader.ts"],"names":[],"mappings":"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"}
@@ -73,7 +73,7 @@ export class GitFileSnapshotSource {
73
73
  if (!metadata.isFile()) {
74
74
  throw new Error(`Expected a regular file: ${path}`);
75
75
  }
76
- const sizeLimit = path === "package-lock.json" || path === "pnpm-lock.yaml"
76
+ const sizeLimit = path === "package-lock.json" || path === "pnpm-lock.yaml" || path === "yarn.lock"
77
77
  ? maximumLockfileSize
78
78
  : maximumTextFileSize;
79
79
  if (metadata.size > sizeLimit) {
@@ -1 +1 @@
1
- {"version":3,"file":"git-file-snapshot-source.js","sourceRoot":"","sources":["../../../src/infrastructure/git/git-file-snapshot-source.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"git-file-snapshot-source.js","sourceRoot":"","sources":["../../../src/infrastructure/git/git-file-snapshot-source.ts"],"names":[],"mappings":"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"}
@@ -17,7 +17,7 @@ export class GitPrivateAgentIntentStore {
17
17
  cwd: workingDirectory,
18
18
  })).trim();
19
19
  if (!/^[0-9a-f]{40,64}$/u.test(baseRef)) {
20
- throw new Error("Claude Code hook requires a repository with an existing HEAD commit");
20
+ throw new Error("Agent hook requires a repository with an existing HEAD commit");
21
21
  }
22
22
  const temporaryPath = `${statePath}.${randomUUID()}.tmp`;
23
23
  try {
@@ -45,20 +45,20 @@ export class GitPrivateAgentIntentStore {
45
45
  }
46
46
  try {
47
47
  if (!metadata.isFile() || metadata.isSymbolicLink() || metadata.size > maximumSnapshotBytes) {
48
- throw new Error("Claude Code hook state is not a bounded regular file");
48
+ throw new Error("Agent hook state is not a bounded regular file");
49
49
  }
50
50
  if (process.platform !== "win32" && (metadata.mode & 0o077) !== 0) {
51
- throw new Error("Claude Code hook state is not private to its owner");
51
+ throw new Error("Agent hook state is not private to its owner");
52
52
  }
53
53
  let value;
54
54
  try {
55
55
  value = JSON.parse(await readFile(statePath, "utf8"));
56
56
  }
57
57
  catch {
58
- throw new Error("Claude Code hook state is invalid JSON");
58
+ throw new Error("Agent hook state is invalid JSON");
59
59
  }
60
60
  if (!isCapturedIntent(value) || value.repositoryRoot !== repositoryRoot) {
61
- throw new Error("Claude Code hook state does not match this repository");
61
+ throw new Error("Agent hook state does not match this repository");
62
62
  }
63
63
  return { intent: value.intent, baseRef: value.baseRef };
64
64
  }
@@ -89,10 +89,10 @@ export class GitPrivateAgentIntentStore {
89
89
  await mkdir(privateDirectory, { mode: 0o700, recursive: true });
90
90
  const metadata = await lstat(privateDirectory);
91
91
  if (!metadata.isDirectory() || metadata.isSymbolicLink()) {
92
- throw new Error("Claude Code hook state directory is not a regular directory");
92
+ throw new Error("Agent hook state directory is not a regular directory");
93
93
  }
94
94
  if (process.platform !== "win32" && (metadata.mode & 0o077) !== 0) {
95
- throw new Error("Claude Code hook state directory is not private to its owner");
95
+ throw new Error("Agent hook state directory is not private to its owner");
96
96
  }
97
97
  const name = createHash("sha256").update(sessionId).digest("hex");
98
98
  return { statePath: join(privateDirectory, `${name}.json`), repositoryRoot };
@@ -1 +1 @@
1
- {"version":3,"file":"git-private-agent-intent-store.js","sourceRoot":"","sources":["../../../src/infrastructure/git/git-private-agent-intent-store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"git-private-agent-intent-store.js","sourceRoot":"","sources":["../../../src/infrastructure/git/git-private-agent-intent-store.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import { type CommandRunner } from "../process/command-runner.js";
2
+ /** 민감한 요청문이 들어갈 수 있는 HTML을 작업 트리 밖의 Git 메타데이터에 보관한다. */
3
+ export declare class GitPrivateAgentReportWriter {
4
+ private readonly commands;
5
+ constructor(commands?: CommandRunner);
6
+ write(key: string, workingDirectory: string, content: string): Promise<string>;
7
+ }
8
+ //# sourceMappingURL=git-private-agent-report-writer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"git-private-agent-report-writer.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/git/git-private-agent-report-writer.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,aAAa,EAAqB,MAAM,8BAA8B,CAAC;AAErF,wDAAwD;AACxD,qBAAa,2BAA2B;IACnB,OAAO,CAAC,QAAQ,CAAC,QAAQ;gBAAR,QAAQ,GAAE,aAAuC;IAExE,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAiC5F"}
@@ -0,0 +1,45 @@
1
+ import { createHash, randomUUID } from "node:crypto";
2
+ import { lstat, mkdir, realpath, rename, unlink, writeFile } from "node:fs/promises";
3
+ import { join } from "node:path";
4
+ import { NodeCommandRunner } from "../process/command-runner.js";
5
+ /** 민감한 요청문이 들어갈 수 있는 HTML을 작업 트리 밖의 Git 메타데이터에 보관한다. */
6
+ export class GitPrivateAgentReportWriter {
7
+ commands;
8
+ constructor(commands = new NodeCommandRunner()) {
9
+ this.commands = commands;
10
+ }
11
+ async write(key, workingDirectory, content) {
12
+ const gitDirectory = await realpath((await this.commands.run({
13
+ executable: "git",
14
+ arguments: ["rev-parse", "--absolute-git-dir"],
15
+ cwd: workingDirectory,
16
+ })).trim());
17
+ const directory = join(gitDirectory, "intentpatch-reports");
18
+ await mkdir(directory, { recursive: true, mode: 0o700 });
19
+ const metadata = await lstat(directory);
20
+ if (!metadata.isDirectory() || metadata.isSymbolicLink()) {
21
+ throw new Error("Agent report directory is not a regular directory");
22
+ }
23
+ if (process.platform !== "win32" && (metadata.mode & 0o077) !== 0) {
24
+ throw new Error("Agent report directory is not private to its owner");
25
+ }
26
+ const name = createHash("sha256").update(key).digest("hex");
27
+ const destination = join(directory, `${name}.html`);
28
+ const temporary = join(directory, `${name}.${randomUUID()}.tmp`);
29
+ try {
30
+ await writeFile(temporary, content, { encoding: "utf8", flag: "wx", mode: 0o600 });
31
+ await rename(temporary, destination);
32
+ }
33
+ finally {
34
+ await unlink(temporary).catch((error) => {
35
+ if (!isMissing(error))
36
+ throw error;
37
+ });
38
+ }
39
+ return destination;
40
+ }
41
+ }
42
+ function isMissing(error) {
43
+ return typeof error === "object" && error !== null && "code" in error && error.code === "ENOENT";
44
+ }
45
+ //# sourceMappingURL=git-private-agent-report-writer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"git-private-agent-report-writer.js","sourceRoot":"","sources":["../../../src/infrastructure/git/git-private-agent-report-writer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACrF,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAsB,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AAErF,wDAAwD;AACxD,MAAM,OAAO,2BAA2B;IACF;IAApC,YAAoC,WAA0B,IAAI,iBAAiB,EAAE;QAAjD,aAAQ,GAAR,QAAQ,CAAyC;IAAG,CAAC;IAElF,KAAK,CAAC,KAAK,CAAC,GAAW,EAAE,gBAAwB,EAAE,OAAe;QACvE,MAAM,YAAY,GAAG,MAAM,QAAQ,CACjC,CACE,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;YACtB,UAAU,EAAE,KAAK;YACjB,SAAS,EAAE,CAAC,WAAW,EAAE,oBAAoB,CAAC;YAC9C,GAAG,EAAE,gBAAgB;SACtB,CAAC,CACH,CAAC,IAAI,EAAE,CACT,CAAC;QACF,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,EAAE,qBAAqB,CAAC,CAAC;QAC5D,MAAM,KAAK,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;QACzD,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,SAAS,CAAC,CAAC;QACxC,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,IAAI,QAAQ,CAAC,cAAc,EAAE,EAAE,CAAC;YACzD,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;QACvE,CAAC;QACD,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;YAClE,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;QACxE,CAAC;QAED,MAAM,IAAI,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC5D,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,EAAE,GAAG,IAAI,OAAO,CAAC,CAAC;QACpD,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE,GAAG,IAAI,IAAI,UAAU,EAAE,MAAM,CAAC,CAAC;QACjE,IAAI,CAAC;YACH,MAAM,SAAS,CAAC,SAAS,EAAE,OAAO,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;YACnF,MAAM,MAAM,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;QACvC,CAAC;gBAAS,CAAC;YACT,MAAM,MAAM,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;gBAC/C,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;oBAAE,MAAM,KAAK,CAAC;YACrC,CAAC,CAAC,CAAC;QACL,CAAC;QACD,OAAO,WAAW,CAAC;IACrB,CAAC;CACF;AAED,SAAS,SAAS,CAAC,KAAc;IAC/B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,MAAM,IAAI,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC;AACnG,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"typescript-function-signature-compatibility.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/typescript/typescript-function-signature-compatibility.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,6DAA6D,CAAC;AAIlH,kGAAkG;AAClG,qBAAa,wCAAyC,YAAW,8BAA8B;IACtF,sBAAsB,CAC3B,QAAQ,EAAE,SAAS,MAAM,EAAE,EAC3B,OAAO,EAAE,SAAS,MAAM,EAAE,GACzB,OAAO,GAAG,SAAS;CAiDvB"}
1
+ {"version":3,"file":"typescript-function-signature-compatibility.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/typescript/typescript-function-signature-compatibility.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,6DAA6D,CAAC;AAWlH,kGAAkG;AAClG,qBAAa,wCAAyC,YAAW,8BAA8B;IACtF,sBAAsB,CAC3B,QAAQ,EAAE,SAAS,MAAM,EAAE,EAC3B,OAAO,EAAE,SAAS,MAAM,EAAE,GACzB,OAAO,GAAG,SAAS;CAkDvB"}
@@ -1,5 +1,12 @@
1
1
  import ts from "typescript";
2
2
  const comparisonPath = "/__intentpatch_function_signatures__.ts";
3
+ const primitiveParameterTypes = new Set([
4
+ ts.SyntaxKind.StringKeyword,
5
+ ts.SyntaxKind.NumberKeyword,
6
+ ts.SyntaxKind.BooleanKeyword,
7
+ ts.SyntaxKind.BigIntKeyword,
8
+ ts.SyntaxKind.SymbolKeyword,
9
+ ]);
3
10
  /** Uses TypeScript assignability only when both self-contained signature types can be checked. */
4
11
  export class TypeScriptFunctionSignatureCompatibility {
5
12
  preservesPreviousCalls(previous, current) {
@@ -24,10 +31,15 @@ export class TypeScriptFunctionSignatureCompatibility {
24
31
  ? sourceFile
25
32
  : getSourceFile(path, languageVersion, onError, shouldCreateNewSourceFile);
26
33
  const program = ts.createProgram([comparisonPath], options, host);
27
- if (program.getSyntacticDiagnostics(sourceFile).length > 0 ||
28
- program.getSemanticDiagnostics(sourceFile).length > 0) {
34
+ if (program.getSyntacticDiagnostics(sourceFile).length > 0)
35
+ return undefined;
36
+ // A new union arm cannot invalidate calls that supplied the old primitive type.
37
+ // This narrow proof also works when unchanged return names or new union arms are
38
+ // declared outside the isolated comparison program.
39
+ if (preservesPrimitiveParameterCalls(sourceFile))
40
+ return true;
41
+ if (program.getSemanticDiagnostics(sourceFile).length > 0)
29
42
  return undefined;
30
- }
31
43
  const checker = program.getTypeChecker();
32
44
  const declarations = sourceFile.statements.filter(ts.isInterfaceDeclaration);
33
45
  const previousSymbol = declarations[0] && checker.getSymbolAtLocation(declarations[0].name);
@@ -37,6 +49,38 @@ export class TypeScriptFunctionSignatureCompatibility {
37
49
  return checker.isTypeAssignableTo(checker.getDeclaredTypeOfSymbol(currentSymbol), checker.getDeclaredTypeOfSymbol(previousSymbol));
38
50
  }
39
51
  }
52
+ function preservesPrimitiveParameterCalls(sourceFile) {
53
+ const declarations = sourceFile.statements.filter(ts.isInterfaceDeclaration);
54
+ const previousCalls = declarations[0]?.members.filter(ts.isCallSignatureDeclaration) ?? [];
55
+ const currentCalls = declarations[1]?.members.filter(ts.isCallSignatureDeclaration) ?? [];
56
+ return (previousCalls.length > 0 &&
57
+ previousCalls.every((previous) => currentCalls.some((current) => preservesPrimitiveCall(previous, current, sourceFile))));
58
+ }
59
+ function preservesPrimitiveCall(previous, current, sourceFile) {
60
+ if (previous.typeParameters?.length ||
61
+ current.typeParameters?.length ||
62
+ previous.parameters.length !== current.parameters.length ||
63
+ previous.parameters.length === 0 ||
64
+ previous.type?.getText(sourceFile) !== current.type?.getText(sourceFile)) {
65
+ return false;
66
+ }
67
+ return previous.parameters.every((parameter, index) => {
68
+ const currentParameter = current.parameters[index];
69
+ const previousType = parameter.type;
70
+ const currentType = currentParameter?.type;
71
+ if (currentParameter === undefined ||
72
+ previousType === undefined ||
73
+ currentType === undefined ||
74
+ !primitiveParameterTypes.has(previousType.kind) ||
75
+ Boolean(parameter.questionToken) !== Boolean(currentParameter.questionToken) ||
76
+ Boolean(parameter.dotDotDotToken) !== Boolean(currentParameter.dotDotDotToken)) {
77
+ return false;
78
+ }
79
+ return (currentType.kind === previousType.kind ||
80
+ (ts.isUnionTypeNode(currentType) &&
81
+ currentType.types.some((type) => type.kind === previousType.kind)));
82
+ });
83
+ }
40
84
  /** Convert the extractor's name-free display signature into a call signature for the checker. */
41
85
  function toCallSignature(signature) {
42
86
  // The display normalizer is not string-literal-aware; avoid proving compatibility from it.