intentpatch 0.8.0 → 0.9.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 (29) hide show
  1. package/README.ko.md +45 -11
  2. package/README.md +46 -11
  3. package/dist/application/rules/added-dependency-usage-rule.js +2 -2
  4. package/dist/application/rules/added-dependency-usage-rule.js.map +1 -1
  5. package/dist/application/rules/npm-workspace-dependency-rule.d.ts +1 -1
  6. package/dist/application/rules/npm-workspace-dependency-rule.d.ts.map +1 -1
  7. package/dist/application/rules/npm-workspace-dependency-rule.js +30 -14
  8. package/dist/application/rules/npm-workspace-dependency-rule.js.map +1 -1
  9. package/dist/application/rules/package-json-workspace-dependency-rule.d.ts +5 -0
  10. package/dist/application/rules/package-json-workspace-dependency-rule.d.ts.map +1 -0
  11. package/dist/application/rules/package-json-workspace-dependency-rule.js +5 -0
  12. package/dist/application/rules/package-json-workspace-dependency-rule.js.map +1 -0
  13. package/dist/application/services/workspace-manifest-analysis.d.ts +1 -0
  14. package/dist/application/services/workspace-manifest-analysis.d.ts.map +1 -1
  15. package/dist/application/services/workspace-manifest-analysis.js +2 -2
  16. package/dist/application/services/workspace-manifest-analysis.js.map +1 -1
  17. package/dist/infrastructure/config/write-change-contract.d.ts +4 -0
  18. package/dist/infrastructure/config/write-change-contract.d.ts.map +1 -0
  19. package/dist/infrastructure/config/write-change-contract.js +24 -0
  20. package/dist/infrastructure/config/write-change-contract.js.map +1 -0
  21. package/dist/presentation/analyze-repository.js +2 -2
  22. package/dist/presentation/analyze-repository.js.map +1 -1
  23. package/dist/presentation/cli/arguments.d.ts +13 -1
  24. package/dist/presentation/cli/arguments.d.ts.map +1 -1
  25. package/dist/presentation/cli/arguments.js +82 -0
  26. package/dist/presentation/cli/arguments.js.map +1 -1
  27. package/dist/presentation/cli/main.js +34 -0
  28. package/dist/presentation/cli/main.js.map +1 -1
  29. package/package.json +1 -1
package/README.ko.md CHANGED
@@ -19,9 +19,24 @@ IntentPatch는 이러한 질문에 답하기 위해 **Git diff, 정적 분석,
19
19
  LLM 없이도 재현 가능한 분석을 제공하고, AI 설명 기능은 선택적으로 결합하는 것을 목표로
20
20
  합니다.
21
21
 
22
+ ## 실제 보고서 바로 보기
23
+
24
+ 저장소를 복제한 뒤 실제 커밋 하나를 분석하는 명령을 실행합니다.
25
+
26
+ ```bash
27
+ git clone https://github.com/xx2xxjaeil/intent-patch.git
28
+ cd intent-patch
29
+ npx --yes intentpatch@0.9.0 analyze --base '1cc489b^' --head 1cc489b --format html --output intentpatch-report.html
30
+ ```
31
+
32
+ 생성된 `intentpatch-report.html`을 로컬 브라우저에서 여세요. 이 변경에서는 나중에 수정된
33
+ 공개 API 위험과 중복 코드 후보가 보고됩니다. 판단 근거는 [실제 변경 사례](./docs/real-world-evaluation.md)에
34
+ 정리했고, [저장된 HTML 보고서](./docs/examples/intent-input-change.html)도 확인할 수 있습니다.
35
+ GitHub에서는 HTML 화면 대신 소스가 보일 수 있습니다.
36
+
22
37
  ## 빠른 시작
23
38
 
24
- Node.js 20 이상과 Git이 설치되어 있어야 합니다. npm에 공개된 v0.8.0은 전역 설치 없이
39
+ Node.js 20 이상과 Git이 설치되어 있어야 합니다. npm에 공개된 v0.9.0은 전역 설치 없이
25
40
  실행할 수 있습니다.
26
41
 
27
42
  ```bash
@@ -67,7 +82,7 @@ jobs:
67
82
 
68
83
  - name: Analyze pull request
69
84
  id: intentpatch
70
- uses: xx2xxjaeil/intent-patch@v0.8.0
85
+ uses: xx2xxjaeil/intent-patch@v0.9.0
71
86
  with:
72
87
  fail-on: high
73
88
 
@@ -79,8 +94,9 @@ jobs:
79
94
  path: intentpatch-report
80
95
  ```
81
96
 
82
- Action은 릴리스 버전이나 불변 commit SHA로 고정하는 방식을 권장합니다. v0.8.0에는 Yarn 4
83
- lockfile 분석, 소스와 테스트의 명시적 연결, 보고서 필터와 영향 그래프 탐색 개선이 포함됩니다.
97
+ Action은 릴리스 버전이나 불변 commit SHA로 고정하는 방식을 권장합니다. v0.9.0에는 Yarn
98
+ workspace dependency 분석과 Change Contract를 안전하게 만드는 `init` 명령이 추가되었습니다.
99
+ Yarn 4 lockfile 분석, 소스와 테스트의 명시적 연결, 보고서 필터와 영향 그래프 탐색 개선,
84
100
  패키지 진입점 기준 공개 API 경고, 삭제된 모듈의 이전 import 영향 분석, 선택적 Claude Code·Codex·Cursor
85
101
  Hook도 사용할 수 있습니다. 공개 API 규칙의 별도 외부 평가 결과와 한계는
86
102
  [평가 보고서](./docs/external-repository-evaluation.md)에 기록했습니다. `@main`은 미릴리스 변경을 따라갑니다.
@@ -147,9 +163,9 @@ LOW 구현체가 하나뿐인 추상화 추가
147
163
 
148
164
  ## 현재 구현된 기능
149
165
 
150
- 현재 소스는 Git 변경사항 수집, 루트·npm workspace `package.json`의 직접 dependency와 npm lockfile 분석, TypeScript
151
- 최상위 TypeScript·JavaScript 심볼과 공개 export 변경 분석, 기존 구현 중복·단일 구현 추상화 신호, import graph 기반
152
- 영향 범위와 테스트 동반 변경 분석을 제공합니다.
166
+ CLI는 Git 변경사항, 루트 및 npm·pnpm·Yarn workspace manifest의 직접 dependency,
167
+ lockfile 변경, 최상위 TypeScript·JavaScript 심볼과 공개 export, 기존 구현 중복·단일 구현
168
+ 추상화 신호, import graph 기반 영향 범위와 테스트 동반 변경을 분석합니다.
153
169
 
154
170
  - `HEAD`와 현재 working tree 비교
155
171
  - 두 Git reference 또는 브랜치 비교
@@ -170,6 +186,7 @@ LOW 구현체가 하나뿐인 추상화 추가
170
186
  - pnpm `pnpm-lock.yaml` v9의 레지스트리 패키지 추가·삭제·버전 변경 비교(2개 문서 형식 포함)
171
187
  - 잘못되었거나 미지원인 lockfile을 누락하지 않고 finding으로 보고
172
188
  - 루트 `workspaces` 패턴에 속한 변경 manifest의 직접 dependency를 workspace별로 보고
189
+ - 루트 `workspaces` 패턴에 속한 Yarn workspace manifest 변경도 분석하고 Yarn 근거를 표시
173
190
  - `pnpm-workspace.yaml`의 포함·제외 패턴에 속한 변경 manifest의 직접 dependency를 보고
174
191
  - workspace 설정 변경과 manifest의 workspace 안팎 이동을 탐지
175
192
  - finding 심각도(`high`, `medium`, `low`) 집계
@@ -263,6 +280,21 @@ intentpatch analyze --intent-file request.md --format html --output report.html
263
280
 
264
281
  ### Change Contract로 요청 범위 검사
265
282
 
