@einja/dev-cli 0.1.9 → 0.1.10

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 (223) hide show
  1. package/README.md +30 -2
  2. package/dist/cli.js +3 -6
  3. package/dist/cli.js.map +1 -1
  4. package/dist/commands/init.d.ts.map +1 -1
  5. package/dist/commands/init.js +11 -6
  6. package/dist/commands/init.js.map +1 -1
  7. package/dist/commands/list.js +1 -1
  8. package/dist/commands/list.js.map +1 -1
  9. package/dist/commands/sync.d.ts.map +1 -1
  10. package/dist/commands/sync.js +69 -7
  11. package/dist/commands/sync.js.map +1 -1
  12. package/dist/commands/sync.test.js +11 -25
  13. package/dist/commands/sync.test.js.map +1 -1
  14. package/dist/commands/task-loop/index.d.ts.map +1 -1
  15. package/dist/commands/task-loop/index.js +5 -2
  16. package/dist/commands/task-loop/index.js.map +1 -1
  17. package/dist/commands/task-loop/lib/__mocks__/child-process.mock.d.ts +227 -0
  18. package/dist/commands/task-loop/lib/__mocks__/child-process.mock.d.ts.map +1 -0
  19. package/dist/commands/task-loop/lib/__mocks__/child-process.mock.js +351 -0
  20. package/dist/commands/task-loop/lib/__mocks__/child-process.mock.js.map +1 -0
  21. package/dist/commands/task-loop/lib/__mocks__/sample-issues.d.ts +46 -0
  22. package/dist/commands/task-loop/lib/__mocks__/sample-issues.d.ts.map +1 -0
  23. package/dist/commands/task-loop/lib/__mocks__/sample-issues.js +224 -0
  24. package/dist/commands/task-loop/lib/__mocks__/sample-issues.js.map +1 -0
  25. package/dist/commands/task-loop/lib/branch-manager.d.ts.map +1 -1
  26. package/dist/commands/task-loop/lib/branch-manager.js +14 -8
  27. package/dist/commands/task-loop/lib/branch-manager.js.map +1 -1
  28. package/dist/commands/task-loop/lib/branch-manager.test.d.ts +2 -0
  29. package/dist/commands/task-loop/lib/branch-manager.test.d.ts.map +1 -0
  30. package/dist/commands/task-loop/lib/branch-manager.test.js +539 -0
  31. package/dist/commands/task-loop/lib/branch-manager.test.js.map +1 -0
  32. package/dist/commands/task-loop/lib/conflict-handler.js +1 -1
  33. package/dist/commands/task-loop/lib/conflict-handler.js.map +1 -1
  34. package/dist/commands/task-loop/lib/dependency-resolver.test.d.ts +2 -0
  35. package/dist/commands/task-loop/lib/dependency-resolver.test.d.ts.map +1 -0
  36. package/dist/commands/task-loop/lib/dependency-resolver.test.js +1129 -0
  37. package/dist/commands/task-loop/lib/dependency-resolver.test.js.map +1 -0
  38. package/dist/commands/task-loop/lib/gh-setup.d.ts.map +1 -1
  39. package/dist/commands/task-loop/lib/gh-setup.js.map +1 -1
  40. package/dist/commands/task-loop/lib/github-client.d.ts.map +1 -1
  41. package/dist/commands/task-loop/lib/github-client.js +3 -3
  42. package/dist/commands/task-loop/lib/github-client.js.map +1 -1
  43. package/dist/commands/task-loop/lib/github-client.test.d.ts +2 -0
  44. package/dist/commands/task-loop/lib/github-client.test.d.ts.map +1 -0
  45. package/dist/commands/task-loop/lib/github-client.test.js +377 -0
  46. package/dist/commands/task-loop/lib/github-client.test.js.map +1 -0
  47. package/dist/commands/task-loop/lib/issue-parser.js +4 -4
  48. package/dist/commands/task-loop/lib/issue-parser.js.map +1 -1
  49. package/dist/commands/task-loop/lib/issue-parser.test.d.ts +2 -0
  50. package/dist/commands/task-loop/lib/issue-parser.test.d.ts.map +1 -0
  51. package/dist/commands/task-loop/lib/issue-parser.test.js +854 -0
  52. package/dist/commands/task-loop/lib/issue-parser.test.js.map +1 -0
  53. package/dist/commands/task-loop/lib/pull-request-manager.d.ts +35 -0
  54. package/dist/commands/task-loop/lib/pull-request-manager.d.ts.map +1 -0
  55. package/dist/commands/task-loop/lib/pull-request-manager.js +150 -0
  56. package/dist/commands/task-loop/lib/pull-request-manager.js.map +1 -0
  57. package/dist/commands/task-loop/lib/task-number-utils.d.ts +10 -4
  58. package/dist/commands/task-loop/lib/task-number-utils.d.ts.map +1 -1
  59. package/dist/commands/task-loop/lib/task-number-utils.js +19 -10
  60. package/dist/commands/task-loop/lib/task-number-utils.js.map +1 -1
  61. package/dist/commands/task-loop/lib/task-number-utils.test.d.ts +2 -0
  62. package/dist/commands/task-loop/lib/task-number-utils.test.d.ts.map +1 -0
  63. package/dist/commands/task-loop/lib/task-number-utils.test.js +379 -0
  64. package/dist/commands/task-loop/lib/task-number-utils.test.js.map +1 -0
  65. package/dist/commands/task-loop/lib/task-state-manager.d.ts.map +1 -1
  66. package/dist/commands/task-loop/lib/task-state-manager.js +1 -1
  67. package/dist/commands/task-loop/lib/task-state-manager.js.map +1 -1
  68. package/dist/commands/task-loop/lib/task-state-manager.test.d.ts +2 -0
  69. package/dist/commands/task-loop/lib/task-state-manager.test.d.ts.map +1 -0
  70. package/dist/commands/task-loop/lib/task-state-manager.test.js +541 -0
  71. package/dist/commands/task-loop/lib/task-state-manager.test.js.map +1 -0
  72. package/dist/lib/mcp-config.d.ts.map +1 -1
  73. package/dist/lib/mcp-config.js +8 -4
  74. package/dist/lib/mcp-config.js.map +1 -1
  75. package/dist/lib/mcp-config.test.js +2 -2
  76. package/dist/lib/mcp-config.test.js.map +1 -1
  77. package/dist/lib/merger.d.ts.map +1 -1
  78. package/dist/lib/merger.js.map +1 -1
  79. package/dist/lib/preset-update/cli-repo-detector.test.js.map +1 -1
  80. package/dist/lib/preset-update/file-copier.d.ts +2 -0
  81. package/dist/lib/preset-update/file-copier.d.ts.map +1 -1
  82. package/dist/lib/preset-update/file-copier.js +12 -8
  83. package/dist/lib/preset-update/file-copier.js.map +1 -1
  84. package/dist/lib/preset-update/file-copier.test.js +36 -5
  85. package/dist/lib/preset-update/file-copier.test.js.map +1 -1
  86. package/dist/lib/preset-update/preset-finder.d.ts +1 -1
  87. package/dist/lib/preset-update/preset-finder.d.ts.map +1 -1
  88. package/dist/lib/preset-update/preset-finder.js +1 -1
  89. package/dist/lib/preset-update/preset-finder.js.map +1 -1
  90. package/dist/lib/preset-update/preset-finder.test.js +11 -11
  91. package/dist/lib/preset-update/preset-finder.test.js.map +1 -1
  92. package/dist/lib/preset.js +3 -3
  93. package/dist/lib/preset.js.map +1 -1
  94. package/dist/lib/sync/backup-manager.d.ts.map +1 -1
  95. package/dist/lib/sync/backup-manager.js +1 -1
  96. package/dist/lib/sync/backup-manager.js.map +1 -1
  97. package/dist/lib/sync/backup-manager.test.js +2 -2
  98. package/dist/lib/sync/backup-manager.test.js.map +1 -1
  99. package/dist/lib/sync/batch-processor.d.ts.map +1 -1
  100. package/dist/lib/sync/batch-processor.js.map +1 -1
  101. package/dist/lib/sync/batch-processor.test.js.map +1 -1
  102. package/dist/lib/sync/category-validator.d.ts.map +1 -1
  103. package/dist/lib/sync/category-validator.js.map +1 -1
  104. package/dist/lib/sync/category-validator.test.js +2 -11
  105. package/dist/lib/sync/category-validator.test.js.map +1 -1
  106. package/dist/lib/sync/conflict-reporter.d.ts.map +1 -1
  107. package/dist/lib/sync/conflict-reporter.js +1 -2
  108. package/dist/lib/sync/conflict-reporter.js.map +1 -1
  109. package/dist/lib/sync/conflict-reporter.test.js +2 -7
  110. package/dist/lib/sync/conflict-reporter.test.js.map +1 -1
  111. package/dist/lib/sync/diff-engine.d.ts.map +1 -1
  112. package/dist/lib/sync/diff-engine.js +2 -4
  113. package/dist/lib/sync/diff-engine.js.map +1 -1
  114. package/dist/lib/sync/diff-engine.test.js.map +1 -1
  115. package/dist/lib/sync/file-filter.d.ts.map +1 -1
  116. package/dist/lib/sync/file-filter.js +26 -3
  117. package/dist/lib/sync/file-filter.js.map +1 -1
  118. package/dist/lib/sync/file-filter.test.js +26 -2
  119. package/dist/lib/sync/file-filter.test.js.map +1 -1
  120. package/dist/lib/sync/hash-cache.d.ts.map +1 -1
  121. package/dist/lib/sync/hash-cache.js.map +1 -1
  122. package/dist/lib/sync/hash-cache.test.js +2 -2
  123. package/dist/lib/sync/hash-cache.test.js.map +1 -1
  124. package/dist/lib/sync/integration.test.js +289 -2
  125. package/dist/lib/sync/integration.test.js.map +1 -1
  126. package/dist/lib/sync/marker-processor.d.ts +34 -10
  127. package/dist/lib/sync/marker-processor.d.ts.map +1 -1
  128. package/dist/lib/sync/marker-processor.js +142 -41
  129. package/dist/lib/sync/marker-processor.js.map +1 -1
  130. package/dist/lib/sync/marker-processor.test.js +134 -1
  131. package/dist/lib/sync/marker-processor.test.js.map +1 -1
  132. package/dist/lib/sync/metadata-manager.d.ts.map +1 -1
  133. package/dist/lib/sync/metadata-manager.js.map +1 -1
  134. package/dist/lib/sync/metadata-manager.test.js +4 -6
  135. package/dist/lib/sync/metadata-manager.test.js.map +1 -1
  136. package/dist/lib/sync/performance.test.js +2 -2
  137. package/dist/lib/sync/performance.test.js.map +1 -1
  138. package/dist/lib/sync/seed-synchronizer.d.ts +27 -0
  139. package/dist/lib/sync/seed-synchronizer.d.ts.map +1 -0
  140. package/dist/lib/sync/seed-synchronizer.js +72 -0
  141. package/dist/lib/sync/seed-synchronizer.js.map +1 -0
  142. package/dist/lib/sync/seed-synchronizer.test.d.ts +2 -0
  143. package/dist/lib/sync/seed-synchronizer.test.d.ts.map +1 -0
  144. package/dist/lib/sync/seed-synchronizer.test.js +147 -0
  145. package/dist/lib/sync/seed-synchronizer.test.js.map +1 -0
  146. package/dist/types/index.d.ts.map +1 -1
  147. package/dist/types/preset-update.d.ts +1 -1
  148. package/dist/types/sync.d.ts +4 -2
  149. package/dist/types/sync.d.ts.map +1 -1
  150. package/dist/types/sync.js.map +1 -1
  151. package/package.json +1 -1
  152. package/presets/default/.claude/agents/einja/backend-architect.md +1131 -0
  153. package/presets/{minimal/.claude/agents/einja/frontend → default/.claude/agents/einja}/design-engineer.md +1 -1
  154. package/presets/{minimal/.claude/agents/einja/frontend → default/.claude/agents/einja}/frontend-architect.md +1 -1
  155. package/presets/{minimal/.claude/agents/einja/frontend → default/.claude/agents/einja}/frontend-coder.md +1 -37
  156. package/presets/{minimal → default}/.claude/agents/einja/task/task-committer.md +12 -6
  157. package/presets/{minimal → default}/.claude/agents/einja/task/task-executer.md +9 -9
  158. package/presets/{minimal → default}/.claude/commands/einja/frontend-implement.md +1 -1
  159. package/presets/{minimal → default}/.claude/commands/einja/update-docs-by-task-specs.md +6 -6
  160. package/presets/{minimal/.claude/skills/einja/api-development → default/.claude/skills/einja-api-development}/SKILL.md +5 -5
  161. package/presets/{minimal/.claude/skills/einja/backend-architecture → default/.claude/skills/einja-backend-architecture}/SKILL.md +5 -5
  162. package/presets/{minimal/.claude/skills/einja/coding-standards → default/.claude/skills/einja-coding-standards}/SKILL.md +6 -6
  163. package/presets/{minimal/.claude/skills/einja/component-design → default/.claude/skills/einja-component-design}/SKILL.md +6 -6
  164. package/presets/{minimal/.claude/skills/einja/frontend-development → default/.claude/skills/einja-frontend-development}/SKILL.md +5 -5
  165. package/presets/{minimal/.claude/skills/einja/output-format → default/.claude/skills/einja-output-format}/SKILL.md +54 -5
  166. package/presets/{minimal → default}/preset.yaml +1 -1
  167. package/presets/{minimal → default}/symlinks.json +10 -10
  168. package/scaffolds/CLAUDE.md.template +4 -4
  169. package/scaffolds/steering/README.md +42 -0
  170. package/scaffolds/steering/acceptance-criteria-and-qa-guide.md +11 -0
  171. package/scaffolds/steering/architecture.md +11 -0
  172. package/scaffolds/steering/branch-strategy.md +11 -0
  173. package/scaffolds/steering/commit-rules.md +12 -1
  174. package/scaffolds/steering/db-schema-design.md +11 -0
  175. package/scaffolds/steering/development/api-development.md +15 -4
  176. package/scaffolds/steering/development/backend-architecture.md +11 -0
  177. package/scaffolds/steering/development/frontend-development.md +11 -0
  178. package/scaffolds/steering/development/review-guidelines.md +11 -0
  179. package/scaffolds/steering/development/testing-strategy.md +85 -0
  180. package/scaffolds/steering/development-workflow.md +11 -0
  181. package/scaffolds/steering/infrastructure/deployment.md +11 -0
  182. package/scaffolds/steering/infrastructure/environment-variables.md +11 -0
  183. package/scaffolds/steering/product.md +11 -0
  184. package/scaffolds/steering/task-management.md +11 -0
  185. /package/presets/{minimal → default}/.claude/agents/einja/docs/docs-updater.md +0 -0
  186. /package/presets/{minimal → default}/.claude/agents/einja/git/conflict-resolver.md +0 -0
  187. /package/presets/{minimal → default}/.claude/agents/einja/specs/spec-design-generator.md +0 -0
  188. /package/presets/{minimal → default}/.claude/agents/einja/specs/spec-qa-generator.md +0 -0
  189. /package/presets/{minimal → default}/.claude/agents/einja/specs/spec-requirements-generator.md +0 -0
  190. /package/presets/{minimal → default}/.claude/agents/einja/specs/spec-tasks-generator.md +0 -0
  191. /package/presets/{minimal → default}/.claude/agents/einja/task/task-modification-analyzer.md +0 -0
  192. /package/presets/{minimal → default}/.claude/agents/einja/task/task-qa.md +0 -0
  193. /package/presets/{minimal → default}/.claude/agents/einja/task/task-reviewer.md +0 -0
  194. /package/presets/{minimal → default}/.claude/commands/einja/spec-create.md +0 -0
  195. /package/presets/{minimal → default}/.claude/commands/einja/start-dev.md +0 -0
  196. /package/presets/{minimal → default}/.claude/commands/einja/sync-cursor-commands.md +0 -0
  197. /package/presets/{minimal → default}/.claude/commands/einja/task-exec.md +0 -0
  198. /package/presets/{minimal → default}/.claude/hooks/einja/biome-format.sh +0 -0
  199. /package/presets/{minimal → default}/.claude/hooks/einja/design-doc-check.sh +0 -0
  200. /package/presets/{minimal → default}/.claude/hooks/einja/detect-secrets.sh +0 -0
  201. /package/presets/{minimal → default}/.claude/hooks/einja/large-file-warning.sh +0 -0
  202. /package/presets/{minimal → default}/.claude/hooks/einja/playwright-resize.sh +0 -0
  203. /package/presets/{minimal → default}/.claude/hooks/einja/typecheck.sh +0 -0
  204. /package/presets/{minimal → default}/.claude/hooks/einja/unset-volta-recursion.sh +0 -0
  205. /package/presets/{minimal → default}/.claude/hooks/einja/validate-git-commit.sh +0 -0
  206. /package/presets/{minimal → default}/.claude/hooks/einja/warn-index-ts.sh +0 -0
  207. /package/presets/{minimal → default}/.claude/hooks/einja/warn-relative-import.sh +0 -0
  208. /package/presets/{minimal → default}/.claude/settings.json +0 -0
  209. /package/presets/{minimal/.claude/skills/einja/coding-standards → default/.claude/skills/einja-coding-standards}/reference/naming-conventions.md +0 -0
  210. /package/presets/{minimal/.claude/skills/einja/coding-standards → default/.claude/skills/einja-coding-standards}/reference/prohibited-patterns.md +0 -0
  211. /package/presets/{minimal/.claude/skills/einja/coding-standards → default/.claude/skills/einja-coding-standards}/reference/typescript-rules.md +0 -0
  212. /package/presets/{minimal/.claude/skills/einja/component-design → default/.claude/skills/einja-component-design}/reference/directory-structure.md +0 -0
  213. /package/presets/{minimal/.claude/skills/einja/component-design → default/.claude/skills/einja-component-design}/reference/props-patterns.md +0 -0
  214. /package/presets/{minimal/.claude/skills/einja/component-design → default/.claude/skills/einja-component-design}/reference/styling-guide.md +0 -0
  215. /package/presets/{minimal/.claude/skills/einja/conflict-resolver → default/.claude/skills/einja-conflict-resolver}/SKILL.md +0 -0
  216. /package/presets/{minimal/.claude/skills/einja/general-context-loader → default/.claude/skills/einja-general-context-loader}/SKILL.md +0 -0
  217. /package/presets/{minimal/.claude/skills/einja/spec-context-loader → default/.claude/skills/einja-spec-context-loader}/SKILL.md +0 -0
  218. /package/presets/{minimal/.claude/skills/einja/task-commit → default/.claude/skills/einja-task-commit}/SKILL.md +0 -0
  219. /package/presets/{minimal/.claude/skills/einja/task-qa → default/.claude/skills/einja-task-qa}/SKILL.md +0 -0
  220. /package/presets/{minimal/.claude/skills/einja/task-qa → default/.claude/skills/einja-task-qa}/reference/failure-patterns.md +0 -0
  221. /package/presets/{minimal/.claude/skills/einja/task-qa → default/.claude/skills/einja-task-qa}/reference/troubleshooting.md +0 -0
  222. /package/presets/{minimal/.claude/skills/einja/task-qa → default/.claude/skills/einja-task-qa}/reference/usage-patterns.md +0 -0
  223. /package/presets/{minimal/.claude/skills/einja/task-qa → default/.claude/skills/einja-task-qa}/templates/qa-test-template.md +0 -0
