qfai 0.4.2 → 0.4.6

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 (174) hide show
  1. package/README.md +14 -0
  2. package/assets/init/.qfai/README.md +1 -0
  3. package/assets/init/.qfai/contracts/README.md +21 -11
  4. package/assets/init/.qfai/contracts/api/api-0001-sample.yaml +3 -2
  5. package/assets/init/.qfai/contracts/db/db-0001-sample.sql +2 -1
  6. package/assets/init/.qfai/contracts/ui/ui-0001-sample.yaml +3 -1
  7. package/assets/init/.qfai/promptpack/modes/change.md +3 -2
  8. package/assets/init/.qfai/promptpack/modes/compatibility.md +2 -0
  9. package/assets/init/.qfai/promptpack/steering/traceability.md +5 -4
  10. package/assets/init/.qfai/prompts/makeOverview.md +1 -1
  11. package/assets/init/.qfai/prompts/require-to-spec.md +4 -2
  12. package/assets/init/.qfai/specs/README.md +9 -2
  13. package/assets/init/.qfai/specs/spec-0001/scenario.md +1 -1
  14. package/assets/init/.qfai/specs/spec-0001/spec.md +2 -0
  15. package/assets/init/root/qfai.config.yaml +0 -1
  16. package/dist/cli/commands/init.d.ts +8 -0
  17. package/dist/cli/commands/init.d.ts.map +1 -0
  18. package/dist/cli/commands/init.js +30 -0
  19. package/dist/cli/commands/init.js.map +1 -0
  20. package/dist/cli/commands/report.d.ts +7 -0
  21. package/dist/cli/commands/report.d.ts.map +1 -0
  22. package/dist/cli/commands/report.js +108 -0
  23. package/dist/cli/commands/report.js.map +1 -0
  24. package/dist/cli/commands/validate.d.ts +9 -0
  25. package/dist/cli/commands/validate.d.ts.map +1 -0
  26. package/dist/cli/commands/validate.js +57 -0
  27. package/dist/cli/commands/validate.js.map +1 -0
  28. package/dist/cli/index.cjs +536 -336
  29. package/dist/cli/index.cjs.map +1 -1
  30. package/dist/cli/index.d.ts +2 -0
  31. package/dist/cli/index.d.ts.map +1 -0
  32. package/dist/cli/index.js +7 -0
  33. package/dist/cli/index.js.map +1 -0
  34. package/dist/cli/index.mjs +536 -336
  35. package/dist/cli/index.mjs.map +1 -1
  36. package/dist/cli/lib/args.d.ts +18 -0
  37. package/dist/cli/lib/args.d.ts.map +1 -0
  38. package/dist/cli/lib/args.js +98 -0
  39. package/dist/cli/lib/args.js.map +1 -0
  40. package/dist/cli/lib/assets.d.ts +2 -0
  41. package/dist/cli/lib/assets.d.ts.map +1 -0
  42. package/dist/cli/lib/assets.js +24 -0
  43. package/dist/cli/lib/assets.js.map +1 -0
  44. package/dist/cli/lib/failOn.d.ts +5 -0
  45. package/dist/cli/lib/failOn.d.ts.map +1 -0
  46. package/dist/cli/lib/failOn.js +10 -0
  47. package/dist/cli/lib/failOn.js.map +1 -0
  48. package/dist/cli/lib/fs.d.ts +11 -0
  49. package/dist/cli/lib/fs.d.ts.map +1 -0
  50. package/dist/cli/lib/fs.js +91 -0
  51. package/dist/cli/lib/fs.js.map +1 -0
  52. package/dist/cli/lib/logger.d.ts +4 -0
  53. package/dist/cli/lib/logger.d.ts.map +1 -0
  54. package/dist/cli/lib/logger.js +10 -0
  55. package/dist/cli/lib/logger.js.map +1 -0
  56. package/dist/cli/main.d.ts +2 -0
  57. package/dist/cli/main.d.ts.map +1 -0
  58. package/dist/cli/main.js +66 -0
  59. package/dist/cli/main.js.map +1 -0
  60. package/dist/core/config.d.ts +47 -0
  61. package/dist/core/config.d.ts.map +1 -0
  62. package/dist/core/config.js +224 -0
  63. package/dist/core/config.js.map +1 -0
  64. package/dist/core/contractIndex.d.ts +12 -0
  65. package/dist/core/contractIndex.d.ts.map +1 -0
  66. package/dist/core/contractIndex.js +38 -0
  67. package/dist/core/contractIndex.js.map +1 -0
  68. package/dist/core/contracts.d.ts +5 -0
  69. package/dist/core/contracts.d.ts.map +1 -0
  70. package/dist/core/contracts.js +42 -0
  71. package/dist/core/contracts.js.map +1 -0
  72. package/dist/core/contractsDecl.d.ts +3 -0
  73. package/dist/core/contractsDecl.d.ts.map +1 -0
  74. package/dist/core/contractsDecl.js +19 -0
  75. package/dist/core/contractsDecl.js.map +1 -0
  76. package/dist/core/discovery.d.ts +14 -0
  77. package/dist/core/discovery.d.ts.map +1 -0
  78. package/dist/core/discovery.js +55 -0
  79. package/dist/core/discovery.js.map +1 -0
  80. package/dist/core/fs.d.ts +11 -0
  81. package/dist/core/fs.d.ts.map +1 -0
  82. package/dist/core/fs.js +68 -0
  83. package/dist/core/fs.js.map +1 -0
  84. package/dist/core/gherkin/parse.d.ts +7 -0
  85. package/dist/core/gherkin/parse.d.ts.map +1 -0
  86. package/dist/core/gherkin/parse.js +25 -0
  87. package/dist/core/gherkin/parse.js.map +1 -0
  88. package/dist/core/ids.d.ts +6 -0
  89. package/dist/core/ids.d.ts.map +1 -0
  90. package/dist/core/ids.js +52 -0
  91. package/dist/core/ids.js.map +1 -0
  92. package/dist/core/index.d.ts +13 -0
  93. package/dist/core/index.d.ts.map +1 -0
  94. package/dist/core/index.js +13 -0
  95. package/dist/core/index.js.map +1 -0
  96. package/dist/core/parse/adr.d.ts +13 -0
  97. package/dist/core/parse/adr.d.ts.map +1 -0
  98. package/dist/core/parse/adr.js +33 -0
  99. package/dist/core/parse/adr.js.map +1 -0
  100. package/dist/core/parse/gherkin.d.ts +12 -0
  101. package/dist/core/parse/gherkin.d.ts.map +1 -0
  102. package/dist/core/parse/gherkin.js +22 -0
  103. package/dist/core/parse/gherkin.js.map +1 -0
  104. package/dist/core/parse/markdown.d.ts +14 -0
  105. package/dist/core/parse/markdown.d.ts.map +1 -0
  106. package/dist/core/parse/markdown.js +45 -0
  107. package/dist/core/parse/markdown.js.map +1 -0
  108. package/dist/core/parse/spec.d.ts +36 -0
  109. package/dist/core/parse/spec.d.ts.map +1 -0
  110. package/dist/core/parse/spec.js +123 -0
  111. package/dist/core/parse/spec.js.map +1 -0
  112. package/dist/core/report.d.ts +55 -0
  113. package/dist/core/report.d.ts.map +1 -0
  114. package/dist/core/report.js +393 -0
  115. package/dist/core/report.js.map +1 -0
  116. package/dist/core/scenarioModel.d.ts +33 -0
  117. package/dist/core/scenarioModel.d.ts.map +1 -0
  118. package/dist/core/scenarioModel.js +128 -0
  119. package/dist/core/scenarioModel.js.map +1 -0
  120. package/dist/core/specLayout.d.ts +8 -0
  121. package/dist/core/specLayout.d.ts.map +1 -0
  122. package/dist/core/specLayout.js +36 -0
  123. package/dist/core/specLayout.js.map +1 -0
  124. package/dist/core/traceability.d.ts +26 -0
  125. package/dist/core/traceability.d.ts.map +1 -0
  126. package/dist/core/traceability.js +157 -0
  127. package/dist/core/traceability.js.map +1 -0
  128. package/dist/core/types.d.ts +31 -0
  129. package/dist/core/types.d.ts.map +1 -0
  130. package/dist/core/types.js +2 -0
  131. package/dist/core/types.js.map +1 -0
  132. package/dist/core/validate.d.ts +4 -0
  133. package/dist/core/validate.d.ts.map +1 -0
  134. package/dist/core/validate.js +45 -0
  135. package/dist/core/validate.js.map +1 -0
  136. package/dist/core/validators/contracts.d.ts +5 -0
  137. package/dist/core/validators/contracts.d.ts.map +1 -0
  138. package/dist/core/validators/contracts.js +189 -0
  139. package/dist/core/validators/contracts.js.map +1 -0
  140. package/dist/core/validators/delta.d.ts +4 -0
  141. package/dist/core/validators/delta.d.ts.map +1 -0
  142. package/dist/core/validators/delta.js +68 -0
  143. package/dist/core/validators/delta.js.map +1 -0
  144. package/dist/core/validators/ids.d.ts +4 -0
  145. package/dist/core/validators/ids.d.ts.map +1 -0
  146. package/dist/core/validators/ids.js +88 -0
  147. package/dist/core/validators/ids.js.map +1 -0
  148. package/dist/core/validators/scenario.d.ts +5 -0
  149. package/dist/core/validators/scenario.d.ts.map +1 -0
  150. package/dist/core/validators/scenario.js +127 -0
  151. package/dist/core/validators/scenario.js.map +1 -0
  152. package/dist/core/validators/spec.d.ts +5 -0
  153. package/dist/core/validators/spec.d.ts.map +1 -0
  154. package/dist/core/validators/spec.js +94 -0
  155. package/dist/core/validators/spec.js.map +1 -0
  156. package/dist/core/validators/traceability.d.ts +4 -0
  157. package/dist/core/validators/traceability.d.ts.map +1 -0
  158. package/dist/core/validators/traceability.js +222 -0
  159. package/dist/core/validators/traceability.js.map +1 -0
  160. package/dist/core/version.d.ts +2 -0
  161. package/dist/core/version.d.ts.map +1 -0
  162. package/dist/core/version.js +25 -0
  163. package/dist/core/version.js.map +1 -0
  164. package/dist/index.cjs +511 -335
  165. package/dist/index.cjs.map +1 -1
  166. package/dist/index.d.cts +16 -5
  167. package/dist/index.d.ts +2 -156
  168. package/dist/index.d.ts.map +1 -0
  169. package/dist/index.js +2 -0
  170. package/dist/index.js.map +1 -0
  171. package/dist/index.mjs +511 -335
  172. package/dist/index.mjs.map +1 -1
  173. package/dist/tsconfig.tsbuildinfo +1 -0
  174. package/package.json +1 -1
