@einja/dev-cli 0.1.20 → 0.1.23

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 (49) hide show
  1. package/dist/commands/task-loop/lib/branch-manager.d.ts +2 -2
  2. package/dist/commands/task-loop/lib/branch-manager.d.ts.map +1 -1
  3. package/dist/commands/task-loop/lib/branch-manager.js +133 -28
  4. package/dist/commands/task-loop/lib/branch-manager.js.map +1 -1
  5. package/dist/commands/task-loop/lib/branch-manager.test.js +186 -161
  6. package/dist/commands/task-loop/lib/branch-manager.test.js.map +1 -1
  7. package/dist/commands/task-loop/lib/branch-selector.d.ts.map +1 -1
  8. package/dist/commands/task-loop/lib/branch-selector.js +28 -69
  9. package/dist/commands/task-loop/lib/branch-selector.js.map +1 -1
  10. package/dist/commands/task-loop/lib/horizontal-split-detector.d.ts +25 -0
  11. package/dist/commands/task-loop/lib/horizontal-split-detector.d.ts.map +1 -0
  12. package/dist/commands/task-loop/lib/horizontal-split-detector.js +72 -0
  13. package/dist/commands/task-loop/lib/horizontal-split-detector.js.map +1 -0
  14. package/dist/commands/task-loop/lib/horizontal-split-detector.test.d.ts +2 -0
  15. package/dist/commands/task-loop/lib/horizontal-split-detector.test.d.ts.map +1 -0
  16. package/dist/commands/task-loop/lib/horizontal-split-detector.test.js +177 -0
  17. package/dist/commands/task-loop/lib/horizontal-split-detector.test.js.map +1 -0
  18. package/dist/commands/task-loop/lib/issue-validator.d.ts +36 -0
  19. package/dist/commands/task-loop/lib/issue-validator.d.ts.map +1 -0
  20. package/dist/commands/task-loop/lib/issue-validator.js +400 -0
  21. package/dist/commands/task-loop/lib/issue-validator.js.map +1 -0
  22. package/dist/commands/task-loop/lib/pull-request-manager.d.ts +26 -0
  23. package/dist/commands/task-loop/lib/pull-request-manager.d.ts.map +1 -1
  24. package/dist/commands/task-loop/lib/pull-request-manager.js +121 -1
  25. package/dist/commands/task-loop/lib/pull-request-manager.js.map +1 -1
  26. package/package.json +1 -1
  27. package/presets/default/.claude/agents/einja/backend-architect.md +3 -1
  28. package/presets/default/.claude/agents/einja/design-engineer.md +3 -1
  29. package/presets/default/.claude/agents/einja/docs/docs-updater.md +1 -1
  30. package/presets/default/.claude/agents/einja/frontend-architect.md +3 -1
  31. package/presets/default/.claude/agents/einja/frontend-coder.md +3 -1
  32. package/presets/default/.claude/agents/einja/specs/spec-tasks-generator.md +172 -176
  33. package/presets/default/.claude/agents/einja/specs/spec-tasks-validator.md +150 -0
  34. package/presets/default/.claude/agents/einja/task/task-executer.md +19 -11
  35. package/presets/default/.claude/commands/einja/spec-create.md +85 -14
  36. package/presets/default/.claude/commands/einja/task-exec.md +7 -7
  37. package/presets/default/.claude/hooks/einja/biome-format.sh +2 -2
  38. package/presets/default/.claude/skills/einja-general-context-loader/SKILL.md +1 -1
  39. package/presets/default/.claude/skills/einja-spec-context-loader/SKILL.md +4 -4
  40. package/scaffolds/instructions/deployment-setup.md +43 -2
  41. package/scaffolds/instructions/environment-setup.md +6 -18
  42. package/scaffolds/instructions/task-execute.md +31 -31
  43. package/scaffolds/instructions/task-vibe-kanban-loop.md +5 -5
  44. package/scaffolds/steering/acceptance-criteria-and-qa-guide.md +1 -1
  45. package/scaffolds/steering/development-workflow.md +21 -21
  46. package/scaffolds/steering/infrastructure/deployment.md +18 -7
  47. package/scaffolds/steering/infrastructure/environment-variables.md +11 -8
  48. package/scaffolds/steering/task-management.md +131 -7
  49. package/presets/default/.claude/agents/einja/task/task-committer.md +0 -88
