qfai 0.4.0 → 0.4.2

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 (161) hide show
  1. package/README.md +6 -1
  2. package/assets/init/.qfai/README.md +2 -1
  3. package/assets/init/.qfai/prompts/README.md +1 -0
  4. package/assets/init/.qfai/prompts/qfai-generate-test-globs.md +29 -0
  5. package/assets/init/root/qfai.config.yaml +6 -0
  6. package/assets/init/root/tests/qfai-traceability.sample.test.ts +2 -2
  7. package/dist/cli/index.cjs +337 -117
  8. package/dist/cli/index.cjs.map +1 -1
  9. package/dist/cli/index.d.ts +0 -2
  10. package/dist/cli/index.mjs +337 -117
  11. package/dist/cli/index.mjs.map +1 -1
  12. package/dist/index.cjs +327 -107
  13. package/dist/index.cjs.map +1 -1
  14. package/dist/index.d.cts +23 -9
  15. package/dist/index.d.ts +156 -2
  16. package/dist/index.mjs +327 -107
  17. package/dist/index.mjs.map +1 -1
  18. package/package.json +2 -1
  19. package/dist/cli/commands/init.d.ts +0 -8
  20. package/dist/cli/commands/init.d.ts.map +0 -1
  21. package/dist/cli/commands/init.js +0 -30
  22. package/dist/cli/commands/init.js.map +0 -1
  23. package/dist/cli/commands/report.d.ts +0 -7
  24. package/dist/cli/commands/report.d.ts.map +0 -1
  25. package/dist/cli/commands/report.js +0 -80
  26. package/dist/cli/commands/report.js.map +0 -1
  27. package/dist/cli/commands/validate.d.ts +0 -9
  28. package/dist/cli/commands/validate.d.ts.map +0 -1
  29. package/dist/cli/commands/validate.js +0 -57
  30. package/dist/cli/commands/validate.js.map +0 -1
  31. package/dist/cli/index.d.ts.map +0 -1
  32. package/dist/cli/index.js +0 -7
  33. package/dist/cli/index.js.map +0 -1
  34. package/dist/cli/lib/args.d.ts +0 -18
  35. package/dist/cli/lib/args.d.ts.map +0 -1
  36. package/dist/cli/lib/args.js +0 -98
  37. package/dist/cli/lib/args.js.map +0 -1
  38. package/dist/cli/lib/assets.d.ts +0 -2
  39. package/dist/cli/lib/assets.d.ts.map +0 -1
  40. package/dist/cli/lib/assets.js +0 -24
  41. package/dist/cli/lib/assets.js.map +0 -1
  42. package/dist/cli/lib/failOn.d.ts +0 -5
  43. package/dist/cli/lib/failOn.d.ts.map +0 -1
  44. package/dist/cli/lib/failOn.js +0 -10
  45. package/dist/cli/lib/failOn.js.map +0 -1
  46. package/dist/cli/lib/fs.d.ts +0 -11
  47. package/dist/cli/lib/fs.d.ts.map +0 -1
  48. package/dist/cli/lib/fs.js +0 -91
  49. package/dist/cli/lib/fs.js.map +0 -1
  50. package/dist/cli/lib/logger.d.ts +0 -4
  51. package/dist/cli/lib/logger.d.ts.map +0 -1
  52. package/dist/cli/lib/logger.js +0 -10
  53. package/dist/cli/lib/logger.js.map +0 -1
  54. package/dist/cli/main.d.ts +0 -2
  55. package/dist/cli/main.d.ts.map +0 -1
  56. package/dist/cli/main.js +0 -66
  57. package/dist/cli/main.js.map +0 -1
  58. package/dist/core/config.d.ts +0 -46
  59. package/dist/core/config.d.ts.map +0 -1
  60. package/dist/core/config.js +0 -222
  61. package/dist/core/config.js.map +0 -1
  62. package/dist/core/contractIndex.d.ts +0 -13
  63. package/dist/core/contractIndex.d.ts.map +0 -1
  64. package/dist/core/contractIndex.js +0 -66
  65. package/dist/core/contractIndex.js.map +0 -1
  66. package/dist/core/contracts.d.ts +0 -5
  67. package/dist/core/contracts.d.ts.map +0 -1
  68. package/dist/core/contracts.js +0 -42
  69. package/dist/core/contracts.js.map +0 -1
  70. package/dist/core/discovery.d.ts +0 -14
  71. package/dist/core/discovery.d.ts.map +0 -1
  72. package/dist/core/discovery.js +0 -55
  73. package/dist/core/discovery.js.map +0 -1
  74. package/dist/core/fs.d.ts +0 -6
  75. package/dist/core/fs.d.ts.map +0 -1
  76. package/dist/core/fs.js +0 -55
  77. package/dist/core/fs.js.map +0 -1
  78. package/dist/core/gherkin/parse.d.ts +0 -7
  79. package/dist/core/gherkin/parse.d.ts.map +0 -1
  80. package/dist/core/gherkin/parse.js +0 -25
  81. package/dist/core/gherkin/parse.js.map +0 -1
  82. package/dist/core/ids.d.ts +0 -6
  83. package/dist/core/ids.d.ts.map +0 -1
  84. package/dist/core/ids.js +0 -52
  85. package/dist/core/ids.js.map +0 -1
  86. package/dist/core/index.d.ts +0 -13
  87. package/dist/core/index.d.ts.map +0 -1
  88. package/dist/core/index.js +0 -13
  89. package/dist/core/index.js.map +0 -1
  90. package/dist/core/parse/adr.d.ts +0 -13
  91. package/dist/core/parse/adr.d.ts.map +0 -1
  92. package/dist/core/parse/adr.js +0 -33
  93. package/dist/core/parse/adr.js.map +0 -1
  94. package/dist/core/parse/gherkin.d.ts +0 -12
  95. package/dist/core/parse/gherkin.d.ts.map +0 -1
  96. package/dist/core/parse/gherkin.js +0 -22
  97. package/dist/core/parse/gherkin.js.map +0 -1
  98. package/dist/core/parse/markdown.d.ts +0 -14
  99. package/dist/core/parse/markdown.d.ts.map +0 -1
  100. package/dist/core/parse/markdown.js +0 -45
  101. package/dist/core/parse/markdown.js.map +0 -1
  102. package/dist/core/parse/spec.d.ts +0 -28
  103. package/dist/core/parse/spec.d.ts.map +0 -1
  104. package/dist/core/parse/spec.js +0 -80
  105. package/dist/core/parse/spec.js.map +0 -1
  106. package/dist/core/report.d.ts +0 -41
  107. package/dist/core/report.d.ts.map +0 -1
  108. package/dist/core/report.js +0 -260
  109. package/dist/core/report.js.map +0 -1
  110. package/dist/core/scenarioModel.d.ts +0 -33
  111. package/dist/core/scenarioModel.d.ts.map +0 -1
  112. package/dist/core/scenarioModel.js +0 -130
  113. package/dist/core/scenarioModel.js.map +0 -1
  114. package/dist/core/specLayout.d.ts +0 -8
  115. package/dist/core/specLayout.d.ts.map +0 -1
  116. package/dist/core/specLayout.js +0 -36
  117. package/dist/core/specLayout.js.map +0 -1
  118. package/dist/core/traceability.d.ts +0 -12
  119. package/dist/core/traceability.d.ts.map +0 -1
  120. package/dist/core/traceability.js +0 -70
  121. package/dist/core/traceability.js.map +0 -1
  122. package/dist/core/types.d.ts +0 -25
  123. package/dist/core/types.d.ts.map +0 -1
  124. package/dist/core/types.js +0 -2
  125. package/dist/core/types.js.map +0 -1
  126. package/dist/core/validate.d.ts +0 -4
  127. package/dist/core/validate.d.ts.map +0 -1
  128. package/dist/core/validate.js +0 -34
  129. package/dist/core/validate.js.map +0 -1
  130. package/dist/core/validators/contracts.d.ts +0 -5
  131. package/dist/core/validators/contracts.d.ts.map +0 -1
  132. package/dist/core/validators/contracts.js +0 -162
  133. package/dist/core/validators/contracts.js.map +0 -1
  134. package/dist/core/validators/delta.d.ts +0 -4
  135. package/dist/core/validators/delta.d.ts.map +0 -1
  136. package/dist/core/validators/delta.js +0 -68
  137. package/dist/core/validators/delta.js.map +0 -1
  138. package/dist/core/validators/ids.d.ts +0 -4
  139. package/dist/core/validators/ids.d.ts.map +0 -1
  140. package/dist/core/validators/ids.js +0 -88
  141. package/dist/core/validators/ids.js.map +0 -1
  142. package/dist/core/validators/scenario.d.ts +0 -5
  143. package/dist/core/validators/scenario.d.ts.map +0 -1
  144. package/dist/core/validators/scenario.js +0 -140
  145. package/dist/core/validators/scenario.js.map +0 -1
  146. package/dist/core/validators/spec.d.ts +0 -5
  147. package/dist/core/validators/spec.d.ts.map +0 -1
  148. package/dist/core/validators/spec.js +0 -94
  149. package/dist/core/validators/spec.js.map +0 -1
  150. package/dist/core/validators/traceability.d.ts +0 -4
  151. package/dist/core/validators/traceability.d.ts.map +0 -1
  152. package/dist/core/validators/traceability.js +0 -190
  153. package/dist/core/validators/traceability.js.map +0 -1
  154. package/dist/core/version.d.ts +0 -2
  155. package/dist/core/version.d.ts.map +0 -1
  156. package/dist/core/version.js +0 -25
  157. package/dist/core/version.js.map +0 -1
  158. package/dist/index.d.ts.map +0 -1
  159. package/dist/index.js +0 -2
  160. package/dist/index.js.map +0 -1
  161. package/dist/tsconfig.tsbuildinfo +0 -1