@@ -0,0 +1,18 @@
1
+ export type ParsedArgs = {
2
+ command: string | null;
3
+ options: {
4
+ root: string;
5
+ dir: string;
6
+ force: boolean;
7
+ yes: boolean;
8
+ dryRun: boolean;
9
+ reportFormat: "md" | "json";
10
+ reportOut?: string;
11
+ validateFormat: "text" | "github";
12
+ strict: boolean;
13
+ failOn?: "never" | "warning" | "error";
14
+ help: boolean;
15
+ };
16
+ };
17
+ export declare function parseArgs(argv: string[], cwd: string): ParsedArgs;
18
+ //# sourceMappingURL=args.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"args.d.ts","sourceRoot":"","sources":["../../../src/cli/lib/args.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,UAAU,GAAG;IACvB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,OAAO,EAAE;QACP,IAAI,EAAE,MAAM,CAAC;QACb,GAAG,EAAE,MAAM,CAAC;QACZ,KAAK,EAAE,OAAO,CAAC;QACf,GAAG,EAAE,OAAO,CAAC;QACb,MAAM,EAAE,OAAO,CAAC;QAChB,YAAY,EAAE,IAAI,GAAG,MAAM,CAAC;QAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,cAAc,EAAE,MAAM,GAAG,QAAQ,CAAC;QAClC,MAAM,EAAE,OAAO,CAAC;QAChB,MAAM,CAAC,EAAE,OAAO,GAAG,SAAS,GAAG,OAAO,CAAC;QACvC,IAAI,EAAE,OAAO,CAAC;KACf,CAAC;CACH,CAAC;AAEF,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,GAAG,UAAU,CA6EjE"}
@@ -0,0 +1,98 @@
1
+ export function parseArgs(argv, cwd) {
2
+ const options = {
3
+ root: cwd,
4
+ dir: cwd,
5
+ force: false,
6
+ yes: false,
7
+ dryRun: false,
8
+ reportFormat: "md",
9
+ validateFormat: "text",
10
+ strict: false,
11
+ help: false,
12
+ };
13
+ const args = [...argv];
14
+ let command = args.shift() ?? null;
15
+ if (command === "--help" || command === "-h") {
16
+ options.help = true;
17
+ command = null;
18
+ }
19
+ for (let i = 0; i < args.length; i += 1) {
20
+ const arg = args[i];
21
+ switch (arg) {
22
+ case "--root":
23
+ options.root = args[i + 1] ?? options.root;
24
+ i += 1;
25
+ break;
26
+ case "--dir":
27
+ options.dir = args[i + 1] ?? options.dir;
28
+ i += 1;
29
+ break;
30
+ case "--force":
31
+ options.force = true;
32
+ break;
33
+ case "--yes":
34
+ options.yes = true;
35
+ break;
36
+ case "--dry-run":
37
+ options.dryRun = true;
38
+ break;
39
+ case "--format": {
40
+ const next = args[i + 1];
41
+ applyFormatOption(command, next, options);
42
+ i += 1;
43
+ break;
44
+ }
45
+ case "--strict":
46
+ options.strict = true;
47
+ break;
48
+ case "--fail-on": {
49
+ const next = args[i + 1];
50
+ if (next === "never" || next === "warning" || next === "error") {
51
+ options.failOn = next;
52
+ }
53
+ i += 1;
54
+ break;
55
+ }
56
+ case "--out":
57
+ {
58
+ const next = args[i + 1];
59
+ if (next) {
60
+ options.reportOut = next;
61
+ }
62
+ }
63
+ i += 1;
64
+ break;
65
+ case "--help":
66
+ case "-h":
67
+ options.help = true;
68
+ break;
69
+ default:
70
+ break;
71
+ }
72
+ }
73
+ return { command, options };
74
+ }
75
+ function applyFormatOption(command, value, options) {
76
+ if (!value) {
77
+ return;
78
+ }
79
+ if (command === "report") {
80
+ if (value === "md" || value === "json") {
81
+ options.reportFormat = value;
82
+ }
83
+ return;
84
+ }
85
+ if (command === "validate") {
86
+ if (value === "text" || value === "github") {
87
+ options.validateFormat = value;
88
+ }
89
+ return;
90
+ }
91
+ if (value === "md" || value === "json") {
92
+ options.reportFormat = value;
93
+ }
94
+ if (value === "text" || value === "github") {
95
+ options.validateFormat = value;
96
+ }
97
+ }
98
+ //# sourceMappingURL=args.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"args.js","sourceRoot":"","sources":["../../../src/cli/lib/args.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function getInitAssetsDir(): string;
2
+ //# sourceMappingURL=assets.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"assets.d.ts","sourceRoot":"","sources":["../../../src/cli/lib/assets.ts"],"names":[],"mappings":"AAIA,wBAAgB,gBAAgB,IAAI,MAAM,CAuBzC"}
@@ -0,0 +1,24 @@
1
+ import { existsSync } from "node:fs";
2
+ import path from "node:path";
3
+ import { fileURLToPath } from "node:url";
4
+ export function getInitAssetsDir() {
5
+ const base = import.meta.url;
6
+ const basePath = base.startsWith("file:") ? fileURLToPath(base) : base;
7
+ const baseDir = path.dirname(basePath);
8
+ // src/cli/lib と dist/cli/lib からの解決を想定する。
9
+ const candidates = [
10
+ path.resolve(baseDir, "../../../assets/init"),
11
+ path.resolve(baseDir, "../../assets/init"),
12
+ ];
13
+ for (const candidate of candidates) {
14
+ if (existsSync(candidate)) {
15
+ return candidate;
16
+ }
17
+ }
18
+ throw new Error([
19
+ "init 用テンプレートが見つかりません。Template assets not found.",
20
+ "確認したパス / Checked paths:",
21
+ ...candidates.map((candidate) => `- ${candidate}`),
22
+ ].join("\n"));
23
+ }
24
+ //# sourceMappingURL=assets.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"assets.js","sourceRoot":"","sources":["../../../src/cli/lib/assets.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,MAAM,UAAU,gBAAgB;IAC9B,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;IAC7B,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACvE,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACvC,yCAAyC;IACzC,MAAM,UAAU,GAAG;QACjB,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,sBAAsB,CAAC;QAC7C,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,mBAAmB,CAAC;KAC3C,CAAC;IAEF,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACnC,IAAI,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YAC1B,OAAO,SAAS,CAAC;QACnB,CAAC;IACH,CAAC;IAED,MAAM,IAAI,KAAK,CACb;QACE,iDAAiD;QACjD,yBAAyB;QACzB,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,KAAK,SAAS,EAAE,CAAC;KACnD,CAAC,IAAI,CAAC,IAAI,CAAC,CACb,CAAC;AACJ,CAAC"}
@@ -0,0 +1,5 @@
1
+ import type { FailOn } from "../../core/config.js";
2
+ import type { ValidationResult } from "../../core/types.js";
3
+ export type { FailOn };
4
+ export declare function shouldFail(result: ValidationResult, failOn: FailOn): boolean;
5
+ //# sourceMappingURL=failOn.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"failOn.d.ts","sourceRoot":"","sources":["../../../src/cli/lib/failOn.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAE5D,YAAY,EAAE,MAAM,EAAE,CAAC;AAEvB,wBAAgB,UAAU,CAAC,MAAM,EAAE,gBAAgB,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAQ5E"}
@@ -0,0 +1,10 @@
1
+ export function shouldFail(result, failOn) {
2
+ if (failOn === "never") {
3
+ return false;
4
+ }
5
+ if (failOn === "error") {
6
+ return result.counts.error > 0;
7
+ }
8
+ return result.counts.error + result.counts.warning > 0;
9
+ }
10
+ //# sourceMappingURL=failOn.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"failOn.js","sourceRoot":"","sources":["../../../src/cli/lib/failOn.ts"],"names":[],"mappings":"AAKA,MAAM,UAAU,UAAU,CAAC,MAAwB,EAAE,MAAc;IACjE,IAAI,MAAM,KAAK,OAAO,EAAE,CAAC;QACvB,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,MAAM,KAAK,OAAO,EAAE,CAAC;QACvB,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC;IACjC,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,GAAG,CAAC,CAAC;AACzD,CAAC"}
@@ -0,0 +1,11 @@
1
+ export type CopyOptions = {
2
+ force: boolean;
3
+ dryRun: boolean;
4
+ };
5
+ export type CopyResult = {
6
+ copied: string[];
7
+ skipped: string[];
8
+ };
9
+ export declare function copyTemplateTree(sourceRoot: string, destRoot: string, options: CopyOptions): Promise<CopyResult>;
10
+ export declare function copyTemplatePaths(sourceRoot: string, destRoot: string, relativePaths: string[], options: CopyOptions): Promise<CopyResult>;
11
+ //# sourceMappingURL=fs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fs.d.ts","sourceRoot":"","sources":["../../../src/cli/lib/fs.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,WAAW,GAAG;IACxB,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,OAAO,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACvB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB,CAAC;AAEF,wBAAsB,gBAAgB,CACpC,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC,UAAU,CAAC,CAGrB;AAED,wBAAsB,iBAAiB,CACrC,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,aAAa,EAAE,MAAM,EAAE,EACvB,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC,UAAU,CAAC,CASrB"}
@@ -0,0 +1,91 @@
1
+ import { access, copyFile, mkdir, readdir } from "node:fs/promises";
2
+ import path from "node:path";
3
+ export async function copyTemplateTree(sourceRoot, destRoot, options) {
4
+ const files = await collectTemplateFiles(sourceRoot);
5
+ return copyFiles(files, sourceRoot, destRoot, options);
6
+ }
7
+ export async function copyTemplatePaths(sourceRoot, destRoot, relativePaths, options) {
8
+ const allFiles = [];
9
+ for (const relPath of relativePaths) {
10
+ const fullPath = path.join(sourceRoot, relPath);
11
+ const files = await collectTemplateFiles(fullPath);
12
+ allFiles.push(...files);
13
+ }
14
+ return copyFiles(allFiles, sourceRoot, destRoot, options);
15
+ }
16
+ async function copyFiles(files, sourceRoot, destRoot, options) {
17
+ const copied = [];
18
+ const skipped = [];
19
+ const conflicts = [];
20
+ if (!options.force) {
21
+ for (const file of files) {
22
+ const relative = path.relative(sourceRoot, file);
23
+ const dest = path.join(destRoot, relative);
24
+ if (!(await shouldWrite(dest, options.force))) {
25
+ conflicts.push(dest);
26
+ }
27
+ }
28
+ if (conflicts.length > 0) {
29
+ throw new Error(formatConflictMessage(conflicts));
30
+ }
31
+ }
32
+ for (const file of files) {
33
+ const relative = path.relative(sourceRoot, file);
34
+ const dest = path.join(destRoot, relative);
35
+ if (!(await shouldWrite(dest, options.force))) {
36
+ skipped.push(dest);
37
+ continue;
38
+ }
39
+ if (!options.dryRun) {
40
+ await mkdir(path.dirname(dest), { recursive: true });
41
+ await copyFile(file, dest);
42
+ }
43
+ copied.push(dest);
44
+ }
45
+ return { copied, skipped };
46
+ }
47
+ function formatConflictMessage(conflicts) {
48
+ return [
49
+ "既存ファイルと衝突しました。安全のため停止します。",
50
+ "",
51
+ "衝突ファイル:",
52
+ ...conflicts.map((conflict) => `- ${conflict}`),
53
+ "",
54
+ "上書きして続行する場合は --force を付けて再実行してください。",
55
+ ].join("\n");
56
+ }
57
+ async function collectTemplateFiles(root) {
58
+ const entries = [];
59
+ if (!(await exists(root))) {
60
+ return entries;
61
+ }
62
+ const items = await readdir(root, { withFileTypes: true });
63
+ for (const item of items) {
64
+ const fullPath = path.join(root, item.name);
65
+ if (item.isDirectory()) {
66
+ const nested = await collectTemplateFiles(fullPath);
67
+ entries.push(...nested);
68
+ continue;
69
+ }
70
+ if (item.isFile()) {
71
+ entries.push(fullPath);
72
+ }
73
+ }
74
+ return entries;
75
+ }
76
+ async function shouldWrite(target, force) {
77
+ if (force) {
78
+ return true;
79
+ }
80
+ return !(await exists(target));
81
+ }
82
+ async function exists(target) {
83
+ try {
84
+ await access(target);
85
+ return true;
86
+ }
87
+ catch {
88
+ return false;
89
+ }
90
+ }
91
+ //# sourceMappingURL=fs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fs.js","sourceRoot":"","sources":["../../../src/cli/lib/fs.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export declare function info(message: string): void;
2
+ export declare function warn(message: string): void;
3
+ export declare function error(message: string): void;
4
+ //# sourceMappingURL=logger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../../src/cli/lib/logger.ts"],"names":[],"mappings":"AAAA,wBAAgB,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAE1C;AAED,wBAAgB,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAE1C;AAED,wBAAgB,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAE3C"}
@@ -0,0 +1,10 @@
1
+ export function info(message) {
2
+ process.stdout.write(`${message}\n`);
3
+ }
4
+ export function warn(message) {
5
+ process.stdout.write(`${message}\n`);
6
+ }
7
+ export function error(message) {
8
+ process.stderr.write(`${message}\n`);
9
+ }
10
+ //# sourceMappingURL=logger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../../src/cli/lib/logger.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,IAAI,CAAC,OAAe;IAClC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,OAAO,IAAI,CAAC,CAAC;AACvC,CAAC;AAED,MAAM,UAAU,IAAI,CAAC,OAAe;IAClC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,OAAO,IAAI,CAAC,CAAC;AACvC,CAAC;AAED,MAAM,UAAU,KAAK,CAAC,OAAe;IACnC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,OAAO,IAAI,CAAC,CAAC;AACvC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function run(argv: string[], cwd: string): Promise<void>;
2
+ //# sourceMappingURL=main.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../../src/cli/main.ts"],"names":[],"mappings":"AAMA,wBAAsB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAuCpE"}
@@ -0,0 +1,66 @@
1
+ import { runInit } from "./commands/init.js";
2
+ import { runReport } from "./commands/report.js";
3
+ import { runValidate } from "./commands/validate.js";
4
+ import { parseArgs } from "./lib/args.js";
5
+ import { error, info } from "./lib/logger.js";
6
+ export async function run(argv, cwd) {
7
+ const { command, options } = parseArgs(argv, cwd);
8
+ if (!command || options.help) {
9
+ info(usage());
10
+ return;
11
+ }
12
+ switch (command) {
13
+ case "init":
14
+ await runInit({
15
+ dir: options.dir,
16
+ force: options.force,
17
+ dryRun: options.dryRun,
18
+ yes: options.yes,
19
+ });
20
+ return;
21
+ case "validate":
22
+ process.exitCode = await runValidate({
23
+ root: options.root,
24
+ strict: options.strict,
25
+ format: options.validateFormat,
26
+ ...(options.failOn !== undefined ? { failOn: options.failOn } : {}),
27
+ });
28
+ return;
29
+ case "report":
30
+ await runReport({
31
+ root: options.root,
32
+ format: options.reportFormat,
33
+ ...(options.reportOut !== undefined
34
+ ? { outPath: options.reportOut }
35
+ : {}),
36
+ });
37
+ return;
38
+ default:
39
+ error(`Unknown command: ${command}`);
40
+ info(usage());
41
+ return;
42
+ }
43
+ }
44
+ function usage() {
45
+ return `qfai <command> [options]
46
+
47
+ Commands:
48
+ init テンプレを生成
49
+ validate 仕様/契約/参照の検査
50
+ report 検証結果と集計を出力
51
+
52
+ Options:
53
+ --root <path> 対象ディレクトリ
54
+ --dir <path> init の出力先
55
+ --force 既存ファイルを上書き
56
+ --yes init: 予約フラグ(現状は非対話のため挙動差なし。将来の対話導入時に自動Yes)
57
+ --dry-run 変更を行わず表示のみ
58
+ --format <text|github> validate の出力形式
59
+ --format <md|json> report の出力形式
60
+ --strict validate: warning 以上で exit 1
61
+ --fail-on <error|warning|never> validate: 失敗条件
62
+ --out <path> report: 出力先
63
+ -h, --help ヘルプ表示
64
+ `;
65
+ }
66
+ //# sourceMappingURL=main.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"main.js","sourceRoot":"","sources":["../../src/cli/main.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAE9C,MAAM,CAAC,KAAK,UAAU,GAAG,CAAC,IAAc,EAAE,GAAW;IACnD,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,SAAS,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IAElD,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QAC7B,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;QACd,OAAO;IACT,CAAC;IAED,QAAQ,OAAO,EAAE,CAAC;QAChB,KAAK,MAAM;YACT,MAAM,OAAO,CAAC;gBACZ,GAAG,EAAE,OAAO,CAAC,GAAG;gBAChB,KAAK,EAAE,OAAO,CAAC,KAAK;gBACpB,MAAM,EAAE,OAAO,CAAC,MAAM;gBACtB,GAAG,EAAE,OAAO,CAAC,GAAG;aACjB,CAAC,CAAC;YACH,OAAO;QACT,KAAK,UAAU;YACb,OAAO,CAAC,QAAQ,GAAG,MAAM,WAAW,CAAC;gBACnC,IAAI,EAAE,OAAO,CAAC,IAAI;gBAClB,MAAM,EAAE,OAAO,CAAC,MAAM;gBACtB,MAAM,EAAE,OAAO,CAAC,cAAc;gBAC9B,GAAG,CAAC,OAAO,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aACpE,CAAC,CAAC;YACH,OAAO;QACT,KAAK,QAAQ;YACX,MAAM,SAAS,CAAC;gBACd,IAAI,EAAE,OAAO,CAAC,IAAI;gBAClB,MAAM,EAAE,OAAO,CAAC,YAAY;gBAC5B,GAAG,CAAC,OAAO,CAAC,SAAS,KAAK,SAAS;oBACjC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,SAAS,EAAE;oBAChC,CAAC,CAAC,EAAE,CAAC;aACR,CAAC,CAAC;YACH,OAAO;QACT;YACE,KAAK,CAAC,oBAAoB,OAAO,EAAE,CAAC,CAAC;YACrC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;YACd,OAAO;IACX,CAAC;AACH,CAAC;AAED,SAAS,KAAK;IACZ,OAAO;;;;;;;;;;;;;;;;;;;CAmBR,CAAC;AACF,CAAC"}
@@ -0,0 +1,47 @@
1
+ import type { Issue } from "./types.js";
2
+ export type FailOn = "never" | "warning" | "error";
3
+ export type OutputFormat = "text" | "github";
4
+ export type TraceabilitySeverity = "warning" | "error";
5
+ export type QfaiPaths = {
6
+ contractsDir: string;
7
+ specsDir: string;
8
+ rulesDir: string;
9
+ outDir: string;
10
+ promptsDir: string;
11
+ srcDir: string;
12
+ testsDir: string;
13
+ };
14
+ export type QfaiValidationConfig = {
15
+ failOn: FailOn;
16
+ require: {
17
+ specSections: string[];
18
+ };
19
+ traceability: {
20
+ brMustHaveSc: boolean;
21
+ scMustHaveTest: boolean;
22
+ testFileGlobs: string[];
23
+ testFileExcludeGlobs: string[];
24
+ scNoTestSeverity: TraceabilitySeverity;
25
+ allowOrphanContracts: boolean;
26
+ unknownContractIdSeverity: TraceabilitySeverity;
27
+ };
28
+ };
29
+ export type QfaiOutputConfig = {
30
+ validateJsonPath: string;
31
+ };
32
+ export type QfaiConfig = {
33
+ paths: QfaiPaths;
34
+ validation: QfaiValidationConfig;
35
+ output: QfaiOutputConfig;
36
+ };
37
+ export type ConfigPathKey = keyof QfaiPaths;
38
+ export type ConfigLoadResult = {
39
+ config: QfaiConfig;
40
+ issues: Issue[];
41
+ configPath: string;
42
+ };
43
+ export declare const defaultConfig: QfaiConfig;
44
+ export declare function getConfigPath(root: string): string;
45
+ export declare function loadConfig(root: string): Promise<ConfigLoadResult>;
46
+ export declare function resolvePath(root: string, config: QfaiConfig, key: ConfigPathKey): string;
47
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/core/config.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAExC,MAAM,MAAM,MAAM,GAAG,OAAO,GAAG,SAAS,GAAG,OAAO,CAAC;AACnD,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,QAAQ,CAAC;AAC7C,MAAM,MAAM,oBAAoB,GAAG,SAAS,GAAG,OAAO,CAAC;AAEvD,MAAM,MAAM,SAAS,GAAG;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE;QACP,YAAY,EAAE,MAAM,EAAE,CAAC;KACxB,CAAC;IACF,YAAY,EAAE;QACZ,YAAY,EAAE,OAAO,CAAC;QACtB,cAAc,EAAE,OAAO,CAAC;QACxB,aAAa,EAAE,MAAM,EAAE,CAAC;QACxB,oBAAoB,EAAE,MAAM,EAAE,CAAC;QAC/B,gBAAgB,EAAE,oBAAoB,CAAC;QACvC,oBAAoB,EAAE,OAAO,CAAC;QAC9B,yBAAyB,EAAE,oBAAoB,CAAC;KACjD,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,gBAAgB,EAAE,MAAM,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACvB,KAAK,EAAE,SAAS,CAAC;IACjB,UAAU,EAAE,oBAAoB,CAAC;IACjC,MAAM,EAAE,gBAAgB,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG,MAAM,SAAS,CAAC;AAE5C,MAAM,MAAM,gBAAgB,GAAG;IAC7B,MAAM,EAAE,UAAU,CAAC;IACnB,MAAM,EAAE,KAAK,EAAE,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,UAoC3B,CAAC;AAEF,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAElD;AAED,wBAAsB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAkBxE;AAED,wBAAgB,WAAW,CACzB,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,UAAU,EAClB,GAAG,EAAE,aAAa,GACjB,MAAM,CAER"}