@@ -0,0 +1,400 @@
1
+ /**
2
+ * GitHub Issue タスク一覧バリデーター
3
+ *
4
+ * タスク管理ガイドラインに基づいてフォーマットを検証
5
+ */
6
+ import { detectHorizontalSplit } from "./horizontal-split-detector.js";
7
+ import { parseIssueBody } from "./issue-parser.js";
8
+ /** 必須メタデータ一覧 */
9
+ const REQUIRED_METADATA = [
10
+ "要件",
11
+ "依存関係",
12
+ "完了条件",
13
+ "対応設計",
14
+ "シナリオテスト",
15
+ ];
16
+ /**
17
+ * Issue本文をバリデーション
18
+ */
19
+ export function validateIssueBody(body) {
20
+ const errors = [];
21
+ // 🔴 横切り検出を最優先で実行
22
+ const dummyIssue = { number: 0, title: "", body, state: "open" };
23
+ const parsedIssue = parseIssueBody(dummyIssue);
24
+ for (const phase of parsedIssue.phases) {
25
+ const result = detectHorizontalSplit(phase);
26
+ if (result) {
27
+ errors.push({
28
+ type: "horizontal_split_detected",
29
+ phaseNumber: phase.number,
30
+ message: result.reason,
31
+ fixSuggestion: result.suggestion,
32
+ });
33
+ }
34
+ }
35
+ // 横切りエラーがあれば他のチェックをスキップして即座に返却
36
+ if (errors.some(e => e.type === "horizontal_split_detected")) {
37
+ return { isValid: false, errors };
38
+ }
39
+ // 既存のチェック
40
+ errors.push(...validatePhaseStructure(body));
41
+ errors.push(...validateIndentation(body));
42
+ errors.push(...validateMetadata(body));
43
+ errors.push(...validateDependencies(body));
44
+ return {
45
+ isValid: errors.length === 0,
46
+ errors,
47
+ };
48
+ }
49
+ /**
50
+ * 解析済みIssueをバリデーション
51
+ */
52
+ export function validateParsedIssue(parsedIssue) {
53
+ const errors = [];
54
+ // 🔴 横切り検出を最優先で実行
55
+ for (const phase of parsedIssue.phases) {
56
+ const result = detectHorizontalSplit(phase);
57
+ if (result) {
58
+ errors.push({
59
+ type: "horizontal_split_detected",
60
+ phaseNumber: phase.number,
61
+ message: result.reason,
62
+ fixSuggestion: result.suggestion,
63
+ });
64
+ }
65
+ }
66
+ // 横切りエラーがあれば他のチェックをスキップして即座に返却
67
+ if (errors.some(e => e.type === "horizontal_split_detected")) {
68
+ return { isValid: false, errors };
69
+ }
70
+ // Phase番号の連番チェック
71
+ const phaseNumbers = parsedIssue.phases
72
+ .map((p) => p.number)
73
+ .sort((a, b) => a - b);
74
+ for (let i = 0; i < phaseNumbers.length; i++) {
75
+ const expected = i + 1;
76
+ const actual = phaseNumbers[i];
77
+ // Phase 99 はドキュメント反映専用なので例外
78
+ if (actual !== expected && actual !== 99) {
79
+ errors.push({
80
+ type: "phase_number_discontinuous",
81
+ phaseNumber: actual,
82
+ message: `Phase番号が不連続です: 期待=${expected}, 実際=${actual}`,
83
+ fixSuggestion: `Phase ${actual} を Phase ${expected} に変更してください`,
84
+ });
85
+ }
86
+ }
87
+ // Phase数チェック(99を除く)
88
+ const regularPhases = parsedIssue.phases.filter((p) => p.number !== 99);
89
+ if (regularPhases.length > 3) {
90
+ errors.push({
91
+ type: "too_many_phases",
92
+ message: `Phase数が多すぎます: ${regularPhases.length}個(推奨: 2-3個)`,
93
+ fixSuggestion: "関連するPhaseを統合してください",
94
+ });
95
+ }
96
+ // タスクグループID形式チェック
97
+ for (const phase of parsedIssue.phases) {
98
+ for (const taskGroup of phase.taskGroups) {
99
+ if (!isValidTaskGroupId(taskGroup.id)) {
100
+ errors.push({
101
+ type: "invalid_task_group_id",
102
+ taskGroupId: taskGroup.id,
103
+ phaseNumber: phase.number,
104
+ message: `タスクグループIDが不正です: ${taskGroup.id}`,
105
+ fixSuggestion: "X.Y 形式(例: 1.1, 2.3)で記述してください",
106
+ });
107
+ }
108
+ // タスクID形式チェック
109
+ for (const task of taskGroup.tasks) {
110
+ if (!isValidTaskId(task.id, taskGroup.id)) {
111
+ errors.push({
112
+ type: "invalid_task_id",
113
+ taskId: task.id,
114
+ taskGroupId: taskGroup.id,
115
+ message: `タスクIDが不正です: ${task.id}`,
116
+ fixSuggestion: `${taskGroup.id}.N 形式(例: ${taskGroup.id}.1)で記述してください`,
117
+ });
118
+ }
119
+ }
120
+ }
121
+ }
122
+ // 依存関係の参照先チェック
123
+ const allTaskGroupIds = getAllTaskGroupIds(parsedIssue);
124
+ for (const phase of parsedIssue.phases) {
125
+ for (const taskGroup of phase.taskGroups) {
126
+ for (const dep of taskGroup.dependencies) {
127
+ // "Phase X完了" 形式はスキップ
128
+ if (dep.startsWith("Phase "))
129
+ continue;
130
+ // Issue参照 (#123) はスキップ
131
+ if (dep.startsWith("#"))
132
+ continue;
133
+ if (!allTaskGroupIds.has(dep)) {
134
+ errors.push({
135
+ type: "missing_dependency_target",
136
+ taskGroupId: taskGroup.id,
137
+ message: `存在しない依存関係: ${dep}(タスクグループ ${taskGroup.id})`,
138
+ fixSuggestion: `依存先 ${dep} が存在するか確認してください`,
139
+ });
140
+ }
141
+ }
142
+ }
143
+ }
144
+ return {
145
+ isValid: errors.length === 0,
146
+ errors,
147
+ };
148
+ }
149
+ /**
150
+ * Phase構造を検証
151
+ */
152
+ function validatePhaseStructure(body) {
153
+ const errors = [];
154
+ const phasePattern = /^###\s*Phase\s*(\d+):/gim;
155
+ const matches = [...body.matchAll(phasePattern)];
156
+ const phaseNumbers = matches
157
+ .map((m) => Number.parseInt(m[1], 10))
158
+ .sort((a, b) => a - b);
159
+ for (let i = 0; i < phaseNumbers.length; i++) {
160
+ const expected = i + 1;
161
+ const actual = phaseNumbers[i];
162
+ if (actual !== expected && actual !== 99) {
163
+ errors.push({
164
+ type: "phase_number_discontinuous",
165
+ phaseNumber: actual,
166
+ message: `Phase番号が不連続です: 期待=${expected}, 実際=${actual}`,
167
+ fixSuggestion: `Phase ${actual} を Phase ${expected} に変更してください`,
168
+ });
169
+ }
170
+ }
171
+ return errors;
172
+ }
173
+ /**
174
+ * インデント検証
175
+ */
176
+ function validateIndentation(body) {
177
+ const errors = [];
178
+ const lines = body.split("\n");
179
+ for (let i = 0; i < lines.length; i++) {
180
+ const line = lines[i];
181
+ if (!line)
182
+ continue;
183
+ // タスク行の検証(X.Y.Z 形式)
184
+ const taskMatch = line.match(/^(\s*)-\s*(\d+\.\d+\.\d+)\s/);
185
+ if (taskMatch) {
186
+ const indent = taskMatch[1].length;
187
+ if (indent !== 2) {
188
+ errors.push({
189
+ type: "invalid_indent",
190
+ line: i + 1,
191
+ message: `タスクのインデントが不正です(期待: 2スペース、実際: ${indent}スペース)`,
192
+ fixSuggestion: "タスク行は2スペースでインデントしてください",
193
+ });
194
+ }
195
+ }
196
+ // メタデータ行の検証(**要件**: など)
197
+ const metadataMatch = line.match(/^(\s*)-?\s*\*\*(要件|依存関係|完了条件|対応設計|シナリオテスト)\*\*:/);
198
+ if (metadataMatch) {
199
+ const indent = metadataMatch[1].length;
200
+ if (indent !== 4) {
201
+ errors.push({
202
+ type: "invalid_indent",
203
+ line: i + 1,
204
+ message: `メタデータのインデントが不正です(期待: 4スペース、実際: ${indent}スペース)`,
205
+ fixSuggestion: "メタデータ行は4スペースでインデントしてください",
206
+ });
207
+ }
208
+ }
209
+ }
210
+ return errors;
211
+ }
212
+ /**
213
+ * メタデータ検証
214
+ */
215
+ function validateMetadata(body) {
216
+ const errors = [];
217
+ const lines = body.split("\n");
218
+ // タスク(X.Y.Z)ごとにメタデータをチェック
219
+ let currentTaskId = null;
220
+ let currentTaskMetadata = new Set();
221
+ let taskStartLine = 0;
222
+ for (let i = 0; i < lines.length; i++) {
223
+ const line = lines[i];
224
+ if (!line)
225
+ continue;
226
+ // 新しいタスク行の検出
227
+ const taskMatch = line.match(/^\s*-\s*(\d+\.\d+\.\d+)\s/);
228
+ if (taskMatch) {
229
+ // 前のタスクのメタデータをチェック
230
+ if (currentTaskId) {
231
+ const missing = REQUIRED_METADATA.filter((m) => !currentTaskMetadata.has(m));
232
+ for (const m of missing) {
233
+ errors.push({
234
+ type: "missing_metadata",
235
+ taskId: currentTaskId,
236
+ line: taskStartLine,
237
+ message: `タスク ${currentTaskId} に必須メタデータがありません: ${m}`,
238
+ fixSuggestion: `**${m}**: [内容] を追加してください`,
239
+ });
240
+ }
241
+ }
242
+ currentTaskId = taskMatch[1];
243
+ currentTaskMetadata = new Set();
244
+ taskStartLine = i + 1;
245
+ }
246
+ // メタデータ行の検出
247
+ const metadataMatch = line.match(/\*\*(要件|依存関係|完了条件|対応設計|シナリオテスト)\*\*:/);
248
+ if (metadataMatch && currentTaskId) {
249
+ currentTaskMetadata.add(metadataMatch[1]);
250
+ }
251
+ // タスクグループ行(新しいセクション)の検出
252
+ const taskGroupMatch = line.match(/^-\s*\[[ xX]\]\s*\d+\.\d+\s/);
253
+ if (taskGroupMatch && currentTaskId) {
254
+ // 前のタスクのメタデータをチェック
255
+ const missing = REQUIRED_METADATA.filter((m) => !currentTaskMetadata.has(m));
256
+ for (const m of missing) {
257
+ errors.push({
258
+ type: "missing_metadata",
259
+ taskId: currentTaskId,
260
+ line: taskStartLine,
261
+ message: `タスク ${currentTaskId} に必須メタデータがありません: ${m}`,
262
+ fixSuggestion: `**${m}**: [内容] を追加してください`,
263
+ });
264
+ }
265
+ currentTaskId = null;
266
+ currentTaskMetadata = new Set();
267
+ }
268
+ }
269
+ // 最後のタスクのチェック
270
+ if (currentTaskId) {
271
+ const missing = REQUIRED_METADATA.filter((m) => !currentTaskMetadata.has(m));
272
+ for (const m of missing) {
273
+ errors.push({
274
+ type: "missing_metadata",
275
+ taskId: currentTaskId,
276
+ line: taskStartLine,
277
+ message: `タスク ${currentTaskId} に必須メタデータがありません: ${m}`,
278
+ fixSuggestion: `**${m}**: [内容] を追加してください`,
279
+ });
280
+ }
281
+ }
282
+ return errors;
283
+ }
284
+ /**
285
+ * 依存関係検証
286
+ */
287
+ function validateDependencies(body) {
288
+ const errors = [];
289
+ const lines = body.split("\n");
290
+ for (let i = 0; i < lines.length; i++) {
291
+ const line = lines[i];
292
+ if (!line)
293
+ continue;
294
+ const depMatch = line.match(/\*\*依存関係\*\*:\s*(.+)$/);
295
+ if (depMatch) {
296
+ const depText = depMatch[1].trim();
297
+ if (depText === "なし" || depText === "-")
298
+ continue;
299
+ const deps = depText.split(/[,、]/).map((d) => d.trim());
300
+ for (const dep of deps) {
301
+ // 無効な形式をチェック
302
+ if (dep.match(/^\d+\.\d+完了$/)) {
303
+ errors.push({
304
+ type: "invalid_dependency_format",
305
+ line: i + 1,
306
+ message: `依存関係の書式が不正です: "${dep}"(task:loop非互換)`,
307
+ fixSuggestion: `"${dep}" → "${dep.replace("完了", "")}" に変更してください`,
308
+ });
309
+ }
310
+ if (dep.match(/^タスク\d+\.\d+$/)) {
311
+ errors.push({
312
+ type: "invalid_dependency_format",
313
+ line: i + 1,
314
+ message: `依存関係の書式が不正です: "${dep}"(task:loop非互換)`,
315
+ fixSuggestion: `"${dep}" → "${dep.replace("タスク", "")}" に変更してください`,
316
+ });
317
+ }
318
+ }
319
+ }
320
+ }
321
+ return errors;
322
+ }
323
+ /**
324
+ * タスクグループIDの形式チェック
325
+ */
326
+ function isValidTaskGroupId(id) {
327
+ return /^\d+\.\d+$/.test(id);
328
+ }
329
+ /**
330
+ * タスクIDの形式チェック
331
+ */
332
+ function isValidTaskId(taskId, taskGroupId) {
333
+ const pattern = new RegExp(`^${taskGroupId.replace(".", "\\.")}\\.\\d+$`);
334
+ return pattern.test(taskId);
335
+ }
336
+ /**
337
+ * 全タスクグループIDを取得
338
+ */
339
+ function getAllTaskGroupIds(parsedIssue) {
340
+ const ids = new Set();
341
+ for (const phase of parsedIssue.phases) {
342
+ for (const taskGroup of phase.taskGroups) {
343
+ ids.add(taskGroup.id);
344
+ }
345
+ }
346
+ return ids;
347
+ }
348
+ /**
349
+ * エラーをMarkdown形式でフォーマット
350
+ */
351
+ export function formatValidationErrors(result, retryCount, maxRetries) {
352
+ if (result.isValid) {
353
+ return `## バリデーション結果: SUCCESS
354
+
355
+ タスク一覧のフォーマットは正しいです。
356
+ 次のフェーズに進んでください。`;
357
+ }
358
+ const errorList = result.errors
359
+ .map((error, index) => {
360
+ const location = error.taskId
361
+ ? `**タスク ${error.taskId}**`
362
+ : error.taskGroupId
363
+ ? `**タスクグループ ${error.taskGroupId}**`
364
+ : error.line
365
+ ? `**行 ${error.line}**`
366
+ : `**Phase ${error.phaseNumber}**`;
367
+ return `${index + 1}. ${location} - ${error.type}
368
+ - 問題: ${error.message}
369
+ - 修正案: ${error.fixSuggestion}`;
370
+ })
371
+ .join("\n\n");
372
+ const remaining = maxRetries - retryCount;
373
+ if (remaining <= 0) {
374
+ return `## バリデーション結果: MAX_RETRIES_EXCEEDED
375
+
376
+ ${maxRetries}回の試行で検証に合格しませんでした。
377
+
378
+ ### 最終エラー一覧
379
+
380
+ ${errorList}
381
+
382
+ ### 次のアクション
383
+ ユーザーに手動での修正を依頼してください。
384
+ 自動修正では解決できない構造的な問題がある可能性があります。`;
385
+ }
386
+ return `## バリデーション結果: FAILURE
387
+
388
+ ### エラー一覧
389
+
390
+ ${errorList}
391
+
392
+ ### リトライ情報
393
+ - 現在の試行回数: ${retryCount}
394
+ - 最大試行回数: ${maxRetries}
395
+ - 残り試行回数: ${remaining}
396
+
397
+ ### 次のアクション
398
+ spec-tasks-generator に差し戻し、上記エラーを修正した新しいタスク一覧を生成してください。`;
399
+ }
400
+ //# sourceMappingURL=issue-validator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"issue-validator.js","sourceRoot":"","sources":["../../../../src/commands/task-loop/lib/issue-validator.ts"],"names":[],"mappings":"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"}
@@ -27,6 +27,32 @@ export declare function createPullRequest(headBranch: string, baseBranch: string
27
27
  success: boolean;
28
28
  url?: string;
29
29
  error?: string;
30
+ noDiff?: boolean;
31
+ };
32
+ /**
33
+ * Pull Requestをマージ
34
+ */
35
+ export declare function mergePullRequest(prNumberOrUrl: string, options?: {
36
+ mergeMethod?: "merge" | "squash" | "rebase";
37
+ deleteBranch?: boolean;
38
+ }): {
39
+ success: boolean;
40
+ error?: string;
41
+ conflicted?: boolean;
42
+ };
43
+ /**
44
+ * PRを作成してマージする統合関数
45
+ * Phase→Issue マージで使用
46
+ */
47
+ export declare function createAndMergePullRequest(headBranch: string, baseBranch: string, title: string, body: string, options?: {
48
+ mergeMethod?: "merge" | "squash" | "rebase";
49
+ deleteBranch?: boolean;
50
+ }): {
51
+ success: boolean;
52
+ prUrl?: string;
53
+ error?: string;
54
+ conflicted?: boolean;
55
+ noDiff?: boolean;
30
56
  };