package/README.md CHANGED
@@ -20,7 +20,7 @@ npx qfai report
20
20
 
21
21
  - `npx qfai init` によるテンプレート生成(specs/contracts に加え、`.qfai/require/README.md`、`.qfai/rules/pnpm.md`、`.qfai/prompts/require-to-spec.md`、`.qfai/promptpack/` を含む)
22
22
  - `npx qfai validate` による `.qfai/` 内ドキュメントの整合性・トレーサビリティ検査
23
- - `npx qfai validate` による SC→Test 参照の検証(`tests/` 配下を走査)
23
+ - `npx qfai validate` による SC→Test 参照の検証(`validation.traceability.testFileGlobs` に一致するテストファイルから `QFAI:SC-xxxx` を抽出)
24
24
  - `npx qfai report` によるレポート出力
25
25
 
26
26
  ## Usage
@@ -32,8 +32,13 @@ npx qfai report
32
32
  設定はリポジトリ直下の `qfai.config.yaml` で行います。
33
33
  命名規約は `docs/rules/naming.md` を参照してください。
34
34
 
35
+ SC→Test の参照はテストコード内の `QFAI:SC-xxxx` アノテーションで宣言します。
36
+ SC→Test の対象ファイルは `validation.traceability.testFileGlobs` で指定します。
37
+ 除外は `validation.traceability.testFileExcludeGlobs` で指定できます。
35
38
  SC→Test 検証は `validation.traceability.scMustHaveTest` と
