@einja/dev-cli 0.1.39 → 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 +54 -5
  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
package/README.md CHANGED
@@ -30,6 +30,93 @@ npx @einja/dev-cli init
30
30
 
31
31
  > **ポイント**: 設定を更新したいだけなら`sync`を使ってください。`init --force`はユーザーカスタマイズ(seedセクション)を上書きします。
32
32
 
33
+ ### 利用シーンのフロー
34
+
35
+ #### シナリオ1: ゼロから新規プロジェクト作成
36
+
37
+ ```mermaid
38
+ sequenceDiagram
39
+ participant U as ユーザー
40
+ participant C as create-einja-app
41
+ participant D as @einja/dev-cli
42
+
43
+ U->>C: npx create-einja-app my-project
44
+ activate C
45
+ C->>C: 対話プロンプト(名前・認証・ツール)
46
+ C->>C: テンプレート展開<br/>apps/, packages/, docker-compose,<br/>package.json, tsconfig, turbo.json...
47
+ C->>C: git init + pnpm install
48
+ C->>D: npx @einja/dev-cli init --force --no-backup
49
+ activate D
50
+ D->>D: .claude/ 生成
51
+ D->>D: docs/einja/ コピー
52
+ D->>D: CLAUDE.md 生成
53
+ D->>D: .mcp.json セットアップ
54
+ D->>D: symlinks 作成
55
+ D->>D: 依存関係インストール
56
+ D-->>C: 完了
57
+ deactivate D
58
+ C-->>U: プロジェクト作成完了
59
+ deactivate C
60
+ ```
61
+
62
+ #### シナリオ2: テンプレート更新の取り込み
63
+
64
+ ```mermaid
65
+ sequenceDiagram
66
+ participant U as ユーザー
67
+ participant C as create-einja-app
68
+ participant D as @einja/dev-cli
69
+
70
+ Note over U: CLIバージョンアップ後
71
+
72
+ U->>C: npx create-einja-app sync
73
+ activate C
74
+ C->>C: アプリ設定を差分マージ<br/>turbo.json, biome.json,<br/>docker-compose, .github/ 等
75
+ C-->>U: アプリ設定が最新に
76
+ deactivate C
77
+
78
+ U->>D: npx @einja/dev-cli sync
79
+ activate D
80
+ D->>D: AI環境を差分マージ<br/>.claude/, docs/einja/,<br/>CLAUDE.md, .mcp.json 等
81
+ D-->>U: AI環境が最新に
82
+ deactivate D
83
+
84
+ Note over C,D: 管轄が分離しているため順不同・独立
85
+ ```
86
+
87
+ #### シナリオ3: 既存プロジェクトに新規導入
88
+
89
+ ```mermaid
90
+ sequenceDiagram
91
+ participant U as ユーザー
92
+ participant D as @einja/dev-cli
93
+ participant C as create-einja-app
94
+
95
+ Note over U: 既にコードがあるプロジェクト
96
+
97
+ U->>D: npx @einja/dev-cli init
98
+ activate D
99
+ D->>D: .claude/ 生成
100
+ D->>D: docs/einja/ コピー
101
+ D->>D: CLAUDE.md 生成
102
+ D->>D: .mcp.json マージ(既存設定を保持)
103
+ D->>D: 依存関係チェック
104
+ D-->>U: AI開発環境セットアップ完了
105
+ deactivate D
106
+
107
+ alt アプリ設定も部分導入したい場合
108
+ U->>C: npx create-einja-app sync<br/>--categories tools,env,git
109
+ activate C
110
+ C->>C: 選択したカテゴリのみマージ<br/>biome.json, .envrc, .gitignore
111
+ C-->>U: 部分導入完了
112
+ deactivate C
113
+ end
114
+ ```
115
+
116
+ #### シナリオ4: 定期的なアップデート
117
+
118
+ シナリオ2と同じ。`dev-cli sync` と `create-einja-app sync` を必要に応じて実行。
119
+
33
120
  ## インストール
34
121
 
