@einja/dev-cli 0.1.40 → 0.1.41

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 (183) hide show
  1. package/README.md +89 -1
  2. package/dist/cli.js +1 -0
  3. package/dist/cli.js.map +1 -1
  4. package/dist/commands/init.d.ts.map +1 -1
  5. package/dist/commands/init.js +71 -1
  6. package/dist/commands/init.js.map +1 -1
  7. package/dist/commands/list.js.map +1 -1
  8. package/dist/commands/sync.d.ts.map +1 -1
  9. package/dist/commands/sync.js +187 -13
  10. package/dist/commands/sync.js.map +1 -1
  11. package/dist/lib/dependency-checker.d.ts.map +1 -1
  12. package/dist/lib/merger.d.ts +12 -0
  13. package/dist/lib/merger.d.ts.map +1 -1
  14. package/dist/lib/merger.js +28 -0
  15. package/dist/lib/merger.js.map +1 -1
  16. package/dist/lib/preset-update/cli-repo-detector.d.ts.map +1 -1
  17. package/dist/lib/preset-update/file-copier.d.ts.map +1 -1
  18. package/dist/lib/preset-update/preset-finder.d.ts.map +1 -1
  19. package/dist/lib/preset.d.ts.map +1 -1
  20. package/dist/lib/sync/category-validator.d.ts +1 -1
  21. package/dist/lib/sync/category-validator.d.ts.map +1 -1
  22. package/dist/lib/sync/category-validator.js +2 -1
  23. package/dist/lib/sync/category-validator.js.map +1 -1
  24. package/dist/lib/sync/category-validator.test.js +3 -1
  25. package/dist/lib/sync/category-validator.test.js.map +1 -1
  26. package/dist/lib/sync/conflict-reporter.d.ts.map +1 -1
  27. package/dist/lib/sync/diff-engine.d.ts.map +1 -1
  28. package/dist/lib/sync/file-filter.d.ts.map +1 -1
  29. package/dist/lib/sync/file-filter.js +1 -0
  30. package/dist/lib/sync/file-filter.js.map +1 -1
  31. package/dist/lib/sync/integration.test.js +255 -69
  32. package/dist/lib/sync/integration.test.js.map +1 -1
  33. package/dist/lib/sync/json-processor.d.ts +4 -4
  34. package/dist/lib/sync/json-processor.d.ts.map +1 -1
  35. package/dist/lib/sync/json-processor.js +11 -11
  36. package/dist/lib/sync/json-processor.js.map +1 -1
  37. package/dist/lib/sync/marker-processor.d.ts +60 -8
  38. package/dist/lib/sync/marker-processor.d.ts.map +1 -1
  39. package/dist/lib/sync/marker-processor.js +117 -26
  40. package/dist/lib/sync/marker-processor.js.map +1 -1
  41. package/dist/lib/sync/marker-processor.test.js +261 -40
  42. package/dist/lib/sync/marker-processor.test.js.map +1 -1
  43. package/dist/lib/sync/metadata-manager.d.ts +4 -0
  44. package/dist/lib/sync/metadata-manager.d.ts.map +1 -1
  45. package/dist/lib/sync/metadata-manager.js +15 -0
  46. package/dist/lib/sync/metadata-manager.js.map +1 -1
  47. package/dist/lib/sync/metadata-manager.test.js +68 -0
  48. package/dist/lib/sync/metadata-manager.test.js.map +1 -1
  49. package/dist/lib/sync/orphan-cleaner.d.ts +29 -0
  50. package/dist/lib/sync/orphan-cleaner.d.ts.map +1 -0
  51. package/dist/lib/sync/orphan-cleaner.js +80 -0
  52. package/dist/lib/sync/orphan-cleaner.js.map +1 -0
  53. package/dist/lib/sync/orphan-cleaner.test.d.ts +2 -0
  54. package/dist/lib/sync/orphan-cleaner.test.d.ts.map +1 -0
  55. package/dist/lib/sync/orphan-cleaner.test.js +169 -0
  56. package/dist/lib/sync/orphan-cleaner.test.js.map +1 -0
  57. package/dist/lib/sync/project-private-synchronizer.d.ts +52 -0
  58. package/dist/lib/sync/project-private-synchronizer.d.ts.map +1 -0
  59. package/dist/lib/sync/project-private-synchronizer.js +106 -0
  60. package/dist/lib/sync/project-private-synchronizer.js.map +1 -0
  61. package/dist/lib/sync/project-private-synchronizer.test.d.ts +2 -0
  62. package/dist/lib/sync/project-private-synchronizer.test.d.ts.map +1 -0
  63. package/dist/lib/sync/project-private-synchronizer.test.js +348 -0
  64. package/dist/lib/sync/project-private-synchronizer.test.js.map +1 -0
  65. package/dist/types/index.d.ts +1 -0
  66. package/dist/types/index.d.ts.map +1 -1
  67. package/dist/types/sync.d.ts +36 -6
  68. package/dist/types/sync.d.ts.map +1 -1
  69. package/dist/types/sync.js +2 -2
  70. package/dist/types/sync.js.map +1 -1
  71. package/package.json +5 -4
  72. package/presets/default/.claude/agents/einja/Explore.md +140 -0
  73. package/presets/default/.claude/agents/einja/backend-architect.md +4 -0
  74. package/presets/default/.claude/agents/einja/codex-agent.md +4 -0
  75. package/presets/default/.claude/agents/einja/design-engineer.md +4 -0
  76. package/presets/default/.claude/agents/einja/docs/docs-updater.md +4 -0
  77. package/presets/default/.claude/agents/einja/frontend-architect.md +4 -0
  78. package/presets/default/.claude/agents/einja/frontend-coder.md +4 -0
  79. package/presets/default/.claude/agents/einja/git/conflict-resolver.md +4 -0
  80. package/presets/default/.claude/agents/einja/specs/spec-design-generator.md +4 -1
  81. package/presets/default/.claude/agents/einja/specs/spec-qa-generator.md +4 -0
  82. package/presets/default/.claude/agents/einja/specs/spec-requirements-generator.md +4 -1
  83. package/presets/default/.claude/agents/einja/specs/spec-tasks-generator.md +6 -2
  84. package/presets/default/.claude/agents/einja/specs/spec-tasks-validator.md +4 -0
  85. package/presets/default/.claude/agents/einja/task/task-executer.md +57 -115
  86. package/presets/default/.claude/agents/einja/task/task-modification-analyzer.md +4 -0
  87. package/presets/default/.claude/agents/einja/task/task-qa.md +4 -0
  88. package/presets/default/.claude/agents/einja/task/task-reviewer.md +4 -0
  89. package/presets/default/.claude/commands/einja/einja-sync.md +5 -1
  90. package/presets/default/.claude/commands/einja/frontend-implement.md +3 -1
  91. package/presets/default/.claude/commands/einja/issue-exec.md +403 -0
  92. package/presets/default/.claude/commands/einja/spec-create.md +15 -1
  93. package/presets/default/.claude/commands/einja/start-dev.md +4 -0
  94. package/presets/default/.claude/commands/einja/sync-cursor-commands.md +4 -0
  95. package/presets/default/.claude/commands/einja/task-exec.md +106 -14
  96. package/presets/default/.claude/commands/einja/update-docs-by-task-specs.md +4 -0
  97. package/presets/default/.claude/hooks/einja/plan-mode-skill-loader.sh +23 -0
  98. package/presets/default/.claude/settings.json +15 -1
  99. package/presets/default/.claude/skills/einja-conflict-resolver/SKILL.md +4 -0
  100. package/presets/default/.claude/skills/einja-general-context-loader/SKILL.md +4 -0
  101. package/presets/default/.claude/skills/einja-output-format/SKILL.md +4 -0
  102. package/presets/default/.claude/skills/einja-project-overview/SKILL.md +7 -3
  103. package/presets/default/.claude/skills/einja-skill-creator/SKILL.md +266 -274
  104. package/presets/default/.claude/skills/einja-skill-creator/agents/analyzer.md +274 -0
  105. package/presets/default/.claude/skills/einja-skill-creator/agents/comparator.md +202 -0
  106. package/presets/default/.claude/skills/einja-skill-creator/agents/grader.md +195 -0
  107. package/presets/default/.claude/skills/einja-skill-creator/assets/eval_review.html +146 -0
  108. package/presets/default/.claude/skills/einja-skill-creator/eval-viewer/generate_review.py +471 -0
  109. package/presets/default/.claude/skills/einja-skill-creator/eval-viewer/viewer.html +1325 -0
  110. package/presets/default/.claude/skills/einja-skill-creator/references/schemas.md +430 -0
  111. package/presets/default/.claude/skills/einja-skill-creator/scripts/aggregate_benchmark.py +154 -0
  112. package/presets/default/.claude/skills/einja-skill-creator/scripts/generate_report.py +265 -0
  113. package/presets/default/.claude/skills/einja-skill-creator/scripts/improve_description.py +252 -0
  114. package/presets/default/.claude/skills/einja-skill-creator/scripts/init_skill.py +13 -19
  115. package/presets/default/.claude/skills/einja-skill-creator/scripts/package_skill.py +36 -7
  116. package/presets/default/.claude/skills/einja-skill-creator/scripts/run_eval.py +310 -0
  117. package/presets/default/.claude/skills/einja-skill-creator/scripts/run_loop.py +295 -0
  118. package/presets/default/.claude/skills/einja-skill-creator/scripts/utils.py +48 -0
  119. package/presets/default/.claude/skills/einja-spec-context-loader/SKILL.md +4 -0
  120. package/presets/default/.claude/skills/einja-task-commit/SKILL.md +4 -0
  121. package/presets/default/.claude/skills/einja-task-qa/SKILL.md +4 -0
  122. package/presets/default/.envrc +5 -0
  123. package/presets/default/.mcp.json +2 -12
  124. package/presets/default/CLAUDE.md.template +26 -4
  125. package/presets/default/docs/einja/example/specs/issues/issue999-example-task/tasks.md +1 -1
  126. package/presets/default/docs/einja/instructions/deployment-setup.md +3 -8
  127. package/presets/default/docs/einja/instructions/environment-setup.md +3 -8
  128. package/presets/default/docs/einja/instructions/issue-exec-workflow.md +276 -0
  129. package/presets/default/docs/einja/instructions/local-server-environment-and-worktree.md +70 -8
  130. package/presets/default/docs/einja/instructions/neon-cli-reference.md +3 -8
  131. package/presets/default/docs/einja/instructions/task-execute.md +23 -28
  132. package/presets/default/docs/einja/instructions/vercel-cli-reference.md +17 -10
  133. package/presets/default/docs/einja/steering/README.md +11 -11
  134. package/presets/default/docs/einja/steering/acceptance-criteria-and-qa-guide.md +3 -8
  135. package/presets/default/docs/einja/steering/architecture.md +3 -8
  136. package/presets/default/docs/einja/steering/branch-strategy.md +63 -70
  137. package/presets/default/docs/einja/steering/commit-rules.md +3 -8
  138. package/presets/default/docs/einja/steering/db-schema-design.md +3 -8
  139. package/presets/default/docs/einja/steering/development/api-development.md +3 -8
  140. package/presets/default/docs/einja/steering/development/backend-architecture.md +3 -8
  141. package/presets/default/docs/einja/steering/development/coding-standards.md +723 -0
  142. package/presets/default/docs/einja/steering/development/component-design.md +502 -0
  143. package/presets/default/docs/einja/steering/development/database-guidelines.md +2 -2
  144. package/presets/default/docs/einja/steering/development/frontend-development.md +3 -8
  145. package/presets/default/docs/einja/steering/development/playwright-guidelines.md +59 -0
  146. package/presets/default/docs/einja/steering/development/review-guidelines.md +3 -8
  147. package/presets/default/docs/einja/steering/development/testing-strategy.md +3 -8
  148. package/presets/default/docs/einja/steering/development-workflow.md +71 -124
  149. package/presets/default/docs/einja/steering/infrastructure/deployment.md +49 -55
  150. package/presets/default/docs/einja/steering/infrastructure/environment-variables.md +4 -8
  151. package/presets/default/docs/einja/steering/product.md +3 -8
  152. package/presets/default/docs/einja/steering/task-management.md +14 -98
  153. package/presets/default/scripts/ensure-serena.sh +75 -0
  154. package/presets/default/scripts/env-rotate-secrets.ts +336 -0
  155. package/presets/default/scripts/env-show.ts +130 -0
  156. package/presets/default/scripts/env.ts +479 -0
  157. package/presets/default/scripts/init.sh +92 -0
  158. package/presets/default/scripts/lib/env-common.ts +108 -0
  159. package/presets/default/scripts/lib/worktree-config.ts +64 -0
  160. package/presets/default/scripts/setup-dev.ts +640 -0
  161. package/presets/default/scripts/stop-serena.sh +25 -0
  162. package/presets/default/scripts/worktree/dev.ts +872 -0
  163. package/dist/lib/sync/seed-synchronizer.d.ts +0 -27
  164. package/dist/lib/sync/seed-synchronizer.d.ts.map +0 -1
  165. package/dist/lib/sync/seed-synchronizer.js +0 -72
  166. package/dist/lib/sync/seed-synchronizer.js.map +0 -1
  167. package/dist/lib/sync/seed-synchronizer.test.d.ts +0 -2
  168. package/dist/lib/sync/seed-synchronizer.test.d.ts.map +0 -1
  169. package/dist/lib/sync/seed-synchronizer.test.js +0 -147
  170. package/dist/lib/sync/seed-synchronizer.test.js.map +0 -1
  171. package/presets/default/.claude/skills/einja-api-development/SKILL.md +0 -14
  172. package/presets/default/.claude/skills/einja-backend-architecture/SKILL.md +0 -18
  173. package/presets/default/.claude/skills/einja-coding-standards/SKILL.md +0 -132
  174. package/presets/default/.claude/skills/einja-coding-standards/references/import-conventions.md +0 -69
  175. package/presets/default/.claude/skills/einja-coding-standards/references/naming-conventions.md +0 -107
  176. package/presets/default/.claude/skills/einja-coding-standards/references/prohibited-patterns.md +0 -169
  177. package/presets/default/.claude/skills/einja-coding-standards/references/typescript-rules.md +0 -247
  178. package/presets/default/.claude/skills/einja-component-design/SKILL.md +0 -109
  179. package/presets/default/.claude/skills/einja-component-design/references/directory-structure.md +0 -117
  180. package/presets/default/.claude/skills/einja-component-design/references/props-patterns.md +0 -159
  181. package/presets/default/.claude/skills/einja-component-design/references/styling-guide.md +0 -122
  182. package/presets/default/.claude/skills/einja-frontend-development/SKILL.md +0 -14
  183. package/presets/default/docs/einja/instructions/task-vibe-kanban-loop.md +0 -565