283
+ `intentpatch init` 명령은 기존 파일을 덮어쓰지 않고 `.intentpatch.json`을 생성합니다.
284
+ 자연어 요청만으로 경로를 추측하지 않으므로 이번 작업의 실제 경로를 전달하세요.
285
+
286
+ ```bash
287
+ intentpatch init \
288
+ --intent "회원 탈퇴 기능 구현" \
289
+ --include 'src/user/**' --include 'tests/user/**' \
290
+ --allow package.json \
291
+ --test-source 'src/**/*.ts' --test-file 'tests/**/*.test.ts'
292
+ ```
293
+
294
+ 인자 없이 실행하면 비어 있지만 유효한 계약을 생성합니다. `scope.include` 경로를 지정하기
295
+ 전까지 범위 검사는 꺼져 있고, 테스트 변경 검사는 `--test-source`와 `--test-file`을 함께
296
+ 지정해야 켜집니다. 다른 디렉터리는 `--cwd`로 지정합니다. 이 명령은 v0.9.0부터 제공됩니다.
297
+
266
298
  분석할 저장소의 `.intentpatch.json`에 이번 요청의 기대 범위를 선언할 수 있습니다.
267
299
 
268
300
  ```json
@@ -444,7 +476,7 @@ npm pack --dry-run
444
476
 
445
477
  ## 릴리스
446
478
 
447
- `v0.8.0`처럼 `package.json` 버전과 일치하는 태그를 기본 브랜치의 커밋에 push하면 릴리스
479
+ `v0.9.0`처럼 `package.json` 버전과 일치하는 태그를 기본 브랜치의 커밋에 push하면 릴리스
448
480
  워크플로가 다음 작업을 순서대로 수행합니다.
449
481
 
450
482
  1. 태그·버전·기본 브랜치 포함 여부 검증
@@ -472,7 +504,7 @@ npm provenance가 자동 생성됩니다. 아직 npm에 존재하지 않는 신
472
504
  - ✅ pnpm `pnpm-lock.yaml` v9의 레지스트리 패키지 변경
473
505
  - ✅ pnpm workspace manifest의 직접 dependency 변경
474
506
  - ✅ Yarn 4 metadata-v8 `yarn.lock` 레지스트리 패키지 변경
475
- - Yarn workspace manifest 변경은 미구현
507
+ - ✅ Yarn workspace manifest의 직접 dependency 변경
476
508
  7. ✅ 직접 export된 공개 심볼 삭제와 export 해제 탐지
477
509
  - ✅ JavaScript ESM의 이름 있는 export·default export 삭제 탐지
478
510
  8. ✅ 단일 HTML 대시보드와 SVG 기반 dependency 영향 그래프
@@ -490,7 +522,7 @@ npm provenance가 자동 생성됩니다. 아직 npm에 존재하지 않는 신
490
522
  - 분석 대상은 최소 한 번 이상 커밋된 Git 저장소여야 합니다.
491
523
  - untracked symbolic link는 안전을 위해 내용을 읽지 않습니다.
492
524
  - 10 MiB를 초과하는 untracked 파일은 라인 수를 측정하지 않습니다.
493
- - 직접 dependency 선언 분석은 저장소 루트와 변경된 npm·pnpm workspace `package.json`의
525
+ - 직접 dependency 선언 분석은 저장소 루트와 변경된 npm·pnpm·Yarn workspace `package.json`의
494
526
  `dependencies`와 `devDependencies`를 대상으로 합니다.
495
527
  - 정적 참조 없음 finding은 미사용 확정이 아닌 검토 후보입니다. 유지보수 대상 JS/TS
496
528
  소스의 명시적 import·re-export·문자열 `require()`·`import()`를 살펴봅니다. CLI나 설정
@@ -501,8 +533,10 @@ npm provenance가 자동 생성됩니다. 아직 npm에 존재하지 않는 신
501
533
  - pnpm `pnpm-lock.yaml` v9은 프로젝트 문서의 레지스트리 패키지 ID와 버전을 비교합니다.
502
534
  integrity만 바뀐 경우, 로컬·Git 패키지, snapshot의 peer 변형, 부모 dependency 귀속은 분석하지 않습니다.
503
535
  루트의 직접 dependency 여부는 루트 importer를 기준으로 표시합니다.
504
- - workspace 판별은 루트의 npm `workspaces` 배열과 명시 경로, `*`·`**`·`?` 패턴을 지원합니다.
536
+ - npm·Yarn workspace 판별은 루트의 `workspaces` 배열과 명시 경로, `*`·`**`·`?` 패턴을 지원합니다.
505
537
  부정·중괄호·문자 클래스 패턴은 미지원 finding으로 보고합니다.
538
+ - Yarn 여부는 루트 `packageManager` 또는 `yarn.lock`으로 구분합니다. pnpm 설정이 함께
539
+ 있으면 중복 보고를 막기 위해 pnpm을 우선합니다.
506
540
  - pnpm workspace는 `pnpm-workspace.yaml`의 `packages`에 명시한 `*`·`**`·`?`와 선행 `!`
507
541
  제외 패턴을 지원합니다. npm 설정이 함께 있으면 중복 보고를 막기 위해 pnpm 설정을
508
542
  우선합니다. 그 외 glob 문법과 catalog는 해석하지 않습니다.
package/README.md CHANGED
@@ -16,9 +16,24 @@ AI coding agents such as Codex, Claude Code, and Cursor can change many files fr
16
16
 
17
17
  IntentPatch combines **Git diff analysis, static analysis, and dependency analysis** to answer those questions. Its core analysis is deterministic and works without an LLM. Optional AI explanations can be added later without making the core tool dependent on a model provider.
18
18
 
19
+ ## See a real report
20
+
21
+ Clone the repository, then run one analysis command against a real change in its history:
22
+
23
+ ```bash
24
+ git clone https://github.com/xx2xxjaeil/intent-patch.git
25
+ cd intent-patch
26
+ npx --yes intentpatch@0.9.0 analyze --base '1cc489b^' --head 1cc489b --format html --output intentpatch-report.html
27
+ ```
28
+
29
+ Open `intentpatch-report.html` locally. This case reports a public-API risk and a duplicate-code
30
+ candidate that were later fixed; [the case study](./docs/real-world-evaluation.md) explains the
31
+ review decisions. The [checked-in HTML report](./docs/examples/intent-input-change.html) is the
32
+ same real-change example, not a mockup. GitHub may show the HTML source rather than render it.
33
+
19
34
  ## Quick start
20
35
 
21
- IntentPatch requires Node.js 20 or later and Git. Run the published v0.8.0 CLI without
36
+ IntentPatch requires Node.js 20 or later and Git. Run the published v0.9.0 CLI without
22
37
  installing it globally:
23
38
 
24
39
  ```bash
@@ -62,7 +77,7 @@ jobs:
62
77
 
63
78
  - name: Analyze pull request
64
79
  id: intentpatch
65
- uses: xx2xxjaeil/intent-patch@v0.8.0
80
+ uses: xx2xxjaeil/intent-patch@v0.9.0
66
81
  with:
67
82
  fail-on: high
68
83
 
@@ -74,10 +89,11 @@ jobs:
74
89
  path: intentpatch-report