@@ -7,11 +7,12 @@
7
7
  * einja task:loop <issue-number> [--max <number>] [--base <branch>]
8
8
  */
9
9
  import { ensureIssueBranchWithoutCheckout, getPhaseBranchNameNew, mergePhaseBranchIntoIssue, syncPhaseBranch, } from "./lib/branch-manager.js";
10
- import { ensureGhSetup } from "./lib/gh-setup.js";
11
10
  import { detectCircularDependencies, getCompletedPhaseNumbers, isAllTasksCompleted, selectExecutableTaskGroups, } from "./lib/dependency-resolver.js";
11
+ import { ensureGhSetup } from "./lib/gh-setup.js";
12
12
  import { getIssue, getRepoInfo } from "./lib/github-client.js";
13
13
  import { parseIssueBody } from "./lib/issue-parser.js";
14
14
  import { selectProject } from "./lib/project-selector.js";
15
+ import { ensurePullRequestCreated } from "./lib/pull-request-manager.js";
15
16
  import { TaskStateManager, extractIssueNumberFromTitle, extractTaskGroupIdFromTitle, generateVibeKanbanDescription, generateVibeKanbanTitle, } from "./lib/task-state-manager.js";
16
17
  import { VibeKanbanClient } from "./lib/vibe-kanban-client.js";