36
39
  `validation.traceability.scNoTestSeverity` で制御できます。
37
40
 
41
+ - `validation.traceability.testFileGlobs`: SC→Test 判定に使用するテストファイル glob(配列)
42
+ - `validation.traceability.testFileExcludeGlobs`: 追加の除外 glob(配列、任意)
38
43
  - `validation.traceability.scMustHaveTest`: SC→Test 検証の有効/無効を制御(`true` で有効、`false` で無効)
39
44
  - `validation.traceability.scNoTestSeverity`: SC 未参照時の重要度を指定(`error` / `warning`)
@@ -11,7 +11,7 @@ npx qfai report
11
11
 
12
12
  ## トレーサビリティ(SC→Test)
13
13
 
14
- - `tests/` 配下のテストコードで `SC-xxxx` を参照する(コメント可)
14
+ - `validation.traceability.testFileGlobs` に一致するテストコードで `QFAI:SC-xxxx` を参照する(コメント可)
15
15
 
16
16
  ## ディレクトリ概要
17
17
 
@@ -32,6 +32,7 @@ npx qfai report
32
32
  - `rules/pnpm.md`
33
33
  - `prompts/README.md`
34
34
  - `prompts/require-to-spec.md`
35
+ - `prompts/qfai-generate-test-globs.md`
35
36
  - `promptpack/constitution.md`
