xtrm-tools 2.3.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 (284) hide show
  1. package/README.md +127 -111
  2. package/cli/dist/index.cjs +107 -53
  3. package/cli/dist/index.cjs.map +1 -1
  4. package/cli/package.json +1 -1
  5. package/config/pi/extensions/beads.ts +24 -0
  6. package/hooks/beads-gate-core.mjs +6 -4
  7. package/hooks/beads-memory-gate.mjs +12 -5
  8. package/hooks/hooks.json +126 -0
  9. package/package.json +3 -1
  10. package/skills/test-planning/SKILL.md +208 -0
  11. package/skills/test-planning/evals/evals.json +23 -0
  12. package/skills/using-xtrm/SKILL.md +5 -27
  13. package/project-skills/tdd-guard/.claude/hooks/tdd-guard-pretool-bridge.cjs +0 -103
  14. package/project-skills/tdd-guard/.claude/settings.json +0 -38
  15. package/project-skills/tdd-guard/.claude/skills/using-tdd-guard/SKILL.md +0 -79
  16. package/project-skills/tdd-guard/CLAUDE.md +0 -98
  17. package/project-skills/tdd-guard/CONTRIBUTING.md +0 -38
  18. package/project-skills/tdd-guard/DEVELOPMENT.md +0 -127
  19. package/project-skills/tdd-guard/LICENSE +0 -21
  20. package/project-skills/tdd-guard/README.md +0 -398
  21. package/project-skills/tdd-guard/docs/adr/001-claude-session-subdirectory.md +0 -52
  22. package/project-skills/tdd-guard/docs/adr/002-secure-claude-binary-path.md +0 -56
  23. package/project-skills/tdd-guard/docs/adr/003-remove-configurable-data-directory.md +0 -56
  24. package/project-skills/tdd-guard/docs/adr/004-monorepo-architecture.md +0 -64
  25. package/project-skills/tdd-guard/docs/adr/005-claude-project-dir-support.md +0 -55
  26. package/project-skills/tdd-guard/docs/adr/006-phpunit-separate-repository.md +0 -93
  27. package/project-skills/tdd-guard/docs/adr/007-golangci-lint-path-support.md +0 -83
  28. package/project-skills/tdd-guard/docs/adr/008-storybook-reporter-design.md +0 -182
  29. package/project-skills/tdd-guard/docs/assets/tdd-guard-demo-screenshot.gif +0 -0
  30. package/project-skills/tdd-guard/docs/config-migration.md +0 -143
  31. package/project-skills/tdd-guard/docs/configuration.md +0 -137
  32. package/project-skills/tdd-guard/docs/custom-instructions.md +0 -43
  33. package/project-skills/tdd-guard/docs/enforcement.md +0 -46
  34. package/project-skills/tdd-guard/docs/ignore-patterns.md +0 -81
  35. package/project-skills/tdd-guard/docs/linting.md +0 -109
  36. package/project-skills/tdd-guard/docs/quick-commands.md +0 -52
  37. package/project-skills/tdd-guard/docs/session-management.md +0 -75
  38. package/project-skills/tdd-guard/docs/storybook-vitest-addon.md +0 -120
  39. package/project-skills/tdd-guard/docs/validation-model.md +0 -63
  40. package/project-skills/tdd-guard/eslint.config.mjs +0 -140
  41. package/project-skills/tdd-guard/package-lock.json +0 -16937
  42. package/project-skills/tdd-guard/package.json +0 -102
  43. package/project-skills/tdd-guard/reporters/go/README.md +0 -67
  44. package/project-skills/tdd-guard/reporters/go/cmd/tdd-guard-go/main.go +0 -127
  45. package/project-skills/tdd-guard/reporters/go/cmd/tdd-guard-go/main_test.go +0 -280
  46. package/project-skills/tdd-guard/reporters/go/go.mod +0 -3
  47. package/project-skills/tdd-guard/reporters/go/go.sum +0 -0
  48. package/project-skills/tdd-guard/reporters/go/internal/formatter/formatter.go +0 -126
  49. package/project-skills/tdd-guard/reporters/go/internal/formatter/formatter_test.go +0 -264
  50. package/project-skills/tdd-guard/reporters/go/internal/io/tee_reader.go +0 -26
  51. package/project-skills/tdd-guard/reporters/go/internal/io/tee_reader_test.go +0 -37
  52. package/project-skills/tdd-guard/reporters/go/internal/parser/mixed_reader.go +0 -94
  53. package/project-skills/tdd-guard/reporters/go/internal/parser/mixed_reader_test.go +0 -198
  54. package/project-skills/tdd-guard/reporters/go/internal/parser/parser.go +0 -245
  55. package/project-skills/tdd-guard/reporters/go/internal/parser/parser_test.go +0 -547
  56. package/project-skills/tdd-guard/reporters/go/internal/storage/storage.go +0 -35
  57. package/project-skills/tdd-guard/reporters/go/internal/storage/storage_test.go +0 -113
  58. package/project-skills/tdd-guard/reporters/go/internal/transformer/transformer.go +0 -103
  59. package/project-skills/tdd-guard/reporters/go/internal/transformer/transformer_test.go +0 -303
  60. package/project-skills/tdd-guard/reporters/jest/README.md +0 -102
  61. package/project-skills/tdd-guard/reporters/jest/package.json +0 -38
  62. package/project-skills/tdd-guard/reporters/jest/src/JestReporter.test-data.ts +0 -199
  63. package/project-skills/tdd-guard/reporters/jest/src/JestReporter.test.ts +0 -302
  64. package/project-skills/tdd-guard/reporters/jest/src/JestReporter.ts +0 -201
  65. package/project-skills/tdd-guard/reporters/jest/src/index.ts +0 -4
  66. package/project-skills/tdd-guard/reporters/jest/src/types.ts +0 -42
  67. package/project-skills/tdd-guard/reporters/jest/tsconfig.json +0 -11
  68. package/project-skills/tdd-guard/reporters/phpunit/.php-cs-fixer.php +0 -28
  69. package/project-skills/tdd-guard/reporters/phpunit/README.md +0 -97
  70. package/project-skills/tdd-guard/reporters/phpunit/SYNC_README.md +0 -29
  71. package/project-skills/tdd-guard/reporters/phpunit/composer.json +0 -55
  72. package/project-skills/tdd-guard/reporters/phpunit/phpunit.xml.dist +0 -19
  73. package/project-skills/tdd-guard/reporters/phpunit/psalm.xml +0 -44
  74. package/project-skills/tdd-guard/reporters/phpunit/src/Event/ErroredTestSubscriber.php +0 -28
  75. package/project-skills/tdd-guard/reporters/phpunit/src/Event/FailedTestSubscriber.php +0 -28
  76. package/project-skills/tdd-guard/reporters/phpunit/src/Event/IncompleteTestSubscriber.php +0 -28
  77. package/project-skills/tdd-guard/reporters/phpunit/src/Event/PassedTestSubscriber.php +0 -27
  78. package/project-skills/tdd-guard/reporters/phpunit/src/Event/SkippedTestSubscriber.php +0 -28
  79. package/project-skills/tdd-guard/reporters/phpunit/src/Event/TestRunnerFinishedSubscriber.php +0 -24
  80. package/project-skills/tdd-guard/reporters/phpunit/src/PathValidator.php +0 -88
  81. package/project-skills/tdd-guard/reporters/phpunit/src/Storage.php +0 -26
  82. package/project-skills/tdd-guard/reporters/phpunit/src/TddGuardExtension.php +0 -33
  83. package/project-skills/tdd-guard/reporters/phpunit/src/TddGuardListener.php +0 -158
  84. package/project-skills/tdd-guard/reporters/phpunit/src/TddGuardSubscriber.php +0 -35
  85. package/project-skills/tdd-guard/reporters/phpunit/src/TestResultCollector.php +0 -105
  86. package/project-skills/tdd-guard/reporters/phpunit/tests/PathValidatorTest.php +0 -74
  87. package/project-skills/tdd-guard/reporters/phpunit/tests/TddGuardExtensionFailedTest.php +0 -241
  88. package/project-skills/tdd-guard/reporters/phpunit/tests/TddGuardExtensionTest.php +0 -84
  89. package/project-skills/tdd-guard/reporters/phpunit/tests/TddGuardStorageLocationTest.php +0 -71
  90. package/project-skills/tdd-guard/reporters/pytest/README.md +0 -77
  91. package/project-skills/tdd-guard/reporters/pytest/pyproject.toml +0 -43
  92. package/project-skills/tdd-guard/reporters/pytest/pytest.ini.example +0 -7
  93. package/project-skills/tdd-guard/reporters/pytest/tdd_guard_pytest/__init__.py +0 -1
  94. package/project-skills/tdd-guard/reporters/pytest/tdd_guard_pytest/pytest_reporter.py +0 -134
  95. package/project-skills/tdd-guard/reporters/pytest/tests/__init__.py +0 -1
  96. package/project-skills/tdd-guard/reporters/pytest/tests/conftest.py +0 -3
  97. package/project-skills/tdd-guard/reporters/pytest/tests/helpers.py +0 -293
  98. package/project-skills/tdd-guard/reporters/pytest/tests/test_config_option.py +0 -38
  99. package/project-skills/tdd-guard/reporters/pytest/tests/test_path_validation.py +0 -59
  100. package/project-skills/tdd-guard/reporters/pytest/tests/test_plugin_config.py +0 -32
  101. package/project-skills/tdd-guard/reporters/pytest/tests/test_project_root.py +0 -296
  102. package/project-skills/tdd-guard/reporters/pytest/tests/test_pytest_reporter.py +0 -137
  103. package/project-skills/tdd-guard/reporters/rspec/Gemfile +0 -3
  104. package/project-skills/tdd-guard/reporters/rust/Cargo.lock +0 -458
  105. package/project-skills/tdd-guard/reporters/rust/Cargo.toml +0 -33
  106. package/project-skills/tdd-guard/reporters/rust/Makefile.example +0 -95
  107. package/project-skills/tdd-guard/reporters/rust/README.md +0 -88
  108. package/project-skills/tdd-guard/reporters/rust/src/error_parser.rs +0 -309
  109. package/project-skills/tdd-guard/reporters/rust/src/main.rs +0 -464
  110. package/project-skills/tdd-guard/reporters/rust/src/parser.rs +0 -225
  111. package/project-skills/tdd-guard/reporters/rust/src/transformer.rs +0 -409
  112. package/project-skills/tdd-guard/reporters/storybook/README.md +0 -108
  113. package/project-skills/tdd-guard/reporters/storybook/package-lock.json +0 -9482
  114. package/project-skills/tdd-guard/reporters/storybook/package.json +0 -43
  115. package/project-skills/tdd-guard/reporters/storybook/src/StorybookReporter.test-data.ts +0 -22
  116. package/project-skills/tdd-guard/reporters/storybook/src/StorybookReporter.test.ts +0 -190
  117. package/project-skills/tdd-guard/reporters/storybook/src/StorybookReporter.ts +0 -88
  118. package/project-skills/tdd-guard/reporters/storybook/src/index.ts +0 -12
  119. package/project-skills/tdd-guard/reporters/storybook/src/types.ts +0 -37
  120. package/project-skills/tdd-guard/reporters/storybook/tsconfig.json +0 -11
  121. package/project-skills/tdd-guard/reporters/test/artifacts/go/failing/go.mod +0 -3
  122. package/project-skills/tdd-guard/reporters/test/artifacts/go/failing/single_failing_test.go +0 -13
  123. package/project-skills/tdd-guard/reporters/test/artifacts/go/import/go.mod +0 -3
  124. package/project-skills/tdd-guard/reporters/test/artifacts/go/import/single_import_error_test.go +0 -17
  125. package/project-skills/tdd-guard/reporters/test/artifacts/go/passing/go.mod +0 -3
  126. package/project-skills/tdd-guard/reporters/test/artifacts/go/passing/single_passing_test.go +0 -13
  127. package/project-skills/tdd-guard/reporters/test/artifacts/jest/single-failing.test.js +0 -5
  128. package/project-skills/tdd-guard/reporters/test/artifacts/jest/single-import-error.test.js +0 -8
  129. package/project-skills/tdd-guard/reporters/test/artifacts/jest/single-passing.test.js +0 -5
  130. package/project-skills/tdd-guard/reporters/test/artifacts/phpunit/SingleFailingTest.php +0 -11
  131. package/project-skills/tdd-guard/reporters/test/artifacts/phpunit/SingleImportErrorTest.php +0 -14
  132. package/project-skills/tdd-guard/reporters/test/artifacts/phpunit/SinglePassingTest.php +0 -11
  133. package/project-skills/tdd-guard/reporters/test/artifacts/pytest/test_single_failing.py +0 -3
  134. package/project-skills/tdd-guard/reporters/test/artifacts/pytest/test_single_import_error.py +0 -6
  135. package/project-skills/tdd-guard/reporters/test/artifacts/pytest/test_single_passing.py +0 -3
  136. package/project-skills/tdd-guard/reporters/test/artifacts/rust/failing/Cargo.lock +0 -7
  137. package/project-skills/tdd-guard/reporters/test/artifacts/rust/failing/Cargo.toml +0 -4
  138. package/project-skills/tdd-guard/reporters/test/artifacts/rust/failing/src/lib.rs +0 -14
  139. package/project-skills/tdd-guard/reporters/test/artifacts/rust/import/Cargo.lock +0 -7
  140. package/project-skills/tdd-guard/reporters/test/artifacts/rust/import/Cargo.toml +0 -4
  141. package/project-skills/tdd-guard/reporters/test/artifacts/rust/import/src/lib.rs +0 -13
  142. package/project-skills/tdd-guard/reporters/test/artifacts/rust/passing/Cargo.lock +0 -7
  143. package/project-skills/tdd-guard/reporters/test/artifacts/rust/passing/Cargo.toml +0 -4
  144. package/project-skills/tdd-guard/reporters/test/artifacts/rust/passing/src/lib.rs +0 -14
  145. package/project-skills/tdd-guard/reporters/test/artifacts/storybook/Calculator.js +0 -4
  146. package/project-skills/tdd-guard/reporters/test/artifacts/storybook/single-failing.stories.js +0 -15
  147. package/project-skills/tdd-guard/reporters/test/artifacts/storybook/single-import-error.stories.js +0 -14
  148. package/project-skills/tdd-guard/reporters/test/artifacts/storybook/single-passing.stories.js +0 -15
  149. package/project-skills/tdd-guard/reporters/test/artifacts/vitest/single-failing.test.js +0 -7
  150. package/project-skills/tdd-guard/reporters/test/artifacts/vitest/single-import-error.test.js +0 -9
  151. package/project-skills/tdd-guard/reporters/test/artifacts/vitest/single-passing.test.js +0 -7
  152. package/project-skills/tdd-guard/reporters/test/factories/go.ts +0 -59
  153. package/project-skills/tdd-guard/reporters/test/factories/helpers.ts +0 -48
  154. package/project-skills/tdd-guard/reporters/test/factories/index.ts +0 -7
  155. package/project-skills/tdd-guard/reporters/test/factories/jest.ts +0 -51
  156. package/project-skills/tdd-guard/reporters/test/factories/phpunit.ts +0 -63
  157. package/project-skills/tdd-guard/reporters/test/factories/pytest.ts +0 -41
  158. package/project-skills/tdd-guard/reporters/test/factories/rust.ts +0 -158
  159. package/project-skills/tdd-guard/reporters/test/factories/storybook.ts +0 -198
  160. package/project-skills/tdd-guard/reporters/test/factories/vitest.ts +0 -51
  161. package/project-skills/tdd-guard/reporters/test/reporters.integration.test.ts +0 -735
  162. package/project-skills/tdd-guard/reporters/test/types.ts +0 -28
  163. package/project-skills/tdd-guard/reporters/vitest/README.md +0 -64
  164. package/project-skills/tdd-guard/reporters/vitest/package.json +0 -35
  165. package/project-skills/tdd-guard/reporters/vitest/src/VitestReporter.test-data.ts +0 -85
  166. package/project-skills/tdd-guard/reporters/vitest/src/VitestReporter.test.ts +0 -446
  167. package/project-skills/tdd-guard/reporters/vitest/src/VitestReporter.ts +0 -110
  168. package/project-skills/tdd-guard/reporters/vitest/src/index.ts +0 -4
  169. package/project-skills/tdd-guard/reporters/vitest/src/types.ts +0 -39
  170. package/project-skills/tdd-guard/reporters/vitest/tsconfig.json +0 -11
  171. package/project-skills/tdd-guard/src/cli/buildContext.test.ts +0 -200
  172. package/project-skills/tdd-guard/src/cli/buildContext.ts +0 -48
  173. package/project-skills/tdd-guard/src/cli/tdd-guard.test.ts +0 -159
  174. package/project-skills/tdd-guard/src/cli/tdd-guard.ts +0 -48
  175. package/project-skills/tdd-guard/src/config/Config.test.ts +0 -538
  176. package/project-skills/tdd-guard/src/config/Config.ts +0 -172
  177. package/project-skills/tdd-guard/src/contracts/schemas/guardSchemas.test.ts +0 -58
  178. package/project-skills/tdd-guard/src/contracts/schemas/guardSchemas.ts +0 -8
  179. package/project-skills/tdd-guard/src/contracts/schemas/lintSchemas.test.ts +0 -347
  180. package/project-skills/tdd-guard/src/contracts/schemas/lintSchemas.ts +0 -61
  181. package/project-skills/tdd-guard/src/contracts/schemas/pytestSchemas.test.ts +0 -24
  182. package/project-skills/tdd-guard/src/contracts/schemas/pytestSchemas.ts +0 -7
  183. package/project-skills/tdd-guard/src/contracts/schemas/reporterSchemas.test.ts +0 -377
  184. package/project-skills/tdd-guard/src/contracts/schemas/reporterSchemas.ts +0 -75
  185. package/project-skills/tdd-guard/src/contracts/schemas/toolSchemas.test.ts +0 -563
  186. package/project-skills/tdd-guard/src/contracts/schemas/toolSchemas.ts +0 -140
  187. package/project-skills/tdd-guard/src/contracts/types/ClientType.ts +0 -1
  188. package/project-skills/tdd-guard/src/contracts/types/ConfigOptions.ts +0 -12
  189. package/project-skills/tdd-guard/src/contracts/types/Context.ts +0 -16
  190. package/project-skills/tdd-guard/src/contracts/types/ModelClient.ts +0 -3
  191. package/project-skills/tdd-guard/src/contracts/types/ValidationResult.ts +0 -6
  192. package/project-skills/tdd-guard/src/guard/GuardManager.test.ts +0 -336
  193. package/project-skills/tdd-guard/src/guard/GuardManager.ts +0 -83
  194. package/project-skills/tdd-guard/src/hooks/HookEvents.test.ts +0 -107
  195. package/project-skills/tdd-guard/src/hooks/HookEvents.ts +0 -39
  196. package/project-skills/tdd-guard/src/hooks/fileTypeDetection.ts +0 -16
  197. package/project-skills/tdd-guard/src/hooks/postToolLint.test.ts +0 -327
  198. package/project-skills/tdd-guard/src/hooks/postToolLint.ts +0 -165
  199. package/project-skills/tdd-guard/src/hooks/processHookData.test.ts +0 -465
  200. package/project-skills/tdd-guard/src/hooks/processHookData.ts +0 -203
  201. package/project-skills/tdd-guard/src/hooks/sessionHandler.test.ts +0 -136
  202. package/project-skills/tdd-guard/src/hooks/sessionHandler.ts +0 -31
  203. package/project-skills/tdd-guard/src/hooks/userPromptHandler.test.ts +0 -131
  204. package/project-skills/tdd-guard/src/hooks/userPromptHandler.ts +0 -55
  205. package/project-skills/tdd-guard/src/index.ts +0 -19
  206. package/project-skills/tdd-guard/src/linters/Linter.ts +0 -5
  207. package/project-skills/tdd-guard/src/linters/eslint/ESLint.test.ts +0 -183
  208. package/project-skills/tdd-guard/src/linters/eslint/ESLint.ts +0 -82
  209. package/project-skills/tdd-guard/src/linters/golangci/GolangciLint.test.ts +0 -170
  210. package/project-skills/tdd-guard/src/linters/golangci/GolangciLint.ts +0 -148
  211. package/project-skills/tdd-guard/src/processors/index.ts +0 -1
  212. package/project-skills/tdd-guard/src/processors/lintProcessor.ts +0 -77
  213. package/project-skills/tdd-guard/src/processors/testResults/TestResultsProcessor.test.ts +0 -303
  214. package/project-skills/tdd-guard/src/processors/testResults/TestResultsProcessor.ts +0 -255
  215. package/project-skills/tdd-guard/src/providers/LinterProvider.test.ts +0 -43
  216. package/project-skills/tdd-guard/src/providers/LinterProvider.ts +0 -20
  217. package/project-skills/tdd-guard/src/providers/ModelClientProvider.test.ts +0 -68
  218. package/project-skills/tdd-guard/src/providers/ModelClientProvider.ts +0 -22
  219. package/project-skills/tdd-guard/src/storage/FileStorage.test.ts +0 -76
  220. package/project-skills/tdd-guard/src/storage/FileStorage.ts +0 -108
  221. package/project-skills/tdd-guard/src/storage/MemoryStorage.ts +0 -57
  222. package/project-skills/tdd-guard/src/storage/Storage.test.ts +0 -227
  223. package/project-skills/tdd-guard/src/storage/Storage.ts +0 -17
  224. package/project-skills/tdd-guard/src/validation/context/context.test.ts +0 -364
  225. package/project-skills/tdd-guard/src/validation/context/context.ts +0 -155
  226. package/project-skills/tdd-guard/src/validation/models/AnthropicApi.test.ts +0 -171
  227. package/project-skills/tdd-guard/src/validation/models/AnthropicApi.ts +0 -49
  228. package/project-skills/tdd-guard/src/validation/models/ClaudeAgentSdk.test.ts +0 -167
  229. package/project-skills/tdd-guard/src/validation/models/ClaudeAgentSdk.ts +0 -54
  230. package/project-skills/tdd-guard/src/validation/models/ClaudeCli.test.ts +0 -239
  231. package/project-skills/tdd-guard/src/validation/models/ClaudeCli.ts +0 -57
  232. package/project-skills/tdd-guard/src/validation/prompts/file-types.ts +0 -52
  233. package/project-skills/tdd-guard/src/validation/prompts/operations/edit.ts +0 -58
  234. package/project-skills/tdd-guard/src/validation/prompts/operations/multi-edit.ts +0 -54
  235. package/project-skills/tdd-guard/src/validation/prompts/operations/write.ts +0 -54
  236. package/project-skills/tdd-guard/src/validation/prompts/response.ts +0 -40
  237. package/project-skills/tdd-guard/src/validation/prompts/rules.ts +0 -51
  238. package/project-skills/tdd-guard/src/validation/prompts/system-prompt.ts +0 -10
  239. package/project-skills/tdd-guard/src/validation/prompts/tools/lint-results.ts +0 -15
  240. package/project-skills/tdd-guard/src/validation/prompts/tools/test-output.ts +0 -14
  241. package/project-skills/tdd-guard/src/validation/prompts/tools/todos.ts +0 -9
  242. package/project-skills/tdd-guard/src/validation/validator.test.ts +0 -268
  243. package/project-skills/tdd-guard/src/validation/validator.ts +0 -159
  244. package/project-skills/tdd-guard/test/artifacts/go/.golangci.yml +0 -6
  245. package/project-skills/tdd-guard/test/artifacts/go/with-issues/file-with-issues.go +0 -12
  246. package/project-skills/tdd-guard/test/artifacts/go/with-issues/go.mod +0 -3
  247. package/project-skills/tdd-guard/test/artifacts/go/without-issues/file-without-issues.go +0 -7
  248. package/project-skills/tdd-guard/test/artifacts/go/without-issues/go.mod +0 -3
  249. package/project-skills/tdd-guard/test/artifacts/javascript/eslint.config.js +0 -20
  250. package/project-skills/tdd-guard/test/artifacts/javascript/file-with-issues.js +0 -12
  251. package/project-skills/tdd-guard/test/artifacts/javascript/file-without-issues.js +0 -10
  252. package/project-skills/tdd-guard/test/hooks/fileTypeDetection.test.ts +0 -26
  253. package/project-skills/tdd-guard/test/hooks/processHookData.fileType.test.ts +0 -46
  254. package/project-skills/tdd-guard/test/hooks/processHookData.python.test.ts +0 -68
  255. package/project-skills/tdd-guard/test/integration/test-context.test.ts +0 -66
  256. package/project-skills/tdd-guard/test/integration/validator.core.test.ts +0 -96
  257. package/project-skills/tdd-guard/test/integration/validator.scenarios.test.ts +0 -497
  258. package/project-skills/tdd-guard/test/utils/assertions.ts +0 -29
  259. package/project-skills/tdd-guard/test/utils/factories/contextFactory.ts +0 -30
  260. package/project-skills/tdd-guard/test/utils/factories/editFactory.ts +0 -82
  261. package/project-skills/tdd-guard/test/utils/factories/helpers.test.ts +0 -46
  262. package/project-skills/tdd-guard/test/utils/factories/helpers.ts +0 -46
  263. package/project-skills/tdd-guard/test/utils/factories/lintFactory.ts +0 -352
  264. package/project-skills/tdd-guard/test/utils/factories/modelClientProviderFactory.ts +0 -21
  265. package/project-skills/tdd-guard/test/utils/factories/multiEditFactory.ts +0 -79
  266. package/project-skills/tdd-guard/test/utils/factories/operations.ts +0 -57
  267. package/project-skills/tdd-guard/test/utils/factories/reporterFactory.ts +0 -55
  268. package/project-skills/tdd-guard/test/utils/factories/scenarios/index.ts +0 -22
  269. package/project-skills/tdd-guard/test/utils/factories/scenarios/languages/python.ts +0 -745
  270. package/project-skills/tdd-guard/test/utils/factories/scenarios/languages/typescript.ts +0 -767
  271. package/project-skills/tdd-guard/test/utils/factories/scenarios/types.ts +0 -77
  272. package/project-skills/tdd-guard/test/utils/factories/scenarios/utils.ts +0 -15
  273. package/project-skills/tdd-guard/test/utils/factories/sessionStartFactory.ts +0 -36
  274. package/project-skills/tdd-guard/test/utils/factories/testDefaults.ts +0 -90
  275. package/project-skills/tdd-guard/test/utils/factories/testResultsFactory.ts +0 -234
  276. package/project-skills/tdd-guard/test/utils/factories/todoFactory.ts +0 -99
  277. package/project-skills/tdd-guard/test/utils/factories/userPromptSubmitFactory.ts +0 -39
  278. package/project-skills/tdd-guard/test/utils/factories/writeFactory.ts +0 -70
  279. package/project-skills/tdd-guard/test/utils/index.ts +0 -131
  280. package/project-skills/tdd-guard/tsconfig.build.json +0 -16
  281. package/project-skills/tdd-guard/tsconfig.eslint.json +0 -17
  282. package/project-skills/tdd-guard/tsconfig.json +0 -32
  283. package/project-skills/tdd-guard/tsconfig.node.json +0 -10
  284. package/project-skills/tdd-guard/vitest.config.ts +0 -85