@@ -0,0 +1,348 @@
1
+ import { describe, expect, it } from "vitest";
2
+ import { ProjectPrivateSynchronizer } from "./project-private-synchronizer.js";
3
+ describe("ProjectPrivateSynchronizer", () => {
4
+ const synchronizer = new ProjectPrivateSynchronizer();
5
+ describe("syncProjectPrivateSections", () => {
6
+ it("ローカルに存在しないproject-privateセクションがテンプレートに存在する場合、ローカルに追加されること", () => {
7
+ // Given: ローカルにproject-privateがない
8
+ const localContent = `ローカル行1
9
+ ローカル行2`;
10
+ // Given: テンプレートにproject-privateがある
11
+ const templateContent = `テンプレート行1
12
+ <!-- @einja:project-private:start id="pp-1" -->
13
+ プロジェクト固有セクション1
14
+ <!-- @einja:project-private:end -->
15
+ テンプレート行2`;
16
+ // When: project-privateを同期
17
+ const result = synchronizer.syncProjectPrivateSections(localContent, templateContent);
18
+ // Then: ローカルの末尾にproject-privateが追加される
19
+ expect(result).toContain("ローカル行1");
20
+ expect(result).toContain("ローカル行2");
21
+ expect(result).toContain('<!-- @einja:project-private:start id="pp-1" -->');
22
+ expect(result).toContain("プロジェクト固有セクション1");
23
+ expect(result).toContain("<!-- @einja:project-private:end -->");
24
+ });
25
+ it("ローカルに既に存在するproject-privateセクションは上書きされないこと", () => {
26
+ // Given: ローカルにproject-privateがある
27
+ const localContent = `ローカル行1
28
+ <!-- @einja:project-private:start id="pp-1" -->
29
+ ローカルプロジェクト固有セクション1
30
+ <!-- @einja:project-private:end -->
31
+ ローカル行2`;
32
+ // Given: テンプレートに同じIDのproject-privateがある
33
+ const templateContent = `テンプレート行1
34
+ <!-- @einja:project-private:start id="pp-1" -->
35
+ テンプレートプロジェクト固有セクション1
36
+ <!-- @einja:project-private:end -->
37
+ テンプレート行2`;
38
+ // When: project-privateを同期
39
+ const result = synchronizer.syncProjectPrivateSections(localContent, templateContent);
40
+ // Then: ローカルがそのまま保持される
41
+ expect(result).toBe(localContent);
42
+ expect(result).toContain("ローカルプロジェクト固有セクション1");
43
+ expect(result).not.toContain("テンプレートプロジェクト固有セクション1");
44
+ });
45
+ it("ローカルに一部のproject-privateが存在し、テンプレートに新しいproject-privateがある場合、新しいproject-privateのみ追加されること", () => {
46
+ // Given: ローカルにpp-1がある
47
+ const localContent = `ローカル行1
48
+ <!-- @einja:project-private:start id="pp-1" -->
49
+ ローカルプロジェクト固有セクション1
50
+ <!-- @einja:project-private:end -->
51
+ ローカル行2`;
52
+ // Given: テンプレートにpp-1とpp-2がある
53
+ const templateContent = `テンプレート行1
54
+ <!-- @einja:project-private:start id="pp-1" -->
55
+ テンプレートプロジェクト固有セクション1
56
+ <!-- @einja:project-private:end -->
57
+ テンプレート行2
58
+ <!-- @einja:project-private:start id="pp-2" -->
59
+ テンプレートプロジェクト固有セクション2
60
+ <!-- @einja:project-private:end -->
61
+ テンプレート行3`;
62
+ // When: project-privateを同期
63
+ const result = synchronizer.syncProjectPrivateSections(localContent, templateContent);
64
+ // Then: pp-1はそのまま、pp-2が追加される
65
+ expect(result).toContain("ローカルプロジェクト固有セクション1");
66
+ expect(result).not.toContain("テンプレートプロジェクト固有セクション1");
67
+ expect(result).toContain('<!-- @einja:project-private:start id="pp-2" -->');
68
+ expect(result).toContain("テンプレートプロジェクト固有セクション2");
69
+ expect(result).toContain("<!-- @einja:project-private:end -->");
70
+ });
71
+ it("複数の新しいproject-privateセクションが追加される場合、全て追加されること", () => {
72
+ // Given: ローカルにproject-privateがない
73
+ const localContent = "ローカル行1";
74
+ // Given: テンプレートに複数のproject-privateがある
75
+ const templateContent = `テンプレート行1
76
+ <!-- @einja:project-private:start id="pp-1" -->
77
+ プロジェクト固有セクション1
78
+ <!-- @einja:project-private:end -->
79
+ テンプレート行2
80
+ <!-- @einja:project-private:start id="pp-2" -->
81
+ プロジェクト固有セクション2
82
+ <!-- @einja:project-private:end -->
83
+ テンプレート行3`;
84
+ // When: project-privateを同期
85
+ const result = synchronizer.syncProjectPrivateSections(localContent, templateContent);
86
+ // Then: 全てのproject-privateが追加される
87
+ expect(result).toContain('<!-- @einja:project-private:start id="pp-1" -->');
88
+ expect(result).toContain("プロジェクト固有セクション1");
89
+ expect(result).toContain('<!-- @einja:project-private:start id="pp-2" -->');
90
+ expect(result).toContain("プロジェクト固有セクション2");
91
+ });
92
+ it("managedセクションとproject-privateセクションが混在する場合、project-privateのみが同期対象となること", () => {
93
+ // Given: ローカルにmanagedとproject-privateがある
94
+ const localContent = `ローカル行1
95
+ <!-- @einja:managed:start -->
96
+ ローカル管理セクション
97
+ <!-- @einja:managed:end -->
98
+ <!-- @einja:project-private:start id="pp-1" -->
99
+ ローカルプロジェクト固有セクション
100
+ <!-- @einja:project-private:end -->
101
+ ローカル行2`;
102
+ // Given: テンプレートにmanagedとpp-1、pp-2がある
103
+ const templateContent = `テンプレート行1
104
+ <!-- @einja:managed:start -->
105
+ テンプレート管理セクション
106
+ <!-- @einja:managed:end -->
107
+ <!-- @einja:project-private:start id="pp-1" -->
108
+ テンプレートプロジェクト固有セクション1
109
+ <!-- @einja:project-private:end -->
110
+ <!-- @einja:project-private:start id="pp-2" -->
111
+ テンプレートプロジェクト固有セクション2
112
+ <!-- @einja:project-private:end -->
113
+ テンプレート行2`;
114
+ // When: project-privateを同期
115
+ const result = synchronizer.syncProjectPrivateSections(localContent, templateContent);
116
+ // Then: pp-2のみ追加、pp-1とmanagedは元のまま
117
+ expect(result).toContain("ローカル管理セクション");
118
+ expect(result).toContain("ローカルプロジェクト固有セクション");
119
+ expect(result).not.toContain("テンプレートプロジェクト固有セクション1");
120
+ expect(result).toContain('<!-- @einja:project-private:start id="pp-2" -->');
121
+ expect(result).toContain("テンプレートプロジェクト固有セクション2");
122
+ });
123
+ });
124
+ describe("syncUnmarkedFile", () => {
125
+ it("ローカルにファイルが存在しない場合、テンプレート内容を返すこと", () => {
126
+ // Given: ローカルにファイルが存在しない
127
+ const localExists = false;
128
+ const templateContent = `テンプレート行1
129
+ テンプレート行2`;
130
+ // When: マーカーなしファイルを同期
131
+ const result = synchronizer.syncUnmarkedFile(localExists, templateContent);
132
+ // Then: テンプレート内容が返る
133
+ expect(result).toBe(templateContent);
134
+ });
135
+ it("ローカルにファイルが存在する場合、nullを返すこと(何もしない)", () => {
136
+ // Given: ローカルにファイルが存在する
137
+ const localExists = true;
138
+ const templateContent = `テンプレート行1
139
+ テンプレート行2`;
140
+ // When: マーカーなしファイルを同期
141
+ const result = synchronizer.syncUnmarkedFile(localExists, templateContent);
142
+ // Then: nullが返る(何もしない)
143
+ expect(result).toBeNull();
144
+ });
145
+ });
146
+ describe("syncProjectPrivateOnlyFile", () => {
147
+ it("managedなしファイルで本文の3方向マージとproject-private保持が行われること", () => {
148
+ const localContent = `# ドキュメント
149
+
150
+ 本文がローカルで変更されました
151
+
152
+ <!-- @einja:project-private:start id="pp-1" -->
153
+ ## プロジェクト固有設定
154
+ ローカルの固有内容
155
+ <!-- @einja:project-private:end -->`;
156
+ const templateContent = `# ドキュメント
157
+
158
+ 本文がテンプレートで更新されました
159
+
160
+ <!-- @einja:project-private:start id="pp-1" -->
161
+ ## プロジェクト固有設定
162
+ テンプレートのデフォルト内容
163
+ <!-- @einja:project-private:end -->`;
164
+ const baseContent = `# ドキュメント
165
+
166
+ 元の本文
167
+
168
+ <!-- @einja:project-private:start id="pp-1" -->
169
+ ## プロジェクト固有設定
170
+ テンプレートのデフォルト内容
171
+ <!-- @einja:project-private:end -->`;
172
+ const mockDiffEngine = {
173
+ merge3Way: (base, local, template) => ({
174
+ success: true,
175
+ content: template, // テンプレート側を採用(baseからlocalは変更なし想定時)
176
+ conflicts: [],
177
+ }),
178
+ };
179
+ const result = synchronizer.syncProjectPrivateOnlyFile(localContent, templateContent, baseContent, mockDiffEngine);
180
+ // project-privateセクションはローカル版が保持される
181
+ expect(result.content).toContain("ローカルの固有内容");
182
+ expect(result.content).not.toContain("テンプレートのデフォルト内容");
183
+ expect(result.success).toBe(true);
184
+ });
185
+ it("ローカルにproject-privateがない場合、テンプレート版がseedされること", () => {
186
+ const localContent = `# ドキュメント
187
+
188
+ ローカル本文`;
189
+ const templateContent = `# ドキュメント
190
+
191
+ テンプレート本文
192
+
193
+ <!-- @einja:project-private:start id="pp-1" -->
194
+ ## プロジェクト固有設定
195
+ デフォルト内容
196
+ <!-- @einja:project-private:end -->`;
197
+ const baseContent = `# ドキュメント
198
+
199
+ 元の本文`;
200
+ const mockDiffEngine = {
201
+ merge3Way: (_base, _local, template) => ({
202
+ success: true,
203
+ content: template,
204
+ conflicts: [],
205
+ }),
206
+ };
207
+ const result = synchronizer.syncProjectPrivateOnlyFile(localContent, templateContent, baseContent, mockDiffEngine);
208
+ // テンプレートのproject-privateがseedされる
209
+ expect(result.content).toContain("デフォルト内容");
210
+ expect(result.success).toBe(true);
211
+ });
212
+ });
213
+ describe("legacy @einja:seed マーカーとの互換性", () => {
214
+ describe("syncProjectPrivateSections", () => {
215
+ it("ローカルがlegacy seed → ID認識して重複追加しない", () => {
216
+ // Given: ローカルにlegacy seedマーカーがある
217
+ const localContent = `ローカル行1
218
+ <!-- @einja:seed:start id="intro" -->
219
+ ユーザーコンテンツ
220
+ <!-- @einja:seed:end -->
221
+ ローカル行2`;
222
+ // Given: テンプレートに同じIDのproject-privateがある
223
+ const templateContent = `テンプレート行1
224
+ <!-- @einja:project-private:start id="intro" -->
225
+ デフォルト
226
+ <!-- @einja:project-private:end -->
227
+ テンプレート行2`;
228
+ // When: project-privateを同期
229
+ const result = synchronizer.syncProjectPrivateSections(localContent, templateContent);
230
+ // Then: ローカルがそのまま返る(テンプレートで上書きしない)
231
+ expect(result).toBe(localContent);
232
+ expect(result).toContain("ユーザーコンテンツ");
233
+ expect(result).not.toContain("デフォルト");
234
+ });
235
+ it("ローカルがlegacy seed + テンプレートが新規PP → 新規のみ追加", () => {
236
+ // Given: ローカルにlegacy seedのintroがある
237
+ const localContent = `ローカル行1
238
+ <!-- @einja:seed:start id="intro" -->
239
+ ユーザーコンテンツ
240
+ <!-- @einja:seed:end -->
241
+ ローカル行2`;
242
+ // Given: テンプレートにintroと新しいnew-sectionがある
243
+ const templateContent = `テンプレート行1
244
+ <!-- @einja:project-private:start id="intro" -->
245
+ デフォルト
246
+ <!-- @einja:project-private:end -->
247
+ テンプレート行2
248
+ <!-- @einja:project-private:start id="new-section" -->
249
+ 新しいセクション
250
+ <!-- @einja:project-private:end -->
251
+ テンプレート行3`;
252
+ // When: project-privateを同期
253
+ const result = synchronizer.syncProjectPrivateSections(localContent, templateContent);
254
+ // Then: ローカルのseedセクションは保持される
255
+ expect(result).toContain("ユーザーコンテンツ");
256
+ expect(result).not.toContain("デフォルト");
257
+ // Then: 新しいnew-sectionのみ追加される
258
+ expect(result).toContain('<!-- @einja:project-private:start id="new-section" -->');
259
+ expect(result).toContain("新しいセクション");
260
+ });
261
+ });
262
+ describe("syncProjectPrivateOnlyFile", () => {
263
+ it("legacy seedファイル → PP抽出・本文マージ・PP再付加が動く", () => {
264
+ // Given: ローカルにlegacy seedマーカーがある
265
+ const localContent = `# ドキュメント
266
+
267
+ 本文がローカルで変更されました
268
+
269
+ <!-- @einja:seed:start id="custom" -->
270
+ カスタム内容
271
+ <!-- @einja:seed:end -->`;
272
+ // Given: テンプレートにproject-privateマーカーがある
273
+ const templateContent = `# ドキュメント
274
+
275
+ 本文がテンプレートで更新されました
276
+
277
+ <!-- @einja:project-private:start id="custom" -->
278
+ デフォルト
279
+ <!-- @einja:project-private:end -->`;
280
+ // Given: ベースにproject-privateマーカーがある
281
+ const baseContent = `# ドキュメント
282
+
283
+ 元の本文
284
+
285
+ <!-- @einja:project-private:start id="custom" -->
286
+ デフォルト
287
+ <!-- @einja:project-private:end -->`;
288
+ const mockDiffEngine = {
289
+ merge3Way: (_base, _local, template) => ({
290
+ success: true,
291
+ content: template,
292
+ conflicts: [],
293
+ }),
294
+ };
295
+ // When: syncProjectPrivateOnlyFileを実行
296
+ const result = synchronizer.syncProjectPrivateOnlyFile(localContent, templateContent, baseContent, mockDiffEngine);
297
+ // Then: マージが成功する
298
+ expect(result.success).toBe(true);
299
+ // Then: ローカルのlegacy seedセクション内容が保持される
300
+ expect(result.content).toContain("カスタム内容");
301
+ // Then: テンプレートのデフォルト内容で上書きされない
302
+ expect(result.content).not.toContain("デフォルト");
303
+ });
304
+ it("legacy seedの空セクション → 存在扱い(テンプレートでseedしない)", () => {
305
+ // Given: ローカルにlegacy seedの空セクションがある
306
+ const localContent = `# ドキュメント
307
+
308
+ 本文
309
+
310
+ <!-- @einja:seed:start id="custom" -->
311
+ <!-- @einja:seed:end -->`;
312
+ // Given: テンプレートにproject-privateマーカーがある
313
+ const templateContent = `# ドキュメント
314
+
315
+ 本文
316
+
317
+ <!-- @einja:project-private:start id="custom" -->
318
+ デフォルト内容
319
+ <!-- @einja:project-private:end -->`;
320
+ // Given: ベースにproject-privateマーカーがある
321
+ const baseContent = `# ドキュメント
322
+
323
+ 本文
324
+
325
+ <!-- @einja:project-private:start id="custom" -->
326
+ デフォルト内容
327
+ <!-- @einja:project-private:end -->`;
328
+ const mockDiffEngine = {
329
+ merge3Way: (_base, _local, template) => ({
330
+ success: true,
331
+ content: template,
332
+ conflicts: [],
333
+ }),
334
+ };
335
+ // When: syncProjectPrivateOnlyFileを実行
336
+ const result = synchronizer.syncProjectPrivateOnlyFile(localContent, templateContent, baseContent, mockDiffEngine);
337
+ // Then: マージが成功する
338
+ expect(result.success).toBe(true);
339
+ // Then: ローカルの空seedセクションが保持される(テンプレート版でseedしない)
340
+ expect(result.content).toContain('<!-- @einja:seed:start id="custom" -->');
341
+ expect(result.content).toContain("<!-- @einja:seed:end -->");
342
+ // Then: テンプレートのデフォルト内容は含まれない
343
+ expect(result.content).not.toContain("デフォルト内容");
344
+ });
345
+ });
346
+ });
347
+ });
348
+ //# sourceMappingURL=project-private-synchronizer.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project-private-synchronizer.test.js","sourceRoot":"","sources":["../../../src/lib/sync/project-private-synchronizer.test.ts"],"names":[],"mappings":"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"}
@@ -41,6 +41,7 @@ export interface SyncOptions {
41
41
  json?: boolean;
42
42
  backup?: boolean;
43
43
  skipDeps?: boolean;
44
+ clean?: boolean;
44
45
  }
