xtrm-tools 2.2.0 → 2.4.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 (286) hide show
  1. package/README.md +127 -104
  2. package/cli/dist/index.cjs +1078 -970
  3. package/cli/dist/index.cjs.map +1 -1
  4. package/cli/package.json +1 -1
  5. package/config/pi/extensions/beads.ts +33 -5
  6. package/config/pi/extensions/service-skills.ts +17 -9
  7. package/config/pi/install-schema.json +2 -1
  8. package/hooks/beads-gate-core.mjs +6 -4
  9. package/hooks/beads-memory-gate.mjs +12 -5
  10. package/hooks/hooks.json +126 -0
  11. package/package.json +3 -1
  12. package/skills/test-planning/SKILL.md +208 -0
  13. package/skills/test-planning/evals/evals.json +23 -0
  14. package/skills/using-xtrm/SKILL.md +5 -27
  15. package/project-skills/tdd-guard/.claude/hooks/tdd-guard-pretool-bridge.cjs +0 -103
  16. package/project-skills/tdd-guard/.claude/settings.json +0 -38
  17. package/project-skills/tdd-guard/.claude/skills/using-tdd-guard/SKILL.md +0 -79
  18. package/project-skills/tdd-guard/CLAUDE.md +0 -98
  19. package/project-skills/tdd-guard/CONTRIBUTING.md +0 -38
  20. package/project-skills/tdd-guard/DEVELOPMENT.md +0 -127
  21. package/project-skills/tdd-guard/LICENSE +0 -21
  22. package/project-skills/tdd-guard/README.md +0 -398
  23. package/project-skills/tdd-guard/docs/adr/001-claude-session-subdirectory.md +0 -52
  24. package/project-skills/tdd-guard/docs/adr/002-secure-claude-binary-path.md +0 -56
  25. package/project-skills/tdd-guard/docs/adr/003-remove-configurable-data-directory.md +0 -56
  26. package/project-skills/tdd-guard/docs/adr/004-monorepo-architecture.md +0 -64
  27. package/project-skills/tdd-guard/docs/adr/005-claude-project-dir-support.md +0 -55
  28. package/project-skills/tdd-guard/docs/adr/006-phpunit-separate-repository.md +0 -93
  29. package/project-skills/tdd-guard/docs/adr/007-golangci-lint-path-support.md +0 -83
  30. package/project-skills/tdd-guard/docs/adr/008-storybook-reporter-design.md +0 -182
  31. package/project-skills/tdd-guard/docs/assets/tdd-guard-demo-screenshot.gif +0 -0
  32. package/project-skills/tdd-guard/docs/config-migration.md +0 -143
  33. package/project-skills/tdd-guard/docs/configuration.md +0 -137
  34. package/project-skills/tdd-guard/docs/custom-instructions.md +0 -43
  35. package/project-skills/tdd-guard/docs/enforcement.md +0 -46
  36. package/project-skills/tdd-guard/docs/ignore-patterns.md +0 -81
  37. package/project-skills/tdd-guard/docs/linting.md +0 -109
  38. package/project-skills/tdd-guard/docs/quick-commands.md +0 -52
  39. package/project-skills/tdd-guard/docs/session-management.md +0 -75
  40. package/project-skills/tdd-guard/docs/storybook-vitest-addon.md +0 -120
  41. package/project-skills/tdd-guard/docs/validation-model.md +0 -63
  42. package/project-skills/tdd-guard/eslint.config.mjs +0 -140
  43. package/project-skills/tdd-guard/package-lock.json +0 -16937
  44. package/project-skills/tdd-guard/package.json +0 -102
  45. package/project-skills/tdd-guard/reporters/go/README.md +0 -67
  46. package/project-skills/tdd-guard/reporters/go/cmd/tdd-guard-go/main.go +0 -127
  47. package/project-skills/tdd-guard/reporters/go/cmd/tdd-guard-go/main_test.go +0 -280
  48. package/project-skills/tdd-guard/reporters/go/go.mod +0 -3
  49. package/project-skills/tdd-guard/reporters/go/go.sum +0 -0
  50. package/project-skills/tdd-guard/reporters/go/internal/formatter/formatter.go +0 -126
  51. package/project-skills/tdd-guard/reporters/go/internal/formatter/formatter_test.go +0 -264
  52. package/project-skills/tdd-guard/reporters/go/internal/io/tee_reader.go +0 -26
  53. package/project-skills/tdd-guard/reporters/go/internal/io/tee_reader_test.go +0 -37
  54. package/project-skills/tdd-guard/reporters/go/internal/parser/mixed_reader.go +0 -94
  55. package/project-skills/tdd-guard/reporters/go/internal/parser/mixed_reader_test.go +0 -198
  56. package/project-skills/tdd-guard/reporters/go/internal/parser/parser.go +0 -245
  57. package/project-skills/tdd-guard/reporters/go/internal/parser/parser_test.go +0 -547
  58. package/project-skills/tdd-guard/reporters/go/internal/storage/storage.go +0 -35
  59. package/project-skills/tdd-guard/reporters/go/internal/storage/storage_test.go +0 -113
  60. package/project-skills/tdd-guard/reporters/go/internal/transformer/transformer.go +0 -103
  61. package/project-skills/tdd-guard/reporters/go/internal/transformer/transformer_test.go +0 -303
  62. package/project-skills/tdd-guard/reporters/jest/README.md +0 -102
  63. package/project-skills/tdd-guard/reporters/jest/package.json +0 -38
  64. package/project-skills/tdd-guard/reporters/jest/src/JestReporter.test-data.ts +0 -199
  65. package/project-skills/tdd-guard/reporters/jest/src/JestReporter.test.ts +0 -302
  66. package/project-skills/tdd-guard/reporters/jest/src/JestReporter.ts +0 -201
  67. package/project-skills/tdd-guard/reporters/jest/src/index.ts +0 -4
  68. package/project-skills/tdd-guard/reporters/jest/src/types.ts +0 -42
  69. package/project-skills/tdd-guard/reporters/jest/tsconfig.json +0 -11
  70. package/project-skills/tdd-guard/reporters/phpunit/.php-cs-fixer.php +0 -28
  71. package/project-skills/tdd-guard/reporters/phpunit/README.md +0 -97
  72. package/project-skills/tdd-guard/reporters/phpunit/SYNC_README.md +0 -29
  73. package/project-skills/tdd-guard/reporters/phpunit/composer.json +0 -55
  74. package/project-skills/tdd-guard/reporters/phpunit/phpunit.xml.dist +0 -19
  75. package/project-skills/tdd-guard/reporters/phpunit/psalm.xml +0 -44
  76. package/project-skills/tdd-guard/reporters/phpunit/src/Event/ErroredTestSubscriber.php +0 -28
  77. package/project-skills/tdd-guard/reporters/phpunit/src/Event/FailedTestSubscriber.php +0 -28
  78. package/project-skills/tdd-guard/reporters/phpunit/src/Event/IncompleteTestSubscriber.php +0 -28
  79. package/project-skills/tdd-guard/reporters/phpunit/src/Event/PassedTestSubscriber.php +0 -27
  80. package/project-skills/tdd-guard/reporters/phpunit/src/Event/SkippedTestSubscriber.php +0 -28
  81. package/project-skills/tdd-guard/reporters/phpunit/src/Event/TestRunnerFinishedSubscriber.php +0 -24
  82. package/project-skills/tdd-guard/reporters/phpunit/src/PathValidator.php +0 -88
  83. package/project-skills/tdd-guard/reporters/phpunit/src/Storage.php +0 -26
  84. package/project-skills/tdd-guard/reporters/phpunit/src/TddGuardExtension.php +0 -33
  85. package/project-skills/tdd-guard/reporters/phpunit/src/TddGuardListener.php +0 -158
  86. package/project-skills/tdd-guard/reporters/phpunit/src/TddGuardSubscriber.php +0 -35
  87. package/project-skills/tdd-guard/reporters/phpunit/src/TestResultCollector.php +0 -105
  88. package/project-skills/tdd-guard/reporters/phpunit/tests/PathValidatorTest.php +0 -74
  89. package/project-skills/tdd-guard/reporters/phpunit/tests/TddGuardExtensionFailedTest.php +0 -241
  90. package/project-skills/tdd-guard/reporters/phpunit/tests/TddGuardExtensionTest.php +0 -84
  91. package/project-skills/tdd-guard/reporters/phpunit/tests/TddGuardStorageLocationTest.php +0 -71
  92. package/project-skills/tdd-guard/reporters/pytest/README.md +0 -77
  93. package/project-skills/tdd-guard/reporters/pytest/pyproject.toml +0 -43
  94. package/project-skills/tdd-guard/reporters/pytest/pytest.ini.example +0 -7
  95. package/project-skills/tdd-guard/reporters/pytest/tdd_guard_pytest/__init__.py +0 -1
  96. package/project-skills/tdd-guard/reporters/pytest/tdd_guard_pytest/pytest_reporter.py +0 -134
  97. package/project-skills/tdd-guard/reporters/pytest/tests/__init__.py +0 -1
  98. package/project-skills/tdd-guard/reporters/pytest/tests/conftest.py +0 -3
  99. package/project-skills/tdd-guard/reporters/pytest/tests/helpers.py +0 -293
  100. package/project-skills/tdd-guard/reporters/pytest/tests/test_config_option.py +0 -38
  101. package/project-skills/tdd-guard/reporters/pytest/tests/test_path_validation.py +0 -59
  102. package/project-skills/tdd-guard/reporters/pytest/tests/test_plugin_config.py +0 -32
  103. package/project-skills/tdd-guard/reporters/pytest/tests/test_project_root.py +0 -296
  104. package/project-skills/tdd-guard/reporters/pytest/tests/test_pytest_reporter.py +0 -137
  105. package/project-skills/tdd-guard/reporters/rspec/Gemfile +0 -3
  106. package/project-skills/tdd-guard/reporters/rust/Cargo.lock +0 -458
  107. package/project-skills/tdd-guard/reporters/rust/Cargo.toml +0 -33
  108. package/project-skills/tdd-guard/reporters/rust/Makefile.example +0 -95
  109. package/project-skills/tdd-guard/reporters/rust/README.md +0 -88
  110. package/project-skills/tdd-guard/reporters/rust/src/error_parser.rs +0 -309
  111. package/project-skills/tdd-guard/reporters/rust/src/main.rs +0 -464
  112. package/project-skills/tdd-guard/reporters/rust/src/parser.rs +0 -225
  113. package/project-skills/tdd-guard/reporters/rust/src/transformer.rs +0 -409
  114. package/project-skills/tdd-guard/reporters/storybook/README.md +0 -108
  115. package/project-skills/tdd-guard/reporters/storybook/package-lock.json +0 -9482
  116. package/project-skills/tdd-guard/reporters/storybook/package.json +0 -43
  117. package/project-skills/tdd-guard/reporters/storybook/src/StorybookReporter.test-data.ts +0 -22
  118. package/project-skills/tdd-guard/reporters/storybook/src/StorybookReporter.test.ts +0 -190
  119. package/project-skills/tdd-guard/reporters/storybook/src/StorybookReporter.ts +0 -88
  120. package/project-skills/tdd-guard/reporters/storybook/src/index.ts +0 -12
  121. package/project-skills/tdd-guard/reporters/storybook/src/types.ts +0 -37
  122. package/project-skills/tdd-guard/reporters/storybook/tsconfig.json +0 -11
  123. package/project-skills/tdd-guard/reporters/test/artifacts/go/failing/go.mod +0 -3
  124. package/project-skills/tdd-guard/reporters/test/artifacts/go/failing/single_failing_test.go +0 -13
  125. package/project-skills/tdd-guard/reporters/test/artifacts/go/import/go.mod +0 -3
  126. package/project-skills/tdd-guard/reporters/test/artifacts/go/import/single_import_error_test.go +0 -17
  127. package/project-skills/tdd-guard/reporters/test/artifacts/go/passing/go.mod +0 -3
  128. package/project-skills/tdd-guard/reporters/test/artifacts/go/passing/single_passing_test.go +0 -13
  129. package/project-skills/tdd-guard/reporters/test/artifacts/jest/single-failing.test.js +0 -5
  130. package/project-skills/tdd-guard/reporters/test/artifacts/jest/single-import-error.test.js +0 -8
  131. package/project-skills/tdd-guard/reporters/test/artifacts/jest/single-passing.test.js +0 -5
  132. package/project-skills/tdd-guard/reporters/test/artifacts/phpunit/SingleFailingTest.php +0 -11
  133. package/project-skills/tdd-guard/reporters/test/artifacts/phpunit/SingleImportErrorTest.php +0 -14
  134. package/project-skills/tdd-guard/reporters/test/artifacts/phpunit/SinglePassingTest.php +0 -11
  135. package/project-skills/tdd-guard/reporters/test/artifacts/pytest/test_single_failing.py +0 -3
  136. package/project-skills/tdd-guard/reporters/test/artifacts/pytest/test_single_import_error.py +0 -6
  137. package/project-skills/tdd-guard/reporters/test/artifacts/pytest/test_single_passing.py +0 -3
  138. package/project-skills/tdd-guard/reporters/test/artifacts/rust/failing/Cargo.lock +0 -7
  139. package/project-skills/tdd-guard/reporters/test/artifacts/rust/failing/Cargo.toml +0 -4
  140. package/project-skills/tdd-guard/reporters/test/artifacts/rust/failing/src/lib.rs +0 -14
  141. package/project-skills/tdd-guard/reporters/test/artifacts/rust/import/Cargo.lock +0 -7
  142. package/project-skills/tdd-guard/reporters/test/artifacts/rust/import/Cargo.toml +0 -4
  143. package/project-skills/tdd-guard/reporters/test/artifacts/rust/import/src/lib.rs +0 -13
  144. package/project-skills/tdd-guard/reporters/test/artifacts/rust/passing/Cargo.lock +0 -7
  145. package/project-skills/tdd-guard/reporters/test/artifacts/rust/passing/Cargo.toml +0 -4
  146. package/project-skills/tdd-guard/reporters/test/artifacts/rust/passing/src/lib.rs +0 -14
  147. package/project-skills/tdd-guard/reporters/test/artifacts/storybook/Calculator.js +0 -4
  148. package/project-skills/tdd-guard/reporters/test/artifacts/storybook/single-failing.stories.js +0 -15
  149. package/project-skills/tdd-guard/reporters/test/artifacts/storybook/single-import-error.stories.js +0 -14
  150. package/project-skills/tdd-guard/reporters/test/artifacts/storybook/single-passing.stories.js +0 -15
  151. package/project-skills/tdd-guard/reporters/test/artifacts/vitest/single-failing.test.js +0 -7
  152. package/project-skills/tdd-guard/reporters/test/artifacts/vitest/single-import-error.test.js +0 -9
  153. package/project-skills/tdd-guard/reporters/test/artifacts/vitest/single-passing.test.js +0 -7
  154. package/project-skills/tdd-guard/reporters/test/factories/go.ts +0 -59
  155. package/project-skills/tdd-guard/reporters/test/factories/helpers.ts +0 -48
  156. package/project-skills/tdd-guard/reporters/test/factories/index.ts +0 -7
  157. package/project-skills/tdd-guard/reporters/test/factories/jest.ts +0 -51
  158. package/project-skills/tdd-guard/reporters/test/factories/phpunit.ts +0 -63
  159. package/project-skills/tdd-guard/reporters/test/factories/pytest.ts +0 -41
  160. package/project-skills/tdd-guard/reporters/test/factories/rust.ts +0 -158
  161. package/project-skills/tdd-guard/reporters/test/factories/storybook.ts +0 -198
  162. package/project-skills/tdd-guard/reporters/test/factories/vitest.ts +0 -51
  163. package/project-skills/tdd-guard/reporters/test/reporters.integration.test.ts +0 -735
  164. package/project-skills/tdd-guard/reporters/test/types.ts +0 -28
  165. package/project-skills/tdd-guard/reporters/vitest/README.md +0 -64
  166. package/project-skills/tdd-guard/reporters/vitest/package.json +0 -35
  167. package/project-skills/tdd-guard/reporters/vitest/src/VitestReporter.test-data.ts +0 -85
  168. package/project-skills/tdd-guard/reporters/vitest/src/VitestReporter.test.ts +0 -446
  169. package/project-skills/tdd-guard/reporters/vitest/src/VitestReporter.ts +0 -110
  170. package/project-skills/tdd-guard/reporters/vitest/src/index.ts +0 -4
  171. package/project-skills/tdd-guard/reporters/vitest/src/types.ts +0 -39
  172. package/project-skills/tdd-guard/reporters/vitest/tsconfig.json +0 -11
  173. package/project-skills/tdd-guard/src/cli/buildContext.test.ts +0 -200
  174. package/project-skills/tdd-guard/src/cli/buildContext.ts +0 -48
  175. package/project-skills/tdd-guard/src/cli/tdd-guard.test.ts +0 -159
  176. package/project-skills/tdd-guard/src/cli/tdd-guard.ts +0 -48
  177. package/project-skills/tdd-guard/src/config/Config.test.ts +0 -538
  178. package/project-skills/tdd-guard/src/config/Config.ts +0 -172
  179. package/project-skills/tdd-guard/src/contracts/schemas/guardSchemas.test.ts +0 -58
  180. package/project-skills/tdd-guard/src/contracts/schemas/guardSchemas.ts +0 -8
  181. package/project-skills/tdd-guard/src/contracts/schemas/lintSchemas.test.ts +0 -347
  182. package/project-skills/tdd-guard/src/contracts/schemas/lintSchemas.ts +0 -61
  183. package/project-skills/tdd-guard/src/contracts/schemas/pytestSchemas.test.ts +0 -24
  184. package/project-skills/tdd-guard/src/contracts/schemas/pytestSchemas.ts +0 -7
  185. package/project-skills/tdd-guard/src/contracts/schemas/reporterSchemas.test.ts +0 -377
  186. package/project-skills/tdd-guard/src/contracts/schemas/reporterSchemas.ts +0 -75
  187. package/project-skills/tdd-guard/src/contracts/schemas/toolSchemas.test.ts +0 -563
  188. package/project-skills/tdd-guard/src/contracts/schemas/toolSchemas.ts +0 -140
  189. package/project-skills/tdd-guard/src/contracts/types/ClientType.ts +0 -1
  190. package/project-skills/tdd-guard/src/contracts/types/ConfigOptions.ts +0 -12
  191. package/project-skills/tdd-guard/src/contracts/types/Context.ts +0 -16
  192. package/project-skills/tdd-guard/src/contracts/types/ModelClient.ts +0 -3
  193. package/project-skills/tdd-guard/src/contracts/types/ValidationResult.ts +0 -6
  194. package/project-skills/tdd-guard/src/guard/GuardManager.test.ts +0 -336
  195. package/project-skills/tdd-guard/src/guard/GuardManager.ts +0 -83
  196. package/project-skills/tdd-guard/src/hooks/HookEvents.test.ts +0 -107
  197. package/project-skills/tdd-guard/src/hooks/HookEvents.ts +0 -39
  198. package/project-skills/tdd-guard/src/hooks/fileTypeDetection.ts +0 -16
  199. package/project-skills/tdd-guard/src/hooks/postToolLint.test.ts +0 -327
  200. package/project-skills/tdd-guard/src/hooks/postToolLint.ts +0 -165
  201. package/project-skills/tdd-guard/src/hooks/processHookData.test.ts +0 -465
  202. package/project-skills/tdd-guard/src/hooks/processHookData.ts +0 -203
  203. package/project-skills/tdd-guard/src/hooks/sessionHandler.test.ts +0 -136
  204. package/project-skills/tdd-guard/src/hooks/sessionHandler.ts +0 -31
  205. package/project-skills/tdd-guard/src/hooks/userPromptHandler.test.ts +0 -131
  206. package/project-skills/tdd-guard/src/hooks/userPromptHandler.ts +0 -55
  207. package/project-skills/tdd-guard/src/index.ts +0 -19
  208. package/project-skills/tdd-guard/src/linters/Linter.ts +0 -5
  209. package/project-skills/tdd-guard/src/linters/eslint/ESLint.test.ts +0 -183
  210. package/project-skills/tdd-guard/src/linters/eslint/ESLint.ts +0 -82
  211. package/project-skills/tdd-guard/src/linters/golangci/GolangciLint.test.ts +0 -170
  212. package/project-skills/tdd-guard/src/linters/golangci/GolangciLint.ts +0 -148
  213. package/project-skills/tdd-guard/src/processors/index.ts +0 -1
  214. package/project-skills/tdd-guard/src/processors/lintProcessor.ts +0 -77
  215. package/project-skills/tdd-guard/src/processors/testResults/TestResultsProcessor.test.ts +0 -303
  216. package/project-skills/tdd-guard/src/processors/testResults/TestResultsProcessor.ts +0 -255
  217. package/project-skills/tdd-guard/src/providers/LinterProvider.test.ts +0 -43
  218. package/project-skills/tdd-guard/src/providers/LinterProvider.ts +0 -20
  219. package/project-skills/tdd-guard/src/providers/ModelClientProvider.test.ts +0 -68
  220. package/project-skills/tdd-guard/src/providers/ModelClientProvider.ts +0 -22
  221. package/project-skills/tdd-guard/src/storage/FileStorage.test.ts +0 -76
  222. package/project-skills/tdd-guard/src/storage/FileStorage.ts +0 -108
  223. package/project-skills/tdd-guard/src/storage/MemoryStorage.ts +0 -57
  224. package/project-skills/tdd-guard/src/storage/Storage.test.ts +0 -227
  225. package/project-skills/tdd-guard/src/storage/Storage.ts +0 -17
  226. package/project-skills/tdd-guard/src/validation/context/context.test.ts +0 -364
  227. package/project-skills/tdd-guard/src/validation/context/context.ts +0 -155
  228. package/project-skills/tdd-guard/src/validation/models/AnthropicApi.test.ts +0 -171
  229. package/project-skills/tdd-guard/src/validation/models/AnthropicApi.ts +0 -49
  230. package/project-skills/tdd-guard/src/validation/models/ClaudeAgentSdk.test.ts +0 -167
  231. package/project-skills/tdd-guard/src/validation/models/ClaudeAgentSdk.ts +0 -54
  232. package/project-skills/tdd-guard/src/validation/models/ClaudeCli.test.ts +0 -239
  233. package/project-skills/tdd-guard/src/validation/models/ClaudeCli.ts +0 -57
  234. package/project-skills/tdd-guard/src/validation/prompts/file-types.ts +0 -52
  235. package/project-skills/tdd-guard/src/validation/prompts/operations/edit.ts +0 -58
  236. package/project-skills/tdd-guard/src/validation/prompts/operations/multi-edit.ts +0 -54
  237. package/project-skills/tdd-guard/src/validation/prompts/operations/write.ts +0 -54
  238. package/project-skills/tdd-guard/src/validation/prompts/response.ts +0 -40
  239. package/project-skills/tdd-guard/src/validation/prompts/rules.ts +0 -51
  240. package/project-skills/tdd-guard/src/validation/prompts/system-prompt.ts +0 -10
  241. package/project-skills/tdd-guard/src/validation/prompts/tools/lint-results.ts +0 -15
  242. package/project-skills/tdd-guard/src/validation/prompts/tools/test-output.ts +0 -14
  243. package/project-skills/tdd-guard/src/validation/prompts/tools/todos.ts +0 -9
  244. package/project-skills/tdd-guard/src/validation/validator.test.ts +0 -268
  245. package/project-skills/tdd-guard/src/validation/validator.ts +0 -159
  246. package/project-skills/tdd-guard/test/artifacts/go/.golangci.yml +0 -6
  247. package/project-skills/tdd-guard/test/artifacts/go/with-issues/file-with-issues.go +0 -12
  248. package/project-skills/tdd-guard/test/artifacts/go/with-issues/go.mod +0 -3
  249. package/project-skills/tdd-guard/test/artifacts/go/without-issues/file-without-issues.go +0 -7
  250. package/project-skills/tdd-guard/test/artifacts/go/without-issues/go.mod +0 -3
  251. package/project-skills/tdd-guard/test/artifacts/javascript/eslint.config.js +0 -20
  252. package/project-skills/tdd-guard/test/artifacts/javascript/file-with-issues.js +0 -12
  253. package/project-skills/tdd-guard/test/artifacts/javascript/file-without-issues.js +0 -10
  254. package/project-skills/tdd-guard/test/hooks/fileTypeDetection.test.ts +0 -26
  255. package/project-skills/tdd-guard/test/hooks/processHookData.fileType.test.ts +0 -46
  256. package/project-skills/tdd-guard/test/hooks/processHookData.python.test.ts +0 -68
  257. package/project-skills/tdd-guard/test/integration/test-context.test.ts +0 -66
  258. package/project-skills/tdd-guard/test/integration/validator.core.test.ts +0 -96
  259. package/project-skills/tdd-guard/test/integration/validator.scenarios.test.ts +0 -497
  260. package/project-skills/tdd-guard/test/utils/assertions.ts +0 -29
  261. package/project-skills/tdd-guard/test/utils/factories/contextFactory.ts +0 -30
  262. package/project-skills/tdd-guard/test/utils/factories/editFactory.ts +0 -82
  263. package/project-skills/tdd-guard/test/utils/factories/helpers.test.ts +0 -46
  264. package/project-skills/tdd-guard/test/utils/factories/helpers.ts +0 -46
  265. package/project-skills/tdd-guard/test/utils/factories/lintFactory.ts +0 -352
  266. package/project-skills/tdd-guard/test/utils/factories/modelClientProviderFactory.ts +0 -21
  267. package/project-skills/tdd-guard/test/utils/factories/multiEditFactory.ts +0 -79
  268. package/project-skills/tdd-guard/test/utils/factories/operations.ts +0 -57
  269. package/project-skills/tdd-guard/test/utils/factories/reporterFactory.ts +0 -55
  270. package/project-skills/tdd-guard/test/utils/factories/scenarios/index.ts +0 -22
  271. package/project-skills/tdd-guard/test/utils/factories/scenarios/languages/python.ts +0 -745
  272. package/project-skills/tdd-guard/test/utils/factories/scenarios/languages/typescript.ts +0 -767
  273. package/project-skills/tdd-guard/test/utils/factories/scenarios/types.ts +0 -77
  274. package/project-skills/tdd-guard/test/utils/factories/scenarios/utils.ts +0 -15
  275. package/project-skills/tdd-guard/test/utils/factories/sessionStartFactory.ts +0 -36
  276. package/project-skills/tdd-guard/test/utils/factories/testDefaults.ts +0 -90
  277. package/project-skills/tdd-guard/test/utils/factories/testResultsFactory.ts +0 -234
  278. package/project-skills/tdd-guard/test/utils/factories/todoFactory.ts +0 -99
  279. package/project-skills/tdd-guard/test/utils/factories/userPromptSubmitFactory.ts +0 -39
  280. package/project-skills/tdd-guard/test/utils/factories/writeFactory.ts +0 -70
  281. package/project-skills/tdd-guard/test/utils/index.ts +0 -131
  282. package/project-skills/tdd-guard/tsconfig.build.json +0 -16
  283. package/project-skills/tdd-guard/tsconfig.eslint.json +0 -17
  284. package/project-skills/tdd-guard/tsconfig.json +0 -32
  285. package/project-skills/tdd-guard/tsconfig.node.json +0 -10
  286. package/project-skills/tdd-guard/vitest.config.ts +0 -85
