@reqord/cli 0.1.0 → 0.3.0

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 (113) hide show
  1. package/dist/commands/req/approve.d.ts.map +1 -1
  2. package/dist/commands/req/approve.js +43 -12
  3. package/dist/commands/req/approve.js.map +1 -1
  4. package/dist/commands/req/approve.test.js +90 -4
  5. package/dist/commands/req/approve.test.js.map +1 -1
  6. package/dist/commands/req/draft.d.ts.map +1 -1
  7. package/dist/commands/req/draft.js +3 -1
  8. package/dist/commands/req/draft.js.map +1 -1
  9. package/dist/commands/req/draft.test.js +16 -2
  10. package/dist/commands/req/draft.test.js.map +1 -1
  11. package/dist/commands/req/implement.d.ts.map +1 -1
  12. package/dist/commands/req/implement.js +70 -21
  13. package/dist/commands/req/implement.js.map +1 -1
  14. package/dist/commands/req/implement.test.js +113 -0
  15. package/dist/commands/req/implement.test.js.map +1 -1
  16. package/dist/commands/req/update.d.ts.map +1 -1
  17. package/dist/commands/req/update.js +3 -0
  18. package/dist/commands/req/update.js.map +1 -1
  19. package/dist/commands/req/update.test.d.ts +2 -0
  20. package/dist/commands/req/update.test.d.ts.map +1 -0
  21. package/dist/commands/req/update.test.js +93 -0
  22. package/dist/commands/req/update.test.js.map +1 -0
  23. package/dist/commands/spec/approve.d.ts.map +1 -1
  24. package/dist/commands/spec/approve.js +37 -17
  25. package/dist/commands/spec/approve.js.map +1 -1
  26. package/dist/commands/spec/approve.test.js +79 -5
  27. package/dist/commands/spec/approve.test.js.map +1 -1
  28. package/dist/commands/spec/draft.d.ts.map +1 -1
  29. package/dist/commands/spec/draft.js +3 -1
  30. package/dist/commands/spec/draft.js.map +1 -1
  31. package/dist/commands/spec/draft.test.js +16 -2
  32. package/dist/commands/spec/draft.test.js.map +1 -1
  33. package/dist/commands/spec/implement.d.ts.map +1 -1
  34. package/dist/commands/spec/implement.js +52 -15
  35. package/dist/commands/spec/implement.js.map +1 -1
  36. package/dist/commands/spec/spec-approval-flow.integration.test.js +25 -5
  37. package/dist/commands/spec/spec-approval-flow.integration.test.js.map +1 -1
  38. package/dist/repositories/project-settings.d.ts +2 -0
  39. package/dist/repositories/project-settings.d.ts.map +1 -0
  40. package/dist/repositories/project-settings.js +18 -0
  41. package/dist/repositories/project-settings.js.map +1 -0
  42. package/dist/repositories/project-settings.test.d.ts +2 -0
  43. package/dist/repositories/project-settings.test.d.ts.map +1 -0
  44. package/dist/repositories/project-settings.test.js +42 -0
  45. package/dist/repositories/project-settings.test.js.map +1 -0
  46. package/dist/repositories/requirement.d.ts +1 -0
  47. package/dist/repositories/requirement.d.ts.map +1 -1
  48. package/dist/repositories/requirement.js +7 -0
  49. package/dist/repositories/requirement.js.map +1 -1
  50. package/dist/services/approval-service.d.ts +5 -4
  51. package/dist/services/approval-service.d.ts.map +1 -1
  52. package/dist/services/approval-service.js +56 -40
  53. package/dist/services/approval-service.js.map +1 -1
  54. package/dist/services/approval-service.test.js +127 -10
  55. package/dist/services/approval-service.test.js.map +1 -1
  56. package/dist/services/draft-reversion-service.d.ts +2 -1
  57. package/dist/services/draft-reversion-service.d.ts.map +1 -1
  58. package/dist/services/draft-reversion-service.js +49 -33
  59. package/dist/services/draft-reversion-service.js.map +1 -1
  60. package/dist/services/draft-reversion-service.test.js +172 -17
  61. package/dist/services/draft-reversion-service.test.js.map +1 -1
  62. package/dist/services/feedback-validation.d.ts +7 -0
  63. package/dist/services/feedback-validation.d.ts.map +1 -0
  64. package/dist/services/feedback-validation.js +16 -0
  65. package/dist/services/feedback-validation.js.map +1 -0
  66. package/dist/services/feedback-validation.test.d.ts +2 -0
  67. package/dist/services/feedback-validation.test.d.ts.map +1 -0
  68. package/dist/services/feedback-validation.test.js +221 -0
  69. package/dist/services/feedback-validation.test.js.map +1 -0
  70. package/dist/services/init-service.d.ts.map +1 -1
  71. package/dist/services/init-service.js +7 -16
  72. package/dist/services/init-service.js.map +1 -1
  73. package/dist/services/init-service.test.js +7 -34
  74. package/dist/services/init-service.test.js.map +1 -1
  75. package/dist/services/project-settings-service.d.ts +4 -0
  76. package/dist/services/project-settings-service.d.ts.map +1 -0
  77. package/dist/services/project-settings-service.js +22 -0
  78. package/dist/services/project-settings-service.js.map +1 -0
  79. package/dist/services/project-settings-service.test.d.ts +2 -0
  80. package/dist/services/project-settings-service.test.d.ts.map +1 -0
  81. package/dist/services/project-settings-service.test.js +64 -0
  82. package/dist/services/project-settings-service.test.js.map +1 -0
  83. package/dist/services/requirement-service.d.ts +7 -1
  84. package/dist/services/requirement-service.d.ts.map +1 -1
  85. package/dist/services/requirement-service.js +30 -1
  86. package/dist/services/requirement-service.js.map +1 -1
  87. package/dist/services/requirement-service.test.js +208 -4
  88. package/dist/services/requirement-service.test.js.map +1 -1
  89. package/dist/services/specification-service.d.ts +2 -2
  90. package/dist/services/specification-service.d.ts.map +1 -1
  91. package/dist/services/specification-service.js +23 -10
  92. package/dist/services/specification-service.js.map +1 -1
  93. package/dist/services/specification-service.test.js +117 -10
  94. package/dist/services/specification-service.test.js.map +1 -1
  95. package/dist/services/status-transition-service.d.ts +30 -0
  96. package/dist/services/status-transition-service.d.ts.map +1 -0
  97. package/dist/services/status-transition-service.js +61 -0
  98. package/dist/services/status-transition-service.js.map +1 -0
  99. package/dist/services/status-transition-service.test.d.ts +2 -0
  100. package/dist/services/status-transition-service.test.d.ts.map +1 -0
  101. package/dist/services/status-transition-service.test.js +161 -0
  102. package/dist/services/status-transition-service.test.js.map +1 -0
  103. package/dist/services/version-service.d.ts +6 -1
  104. package/dist/services/version-service.d.ts.map +1 -1
  105. package/dist/services/version-service.js +20 -2
  106. package/dist/services/version-service.js.map +1 -1
  107. package/dist/services/version-service.test.js +45 -4
  108. package/dist/services/version-service.test.js.map +1 -1
  109. package/dist/utils/templates.d.ts +1 -0
  110. package/dist/utils/templates.d.ts.map +1 -1
  111. package/dist/utils/templates.js +41 -0
  112. package/dist/utils/templates.js.map +1 -1
  113. package/package.json +4 -4