45
46
  /**
46
47
  * シンボリックリンクエントリ
@@ -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;CACpB;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,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"}
@@ -10,11 +10,11 @@ export declare const FileMetadataSchema: z.ZodObject<{
10
10
  /**
11
11
  * JSON パス設定の Zod スキーマ
12
12
  * managed: テンプレート値で上書き
13
- * seed: ローカル優先(キーが存在しない場合のみコピー)
13
+ * project-private: ローカル優先(キーが存在しない場合のみコピー)
14
14
  */
15
15
  export declare const JsonPathsConfigSchema: z.ZodObject<{
16
16
  managed: z.ZodRecord<z.ZodString, z.ZodArray<z.ZodString>>;
17
- seed: z.ZodRecord<z.ZodString, z.ZodArray<z.ZodString>>;
17
+ "project-private": z.ZodRecord<z.ZodString, z.ZodArray<z.ZodString>>;
18
18
  }, z.core.$strip>;
19
19
  /**
20
20
  * 同期メタデータのZodスキーマ
@@ -30,7 +30,7 @@ export declare const SyncMetadataSchema: z.ZodObject<{
30
30
  }, z.core.$strip>>;
31
31
  jsonPaths: z.ZodOptional<z.ZodObject<{
32
32
  managed: z.ZodRecord<z.ZodString, z.ZodArray<z.ZodString>>;
33
- seed: z.ZodRecord<z.ZodString, z.ZodArray<z.ZodString>>;
33
+ "project-private": z.ZodRecord<z.ZodString, z.ZodArray<z.ZodString>>;
34
34
  }, z.core.$strip>>;
35
35
  }, z.core.$strip>;
36
36
  /**
@@ -99,11 +99,11 @@ export interface MergeResult {
99
99
  /**
100
100
  * マーカーセクションの種別
101
101
  */