@@ -1,563 +0,0 @@
1
- import { describe, test, expect } from 'vitest'
2
- import {
3
- TodoSchema,
4
- EditSchema,
5
- MultiEditSchema,
6
- WriteSchema,
7
- TodoWriteSchema,
8
- EditOperationSchema,
9
- MultiEditOperationSchema,
10
- WriteOperationSchema,
11
- TodoWriteOperationSchema,
12
- ToolOperationSchema,
13
- FileModificationSchema,
14
- isEditOperation,
15
- isMultiEditOperation,
16
- isWriteOperation,
17
- isTodoWriteOperation,
18
- isFileModification,
19
- UserPromptSubmitSchema,
20
- SessionStartSchema,
21
- } from './toolSchemas'
22
- import { testData } from '@testUtils'
23
-
24
- describe('Tool-specific schemas', () => {
25
- describe('SessionStartSchema', () => {
26
- test.each([
27
- {
28
- description: 'with startup source',
29
- data: testData.sessionStart({ source: 'startup' }),
30
- expectedSuccess: true,
31
- },
32
- {
33
- description: 'with resume source',
34
- data: testData.sessionStart({ source: 'resume' }),
35
- expectedSuccess: true,
36
- },
37
- {
38
- description: 'with clear source',
39
- data: testData.sessionStart({ source: 'clear' }),
40
- expectedSuccess: true,
41
- },
42
- {
43
- description: 'with invalid source',
44
- data: { ...testData.sessionStart(), source: 'invalid' },
45
- expectedSuccess: false,
46
- },
47
- {
48
- description: 'with wrong hook_event_name',
49
- data: { ...testData.sessionStart(), hook_event_name: 'PreToolUse' },
50
- expectedSuccess: false,
51
- },
52
- {
53
- description: 'without source',
54
- data: testData.sessionStartWithout(['source']),
55
- expectedSuccess: false,
56
- },
57
- ])('$description', ({ data, expectedSuccess }) => {
58
- const result = SessionStartSchema.safeParse(data)
59
- expect(result.success).toBe(expectedSuccess)
60
- })
61
- })
62
- describe('UserPromptSubmitSchema', () => {
63
- test.each([
64
- {
65
- description: 'with valid data',
66
- data: testData.userPromptSubmit(),
67
- expectedSuccess: true,
68
- },
69
- {
70
- description: 'with different prompt',
71
- data: testData.userPromptSubmit({ prompt: 'tdd-guard off' }),
72
- expectedSuccess: true,
73
- },
74
- {
75
- description: 'with wrong hook_event_name',
76
- data: testData.userPromptSubmit({ hook_event_name: 'PreToolUse' }),
77
- expectedSuccess: false,
78
- },
79
- {
80
- description: 'without prompt',
81
- data: testData.userPromptSubmitWithout(['prompt']),
82
- expectedSuccess: false,
83
- },
84
- {
85
- description: 'without cwd',
86
- data: testData.userPromptSubmitWithout(['cwd']),
87
- expectedSuccess: false,
88
- },
89
- {
90
- description: 'without session_id',
91
- data: testData.userPromptSubmitWithout(['session_id']),
92
- expectedSuccess: false,
93
- },
94
- {
95
- description: 'without transcript_path',
96
- data: testData.userPromptSubmitWithout(['transcript_path']),
97
- expectedSuccess: false,
98
- },
99
- ])('$description', ({ data, expectedSuccess }) => {
100
- const result = UserPromptSubmitSchema.safeParse(data)
101
- expect(result.success).toBe(expectedSuccess)
102
- })
103
- })
104
-
105
- describe('TodoSchema', () => {
106
- test.each([
107
- {
108
- description: 'without content',
109
- todo: testData.todoWithout(['content']),
110
- expectedSuccess: false,
111
- },
112
- {
113
- description: 'without status',
114
- todo: testData.todoWithout(['status']),
115
- expectedSuccess: false,
116
- },
117
- {
118
- description: 'without priority',
119
- todo: testData.todoWithout(['priority']),
120
- expectedSuccess: false,
121
- },
122
- {
123
- description: 'without id',
124
- todo: testData.todoWithout(['id']),
125
- expectedSuccess: false,
126
- },
127
- {
128
- description: 'with everything',
129
- todo: testData.todo(),
130
- expectedSuccess: true,
131
- },
132
- ])('$description', ({ todo, expectedSuccess }) => {
133
- const result = TodoSchema.safeParse(todo)
134
- expect(result.success).toBe(expectedSuccess)
135
-
136
- if (expectedSuccess && result.success) {
137
- expect(result.data).toEqual(todo)
138
- }
139
- })
140
- })
141
-
142
- describe('EditSchema', () => {
143
- test.each([
144
- {
145
- description: 'without file_path',
146
- edit: testData.editWithout(['file_path']),
147
- expectedSuccess: false,
148
- },
149
- {
150
- description: 'without old_string',
151
- edit: testData.editWithout(['old_string']),
152
- expectedSuccess: false,
153
- },
154
- {
155
- description: 'without new_string',
156
- edit: testData.editWithout(['new_string']),
157
- expectedSuccess: false,
158
- },
159
- {
160
- description: 'with everything',
161
- edit: testData.edit(),
162
- expectedSuccess: true,
163
- },
164
- {
165
- description: 'with replace_all true',
166
- edit: testData.edit({ replace_all: true }),
167
- expectedSuccess: true,
168
- },
169
- ])('$description', ({ edit, expectedSuccess }) => {
170
- const result = EditSchema.safeParse(edit)
171
- expect(result.success).toBe(expectedSuccess)
172
-
173
- if (expectedSuccess && result.success) {
174
- expect(result.data).toEqual(edit)
175
- }
176
- })
177
- })
178
-
179
- describe('MultiEditSchema', () => {
180
- test.each([
181
- {
182
- description: 'with valid multi-edit',
183
- multiEdit: testData.multiEdit(),
184
- expectedSuccess: true,
185
- },
186
- {
187
- description: 'without file_path',
188
- multiEdit: testData.multiEditWithout(['file_path']),
189
- expectedSuccess: false,
190
- },
191
- {
192
- description: 'without edits',
193
- multiEdit: testData.multiEditWithout(['edits']),
194
- expectedSuccess: false,
195
- },
196
- {
197
- description: 'with empty edits array',
198
- multiEdit: testData.multiEdit({ edits: [] }),
199
- expectedSuccess: false,
200
- },
201
- ])('$description', ({ multiEdit, expectedSuccess }) => {
202
- const result = MultiEditSchema.safeParse(multiEdit)
203
- expect(result.success).toBe(expectedSuccess)
204
-
205
- if (expectedSuccess && result.success) {
206
- expect(result.data).toEqual(multiEdit)
207
- }
208
- })
209
- })
210
-
211
- describe('WriteSchema', () => {
212
- test.each([
213
- {
214
- description: 'with valid write',
215
- write: testData.write(),
216
- expectedSuccess: true,
217
- },
218
- {
219
- description: 'without file_path',
220
- write: testData.writeWithout(['file_path']),
221
- expectedSuccess: false,
222
- },
223
- {
224
- description: 'without content',
225
- write: testData.writeWithout(['content']),
226
- expectedSuccess: false,
227
- },
228
- ])('$description', ({ write, expectedSuccess }) => {
229
- const result = WriteSchema.safeParse(write)
230
- expect(result.success).toBe(expectedSuccess)
231
-
232
- if (expectedSuccess && result.success) {
233
- expect(result.data).toEqual(write)
234
- }
235
- })
236
- })
237
-
238
- describe('TodoWriteSchema', () => {
239
- test.each([
240
- {
241
- description: 'with valid todo write',
242
- todoWrite: testData.todoWrite(),
243
- expectedSuccess: true,
244
- },
245
- {
246
- description: 'with empty todos array',
247
- todoWrite: testData.todoWrite({ todos: [] }),
248
- expectedSuccess: false,
249
- },
250
- {
251
- description: 'without todos',
252
- todoWrite: testData.todoWriteWithout(['todos']),
253
- expectedSuccess: false,
254
- },
255
- ])('$description', ({ todoWrite, expectedSuccess }) => {
256
- const result = TodoWriteSchema.safeParse(todoWrite)
257
- expect(result.success).toBe(expectedSuccess)
258
-
259
- if (expectedSuccess && result.success) {
260
- expect(result.data).toEqual(todoWrite)
261
- }
262
- })
263
- })
264
-
265
- describe('EditOperationSchema', () => {
266
- test.each([
267
- {
268
- description: 'with valid edit operation',
269
- editOperation: testData.editOperation(),
270
- expectedSuccess: true,
271
- },
272
- {
273
- description: 'with wrong tool_name',
274
- editOperation: testData.invalidEditOperation({ tool_name: 'Write' }),
275
- expectedSuccess: false,
276
- },
277
- {
278
- description: 'without tool_input',
279
- editOperation: testData.editOperationWithout(['tool_input']),
280
- expectedSuccess: false,
281
- },
282
- ])('$description', ({ editOperation, expectedSuccess }) => {
283
- const result = EditOperationSchema.safeParse(editOperation)
284
- expect(result.success).toBe(expectedSuccess)
285
-
286
- if (expectedSuccess && result.success) {
287
- expect(result.data).toEqual(editOperation)
288
- }
289
- })
290
- })
291
-
292
- describe('MultiEditOperationSchema', () => {
293
- test.each([
294
- {
295
- description: 'with valid multi-edit operation',
296
- multiEditOperation: testData.multiEditOperation(),
297
- expectedSuccess: true,
298
- },
299
- {
300
- description: 'with wrong tool_name',
301
- multiEditOperation: testData.invalidMultiEditOperation({
302
- tool_name: 'Edit',
303
- }),
304
- expectedSuccess: false,
305
- },
306
- {
307
- description: 'without tool_input',
308
- multiEditOperation: testData.multiEditOperationWithout(['tool_input']),
309
- expectedSuccess: false,
310
- },
311
- ])('$description', ({ multiEditOperation, expectedSuccess }) => {
312
- const result = MultiEditOperationSchema.safeParse(multiEditOperation)
313
- expect(result.success).toBe(expectedSuccess)
314
-
315
- if (expectedSuccess && result.success) {
316
- expect(result.data).toEqual(multiEditOperation)
317
- }
318
- })
319
- })
320
-
321
- describe('WriteOperationSchema', () => {
322
- test.each([
323
- {
324
- description: 'with valid write operation',
325
- writeOperation: testData.writeOperation(),
326
- expectedSuccess: true,
327
- },
328
- {
329
- description: 'with wrong tool_name',
330
- writeOperation: testData.invalidWriteOperation({ tool_name: 'Edit' }),
331
- expectedSuccess: false,
332
- },
333
- {
334
- description: 'without tool_input',
335
- writeOperation: testData.writeOperationWithout(['tool_input']),
336
- expectedSuccess: false,
337
- },
338
- ])('$description', ({ writeOperation, expectedSuccess }) => {
339
- const result = WriteOperationSchema.safeParse(writeOperation)
340
- expect(result.success).toBe(expectedSuccess)
341
-
342
- if (expectedSuccess && result.success) {
343
- expect(result.data).toEqual(writeOperation)
344
- }
345
- })
346
- })
347
-
348
- describe('TodoWriteOperationSchema', () => {
349
- test.each([
350
- {
351
- description: 'with valid todo write operation',
352
- todoWriteOperation: testData.todoWriteOperation(),
353
- expectedSuccess: true,
354
- },
355
- {
356
- description: 'with wrong tool_name',
357
- todoWriteOperation: testData.invalidTodoWriteOperation({
358
- tool_name: 'Edit',
359
- }),
360
- expectedSuccess: false,
361
- },
362
- {
363
- description: 'without tool_input',
364
- todoWriteOperation: testData.todoWriteOperationWithout(['tool_input']),
365
- expectedSuccess: false,
366
- },
367
- ])('$description', ({ todoWriteOperation, expectedSuccess }) => {
368
- const result = TodoWriteOperationSchema.safeParse(todoWriteOperation)
369
- expect(result.success).toBe(expectedSuccess)
370
-
371
- if (expectedSuccess && result.success) {
372
- expect(result.data).toEqual(todoWriteOperation)
373
- }
374
- })
375
- })
376
-
377
- describe('ToolOperationSchema', () => {
378
- test.each([
379
- {
380
- description: 'with valid Edit operation',
381
- toolOperation: testData.editOperation(),
382
- expectedSuccess: true,
383
- },
384
- {
385
- description: 'with valid MultiEdit operation',
386
- toolOperation: testData.multiEditOperation(),
387
- expectedSuccess: true,
388
- },
389
- {
390
- description: 'with valid Write operation',
391
- toolOperation: testData.writeOperation(),
392
- expectedSuccess: true,
393
- },
394
- {
395
- description: 'with valid TodoWrite operation',
396
- toolOperation: testData.todoWriteOperation(),
397
- expectedSuccess: true,
398
- },
399
- {
400
- description: 'with unknown tool_name',
401
- toolOperation: { tool_name: 'Unknown', tool_input: {} },
402
- expectedSuccess: false,
403
- },
404
- ])('$description', ({ toolOperation, expectedSuccess }) => {
405
- const result = ToolOperationSchema.safeParse(toolOperation)
406
- expect(result.success).toBe(expectedSuccess)
407
-
408
- if (expectedSuccess && result.success) {
409
- expect(result.data).toEqual(toolOperation)
410
- }
411
- })
412
- })
413
-
414
- describe('FileModificationSchema', () => {
415
- test.each([
416
- {
417
- description: 'with valid Edit operation',
418
- fileModification: testData.editOperation(),
419
- expectedSuccess: true,
420
- },
421
- {
422
- description: 'with valid MultiEdit operation',
423
- fileModification: testData.multiEditOperation(),
424
- expectedSuccess: true,
425
- },
426
- {
427
- description: 'with valid Write operation',
428
- fileModification: testData.writeOperation(),
429
- expectedSuccess: true,
430
- },
431
- {
432
- description: 'with TodoWrite operation (should reject)',
433
- fileModification: testData.todoWriteOperation(),
434
- expectedSuccess: false,
435
- },
436
- ])('$description', ({ fileModification, expectedSuccess }) => {
437
- const result = FileModificationSchema.safeParse(fileModification)
438
- expect(result.success).toBe(expectedSuccess)
439
-
440
- if (expectedSuccess && result.success) {
441
- expect(result.data).toEqual(fileModification)
442
- }
443
- })
444
- })
445
- })
446
-
447
- describe('Type guards', () => {
448
- // Create test data for all operation types
449
- const editOperation = testData.editOperation()
450
- const multiEditOperation = testData.multiEditOperation()
451
- const writeOperation = testData.writeOperation()
452
- const todoWriteOperation = testData.todoWriteOperation()
453
-
454
- describe('isEditOperation', () => {
455
- test.each([
456
- { operation: editOperation, operationType: 'Edit', expected: true },
457
- {
458
- operation: multiEditOperation,
459
- operationType: 'MultiEdit',
460
- expected: false,
461
- },
462
- { operation: writeOperation, operationType: 'Write', expected: false },
463
- {
464
- operation: todoWriteOperation,
465
- operationType: 'TodoWrite',
466
- expected: false,
467
- },
468
- ])(
469
- 'returns $expected for $operationType operation',
470
- ({ operation, expected }) => {
471
- expect(isEditOperation(operation)).toBe(expected)
472
- }
473
- )
474
- })
475
-
476
- describe('isMultiEditOperation', () => {
477
- test.each([
478
- { operation: editOperation, operationType: 'Edit', expected: false },
479
- {
480
- operation: multiEditOperation,
481
- operationType: 'MultiEdit',
482
- expected: true,
483
- },
484
- { operation: writeOperation, operationType: 'Write', expected: false },
485
- {
486
- operation: todoWriteOperation,
487
- operationType: 'TodoWrite',
488
- expected: false,
489
- },
490
- ])(
491
- 'returns $expected for $operationType operation',
492
- ({ operation, expected }) => {
493
- expect(isMultiEditOperation(operation)).toBe(expected)
494
- }
495
- )
496
- })
497
-
498
- describe('isWriteOperation', () => {
499
- test.each([
500
- { operation: editOperation, operationType: 'Edit', expected: false },
501
- {
502
- operation: multiEditOperation,
503
- operationType: 'MultiEdit',
504
- expected: false,
505
- },
506
- { operation: writeOperation, operationType: 'Write', expected: true },
507
- {
508
- operation: todoWriteOperation,
509
- operationType: 'TodoWrite',
510
- expected: false,
511
- },
512
- ])(
513
- 'returns $expected for $operationType operation',
514
- ({ operation, expected }) => {
515
- expect(isWriteOperation(operation)).toBe(expected)
516
- }
517
- )
518
- })
519
-
520
- describe('isTodoWriteOperation', () => {
521
- test.each([
522
- { operation: editOperation, operationType: 'Edit', expected: false },
523
- {
524
- operation: multiEditOperation,
525
- operationType: 'MultiEdit',
526
- expected: false,
527
- },
528
- { operation: writeOperation, operationType: 'Write', expected: false },
529
- {
530
- operation: todoWriteOperation,
531
- operationType: 'TodoWrite',
532
- expected: true,
533
- },
534
- ])(
535
- 'returns $expected for $operationType operation',
536
- ({ operation, expected }) => {
537
- expect(isTodoWriteOperation(operation)).toBe(expected)
538
- }
539
- )
540
- })
541
-
542
- describe('isFileModification', () => {
543
- test.each([
544
- { operation: editOperation, operationType: 'Edit', expected: true },
545
- {
546
- operation: multiEditOperation,
547
- operationType: 'MultiEdit',
548
- expected: true,
549
- },
550
- { operation: writeOperation, operationType: 'Write', expected: true },
551
- {
552
- operation: todoWriteOperation,
553
- operationType: 'TodoWrite',
554
- expected: false,
555
- },
556
- ])(
557
- 'returns $expected for $operationType operation',
558
- ({ operation, expected }) => {
559
- expect(isFileModification(operation)).toBe(expected)
560
- }
561
- )
562
- })
563
- })
@@ -1,140 +0,0 @@
1
- import { z } from 'zod'
2
-
3
- // Base Hook Context
4
- export const HookContextSchema = z.object({
5
- session_id: z.string(),
6
- transcript_path: z.string(),
7
- hook_event_name: z.string(),
8
- })
9
-
10
- export const HookDataSchema = HookContextSchema.extend({
11
- tool_name: z.string(),
12
- tool_input: z.unknown(),
13
- })
14
-
15
- export type HookData = z.infer<typeof HookDataSchema>
16
-
17
- // UserPromptSubmit Schema
18
- export const UserPromptSubmitSchema = HookContextSchema.extend({
19
- prompt: z.string(),
20
- cwd: z.string(),
21
- }).refine((data) => data.hook_event_name === 'UserPromptSubmit')
22
-
23
- export type UserPromptSubmit = z.infer<typeof UserPromptSubmitSchema>
24
-
25
- // SessionStart Schema
26
- export const SessionStartSchema = HookContextSchema.extend({
27
- hook_event_name: z.literal('SessionStart'),
28
- source: z.enum(['startup', 'resume', 'clear']),
29
- })
30
-
31
- export type SessionStart = z.infer<typeof SessionStartSchema>
32
-
33
- // Tool Input Schemas
34
- export const TodoSchema = z.object({
35
- content: z.string(),
36
- status: z.enum(['pending', 'in_progress', 'completed']),
37
- priority: z.enum(['high', 'medium', 'low']),
38
- id: z.string(),
39
- })
40
-
41
- export type Todo = z.infer<typeof TodoSchema>
42
-
43
- export const EditSchema = z.object({
44
- file_path: z.string(),
45
- old_string: z.string(),
46
- new_string: z.string(),
47
- replace_all: z.boolean().optional(),
48
- })
49
-
50
- export type Edit = z.infer<typeof EditSchema>
51
-
52
- const EditEntrySchema = z.object({
53
- old_string: z.string(),
54
- new_string: z.string(),
55
- replace_all: z.boolean().optional(),
56
- })
57
-
58
- export const MultiEditSchema = z.object({
59
- file_path: z.string(),
60
- edits: z.array(EditEntrySchema).min(1),
61
- })
62
-
63
- export type MultiEdit = z.infer<typeof MultiEditSchema>
64
-
65
- export const WriteSchema = z.object({
66
- file_path: z.string(),
67
- content: z.string(),
68
- })
69
-
70
- export type Write = z.infer<typeof WriteSchema>
71
-
72
- export const TodoWriteSchema = z.object({
73
- todos: z.array(TodoSchema).min(1),
74
- })
75
-
76
- export type TodoWrite = z.infer<typeof TodoWriteSchema>
77
-
78
- // Tool Operation Schemas
79
- export const EditOperationSchema = HookContextSchema.extend({
80
- tool_name: z.literal('Edit'),
81
- tool_input: EditSchema,
82
- })
83
-
84
- export const MultiEditOperationSchema = HookContextSchema.extend({
85
- tool_name: z.literal('MultiEdit'),
86
- tool_input: MultiEditSchema,
87
- })
88
-
89
- export const WriteOperationSchema = HookContextSchema.extend({
90
- tool_name: z.literal('Write'),
91
- tool_input: WriteSchema,
92
- })
93
-
94
- export const TodoWriteOperationSchema = HookContextSchema.extend({
95
- tool_name: z.literal('TodoWrite'),
96
- tool_input: TodoWriteSchema,
97
- })
98
-
99
- export type EditOperation = z.infer<typeof EditOperationSchema>
100
- export type MultiEditOperation = z.infer<typeof MultiEditOperationSchema>
101
- export type WriteOperation = z.infer<typeof WriteOperationSchema>
102
- export type TodoWriteOperation = z.infer<typeof TodoWriteOperationSchema>
103
-
104
- // Discriminated Unions
105
- export const ToolOperationSchema = z.discriminatedUnion('tool_name', [
106
- EditOperationSchema,
107
- MultiEditOperationSchema,
108
- WriteOperationSchema,
109
- TodoWriteOperationSchema,
110
- ])
111
-
112
- export type ToolOperation = z.infer<typeof ToolOperationSchema>
113
-
114
- export const FileModificationSchema = z.discriminatedUnion('tool_name', [
115
- EditOperationSchema,
116
- MultiEditOperationSchema,
117
- WriteOperationSchema,
118
- ])
119
-
120
- export type FileModification = z.infer<typeof FileModificationSchema>
121
-
122
- // Type Guards
123
- export const isEditOperation = (op: ToolOperation): op is EditOperation =>
124
- op.tool_name === 'Edit'
125
-
126
- export const isMultiEditOperation = (
127
- op: ToolOperation
128
- ): op is MultiEditOperation => op.tool_name === 'MultiEdit'
129
-
130
- export const isWriteOperation = (op: ToolOperation): op is WriteOperation =>
131
- op.tool_name === 'Write'
132
-
133
- export const isTodoWriteOperation = (
134
- op: ToolOperation
135
- ): op is TodoWriteOperation => op.tool_name === 'TodoWrite'
136
-
137
- export const isFileModification = (op: ToolOperation): op is FileModification =>
138
- op.tool_name === 'Edit' ||
139
- op.tool_name === 'MultiEdit' ||
140
- op.tool_name === 'Write'
@@ -1 +0,0 @@
1
- export type ClientType = 'api' | 'cli' | 'sdk'
@@ -1,12 +0,0 @@
1
- import { ClientType } from './ClientType'
2
-
3
- export type ConfigOptions = {
4
- mode?: 'production' | 'test'
5
- projectRoot?: string
6
- useSystemClaude?: boolean
7
- anthropicApiKey?: string
8
- modelType?: string
9
- modelVersion?: string
10
- linterType?: string
11
- validationClient?: ClientType
12
- }