@@ -1 +1 @@
1
- {"version":3,"file":"approval-service.d.ts","sourceRoot":"","sources":["../../src/services/approval-service.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,aAAa,GAAG,eAAe,CAAC;IACtC,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,MAAM,WAAW,eAAe;IAC9B,+DAA+D;IAC/D,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/D,4DAA4D;IAC5D,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACnE,qBAAqB;IACrB,YAAY,CAAC,MAAM,EAAE,cAAc,GAAG,MAAM,CAAC;IAC7C,oBAAoB;IACpB,WAAW,CAAC,MAAM,EAAE,cAAc,GAAG,MAAM,CAAC;CAC7C;AAED,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,eAAe;IAC9B,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAMD,wBAAsB,aAAa,CACjC,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,cAAc,EACtB,OAAO,EAAE,eAAe,EACxB,OAAO,CAAC,EAAE,eAAe,GACxB,OAAO,CAAC,cAAc,CAAC,CA8DzB"}
1
+ {"version":3,"file":"approval-service.d.ts","sourceRoot":"","sources":["../../src/services/approval-service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAItD,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,aAAa,GAAG,eAAe,CAAC;IACtC,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,MAAM,WAAW,eAAe;IAC9B,+DAA+D;IAC/D,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/D,4DAA4D;IAC5D,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACnE,qBAAqB;IACrB,YAAY,CAAC,MAAM,EAAE,cAAc,GAAG,MAAM,CAAC;IAC7C,oBAAoB;IACpB,WAAW,CAAC,MAAM,EAAE,cAAc,GAAG,MAAM,CAAC;CAC7C;AAED,MAAM,WAAW,cAAc;IAC7B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,eAAe;IAC9B,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAOD,wBAAsB,aAAa,CACjC,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,cAAc,EACtB,OAAO,EAAE,eAAe,EACxB,QAAQ,EAAE,eAAe,EACzB,OAAO,CAAC,EAAE,eAAe,GACxB,OAAO,CAAC,cAAc,CAAC,CA4EzB"}
@@ -1,59 +1,75 @@
1
1
  import * as gitRepo from "../repositories/git.js";
2
2
  import * as githubRepo from "../repositories/github.js";
3
- function buildBranchName(target) {
4
- return `reqord/${target.id}-approve-v${target.version}`;
3
+ function buildBranchName(target, settings) {
4
+ const prefix = settings.branchNaming.toApprovedPrefix;
5
+ return `${prefix}/${target.id}-approve-v${target.version}`;
5
6
  }
6
- export async function startApproval(cwd, target, handler, options) {
7
+ export async function startApproval(cwd, target, handler, settings, options) {
7
8
  // 1. Precondition check
8
9
  if (target.status !== "draft") {
9
10
  throw new Error(`Cannot start approval: ${target.id} status is "${target.status}", expected "draft".`);
10
11
  }
11
- const branchName = buildBranchName(target);
12
+ const branchName = buildBranchName(target, settings);
12
13
  // 2. Dry-run mode
13
14
  if (options?.dryRun) {
14
15
  const prTitle = handler.buildPrTitle(target);
15
- console.log(`[dry-run] Create branch: ${branchName}`);
16
- console.log(`[dry-run] Status change: draft → approved`);
17
- console.log(`[dry-run] Create PR: ${prTitle}`);
18
- return { branchName, prNumber: 0, prUrl: "" };
16
+ if (settings.statusTransitionPr.draftToApproved) {
17
+ console.log(`[dry-run] Create branch: ${branchName}`);
18
+ console.log(`[dry-run] Status change: draft → approved`);
19
+ console.log(`[dry-run] Create PR: ${prTitle}`);
20
+ return { branchName, prNumber: 0, prUrl: "" };
21
+ }
22
+ else {
23
+ console.log(`[dry-run] Status change: draft → approved (direct commit)`);
24
+ return {};
25
+ }
19
26
  }
20
27
  // 3. Re-validate
21
28
  await handler.revalidate(cwd, target);
22
- // 4. Save original branch
23
- const originalBranch = await gitRepo.getCurrentBranch(cwd);
24
- try {
25
- // 5. Create and switch to approval branch
26
- await gitRepo.createBranch(cwd, branchName);
27
- await gitRepo.checkout(cwd, branchName);
28
- // 6. Update status via handler
29
- const newVersion = await handler.updateStatus(cwd, target);
30
- // 7. Stage and commit
31
- await gitRepo.add(cwd, target.files);
32
- await gitRepo.commit(cwd, `chore(reqord): request approval for ${target.id}`);
33
- await gitRepo.push(cwd, branchName);
34
- // 8. Build PR title/body AFTER updateStatus to use newVersion
35
- const updatedTarget = { ...target, version: newVersion };
36
- const prTitle = handler.buildPrTitle(updatedTarget);
37
- const prBody = handler.buildPrBody(updatedTarget);
38
- // 9. Create PR
39
- const prInfo = await githubRepo.createPullRequest({
40
- title: prTitle,
41
- body: prBody,
42
- head: branchName,
43
- });
44
- return {
45
- branchName,
46
- prNumber: prInfo.number,
47
- prUrl: prInfo.url,
48
- };
49
- }
50
- finally {
29
+ if (settings.statusTransitionPr.draftToApproved) {
30
+ // PR flow: branch → update → commit → push → PR
31
+ const originalBranch = await gitRepo.getCurrentBranch(cwd);
51
32
  try {
52
- await gitRepo.checkout(cwd, originalBranch);
33
+ // 4. Create and switch to approval branch
34
+ await gitRepo.createBranch(cwd, branchName);
35
+ await gitRepo.checkout(cwd, branchName);
36
+ // 5. Update status via handler
37
+ const newVersion = await handler.updateStatus(cwd, target);
38
+ // 6. Stage and commit
39
+ await gitRepo.add(cwd, target.files);
40
+ await gitRepo.commit(cwd, `chore(reqord): request approval for ${target.id}`);
41
+ await gitRepo.push(cwd, branchName);
42
+ // 7. Build PR title/body AFTER updateStatus to use newVersion
43
+ const updatedTarget = { ...target, version: newVersion };
44
+ const prTitle = handler.buildPrTitle(updatedTarget);
45
+ const prBody = handler.buildPrBody(updatedTarget);
46
+ // 8. Create PR
47
+ const prInfo = await githubRepo.createPullRequest({
48
+ title: prTitle,
49
+ body: prBody,
50
+ head: branchName,
51
+ });
52
+ return {
53
+ branchName,
54
+ prNumber: prInfo.number,
55
+ prUrl: prInfo.url,
56
+ };
53
57
  }
54
- catch {
55
- // Best-effort restore
58
+ finally {
59
+ try {
60
+ await gitRepo.checkout(cwd, originalBranch);
61
+ }
62
+ catch {
63
+ // Best-effort restore
64
+ }
56
65
  }
57
66
  }
67
+ else {
68
+ // Direct commit flow: update status on current branch
69
+ await handler.updateStatus(cwd, target);
70
+ await gitRepo.add(cwd, target.files);
71
+ await gitRepo.commit(cwd, `chore(reqord): approve ${target.id} (direct commit)`);
72
+ return {};
73
+ }
58
74
  }
59
75
  //# sourceMappingURL=approval-service.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"approval-service.js","sourceRoot":"","sources":["../../src/services/approval-service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,wBAAwB,CAAC;AAClD,OAAO,KAAK,UAAU,MAAM,2BAA2B,CAAC;AAgCxD,SAAS,eAAe,CAAC,MAAsB;IAC7C,OAAO,UAAU,MAAM,CAAC,EAAE,aAAa,MAAM,CAAC,OAAO,EAAE,CAAC;AAC1D,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,GAAW,EACX,MAAsB,EACtB,OAAwB,EACxB,OAAyB;IAEzB,wBAAwB;IACxB,IAAI,MAAM,CAAC,MAAM,KAAK,OAAO,EAAE,CAAC;QAC9B,MAAM,IAAI,KAAK,CACb,0BAA0B,MAAM,CAAC,EAAE,eAAe,MAAM,CAAC,MAAM,sBAAsB,CACtF,CAAC;IACJ,CAAC;IAED,MAAM,UAAU,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;IAE3C,kBAAkB;IAClB,IAAI,OAAO,EAAE,MAAM,EAAE,CAAC;QACpB,MAAM,OAAO,GAAG,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;QAC7C,OAAO,CAAC,GAAG,CAAC,4BAA4B,UAAU,EAAE,CAAC,CAAC;QACtD,OAAO,CAAC,GAAG,CAAC,2CAA2C,CAAC,CAAC;QACzD,OAAO,CAAC,GAAG,CAAC,wBAAwB,OAAO,EAAE,CAAC,CAAC;QAC/C,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;IAChD,CAAC;IAED,iBAAiB;IACjB,MAAM,OAAO,CAAC,UAAU,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IAEtC,0BAA0B;IAC1B,MAAM,cAAc,GAAG,MAAM,OAAO,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;IAE3D,IAAI,CAAC;QACH,0CAA0C;QAC1C,MAAM,OAAO,CAAC,YAAY,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;QAC5C,MAAM,OAAO,CAAC,QAAQ,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;QAExC,+BAA+B;QAC/B,MAAM,UAAU,GAAG,MAAM,OAAO,CAAC,YAAY,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QAE3D,sBAAsB;QACtB,MAAM,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;QACrC,MAAM,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE,uCAAuC,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC;QAC9E,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;QAEpC,8DAA8D;QAC9D,MAAM,aAAa,GAAG,EAAE,GAAG,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC;QACzD,MAAM,OAAO,GAAG,OAAO,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC;QACpD,MAAM,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;QAElD,eAAe;QACf,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,iBAAiB,CAAC;YAChD,KAAK,EAAE,OAAO;YACd,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,UAAU;SACjB,CAAC,CAAC;QAEH,OAAO;YACL,UAAU;YACV,QAAQ,EAAE,MAAM,CAAC,MAAM;YACvB,KAAK,EAAE,MAAM,CAAC,GAAG;SAClB,CAAC;IACJ,CAAC;YAAS,CAAC;QACT,IAAI,CAAC;YACH,MAAM,OAAO,CAAC,QAAQ,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;QAC9C,CAAC;QAAC,MAAM,CAAC;YACP,sBAAsB;QACxB,CAAC;IACH,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"approval-service.js","sourceRoot":"","sources":["../../src/services/approval-service.ts"],"names":[],"mappings":"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"}
@@ -14,6 +14,42 @@ vi.mock("../repositories/github.js", () => ({
14
14
  import * as gitRepo from "../repositories/git.js";
15
15
  import * as githubRepo from "../repositories/github.js";
16
16
  import { startApproval } from "./approval-service.js";
17
+ function makeSettings(overrides = {}) {
18
+ return {
19
+ invariants: {
20
+ versioning: true,
21
+ cyclicDependencyCheck: true,
22
+ statusTransitionRules: true,
23
+ schemaValidation: true,
24
+ },
25
+ approvalPrerequisites: {
26
+ designMdCheck: true,
27
+ descriptionMdCheck: false,
28
+ customFiles: [],
29
+ },
30
+ statusTransitionPr: {
31
+ draftToApproved: true,
32
+ approvedToImplemented: false,
33
+ toDraft: true,
34
+ ...overrides,
35
+ },
36
+ branchNaming: {
37
+ toApprovedPrefix: "reqord",
38
+ toImplementedPrefix: "reqord",
39
+ toDraftPrefix: "reqord",
40
+ },
41
+ feedbackValidation: {
42
+ blockOnUnresolved: false,
43
+ severityThreshold: "critical",
44
+ },
45
+ autoRevert: {
46
+ onContentChange: "always",
47
+ },
48
+ consistencyCheck: {
49
+ specNotImplementedLevel: "warning",
50
+ },
51
+ };
52
+ }
17
53
  function makeApprovalTarget(overrides = {}) {
18
54
  return {
19
55
  type: "requirement",
@@ -60,7 +96,8 @@ describe("startApproval", () => {
60
96
  it("正常系: draft状態のRequirementで承認フロー開始", async () => {
61
97
  const target = makeApprovalTarget();
62
98
  const mockHandler = makeMockHandler();
63
- const result = await startApproval("/test/cwd", target, mockHandler);
99
+ const settings = makeSettings();
100
+ const result = await startApproval("/test/cwd", target, mockHandler, settings);
64
101
  // Verify revalidate called
65
102
  expect(mockHandler.revalidate).toHaveBeenCalledWith("/test/cwd", target);
66
103
  // Verify branch created and checked out BEFORE file modifications
@@ -88,7 +125,8 @@ describe("startApproval", () => {
88
125
  it("エラー: draft以外のステータスでエラー", async () => {
89
126
  const target = makeApprovalTarget({ status: "approved" });
90
127
  const mockHandler = makeMockHandler();
91
- await expect(startApproval("/test/cwd", target, mockHandler)).rejects.toThrow('Cannot start approval: req-000011 status is "approved", expected "draft".');
128
+ const settings = makeSettings();
129
+ await expect(startApproval("/test/cwd", target, mockHandler, settings)).rejects.toThrow('Cannot start approval: req-000011 status is "approved", expected "draft".');
92
130
  // Verify no side effects
93
131
  expect(mockHandler.revalidate).not.toHaveBeenCalled();
94
132
  expect(gitRepo.createBranch).not.toHaveBeenCalled();
@@ -96,26 +134,30 @@ describe("startApproval", () => {
96
134
  it("エラー: implemented等の非draftステータスでもエラー", async () => {
97
135
  const target = makeApprovalTarget({ status: "implemented" });
98
136
  const mockHandler = makeMockHandler();
99
- await expect(startApproval("/test/cwd", target, mockHandler)).rejects.toThrow('Cannot start approval: req-000011 status is "implemented", expected "draft".');
137
+ const settings = makeSettings();
138
+ await expect(startApproval("/test/cwd", target, mockHandler, settings)).rejects.toThrow('Cannot start approval: req-000011 status is "implemented", expected "draft".');
100
139
  });
101
140
  it("エラー: handler.revalidateがエラーをthrowした場合", async () => {
102
141
  const target = makeApprovalTarget();
103
142
  const mockHandler = makeMockHandler();
143
+ const settings = makeSettings();
104
144
  vi.mocked(mockHandler.revalidate).mockRejectedValue(new Error('Cannot start approval: req-000011 current status is "approved", expected "draft".'));
105
- await expect(startApproval("/test/cwd", target, mockHandler)).rejects.toThrow('Cannot start approval: req-000011 current status is "approved", expected "draft".');
145
+ await expect(startApproval("/test/cwd", target, mockHandler, settings)).rejects.toThrow('Cannot start approval: req-000011 current status is "approved", expected "draft".');
106
146
  // Git operations should not have been called
107
147
  expect(gitRepo.createBranch).not.toHaveBeenCalled();
108
148
  });
109
149
  it("エラー: handler.revalidateでバージョン不一致", async () => {
110
150
  const target = makeApprovalTarget({ version: "1.0.0" });
111
151
  const mockHandler = makeMockHandler();
152
+ const settings = makeSettings();
112
153
  vi.mocked(mockHandler.revalidate).mockRejectedValue(new Error('Cannot start approval: req-000011 current version is "2.0.0", expected "1.0.0".'));
113
- await expect(startApproval("/test/cwd", target, mockHandler)).rejects.toThrow('Cannot start approval: req-000011 current version is "2.0.0", expected "1.0.0".');
154
+ await expect(startApproval("/test/cwd", target, mockHandler, settings)).rejects.toThrow('Cannot start approval: req-000011 current version is "2.0.0", expected "1.0.0".');
114
155
  });
115
156
  it("ブランチ名の命名規則", async () => {
116
157
  const target = makeApprovalTarget({ id: "req-000011", version: "1.0.0" });
117
158
  const mockHandler = makeMockHandler();
118
- await startApproval("/test/cwd", target, mockHandler);
159
+ const settings = makeSettings();
160
+ await startApproval("/test/cwd", target, mockHandler, settings);
119
161
  expect(gitRepo.createBranch).toHaveBeenCalledWith("/test/cwd", "reqord/req-000011-approve-v1.0.0");
120
162
  });
121
163
  it("PR本文にRequirement情報と手動更新の案内が含まれる", async () => {
@@ -125,7 +167,8 @@ describe("startApproval", () => {
125
167
  title: "Feature X",
126
168
  });
127
169
  const mockHandler = makeMockHandler();
128
- await startApproval("/test/cwd", target, mockHandler);
170
+ const settings = makeSettings();
171
+ await startApproval("/test/cwd", target, mockHandler, settings);
129
172
  const prBody = vi.mocked(githubRepo.createPullRequest).mock.calls[0][0].body;
130
173
  expect(prBody).toContain("req-000022");
131
174
  expect(prBody).toContain("Feature X");
@@ -134,7 +177,8 @@ describe("startApproval", () => {
134
177
  it("dry-runモード", async () => {
135
178
  const target = makeApprovalTarget();
136
179
  const mockHandler = makeMockHandler();
137
- const result = await startApproval("/test/cwd", target, mockHandler, { dryRun: true });
180
+ const settings = makeSettings();
181
+ const result = await startApproval("/test/cwd", target, mockHandler, settings, { dryRun: true });
138
182
  // Git/GitHub operations NOT called
139
183
  expect(gitRepo.getCurrentBranch).not.toHaveBeenCalled();
140
184
  expect(mockHandler.revalidate).not.toHaveBeenCalled();
@@ -156,7 +200,8 @@ describe("startApproval", () => {
156
200
  vi.mocked(gitRepo.getCurrentBranch).mockResolvedValue("feature-123");
157
201
  const target = makeApprovalTarget();
158
202
  const mockHandler = makeMockHandler();
159
- await startApproval("/test/cwd", target, mockHandler);
203
+ const settings = makeSettings();
204
+ await startApproval("/test/cwd", target, mockHandler, settings);
160
205
  // Verify getCurrentBranch called before operations
161
206
  expect(gitRepo.getCurrentBranch).toHaveBeenCalledWith("/test/cwd");
162
207
  // Verify checkout called: approval branch + restore
@@ -165,9 +210,33 @@ describe("startApproval", () => {
165
210
  // Last checkout should restore original branch
166
211
  expect(checkoutCalls[checkoutCalls.length - 1]).toEqual(["/test/cwd", "feature-123"]);
167
212
  });
213
+ describe("ブランチ命名規則カスタマイズ (spec-000038)", () => {
214
+ it("デフォルト設定ではブランチ名が reqord/{id}-approve-v{version} になること", async () => {
215
+ const target = makeApprovalTarget({ id: "req-000011", version: "1.0.0" });
216
+ const mockHandler = makeMockHandler();
217
+ const settings = makeSettings();
218
+ await startApproval("/test/cwd", target, mockHandler, settings);
219
+ expect(gitRepo.createBranch).toHaveBeenCalledWith("/test/cwd", "reqord/req-000011-approve-v1.0.0");
220
+ });
221
+ it("カスタムプレフィックスでブランチ名が {toApprovedPrefix}/{id}-approve-v{version} になること", async () => {
222
+ const target = makeApprovalTarget({ id: "req-000011", version: "1.0.0" });
223
+ const mockHandler = makeMockHandler();
224
+ const settings = { ...makeSettings(), branchNaming: { ...makeSettings().branchNaming, toApprovedPrefix: "approve" } };
225
+ await startApproval("/test/cwd", target, mockHandler, settings);
226
+ expect(gitRepo.createBranch).toHaveBeenCalledWith("/test/cwd", "approve/req-000011-approve-v1.0.0");
227
+ });
228
+ it("カスタムプレフィックスがdryRunのブランチ名にも適用されること", async () => {
229
+ const target = makeApprovalTarget({ id: "req-000022", version: "2.0.0" });
230
+ const mockHandler = makeMockHandler();
231
+ const settings = { ...makeSettings(), branchNaming: { ...makeSettings().branchNaming, toApprovedPrefix: "feature" } };
232
+ const result = await startApproval("/test/cwd", target, mockHandler, settings, { dryRun: true });
233
+ expect(result.branchName).toBe("feature/req-000022-approve-v2.0.0");
234
+ });
235
+ });
168
236
  it("ブランチ作成後にJSON更新される(書き込み順序の安全性)", async () => {
169
237
  const target = makeApprovalTarget();
170
238
  const mockHandler = makeMockHandler();
239
+ const settings = makeSettings();
171
240
  const callOrder = [];
172
241
  vi.mocked(gitRepo.createBranch).mockImplementation(async () => { callOrder.push("createBranch"); });
173
242
  vi.mocked(gitRepo.checkout).mockImplementation(async () => { callOrder.push("checkout"); });
@@ -175,7 +244,7 @@ describe("startApproval", () => {
175
244
  callOrder.push("updateStatus");
176
245
  return "2.0.0";
177
246
  });
178
- await startApproval("/test/cwd", target, mockHandler);
247
+ await startApproval("/test/cwd", target, mockHandler, settings);
179
248
  const createIdx = callOrder.indexOf("createBranch");
180
249
  const checkoutIdx = callOrder.indexOf("checkout");
181
250
  const updateIdx = callOrder.indexOf("updateStatus");
@@ -183,5 +252,53 @@ describe("startApproval", () => {
183
252
  expect(createIdx).toBeLessThan(updateIdx);
184
253
  expect(checkoutIdx).toBeLessThan(updateIdx);
185
254
  });
255
+ describe("draftToApproved: false(PRスキップ)", () => {
256
+ it("draftToApproved=false の場合、ブランチ作成・プッシュ・PR作成をスキップする", async () => {
257
+ const target = makeApprovalTarget();
258
+ const mockHandler = makeMockHandler();
259
+ const settings = makeSettings({ draftToApproved: false });
260
+ const result = await startApproval("/test/cwd", target, mockHandler, settings);
261
+ // revalidate is called
262
+ expect(mockHandler.revalidate).toHaveBeenCalledWith("/test/cwd", target);
263
+ // Status update is called
264
+ expect(mockHandler.updateStatus).toHaveBeenCalledWith("/test/cwd", target);
265
+ // git add and commit are called on current branch
266
+ expect(gitRepo.add).toHaveBeenCalledWith("/test/cwd", [".reqord/requirements/req-000011.yaml"]);
267
+ expect(gitRepo.commit).toHaveBeenCalledWith("/test/cwd", "chore(reqord): approve req-000011 (direct commit)");
268
+ // branch creation, push, PR creation are skipped
269
+ expect(gitRepo.createBranch).not.toHaveBeenCalled();
270
+ expect(gitRepo.push).not.toHaveBeenCalled();
271
+ expect(githubRepo.createPullRequest).not.toHaveBeenCalled();
272
+ // Result has no PR info
273
+ expect(result.prNumber).toBeUndefined();
274
+ expect(result.prUrl).toBeUndefined();
275
+ });
276
+ it("draftToApproved=false の場合、元のブランチへの復帰もしない", async () => {
277
+ const target = makeApprovalTarget();
278
+ const mockHandler = makeMockHandler();
279
+ const settings = makeSettings({ draftToApproved: false });
280
+ await startApproval("/test/cwd", target, mockHandler, settings);
281
+ // getCurrentBranch is not called (no need to save/restore branch)
282
+ expect(gitRepo.getCurrentBranch).not.toHaveBeenCalled();
283
+ expect(gitRepo.checkout).not.toHaveBeenCalled();
284
+ });
285
+ it("draftToApproved=false の場合、branchNameはundefinedを返す", async () => {
286
+ const target = makeApprovalTarget();
287
+ const mockHandler = makeMockHandler();
288
+ const settings = makeSettings({ draftToApproved: false });
289
+ const result = await startApproval("/test/cwd", target, mockHandler, settings);
290
+ expect(result.branchName).toBeUndefined();
291
+ });
292
+ it("draftToApproved=false かつ dry-run の場合、何もしない", async () => {
293
+ const target = makeApprovalTarget();
294
+ const mockHandler = makeMockHandler();
295
+ const settings = makeSettings({ draftToApproved: false });
296
+ await startApproval("/test/cwd", target, mockHandler, settings, { dryRun: true });
297
+ expect(mockHandler.revalidate).not.toHaveBeenCalled();
298
+ expect(mockHandler.updateStatus).not.toHaveBeenCalled();
299
+ expect(gitRepo.add).not.toHaveBeenCalled();
300
+ expect(gitRepo.commit).not.toHaveBeenCalled();
301
+ });
302
+ });
186
303
  });
187
304
  //# sourceMappingURL=approval-service.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"approval-service.test.js","sourceRoot":"","sources":["../../src/services/approval-service.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"approval-service.test.js","sourceRoot":"","sources":["../../src/services/approval-service.test.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import type { ProjectSettings } from "@reqord/shared";
1
2
  export interface DraftReversionResult {
2
3
  previousStatus: string;
3
4
  impactedRequirements: string[];
@@ -7,5 +8,5 @@ export interface DraftReversionResult {
7
8
  export interface DraftReversionOptions {
8
9
  dryRun?: boolean;
9
10
  }
10
- export declare function revertToDraft(cwd: string, id: string, options?: DraftReversionOptions): Promise<DraftReversionResult>;
11
+ export declare function revertToDraft(cwd: string, id: string, settings: ProjectSettings, options?: DraftReversionOptions): Promise<DraftReversionResult>;
11
12
  //# sourceMappingURL=draft-reversion-service.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"draft-reversion-service.d.ts","sourceRoot":"","sources":["../../src/services/draft-reversion-service.ts"],"names":[],"mappings":"AAaA,MAAM,WAAW,oBAAoB;IACnC,cAAc,EAAE,MAAM,CAAC;IACvB,oBAAoB,EAAE,MAAM,EAAE,CAAC;IAC/B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,qBAAqB;IACpC,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAwFD,wBAAsB,aAAa,CACjC,GAAG,EAAE,MAAM,EACX,EAAE,EAAE,MAAM,EACV,OAAO,CAAC,EAAE,qBAAqB,GAC9B,OAAO,CAAC,oBAAoB,CAAC,CAyE/B"}
1
+ {"version":3,"file":"draft-reversion-service.d.ts","sourceRoot":"","sources":["../../src/services/draft-reversion-service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AActD,MAAM,WAAW,oBAAoB;IACnC,cAAc,EAAE,MAAM,CAAC;IACvB,oBAAoB,EAAE,MAAM,EAAE,CAAC;IAC/B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,qBAAqB;IACpC,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAyFD,wBAAsB,aAAa,CACjC,GAAG,EAAE,MAAM,EACX,EAAE,EAAE,MAAM,EACV,QAAQ,EAAE,eAAe,EACzB,OAAO,CAAC,EAAE,qBAAqB,GAC9B,OAAO,CAAC,oBAAoB,CAAC,CA0F/B"}
@@ -6,8 +6,9 @@ import * as specRepo from "../repositories/specification.js";
6
6
  import { updateRequirement } from "./requirement-service.js";
7
7
  import { updateSpecification } from "./specification-service.js";
8
8
  import { analyzeImpact } from "./impact-service.js";
9
- function buildBranchName(id) {
10
- return `reqord/${id}-revert-to-draft`;
9
+ function buildBranchName(id, settings) {
10
+ const prefix = settings.branchNaming.toDraftPrefix;
11
+ return `${prefix}/${id}-revert-to-draft`;
11
12
  }
12
13
  function buildPrTitle(id, title) {
13
14
  return `[Reqord] Revert ${id} to draft: ${title}`;
@@ -51,7 +52,7 @@ async function loadEntity(cwd, id) {
51
52
  const { type } = getEntityInfo(id);
52
53
  if (type === "specification") {
53
54
  const spec = await specRepo.findByIdOrThrow(cwd, id);
54
- return { status: spec.status, title: id, version: spec.version };
55
+ return { status: spec.status, title: spec.title ?? id, version: spec.version };
55
56
  }
56
57
  const req = await reqRepo.findByIdOrThrow(cwd, id);
57
58
  return { status: req.status, title: req.title, version: req.version };
@@ -69,7 +70,7 @@ async function analyzeSpecImpact(cwd, impact) {
69
70
  }
70
71
  return [];
71
72
  }
72
- export async function revertToDraft(cwd, id, options) {
73
+ export async function revertToDraft(cwd, id, settings, options) {
73
74
  // 1. Load entity and check precondition
74
75
  const entity = await loadEntity(cwd, id);
75
76
  if (entity.status === "draft") {
@@ -86,47 +87,62 @@ export async function revertToDraft(cwd, id, options) {
86
87
  if (options?.dryRun) {
87
88
  return { previousStatus, impactedRequirements };
88
89
  }
89
- // 4. Save original branch
90
- const originalBranch = await gitRepo.getCurrentBranch(cwd);
91
- const branchName = buildBranchName(id);
92
90
  const filePath = `${REQORD_DIR}/${dir}/${id}.yaml`;
93
- try {
94
- // 5. Create and switch to reversion branch
95
- await gitRepo.createBranch(cwd, branchName);
96
- await gitRepo.checkout(cwd, branchName);
97
- // 6. Update status to draft (no version bump)
91
+ async function performStatusUpdate() {
98
92
  if (id.startsWith("spec-")) {
99
93
  await updateSpecification(cwd, id, { status: "draft" });
100
94
  }
101
95
  else {
102
96
  await updateRequirement(cwd, id, { status: "draft" });
103
97
  }
104
- // 7. Stage, commit, push
98
+ }
99
+ if (settings.statusTransitionPr.toDraft) {
100
+ // PR flow: save original branch, create reversion branch, update status, commit, push, PR
101
+ const originalBranch = await gitRepo.getCurrentBranch(cwd);
102
+ const branchName = buildBranchName(id, settings);
103
+ try {
104
+ // Create and switch to reversion branch
105
+ await gitRepo.createBranch(cwd, branchName);
106
+ await gitRepo.checkout(cwd, branchName);
107
+ // Update status on the PR branch
108
+ await performStatusUpdate();
109
+ // Stage, commit, push
110
+ await gitRepo.add(cwd, [filePath]);
111
+ await gitRepo.commit(cwd, `chore(reqord): revert ${id} to draft`);
112
+ await gitRepo.push(cwd, branchName);
113
+ // Create PR
114
+ const prTitle = buildPrTitle(id, entity.title);
115
+ const prBody = buildPrBody(id, entity.title, entity.version, previousStatus, impactedRequirements, entityType);
116
+ const prInfo = await githubRepo.createPullRequest({
117
+ title: prTitle,
118
+ body: prBody,
119
+ head: branchName,
120
+ });
121
+ return {
122
+ previousStatus,
123
+ impactedRequirements,
124
+ prNumber: prInfo.number,
125
+ prUrl: prInfo.url,
126
+ };
127
+ }
128
+ finally {
129
+ try {
130
+ await gitRepo.checkout(cwd, originalBranch);
131
+ }
132
+ catch {
133
+ console.warn(`Warning: Failed to restore original branch "${originalBranch}".`);
134
+ }
135
+ }
136
+ }
137
+ else {
138
+ // Direct commit flow: update status and commit on current branch, no PR
139
+ await performStatusUpdate();
105
140
  await gitRepo.add(cwd, [filePath]);
106
- await gitRepo.commit(cwd, `chore(reqord): revert ${id} to draft`);
107
- await gitRepo.push(cwd, branchName);
108
- // 8. Create PR
109
- const prTitle = buildPrTitle(id, entity.title);
110
- const prBody = buildPrBody(id, entity.title, entity.version, previousStatus, impactedRequirements, entityType);
111
- const prInfo = await githubRepo.createPullRequest({
112
- title: prTitle,
113
- body: prBody,
114
- head: branchName,
115
- });
141
+ await gitRepo.commit(cwd, `chore(reqord): revert ${id} to draft (direct commit)`);
116
142
  return {
117
143
  previousStatus,
118
144
  impactedRequirements,
119
- prNumber: prInfo.number,
120
- prUrl: prInfo.url,
121
145
  };
122
146
  }
123
- finally {
124
- try {
125
- await gitRepo.checkout(cwd, originalBranch);
126
- }
127
- catch {
128
- console.warn(`Warning: Failed to restore original branch "${originalBranch}".`);
129
- }
130
- }
131
147
  }
132
148
  //# sourceMappingURL=draft-reversion-service.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"draft-reversion-service.js","sourceRoot":"","sources":["../../src/services/draft-reversion-service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"draft-reversion-service.js","sourceRoot":"","sources":["../../src/services/draft-reversion-service.ts"],"names":[],"mappings":"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"}