75
90
  ```
76
91
 
77
- Pin the action to a released version or an immutable commit SHA. v0.8.0 adds Yarn 4
78
- lockfile analysis, explicit source-to-test mappings, report filters, and improved impact-graph
79
- navigation. It also includes package-entrypoint-aware public API warnings, historical import
80
- impact for deleted modules, and opt-in Claude Code, Codex, and Cursor Hooks.
92
+ Pin the action to a released version or an immutable commit SHA. v0.9.0 adds Yarn workspace
93
+ dependency analysis and a safe `init` command for creating a Change Contract. It also includes
94
+ Yarn 4 lockfile analysis, explicit source-to-test mappings, report filters, improved impact-graph
95
+ navigation, package-entrypoint-aware public API warnings, historical import impact for deleted
96
+ modules, and opt-in Claude Code, Codex, and Cursor Hooks.
81
97
  See [the evaluation report](./docs/external-repository-evaluation.md) for the separately measured
82
98
  public-API rules and their limits. `@main` follows unreleased changes.
83
99
 
@@ -142,7 +158,9 @@ open the HTML file locally in a browser; GitHub may show its source rather than
142
158
 
143
159
  ## Implemented capabilities
144
160
 
145
- The current source tree analyzes Git changes, direct dependencies in the root `package.json`, top-level TypeScript and JavaScript symbols and public exports, possible duplicate implementations, single-implementation abstractions, import-graph impact, and related test changes.
161
+ The CLI analyzes Git changes, direct dependencies in the root and npm/pnpm/Yarn workspace manifests,
162
+ lockfile changes, top-level TypeScript and JavaScript symbols and public exports, possible duplicate
163
+ implementations, single-implementation abstractions, import-graph impact, and related test changes.
146
164
 
147
165
  ### Git and reporting
148
166
 
@@ -170,6 +188,7 @@ The current source tree analyzes Git changes, direct dependencies in the root `p
170
188
  - Compare resolved registry package changes in pnpm `pnpm-lock.yaml` v9, including two-document lockfiles.
171
189
  - Report malformed or unsupported lockfiles as findings rather than silently skipping them.
172
190
  - Attribute direct dependency changes to changed npm workspace manifests selected by the root `workspaces` patterns.
191
+ - Attribute changed Yarn workspace manifests using the same root `workspaces` patterns, with Yarn provenance when `packageManager` or `yarn.lock` identifies Yarn.
173
192
  - Analyze changed pnpm workspace manifests selected by `pnpm-workspace.yaml`, including exclusion patterns.
174
193
  - Report changes to workspace patterns and manifest moves into or out of a configured workspace.
175
194
  - Extract top-level named functions, classes, interfaces, and type aliases from `.ts` and `.tsx` files.
@@ -256,6 +275,22 @@ intentpatch analyze --intent-file request.md --format html --output report.html
256
275
 
257
276
  ### Check request scope with a Change Contract
258
277
 
278
+ `intentpatch init` creates `.intentpatch.json` without overwriting an
279
+ existing file. Supply actual paths for the requested change; it never guesses scope from the
280
+ request text:
281
+
282
+ ```bash
283
+ intentpatch init \
284
+ --intent "Implement account deletion" \
285
+ --include 'src/user/**' --include 'tests/user/**' \
286
+ --allow package.json \
287
+ --test-source 'src/**/*.ts' --test-file 'tests/**/*.test.ts'
288
+ ```
289
+
290
+ `init` with no options creates a valid blank contract. Scope checks remain off until you add an
291
+ expected `--include` path; test-change checks require both `--test-source` and `--test-file`.
292
+ Use `--cwd` to target another directory. This command is included in v0.9.0 and later.
293
+
259
294
  Create `.intentpatch.json` in the repository being analyzed and declare the expected scope of the request:
260
295
 