@@ -1,767 +0,0 @@
1
- // Import existing types from contracts
2
- import type { Todo } from '../../../../../src/contracts/schemas/toolSchemas'
3
-
4
- const TEST_MODULE_ID = 'src/Calculator/Calculator.test.ts'
5
- const TEST_NAME = 'it adds two numbers'
6
- const TEST_FULL_NAME = 'Calculator > it adds two numbers'
7
-
8
- // Test results
9
- export const testResults = {
10
- notDefined: {
11
- description: 'not defined error',
12
- content: JSON.stringify(
13
- {
14
- testModules: [
15
- {
16
- moduleId: TEST_MODULE_ID,
17
- tests: [
18
- {
19
- name: TEST_NAME,
20
- fullName: TEST_FULL_NAME,
21
- state: 'failed',
22
- errors: [
23
- {
24
- message: 'Calculator is not defined',
25
- stack:
26
- 'ReferenceError: Calculator is not defined\n at src/Calculator/Calculator.test.ts:3:21',
27
- },
28
- ],
29
- },
30
- ],
31
- },
32
- ],
33
- },
34
- null,
35
- 2
36
- ),
37
- },
38
- notAConstructor: {
39
- description: 'not a constructor error',
40
- content: JSON.stringify(
41
- {
42
- testModules: [
43
- {
44
- moduleId: TEST_MODULE_ID,
45
- tests: [
46
- {
47
- name: TEST_NAME,
48
- fullName: TEST_FULL_NAME,
49
- state: 'failed',
50
- errors: [
51
- {
52
- message: 'Calculator is not a constructor',
53
- stack:
54
- 'TypeError: Calculator is not a constructor\n at src/Calculator/Calculator.test.ts:4:21',
55
- },
56
- ],
57
- },
58
- ],
59
- },
60
- ],
61
- },
62
- null,
63
- 2
64
- ),
65
- },
66
- notAFunction: {
67
- description: 'not a function error',
68
- content: JSON.stringify(
69
- {
70
- testModules: [
71
- {
72
- moduleId: TEST_MODULE_ID,
73
- tests: [
74
- {
75
- name: TEST_NAME,
76
- fullName: TEST_FULL_NAME,
77
- state: 'failed',
78
- errors: [
79
- {
80
- message: 'calculator.add is not a function',
81
- stack:
82
- 'TypeError: calculator.add is not a function\n at src/Calculator/Calculator.test.ts:5:30',
83
- },
84
- ],
85
- },
86
- ],
87
- },
88
- ],
89
- },
90
- null,
91
- 2
92
- ),
93
- },
94
- assertionError: {
95
- description: 'assertion failure',
96
- content: JSON.stringify(
97
- {
98
- testModules: [
99
- {
100
- moduleId: TEST_MODULE_ID,
101
- tests: [
102
- {
103
- name: TEST_NAME,
104
- fullName: TEST_FULL_NAME,
105
- state: 'failed',
106
- errors: [
107
- {
108
- message: 'expected +0 to be 4 // Object.is equality',
109
- stack:
110
- 'AssertionError: expected +0 to be 4 // Object.is equality\n at src/Calculator/Calculator.test.ts:6:23',
111
- expected: '4',
112
- actual: '0',
113
- },
114
- ],
115
- },
116
- ],
117
- },
118
- ],
119
- },
120
- null,
121
- 2
122
- ),
123
- },
124
- passing: {
125
- description: 'passing tests',
126
- content: JSON.stringify(
127
- {
128
- testModules: [
129
- {
130
- moduleId: TEST_MODULE_ID,
131
- tests: [
132
- {
133
- name: TEST_NAME,
134
- fullName: TEST_FULL_NAME,
135
- state: 'passed',
136
- errors: [],
137
- },
138
- ],
139
- },
140
- ],
141
- },
142
- null,
143
- 2
144
- ),
145
- },
146
- irrelevant: {
147
- description: 'irrelevant tests',
148
- content: JSON.stringify(
149
- {
150
- testModules: [
151
- {
152
- moduleId: 'src/Billing/Domestic.test.ts',
153
- tests: [
154
- {
155
- name: 'it generates xml report',
156
- fullName: 'DomesticBilling > it generates xml report',
157
- state: 'passed',
158
- errors: [],
159
- },
160
- ],
161
- },
162
- ],
163
- },
164
- null,
165
- 2
166
- ),
167
- },
168
- empty: {
169
- description: 'no test output',
170
- content: ``,
171
- },
172
- } as const
173
-
174
- // Test modifications
175
- export const testModifications = {
176
- singleTest: {
177
- description: 'adding a single test',
178
- content: `
179
- test('it adds two numbers', () => {
180
- const calculator = new Calculator();
181
- const result = calculator.add(2, 2);
182
- expect(result).toBe(4);
183
- })
184
- `,
185
- },
186
- multipleTests: {
187
- description: 'adding multiple tests',
188
- content: `
189
- test('it adds two numbers', () => {
190
- const calculator = new Calculator();
191
- const result = calculator.add(2, 2);
192
- expect(result).toBe(4);
193
- })
194
-
195
- test('it subtracts two numbers', () => {
196
- const calculator = new Calculator();
197
- const result = calculator.subtract(8, 2);
198
- expect(result).toBe(6);
199
- })
200
- `,
201
- },
202
- multipleTestsWithImports: {
203
- description: 'adding multiple tests with imports',
204
- content: `
205
- import { describe, test, expect } from 'vitest'
206
- import { Calculator } from './Calculator'
207
-
208
- describe('Calculator', () => {
209
- test('it adds two numbers', () => {
210
- const calculator = new Calculator();
211
- const result = calculator.add(2, 2);
212
- expect(result).toBe(4);
213
- })
214
-
215
- test('it subtracts two numbers', () => {
216
- const calculator = new Calculator();
217
- const result = calculator.subtract(8, 2);
218
- expect(result).toBe(6);
219
- })
220
- })
221
- `,
222
- },
223
- singleTestWithContainer: {
224
- description: 'adding a single test with test container',
225
- content: `
226
- describe('Calculator', () => {
227
- test('it adds two numbers', () => {
228
- const calculator = new Calculator();
229
- const result = calculator.add(2, 2);
230
- expect(result).toBe(4);
231
- })
232
- })
233
- `,
234
- },
235
- singleTestComplete: {
236
- description: 'adding a complete test file',
237
- content: `
238
- import { describe, test, expect } from 'vitest'
239
- import { Calculator } from './Calculator'
240
-
241
- describe('Calculator', () => {
242
- test('it adds two numbers', () => {
243
- const calculator = new Calculator();
244
- const result = calculator.add(2, 2);
245
- expect(result).toBe(4);
246
- })
247
- })
248
- `,
249
- },
250
- emptyTestContainer: {
251
- description: 'empty test container',
252
- content: `
253
- describe('Calculator', () => {
254
-
255
- })
256
- `,
257
- },
258
- emptyTestContainerWithImports: {
259
- description: 'empty test file with imports',
260
- content: `
261
- import { describe, test, expect } from 'vitest'
262
- import { Calculator } from './Calculator'
263
-
264
- describe('Calculator', () => {
265
-
266
- })
267
- `,
268
- },
269
- refactoredTests: {
270
- description: 'refactoring test setup',
271
- content: `
272
- const calculator = new Calculator();
273
-
274
- test('it adds two numbers', () => {
275
- const result = calculator.add(2, 2);
276
- expect(result).toBe(4);
277
- })
278
-
279
- test('it subtracts two numbers', () => {
280
- const result = calculator.subtract(8, 2);
281
- expect(result).toBe(6);
282
- })
283
- `,
284
- },
285
- } as const
286
-
287
- // Implementation modifications
288
- export const implementationModifications = {
289
- empty: {
290
- description: 'class file with only a comment',
291
- content: `// Calculator.ts
292
- `,
293
- },
294
- classStub: {
295
- description: 'creating empty class stub',
296
- content: `
297
- export class Calculator {}
298
- `,
299
- },
300
- methodStub: {
301
- description: 'creating method stub',
302
- content: `
303
- export class Calculator {
304
- add(a: number, b: number) {
305
- return undefined;
306
- }
307
- }
308
- `,
309
- },
310
- methodStubReturning0: {
311
- description: 'method stub returning 0',
312
- content: `
313
- export class Calculator {
314
- add(a: number, b: number): number {
315
- return 0;
316
- }
317
- }
318
- `,
319
- },
320
- methodImplementation: {
321
- description: 'implementing method',
322
- content: `
323
- export class Calculator {
324
- add(a: number, b: number): number {
325
- return a + b;
326
- }
327
- }
328
- `,
329
- },
330
- overEngineered: {
331
- description: 'over-engineering implementation',
332
- content: String.raw`
333
- import { Logger } from '../utils/Logger';
334
- import { MetricsCollector } from '../utils/MetricsCollector';
335
- import { ValidationService } from '../services/ValidationService';
336
-
337
- export class Calculator {
338
- private logger: Logger;
339
- private metrics: MetricsCollector;
340
- private validationService: ValidationService;
341
-
342
- constructor() {
343
- this.logger = new Logger('Calculator');
344
- this.metrics = new MetricsCollector();
345
- this.validationService = new ValidationService();
346
- }
347
-
348
- add(a: number, b: number): number {
349
- this.logger.debug(\`Adding \${a} + \${b}\`);
350
-
351
- // Validate inputs
352
- if (!this.validationService.isValidNumber(a)) {
353
- this.logger.error(\`Invalid input: \${a}\`);
354
- throw new Error('First argument must be a valid number');
355
- }
356
- if (!this.validationService.isValidNumber(b)) {
357
- this.logger.error(\`Invalid input: \${b}\`);
358
- throw new Error('Second argument must be a valid number');
359
- }
360
-
361
- // Track metrics
362
- const startTime = performance.now();
363
- this.metrics.incrementCounter('add_operations');
364
-
365
- // Perform calculation
366
- const result = a + b;
367
-
368
- // More tracking
369
- const endTime = performance.now();
370
- this.metrics.recordTiming('add_operation_duration', endTime - startTime);
371
-
372
- // Log result
373
- this.logger.info(\`Addition result: \${result}\`);
374
-
375
- // Check for overflow
376
- if (!Number.isFinite(result)) {
377
- this.logger.warn('Result exceeded maximum safe integer');
378
- }
379
-
380
- return result;
381
- }
382
- }
383
- `,
384
- },
385
- completeClass: {
386
- description: 'implementing multiple methods',
387
- content: String.raw`
388
- export class Calculator {
389
- add(a: number, b: number): number {
390
- return a + b;
391
- }
392
-
393
- subtract(a: number, b: number): number {
394
- return a - b;
395
- }
396
-
397
- multiply(a: number, b: number): number {
398
- return a * b;
399
- }
400
-
401
- divide(a: number, b: number): number {
402
- if (b === 0) {
403
- throw new Error('Division by zero');
404
- }
405
- return a / b;
406
- }
407
- }
408
- `,
409
- },
410
- } as const
411
-
412
- // Todo states
413
- export const todos = {
414
- empty: {
415
- description: 'no todos',
416
- content: [] as Todo[],
417
- },
418
- irrelevantCompleted: {
419
- description: 'irrelevant completed todos',
420
- content: [
421
- {
422
- content: 'Add support for domestic billing',
423
- status: 'completed',
424
- priority: 'high',
425
- id: '1',
426
- },
427
- {
428
- content: 'Generate XML report tags',
429
- status: 'completed',
430
- priority: 'high',
431
- id: '2',
432
- },
433
- {
434
- content: 'Update billing wiki',
435
- status: 'completed',
436
- priority: 'high',
437
- id: '3',
438
- },
439
- ] as Todo[],
440
- },
441
- irrelevantInProgress: {
442
- description: 'irrelevant task in progress',
443
- content: [
444
- {
445
- content: 'Add support for domestic billing',
446
- status: 'completed',
447
- priority: 'high',
448
- id: '1',
449
- },
450
- {
451
- content: 'Generate XML report tags',
452
- status: 'in_progress',
453
- priority: 'high',
454
- id: '2',
455
- },
456
- {
457
- content: 'Update billing wiki',
458
- status: 'pending',
459
- priority: 'high',
460
- id: '3',
461
- },
462
- ] as Todo[],
463
- },
464
- classInProgress: {
465
- description: 'class in progress',
466
- content: [
467
- {
468
- content: 'Add Calculator class',
469
- status: 'in_progress',
470
- priority: 'high',
471
- id: '1',
472
- },
473
- {
474
- content: 'Create add method',
475
- status: 'pending',
476
- priority: 'high',
477
- id: '2',
478
- },
479
- {
480
- content: 'Create subtract method',
481
- status: 'pending',
482
- priority: 'high',
483
- id: '3',
484
- },
485
- ] as Todo[],
486
- },
487
- methodInProgress: {
488
- description: 'method in progress',
489
- content: [
490
- {
491
- content: 'Add Calculator class',
492
- status: 'completed',
493
- priority: 'high',
494
- id: '1',
495
- },
496
- {
497
- content: 'Create add method',
498
- status: 'in_progress',
499
- priority: 'high',
500
- id: '2',
501
- },
502
- {
503
- content: 'Create subtract method',
504
- status: 'pending',
505
- priority: 'high',
506
- id: '3',
507
- },
508
- ] as Todo[],
509
- },
510
- allCompleted: {
511
- description: 'all tasks completed',
512
- content: [
513
- {
514
- content: 'Add Calculator class',
515
- status: 'completed',
516
- priority: 'high',
517
- id: '1',
518
- },
519
- {
520
- content: 'Create add method',
521
- status: 'completed',
522
- priority: 'high',
523
- id: '2',
524
- },
525
- {
526
- content: 'Create subtract method',
527
- status: 'completed',
528
- priority: 'high',
529
- id: '3',
530
- },
531
- ] as Todo[],
532
- },
533
- refactoring: {
534
- description: 'refactoring in progress',
535
- content: [
536
- {
537
- content: 'Refactor Calculator class and tests',
538
- status: 'in_progress',
539
- priority: 'high',
540
- id: '1',
541
- },
542
- ] as Todo[],
543
- },
544
- } as const
545
-
546
- // Refactoring test data
547
- export const refactoringImplementation = {
548
- beforeRefactor: {
549
- description: 'implementation with repetitive code',
550
- content: `export class Calculator {
551
- add(a: number, b: number): number {
552
- if (typeof a !== 'number') {
553
- throw new Error('First argument must be a number');
554
- }
555
- if (typeof b !== 'number') {
556
- throw new Error('Second argument must be a number');
557
- }
558
- return a + b;
559
- }
560
-
561
- subtract(a: number, b: number): number {
562
- if (typeof a !== 'number') {
563
- throw new Error('First argument must be a number');
564
- }
565
- if (typeof b !== 'number') {
566
- throw new Error('Second argument must be a number');
567
- }
568
- return a - b;
569
- }
570
-
571
- multiply(a: number, b: number): number {
572
- if (typeof a !== 'number') {
573
- throw new Error('First argument must be a number');
574
- }
575
- if (typeof b !== 'number') {
576
- throw new Error('Second argument must be a number');
577
- }
578
- return a * b;
579
- }
580
- }`,
581
- },
582
- afterRefactor: {
583
- description: 'implementation after extracting common validation',
584
- content: `export class Calculator {
585
- private validateNumbers(a: unknown, b: unknown): void {
586
- if (typeof a !== 'number') {
587
- throw new Error('First argument must be a number');
588
- }
589
- if (typeof b !== 'number') {
590
- throw new Error('Second argument must be a number');
591
- }
592
- }
593
-
594
- add(a: number, b: number): number {
595
- this.validateNumbers(a, b);
596
- return a + b;
597
- }
598
-
599
- subtract(a: number, b: number): number {
600
- this.validateNumbers(a, b);
601
- return a - b;
602
- }
603
-
604
- multiply(a: number, b: number): number {
605
- this.validateNumbers(a, b);
606
- return a * b;
607
- }
608
- }`,
609
- },
610
- }
611
-
612
- export const refactoringTests = {
613
- beforeRefactor: {
614
- description: 'test file with inline assertions',
615
- content: `import { describe, test, expect } from 'vitest'
616
- import { Calculator } from './Calculator'
617
-
618
- describe('Calculator', () => {
619
- test('adds two numbers', () => {
620
- const calc = new Calculator()
621
- expect(calc.add(2, 3)).toBe(5)
622
- expect(calc.add(-1, 1)).toBe(0)
623
- expect(calc.add(0, 0)).toBe(0)
624
- })
625
-
626
- test('subtracts two numbers', () => {
627
- const calc = new Calculator()
628
- expect(calc.subtract(5, 3)).toBe(2)
629
- expect(calc.subtract(0, 5)).toBe(-5)
630
- expect(calc.subtract(-1, -1)).toBe(0)
631
- })
632
-
633
- test('multiplies two numbers', () => {
634
- const calc = new Calculator()
635
- expect(calc.multiply(3, 4)).toBe(12)
636
- expect(calc.multiply(-2, 3)).toBe(-6)
637
- expect(calc.multiply(0, 5)).toBe(0)
638
- })
639
- })`,
640
- },
641
- afterRefactor: {
642
- description: 'test file after extracting test setup',
643
- content: `import { describe, test, expect, beforeEach } from 'vitest'
644
- import { Calculator } from './Calculator'
645
-
646
- describe('Calculator', () => {
647
- let calc: Calculator
648
-
649
- beforeEach(() => {
650
- calc = new Calculator()
651
- })
652
-
653
- test('adds two numbers', () => {
654
- expect(calc.add(2, 3)).toBe(5)
655
- expect(calc.add(-1, 1)).toBe(0)
656
- expect(calc.add(0, 0)).toBe(0)
657
- })
658
-
659
- test('subtracts two numbers', () => {
660
- expect(calc.subtract(5, 3)).toBe(2)
661
- expect(calc.subtract(0, 5)).toBe(-5)
662
- expect(calc.subtract(-1, -1)).toBe(0)
663
- })
664
-
665
- test('multiplies two numbers', () => {
666
- expect(calc.multiply(3, 4)).toBe(12)
667
- expect(calc.multiply(-2, 3)).toBe(-6)
668
- expect(calc.multiply(0, 5)).toBe(0)
669
- })
670
- })`,
671
- },
672
- }
673
-
674
- export const refactoringTestResults = {
675
- failing: {
676
- description: 'multiple tests failing',
677
- content: JSON.stringify(
678
- {
679
- testModules: [
680
- {
681
- moduleId: TEST_MODULE_ID,
682
- tests: [
683
- {
684
- name: 'adds two numbers',
685
- fullName: 'Calculator > adds two numbers',
686
- state: 'failed',
687
- errors: [
688
- {
689
- message: 'expected 4 to be 5',
690
- stack:
691
- 'AssertionError: expected 4 to be 5\n at src/Calculator/Calculator.test.ts:10:23',
692
- expected: '5',
693
- actual: '4',
694
- },
695
- ],
696
- },
697
- {
698
- name: 'subtracts two numbers',
699
- fullName: 'Calculator > subtracts two numbers',
700
- state: 'failed',
701
- errors: [
702
- {
703
- message: 'expected 1 to be 2',
704
- stack:
705
- 'AssertionError: expected 1 to be 2\n at src/Calculator/Calculator.test.ts:16:23',
706
- expected: '2',
707
- actual: '1',
708
- },
709
- ],
710
- },
711
- {
712
- name: 'multiplies two numbers',
713
- fullName: 'Calculator > multiplies two numbers',
714
- state: 'failed',
715
- errors: [
716
- {
717
- message: 'expected 11 to be 12',
718
- stack:
719
- 'AssertionError: expected 11 to be 12\n at src/Calculator/Calculator.test.ts:22:23',
720
- expected: '12',
721
- actual: '11',
722
- },
723
- ],
724
- },
725
- ],
726
- },
727
- ],
728
- },
729
- null,
730
- 2
731
- ),
732
- },
733
- passing: {
734
- description: 'all tests passing',
735
- content: JSON.stringify(
736
- {
737
- testModules: [
738
- {
739
- moduleId: TEST_MODULE_ID,
740
- tests: [
741
- {
742
- name: 'adds two numbers',
743
- fullName: 'Calculator > adds two numbers',
744
- state: 'passed',
745
- errors: [],
746
- },
747
- {
748
- name: 'subtracts two numbers',
749
- fullName: 'Calculator > subtracts two numbers',
750
- state: 'passed',
751
- errors: [],
752
- },
753
- {
754
- name: 'multiplies two numbers',
755
- fullName: 'Calculator > multiplies two numbers',
756
- state: 'passed',
757
- errors: [],
758
- },
759
- ],
760
- },
761
- ],
762
- },
763
- null,
764
- 2
765
- ),
766
- },
767
- }