102
- export type MarkerSectionType = "managed" | "unmanaged" | "seed";
102
+ export type MarkerSectionType = "managed" | "unmanaged" | "project-private";
103
103
  /**
104
104
  * マーカーエラーの種別
105
105
  */
106
- export type MarkerErrorType = "unpaired_start" | "unpaired_end" | "nested" | "seed_without_id" | "duplicate_id";
106
+ export type MarkerErrorType = "unpaired_start" | "unpaired_end" | "nested" | "project_private_without_id" | "duplicate_id";
107
107
  /**
108
108
  * マーカーセクションの型定義
109
109
  */
@@ -116,7 +116,7 @@ export interface MarkerSection {
116
116
  endLine: number;
117
117
  /** セクション内容 */
118
118
  content: string;
119
- /** セクションID(managedまたはseedマーカーにID属性がある場合) */
119
+ /** セクションID(managedまたはproject-privateマーカーにID属性がある場合) */
120
120
  id?: string;
121
121
  }
122
122
  /**
@@ -174,6 +174,10 @@ export interface JsonOutput {
174
174
  conflicts: number;
175
175
  /** スキップされたファイル数 */
176
176
  skipped: number;
177
+ /** 孤児検出数 */
178
+ orphansDetected?: number;
179
+ /** 孤児削除数 */
180
+ orphansDeleted?: number;
177
181
  };