31
57
  /**
32
58
  * Pull Requestの作成を保証(既存チェック + 作成)
@@ -1 +1 @@
1
- {"version":3,"file":"pull-request-manager.d.ts","sourceRoot":"","sources":["../../../../src/commands/task-loop/lib/pull-request-manager.ts"],"names":[],"mappings":"AAAA;;GAEG;AAMH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C;;GAEG;AACH,wBAAgB,wBAAwB,CACtC,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,GACjB;IAAE,MAAM,EAAE,OAAO,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAuCnD;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,CAWrF;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,CAuBpF;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,GACX;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAuCpD;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CACtC,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,WAAW,GACvB,IAAI,CAmCN"}
1
+ {"version":3,"file":"pull-request-manager.d.ts","sourceRoot":"","sources":["../../../../src/commands/task-loop/lib/pull-request-manager.ts"],"names":[],"mappings":"AAAA;;GAEG;AAMH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C;;GAEG;AACH,wBAAgB,wBAAwB,CACtC,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,GACjB;IAAE,MAAM,EAAE,OAAO,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAuCnD;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,CAWrF;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,CAuBpF;AAqBD;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,GACX;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE,CAkDtE;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,aAAa,EAAE,MAAM,EACrB,OAAO,CAAC,EAAE;IACR,WAAW,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,QAAQ,CAAC;IAC5C,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB,GACA;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,OAAO,CAAA;CAAE,CA6B5D;AAED;;;GAGG;AACH,wBAAgB,yBAAyB,CACvC,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE;IACR,WAAW,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,QAAQ,CAAC;IAC5C,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB,GACA;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE,CAoE9F;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CACtC,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,WAAW,GACvB,IAAI,CAmCN"}
@@ -75,6 +75,24 @@ export function generatePrBody(parsedIssue, issueNumber) {
75
75
  body += "*このPRは `pnpm task:loop` によって自動作成されました*\n";
76
76
  return body;
77
77
  }
78
+ /**
79
+ * execFileSync のエラーから stderr を取得
80
+ */
81
+ function getStderrFromError(error) {
82
+ if (error && typeof error === "object" && "stderr" in error) {
83
+ const stderr = error.stderr;
84
+ if (typeof stderr === "string") {
85
+ return stderr;
86
+ }
87
+ if (Buffer.isBuffer(stderr)) {
88
+ return stderr.toString("utf-8");
89
+ }
90
+ }
91
+ if (error instanceof Error) {
92
+ return error.message;
93
+ }
94
+ return String(error);
95
+ }
78
96
  /**
79
97
  * Pull Requestを作成
80
98
  */