17
18
  /** ポーリング間隔(ミリ秒) */
@@ -124,7 +125,7 @@ export async function taskLoopCommand(issue, options) {
124
125
  return (_a = desc === null || desc === void 0 ? void 0 : desc.includes(issuePatternInDesc)) !== null && _a !== void 0 ? _a : false;
125
126
  };
126
127
  const initialDoneTasks = existingTasks.filter((t) => t.status === "done" && isTaskForThisIssue(t));
127
- const initialInProgressTasks = existingTasks.filter((t) => t.status === "inprogress" && isTaskForThisIssue(t));
128
+ const initialInProgressTasks = existingTasks.filter((t) => (t.status === "inprogress" || t.status === "in-progress") && isTaskForThisIssue(t));
128
129
  console.log(`📊 起動時のタスク状態 (Issue #${issueNumber} 関連):`);
129
130
  console.log(` - Done: ${initialDoneTasks.length > 0 ? initialDoneTasks.map((t) => extractTaskGroupIdFromTitle(t.title) || t.title).join(", ") : "なし"}`);
130
131
  console.log(` - InProgress: ${initialInProgressTasks.length > 0 ? initialInProgressTasks.map((t) => extractTaskGroupIdFromTitle(t.title) || t.title).join(", ") : "なし"}`);