178
182
  /** ファイル情報の配列 */
179
183
  files: JsonFileInfo[];
@@ -184,5 +188,31 @@ export interface JsonOutput {
184
188
  /** 同期実行日時 */
185
189
  syncedAt: string;
186
190
  };
191
+ /** 孤児ファイル情報 */
192
+ orphans?: OrphanFile[];
193
+ }
194
+ /**
195
+ * 孤児ファイルの型定義
196
+ */
197
+ export interface OrphanFile {
198
+ /** ファイルパス */
199
+ path: string;
200
+ /** カテゴリ */
201
+ category: string | null;
202
+ /** ディスク上に実在するか */
203
+ exists: boolean;
204
+ }
205
+ /**
206
+ * 孤児レポートの型定義
207
+ */
208
+ export interface OrphanReport {
209
+ /** 孤児が存在するか */
210
+ hasOrphans: boolean;
211
+ /** 孤児ファイル一覧 */
212
+ orphans: OrphanFile[];
213
+ /** 孤児ファイル総数 */
214
+ total: number;
215
+ /** ディスク上に実在する孤児の数 */
216
+ existingCount: number;
187
217
  }
188
218
  //# sourceMappingURL=sync.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../../src/types/sync.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;GAEG;AACH,eAAO,MAAM,kBAAkB;;;;iBAI7B,CAAC;AAEH;;;;GAIG;AACH,eAAO,MAAM,qBAAqB;;;iBAGhC,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;iBAM7B,CAAC;AAEH;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAE9D;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAEpE;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAE9D;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,qBAAqB;IACrB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,oBAAoB;IACpB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;CAC5B;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,WAAW;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,mBAAmB;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,iBAAiB;IACjB,MAAM,EAAE,OAAO,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,qBAAqB;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,eAAe;IACf,YAAY,EAAE,MAAM,CAAC;IACrB,iBAAiB;IACjB,eAAe,EAAE,MAAM,CAAC;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,0BAA0B;IAC1B,OAAO,EAAE,OAAO,CAAC;IACjB,cAAc;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe;IACf,SAAS,EAAE,QAAQ,EAAE,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG,SAAS,GAAG,WAAW,GAAG,MAAM,CAAC;AAEjE;;GAEG;AACH,MAAM,MAAM,eAAe,GACvB,gBAAgB,GAChB,cAAc,GACd,QAAQ,GACR,iBAAiB,GACjB,cAAc,CAAC;AAEnB;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,cAAc;IACd,IAAI,EAAE,iBAAiB,CAAC;IACxB,kBAAkB;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,kBAAkB;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,4CAA4C;IAC5C,EAAE,CAAC,EAAE,MAAM,CAAC;CACb;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,mBAAmB;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,eAAe;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY;IACZ,IAAI,EAAE,eAAe,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,WAAW;IACX,KAAK,EAAE,OAAO,CAAC;IACf,YAAY;IACZ,MAAM,EAAE,WAAW,EAAE,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,aAAa;IACb,IAAI,EAAE,MAAM,CAAC;IACb,wCAAwC;IACxC,MAAM,EAAE,SAAS,GAAG,UAAU,GAAG,SAAS,CAAC;IAC3C,iBAAiB;IACjB,MAAM,EAAE,QAAQ,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,CAAC;IACpD,qCAAqC;IACrC,SAAS,CAAC,EAAE,KAAK,CAAC;QAChB,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,MAAM,CAAC;QACd,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC,CAAC;CACJ;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,6CAA6C;IAC7C,MAAM,EAAE,SAAS,GAAG,iBAAiB,GAAG,OAAO,CAAC;IAChD,aAAa;IACb,OAAO,EAAE;QACP,aAAa;QACb,KAAK,EAAE,MAAM,CAAC;QACd,iBAAiB;QACjB,OAAO,EAAE,MAAM,CAAC;QAChB,gBAAgB;QAChB,SAAS,EAAE,MAAM,CAAC;QAClB,uBAAuB;QACvB,SAAS,EAAE,MAAM,CAAC;QAClB,mBAAmB;QACnB,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;IACF,gBAAgB;IAChB,KAAK,EAAE,YAAY,EAAE,CAAC;IACtB,cAAc;IACd,QAAQ,EAAE;QACR,iBAAiB;QACjB,OAAO,EAAE,MAAM,CAAC;QAChB,aAAa;QACb,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;CACH"}