36
37
  - `out/README.md`
37
38
 
@@ -12,6 +12,7 @@
12
12
  - `makeOverview.md`: Spec 一覧(overview)生成
13
13
  - `makeBusinessFlow.md`: 業務フロー(BF)整理
14
14
  - `require-to-spec.md`: 既存要件から Spec Pack を起こす
15
+ - `qfai-generate-test-globs.md`: テストファイル glob の生成支援(`qfai.config.yaml` 更新)
15
16
 
16
17
  ## 使い方(例)
17
18
 
@@ -0,0 +1,29 @@
1
+ # QFAI: テストファイル glob 生成(プロジェクト分析→qfai.config.yaml 更新)
2
+
3
+ あなたはリポジトリを解析し、QFAI の SC→Test 判定に使用する「テストファイル glob」を作成します。
4
+
5
+ ## 目的
6
+
7
+ - SC→Test の根拠は **テストファイル内の `QFAI:SC-xxxx`** アノテーションです。
8
+ - その抽出対象(テストファイル集合)を、プロジェクト実態に合わせて **過不足なく**指定してください。
9
+
10
+ ## 手順
11
+
12
+ 1. どのテストフレームワーク/ランナーが使われているかを特定してください。
13
+ - 例: `package.json` の dependencies/devDependencies、設定ファイル(`vitest.config.*`, `jest.config.*`, `playwright.config.*` 等)、CI 設定など
14
+ 2. テストファイルが存在するディレクトリと命名規則を列挙してください。
15
+ - `tests/` 配下だけでなく、**`src/` 同居**(`*.test.*`)も考慮すること
16
+ - e2e / integration / unit が分かれている場合はそれも考慮すること
17
+ 3. 「テストファイル glob(含める)」を 3-10 個程度で提案してください。
18
+ - 過剰に広い `**/*` は禁止(性能・誤検知の観点)
19
+ 4. 「除外 glob」を提案してください(既定除外に加えて必要なら)。
20
+ 5. `qfai.config.yaml` を更新してください。
21
+ - `validation.traceability.testFileGlobs` に glob 配列を設定
22
+ - 必要なら `validation.traceability.testFileExcludeGlobs` も設定
23
+ 6. 更新後、実在するテストファイルを 5-15 件サンプリングし、各ファイルが提案 glob にマッチすることを示してください。
24
+ 7. 最後に、提案 glob を 1 行ずつコメント付きでまとめてください(採用理由を短く)。
25
+
26
+ ## 制約
27
+
28
+ - `.qfai/` 配下、`node_modules/`、ビルド成果物(`dist/`, `build/` 等)は対象外
29
+ - 変更は **glob 設定に限定**(テストやソースの内容改変はしない)
@@ -21,6 +21,12 @@ validation:
21
21
  brMustHaveSc: true
22
22
  scMustTouchContracts: true
23
23
  scMustHaveTest: true
24
+ testFileGlobs:
25
+ - tests/**/*.test.ts
26
+ - tests/**/*.spec.ts
27
+ - src/**/*.test.ts
28
+ - src/**/*.spec.ts
29
+ testFileExcludeGlobs: []
24
30
  scNoTestSeverity: error
25
31
  allowOrphanContracts: false
26
32
  unknownContractIdSeverity: error
@@ -1,2 +1,2 @@
1
- // Traceability sample: reference SC IDs in tests (comments are enough).
2
- // SC-0001
1
+ // Traceability sample: reference SC IDs via annotations (comments are enough).
2
+ // QFAI:SC-0001