@@ -102,7 +120,14 @@ export function createPullRequest(headBranch, baseBranch, title, body) {
102
120
  return { success: true, url };
103
121
  }
104
122
  catch (error) {
105
- const errorMessage = error instanceof Error ? error.message : String(error);
123
+ const errorMessage = getStderrFromError(error);
124
+ // 差分がない場合を検出
125
+ if (errorMessage.includes("no commits between") ||
126
+ errorMessage.includes("No commits between") ||
127
+ errorMessage.includes("already exists") ||
128
+ errorMessage.includes("already up to date")) {
129
+ return { success: false, error: errorMessage, noDiff: true };
130
+ }
106
131
  return { success: false, error: errorMessage };
107
132
  }
108
133
  finally {
@@ -112,6 +137,101 @@ export function createPullRequest(headBranch, baseBranch, title, body) {
112
137
  }
113
138
  }
114
139
  }
140
+ /**
141
+ * Pull Requestをマージ
142
+ */
143
+ export function mergePullRequest(prNumberOrUrl, options) {
144
+ var _a, _b;
145
+ const mergeMethod = (_a = options === null || options === void 0 ? void 0 : options.mergeMethod) !== null && _a !== void 0 ? _a : "merge";
146
+ const deleteBranch = (_b = options === null || options === void 0 ? void 0 : options.deleteBranch) !== null && _b !== void 0 ? _b : true;
147
+ try {
148
+ const args = ["pr", "merge", prNumberOrUrl, `--${mergeMethod}`];
149
+ if (deleteBranch) {
150
+ args.push("--delete-branch");
151
+ }
152
+ execFileSync("gh", args, {
153
+ encoding: "utf-8",
154
+ stdio: "pipe",
155
+ });
156
+ return { success: true };
157
+ }
158
+ catch (error) {
159
+ const errorMessage = getStderrFromError(error);
160
+ // コンフリクトかどうかを判定(stderrベース)
161
+ const isConflict = errorMessage.includes("Merge conflict") ||
162
+ errorMessage.includes("merge conflict") ||
163
+ errorMessage.includes("CONFLICT") ||
164
+ errorMessage.includes("could not be merged");
165
+ return { success: false, error: errorMessage, conflicted: isConflict };
166
+ }
167
+ }
168
+ /**
169
+ * PRを作成してマージする統合関数
170
+ * Phase→Issue マージで使用
171
+ */
172
+ export function createAndMergePullRequest(headBranch, baseBranch, title, body, options) {
173
+ try {
174
+ // 既存PRをチェック
175
+ const existing = checkExistingPullRequest(headBranch, baseBranch);
176
+ let prUrl;
177
+ if (existing.exists && existing.url) {
178
+ // 既存PRがある場合
179
+ if (existing.state === "MERGED") {
180
+ console.log(` ✅ PRは既にマージ済み: ${existing.url}`);
181
+ return { success: true, prUrl: existing.url };
182
+ }
183
+ if (existing.state === "CLOSED") {
184
+ // CLOSEDの場合は新規作成
185
+ console.log(` ⚠️ 既存PRはCLOSED状態のため、新規PRを作成: ${existing.url}`);
186
+ const createResult = createPullRequest(headBranch, baseBranch, title, body);
187
+ if (!createResult.success) {
188
+ if (createResult.noDiff) {
189
+ console.log(" ✅ 差分がないためマージ不要");
190
+ return { success: true, noDiff: true };
191
+ }
192
+ return { success: false, error: createResult.error };
193
+ }
194
+ prUrl = createResult.url;
195
+ console.log(` ✅ PRを作成: ${prUrl}`);
196
+ }
197
+ else {
198
+ // OPEN状態のPRを再利用
199
+ prUrl = existing.url;
200
+ console.log(` 📋 既存PRを使用: ${prUrl}`);
201
+ }
202
+ }
203
+ else {
204
+ // PRを新規作成
205
+ console.log(" 📝 PRを作成中...");
206
+ const createResult = createPullRequest(headBranch, baseBranch, title, body);
207
+ if (!createResult.success) {
208
+ if (createResult.noDiff) {
209
+ console.log(" ✅ 差分がないためマージ不要");
210
+ return { success: true, noDiff: true };
211
+ }
212
+ return { success: false, error: createResult.error };
213
+ }
214
+ prUrl = createResult.url;
215
+ console.log(` ✅ PRを作成: ${prUrl}`);
216
+ }
217
+ // PRをマージ
218
+ console.log(" 🔀 PRをマージ中...");
219
+ const mergeResult = mergePullRequest(prUrl, options);
220
+ if (!mergeResult.success) {
221
+ // コンフリクトかどうかを判定(mergePullRequestが判定済み)
222
+ if (mergeResult.conflicted) {
223
+ return { success: false, prUrl, error: mergeResult.error, conflicted: true };
224
+ }
225
+ return { success: false, prUrl, error: mergeResult.error };
226
+ }
227
+ console.log(` ✅ PRマージ完了: ${prUrl}`);
228
+ return { success: true, prUrl };
229
+ }
230
+ catch (error) {
231
+ const errorMessage = error instanceof Error ? error.message : String(error);
232
+ return { success: false, error: errorMessage };
233
+ }
234
+ }
115
235
  /**
116
236
  * Pull Requestの作成を保証(既存チェック + 作成)
117
237
  */