@@ -173,6 +174,8 @@ export async function taskLoopCommand(issue, options) {
173
174
  // 全タスク完了チェック
174
175
  if (isAllTasksCompleted(parsedIssue, maxTaskNumber)) {
175
176
  console.log("\n🎉 すべてのタスクが完了しました!");
177
+ // PR自動作成
178
+ ensurePullRequestCreated(issueNumber, issueBranch, baseBranch, parsedIssue);
176
179
  break;
177
180
  }
178
181
  // 待機
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/task-loop/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/task-loop/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,227 @@
1
+ import { type Mock } from "vitest";
2
+ /**
3
+ * child_processモジュールのモック基盤クラス
4
+ *
5
+ * gh コマンドや git コマンドなどの外部コマンド実行をモックする際に使用します。
6
+ *
7
+ * @example
8
+ * ```typescript
9
+ * const mock = new ChildProcessMock();
10
+ * mock.setup();
11
+ *
12
+ * // gh コマンドのレスポンスをモック
13
+ * mock.mockGhCommand("issue view 123", { number: 123, title: "Test Issue" });
14
+ *
15
+ * // テスト実行
16
+ * const result = execSync("gh issue view 123");
17
+ *
18
+ * mock.reset();
19
+ * ```
20
+ */
21
+ export declare class ChildProcessMock {
22
+ private execSyncMock;
23
+ private commandResponses;
24
+ private commandErrors;
25
+ constructor();
26
+ /**
27
+ * モックをセットアップします
28
+ */
29
+ setup(): void;
30
+ /**
31
+ * モックをリセットします
32
+ */
33
+ reset(): void;
34
+ /**
35
+ * gh コマンドのレスポンスをモックします
36
+ *
37
+ * @param subCommand - gh のサブコマンド(例: "issue view 123")
38
+ * @param response - モックするレスポンス(文字列またはオブジェクト)
39
+ *
40
+ * @example
41
+ * ```typescript
42
+ * mock.mockGhCommand("issue view 123", {
43
+ * number: 123,
44
+ * title: "Test Issue",
45
+ * state: "open"
46
+ * });
47
+ * ```
48
+ */
49
+ mockGhCommand(subCommand: string, response: unknown): void;
50
+ /**
51
+ * gh コマンドのエラーをモックします
52
+ *
53
+ * @param subCommand - gh のサブコマンド
54
+ * @param error - スローするエラー
55
+ *
56
+ * @example
57
+ * ```typescript
58
+ * mock.mockGhCommandError("issue view 999", new Error("issue not found"));
59
+ * ```
60
+ */
61
+ mockGhCommandError(subCommand: string, error: Error): void;
62
+ /**
63
+ * git コマンドのレスポンスをモックします
64
+ *
65
+ * @param subCommand - git のサブコマンド(例: "branch --list")
66
+ * @param response - モックするレスポンス
67
+ *
68
+ * @example
69
+ * ```typescript
70
+ * mock.mockGitCommand("branch --list", "* main\n develop\n feature/test");
71
+ * ```
72
+ */
73
+ mockGitCommand(subCommand: string, response: unknown): void;
74
+ /**
75
+ * git コマンドのエラーをモックします
76
+ *
77
+ * @param subCommand - git のサブコマンド
78
+ * @param error - スローするエラー
79
+ *
80
+ * @example
81
+ * ```typescript
82
+ * mock.mockGitCommandError("checkout unknown-branch", new Error("branch not found"));
83
+ * ```
84
+ */
85
+ mockGitCommandError(subCommand: string, error: Error): void;
86
+ /**
87
+ * カスタムコマンドのレスポンスをモックします
88
+ *
89
+ * @param command - 完全なコマンド文字列
90
+ * @param response - モックするレスポンス
91
+ *
92
+ * @example
93
+ * ```typescript
94
+ * mock.mockCommand("npm --version", "10.2.4");
95
+ * ```
96
+ */
97
+ mockCommand(command: string, response: unknown): void;
98
+ /**
99
+ * カスタムコマンドのエラーをモックします
100
+ *
101
+ * @param command - 完全なコマンド文字列
102
+ * @param error - スローするエラー
103
+ */
104
+ mockCommandError(command: string, error: Error): void;
105
+ /**
106
+ * execSyncモックを取得します(直接操作が必要な場合)
107
+ */
108
+ getExecSyncMock(): Mock;
109
+ /**
110
+ * 特定のコマンドが呼び出されたかを確認します
111
+ *
112
+ * @param command - 確認するコマンド
113
+ * @returns 呼び出された場合true
114
+ *
115
+ * @example
116
+ * ```typescript
117
+ * expect(mock.wasCommandCalled("gh issue view 123")).toBe(true);
118
+ * ```
119
+ */
120
+ wasCommandCalled(command: string): boolean;
121
+ /**
122
+ * 呼び出されたすべてのコマンドを取得します
123
+ *
124
+ * @returns コマンド文字列の配列
125
+ */
126
+ getCalledCommands(): string[];
127
+ }
128
+ /**
129
+ * gh CLI のモックヘルパー
130
+ *
131
+ * GitHub CLI (gh) コマンドに特化したモックヘルパーです。
132
+ *
133
+ * @example
134
+ * ```typescript
135
+ * const ghMock = new GhCliMock(new ChildProcessMock());
136
+ * ghMock.setup();
137
+ *
138
+ * ghMock.mockIssueView(123, {
139
+ * number: 123,
140
+ * title: "Test Issue",
141
+ * body: "Issue content"
142
+ * });
143
+ *
144
+ * ghMock.reset();
145
+ * ```
146
+ */
147
+ export declare class GhCliMock {
148
+ private readonly childProcessMock;
149
+ constructor(childProcessMock: ChildProcessMock);
150
+ /**
151
+ * モックをセットアップします
152
+ */
153
+ setup(): void;
154
+ /**
155
+ * モックをリセットします
156
+ */
157
+ reset(): void;
158
+ /**
159
+ * gh issue view のレスポンスをモックします
160
+ */
161
+ mockIssueView(issueNumber: number, issueData: Record<string, unknown>): void;
162
+ /**
163
+ * gh issue edit のレスポンスをモックします
164
+ */
165
+ mockIssueEdit(issueNumber: number, success?: boolean): void;
166
+ /**
167
+ * gh pr create のレスポンスをモックします
168
+ */
169
+ mockPrCreate(prUrl?: string, success?: boolean): void;
170
+ /**
171
+ * 内部のChildProcessMockを取得します
172
+ */
173
+ getChildProcessMock(): ChildProcessMock;
174
+ }
175
+ /**
176
+ * git コマンドのモックヘルパー
177
+ *
178
+ * git コマンドに特化したモックヘルパーです。
179
+ *
180
+ * @example
181
+ * ```typescript
182
+ * const gitMock = new GitCommandMock(new ChildProcessMock());
183
+ * gitMock.setup();
184
+ *
185
+ * gitMock.mockBranchList(["main", "develop", "feature/test"]);
186
+ * gitMock.mockCheckout("feature/test", true);
187
+ *
188
+ * gitMock.reset();
189
+ * ```
190
+ */
191
+ export declare class GitCommandMock {
192
+ private readonly childProcessMock;
193
+ constructor(childProcessMock: ChildProcessMock);
194
+ /**
195
+ * モックをセットアップします
196
+ */
197
+ setup(): void;
198
+ /**
199
+ * モックをリセットします
200
+ */
201
+ reset(): void;
202
+ /**
203
+ * git branch --list のレスポンスをモックします
204
+ */
205
+ mockBranchList(branches: string[], currentBranch?: string): void;
206
+ /**
207
+ * git checkout のレスポンスをモックします
208
+ */
209
+ mockCheckout(branchName: string, success?: boolean): void;
210
+ /**
211
+ * git merge のレスポンスをモックします
212
+ */
213
+ mockMerge(branchName: string, success?: boolean, hasConflict?: boolean): void;
214
+ /**
215
+ * git status のレスポンスをモックします
216
+ */
217
+ mockStatus(clean?: boolean, conflictFiles?: string[]): void;
218
+ /**
219
+ * git push のレスポンスをモックします
220
+ */
221
+ mockPush(success?: boolean): void;
222
+ /**
223
+ * 内部のChildProcessMockを取得します
224
+ */
225
+ getChildProcessMock(): ChildProcessMock;
226
+ }
227
+ //# sourceMappingURL=child-process.mock.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"child-process.mock.d.ts","sourceRoot":"","sources":["../../../../../src/commands/task-loop/lib/__mocks__/child-process.mock.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,IAAI,EAAM,MAAM,QAAQ,CAAC;AAEvC;;;;;;;;;;;;;;;;;;GAkBG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,YAAY,CAAO;IAC3B,OAAO,CAAC,gBAAgB,CAAuB;IAC/C,OAAO,CAAC,aAAa,CAAqB;;IAQ1C;;OAEG;IACH,KAAK,IAAI,IAAI;IAoCb;;OAEG;IACH,KAAK,IAAI,IAAI;IAMb;;;;;;;;;;;;;;OAcG;IACH,aAAa,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,GAAG,IAAI;IAK1D;;;;;;;;;;OAUG;IACH,kBAAkB,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI;IAK1D;;;;;;;;;;OAUG;IACH,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,GAAG,IAAI;IAK3D;;;;;;;;;;OAUG;IACH,mBAAmB,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI;IAK3D;;;;;;;;;;OAUG;IACH,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,GAAG,IAAI;IAIrD;;;;;OAKG;IACH,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI;IAIrD;;OAEG;IACH,eAAe,IAAI,IAAI;IAIvB;;;;;;;;;;OAUG;IACH,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAQ1C;;;;OAIG;IACH,iBAAiB,IAAI,MAAM,EAAE;CAG9B;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,qBAAa,SAAS;IACR,OAAO,CAAC,QAAQ,CAAC,gBAAgB;gBAAhB,gBAAgB,EAAE,gBAAgB;IAE/D;;OAEG;IACH,KAAK,IAAI,IAAI;IAIb;;OAEG;IACH,KAAK,IAAI,IAAI;IAIb;;OAEG;IACH,aAAa,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAO5E;;OAEG;IACH,aAAa,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,UAAO,GAAG,IAAI;IAWxD;;OAEG;IACH,YAAY,CAAC,KAAK,SAAyC,EAAE,OAAO,UAAO,GAAG,IAAI;IAQlF;;OAEG;IACH,mBAAmB,IAAI,gBAAgB;CAGxC;AAED;;;;;;;;;;;;;;;GAeG;AACH,qBAAa,cAAc;IACb,OAAO,CAAC,QAAQ,CAAC,gBAAgB;gBAAhB,gBAAgB,EAAE,gBAAgB;IAE/D;;OAEG;IACH,KAAK,IAAI,IAAI;IAIb;;OAEG;IACH,KAAK,IAAI,IAAI;IAIb;;OAEG;IACH,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,aAAa,SAAS,GAAG,IAAI;IAKhE;;OAEG;IACH,YAAY,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,UAAO,GAAG,IAAI;IActD;;OAEG;IACH,SAAS,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,UAAO,EAAE,WAAW,UAAQ,GAAG,IAAI;IAaxE;;OAEG;IACH,UAAU,CAAC,KAAK,UAAO,EAAE,aAAa,GAAE,MAAM,EAAO,GAAG,IAAI;IAS5D;;OAEG;IACH,QAAQ,CAAC,OAAO,UAAO,GAAG,IAAI;IAQ9B;;OAEG;IACH,mBAAmB,IAAI,gBAAgB;CAGxC"}
@@ -0,0 +1,351 @@
1
+ import { vi } from "vitest";
2
+ /**
3
+ * child_processモジュールのモック基盤クラス
4
+ *
5
+ * gh コマンドや git コマンドなどの外部コマンド実行をモックする際に使用します。
6
+ *
7
+ * @example
8
+ * ```typescript
9
+ * const mock = new ChildProcessMock();
10
+ * mock.setup();
11
+ *
12
+ * // gh コマンドのレスポンスをモック
13
+ * mock.mockGhCommand("issue view 123", { number: 123, title: "Test Issue" });
14
+ *
15
+ * // テスト実行
16
+ * const result = execSync("gh issue view 123");
17
+ *
18
+ * mock.reset();
19
+ * ```
20
+ */
21
+ export class ChildProcessMock {
22
+ constructor() {
23
+ this.execSyncMock = vi.fn();
24
+ this.commandResponses = new Map();
25
+ this.commandErrors = new Map();
26
+ }
27
+ /**
28
+ * モックをセットアップします
29
+ */
30
+ setup() {
31
+ // execSync のデフォルト実装
32
+ this.execSyncMock.mockImplementation((command, options) => {
33
+ const cmdStr = command.toString().trim();
34
+ // エラーがモックされている場合
35
+ if (this.commandErrors.has(cmdStr)) {
36
+ const error = this.commandErrors.get(cmdStr);
37
+ throw error;
38
+ }
39
+ // レスポンスがモックされている場合
40
+ if (this.commandResponses.has(cmdStr)) {
41
+ const response = this.commandResponses.get(cmdStr);
42
+ // オブジェクトの場合はJSON文字列化
43
+ if (typeof response === "object" && response !== null) {
44
+ return Buffer.from(JSON.stringify(response));
45
+ }
46
+ // 文字列の場合はそのまま返す
47
+ return Buffer.from(String(response));
48
+ }
49
+ // デフォルトレスポンス
50
+ console.warn(`[ChildProcessMock] Unhandled command: ${cmdStr}`);
51
+ return Buffer.from("");
52
+ });
53
+ // グローバルモジュールとして設定
54
+ vi.mock("node:child_process", () => ({
55
+ execSync: this.execSyncMock,
56
+ spawnSync: vi.fn(),
57
+ }));
58
+ }
59
+ /**
60
+ * モックをリセットします
61
+ */
62
+ reset() {
63
+ this.execSyncMock.mockReset();
64
+ this.commandResponses.clear();
65
+ this.commandErrors.clear();
66
+ }
67
+ /**
68
+ * gh コマンドのレスポンスをモックします
69
+ *
70
+ * @param subCommand - gh のサブコマンド(例: "issue view 123")
71
+ * @param response - モックするレスポンス(文字列またはオブジェクト)
72
+ *
73
+ * @example
74
+ * ```typescript
75
+ * mock.mockGhCommand("issue view 123", {
76
+ * number: 123,
77
+ * title: "Test Issue",
78
+ * state: "open"
79
+ * });
80
+ * ```
81
+ */
82
+ mockGhCommand(subCommand, response) {
83
+ const fullCommand = `gh ${subCommand}`.trim();
84
+ this.commandResponses.set(fullCommand, response);
85
+ }
86
+ /**
87
+ * gh コマンドのエラーをモックします
88
+ *
89
+ * @param subCommand - gh のサブコマンド
90
+ * @param error - スローするエラー
91
+ *
92
+ * @example
93
+ * ```typescript
94
+ * mock.mockGhCommandError("issue view 999", new Error("issue not found"));
95
+ * ```
96
+ */
97
+ mockGhCommandError(subCommand, error) {
98
+ const fullCommand = `gh ${subCommand}`.trim();
99
+ this.commandErrors.set(fullCommand, error);
100
+ }
101
+ /**
102
+ * git コマンドのレスポンスをモックします
103
+ *
104
+ * @param subCommand - git のサブコマンド(例: "branch --list")
105
+ * @param response - モックするレスポンス
106
+ *
107
+ * @example
108
+ * ```typescript
109
+ * mock.mockGitCommand("branch --list", "* main\n develop\n feature/test");
110
+ * ```
111
+ */
112
+ mockGitCommand(subCommand, response) {
113
+ const fullCommand = `git ${subCommand}`.trim();
114
+ this.commandResponses.set(fullCommand, response);
115
+ }
116
+ /**
117
+ * git コマンドのエラーをモックします
118
+ *
119
+ * @param subCommand - git のサブコマンド
120
+ * @param error - スローするエラー
121
+ *
122
+ * @example
123
+ * ```typescript
124
+ * mock.mockGitCommandError("checkout unknown-branch", new Error("branch not found"));
125
+ * ```
126
+ */
127
+ mockGitCommandError(subCommand, error) {
128
+ const fullCommand = `git ${subCommand}`.trim();
129
+ this.commandErrors.set(fullCommand, error);
130
+ }
131
+ /**
132
+ * カスタムコマンドのレスポンスをモックします
133
+ *
134
+ * @param command - 完全なコマンド文字列
135
+ * @param response - モックするレスポンス
136
+ *
137
+ * @example
138
+ * ```typescript
139
+ * mock.mockCommand("npm --version", "10.2.4");
140
+ * ```
141
+ */
142
+ mockCommand(command, response) {
143
+ this.commandResponses.set(command.trim(), response);
144
+ }
145
+ /**
146
+ * カスタムコマンドのエラーをモックします
147
+ *
148
+ * @param command - 完全なコマンド文字列
149
+ * @param error - スローするエラー
150
+ */
151
+ mockCommandError(command, error) {
152
+ this.commandErrors.set(command.trim(), error);
153
+ }
154
+ /**
155
+ * execSyncモックを取得します(直接操作が必要な場合)
156
+ */
157
+ getExecSyncMock() {
158
+ return this.execSyncMock;
159
+ }
160
+ /**
161
+ * 特定のコマンドが呼び出されたかを確認します
162
+ *
163
+ * @param command - 確認するコマンド
164
+ * @returns 呼び出された場合true
165
+ *
166
+ * @example
167
+ * ```typescript
168
+ * expect(mock.wasCommandCalled("gh issue view 123")).toBe(true);
169
+ * ```
170
+ */
171
+ wasCommandCalled(command) {
172
+ const calls = this.execSyncMock.mock.calls;
173
+ return calls.some((call) => {
174
+ const calledCommand = String(call[0]).trim();
175
+ return calledCommand === command.trim();
176
+ });
177
+ }
178
+ /**
179
+ * 呼び出されたすべてのコマンドを取得します
180
+ *
181
+ * @returns コマンド文字列の配列
182
+ */
183
+ getCalledCommands() {
184
+ return this.execSyncMock.mock.calls.map((call) => String(call[0]).trim());
185
+ }
186
+ }
187
+ /**
188
+ * gh CLI のモックヘルパー
189
+ *
190
+ * GitHub CLI (gh) コマンドに特化したモックヘルパーです。
191
+ *
192
+ * @example
193
+ * ```typescript
194
+ * const ghMock = new GhCliMock(new ChildProcessMock());
195
+ * ghMock.setup();
196
+ *
197
+ * ghMock.mockIssueView(123, {
198
+ * number: 123,
199
+ * title: "Test Issue",
200
+ * body: "Issue content"
201
+ * });
202
+ *
203
+ * ghMock.reset();
204
+ * ```
205
+ */
206
+ export class GhCliMock {
207
+ constructor(childProcessMock) {
208
+ this.childProcessMock = childProcessMock;
209
+ }
210
+ /**
211
+ * モックをセットアップします
212
+ */
213
+ setup() {
214
+ this.childProcessMock.setup();
215
+ }
216
+ /**
217
+ * モックをリセットします
218
+ */
219
+ reset() {
220
+ this.childProcessMock.reset();
221
+ }
222
+ /**
223
+ * gh issue view のレスポンスをモックします
224
+ */
225
+ mockIssueView(issueNumber, issueData) {
226
+ this.childProcessMock.mockGhCommand(`issue view ${issueNumber} --json number,title,body,state`, issueData);
227
+ }
228
+ /**
229
+ * gh issue edit のレスポンスをモックします
230
+ */
231
+ mockIssueEdit(issueNumber, success = true) {
232
+ if (success) {
233
+ this.childProcessMock.mockGhCommand(`issue edit ${issueNumber} --body`, "");
234
+ }
235
+ else {
236
+ this.childProcessMock.mockGhCommandError(`issue edit ${issueNumber} --body`, new Error("Failed to edit issue"));
237
+ }
238
+ }
239
+ /**
240
+ * gh pr create のレスポンスをモックします
241
+ */
242
+ mockPrCreate(prUrl = "https://github.com/owner/repo/pull/1", success = true) {
243
+ if (success) {
244
+ this.childProcessMock.mockGhCommand("pr create", prUrl);
245
+ }
246
+ else {
247
+ this.childProcessMock.mockGhCommandError("pr create", new Error("Failed to create PR"));
248
+ }
249
+ }
250
+ /**
251
+ * 内部のChildProcessMockを取得します
252
+ */
253
+ getChildProcessMock() {
254
+ return this.childProcessMock;
255
+ }
256
+ }
257
+ /**
258
+ * git コマンドのモックヘルパー
259
+ *
260
+ * git コマンドに特化したモックヘルパーです。
261
+ *
262
+ * @example
263
+ * ```typescript
264
+ * const gitMock = new GitCommandMock(new ChildProcessMock());
265
+ * gitMock.setup();
266
+ *
267
+ * gitMock.mockBranchList(["main", "develop", "feature/test"]);
268
+ * gitMock.mockCheckout("feature/test", true);
269
+ *
270
+ * gitMock.reset();
271
+ * ```
272
+ */
273
+ export class GitCommandMock {
274
+ constructor(childProcessMock) {
275
+ this.childProcessMock = childProcessMock;
276
+ }
277
+ /**
278
+ * モックをセットアップします
279
+ */
280
+ setup() {
281
+ this.childProcessMock.setup();
282
+ }
283
+ /**
284
+ * モックをリセットします
285
+ */
286
+ reset() {
287
+ this.childProcessMock.reset();
288
+ }
289
+ /**
290
+ * git branch --list のレスポンスをモックします
291
+ */
292
+ mockBranchList(branches, currentBranch = "main") {
293
+ const branchList = branches.map((b) => (b === currentBranch ? `* ${b}` : ` ${b}`)).join("\n");
294
+ this.childProcessMock.mockGitCommand("branch --list", branchList);
295
+ }
296
+ /**
297
+ * git checkout のレスポンスをモックします
298
+ */
299
+ mockCheckout(branchName, success = true) {
300
+ if (success) {
301
+ this.childProcessMock.mockGitCommand(`checkout ${branchName}`, `Switched to branch '${branchName}'`);
302
+ }
303
+ else {
304
+ this.childProcessMock.mockGitCommandError(`checkout ${branchName}`, new Error(`error: pathspec '${branchName}' did not match any file(s) known to git`));
305
+ }
306
+ }
307
+ /**
308
+ * git merge のレスポンスをモックします
309
+ */
310
+ mockMerge(branchName, success = true, hasConflict = false) {
311
+ if (!success) {
312
+ this.childProcessMock.mockGitCommandError(`merge ${branchName}`, new Error("merge failed"));
313
+ }
314
+ else if (hasConflict) {
315
+ this.childProcessMock.mockGitCommandError(`merge ${branchName}`, new Error("CONFLICT (content): Merge conflict"));
316
+ }
317
+ else {
318
+ this.childProcessMock.mockGitCommand(`merge ${branchName}`, "Merge successful");
319
+ }
320
+ }
321
+ /**
322
+ * git status のレスポンスをモックします
323
+ */
324
+ mockStatus(clean = true, conflictFiles = []) {
325
+ if (clean) {
326
+ this.childProcessMock.mockGitCommand("status --porcelain", "");
327
+ }
328
+ else {
329
+ const status = conflictFiles.map((file) => `UU ${file}`).join("\n");
330
+ this.childProcessMock.mockGitCommand("status --porcelain", status);
331
+ }
332
+ }
333
+ /**
334
+ * git push のレスポンスをモックします
335
+ */
336
+ mockPush(success = true) {
337
+ if (success) {
338
+ this.childProcessMock.mockGitCommand("push", "");
339
+ }
340
+ else {
341
+ this.childProcessMock.mockGitCommandError("push", new Error("failed to push"));
342
+ }
343
+ }
344
+ /**
345
+ * 内部のChildProcessMockを取得します
346
+ */
347
+ getChildProcessMock() {
348
+ return this.childProcessMock;
349
+ }
350
+ }
351
+ //# sourceMappingURL=child-process.mock.js.map