@einja/dev-cli 0.1.44 → 0.1.48

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 (45) hide show
  1. package/README.md +0 -1
  2. package/dist/cli.js +0 -1
  3. package/dist/cli.js.map +1 -1
  4. package/dist/commands/sync.d.ts.map +1 -1
  5. package/dist/commands/sync.js +51 -31
  6. package/dist/commands/sync.js.map +1 -1
  7. package/dist/commands/sync.test.js +1 -1
  8. package/dist/commands/sync.test.js.map +1 -1
  9. package/dist/lib/sync/file-filter.d.ts.map +1 -1
  10. package/dist/lib/sync/file-filter.js +51 -2
  11. package/dist/lib/sync/file-filter.js.map +1 -1
  12. package/dist/lib/sync/file-filter.test.js +60 -0
  13. package/dist/lib/sync/file-filter.test.js.map +1 -1
  14. package/dist/lib/sync/json-processor.d.ts +49 -27
  15. package/dist/lib/sync/json-processor.d.ts.map +1 -1
  16. package/dist/lib/sync/json-processor.js +182 -82
  17. package/dist/lib/sync/json-processor.js.map +1 -1
  18. package/dist/lib/sync/json-processor.test.d.ts +2 -0
  19. package/dist/lib/sync/json-processor.test.d.ts.map +1 -0
  20. package/dist/lib/sync/json-processor.test.js +334 -0
  21. package/dist/lib/sync/json-processor.test.js.map +1 -0
  22. package/dist/lib/sync/metadata-manager.d.ts +6 -1
  23. package/dist/lib/sync/metadata-manager.d.ts.map +1 -1
  24. package/dist/lib/sync/metadata-manager.js +26 -6
  25. package/dist/lib/sync/metadata-manager.js.map +1 -1
  26. package/dist/types/index.d.ts +0 -1
  27. package/dist/types/index.d.ts.map +1 -1
  28. package/dist/types/sync.d.ts +2 -0
  29. package/dist/types/sync.d.ts.map +1 -1
  30. package/dist/types/sync.js +1 -0
  31. package/dist/types/sync.js.map +1 -1
  32. package/package.json +1 -1
  33. package/presets/default/.claude/commands/einja/einja-sync.md +6 -6
  34. package/presets/default/docs/einja/instructions/setup-flow.md +40 -0
  35. package/presets/default/package.json +73 -0
  36. package/presets/default/preset.yaml +2 -2
  37. package/presets/default/scripts/ensure-serena.sh +26 -7
  38. package/dist/lib/sync/backup-manager.d.ts +0 -50
  39. package/dist/lib/sync/backup-manager.d.ts.map +0 -1
  40. package/dist/lib/sync/backup-manager.js +0 -117
  41. package/dist/lib/sync/backup-manager.js.map +0 -1
  42. package/dist/lib/sync/backup-manager.test.d.ts +0 -2
  43. package/dist/lib/sync/backup-manager.test.d.ts.map +0 -1
  44. package/dist/lib/sync/backup-manager.test.js +0 -155
  45. package/dist/lib/sync/backup-manager.test.js.map +0 -1