261
296
  ```json
@@ -439,7 +474,7 @@ npm pack --dry-run
439
474
 
440
475
  ## Release process
441
476
 
442
- Pushing a tag such as `v0.8.0`, matching the version in `package.json`, from a commit contained in the default branch triggers the release workflow:
477
+ Pushing a tag such as `v0.9.0`, matching the version in `package.json`, from a commit contained in the default branch triggers the release workflow:
443
478
 
444
479
  1. Validate the tag, package version, and default-branch ancestry.
445
480
  2. Run the full quality suite and inspect the npm package with a dry run.
@@ -463,7 +498,7 @@ No long-lived npm token is stored as a GitHub secret. Public packages published
463
498
  - ✅ pnpm `pnpm-lock.yaml` v9 resolved registry package changes
464
499
  - ✅ pnpm workspace manifest dependency changes
465
500
  - ✅ Yarn 4 metadata-v8 `yarn.lock` resolved registry package changes
466
- - Yarn workspace manifest changes remain open
501
+ - ✅ Yarn workspace manifest dependency changes
467
502
  7. ✅ Detection of removed public exports
468
503
  - ✅ Named and default ESM exports in JavaScript, without inferred type compatibility
469
504
  8. ✅ Standalone HTML dashboard and SVG dependency-impact graph
@@ -481,11 +516,11 @@ No long-lived npm token is stored as a GitHub secret. Public packages published
481
516
  - The target must be a Git repository with at least one commit.
482
517
  - Untracked symbolic links are not read for safety.
483
518
  - Line counts are skipped for untracked files larger than 10 MiB.
484
- - Direct dependency declarations are analyzed from `dependencies` and `devDependencies` in the root `package.json` and changed npm/pnpm workspace manifests.
519
+ - Direct dependency declarations are analyzed from `dependencies` and `devDependencies` in the root `package.json` and changed npm/pnpm/Yarn workspace manifests.
485
520
  - The no-static-reference finding is a review candidate, not proof that a package is unused. It checks explicit JS/TS imports, re-exports, literal `require()` and `import()` across maintained source files; CLI-only/configuration usage may not appear. It does not emit a candidate if source reads or parsing are incomplete, a computed module load exists, no source was scanned, or more than 5,000 source files are present.
486
521
  - npm `package-lock.json` v2/v3 analysis compares installed package paths and versions, not dependency provenance, integrity hashes, or vulnerability data. It does not attribute transitive packages to their parents.
487
522
  - pnpm `pnpm-lock.yaml` v9 analysis compares registry package IDs and versions in the project document. It ignores integrity-only edits, local/Git packages, snapshot peer variants, and dependency provenance. Root-direct evidence comes from the root importer only.
488
- - Workspace detection supports the root npm `workspaces` array with explicit paths and `*`, `**`, and `?` globs. Negation, brace, and character-class patterns are reported as unsupported.
523
+ - npm and Yarn workspace detection supports the root `workspaces` array with explicit paths and `*`, `**`, and `?` globs. Negation, brace, and character-class patterns are reported as unsupported. Yarn is identified by the root `packageManager` field or `yarn.lock`; when pnpm config also exists, pnpm takes precedence.
489
524
  - pnpm workspace detection reads `pnpm-workspace.yaml` `packages` patterns with `*`, `**`, `?`, and leading `!` exclusions. When both npm and pnpm workspace settings exist, pnpm settings take precedence to avoid duplicate findings. Other glob features and pnpm catalogs are not interpreted.
490
525
  - Yarn 4 `yarn.lock` metadata-v8 analysis compares registry package resolutions and versions.
491
526
  Yarn Classic and other metadata versions are reported as unsupported. Workspace, patch, file,
@@ -1,6 +1,6 @@
1
1
  import { isMaintainedSourcePath } from "../services/is-maintained-source-path.js";
2
- import { NpmWorkspaceDependencyRule } from "./npm-workspace-dependency-rule.js";
3
2
  import { PackageDependencyRule } from "./package-dependency-rule.js";
3
+ import { PackageJsonWorkspaceDependencyRule } from "./package-json-workspace-dependency-rule.js";
4
4
  import { PnpmWorkspaceDependencyRule } from "./pnpm-workspace-dependency-rule.js";
5
5
  const rootManifest = "package.json";
6
6
  /** 새 직접 dependency의 정적 소스 참조가 없을 때만 검토 후보를 제시한다. */
@@ -18,7 +18,7 @@ export class AddedDependencyUsageRule {
18
18
  async analyze(context) {
19
19
  const manifestFindings = (await Promise.all([
20
20
  new PackageDependencyRule(this.snapshots, rootManifest).analyze(context),
21
- new NpmWorkspaceDependencyRule(this.snapshots).analyze(context),
21
+ new PackageJsonWorkspaceDependencyRule(this.snapshots).analyze(context),
22
22
  new PnpmWorkspaceDependencyRule(this.snapshots, this.pnpmWorkspaceParser).analyze(context),
23
23
  ])).flat();
24
24
  const added = manifestFindings.filter((finding) => finding.ruleId === "dependency/new-production" ||
@@ -1 +1 @@
1
- {"version":3,"file":"added-dependency-usage-rule.js","sourceRoot":"","sources":["../../../src/application/rules/added-dependency-usage-rule.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"added-dependency-usage-rule.js","sourceRoot":"","sources":["../../../src/application/rules/added-dependency-usage-rule.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import type { Finding } from "../../domain/finding.js";
2
2
  import type { AnalysisContext, AnalysisRule } from "../ports/analysis-rule.js";
3
3
  import type { FileSnapshotSource } from "../ports/file-snapshot-source.js";
4
- /** npm workspaces에 속한 변경 manifest를 찾아 기존 직접 dependency 규칙으로 분석한다. */
4
+ /** 기존 공개 클래스명을 유지하며 package.json workspaces를 npm 또는 Yarn으로 분류한다. */
5
5
  export declare class NpmWorkspaceDependencyRule implements AnalysisRule {
6
6
  private readonly snapshots;
7
7
  constructor(snapshots: FileSnapshotSource);
@@ -1 +1 @@
1
- {"version":3,"file":"npm-workspace-dependency-rule.d.ts","sourceRoot":"","sources":["../../../src/application/rules/npm-workspace-dependency-rule.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAEvD,OAAO,KAAK,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAC/E,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AAY3E,qEAAqE;AACrE,qBAAa,0BAA2B,YAAW,YAAY;IAC1C,OAAO,CAAC,QAAQ,CAAC,SAAS;gBAAT,SAAS,EAAE,kBAAkB;IAEpD,OAAO,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,SAAS,OAAO,EAAE,CAAC;CAsD5E"}
1
+ {"version":3,"file":"npm-workspace-dependency-rule.d.ts","sourceRoot":"","sources":["../../../src/application/rules/npm-workspace-dependency-rule.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAEvD,OAAO,KAAK,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAC/E,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AAY3E,oEAAoE;AACpE,qBAAa,0BAA2B,YAAW,YAAY;IAC1C,OAAO,CAAC,QAAQ,CAAC,SAAS;gBAAT,SAAS,EAAE,kBAAkB;IAEpD,OAAO,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,SAAS,OAAO,EAAE,CAAC;CA+D5E"}
@@ -1,7 +1,7 @@
1
1
  import { isRecord } from "../../domain/value-guards.js";
2
2
  import { analyzeWorkspaceManifests, isNestedManifestChange, } from "../services/workspace-manifest-analysis.js";
3
3
  const rootManifestPath = "package.json";
4
- /** npm workspaces에 속한 변경 manifest를 찾아 기존 직접 dependency 규칙으로 분석한다. */
4
+ /** 기존 공개 클래스명을 유지하며 package.json workspaces를 npm 또는 Yarn으로 분류한다. */
5
5
  export class NpmWorkspaceDependencyRule {
6
6
  snapshots;
7
7
  constructor(snapshots) {
@@ -13,16 +13,20 @@ export class NpmWorkspaceDependencyRule {
13
13
  if (manifestChanges.length === 0 && !rootChanged) {
14
14
  return [];
15
15
  }
16
- // pnpm-workspace.yaml이 있으면 pnpm 설정이 우선한다. 동일 manifest의 finding 중복을 피한다.
16
+ // pnpm 설정이 있으면 별도 규칙이 담당한다. Yarn lockfile이 있으면 Yarn으로 귀속한다.
17
17
  const pnpmConfig = await this.snapshots.read(context.target, "pnpm-workspace.yaml");
18
18
  if (pnpmConfig.before !== undefined || pnpmConfig.after !== undefined)
19
19
  return [];
20
20
  const snapshot = await this.snapshots.read(context.target, rootManifestPath);
21
21
  const before = parseWorkspaceConfig(snapshot.before);
22
22
  const after = parseWorkspaceConfig(snapshot.after);
23
+ const yarnLock = await this.snapshots.read(context.target, "yarn.lock");
24
+ const manager = (after.ok ? after.managerHint : undefined) ??
25
+ (before.ok ? before.managerHint : undefined) ??
26
+ (yarnLock.before !== undefined || yarnLock.after !== undefined ? "yarn" : "npm");
23
27
  const errors = [
24
- ...(!before.ok ? [configFinding("base", before)] : []),
25
- ...(!after.ok ? [configFinding("current", after)] : []),
28
+ ...(!before.ok ? [configFinding("base", before, manager)] : []),
29
+ ...(!after.ok ? [configFinding("current", after, manager)] : []),
26
30
  ];
27
31
  if (errors.length > 0) {
28
32
  return errors;
@@ -33,20 +37,23 @@ export class NpmWorkspaceDependencyRule {
33
37
  const findings = [];
34
38
  if (rootChanged && JSON.stringify(before.patterns) !== JSON.stringify(after.patterns)) {
35
39
  findings.push({
36
- ruleId: "dependency/workspace-config-changed",
40
+ ruleId: manager === "yarn"
41
+ ? "dependency/yarn-workspace-config-changed"
42
+ : "dependency/workspace-config-changed",
37
43
  severity: "low",
38
- title: "npm workspace configuration changed",
44
+ title: `${manager} workspace configuration changed`,
39
45
  description: "The root package.json workspace patterns changed.",
40
46
  file: rootManifestPath,
41
47
  evidence: {
42
48
  from: JSON.stringify(before.patterns),
43
49
  to: JSON.stringify(after.patterns),
50
+ ...(manager === "yarn" ? { packageManager: manager } : {}),
44
51
  },
45
52
  });
46
53
  }
47
54
  return [
48
55
  ...findings,
49
- ...(await analyzeWorkspaceManifests(context, this.snapshots, manifestChanges, { includes: before.patterns, excludes: [] }, { includes: after.patterns, excludes: [] }, "npm")),
56
+ ...(await analyzeWorkspaceManifests(context, this.snapshots, manifestChanges, { includes: before.patterns, excludes: [] }, { includes: after.patterns, excludes: [] }, manager)),
50
57
  ];
51
58
  }
52
59
  }
@@ -64,8 +71,13 @@ function parseWorkspaceConfig(content) {
64
71
  if (!isRecord(manifest)) {
65
72
  return { ok: false, kind: "invalid", reason: "The root package.json must be an object." };
66
73
  }
74
+ const managerHint = typeof manifest.packageManager === "string" && manifest.packageManager.startsWith("yarn@")
75
+ ? "yarn"
76
+ : typeof manifest.packageManager === "string" && manifest.packageManager.startsWith("npm@")
77
+ ? "npm"
78
+ : undefined;
67
79
  if (manifest.workspaces === undefined) {
68
- return { ok: true, patterns: [] };
80
+ return { ok: true, patterns: [], ...(managerHint === undefined ? {} : { managerHint }) };
69
81
  }
70
82
  if (!Array.isArray(manifest.workspaces)) {
71
83
  return { ok: false, kind: "invalid", reason: "workspaces must be an array of paths." };
@@ -88,20 +100,24 @@ function parseWorkspaceConfig(content) {
88
100
  }
89
101
  patterns.push(pattern);
90
102
  }
91
- return { ok: true, patterns };
103
+ return { ok: true, patterns, ...(managerHint === undefined ? {} : { managerHint }) };
92
104
  }
93
- function configFinding(side, result) {
105
+ function configFinding(side, result, manager) {
94
106
  return {
95
107
  ruleId: result.kind === "invalid"
96
108
  ? "dependency/invalid-workspace-config"
97
109
  : "dependency/unsupported-workspace-pattern",
98
110
  severity: result.kind === "invalid" ? "high" : "low",
99
111
  title: result.kind === "invalid"
100
- ? "Invalid npm workspace configuration"
101
- : "Unsupported npm workspace pattern",
102
- description: `Could not analyze the ${side} npm workspaces: ${result.reason}`,
112
+ ? `Invalid ${manager} workspace configuration`
113
+ : `Unsupported ${manager} workspace pattern`,
114
+ description: `Could not analyze the ${side} ${manager} workspaces: ${result.reason}`,
103
115
  file: rootManifestPath,
104
- evidence: { side, reason: result.reason },
116
+ evidence: {
117
+ side,
118
+ reason: result.reason,
119
+ ...(manager === "yarn" ? { packageManager: manager } : {}),
120
+ },
105
121
  };
106
122
  }
107
123
  //# sourceMappingURL=npm-workspace-dependency-rule.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"npm-workspace-dependency-rule.js","sourceRoot":"","sources":["../../../src/application/rules/npm-workspace-dependency-rule.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"npm-workspace-dependency-rule.js","sourceRoot":"","sources":["../../../src/application/rules/npm-workspace-dependency-rule.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import { NpmWorkspaceDependencyRule } from "./npm-workspace-dependency-rule.js";
2
+ /** npm과 Yarn이 공유하는 package.json workspace 규칙의 명시적 이름. */
3
+ export declare class PackageJsonWorkspaceDependencyRule extends NpmWorkspaceDependencyRule {
4
+ }
5
+ //# sourceMappingURL=package-json-workspace-dependency-rule.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"package-json-workspace-dependency-rule.d.ts","sourceRoot":"","sources":["../../../src/application/rules/package-json-workspace-dependency-rule.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,0BAA0B,EAAE,MAAM,oCAAoC,CAAC;AAEhF,yDAAyD;AACzD,qBAAa,kCAAmC,SAAQ,0BAA0B;CAAG"}
@@ -0,0 +1,5 @@
1
+ import { NpmWorkspaceDependencyRule } from "./npm-workspace-dependency-rule.js";
2
+ /** npm과 Yarn이 공유하는 package.json workspace 규칙의 명시적 이름. */
3
+ export class PackageJsonWorkspaceDependencyRule extends NpmWorkspaceDependencyRule {
4
+ }
5
+ //# sourceMappingURL=package-json-workspace-dependency-rule.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"package-json-workspace-dependency-rule.js","sourceRoot":"","sources":["../../../src/application/rules/package-json-workspace-dependency-rule.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,0BAA0B,EAAE,MAAM,oCAAoC,CAAC;AAEhF,yDAAyD;AACzD,MAAM,OAAO,kCAAmC,SAAQ,0BAA0B;CAAG"}
@@ -9,4 +9,5 @@ export interface WorkspacePatterns {
9
9
  export declare function isNestedManifestChange(change: FileChange): boolean;
10
10
  /** 패키지 매니저별 설정 해석 뒤에는 같은 manifest 비교·membership 규칙을 적용한다. */
11
11
  export declare function analyzeWorkspaceManifests(context: AnalysisContext, snapshots: FileSnapshotSource, changes: readonly FileChange[], before: WorkspacePatterns, after: WorkspacePatterns, manager: "npm" | "pnpm"): Promise<Finding[]>;
12
+ export declare function analyzeWorkspaceManifests(context: AnalysisContext, snapshots: FileSnapshotSource, changes: readonly FileChange[], before: WorkspacePatterns, after: WorkspacePatterns, manager: "npm" | "pnpm" | "yarn"): Promise<Finding[]>;
12
13
  //# sourceMappingURL=workspace-manifest-analysis.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"workspace-manifest-analysis.d.ts","sourceRoot":"","sources":["../../../src/application/services/workspace-manifest-analysis.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AAM3E,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;CACtC;AAED,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAElE;AAED,6DAA6D;AAC7D,wBAAsB,yBAAyB,CAC7C,OAAO,EAAE,eAAe,EACxB,SAAS,EAAE,kBAAkB,EAC7B,OAAO,EAAE,SAAS,UAAU,EAAE,EAC9B,MAAM,EAAE,iBAAiB,EACzB,KAAK,EAAE,iBAAiB,EACxB,OAAO,EAAE,KAAK,GAAG,MAAM,GACtB,OAAO,CAAC,OAAO,EAAE,CAAC,CAgDpB"}
1
+ {"version":3,"file":"workspace-manifest-analysis.d.ts","sourceRoot":"","sources":["../../../src/application/services/workspace-manifest-analysis.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AAM3E,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;CACtC;AAED,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAElE;AAED,6DAA6D;AAC7D,wBAAgB,yBAAyB,CACvC,OAAO,EAAE,eAAe,EACxB,SAAS,EAAE,kBAAkB,EAC7B,OAAO,EAAE,SAAS,UAAU,EAAE,EAC9B,MAAM,EAAE,iBAAiB,EACzB,KAAK,EAAE,iBAAiB,EACxB,OAAO,EAAE,KAAK,GAAG,MAAM,GACtB,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;AACtB,wBAAgB,yBAAyB,CACvC,OAAO,EAAE,eAAe,EACxB,SAAS,EAAE,kBAAkB,EAC7B,OAAO,EAAE,SAAS,UAAU,EAAE,EAC9B,MAAM,EAAE,iBAAiB,EACzB,KAAK,EAAE,iBAAiB,EACxB,OAAO,EAAE,KAAK,GAAG,MAAM,GAAG,MAAM,GAC/B,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC"}
@@ -4,7 +4,6 @@ const manifestSuffix = "/package.json";
4
4
  export function isNestedManifestChange(change) {
5
5
  return isNestedManifestPath(change.path) || isNestedManifestPath(change.previousPath);
6
6
  }
7
- /** 패키지 매니저별 설정 해석 뒤에는 같은 manifest 비교·membership 규칙을 적용한다. */
8
7
  export async function analyzeWorkspaceManifests(context, snapshots, changes, before, after, manager) {
9
8
  const results = await Promise.all(changes.map(async (change) => {
10
9
  const previousPath = change.kind === "renamed" ? (change.previousPath ?? change.path) : change.path;
@@ -28,6 +27,7 @@ export async function analyzeWorkspaceManifests(context, snapshots, changes, bef
28
27
  currentPath,
29
28
  fromWorkspace: wasWorkspace,
30
29
  toWorkspace: isCurrentWorkspace,
30
+ ...(manager === "npm" ? {} : { packageManager: manager }),
31
31
  },
32
32
  },
33
33
  ]
@@ -40,7 +40,7 @@ export async function analyzeWorkspaceManifests(context, snapshots, changes, bef
40
40
  evidence: {
41
41
  ...finding.evidence,
42
42
  workspace,
43
- ...(manager === "pnpm" ? { packageManager: manager } : {}),
43
+ ...(manager === "npm" ? {} : { packageManager: manager }),
44
44
  },
45
45
  })),
46
46
  ];
@@ -1 +1 @@
1
- {"version":3,"file":"workspace-manifest-analysis.js","sourceRoot":"","sources":["../../../src/application/services/workspace-manifest-analysis.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"workspace-manifest-analysis.js","sourceRoot":"","sources":["../../../src/application/services/workspace-manifest-analysis.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { ChangeContract } from "../../domain/change-contract.js";
2
+ /** 기존 계약을 덮어쓰지 않고 새 저장소 설정만 생성한다. */
3
+ export declare function writeChangeContract(workingDirectory: string, contract: ChangeContract): Promise<string>;
4
+ //# sourceMappingURL=write-change-contract.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"write-change-contract.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/config/write-change-contract.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AAEtE,qCAAqC;AACrC,wBAAsB,mBAAmB,CACvC,gBAAgB,EAAE,MAAM,EACxB,QAAQ,EAAE,cAAc,GACvB,OAAO,CAAC,MAAM,CAAC,CAejB"}
@@ -0,0 +1,24 @@
1
+ import { writeFile } from "node:fs/promises";
2
+ import { resolve } from "node:path";
3
+ /** 기존 계약을 덮어쓰지 않고 새 저장소 설정만 생성한다. */
4
+ export async function writeChangeContract(workingDirectory, contract) {
5
+ const path = resolve(workingDirectory, ".intentpatch.json");
6
+ try {
7
+ await writeFile(path, `${JSON.stringify(contract, null, 2)}\n`, {
8
+ encoding: "utf8",
9
+ flag: "wx",
10
+ mode: 0o600,
11
+ });
12
+ }
13
+ catch (error) {
14
+ if (isAlreadyExists(error)) {
15
+ throw new Error(`Change contract already exists: ${path}`);
16
+ }
17
+ throw error;
18
+ }
19
+ return path;
20
+ }
21
+ function isAlreadyExists(error) {
22
+ return error instanceof Error && "code" in error && error.code === "EEXIST";
23
+ }
24
+ //# sourceMappingURL=write-change-contract.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"write-change-contract.js","sourceRoot":"","sources":["../../../src/infrastructure/config/write-change-contract.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGpC,qCAAqC;AACrC,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,gBAAwB,EACxB,QAAwB;IAExB,MAAM,IAAI,GAAG,OAAO,CAAC,gBAAgB,EAAE,mBAAmB,CAAC,CAAC;IAC5D,IAAI,CAAC;QACH,MAAM,SAAS,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE;YAC9D,QAAQ,EAAE,MAAM;YAChB,IAAI,EAAE,IAAI;YACV,IAAI,EAAE,KAAK;SACZ,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,eAAe,CAAC,KAAK,CAAC,EAAE,CAAC;YAC3B,MAAM,IAAI,KAAK,CAAC,mCAAmC,IAAI,EAAE,CAAC,CAAC;QAC7D,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,eAAe,CAAC,KAAc;IACrC,OAAO,KAAK,YAAY,KAAK,IAAI,MAAM,IAAI,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC;AAC9E,CAAC"}
@@ -4,8 +4,8 @@ import { DuplicateImplementationRule } from "../application/rules/duplicate-impl
4
4
  import { ExpectedScopeRule } from "../application/rules/expected-scope-rule.js";
5
5
  import { MissingTestChangeRule } from "../application/rules/missing-test-change-rule.js";
6
6
  import { NpmLockfileRule } from "../application/rules/npm-lockfile-rule.js";
7
- import { NpmWorkspaceDependencyRule } from "../application/rules/npm-workspace-dependency-rule.js";
8
7
  import { PackageDependencyRule } from "../application/rules/package-dependency-rule.js";
8
+ import { PackageJsonWorkspaceDependencyRule } from "../application/rules/package-json-workspace-dependency-rule.js";
9
9
  import { PnpmLockfileRule } from "../application/rules/pnpm-lockfile-rule.js";
10
10
  import { PnpmWorkspaceDependencyRule } from "../application/rules/pnpm-workspace-dependency-rule.js";
11
11
  import { PublicApiCompatibilityRule } from "../application/rules/public-api-compatibility-rule.js";
@@ -58,7 +58,7 @@ export async function analyzeRepository(options) {
58
58
  new NpmLockfileRule(snapshotSource, new NpmPackageLockParser()),
59
59
  new PnpmLockfileRule(snapshotSource, new PnpmYamlLockParser()),
60
60
  new YarnLockfileRule(snapshotSource, new YarnYamlLockParser()),
61
- new NpmWorkspaceDependencyRule(snapshotSource),
61
+ new PackageJsonWorkspaceDependencyRule(snapshotSource),
62
62
  new PnpmWorkspaceDependencyRule(snapshotSource, pnpmWorkspaceParser),
63
63
  new ExpectedScopeRule(),
64
64
  new ChangeBudgetRule(),
@@ -1 +1 @@
1
- {"version":3,"file":"analyze-repository.js","sourceRoot":"","sources":["../../src/presentation/analyze-repository.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"analyze-repository.js","sourceRoot":"","sources":["../../src/presentation/analyze-repository.ts"],"names":[],"mappings":"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"}
@@ -12,6 +12,18 @@ export interface AnalyzeCommandOptions {
12
12
  readonly outputPath?: string;
13
13
  readonly failOn?: Severity;
14
14
  }
15
+ export interface InitCommandOptions {
16
+ readonly command: "init";
17
+ readonly workingDirectory: string;
18
+ readonly intent?: string;
19
+ readonly include: readonly string[];
20
+ readonly allow: readonly string[];
21
+ readonly maxFiles?: number;
22
+ readonly maxLines?: number;
23
+ readonly testSources: readonly string[];
24
+ readonly testFiles: readonly string[];
25
+ readonly testExcludes: readonly string[];
26
+ }
15
27
  export interface HelpCommandOptions {
16
28
  readonly command: "help";
17
29
  }
@@ -33,7 +45,7 @@ export interface CursorHookCommandOptions {
33
45
  readonly command: "cursor-hook";
34
46
  readonly action: CursorHookAction;
35
47
  }
36
- export type CliOptions = AnalyzeCommandOptions | ClaudeHookCommandOptions | CodexHookCommandOptions | CursorHookCommandOptions | HelpCommandOptions | VersionCommandOptions;
48
+ export type CliOptions = AnalyzeCommandOptions | InitCommandOptions | ClaudeHookCommandOptions | CodexHookCommandOptions | CursorHookCommandOptions | HelpCommandOptions | VersionCommandOptions;
37
49
  export declare class CliUsageError extends Error {
38
50
  constructor(message: string);
39
51
  }
@@ -1 +1 @@
1
- {"version":3,"file":"arguments.d.ts","sourceRoot":"","sources":["../../../src/presentation/cli/arguments.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,QAAQ,EAAc,MAAM,yBAAyB,CAAC;AAEpE,eAAO,MAAM,aAAa,mCAAoC,CAAC;AAE/D,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC;AAE1D,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,OAAO,EAAE,SAAS,CAAC;IAC5B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IACpC,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAC;IACpC,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,MAAM,CAAC,EAAE,QAAQ,CAAC;CAC5B;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,OAAO,EAAE,SAAS,CAAC;CAC7B;AAED,MAAM,MAAM,gBAAgB,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,CAAC;AAE/D,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC;IAChC,QAAQ,CAAC,MAAM,EAAE,gBAAgB,CAAC;CACnC;AAED,MAAM,MAAM,eAAe,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,CAAC;AAE9D,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,OAAO,EAAE,YAAY,CAAC;IAC/B,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC;CAClC;AAED,MAAM,MAAM,gBAAgB,GAAG,SAAS,GAAG,SAAS,CAAC;AAErD,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC;IAChC,QAAQ,CAAC,MAAM,EAAE,gBAAgB,CAAC;CACnC;AAED,MAAM,MAAM,UAAU,GAClB,qBAAqB,GACrB,wBAAwB,GACxB,uBAAuB,GACvB,wBAAwB,GACxB,kBAAkB,GAClB,qBAAqB,CAAC;AAE1B,qBAAa,aAAc,SAAQ,KAAK;gBACnB,OAAO,EAAE,MAAM;CAInC;AAED,wBAAgB,cAAc,CAC5B,UAAU,EAAE,SAAS,MAAM,EAAE,EAC7B,gBAAgB,EAAE,MAAM,GACvB,UAAU,CAoGZ;AAED,wBAAgB,QAAQ,IAAI,MAAM,CA0BjC"}
1
+ {"version":3,"file":"arguments.d.ts","sourceRoot":"","sources":["../../../src/presentation/cli/arguments.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,QAAQ,EAAc,MAAM,yBAAyB,CAAC;AAEpE,eAAO,MAAM,aAAa,mCAAoC,CAAC;AAE/D,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC;AAE1D,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,OAAO,EAAE,SAAS,CAAC;IAC5B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IACpC,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAC;IACpC,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,MAAM,CAAC,EAAE,QAAQ,CAAC;CAC5B;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,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;IAC3B,QAAQ,CAAC,WAAW,EAAE,SAAS,MAAM,EAAE,CAAC;IACxC,QAAQ,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,CAAC;IACtC,QAAQ,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;CAC1C;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,OAAO,EAAE,SAAS,CAAC;CAC7B;AAED,MAAM,MAAM,gBAAgB,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,CAAC;AAE/D,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC;IAChC,QAAQ,CAAC,MAAM,EAAE,gBAAgB,CAAC;CACnC;AAED,MAAM,MAAM,eAAe,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,CAAC;AAE9D,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,OAAO,EAAE,YAAY,CAAC;IAC/B,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC;CAClC;AAED,MAAM,MAAM,gBAAgB,GAAG,SAAS,GAAG,SAAS,CAAC;AAErD,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC;IAChC,QAAQ,CAAC,MAAM,EAAE,gBAAgB,CAAC;CACnC;AAED,MAAM,MAAM,UAAU,GAClB,qBAAqB,GACrB,kBAAkB,GAClB,wBAAwB,GACxB,uBAAuB,GACvB,wBAAwB,GACxB,kBAAkB,GAClB,qBAAqB,CAAC;AAE1B,qBAAa,aAAc,SAAQ,KAAK;gBACnB,OAAO,EAAE,MAAM;CAInC;AAED,wBAAgB,cAAc,CAC5B,UAAU,EAAE,SAAS,MAAM,EAAE,EAC7B,gBAAgB,EAAE,MAAM,GACvB,UAAU,CAuGZ;AAED,wBAAgB,QAAQ,IAAI,MAAM,CAmCjC"}
@@ -14,6 +14,9 @@ export function parseArguments(arguments_, currentDirectory) {
14
14
  return { command: "version" };
15
15
  }
16
16
  const [command, ...options] = arguments_;
17
+ if (command === "init") {
18
+ return parseInitOptions(options, currentDirectory);
19
+ }
17
20
  if (command === "claude-hook") {
18
21
  const [action] = options;
19
22
  if (options.length !== 1 ||
@@ -104,6 +107,7 @@ export function helpText() {
104
107
 
105
108
  Usage:
106
109
  intentpatch analyze [options]
110
+ intentpatch init [options] Create .intentpatch.json without overwriting it
107
111
  intentpatch claude-hook <capture|analyze|clear> Read Claude Code hook JSON from stdin
108
112
  intentpatch codex-hook <capture|analyze|clear> Read Codex hook JSON from stdin
109
113
  intentpatch cursor-hook <capture|analyze> Read Cursor hook JSON from stdin
@@ -122,10 +126,88 @@ Options:
122
126
  Write the report to a file instead of standard output
123
127
  --fail-on <severity>
124
128
  Exit with code 1 for findings at or above high, medium, or low
129
+ init --intent <text> Requested change (optional)
130
+ init --include <pattern> Expected path; repeatable (enables scope checks)
131
+ init --allow <pattern> Allowed exception; repeatable
132
+ init --max-files <number> Maximum changed files
133
+ init --max-lines <number> Maximum changed lines
134
+ init --test-source <pattern> Source path requiring a test change; repeatable
135
+ init --test-file <pattern> Test file path; repeatable
136
+ init --test-exclude <pattern> Excluded source path; repeatable
125
137
  -v, --version Show the installed IntentPatch version
126
138
  -h, --help Show this help
127
139
  `;