1
+ {"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../../src/types/sync.ts"],"names":[],"mappings":"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"}
@@ -10,11 +10,11 @@ export const FileMetadataSchema = z.object({
10
10
  /**
11
11
  * JSON パス設定の Zod スキーマ
12
12
  * managed: テンプレート値で上書き
13
- * seed: ローカル優先(キーが存在しない場合のみコピー)
13
+ * project-private: ローカル優先(キーが存在しない場合のみコピー)
14
14
  */
15
15
  export const JsonPathsConfigSchema = z.object({
16
16
  managed: z.record(z.string(), z.array(z.string())),
17
- seed: z.record(z.string(), z.array(z.string())),
17
+ "project-private": z.record(z.string(), z.array(z.string())),
18
18
  });
19
19
  /**
20
20
  * 同期メタデータの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,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;CAChD,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;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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@einja/dev-cli",
3
- "version": "0.1.40",
3
+ "version": "0.1.41",
4
4
  "description": "Einja CLI - .claude設定とテンプレート同期をnpxでインストール",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -34,6 +34,7 @@
34
34
  "@types/fs-extra": "^11.0.4",
35
35
  "@types/js-yaml": "^4.0.9",
36
36
  "@types/node": "^22.18.13",
37
+ "tsc-alias": "^1.8.16",
37
38
  "typescript": "^5",
38
39
  "vitest": "^2.1.9",
39
40
  "@repo/config": "0.1.0"
@@ -60,7 +61,7 @@
60
61
  "scripts": {
61
62
  "clean": "rm -rf dist tsconfig.tsbuildinfo",
62
63
  "prebuild": "node ./scripts/generate-template.mjs && node ./scripts/copy-presets.mjs",
63
- "build": "pnpm clean && tsc",
64
+ "build": "pnpm clean && tsc && tsc-alias",
64
65
  "postbuild": "node ./scripts/add-shebang.mjs",
65
66
  "dev": "tsc --watch",
66
67
  "typecheck": "tsc --noEmit",
@@ -68,7 +69,7 @@
68
69
  "format": "biome format ./src",
69
70
  "test": "vitest run --passWithNoTests",
70
71
  "test:watch": "vitest --passWithNoTests",
71
- "preset:update": "tsx ../../scripts/cli-template-update.ts",
72
- "scaffold:update": "tsx ../../scripts/template-update.ts"
72
+ "preset:update": "tsx ../../scripts/_cli-template-update.ts",
73
+ "scaffold:update": "tsx ../../scripts/_template-update.ts"
73
74
  }
74
75
  }