35
122
  ```bash
@@ -95,6 +182,7 @@ npx @einja/dev-cli sync --only hooks
95
182
  - `skills` - スキル定義
96
183
  - `hooks` - Git Hooks
97
184
  - `docs` - ステアリングドキュメント
185
+ - `scripts` - ユーティリティスクリプト
98
186
  - `env` - 環境設定ファイル(`.envrc`)
99
187
  - `tools` - 開発ツール設定(`.vscode/settings.json`)
100
188
 
@@ -102,7 +190,7 @@ npx @einja/dev-cli sync --only hooks
102
190
 
103
191
  ファイルには、同期動作を制御するマーカーがあります:
104
192
  - `@einja:managed` - 常にテンプレート版で上書き(共通ルール)
105
- - `@einja:seed` - 初回のみ追加、以降はローカル編集を保持(プロジェクト固有設定)
193
+ - `@einja:project-private` - 初回のみ追加、以降はローカル編集を保持(プロジェクト固有設定)
106
194
  - `@einja:excluded` - テンプレートのみに存在し、syncでコピーされない(テンプレート専用設定)
107
195
 
108
196
  詳細は [マーカー仕様書](docs/MARKER_SPECIFICATION.md) を参照してください。
package/dist/cli.js CHANGED
@@ -37,6 +37,7 @@ program
37
37
  .option("-y, --yes", "確認プロンプトをスキップ")
38
38
  .option("-j, --json", "JSON形式で結果を出力")
39
39
  .option("--no-backup", "変更前にバックアップを作成しない")
40
+ .option("--clean", "テンプレートから削除されたファイル(孤児)を削除")
40
41
  .option("--skip-deps", "依存関係のチェック・インストールをスキップ")
41
42
  .action(syncCommand);
42
43
  program
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAEhE,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,wBAAwB;AACxB,MAAM,mBAAmB,GAAG,MAAA,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,0CAAE,QAAQ,CAAC,mBAAmB,CAAC,CAAC;AAC3E,IAAI,mBAAmB,EAAE,CAAC;IACxB,OAAO,CAAC,IAAI,CACV,KAAK,CAAC,MAAM,CACV,+DAA+D,CAChE,CACF,CAAC;IACF,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,oCAAoC,CAAC,CAAC,CAAC;AACnE,CAAC;AAED,OAAO;KACJ,IAAI,CAAC,OAAO,CAAC;KACb,WAAW,CAAC,2CAA2C,CAAC;KACxD,OAAO,CAAC,OAAO,CAAC,CAAC;AAEpB,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,sBAAsB,CAAC;KACnC,MAAM,CAAC,uBAAuB,EAAE,4BAA4B,EAAE,SAAS,CAAC;KACxE,MAAM,CAAC,aAAa,EAAE,kBAAkB,CAAC;KACzC,MAAM,CAAC,aAAa,EAAE,cAAc,CAAC;KACrC,MAAM,CAAC,WAAW,EAAE,uBAAuB,CAAC;KAC5C,MAAM,CAAC,aAAa,EAAE,uBAAuB,CAAC;KAC9C,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC;KACnC,MAAM,CAAC,WAAW,CAAC,CAAC;AAEvB,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;AAE3E,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,eAAe,CAAC;KAC5B,MAAM,CAAC,yBAAyB,EAAE,oBAAoB,CAAC;KACvD,MAAM,CAAC,eAAe,EAAE,kBAAkB,CAAC;KAC3C,MAAM,CAAC,aAAa,EAAE,uBAAuB,CAAC;KAC9C,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC;KACnC,MAAM,CAAC,YAAY,EAAE,cAAc,CAAC;KACpC,MAAM,CAAC,aAAa,EAAE,kBAAkB,CAAC;KACzC,MAAM,CAAC,aAAa,EAAE,uBAAuB,CAAC;KAC9C,MAAM,CAAC,WAAW,CAAC,CAAC;AAEvB,OAAO;KACJ,OAAO,CAAC,mBAAmB,CAAC;KAC5B,WAAW,CAAC,uBAAuB,CAAC;KACpC,MAAM,CAAC,0BAA0B,EAAE,aAAa,CAAC;KACjD,MAAM,CAAC,qBAAqB,EAAE,SAAS,CAAC;KACxC,MAAM,CAAC,eAAe,CAAC,CAAC;AAE3B,OAAO,CAAC,KAAK,EAAE,CAAC"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAEhE,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,wBAAwB;AACxB,MAAM,mBAAmB,GAAG,MAAA,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,0CAAE,QAAQ,CAAC,mBAAmB,CAAC,CAAC;AAC3E,IAAI,mBAAmB,EAAE,CAAC;IACxB,OAAO,CAAC,IAAI,CACV,KAAK,CAAC,MAAM,CACV,+DAA+D,CAChE,CACF,CAAC;IACF,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,oCAAoC,CAAC,CAAC,CAAC;AACnE,CAAC;AAED,OAAO;KACJ,IAAI,CAAC,OAAO,CAAC;KACb,WAAW,CAAC,2CAA2C,CAAC;KACxD,OAAO,CAAC,OAAO,CAAC,CAAC;AAEpB,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,sBAAsB,CAAC;KACnC,MAAM,CAAC,uBAAuB,EAAE,4BAA4B,EAAE,SAAS,CAAC;KACxE,MAAM,CAAC,aAAa,EAAE,kBAAkB,CAAC;KACzC,MAAM,CAAC,aAAa,EAAE,cAAc,CAAC;KACrC,MAAM,CAAC,WAAW,EAAE,uBAAuB,CAAC;KAC5C,MAAM,CAAC,aAAa,EAAE,uBAAuB,CAAC;KAC9C,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC;KACnC,MAAM,CAAC,WAAW,CAAC,CAAC;AAEvB,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;AAE3E,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,eAAe,CAAC;KAC5B,MAAM,CAAC,yBAAyB,EAAE,oBAAoB,CAAC;KACvD,MAAM,CAAC,eAAe,EAAE,kBAAkB,CAAC;KAC3C,MAAM,CAAC,aAAa,EAAE,uBAAuB,CAAC;KAC9C,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC;KACnC,MAAM,CAAC,YAAY,EAAE,cAAc,CAAC;KACpC,MAAM,CAAC,aAAa,EAAE,kBAAkB,CAAC;KACzC,MAAM,CAAC,SAAS,EAAE,0BAA0B,CAAC;KAC7C,MAAM,CAAC,aAAa,EAAE,uBAAuB,CAAC;KAC9C,MAAM,CAAC,WAAW,CAAC,CAAC;AAEvB,OAAO;KACJ,OAAO,CAAC,mBAAmB,CAAC;KAC5B,WAAW,CAAC,uBAAuB,CAAC;KACpC,MAAM,CAAC,0BAA0B,EAAE,aAAa,CAAC;KACjD,MAAM,CAAC,qBAAqB,EAAE,SAAS,CAAC;KACxC,MAAM,CAAC,eAAe,CAAC,CAAC;AAE3B,OAAO,CAAC,KAAK,EAAE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAErD,wBAAsB,WAAW,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CA4NrE"}
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAEpD,wBAAsB,WAAW,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAuSrE"}
@@ -6,7 +6,7 @@ import ora from "ora";
6
6
  import { checkAndInstallDependencies } from "../lib/dependency-checker.js";
7
7
  import { backupDirectory } from "../lib/file-system.js";
8
8
  import { setupMcpConfig } from "../lib/mcp-config.js";
9
- import { copyDocTemplates, copySteeringDocs, createSymlinks, generateClaudeDirectory, generateClaudeMd, } from "../lib/merger.js";
9
+ import { copyDocTemplates, copyPresetDirectory, copyPresetFile, copySteeringDocs, createSymlinks, generateClaudeDirectory, generateClaudeMd, } from "../lib/merger.js";
10
10
  import { detectPackageManager } from "../lib/package-manager.js";
11
11
  import { loadPreset, presetExists } from "../lib/preset.js";
12
12
  export async function initCommand(options) {
@@ -19,6 +19,11 @@ export async function initCommand(options) {
19
19
  const templatesDir = path.join(einjaDocsDir, "templates");
20
20
  const steeringDir = path.join(einjaDocsDir, "steering");
21
21
  const claudeMdPath = path.join(cwd, "CLAUDE.md");
22
+ const instructionsDir = path.join(einjaDocsDir, "instructions");
23
+ const exampleDir = path.join(einjaDocsDir, "example");
24
+ const scriptsDir = path.join(cwd, "scripts");
25
+ const envrcPath = path.join(cwd, ".envrc");
26
+ const vscodeSettingsPath = path.join(cwd, ".vscode", "settings.json");
22
27
  console.log(chalk.blue("\n🚀 Einja Claude CLI - .claude セットアップ\n"));
23
28
  // 1. プリセット読み込み(デフォルト: default)
24
29
  const presetName = (_a = options.preset) !== null && _a !== void 0 ? _a : "default";
@@ -38,6 +43,11 @@ export async function initCommand(options) {
38
43
  console.log(" - settings.json をマージ・生成");
39
44
  console.log(` - ${templatesDir} にドキュメントテンプレートをコピー`);
40
45
  console.log(` - ${steeringDir} にステアリングドキュメントをコピー`);
46
+ console.log(` - ${instructionsDir} にinstructionsドキュメントをコピー`);
47
+ console.log(` - ${exampleDir} にexampleドキュメントをコピー`);
48
+ console.log(` - ${scriptsDir} にスクリプトをコピー`);
49
+ console.log(` - ${envrcPath} をコピー`);
50
+ console.log(` - ${vscodeSettingsPath} をコピー`);
41
51
  console.log(` - ${claudeMdPath} を生成`);
42
52
  console.log(" - シンボリックリンクを作成(symlinks.json に基づく)");
43
53
  console.log(" リンク先パスはインストール時に自動計算");
@@ -104,6 +114,61 @@ export async function initCommand(options) {
104
114
  console.error(chalk.red(error instanceof Error ? error.message : String(error)));
105
115
  process.exit(1);
106
116
  }
117
+ // 6A. instructionsドキュメントをコピー
118
+ spinner.start("instructionsドキュメントをセットアップ中...");
119
+ try {
120
+ await copyPresetDirectory(instructionsDir, "docs/einja/instructions");
121
+ spinner.succeed(`instructionsドキュメント: ${instructionsDir}`);
122
+ }
123
+ catch (error) {
124
+ spinner.fail("instructionsドキュメントのセットアップに失敗しました");
125
+ console.error(chalk.red(error instanceof Error ? error.message : String(error)));
126
+ process.exit(1);
127
+ }
128
+ // 6B. exampleドキュメントをコピー
129
+ spinner.start("exampleドキュメントをセットアップ中...");
130
+ try {
131
+ await copyPresetDirectory(exampleDir, "docs/einja/example");
132
+ spinner.succeed(`exampleドキュメント: ${exampleDir}`);
133
+ }
134
+ catch (error) {
135
+ spinner.fail("exampleドキュメントのセットアップに失敗しました");
136
+ console.error(chalk.red(error instanceof Error ? error.message : String(error)));
137
+ process.exit(1);
138
+ }
139
+ // 6C. scriptsディレクトリをコピー
140
+ spinner.start("スクリプトをセットアップ中...");
141
+ try {
142
+ await copyPresetDirectory(scriptsDir, "scripts");
143
+ spinner.succeed(`スクリプト: ${scriptsDir}`);
144
+ }
145
+ catch (error) {
146
+ spinner.fail("スクリプトのセットアップに失敗しました");
147
+ console.error(chalk.red(error instanceof Error ? error.message : String(error)));
148
+ process.exit(1);
149
+ }
150
+ // 6D. .envrcをコピー
151
+ spinner.start(".envrcをセットアップ中...");
152
+ try {
153
+ await copyPresetFile(envrcPath, ".envrc");
154
+ spinner.succeed(`.envrc: ${envrcPath}`);
155
+ }
156
+ catch (error) {
157
+ spinner.fail(".envrcのセットアップに失敗しました");
158
+ console.error(chalk.red(error instanceof Error ? error.message : String(error)));
159
+ process.exit(1);
160
+ }
161
+ // 6E. .vscode/settings.jsonをコピー
162
+ spinner.start(".vscode/settings.jsonをセットアップ中...");
163
+ try {
164
+ await copyPresetFile(vscodeSettingsPath, ".vscode/settings.json");
165
+ spinner.succeed(`.vscode/settings.json: ${vscodeSettingsPath}`);
166
+ }
167
+ catch (error) {
168
+ spinner.fail(".vscode/settings.jsonのセットアップに失敗しました");
169
+ console.error(chalk.red(error instanceof Error ? error.message : String(error)));
170
+ process.exit(1);
171
+ }
107
172
  // 7. CLAUDE.mdを生成
108
173
  spinner.start("CLAUDE.mdを生成中...");
109
174
  try {
@@ -202,6 +267,11 @@ export async function initCommand(options) {
202
267
  console.log(" - .claude/ Claude Code設定");
203
268
  console.log(" - docs/einja/templates/ ドキュメントテンプレート");
204
269
  console.log(" - docs/einja/steering/ ステアリングドキュメント");
270
+ console.log(" - docs/einja/instructions/ 操作手順書");
271
+ console.log(" - docs/einja/example/ サンプル・参考例");
272
+ console.log(" - scripts/ ユーティリティスクリプト");
273
+ console.log(" - .envrc 環境設定");
274
+ console.log(" - .vscode/ エディタ設定");
205
275
  console.log(" - CLAUDE.md プロジェクト設定");
206
276
  if (mcpSetupSuccess) {
207
277
  console.log(" - .mcp.json MCPサーバー設定");
@@ -1 +1 @@
1
- {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1B,OAAO,QAAQ,MAAM,UAAU,CAAC;AAChC,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,EAAE,2BAA2B,EAAE,MAAM,6BAA6B,CAAC;AAC1E,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EACL,gBAAgB,EAChB,mBAAmB,EACnB,cAAc,EACd,gBAAgB,EAChB,cAAc,EACd,uBAAuB,EACvB,gBAAgB,GACjB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAG3D,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,OAAoB;;IACpD,MAAM,OAAO,GAAG,GAAG,EAAE,CAAC;IACtB,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAC1B,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;IAC5C,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IACvC,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACjD,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;IAC1D,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;IACxD,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;IACjD,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,cAAc,CAAC,CAAC;IAChE,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC;IACtD,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;IAC7C,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;IAC3C,MAAM,kBAAkB,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,EAAE,eAAe,CAAC,CAAC;IAEtE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,0CAA0C,CAAC,CAAC,CAAC;IAEpE,+BAA+B;IAC/B,MAAM,UAAU,GAAG,MAAA,OAAO,CAAC,MAAM,mCAAI,SAAS,CAAC;IAE/C,IAAI,CAAC,CAAC,MAAM,YAAY,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC;QACtC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,YAAY,UAAU,YAAY,CAAC,CAAC,CAAC;QAC3D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC,CAAC;QACjD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,UAAU,CAAC,CAAC;IAE5C,yBAAyB;IACzB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACnB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC,CAAC;QACrD,OAAO,CAAC,GAAG,CAAC,OAAO,SAAS,MAAM,CAAC,CAAC;QACpC,OAAO,CAAC,GAAG,CAAC,cAAc,MAAM,CAAC,IAAI,UAAU,CAAC,CAAC;QACjD,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;QACrC,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;QACpC,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC;QACzC,OAAO,CAAC,GAAG,CAAC,OAAO,YAAY,oBAAoB,CAAC,CAAC;QACrD,OAAO,CAAC,GAAG,CAAC,OAAO,WAAW,oBAAoB,CAAC,CAAC;QACpD,OAAO,CAAC,GAAG,CAAC,OAAO,eAAe,0BAA0B,CAAC,CAAC;QAC9D,OAAO,CAAC,GAAG,CAAC,OAAO,UAAU,qBAAqB,CAAC,CAAC;QACpD,OAAO,CAAC,GAAG,CAAC,OAAO,UAAU,aAAa,CAAC,CAAC;QAC5C,OAAO,CAAC,GAAG,CAAC,OAAO,SAAS,OAAO,CAAC,CAAC;QACrC,OAAO,CAAC,GAAG,CAAC,OAAO,kBAAkB,OAAO,CAAC,CAAC;QAC9C,OAAO,CAAC,GAAG,CAAC,OAAO,YAAY,MAAM,CAAC,CAAC;QACvC,OAAO,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAC;QACpD,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;QACvC,OAAO,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC;QAC/C,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;QACpC,OAAO;IACT,CAAC;IAED,kBAAkB;IAClB,IAAI,MAAM,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QACnC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;YACnB,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC;gBACxC;oBACE,IAAI,EAAE,SAAS;oBACf,IAAI,EAAE,SAAS;oBACf,OAAO,EAAE,gCAAgC;oBACzC,OAAO,EAAE,KAAK;iBACf;aACF,CAAC,CAAC;YAEH,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC;gBAC5C,OAAO;YACT,CAAC;QACH,CAAC;QAED,WAAW;QACX,IAAI,OAAO,CAAC,MAAM,KAAK,KAAK,EAAE,CAAC;YAC7B,OAAO,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;YAC/B,MAAM,UAAU,GAAG,MAAM,eAAe,CAAC,SAAS,CAAC,CAAC;YACpD,OAAO,CAAC,OAAO,CAAC,aAAa,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;QAC5D,CAAC;QAED,cAAc;QACd,MAAM,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAC7B,CAAC;IAED,sBAAsB;IACtB,OAAO,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC;IAEpC,IAAI,CAAC;QACH,MAAM,EAAE,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QAC9B,MAAM,uBAAuB,CAAC,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;QACxD,OAAO,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;IACtC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;QACtC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACjF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,sBAAsB;IACtB,OAAO,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAEzC,IAAI,CAAC;QACH,MAAM,gBAAgB,CAAC,YAAY,CAAC,CAAC;QACrC,OAAO,CAAC,OAAO,CAAC,iBAAiB,YAAY,EAAE,CAAC,CAAC;IACnD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;QAC3C,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACjF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,sBAAsB;IACtB,OAAO,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAEzC,IAAI,CAAC;QACH,MAAM,gBAAgB,CAAC,WAAW,CAAC,CAAC;QACpC,OAAO,CAAC,OAAO,CAAC,iBAAiB,WAAW,EAAE,CAAC,CAAC;IAClD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;QAC3C,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACjF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,6BAA6B;IAC7B,OAAO,CAAC,KAAK,CAAC,+BAA+B,CAAC,CAAC;IAE/C,IAAI,CAAC;QACH,MAAM,mBAAmB,CAAC,eAAe,EAAE,yBAAyB,CAAC,CAAC;QACtE,OAAO,CAAC,OAAO,CAAC,uBAAuB,eAAe,EAAE,CAAC,CAAC;IAC5D,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC;QACjD,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACjF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,wBAAwB;IACxB,OAAO,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC;IAE1C,IAAI,CAAC;QACH,MAAM,mBAAmB,CAAC,UAAU,EAAE,oBAAoB,CAAC,CAAC;QAC5D,OAAO,CAAC,OAAO,CAAC,kBAAkB,UAAU,EAAE,CAAC,CAAC;IAClD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;QAC5C,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACjF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,wBAAwB;IACxB,OAAO,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;IAElC,IAAI,CAAC;QACH,MAAM,mBAAmB,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;QACjD,OAAO,CAAC,OAAO,CAAC,UAAU,UAAU,EAAE,CAAC,CAAC;IAC1C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;QACpC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACjF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,iBAAiB;IACjB,OAAO,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;IAEnC,IAAI,CAAC;QACH,MAAM,cAAc,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;QAC1C,OAAO,CAAC,OAAO,CAAC,WAAW,SAAS,EAAE,CAAC,CAAC;IAC1C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;QACrC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACjF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,gCAAgC;IAChC,OAAO,CAAC,KAAK,CAAC,kCAAkC,CAAC,CAAC;IAElD,IAAI,CAAC;QACH,MAAM,cAAc,CAAC,kBAAkB,EAAE,uBAAuB,CAAC,CAAC;QAClE,OAAO,CAAC,OAAO,CAAC,0BAA0B,kBAAkB,EAAE,CAAC,CAAC;IAClE,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC;QACpD,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACjF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,kBAAkB;IAClB,OAAO,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;IAElC,IAAI,CAAC;QACH,MAAM,gBAAgB,CAAC,YAAY,EAAE,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAC9D,OAAO,CAAC,OAAO,CAAC,cAAc,YAAY,EAAE,CAAC,CAAC;IAChD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;QACpC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACjF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,kBAAkB;IAClB,OAAO,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC;IAEtC,IAAI,CAAC;QACH,MAAM,aAAa,GAAG,MAAM,cAAc,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;QAE5D,IAAI,aAAa,CAAC,OAAO,GAAG,CAAC,IAAI,aAAa,CAAC,QAAQ,GAAG,CAAC,EAAE,CAAC;YAC5D,MAAM,YAAY,GAAG,aAAa,CAAC,OAAO,GAAG,aAAa,CAAC,QAAQ,CAAC;YACpE,OAAO,CAAC,OAAO,CAAC,cAAc,YAAY,MAAM,CAAC,CAAC;YAElD,UAAU;YACV,IAAI,aAAa,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAClC,KAAK,MAAM,GAAG,IAAI,aAAa,CAAC,IAAI,EAAE,CAAC;oBACrC,IAAI,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;wBACpD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,GAAG,EAAE,CAAC,CAAC,CAAC;oBAC1C,CAAC;yBAAM,IAAI,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;wBACpC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC,CAAC,CAAC;oBACxC,CAAC;gBACH,CAAC;YACH,CAAC;YAED,IAAI,aAAa,CAAC,QAAQ,GAAG,CAAC,EAAE,CAAC;gBAC/B,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,MAAM,CAAC,SAAS,aAAa,CAAC,QAAQ,mBAAmB,CAAC,CACjE,CAAC;YACJ,CAAC;QACH,CAAC;aAAM,IAAI,aAAa,CAAC,OAAO,GAAG,CAAC,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACjE,OAAO,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;YACxC,KAAK,MAAM,GAAG,IAAI,aAAa,CAAC,IAAI,EAAE,CAAC;gBACrC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,GAAG,EAAE,CAAC,CAAC,CAAC;YAC1C,CAAC;QACH,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAClC,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;QACxC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACjF,2BAA2B;IAC7B,CAAC;IAED,uBAAuB;IACvB,OAAO,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC;IAEvC,cAAc;IACd,IAAI,eAAe,GAAG,KAAK,CAAC;IAE5B,IAAI,CAAC;QACH,MAAM,SAAS,GAAG,MAAM,cAAc,CAAC,GAAG,CAAC,CAAC;QAE5C,IAAI,SAAS,CAAC,OAAO,EAAE,CAAC;YACtB,OAAO,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;QAClD,CAAC;aAAM,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;YAC9B,OAAO,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC;YACpD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,SAAS,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;YACtD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,2BAA2B,CAAC,CAAC,CAAC;QACzD,CAAC;aAAM,IAAI,SAAS,CAAC,MAAM,EAAE,CAAC;YAC5B,eAAe,GAAG,IAAI,CAAC;YACvB,MAAM,YAAY,GAChB,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM;gBAC7B,SAAS,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM;gBACnC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC;YACpC,OAAO,CAAC,OAAO,CAAC,cAAc,YAAY,WAAW,CAAC,CAAC;YACvD,IAAI,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACtC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,aAAa,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;YAC7E,CAAC;YACD,IAAI,SAAS,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC5C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,aAAa,SAAS,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;YACpF,CAAC;YACD,IAAI,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC1C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;YAChF,CAAC;QACH,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;QACzC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACnF,CAAC;IAED,sBAAsB;IACtB,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;IACvD,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,CAAC,MAAM,EAAE,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;QAC9F,MAAM,EAAE,GAAG,MAAM,oBAAoB,CAAC,GAAG,CAAC,CAAC;QAC3C,MAAM,2BAA2B,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,YAAY,EAAE,EAAE,EAAE;YACrE,GAAG,EAAE,OAAO,CAAC,GAAG;YAChB,MAAM,EAAE,OAAO,CAAC,MAAM;SACvB,CAAC,CAAC;IACL,CAAC;IAED,cAAc;IACd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC;IAC1C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC;IACxC,OAAO,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAC;IACpD,OAAO,CAAC,GAAG,CAAC,2CAA2C,CAAC,CAAC;IACzD,OAAO,CAAC,GAAG,CAAC,2CAA2C,CAAC,CAAC;IACzD,OAAO,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAC;IAClD,OAAO,CAAC,GAAG,CAAC,uCAAuC,CAAC,CAAC;IACrD,OAAO,CAAC,GAAG,CAAC,qCAAqC,CAAC,CAAC;IACnD,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;IAC3C,OAAO,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC;IAC7C,OAAO,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC;IAC/C,IAAI,eAAe,EAAE,CAAC;QACpB,OAAO,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAC;IAClD,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;IACrC,OAAO,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC;IACjD,OAAO,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAC;IAClD,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;AACzC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"list.js","sourceRoot":"","sources":["../../src/commands/list.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD,MAAM,CAAC,KAAK,UAAU,WAAW;;IAC/B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC;IAE7C,MAAM,OAAO,GAAG,MAAM,aAAa,EAAE,CAAC;IAEtC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC;QAC9C,OAAO;IACT,CAAC;IAED,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QAC5C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;QACrD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;QAErD,IAAI,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QAC7E,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;IAChC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,wCAAwC,MAAA,MAAA,OAAO,CAAC,CAAC,CAAC,0CAAE,IAAI,mCAAI,SAAS,EAAE,CAAC,CAAC,CAAC;AACnG,CAAC"}
1
+ {"version":3,"file":"list.js","sourceRoot":"","sources":["../../src/commands/list.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,MAAM,CAAC,KAAK,UAAU,WAAW;;IAC/B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC;IAE7C,MAAM,OAAO,GAAG,MAAM,aAAa,EAAE,CAAC;IAEtC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC;QAC9C,OAAO;IACT,CAAC;IAED,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QAC5C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;QACrD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;QAErD,IAAI,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QAC7E,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;IAChC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,wCAAwC,MAAA,MAAA,OAAO,CAAC,CAAC,CAAC,0CAAE,IAAI,mCAAI,SAAS,EAAE,CAAC,CAAC,CAAC;AACnG,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../../src/commands/sync.ts"],"names":[],"mappings":"AAsBA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAiDrD;;;GAGG;AACH,wBAAsB,WAAW,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAqerE"}
1
+ {"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../../src/commands/sync.ts"],"names":[],"mappings":"AAuBA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAiDpD;;;GAGG;AACH,wBAAsB,WAAW,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CA2qBrE"}
@@ -11,17 +11,18 @@ import { BackupManager } from "../lib/sync/backup-manager.js";
11
11
  import { BatchProcessor } from "../lib/sync/batch-processor.js";
12
12
  import { createValidationErrorMessage, validateCategories, } from "../lib/sync/category-validator.js";
13
13
  import { ConflictReporter } from "../lib/sync/conflict-reporter.js";
14
+ import { OrphanCleaner } from "../lib/sync/orphan-cleaner.js";
14
15
  import { DiffEngine } from "../lib/sync/diff-engine.js";
15
16
  import { FileFilter } from "../lib/sync/file-filter.js";
16
17
  import { JsonProcessor } from "../lib/sync/json-processor.js";
17
18
  import { MarkerProcessor } from "../lib/sync/marker-processor.js";
18
19
  import { MetadataManager } from "../lib/sync/metadata-manager.js";
19
- import { SeedSynchronizer } from "../lib/sync/seed-synchronizer.js";
20
+ import { ProjectPrivateSynchronizer } from "../lib/sync/project-private-synchronizer.js";
20
21
  /**
21
22
  * ファイル内容にマーカーが含まれているかチェック
22
23
  */
23
24
  function hasMarkers(content) {
24
- return content.includes("@einja:managed:start") || content.includes("@einja:seed:start");
25
+ return content.includes("@einja:managed:start") || content.includes("@einja:project-private:start") || content.includes("@einja:seed:start");
25
26
  }
26
27
  /**
27
28
  * マーカーベースのマージを実行する
@@ -29,16 +30,16 @@ function hasMarkers(content) {
29
30
  * @param localContent - ローカルファイルの内容
30
31
  * @param templateContent - テンプレートファイルの内容
31
32
  * @param markerProcessor - MarkerProcessorインスタンス
32
- * @param seedSynchronizer - SeedSynchronizerインスタンス
33
+ * @param projectPrivateSynchronizer - ProjectPrivateSynchronizerインスタンス
33
34
  * @returns マージ後の内容
34
35
  */
35
- function mergeWithMarkers(localContent, templateContent, markerProcessor, seedSynchronizer) {
36
+ function mergeWithMarkers(localContent, templateContent, markerProcessor, projectPrivateSynchronizer) {
36
37
  // 1. ローカルのセクションをパース
37
38
  const localSections = markerProcessor.parseMarkers(localContent);
38
39
  // 2. managedセクションをテンプレート版で置換
39
40
  const afterManaged = markerProcessor.replaceManaged(localSections, templateContent);
40
- // 3. seedセクションを同期(ローカルに存在しないseedを追加)
41
- const finalContent = seedSynchronizer.syncSeeds(afterManaged, templateContent);
41
+ // 3. project-privateセクションを同期(ローカルに存在しないproject-privateを追加)
42
+ const finalContent = projectPrivateSynchronizer.syncProjectPrivateSections(afterManaged, templateContent);
42
43
  return finalContent;
43
44
  }
44
45
  /**
@@ -58,6 +59,7 @@ function log(message, options) {
58
59
  * テンプレートからの更新を同期し、ローカル変更を保持する
59
60
  */
60
61
  export async function syncCommand(options) {
62
+ var _a, _b;
61
63
  // --jsonオプション時はspinnerを標準エラー出力に変更
62
64
  const spinner = ora({ stream: options.json ? process.stderr : process.stdout });
63
65
  const cwd = process.cwd();
@@ -88,8 +90,9 @@ export async function syncCommand(options) {
88
90
  const backupManager = new BackupManager(cwd);
89
91
  const batchProcessor = new BatchProcessor(10); // バッチサイズ: 10ファイル
90
92
  const markerProcessor = new MarkerProcessor();
91
- const seedSynchronizer = new SeedSynchronizer();
93
+ const projectPrivateSynchronizer = new ProjectPrivateSynchronizer();
92
94
  const jsonProcessor = new JsonProcessor();
95
+ const orphanCleaner = new OrphanCleaner(cwd, fileFilter);
93
96
  // 3. メタデータ読み込み
94
97
  spinner.start("メタデータを読み込み中...");
95
98
  const metadata = await metadataManager.load();
@@ -117,12 +120,88 @@ export async function syncCommand(options) {
117
120
  const changedFiles = changedFilesFlags
118
121
  .filter((result) => result.changed)
119
122
  .map((result) => result.target);
123
+ // 孤児検出(常に実行)
124
+ const currentTemplateFiles = targets.map((t) => t.path);
125
+ const orphans = await orphanCleaner.detectOrphans(metadata, currentTemplateFiles, categories);
126
+ const orphanReport = orphanCleaner.createReport(orphans);
120
127
  // --force オプション時は全ファイルを対象にする
121
128
  const filesToProcess = options.force ? targets : changedFiles;
122
- if (filesToProcess.length === 0) {
129
+ if (filesToProcess.length === 0 && !orphanReport.hasOrphans) {
123
130
  log(chalk.green("\n✅ すでに最新です"), options);
124
131
  return;
125
132
  }
133
+ // 変更ファイルなし & 孤児のみの場合
134
+ if (filesToProcess.length === 0 && orphanReport.hasOrphans) {
135
+ spinner.succeed("✓ 変更ファイルなし");
136
+ if (options.dryRun) {
137
+ log(orphanCleaner.formatReport(orphanReport), options);
138
+ if (!options.clean) {
139
+ log(orphanCleaner.formatHelpMessage(), options);
140
+ }
141
+ return;
142
+ }
143
+ // --clean 時: 孤児削除処理へ進む
144
+ if (options.clean) {
145
+ const existingOrphans = orphanReport.orphans.filter((o) => o.exists);
146
+ if (existingOrphans.length > 0) {
147
+ log(orphanCleaner.formatReport(orphanReport), options);
148
+ // 確認プロンプト(--yes でスキップ)
149
+ let proceedClean = (_a = options.yes) !== null && _a !== void 0 ? _a : false;
150
+ if (!options.yes) {
151
+ const { confirm } = await inquirer.prompt([
152
+ {
153
+ type: "confirm",
154
+ name: "confirm",
155
+ message: `${existingOrphans.length}ファイルを削除します。続行しますか?`,
156
+ default: false,
157
+ },
158
+ ]);
159
+ proceedClean = confirm;
160
+ }
161
+ if (proceedClean) {
162
+ // バックアップ作成
163
+ if (options.backup !== false) {
164
+ const orphanPaths = existingOrphans.map((o) => o.path);
165
+ await backupManager.backupFiles(orphanPaths);
166
+ }
167
+ // ファイル削除
168
+ let deletedCount = 0;
169
+ for (const orphan of existingOrphans) {
170
+ // パストラバーサル防御
171
+ const normalized = path.normalize(orphan.path);
172
+ if (normalized.includes('..') || path.isAbsolute(normalized)) {
173
+ log(` ⚠️ スキップ(不正なパス): ${orphan.path}`, options);
174
+ continue;
175
+ }
176
+ const fullPath = path.join(cwd, orphan.path);
177
+ await fs.remove(fullPath);
178
+ log(` 🗑️ 削除: ${orphan.path}`, options);
179
+ deletedCount++;
180
+ }
181
+ // メタデータから削除
182
+ const orphanPaths = orphanReport.orphans.map((o) => o.path);
183
+ const cleanedMetadata = metadataManager.removeFiles(metadata, orphanPaths);
184
+ Object.assign(metadata, cleanedMetadata);
185
+ await metadataManager.save(metadata);
186
+ log(chalk.green(`\n✅ 孤児削除完了: ${deletedCount}ファイル`), options);
187
+ }
188
+ }
189
+ else {
190
+ // ディスク上に存在しない孤児のみ → メタデータだけクリーン
191
+ const orphanPaths = orphanReport.orphans.map((o) => o.path);
192
+ const cleanedMetadata = metadataManager.removeFiles(metadata, orphanPaths);
193
+ Object.assign(metadata, cleanedMetadata);
194
+ await metadataManager.save(metadata);
195
+ log(chalk.green("\n✅ 孤児メタデータをクリーンアップしました"), options);
196
+ }
197
+ return;
198
+ }
199
+ // --clean なし: 警告表示のみ
200
+ log(chalk.green("\n✅ すでに最新です"), options);
201
+ log(orphanCleaner.formatReport(orphanReport), options);
202
+ log(orphanCleaner.formatHelpMessage(), options);
203
+ return;
204
+ }
126
205
  if (options.force) {
127
206
  spinner.succeed(`✓ ${filesToProcess.length}ファイルを強制同期`);
128
207
  }
@@ -158,7 +237,7 @@ export async function syncCommand(options) {
158
237
  // jsonPathsの取得(メタデータに存在しない場合はデフォルト値)
159
238
  const jsonPaths = metadata.jsonPaths || {
160
239
  managed: {},
161
- seed: {},
240
+ "project-private": {},
162
241
  };
163
242
  // ファイル名のみを抽出(create-einja-appの登録形式に合わせる)
164
243
  const fileName = target.path.split("/").pop() || target.path;
@@ -219,6 +298,13 @@ export async function syncCommand(options) {
219
298
  else {
220
299
  log(chalk.green("✅ コンフリクトは検出されませんでした。\n"), options);
221
300
  }
301
+ // 孤児レポート表示
302
+ if (orphanReport.hasOrphans) {
303
+ log(orphanCleaner.formatReport(orphanReport), options);
304
+ if (!options.clean) {
305
+ log(orphanCleaner.formatHelpMessage(), options);
306
+ }
307
+ }
222
308
  return;
223
309
  }
224
310
  // 7. 確認プロンプト(--yes指定時はスキップ)
@@ -269,7 +355,14 @@ export async function syncCommand(options) {
269
355
  };
270
356
  }
271
357
  // 既存ファイルの内容を読み込み
272
- const localContent = await fs.readFile(projectPath, "utf-8");
358
+ let localContent = await fs.readFile(projectPath, "utf-8");
359
+ // 自動マイグレーション: 旧@einja:seedを検出したら@einja:project-privateに変換
360
+ if (localContent.includes("@einja:seed:")) {
361
+ const migratedContent = markerProcessor.migrateLegacySeedMarkers(localContent);
362
+ // マイグレーション結果をファイルに書き戻す
363
+ await fs.writeFile(projectPath, migratedContent, "utf-8");
364
+ localContent = migratedContent;
365
+ }
273
366
  // JSONファイルの場合はJsonProcessorを使用
274
367
  if (target.path.endsWith(".json")) {
275
368
  try {
@@ -278,7 +371,7 @@ export async function syncCommand(options) {
278
371
  // jsonPathsの取得(メタデータに存在しない場合はデフォルト値)
279
372
  const jsonPaths = metadata.jsonPaths || {
280
373
  managed: {},
281
- seed: {},
374
+ "project-private": {},
282
375
  };
283
376
  // ファイル名のみを抽出(create-einja-appの登録形式に合わせる)
284
377
  const fileName = target.path.split("/").pop() || target.path;
@@ -314,6 +407,29 @@ export async function syncCommand(options) {
314
407
  const templateHasMarkers = hasMarkers(templateContent);
315
408
  const localHasMarkers = hasMarkers(localContent);
316
409
  if (templateHasMarkers || localHasMarkers) {
410
+ // project-privateのみ(managedなし)のファイル処理
411
+ const hasManaged = localContent.includes("@einja:managed:start") ||
412
+ templateContent.includes("@einja:managed:start");
413
+ const hasProjectPrivate = localContent.includes("@einja:project-private:start") ||
414
+ localContent.includes("@einja:seed:start") ||
415
+ templateContent.includes("@einja:project-private:start") ||
416
+ templateContent.includes("@einja:seed:start");
417
+ if (!hasManaged && hasProjectPrivate) {
418
+ // managedなしファイル: 3方向マージ + project-private保持
419
+ const fileMetadata = metadata.files[target.path];
420
+ const baseContent = fileMetadata
421
+ ? (await metadataManager.getBaseContent(target.templatePath)).content
422
+ : "";
423
+ const result = projectPrivateSynchronizer.syncProjectPrivateOnlyFile(localContent, templateContent, baseContent, diffEngine);
424
+ return {
425
+ target,
426
+ templateContent,
427
+ mergeContent: result.content,
428
+ success: result.success,
429
+ conflicts: result.conflicts,
430
+ action: "merged",
431
+ };
432
+ }
317
433
  // マーカーベースのマージ
318
434
  // 1. マーカーバリデーション
319
435
  const templateValidation = markerProcessor.validateMarkers(templateContent);
@@ -335,7 +451,7 @@ export async function syncCommand(options) {
335
451
  };
336
452
  }
337
453
  // 2. マーカーベースのマージを実行
338
- const mergedContent = mergeWithMarkers(localContent, templateContent, markerProcessor, seedSynchronizer);
454
+ const mergedContent = mergeWithMarkers(localContent, templateContent, markerProcessor, projectPrivateSynchronizer);
339
455
  return {
340
456
  target,
341
457
  templateContent,
@@ -404,6 +520,51 @@ export async function syncCommand(options) {
404
520
  }
405
521
  }
406
522
  spinner.succeed("ファイルマージ完了");
523
+ // 孤児削除処理(--clean 時のみ)
524
+ let orphansDeleted = 0;
525
+ if (options.clean && orphanReport.hasOrphans) {
526
+ const existingOrphans = orphanReport.orphans.filter((o) => o.exists);
527
+ if (existingOrphans.length > 0) {
528
+ log(orphanCleaner.formatReport(orphanReport), options);
529
+ // 確認プロンプト(--yes でスキップ)
530
+ let proceedClean = (_b = options.yes) !== null && _b !== void 0 ? _b : false;
531
+ if (!options.yes) {
532
+ const { confirm } = await inquirer.prompt([
533
+ {
534
+ type: "confirm",
535
+ name: "confirm",
536
+ message: `${existingOrphans.length}ファイルを削除します。続行しますか?`,
537
+ default: false,
538
+ },
539
+ ]);
540
+ proceedClean = confirm;
541
+ }
542
+ if (proceedClean) {
543
+ // バックアップ作成
544
+ if (options.backup !== false) {
545
+ const orphanPaths = existingOrphans.map((o) => o.path);
546
+ await backupManager.backupFiles(orphanPaths);
547
+ }
548
+ // ファイル削除
549
+ for (const orphan of existingOrphans) {
550
+ // パストラバーサル防御
551
+ const normalized = path.normalize(orphan.path);
552
+ if (normalized.includes('..') || path.isAbsolute(normalized)) {
553
+ log(` ⚠️ スキップ(不正なパス): ${orphan.path}`, options);
554
+ continue;
555
+ }
556
+ const fullPath = path.join(cwd, orphan.path);
557
+ await fs.remove(fullPath);
558
+ log(` 🗑️ 削除: ${orphan.path}`, options);
559
+ orphansDeleted++;
560
+ }
561
+ // メタデータから削除
562
+ const orphanPaths = orphanReport.orphans.map((o) => o.path);
563
+ const cleanedMetadata = metadataManager.removeFiles(metadata, orphanPaths);
564
+ Object.assign(metadata, cleanedMetadata);
565
+ }
566
+ }
567
+ }
407
568
  // 10. メタデータ保存
408
569
  await metadataManager.save(metadata);
409
570
  // 11. コンフリクトレポート
@@ -419,12 +580,15 @@ export async function syncCommand(options) {
419
580
  succeeded: successCount,
420
581
  conflicts: conflictReport.totalConflicts,
421
582
  skipped: skipCount,
583
+ orphansDetected: orphanReport.total,
584
+ orphansDeleted,
422
585
  },
423
586
  files: jsonFiles,
424
587
  metadata: {
425
588
  version: metadata.version,
426
589
  syncedAt: new Date().toISOString(),
427
590
  },
591
+ orphans: orphanReport.hasOrphans ? orphanReport.orphans : undefined,
428
592
  };
429
593
  // JSON出力は標準出力へ
430
594
  console.log(JSON.stringify(jsonOutput, null, 2));
@@ -441,6 +605,16 @@ export async function syncCommand(options) {
441
605
  log(conflictReporter.formatReport(conflictReport), options);
442
606
  log(conflictReporter.formatHelpMessage(), options);
443
607
  }
608
+ // 孤児レポート
609
+ if (orphanReport.hasOrphans) {
610
+ if (options.clean && orphansDeleted > 0) {
611
+ log(` - 孤児削除: ${orphansDeleted}ファイル`, options);
612
+ }
613
+ else {
614
+ log(orphanCleaner.formatReport(orphanReport), options);
615
+ log(orphanCleaner.formatHelpMessage(), options);
616
+ }
617
+ }
444
618
  }
445
619
  // 13. 依存関係チェック+インストール
446
620
  if (!options.skipDeps) {
@@ -455,7 +629,7 @@ export async function syncCommand(options) {
455
629
  );
456
630
  }
457
631
  }
458
- catch (_a) {
632
+ catch (_c) {
459
633
  // プリセット読み込みエラーは無視
460
634
  }
461
635
  }