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,745 +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/test_calculator.py'
5
- const TEST_NAME = 'test_adds_two_numbers'
6
- const TEST_FULL_NAME = 'test_calculator.py::test_adds_two_numbers'
7
-
8
- // Test results for Python/pytest
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: "NameError: name 'Calculator' is not defined",
25
- stack:
26
- "test_calculator.py:3: in test_adds_two_numbers\n calculator = Calculator()\nE NameError: name 'Calculator' is not defined",
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: "TypeError: 'module' object is not callable",
53
- stack:
54
- "test_calculator.py:4: in test_adds_two_numbers\n calculator = Calculator()\nE TypeError: 'module' object is not callable",
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: "TypeError: 'int' object is not callable",
81
- stack:
82
- "test_calculator.py:5: in test_adds_two_numbers\n result = calculator.add(2, 2)\nE TypeError: 'int' object is not callable",
83
- },
84
- ],
85
- },
86
- ],
87
- },
88
- ],
89
- },
90
- null,
91
- 2
92
- ),
93
- },
94
- attributeError: {
95
- description: 'attribute error',
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:
109
- "AttributeError: 'Calculator' object has no attribute 'add'",
110
- stack:
111
- "test_calculator.py:5: in test_adds_two_numbers\n result = calculator.add(2, 2)\nE AttributeError: 'Calculator' object has no attribute 'add'",
112
- },
113
- ],
114
- },
115
- ],
116
- },
117
- ],
118
- },
119
- null,
120
- 2
121
- ),
122
- },
123
- assertionError: {
124
- description: 'assertion failure',
125
- content: JSON.stringify(
126
- {
127
- testModules: [
128
- {
129
- moduleId: TEST_MODULE_ID,
130
- tests: [
131
- {
132
- name: TEST_NAME,
133
- fullName: TEST_FULL_NAME,
134
- state: 'failed',
135
- errors: [
136
- {
137
- message: 'assert 0 == 4',
138
- stack:
139
- 'test_calculator.py:6: in test_adds_two_numbers\n assert result == 4\nE assert 0 == 4',
140
- expected: '4',
141
- actual: '0',
142
- },
143
- ],
144
- },
145
- ],
146
- },
147
- ],
148
- },
149
- null,
150
- 2
151
- ),
152
- },
153
- passing: {
154
- description: 'passing tests',
155
- content: JSON.stringify(
156
- {
157
- testModules: [
158
- {
159
- moduleId: TEST_MODULE_ID,
160
- tests: [
161
- {
162
- name: TEST_NAME,
163
- fullName: TEST_FULL_NAME,
164
- state: 'passed',
165
- errors: [],
166
- },
167
- ],
168
- },
169
- ],
170
- },
171
- null,
172
- 2
173
- ),
174
- },
175
- irrelevant: {
176
- description: 'irrelevant tests',
177
- content: JSON.stringify(
178
- {
179
- testModules: [
180
- {
181
- moduleId: 'src/billing/test_domestic.py',
182
- tests: [
183
- {
184
- name: 'test_generates_xml_report',
185
- fullName: 'test_domestic.py::test_generates_xml_report',
186
- state: 'passed',
187
- errors: [],
188
- },
189
- ],
190
- },
191
- ],
192
- },
193
- null,
194
- 2
195
- ),
196
- },
197
- empty: {
198
- description: 'no test output',
199
- content: ``,
200
- },
201
- } as const
202
-
203
- // Python test modifications
204
- export const testModifications = {
205
- singleTest: {
206
- description: 'adding a single test',
207
- content: `def test_adds_two_numbers():
208
- calculator = Calculator()
209
- result = calculator.add(2, 2)
210
- assert result == 4
211
- `,
212
- },
213
- multipleTests: {
214
- description: 'adding multiple tests',
215
- content: `def test_adds_two_numbers():
216
- calculator = Calculator()
217
- result = calculator.add(2, 2)
218
- assert result == 4
219
-
220
- def test_subtracts_two_numbers():
221
- calculator = Calculator()
222
- result = calculator.subtract(8, 2)
223
- assert result == 6
224
- `,
225
- },
226
- multipleTestsWithImports: {
227
- description: 'adding multiple tests with imports',
228
- content: `import pytest
229
- from calculator import Calculator
230
-
231
- def test_adds_two_numbers():
232
- calculator = Calculator()
233
- result = calculator.add(2, 2)
234
- assert result == 4
235
-
236
- def test_subtracts_two_numbers():
237
- calculator = Calculator()
238
- result = calculator.subtract(8, 2)
239
- assert result == 6
240
- `,
241
- },
242
- singleTestWithContainer: {
243
- description: 'adding a single test with test container',
244
- content: `class TestCalculator:
245
- def test_adds_two_numbers(self):
246
- calculator = Calculator()
247
- result = calculator.add(2, 2)
248
- assert result == 4
249
- `,
250
- },
251
- singleTestComplete: {
252
- description: 'adding a complete test file',
253
- content: `import pytest
254
- from calculator import Calculator
255
-
256
- class TestCalculator:
257
- def test_adds_two_numbers(self):
258
- calculator = Calculator()
259
- result = calculator.add(2, 2)
260
- assert result == 4
261
- `,
262
- },
263
- emptyTestContainer: {
264
- description: 'empty test container',
265
- content: `class TestCalculator:
266
- pass
267
- `,
268
- },
269
- emptyTestContainerWithImports: {
270
- description: 'empty test file with imports',
271
- content: `import pytest
272
- from calculator import Calculator
273
-
274
- class TestCalculator:
275
- pass
276
- `,
277
- },
278
- refactoredTests: {
279
- description: 'refactoring test setup',
280
- content: `import pytest
281
- from calculator import Calculator
282
-
283
- class TestCalculator:
284
- def setup_method(self):
285
- self.calculator = Calculator()
286
-
287
- def test_adds_two_numbers(self):
288
- result = self.calculator.add(2, 2)
289
- assert result == 4
290
-
291
- def test_subtracts_two_numbers(self):
292
- result = self.calculator.subtract(8, 2)
293
- assert result == 6
294
- `,
295
- },
296
- } as const
297
-
298
- // Python implementation modifications
299
- export const implementationModifications = {
300
- empty: {
301
- description: 'file with only a comment',
302
- content: `# calculator.py
303
- `,
304
- },
305
- classStub: {
306
- description: 'creating empty class stub',
307
- content: `class Calculator:
308
- pass
309
- `,
310
- },
311
- methodStub: {
312
- description: 'creating method stub',
313
- content: `class Calculator:
314
- def add(self, a, b):
315
- return None
316
- `,
317
- },
318
- methodStubReturning0: {
319
- description: 'method stub returning 0',
320
- content: `class Calculator:
321
- def add(self, a: int, b: int) -> int:
322
- return 0
323
- `,
324
- },
325
- methodImplementation: {
326
- description: 'implementing method',
327
- content: `class Calculator:
328
- def add(self, a: int, b: int) -> int:
329
- return a + b
330
- `,
331
- },
332
- overEngineered: {
333
- description: 'over-engineering implementation',
334
- content: `import logging
335
- from typing import Union, Optional
336
- from dataclasses import dataclass
337
- from datetime import datetime
338
-
339
- @dataclass
340
- class CalculationResult:
341
- value: float
342
- timestamp: datetime
343
- operation: str
344
-
345
- class Calculator:
346
- def __init__(self):
347
- self.logger = logging.getLogger(__name__)
348
- self.history = []
349
- self._configure_logging()
350
-
351
- def _configure_logging(self):
352
- handler = logging.StreamHandler()
353
- formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
354
- handler.setFormatter(formatter)
355
- self.logger.addHandler(handler)
356
- self.logger.setLevel(logging.DEBUG)
357
-
358
- def _validate_number(self, value: Union[int, float], param_name: str) -> None:
359
- if not isinstance(value, (int, float)):
360
- self.logger.error(f"Invalid {param_name}: {value}")
361
- raise TypeError(f"{param_name} must be a number")
362
- if not (-1e308 < value < 1e308):
363
- self.logger.warning(f"{param_name} is very large: {value}")
364
-
365
- def add(self, a: Union[int, float], b: Union[int, float]) -> float:
366
- self.logger.debug(f"Adding {a} + {b}")
367
-
368
- # Validate inputs
369
- self._validate_number(a, "first argument")
370
- self._validate_number(b, "second argument")
371
-
372
- # Perform calculation
373
- result = a + b
374
-
375
- # Store in history
376
- calc_result = CalculationResult(
377
- value=result,
378
- timestamp=datetime.now(),
379
- operation=f"{a} + {b}"
380
- )
381
- self.history.append(calc_result)
382
-
383
- self.logger.info(f"Addition result: {result}")
384
-
385
- # Check for overflow
386
- if result == float('inf') or result == float('-inf'):
387
- self.logger.warning("Result exceeded maximum value")
388
-
389
- return result
390
- `,
391
- },
392
- completeClass: {
393
- description: 'implementing multiple methods',
394
- content: `class Calculator:
395
- def add(self, a: int, b: int) -> int:
396
- return a + b
397
-
398
- def subtract(self, a: int, b: int) -> int:
399
- return a - b
400
-
401
- def multiply(self, a: int, b: int) -> int:
402
- return a * b
403
-
404
- def divide(self, a: int, b: int) -> float:
405
- if b == 0:
406
- raise ValueError("Cannot divide by zero")
407
- return a / b
408
- `,
409
- },
410
- } as const
411
-
412
- // Todo states (same as TypeScript but with Python context)
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
- // Python refactoring test data
547
- export const refactoringImplementation = {
548
- beforeRefactor: {
549
- description: 'implementation with repetitive code',
550
- content: `class Calculator:
551
- def add(self, a, b):
552
- if not isinstance(a, (int, float)):
553
- raise TypeError("First argument must be a number")
554
- if not isinstance(b, (int, float)):
555
- raise TypeError("Second argument must be a number")
556
- return a + b
557
-
558
- def subtract(self, a, b):
559
- if not isinstance(a, (int, float)):
560
- raise TypeError("First argument must be a number")
561
- if not isinstance(b, (int, float)):
562
- raise TypeError("Second argument must be a number")
563
- return a - b
564
-
565
- def multiply(self, a, b):
566
- if not isinstance(a, (int, float)):
567
- raise TypeError("First argument must be a number")
568
- if not isinstance(b, (int, float)):
569
- raise TypeError("Second argument must be a number")
570
- return a * b`,
571
- },
572
- afterRefactor: {
573
- description: 'implementation after extracting common validation',
574
- content: `class Calculator:
575
- def _validate_numbers(self, a, b):
576
- if not isinstance(a, (int, float)):
577
- raise TypeError("First argument must be a number")
578
- if not isinstance(b, (int, float)):
579
- raise TypeError("Second argument must be a number")
580
-
581
- def add(self, a, b):
582
- self._validate_numbers(a, b)
583
- return a + b
584
-
585
- def subtract(self, a, b):
586
- self._validate_numbers(a, b)
587
- return a - b
588
-
589
- def multiply(self, a, b):
590
- self._validate_numbers(a, b)
591
- return a * b`,
592
- },
593
- }
594
-
595
- export const refactoringTests = {
596
- beforeRefactor: {
597
- description: 'test file with inline assertions',
598
- content: `import pytest
599
- from calculator import Calculator
600
-
601
- class TestCalculator:
602
- def test_adds_two_numbers(self):
603
- calc = Calculator()
604
- assert calc.add(2, 3) == 5
605
- assert calc.add(-1, 1) == 0
606
- assert calc.add(0, 0) == 0
607
-
608
- def test_subtracts_two_numbers(self):
609
- calc = Calculator()
610
- assert calc.subtract(5, 3) == 2
611
- assert calc.subtract(0, 5) == -5
612
- assert calc.subtract(-1, -1) == 0
613
-
614
- def test_multiplies_two_numbers(self):
615
- calc = Calculator()
616
- assert calc.multiply(3, 4) == 12
617
- assert calc.multiply(-2, 3) == -6
618
- assert calc.multiply(0, 5) == 0`,
619
- },
620
- afterRefactor: {
621
- description: 'test file after extracting test setup',
622
- content: `import pytest
623
- from calculator import Calculator
624
-
625
- class TestCalculator:
626
- def setup_method(self):
627
- self.calc = Calculator()
628
-
629
- def test_adds_two_numbers(self):
630
- assert self.calc.add(2, 3) == 5
631
- assert self.calc.add(-1, 1) == 0
632
- assert self.calc.add(0, 0) == 0
633
-
634
- def test_subtracts_two_numbers(self):
635
- assert self.calc.subtract(5, 3) == 2
636
- assert self.calc.subtract(0, 5) == -5
637
- assert self.calc.subtract(-1, -1) == 0
638
-
639
- def test_multiplies_two_numbers(self):
640
- assert self.calc.multiply(3, 4) == 12
641
- assert self.calc.multiply(-2, 3) == -6
642
- assert self.calc.multiply(0, 5) == 0`,
643
- },
644
- }
645
-
646
- export const refactoringTestResults = {
647
- failing: {
648
- description: 'multiple tests failing',
649
- content: JSON.stringify(
650
- {
651
- testModules: [
652
- {
653
- moduleId: TEST_MODULE_ID,
654
- tests: [
655
- {
656
- name: TEST_NAME,
657
- fullName:
658
- 'test_calculator.py::TestCalculator::test_adds_two_numbers',
659
- state: 'failed',
660
- errors: [
661
- {
662
- message: 'assert 4 == 5',
663
- stack:
664
- 'test_calculator.py:7: in test_adds_two_numbers\n assert calc.add(2, 3) == 5\nE assert 4 == 5',
665
- expected: '5',
666
- actual: '4',
667
- },
668
- ],
669
- },
670
- {
671
- name: 'test_subtracts_two_numbers',
672
- fullName:
673
- 'test_calculator.py::TestCalculator::test_subtracts_two_numbers',
674
- state: 'failed',
675
- errors: [
676
- {
677
- message: 'assert 1 == 2',
678
- stack:
679
- 'test_calculator.py:13: in test_subtracts_two_numbers\n assert calc.subtract(5, 3) == 2\nE assert 1 == 2',
680
- expected: '2',
681
- actual: '1',
682
- },
683
- ],
684
- },
685
- {
686
- name: 'test_multiplies_two_numbers',
687
- fullName:
688
- 'test_calculator.py::TestCalculator::test_multiplies_two_numbers',
689
- state: 'failed',
690
- errors: [
691
- {
692
- message: 'assert 11 == 12',
693
- stack:
694
- 'test_calculator.py:19: in test_multiplies_two_numbers\n assert calc.multiply(3, 4) == 12\nE assert 11 == 12',
695
- expected: '12',
696
- actual: '11',
697
- },
698
- ],
699
- },
700
- ],
701
- },
702
- ],
703
- },
704
- null,
705
- 2
706
- ),
707
- },
708
- passing: {
709
- description: 'all tests passing',
710
- content: JSON.stringify(
711
- {
712
- testModules: [
713
- {
714
- moduleId: TEST_MODULE_ID,
715
- tests: [
716
- {
717
- name: TEST_NAME,
718
- fullName:
719
- 'test_calculator.py::TestCalculator::test_adds_two_numbers',
720
- state: 'passed',
721
- errors: [],
722
- },
723
- {
724
- name: 'test_subtracts_two_numbers',
725
- fullName:
726
- 'test_calculator.py::TestCalculator::test_subtracts_two_numbers',
727
- state: 'passed',
728
- errors: [],
729
- },
730
- {
731
- name: 'test_multiplies_two_numbers',
732
- fullName:
733
- 'test_calculator.py::TestCalculator::test_multiplies_two_numbers',
734
- state: 'passed',
735
- errors: [],
736
- },
737
- ],
738
- },
739
- ],
740
- },
741
- null,
742
- 2
743
- ),
744
- },
745
- }