@@ -1 +1 @@
1
- {"version":3,"file":"pull-request-manager.js","sourceRoot":"","sources":["../../../../src/commands/task-loop/lib/pull-request-manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pull-request-manager.js","sourceRoot":"","sources":["../../../../src/commands/task-loop/lib/pull-request-manager.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@einja/dev-cli",
3
- "version": "0.1.20",
3
+ "version": "0.1.23",
4
4
  "description": "Einja CLI - .claude設定とテンプレート同期をnpxでインストール",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -3,11 +3,13 @@ name: backend-architect
3
3
  description: バックエンドアーキテクチャ設計の専門家。4層アーキテクチャ、Repository/Mapper/Result型パターン、API設計、DB設計、テスト設計方針を担当します。技術選定、アーキテクチャ決定、スケーラブルな設計パターンの提案に特化しています。<example>Context: バックエンド機能のアーキテクチャを設計したい場合。user: "投稿管理APIのアーキテクチャを設計して" assistant: "backend-architectエージェントを使用して、4層アーキテクチャ、Repository設計、API設計、テスト方針を策定します" <commentary>バックエンドアーキテクチャ設計が必要なため、backend-architectエージェントを起動します。</commentary></example> <example>Context: 既存バックエンドアーキテクチャの改善提案が必要な場合。user: "現在のRepository実装を改善して" assistant: "backend-architectエージェントを起動して、Repository/Mapper設計、Result型パターン、エラーハンドリングの観点から設計改善を提案します" <commentary>アーキテクチャレビューと改善提案が必要なため、backend-architectエージェントに依頼します。</commentary></example>
4
4
  model: sonnet
5
5
  color: orange
6
+ skills:
7
+ - output-format
6
8
  ---
7
9
 
8
10
  ## ✅ 最重要: 出力形式
9
11
 
10
- **@.claude/skills/einja-output-format/SKILL.md の「backend-architect」テンプレートに従って報告すること。この形式から逸脱しないこと。**
12
+ **「backend-architect」テンプレートに従って報告すること。この形式から逸脱しないこと。**
11
13
 
12
14
  ---
13
15