128
140
  }
141
+ function parseInitOptions(options, currentDirectory) {
142
+ let workingDirectory = currentDirectory;
143
+ let intent;
144
+ const include = [];
145
+ const allow = [];
146
+ let maxFiles;
147
+ let maxLines;
148
+ const testSources = [];
149
+ const testFiles = [];
150
+ const testExcludes = [];
151
+ for (let index = 0; index < options.length; index += 1) {
152
+ const option = options[index];
153
+ switch (option) {
154
+ case "--cwd":
155
+ workingDirectory = requireOptionValue(options, ++index, option);
156
+ break;
157
+ case "--intent":
158
+ intent = requireOptionValue(options, ++index, option);
159
+ break;
160
+ case "--include":
161
+ include.push(requireOptionValue(options, ++index, option));
162
+ break;
163
+ case "--allow":
164
+ allow.push(requireOptionValue(options, ++index, option));
165
+ break;
166
+ case "--max-files":
167
+ maxFiles = parseBudget(requireOptionValue(options, ++index, option), option);
168
+ break;
169
+ case "--max-lines":
170
+ maxLines = parseBudget(requireOptionValue(options, ++index, option), option);
171
+ break;
172
+ case "--test-source":
173
+ testSources.push(requireOptionValue(options, ++index, option));
174
+ break;
175
+ case "--test-file":
176
+ testFiles.push(requireOptionValue(options, ++index, option));
177
+ break;
178
+ case "--test-exclude":
179
+ testExcludes.push(requireOptionValue(options, ++index, option));
180
+ break;
181
+ default:
182
+ throw new CliUsageError(`Unknown init option: ${option ?? ""}`);
183
+ }
184
+ }
185
+ if ((testSources.length === 0) !== (testFiles.length === 0)) {
186
+ throw new CliUsageError("--test-source and --test-file must be used together");
187
+ }
188
+ if (testExcludes.length > 0 && testSources.length === 0) {
189
+ throw new CliUsageError("--test-exclude requires --test-source and --test-file");
190
+ }
191
+ return {
192
+ command: "init",
193
+ workingDirectory,
194
+ ...(intent === undefined ? {} : { intent }),
195
+ include,
196
+ allow,
197
+ ...(maxFiles === undefined ? {} : { maxFiles }),
198
+ ...(maxLines === undefined ? {} : { maxLines }),
199
+ testSources,
200
+ testFiles,
201
+ testExcludes,
202
+ };
203
+ }
204
+ function parseBudget(value, option) {
205
+ const number = Number(value);
206
+ if (!/^(0|[1-9]\d*)$/u.test(value) || !Number.isSafeInteger(number)) {
207
+ throw new CliUsageError(`${option} must be a non-negative integer`);
208
+ }
209
+ return number;
210
+ }
129
211
  function parseOutputFormat(value) {
130
212
  if (outputFormats.some((format) => format === value)) {
131
213
  return value;
@@ -1 +1 @@
1
- {"version":3,"file":"arguments.js","sourceRoot":"","sources":["../../../src/presentation/cli/arguments.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"arguments.js","sourceRoot":"","sources":["../../../src/presentation/cli/arguments.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,9 @@
1
1
  #!/usr/bin/env node
2
2
  import { readFile } from "node:fs/promises";
3
3
  import process from "node:process";
4
+ import { createChangeContract } from "../../domain/change-contract.js";
4
5
  import { TextIntentLoader } from "../../infrastructure/config/text-intent-loader.js";
6
+ import { writeChangeContract } from "../../infrastructure/config/write-change-contract.js";
5
7
  import { GitPrivateAgentIntentStore } from "../../infrastructure/git/git-private-agent-intent-store.js";
6
8
  import { GitPrivateAgentReportWriter } from "../../infrastructure/git/git-private-agent-report-writer.js";
7
9
  import { CommandExecutionError } from "../../infrastructure/process/command-runner.js";
@@ -26,6 +28,38 @@ async function main() {
26
28
  process.stdout.write(`IntentPatch ${await readPackageVersion()}\n`);
27
29
  return;
28
30
  }
31
+ if (options.command === "init") {
32
+ let contract;
33
+ try {
34
+ contract = createChangeContract({
35
+ ...(options.intent === undefined ? {} : { intent: options.intent }),
36
+ scope: {
37
+ include: options.include,
38
+ allow: options.allow,
39
+ ...(options.maxFiles === undefined ? {} : { maxFiles: options.maxFiles }),
40
+ ...(options.maxLines === undefined ? {} : { maxLines: options.maxLines }),
41
+ },
42
+ ...(options.testSources.length === 0
43
+ ? {}
44
+ : {
45
+ tests: {
46
+ requireFor: options.testSources,
47
+ include: options.testFiles,
48
+ exclude: options.testExcludes,
49
+ },
50
+ }),
51
+ });
52
+ }
53
+ catch (error) {
54
+ throw new CliUsageError(error instanceof Error ? error.message : String(error));
55
+ }
56
+ const path = await writeChangeContract(options.workingDirectory, contract);
57
+ process.stdout.write(`IntentPatch change contract created at ${path}\n`);
58
+ if (contract.scope.include.length === 0) {
59
+ process.stdout.write("Scope checks are off until scope.include has an expected path.\n");
60
+ }
61
+ return;
62
+ }
29
63
  if (options.command === "claude-hook") {
30
64
  const output = await runClaudeHook(options.action, await readClaudeHookInput(process.stdin), {
31
65
  store: new GitPrivateAgentIntentStore(),
@@ -1 +1 @@
1
- {"version":3,"file":"main.js","sourceRoot":"","sources":["../../../src/presentation/cli/main.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"main.js","sourceRoot":"","sources":["../../../src/presentation/cli/main.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,OAAO,MAAM,cAAc,CAAC;AACnC,OAAO,EAAuB,oBAAoB,EAAE,MAAM,iCAAiC,CAAC;AAC5F,OAAO,EAAE,gBAAgB,EAAE,MAAM,mDAAmD,CAAC;AACrF,OAAO,EAAE,mBAAmB,EAAE,MAAM,sDAAsD,CAAC;AAC3F,OAAO,EAAE,0BAA0B,EAAE,MAAM,4DAA4D,CAAC;AACxG,OAAO,EAAE,2BAA2B,EAAE,MAAM,6DAA6D,CAAC;AAC1G,OAAO,EAAE,qBAAqB,EAAE,MAAM,gDAAgD,CAAC;AACvF,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAC5E,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACzE,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAErD,KAAK,UAAU,IAAI;IACjB,IAAI,CAAC;QACH,MAAM,mBAAmB,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;QAC1C,MAAM,OAAO,GAAG,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,mBAAmB,CAAC,CAAC;QAC3E,IAAI,OAAO,CAAC,OAAO,KAAK,MAAM,EAAE,CAAC;YAC/B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;YACjC,OAAO;QACT,CAAC;QACD,IAAI,OAAO,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;YAClC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,eAAe,MAAM,kBAAkB,EAAE,IAAI,CAAC,CAAC;YACpE,OAAO;QACT,CAAC;QACD,IAAI,OAAO,CAAC,OAAO,KAAK,MAAM,EAAE,CAAC;YAC/B,IAAI,QAAwB,CAAC;YAC7B,IAAI,CAAC;gBACH,QAAQ,GAAG,oBAAoB,CAAC;oBAC9B,GAAG,CAAC,OAAO,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC;oBACnE,KAAK,EAAE;wBACL,OAAO,EAAE,OAAO,CAAC,OAAO;wBACxB,KAAK,EAAE,OAAO,CAAC,KAAK;wBACpB,GAAG,CAAC,OAAO,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC;wBACzE,GAAG,CAAC,OAAO,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC;qBAC1E;oBACD,GAAG,CAAC,OAAO,CAAC,WAAW,CAAC,MAAM,KAAK,CAAC;wBAClC,CAAC,CAAC,EAAE;wBACJ,CAAC,CAAC;4BACE,KAAK,EAAE;gCACL,UAAU,EAAE,OAAO,CAAC,WAAW;gCAC/B,OAAO,EAAE,OAAO,CAAC,SAAS;gCAC1B,OAAO,EAAE,OAAO,CAAC,YAAY;6BAC9B;yBACF,CAAC;iBACP,CAAC,CAAC;YACL,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,IAAI,aAAa,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;YAClF,CAAC;YACD,MAAM,IAAI,GAAG,MAAM,mBAAmB,CAAC,OAAO,CAAC,gBAAgB,EAAE,QAAQ,CAAC,CAAC;YAC3E,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,0CAA0C,IAAI,IAAI,CAAC,CAAC;YACzE,IAAI,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACxC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,kEAAkE,CAAC,CAAC;YAC3F,CAAC;YACD,OAAO;QACT,CAAC;QACD,IAAI,OAAO,CAAC,OAAO,KAAK,aAAa,EAAE,CAAC;YACtC,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,mBAAmB,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;gBAC3F,KAAK,EAAE,IAAI,0BAA0B,EAAE;gBACvC,OAAO,EAAE,iBAAiB;aAC3B,CAAC,CAAC;YACH,IAAI,MAAM,KAAK,SAAS;gBAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YACvD,OAAO;QACT,CAAC;QACD,IAAI,OAAO,CAAC,OAAO,KAAK,YAAY,EAAE,CAAC;YACrC,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,kBAAkB,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;gBACzF,KAAK,EAAE,IAAI,0BAA0B,EAAE;gBACvC,OAAO,EAAE,iBAAiB;aAC3B,CAAC,CAAC;YACH,IAAI,MAAM,KAAK,SAAS;gBAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YACvD,OAAO;QACT,CAAC;QACD,IAAI,OAAO,CAAC,OAAO,KAAK,aAAa,EAAE,CAAC;YACtC,MAAM,MAAM,GAAG,IAAI,2BAA2B,EAAE,CAAC;YACjD,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,kBAAkB,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;gBAC1F,KAAK,EAAE,IAAI,0BAA0B,EAAE;gBACvC,OAAO,EAAE,iBAAiB;gBAC1B,WAAW,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC;aAC9D,CAAC,CAAC;YACH,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YACpC,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS;gBAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,MAAM,IAAI,CAAC,CAAC;YAC5E,OAAO;QACT,CAAC;QAED,MAAM,cAAc,GAClB,OAAO,CAAC,cAAc,KAAK,SAAS;YAClC,CAAC,CAAC,SAAS;YACX,CAAC,CAAC,MAAM,IAAI,gBAAgB,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC;QAC1F,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC;YACrC,gBAAgB,EAAE,OAAO,CAAC,gBAAgB;YAC1C,GAAG,CAAC,cAAc,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,CAAC;YAC3D,GAAG,CAAC,OAAO,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC;YACtE,GAAG,CAAC,OAAO,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC;YACtE,GAAG,CAAC,OAAO,CAAC,iBAAiB,KAAK,SAAS;gBACzC,CAAC,CAAC,EAAE;gBACJ,CAAC,CAAC,EAAE,iBAAiB,EAAE,OAAO,CAAC,iBAAiB,EAAE,CAAC;SACtD,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;QAC1D,IAAI,OAAO,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;YACrC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAC/B,CAAC;aAAM,CAAC;YACN,MAAM,WAAW,GAAG,MAAM,eAAe,CAAC,MAAM,EAAE,OAAO,CAAC,UAAU,EAAE,mBAAmB,CAAC,CAAC;YAC3F,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,iCAAiC,WAAW,IAAI,CAAC,CAAC;QACzE,CAAC;QAED,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS,IAAI,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YACtF,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACvB,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAChD,OAAO,CAAC,QAAQ,GAAG,KAAK,YAAY,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5D,CAAC;AACH,CAAC;AAED,KAAK,UAAU,kBAAkB;IAC/B,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,uBAAuB,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACrE,MAAM,eAAe,GAAY,IAAI,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC;IAChF,IAAI,CAAC,iBAAiB,CAAC,eAAe,CAAC,EAAE,CAAC;QACxC,MAAM,IAAI,KAAK,CAAC,+DAA+D,CAAC,CAAC;IACnF,CAAC;IACD,OAAO,eAAe,CAAC,OAAO,CAAC;AACjC,CAAC;AAED,SAAS,iBAAiB,CAAC,KAAc;IACvC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,CAAC,SAAS,IAAI,KAAK,CAAC,EAAE,CAAC;QACzE,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,OAAO,KAAK,CAAC,OAAO,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;AAC9E,CAAC;AAED,SAAS,WAAW,CAAC,KAAc;IACjC,IAAI,KAAK,YAAY,aAAa,EAAE,CAAC;QACnC,OAAO,GAAG,KAAK,CAAC,OAAO,OAAO,QAAQ,EAAE,EAAE,CAAC;IAC7C,CAAC;IACD,IAAI,KAAK,YAAY,qBAAqB,EAAE,CAAC;QAC3C,OAAO,uBAAuB,KAAK,CAAC,OAAO,EAAE,CAAC;IAChD,CAAC;IACD,OAAO,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAChE,CAAC;AAED,MAAM,IAAI,EAAE,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "intentpatch",
3
- "version": "0.8.0",
3
+ "version": "0.9.0",
4
4
  "description": "Evidence-based change scope analysis for AI-authored code patches.",
5
5
  "license": "MIT",
6
6
  "repository": {