@@ -0,0 +1,334 @@
1
+ import { describe, expect, it } from "vitest";
2
+ import { JsonProcessor } from "./json-processor.js";
3
+ describe("JsonProcessor", () => {
4
+ const processor = new JsonProcessor();
5
+ const emptyPaths = { managed: {}, "project-private": {} };
6
+ describe("mergeJson - 基本動作", () => {
7
+ it("localJson が null の場合、project-private除外済みテンプレートを返す", () => {
8
+ // Given
9
+ const template = { name: "test", scripts: { build: "tsc" } };
10
+ const jsonPaths = {
11
+ managed: {},
12
+ "project-private": { "package.json": ["name"] },
13
+ };
14
+ // When
15
+ const result = processor.mergeJson(template, null, jsonPaths, "package.json");
16
+ // Then: name は project-private 除外、scripts は残る
17
+ expect(result.result).toEqual({ scripts: { build: "tsc" } });
18
+ expect(result.conflicts).toEqual([]);
19
+ });
20
+ it("戻り値が JsonMergeResult 型であること", () => {
21
+ // Given
22
+ const template = { a: 1 };
23
+ const local = { a: 1 };
24
+ // When
25
+ const result = processor.mergeJson(template, local, emptyPaths, "test.json");
26
+ // Then: result と conflicts プロパティを持つ
27
+ expect(result).toHaveProperty("result");
28
+ expect(result).toHaveProperty("conflicts");
29
+ expect(Array.isArray(result.conflicts)).toBe(true);
30
+ expect(typeof result.result).toBe("object");
31
+ });
32
+ });
33
+ describe("mergeJson - 3方向マージ", () => {
34
+ it("base→template 変更のみ → テンプレート適用", () => {
35
+ // Given: base(2) → template(3) に変更、local は未変更
36
+ const base = { a: 1, b: 2 };
37
+ const local = { a: 1, b: 2 };
38
+ const template = { a: 1, b: 3 };
39
+ // When
40
+ const result = processor.mergeJson(template, local, emptyPaths, "test.json", base);
41
+ // Then: b がテンプレート値(3)に更新される
42
+ expect(result.result).toEqual({ a: 1, b: 3 });
43
+ expect(result.conflicts).toEqual([]);
44
+ });
45
+ it("base→local 変更のみ → ローカル保持", () => {
46
+ // Given: base(2) → local(5) に変更、template は未変更
47
+ const base = { a: 1, b: 2 };
48
+ const local = { a: 1, b: 5 };
49
+ const template = { a: 1, b: 2 };
50
+ // When
51
+ const result = processor.mergeJson(template, local, emptyPaths, "test.json", base);
52
+ // Then: b はローカル値(5)を保持
53
+ expect(result.result).toEqual({ a: 1, b: 5 });
54
+ expect(result.conflicts).toEqual([]);
55
+ });
56
+ it("両方変更(異なる値)→ コンフリクト検出、ローカル保持", () => {
57
+ // Given: local(5) と template(3) が base(2) から異なる値に変更
58
+ const base = { a: 1, b: 2 };
59
+ const local = { a: 1, b: 5 };
60
+ const template = { a: 1, b: 3 };
61
+ // When
62
+ const result = processor.mergeJson(template, local, emptyPaths, "test.json", base);
63
+ // Then: ローカル値(5)を保持 + コンフリクト検出
64
+ expect(result.result).toEqual({ a: 1, b: 5 });
65
+ expect(result.conflicts).toHaveLength(1);
66
+ expect(result.conflicts[0].keyPath).toBe("b");
67
+ expect(result.conflicts[0].baseValue).toBe(2);
68
+ expect(result.conflicts[0].localValue).toBe(5);
69
+ expect(result.conflicts[0].templateValue).toBe(3);
70
+ });
71
+ it("両方変更(同じ値)→ コンフリクトなし", () => {
72
+ // Given: local と template が同じ値(3)に変更
73
+ const base = { a: 1, b: 2 };
74
+ const local = { a: 1, b: 3 };
75
+ const template = { a: 1, b: 3 };
76
+ // When
77
+ const result = processor.mergeJson(template, local, emptyPaths, "test.json", base);
78
+ // Then: コンフリクトなし
79
+ expect(result.result).toEqual({ a: 1, b: 3 });
80
+ expect(result.conflicts).toEqual([]);
81
+ });
82
+ it("ローカル削除 + テンプレート未変更 → 削除維持", () => {
83
+ // Given: ローカルで b を削除、テンプレートは未変更
84
+ const base = { a: 1, b: 2 };
85
+ const local = { a: 1 };
86
+ const template = { a: 1, b: 2 };
87
+ // When
88
+ const result = processor.mergeJson(template, local, emptyPaths, "test.json", base);
89
+ // Then: b は削除されたまま
90
+ expect(result.result).toEqual({ a: 1 });
91
+ expect(result.conflicts).toEqual([]);
92
+ });
93
+ it("ローカル削除 + テンプレート変更 → コンフリクト(ローカル=削除を保持)", () => {
94
+ // Given: ローカルで b を削除、テンプレートで b を変更
95
+ const base = { a: 1, b: 2 };
96
+ const local = { a: 1 };
97
+ const template = { a: 1, b: 3 };
98
+ // When
99
+ const result = processor.mergeJson(template, local, emptyPaths, "test.json", base);
100
+ // Then: コンフリクト検出、b は削除されたまま(ローカルの削除を保持)
101
+ expect(result.result).toEqual({ a: 1 });
102
+ expect(result.conflicts).toHaveLength(1);
103
+ expect(result.conflicts[0].keyPath).toBe("b");
104
+ expect(result.conflicts[0].localValue).toBeUndefined();
105
+ expect(result.conflicts[0].templateValue).toBe(3);
106
+ });
107
+ it("テンプレートで新キー追加 → 追加", () => {
108
+ // Given: template に新キー b を追加
109
+ const base = { a: 1 };
110
+ const local = { a: 1 };
111
+ const template = { a: 1, b: 2 };
112
+ // When
113
+ const result = processor.mergeJson(template, local, emptyPaths, "test.json", base);
114
+ // Then: b がローカルに追加される
115
+ expect(result.result).toEqual({ a: 1, b: 2 });
116
+ expect(result.conflicts).toEqual([]);
117
+ });
118
+ it("ローカルで新キー追加 → 保持", () => {
119
+ // Given: local に独自キー c を追加
120
+ const base = { a: 1 };
121
+ const local = { a: 1, c: 3 };
122
+ const template = { a: 1 };
123
+ // When
124
+ const result = processor.mergeJson(template, local, emptyPaths, "test.json", base);
125
+ // Then: c はローカルに保持される
126
+ expect(result.result).toEqual({ a: 1, c: 3 });
127
+ expect(result.conflicts).toEqual([]);
128
+ });
129
+ it("テンプレートでキー削除 + ローカル未変更 → 削除", () => {
130
+ // Given: template で b を削除、local は未変更
131
+ const base = { a: 1, b: 2 };
132
+ const local = { a: 1, b: 2 };
133
+ const template = { a: 1 };
134
+ // When
135
+ const result = processor.mergeJson(template, local, emptyPaths, "test.json", base);
136
+ // Then: b がローカルから削除される
137
+ expect(result.result).toEqual({ a: 1 });
138
+ expect(result.conflicts).toEqual([]);
139
+ });
140
+ it("テンプレートでキー削除 + ローカル変更あり → コンフリクト", () => {
141
+ // Given: template で b を削除、local で b を変更
142
+ const base = { a: 1, b: 2 };
143
+ const local = { a: 1, b: 5 };
144
+ const template = { a: 1 };
145
+ // When
146
+ const result = processor.mergeJson(template, local, emptyPaths, "test.json", base);
147
+ // Then: コンフリクト検出、ローカル値(5)を保持
148
+ expect(result.result).toEqual({ a: 1, b: 5 });
149
+ expect(result.conflicts).toHaveLength(1);
150
+ expect(result.conflicts[0].keyPath).toBe("b");
151
+ expect(result.conflicts[0].localValue).toBe(5);
152
+ expect(result.conflicts[0].templateValue).toBeUndefined();
153
+ });
154
+ it("配列値の両方変更でコンフリクトが検出されること", () => {
155
+ const base = { deps: ["a", "b"] };
156
+ const local = { deps: ["a", "b", "c"] }; // ローカルが変更
157
+ const template = { deps: ["a", "b", "d"] }; // テンプレートも変更
158
+ const result = processor.mergeJson(template, local, emptyPaths, "test.json", base);
159
+ // 両方変更で異なる値 → コンフリクト(ローカル保持)
160
+ expect(result.result.deps).toEqual(["a", "b", "c"]);
161
+ expect(result.conflicts.length).toBe(1);
162
+ expect(result.conflicts[0].keyPath).toBe("deps");
163
+ });
164
+ it("base が空オブジェクトの場合、テンプレートとローカルの新キーがすべて保持されること", () => {
165
+ const base = {};
166
+ const local = { localKey: "local" };
167
+ const template = { templateKey: "template" };
168
+ const result = processor.mergeJson(template, local, emptyPaths, "test.json", base);
169
+ // ローカルの新キー → 保持
170
+ expect(result.result.localKey).toBe("local");
171
+ // テンプレートの新キー → 追加
172
+ expect(result.result.templateKey).toBe("template");
173
+ expect(result.conflicts).toEqual([]);
174
+ });
175
+ });
176
+ describe("mergeJson - 初回sync(baseなし)", () => {
177
+ it("初回sync + ローカルにユーザー変更あり → ローカル保持", () => {
178
+ // Given: base なし、ローカルに変更あり
179
+ const template = { a: 1, b: 2, c: 3 };
180
+ const local = { a: 10, b: 20 };
181
+ const jsonPaths = { managed: {}, "project-private": {} };
182
+ // When
183
+ const result = processor.mergeJson(template, local, jsonPaths, "test.json");
184
+ // Then: a, b はローカル保持、c はテンプレートから追加
185
+ expect(result.result).toEqual({ a: 10, b: 20, c: 3 });
186
+ expect(result.conflicts).toEqual([]);
187
+ });
188
+ it("初回sync + オブジェクト型の再帰マージ", () => {
189
+ // Given: base なし、ネストされたオブジェクト
190
+ const template = { scripts: { build: "tsc", dev: "next dev" } };
191
+ const local = { scripts: { build: "vite build" } };
192
+ // When
193
+ const result = processor.mergeJson(template, local, emptyPaths, "test.json");
194
+ // Then: build はローカル保持、dev はテンプレートから追加
195
+ expect(result.result).toEqual({ scripts: { build: "vite build", dev: "next dev" } });
196
+ expect(result.conflicts).toEqual([]);
197
+ });
198
+ });
199
+ describe("mergeJson - project-private", () => {
200
+ it("project-private: テンプレートにあってもローカルに追加しない(完全除外)", () => {
201
+ // Given: name, version が project-private
202
+ const jsonPaths = {
203
+ managed: {},
204
+ "project-private": { "package.json": ["name", "version"] },
205
+ };
206
+ const template = { name: "template-name", version: "1.0.0", scripts: { build: "tsc" } };
207
+ const local = { scripts: {} };
208
+ // When
209
+ const result = processor.mergeJson(template, local, jsonPaths, "package.json");
210
+ // Then: name, version は追加されない
211
+ expect(result.result).not.toHaveProperty("name");
212
+ expect(result.result).not.toHaveProperty("version");
213
+ expect(result.result).toHaveProperty("scripts");
214
+ });
215
+ it("project-private: 初回syncでも追加しない", () => {
216
+ // Given: base なし、name が project-private
217
+ const jsonPaths = {
218
+ managed: {},
219
+ "project-private": { "package.json": ["name"] },
220
+ };
221
+ const template = { name: "template", scripts: { build: "tsc" } };
222
+ const local = {};
223
+ // When
224
+ const result = processor.mergeJson(template, local, jsonPaths, "package.json");
225
+ // Then: name は追加されない
226
+ expect(result.result).not.toHaveProperty("name");
227
+ expect(result.result).toHaveProperty("scripts");
228
+ });
229
+ it("project-private ネスト指定: devDeps.@types/node が除外される", () => {
230
+ // Given: devDeps.@types/node が project-private
231
+ const jsonPaths = {
232
+ managed: {},
233
+ "project-private": { "test.json": ["devDeps.@types/node"] },
234
+ };
235
+ const template = { devDeps: { "@types/node": "20", typescript: "5" } };
236
+ const local = { devDeps: { typescript: "4" } };
237
+ // When
238
+ const result = processor.mergeJson(template, local, jsonPaths, "test.json");
239
+ // Then: @types/node は除外(追加されない)、typescript はマージ対象
240
+ expect(result.result.devDeps).not.toHaveProperty("@types/node");
241
+ expect(result.result.devDeps.typescript).toBe("4");
242
+ });
243
+ it("project-private キーがローカルにある場合、削除されないこと", () => {
244
+ const jsonPaths = {
245
+ managed: {},
246
+ "project-private": { "package.json": ["name", "version"] },
247
+ };
248
+ const base = { name: "old-name", version: "0.1.0", scripts: { build: "tsc" } };
249
+ const local = { name: "my-project", version: "1.0.0", scripts: { build: "tsc" } };
250
+ const template = { name: "template-name", version: "2.0.0", scripts: { build: "tsc --noEmit" } };
251
+ const result = processor.mergeJson(template, local, jsonPaths, "package.json", base);
252
+ // project-private キーはローカル値がそのまま保持される
253
+ expect(result.result.name).toBe("my-project");
254
+ expect(result.result.version).toBe("1.0.0");
255
+ // scripts.build はテンプレート変更あり → テンプレート適用
256
+ expect(result.result.scripts.build).toBe("tsc --noEmit");
257
+ expect(result.conflicts).toEqual([]);
258
+ });
259
+ });
260
+ describe("mergeJson - managed", () => {
261
+ it("managed: テンプレート値で強制上書き", () => {
262
+ // Given: plansDirectory が managed
263
+ const jsonPaths = {
264
+ managed: { "settings.json": ["plansDirectory"] },
265
+ "project-private": {},
266
+ };
267
+ const template = { plansDirectory: "docs/plans", userSetting: "template" };
268
+ const local = { plansDirectory: "my-plans", userSetting: "local" };
269
+ const base = { plansDirectory: "old-plans", userSetting: "template" };
270
+ // When
271
+ const result = processor.mergeJson(template, local, jsonPaths, "settings.json", base);
272
+ // Then: plansDirectory はテンプレート値(managed)、userSetting はローカル保持
273
+ expect(result.result.plansDirectory).toBe("docs/plans");
274
+ expect(result.result.userSetting).toBe("local");
275
+ });
276
+ it("managed パスが初回sync(baseなし)でも強制上書きされること", () => {
277
+ const jsonPaths = {
278
+ managed: { "settings.json": ["plansDirectory"] },
279
+ "project-private": {},
280
+ };
281
+ const template = { plansDirectory: "docs/plans", userSetting: "template" };
282
+ const local = { plansDirectory: "my-plans", userSetting: "local" };
283
+ // base なし(初回sync)でも managed は強制上書き
284
+ const result = processor.mergeJson(template, local, jsonPaths, "settings.json");
285
+ expect(result.result.plansDirectory).toBe("docs/plans");
286
+ expect(result.result.userSetting).toBe("local"); // managed以外はローカル保持
287
+ expect(result.conflicts).toEqual([]);
288
+ });
289
+ });
290
+ describe("mergeJson - フルパスルックアップ", () => {
291
+ it(".claude/settings.json がフルパスで正しくマッチ", () => {
292
+ // Given: .claude/settings.json の plansDirectory が managed
293
+ const jsonPaths = {
294
+ managed: { ".claude/settings.json": ["plansDirectory"] },
295
+ "project-private": {},
296
+ };
297
+ const template = { plansDirectory: "docs/plans", hooks: {} };
298
+ const local = { plansDirectory: "my-plans", hooks: { custom: true } };
299
+ // When
300
+ const result = processor.mergeJson(template, local, jsonPaths, ".claude/settings.json");
301
+ // Then: plansDirectory はテンプレート値(managed)
302
+ expect(result.result.plansDirectory).toBe("docs/plans");
303
+ });
304
+ });
305
+ describe("mergeJson - ネストされたオブジェクト", () => {
306
+ it("3階層以上のネストでも3方向マージが正しく動作すること", () => {
307
+ const base = { a: { b: { c: 1, d: 2 } } };
308
+ const local = { a: { b: { c: 1, d: 5 } } }; // d を変更
309
+ const template = { a: { b: { c: 3, d: 2 } } }; // c を変更
310
+ const result = processor.mergeJson(template, local, emptyPaths, "test.json", base);
311
+ // c はテンプレート変更 → テンプレート適用
312
+ // d はローカル変更 → ローカル保持
313
+ const nested = result.result.a;
314
+ const deepNested = nested.b;
315
+ expect(deepNested.c).toBe(3);
316
+ expect(deepNested.d).toBe(5);
317
+ expect(result.conflicts).toEqual([]);
318
+ });
319
+ it("ネストされたオブジェクト内でも3方向マージが動作する", () => {
320
+ // Given: scripts オブジェクト内の各キーを個別に変更
321
+ const base = { scripts: { build: "tsc", dev: "next dev", test: "vitest" } };
322
+ const local = { scripts: { build: "tsc", dev: "next dev --turbo", test: "vitest" } };
323
+ const template = { scripts: { build: "tsc --noEmit", dev: "next dev", test: "vitest" } };
324
+ // When
325
+ const result = processor.mergeJson(template, local, emptyPaths, "test.json", base);
326
+ // Then: build → template適用(local未変更)、dev → local保持(template未変更)、test → 変更なし
327
+ expect(result.result.scripts.build).toBe("tsc --noEmit");
328
+ expect(result.result.scripts.dev).toBe("next dev --turbo");
329
+ expect(result.result.scripts.test).toBe("vitest");
330
+ expect(result.conflicts).toEqual([]);
331
+ });
332
+ });
333
+ });
334
+ //# sourceMappingURL=json-processor.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"json-processor.test.js","sourceRoot":"","sources":["../../../src/lib/sync/json-processor.test.ts"],"names":[],"mappings":"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"}
@@ -27,8 +27,13 @@ export declare class MetadataManager {
27
27
  getBaseContent(filePath: string): Promise<BaseContent>;
28
28
  /**
29
29
  * ファイルハッシュを更新する
30
+ *
31
+ * @param metadata - 現在のメタデータ
32
+ * @param filePath - 対象ファイルパス
33
+ * @param content - ファイルの内容(ハッシュ計算に使用)
34
+ * @param baseContent - 前回sync時のテンプレートコンテンツ(3方向マージ用)
30
35
  */
31
- updateFileHash(metadata: SyncMetadata, filePath: string, content: string): Promise<SyncMetadata>;
36
+ updateFileHash(metadata: SyncMetadata, filePath: string, content: string, baseContent?: string): Promise<SyncMetadata>;
32
37
  /**
33
38
  * SHA-256ハッシュを計算する(キャッシュあり)
34
39
  * 同一ファイル内容の場合、2回目以降はキャッシュから取得
@@ -1 +1 @@
1
- {"version":3,"file":"metadata-manager.d.ts","sourceRoot":"","sources":["../../../src/lib/sync/metadata-manager.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAgB,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/E,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C;;;GAGG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,SAAS,CAAY;gBAEjB,WAAW,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,SAAS;IAKtD;;;OAGG;IACG,IAAI,IAAI,OAAO,CAAC,YAAY,CAAC;IAwBnC;;OAEG;IACG,IAAI,CAAC,QAAQ,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAYjD;;OAEG;IACH,QAAQ,CAAC,IAAI,EAAE,OAAO,GAAG,YAAY;IAWrC;;OAEG;IACG,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAa5D;;OAEG;IACG,cAAc,CAClB,QAAQ,EAAE,YAAY,EACtB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,YAAY,CAAC;IAgBxB;;;OAGG;IACH,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,SAAK,GAAG,MAAM;IAoBrD;;OAEG;IACH,cAAc,IAAI,IAAI;IAItB;;OAEG;IACH,WAAW,CAAC,QAAQ,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,YAAY;IAWtE;;OAEG;IACH,OAAO,CAAC,kBAAkB;CAQ3B"}
1
+ {"version":3,"file":"metadata-manager.d.ts","sourceRoot":"","sources":["../../../src/lib/sync/metadata-manager.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAgB,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAG/E,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C;;;GAGG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,SAAS,CAAY;gBAEjB,WAAW,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,SAAS;IAKtD;;;OAGG;IACG,IAAI,IAAI,OAAO,CAAC,YAAY,CAAC;IAwBnC;;OAEG;IACG,IAAI,CAAC,QAAQ,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAYjD;;OAEG;IACH,QAAQ,CAAC,IAAI,EAAE,OAAO,GAAG,YAAY;IAWrC;;OAEG;IACG,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAa5D;;;;;;;OAOG;IACG,cAAc,CAClB,QAAQ,EAAE,YAAY,EACtB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,YAAY,CAAC;IAiBxB;;;OAGG;IACH,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,SAAK,GAAG,MAAM;IAoBrD;;OAEG;IACH,cAAc,IAAI,IAAI;IAItB;;OAEG;IACH,WAAW,CAAC,QAAQ,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,YAAY;IAWtE;;OAEG;IACH,OAAO,CAAC,kBAAkB;CA0B3B"}
@@ -1,6 +1,6 @@
1
1
  import { createHash } from "node:crypto";
2
- import fs from "fs-extra";
3
2
  import { SyncMetadataSchema } from "../../types/sync.js";
3
+ import fs from "fs-extra";
4
4
  import { HashCache } from "./hash-cache.js";
5
5
  /**
6
6
  * メタデータ管理クラス
@@ -83,13 +83,15 @@ export class MetadataManager {
83
83
  }
84
84
  /**
85
85
  * ファイルハッシュを更新する
86
+ *
87
+ * @param metadata - 現在のメタデータ
88
+ * @param filePath - 対象ファイルパス
89
+ * @param content - ファイルの内容(ハッシュ計算に使用)
90
+ * @param baseContent - 前回sync時のテンプレートコンテンツ(3方向マージ用)
86
91
  */
87
- async updateFileHash(metadata, filePath, content) {
92
+ async updateFileHash(metadata, filePath, content, baseContent) {
88
93
  const hash = this.calculateHash(content, filePath);
89
- const fileMetadata = {
90
- hash,
91
- syncedAt: new Date().toISOString(),
92
- };
94
+ const fileMetadata = Object.assign({ hash, syncedAt: new Date().toISOString() }, (baseContent !== undefined && { baseContent }));
93
95
  return Object.assign(Object.assign({}, metadata), { files: Object.assign(Object.assign({}, metadata.files), { [filePath]: fileMetadata }) });
94
96
  }
95
97
  /**
@@ -137,6 +139,24 @@ export class MetadataManager {
137
139
  lastSync: new Date().toISOString(),
138
140
  templateVersion: "0.1.0",
139
141
  files: {},
142
+ jsonPaths: {
143
+ managed: {
144
+ ".claude/settings.json": ["plansDirectory", "includeCoAuthoredBy"],
145
+ ".vscode/settings.json": [
146
+ "editor.codeActionsOnSave",
147
+ "editor.defaultFormatter",
148
+ "editor.formatOnSave",
149
+ "eslint.enable",
150
+ "prettier.enable",
151
+ "prettier.useEditorConfig",
152
+ "[json]",
153
+ "[jsonc]",
154
+ ],
155
+ },
156
+ "project-private": {
157
+ "package.json": ["name", "version", "private", "workspaces", "packageManager", "volta"],
158
+ },
159
+ },
140
160
  };
141
161
  }
142
162
  }
@@ -1 +1 @@
1
- {"version":3,"file":"metadata-manager.js","sourceRoot":"","sources":["../../../src/lib/sync/metadata-manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"metadata-manager.js","sourceRoot":"","sources":["../../../src/lib/sync/metadata-manager.ts"],"names":[],"mappings":"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"}
@@ -39,7 +39,6 @@ export interface SyncOptions {
39
39
  force?: boolean;
40
40
  yes?: boolean;
41
41
  json?: boolean;
42
- backup?: boolean;
43
42
  skipDeps?: boolean;
44
43
  clean?: boolean;
45
44
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAClC,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,qBAAqB,EAAE,MAAM,EAAE,CAAC;IAChC,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,kBAAkB,EAAE,MAAM,EAAE,CAAC;IAC7B,YAAY,CAAC,EAAE,kBAAkB,CAAC;CACnC;AAED,MAAM,WAAW,MAAM;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,YAAY,CAAC;CACtB;AAED,MAAM,WAAW,WAAW;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,GAAG,CAAC,EAAE,OAAO,CAAC;CACf;AAED,MAAM,WAAW,YAAY;IAC3B,mBAAmB,EAAE,OAAO,CAAC;IAC7B,WAAW,EAAE;QACX,KAAK,EAAE,MAAM,EAAE,CAAC;QAChB,GAAG,EAAE,MAAM,EAAE,CAAC;KACf,CAAC;IACF,0BAA0B,EAAE,OAAO,CAAC;IACpC,qBAAqB,EAAE,MAAM,EAAE,CAAC;CACjC;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,qCAAqC;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,6BAA6B;IAC7B,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,6BAA6B;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,mBAAmB;IACnB,QAAQ,EAAE,YAAY,EAAE,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACzC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,cAAc,CAAC,EAAE,wBAAwB,EAAE,CAAC;CAC7C;AAED;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,QAAQ,GAAG,OAAO,GAAG,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;CAChE"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAClC,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,qBAAqB,EAAE,MAAM,EAAE,CAAC;IAChC,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,kBAAkB,EAAE,MAAM,EAAE,CAAC;IAC7B,YAAY,CAAC,EAAE,kBAAkB,CAAC;CACnC;AAED,MAAM,WAAW,MAAM;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,YAAY,CAAC;CACtB;AAED,MAAM,WAAW,WAAW;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,GAAG,CAAC,EAAE,OAAO,CAAC;CACf;AAED,MAAM,WAAW,YAAY;IAC3B,mBAAmB,EAAE,OAAO,CAAC;IAC7B,WAAW,EAAE;QACX,KAAK,EAAE,MAAM,EAAE,CAAC;QAChB,GAAG,EAAE,MAAM,EAAE,CAAC;KACf,CAAC;IACF,0BAA0B,EAAE,OAAO,CAAC;IACpC,qBAAqB,EAAE,MAAM,EAAE,CAAC;CACjC;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,qCAAqC;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,6BAA6B;IAC7B,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,6BAA6B;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,mBAAmB;IACnB,QAAQ,EAAE,YAAY,EAAE,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACzC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,cAAc,CAAC,EAAE,wBAAwB,EAAE,CAAC;CAC7C;AAED;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,QAAQ,GAAG,OAAO,GAAG,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;CAChE"}
@@ -6,6 +6,7 @@ export declare const FileMetadataSchema: z.ZodObject<{
6
6
  hash: z.ZodString;
7
7
  syncedAt: z.ZodString;
8
8
  conflicts: z.ZodOptional<z.ZodArray<z.ZodString>>;
9
+ baseContent: z.ZodOptional<z.ZodString>;
9
10
  }, z.core.$strip>;
10
11
  /**
11
12
  * JSON パス設定の Zod スキーマ
@@ -27,6 +28,7 @@ export declare const SyncMetadataSchema: z.ZodObject<{
27
28
  hash: z.ZodString;
28
29
  syncedAt: z.ZodString;
29
30
  conflicts: z.ZodOptional<z.ZodArray<z.ZodString>>;
31
+ baseContent: z.ZodOptional<z.ZodString>;
30
32
  }, z.core.$strip>>;
31
33
  jsonPaths: z.ZodOptional<z.ZodObject<{
32
34
  managed: z.ZodRecord<z.ZodString, z.ZodArray<z.ZodString>>;
@@ -1 +1 @@
1
- {"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../../src/types/sync.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../../src/types/sync.ts"],"names":[],"mappings":"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"}
@@ -6,6 +6,7 @@ export const FileMetadataSchema = z.object({
6
6
  hash: z.string(),
7
7
  syncedAt: z.string(),
8
8
  conflicts: z.array(z.string()).optional(),
9
+ baseContent: z.string().optional(), // 前回sync時のテンプレートコンテンツ(3方向マージ用)
9
10
  });
10
11
  /**
11
12
  * JSON パス設定の Zod スキーマ
@@ -1 +1 @@
1
- {"version":3,"file":"sync.js","sourceRoot":"","sources":["../../src/types/sync.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;GAEG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IACzC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;IACpB,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;CAC1C,CAAC,CAAC;AAEH;;;;GAIG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC5C,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;IAClD,iBAAiB,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;CAC7D,CAAC,CAAC;AAEH;;GAEG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IACzC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;IACnB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;IACpB,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE;IAC3B,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,kBAAkB,CAAC;IAC/C,SAAS,EAAE,qBAAqB,CAAC,QAAQ,EAAE;CAC5C,CAAC,CAAC"}
1
+ {"version":3,"file":"sync.js","sourceRoot":"","sources":["../../src/types/sync.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;GAEG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IACzC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;IACpB,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;IACzC,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAE,+BAA+B;CACpE,CAAC,CAAC;AAEH;;;;GAIG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC5C,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;IAClD,iBAAiB,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;CAC7D,CAAC,CAAC;AAEH;;GAEG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IACzC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;IACnB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;IACpB,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE;IAC3B,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,kBAAkB,CAAC;IAC/C,SAAS,EAAE,qBAAqB,CAAC,QAAQ,EAAE;CAC5C,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@einja/dev-cli",
3
- "version": "0.1.44",
3
+ "version": "0.1.48",
4
4
  "description": "Einja CLI - .claude設定とテンプレート同期をnpxでインストール",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -104,10 +104,10 @@ AskUserQuestion:
104
104
 
105
105
  ```bash
106
106
  # dev-cli の場合
107
- npx --yes @einja/dev-cli sync --only <categories> --dry-run --yes
107
+ npx --yes @einja/dev-cli@latest sync --only <categories> --dry-run --yes
108
108
 
109
109
  # create-einja-app の場合
110
- npx --yes create-einja-app sync --categories <categories> --dry-run
110
+ npx --yes create-einja-app@latest sync --categories <categories> --dry-run
111
111
  ```
112
112
 
113
113
  > **注**: 両CLIでカテゴリ指定のオプション名が異なる(dev-cli: `--only` / create-einja-app: `--categories`)
@@ -156,13 +156,13 @@ AskUserQuestion:
156
156
 
157
157
  ```bash
158
158
  # dev-cli(孤児削除あり)
159
- npx --yes @einja/dev-cli sync --only <categories> --yes --json --clean
159
+ npx --yes @einja/dev-cli@latest sync --only <categories> --yes --json --clean
160
160
 
161
161
  # dev-cli(孤児削除なし)
162
- npx --yes @einja/dev-cli sync --only <categories> --yes --json
162
+ npx --yes @einja/dev-cli@latest sync --only <categories> --yes --json
163
163
 
164
164
  # create-einja-app
165
- npx --yes create-einja-app sync --categories <categories>
165
+ npx --yes create-einja-app@latest sync --categories <categories>
166
166
  ```
167
167
 
168
168
  - dev-cli は `--json` オプションで構造化出力を取得しパースする
@@ -228,7 +228,7 @@ f. 解消結果を `Read` で確認し、ユーザーに表示
228
228
 
229
229
  Step 4 で孤児削除を選択した場合、JSON出力の `summary.orphansDeleted` を確認し、削除されたファイル一覧を記録する(Step 9 の詳細表示で使用)。
230
230
 
231
- Step 4 で孤児削除をスキップした場合、孤児ファイル一覧を再表示し「後で `npx --yes @einja/dev-cli sync --only <categories> --clean --yes` で削除できます」と案内する。
231
+ Step 4 で孤児削除をスキップした場合、孤児ファイル一覧を再表示し「後で `npx --yes @einja/dev-cli@latest sync --only <categories> --clean --yes` で削除できます」と案内する。
232
232
 
233
233
  ### Step 7: direnv allow 実行確認
234
234