pactkit 2.4.0__tar.gz → 2.4.1__tar.gz

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 (971) hide show
  1. {pactkit-2.4.0 → pactkit-2.4.1}/.github/workflows/pactkit.yml +1 -1
  2. pactkit-2.4.1/.github/workflows/publish.yml +61 -0
  3. {pactkit-2.4.0 → pactkit-2.4.1}/.opencode/pactkit.yaml +1 -1
  4. {pactkit-2.4.0 → pactkit-2.4.1}/CHANGELOG.md +13 -0
  5. {pactkit-2.4.0 → pactkit-2.4.1}/PKG-INFO +3 -3
  6. {pactkit-2.4.0 → pactkit-2.4.1}/pyproject.toml +3 -3
  7. {pactkit-2.4.0 → pactkit-2.4.1}/src/pactkit/__init__.py +1 -1
  8. {pactkit-2.4.0 → pactkit-2.4.1}/src/pactkit/generators/deployer.py +2 -1
  9. {pactkit-2.4.0 → pactkit-2.4.1}/src/pactkit/skills/board.py +54 -1
  10. {pactkit-2.4.0 → pactkit-2.4.1}/src/pactkit/skills/visualize.py +101 -15
  11. pactkit-2.4.1/tests/unit/test_story_slim049.py +200 -0
  12. pactkit-2.4.0/.opencode/.gitignore +0 -4
  13. pactkit-2.4.0/.opencode/bun.lock +0 -18
  14. pactkit-2.4.0/.opencode/memory/.gitignore +0 -1
  15. pactkit-2.4.0/.opencode/memory/project.md +0 -7
  16. pactkit-2.4.0/.opencode/node_modules/@opencode-ai/plugin/package.json +0 -34
  17. pactkit-2.4.0/.opencode/node_modules/@opencode-ai/sdk/package.json +0 -52
  18. pactkit-2.4.0/.opencode/node_modules/zod/LICENSE +0 -21
  19. pactkit-2.4.0/.opencode/node_modules/zod/README.md +0 -208
  20. pactkit-2.4.0/.opencode/node_modules/zod/index.cjs +0 -33
  21. pactkit-2.4.0/.opencode/node_modules/zod/index.d.cts +0 -4
  22. pactkit-2.4.0/.opencode/node_modules/zod/index.d.ts +0 -4
  23. pactkit-2.4.0/.opencode/node_modules/zod/index.js +0 -4
  24. pactkit-2.4.0/.opencode/node_modules/zod/locales/index.cjs +0 -17
  25. pactkit-2.4.0/.opencode/node_modules/zod/locales/index.d.cts +0 -1
  26. pactkit-2.4.0/.opencode/node_modules/zod/locales/index.d.ts +0 -1
  27. pactkit-2.4.0/.opencode/node_modules/zod/locales/index.js +0 -1
  28. pactkit-2.4.0/.opencode/node_modules/zod/locales/package.json +0 -6
  29. pactkit-2.4.0/.opencode/node_modules/zod/mini/index.cjs +0 -17
  30. pactkit-2.4.0/.opencode/node_modules/zod/mini/index.d.cts +0 -1
  31. pactkit-2.4.0/.opencode/node_modules/zod/mini/index.d.ts +0 -1
  32. pactkit-2.4.0/.opencode/node_modules/zod/mini/index.js +0 -1
  33. pactkit-2.4.0/.opencode/node_modules/zod/mini/package.json +0 -6
  34. pactkit-2.4.0/.opencode/node_modules/zod/package.json +0 -135
  35. pactkit-2.4.0/.opencode/node_modules/zod/src/index.ts +0 -4
  36. pactkit-2.4.0/.opencode/node_modules/zod/src/locales/index.ts +0 -1
  37. pactkit-2.4.0/.opencode/node_modules/zod/src/mini/index.ts +0 -1
  38. pactkit-2.4.0/.opencode/node_modules/zod/src/v3/ZodError.ts +0 -330
  39. pactkit-2.4.0/.opencode/node_modules/zod/src/v3/benchmarks/datetime.ts +0 -58
  40. pactkit-2.4.0/.opencode/node_modules/zod/src/v3/benchmarks/discriminatedUnion.ts +0 -80
  41. pactkit-2.4.0/.opencode/node_modules/zod/src/v3/benchmarks/index.ts +0 -59
  42. pactkit-2.4.0/.opencode/node_modules/zod/src/v3/benchmarks/ipv4.ts +0 -57
  43. pactkit-2.4.0/.opencode/node_modules/zod/src/v3/benchmarks/object.ts +0 -69
  44. pactkit-2.4.0/.opencode/node_modules/zod/src/v3/benchmarks/primitives.ts +0 -162
  45. pactkit-2.4.0/.opencode/node_modules/zod/src/v3/benchmarks/realworld.ts +0 -63
  46. pactkit-2.4.0/.opencode/node_modules/zod/src/v3/benchmarks/string.ts +0 -55
  47. pactkit-2.4.0/.opencode/node_modules/zod/src/v3/benchmarks/union.ts +0 -80
  48. pactkit-2.4.0/.opencode/node_modules/zod/src/v3/errors.ts +0 -13
  49. pactkit-2.4.0/.opencode/node_modules/zod/src/v3/external.ts +0 -6
  50. pactkit-2.4.0/.opencode/node_modules/zod/src/v3/helpers/enumUtil.ts +0 -17
  51. pactkit-2.4.0/.opencode/node_modules/zod/src/v3/helpers/errorUtil.ts +0 -8
  52. pactkit-2.4.0/.opencode/node_modules/zod/src/v3/helpers/parseUtil.ts +0 -176
  53. pactkit-2.4.0/.opencode/node_modules/zod/src/v3/helpers/partialUtil.ts +0 -34
  54. pactkit-2.4.0/.opencode/node_modules/zod/src/v3/helpers/typeAliases.ts +0 -2
  55. pactkit-2.4.0/.opencode/node_modules/zod/src/v3/helpers/util.ts +0 -224
  56. pactkit-2.4.0/.opencode/node_modules/zod/src/v3/index.ts +0 -4
  57. pactkit-2.4.0/.opencode/node_modules/zod/src/v3/locales/en.ts +0 -124
  58. pactkit-2.4.0/.opencode/node_modules/zod/src/v3/standard-schema.ts +0 -113
  59. pactkit-2.4.0/.opencode/node_modules/zod/src/v3/tests/Mocker.ts +0 -54
  60. pactkit-2.4.0/.opencode/node_modules/zod/src/v3/tests/all-errors.test.ts +0 -157
  61. pactkit-2.4.0/.opencode/node_modules/zod/src/v3/tests/anyunknown.test.ts +0 -28
  62. pactkit-2.4.0/.opencode/node_modules/zod/src/v3/tests/array.test.ts +0 -71
  63. pactkit-2.4.0/.opencode/node_modules/zod/src/v3/tests/async-parsing.test.ts +0 -388
  64. pactkit-2.4.0/.opencode/node_modules/zod/src/v3/tests/async-refinements.test.ts +0 -46
  65. pactkit-2.4.0/.opencode/node_modules/zod/src/v3/tests/base.test.ts +0 -29
  66. pactkit-2.4.0/.opencode/node_modules/zod/src/v3/tests/bigint.test.ts +0 -55
  67. pactkit-2.4.0/.opencode/node_modules/zod/src/v3/tests/branded.test.ts +0 -53
  68. pactkit-2.4.0/.opencode/node_modules/zod/src/v3/tests/catch.test.ts +0 -220
  69. pactkit-2.4.0/.opencode/node_modules/zod/src/v3/tests/coerce.test.ts +0 -133
  70. pactkit-2.4.0/.opencode/node_modules/zod/src/v3/tests/complex.test.ts +0 -56
  71. pactkit-2.4.0/.opencode/node_modules/zod/src/v3/tests/custom.test.ts +0 -31
  72. pactkit-2.4.0/.opencode/node_modules/zod/src/v3/tests/date.test.ts +0 -32
  73. pactkit-2.4.0/.opencode/node_modules/zod/src/v3/tests/deepmasking.test.ts +0 -186
  74. pactkit-2.4.0/.opencode/node_modules/zod/src/v3/tests/default.test.ts +0 -112
  75. pactkit-2.4.0/.opencode/node_modules/zod/src/v3/tests/description.test.ts +0 -33
  76. pactkit-2.4.0/.opencode/node_modules/zod/src/v3/tests/discriminated-unions.test.ts +0 -315
  77. pactkit-2.4.0/.opencode/node_modules/zod/src/v3/tests/enum.test.ts +0 -80
  78. pactkit-2.4.0/.opencode/node_modules/zod/src/v3/tests/error.test.ts +0 -551
  79. pactkit-2.4.0/.opencode/node_modules/zod/src/v3/tests/firstparty.test.ts +0 -87
  80. pactkit-2.4.0/.opencode/node_modules/zod/src/v3/tests/firstpartyschematypes.test.ts +0 -21
  81. pactkit-2.4.0/.opencode/node_modules/zod/src/v3/tests/function.test.ts +0 -257
  82. pactkit-2.4.0/.opencode/node_modules/zod/src/v3/tests/generics.test.ts +0 -48
  83. pactkit-2.4.0/.opencode/node_modules/zod/src/v3/tests/instanceof.test.ts +0 -37
  84. pactkit-2.4.0/.opencode/node_modules/zod/src/v3/tests/intersection.test.ts +0 -110
  85. pactkit-2.4.0/.opencode/node_modules/zod/src/v3/tests/language-server.source.ts +0 -76
  86. pactkit-2.4.0/.opencode/node_modules/zod/src/v3/tests/language-server.test.ts +0 -207
  87. pactkit-2.4.0/.opencode/node_modules/zod/src/v3/tests/literal.test.ts +0 -36
  88. pactkit-2.4.0/.opencode/node_modules/zod/src/v3/tests/map.test.ts +0 -110
  89. pactkit-2.4.0/.opencode/node_modules/zod/src/v3/tests/masking.test.ts +0 -4
  90. pactkit-2.4.0/.opencode/node_modules/zod/src/v3/tests/mocker.test.ts +0 -19
  91. pactkit-2.4.0/.opencode/node_modules/zod/src/v3/tests/nan.test.ts +0 -21
  92. pactkit-2.4.0/.opencode/node_modules/zod/src/v3/tests/nativeEnum.test.ts +0 -87
  93. pactkit-2.4.0/.opencode/node_modules/zod/src/v3/tests/nullable.test.ts +0 -42
  94. pactkit-2.4.0/.opencode/node_modules/zod/src/v3/tests/number.test.ts +0 -176
  95. pactkit-2.4.0/.opencode/node_modules/zod/src/v3/tests/object-augmentation.test.ts +0 -29
  96. pactkit-2.4.0/.opencode/node_modules/zod/src/v3/tests/object-in-es5-env.test.ts +0 -29
  97. pactkit-2.4.0/.opencode/node_modules/zod/src/v3/tests/object.test.ts +0 -434
  98. pactkit-2.4.0/.opencode/node_modules/zod/src/v3/tests/optional.test.ts +0 -42
  99. pactkit-2.4.0/.opencode/node_modules/zod/src/v3/tests/parseUtil.test.ts +0 -23
  100. pactkit-2.4.0/.opencode/node_modules/zod/src/v3/tests/parser.test.ts +0 -41
  101. pactkit-2.4.0/.opencode/node_modules/zod/src/v3/tests/partials.test.ts +0 -243
  102. pactkit-2.4.0/.opencode/node_modules/zod/src/v3/tests/pickomit.test.ts +0 -111
  103. pactkit-2.4.0/.opencode/node_modules/zod/src/v3/tests/pipeline.test.ts +0 -29
  104. pactkit-2.4.0/.opencode/node_modules/zod/src/v3/tests/preprocess.test.ts +0 -186
  105. pactkit-2.4.0/.opencode/node_modules/zod/src/v3/tests/primitive.test.ts +0 -440
  106. pactkit-2.4.0/.opencode/node_modules/zod/src/v3/tests/promise.test.ts +0 -90
  107. pactkit-2.4.0/.opencode/node_modules/zod/src/v3/tests/readonly.test.ts +0 -194
  108. pactkit-2.4.0/.opencode/node_modules/zod/src/v3/tests/record.test.ts +0 -171
  109. pactkit-2.4.0/.opencode/node_modules/zod/src/v3/tests/recursive.test.ts +0 -197
  110. pactkit-2.4.0/.opencode/node_modules/zod/src/v3/tests/refine.test.ts +0 -313
  111. pactkit-2.4.0/.opencode/node_modules/zod/src/v3/tests/safeparse.test.ts +0 -27
  112. pactkit-2.4.0/.opencode/node_modules/zod/src/v3/tests/set.test.ts +0 -142
  113. pactkit-2.4.0/.opencode/node_modules/zod/src/v3/tests/standard-schema.test.ts +0 -83
  114. pactkit-2.4.0/.opencode/node_modules/zod/src/v3/tests/string.test.ts +0 -916
  115. pactkit-2.4.0/.opencode/node_modules/zod/src/v3/tests/transformer.test.ts +0 -233
  116. pactkit-2.4.0/.opencode/node_modules/zod/src/v3/tests/tuple.test.ts +0 -90
  117. pactkit-2.4.0/.opencode/node_modules/zod/src/v3/tests/unions.test.ts +0 -57
  118. pactkit-2.4.0/.opencode/node_modules/zod/src/v3/tests/validations.test.ts +0 -133
  119. pactkit-2.4.0/.opencode/node_modules/zod/src/v3/tests/void.test.ts +0 -15
  120. pactkit-2.4.0/.opencode/node_modules/zod/src/v3/types.ts +0 -5138
  121. pactkit-2.4.0/.opencode/node_modules/zod/src/v4/classic/checks.ts +0 -31
  122. pactkit-2.4.0/.opencode/node_modules/zod/src/v4/classic/coerce.ts +0 -27
  123. pactkit-2.4.0/.opencode/node_modules/zod/src/v4/classic/compat.ts +0 -70
  124. pactkit-2.4.0/.opencode/node_modules/zod/src/v4/classic/errors.ts +0 -82
  125. pactkit-2.4.0/.opencode/node_modules/zod/src/v4/classic/external.ts +0 -50
  126. pactkit-2.4.0/.opencode/node_modules/zod/src/v4/classic/index.ts +0 -5
  127. pactkit-2.4.0/.opencode/node_modules/zod/src/v4/classic/iso.ts +0 -90
  128. pactkit-2.4.0/.opencode/node_modules/zod/src/v4/classic/parse.ts +0 -82
  129. pactkit-2.4.0/.opencode/node_modules/zod/src/v4/classic/schemas.ts +0 -2205
  130. pactkit-2.4.0/.opencode/node_modules/zod/src/v4/classic/tests/anyunknown.test.ts +0 -26
  131. pactkit-2.4.0/.opencode/node_modules/zod/src/v4/classic/tests/array.test.ts +0 -264
  132. pactkit-2.4.0/.opencode/node_modules/zod/src/v4/classic/tests/assignability.test.ts +0 -210
  133. pactkit-2.4.0/.opencode/node_modules/zod/src/v4/classic/tests/async-parsing.test.ts +0 -381
  134. pactkit-2.4.0/.opencode/node_modules/zod/src/v4/classic/tests/async-refinements.test.ts +0 -68
  135. pactkit-2.4.0/.opencode/node_modules/zod/src/v4/classic/tests/base.test.ts +0 -7
  136. pactkit-2.4.0/.opencode/node_modules/zod/src/v4/classic/tests/bigint.test.ts +0 -54
  137. pactkit-2.4.0/.opencode/node_modules/zod/src/v4/classic/tests/brand.test.ts +0 -63
  138. pactkit-2.4.0/.opencode/node_modules/zod/src/v4/classic/tests/catch.test.ts +0 -276
  139. pactkit-2.4.0/.opencode/node_modules/zod/src/v4/classic/tests/coalesce.test.ts +0 -20
  140. pactkit-2.4.0/.opencode/node_modules/zod/src/v4/classic/tests/codec-examples.test.ts +0 -573
  141. pactkit-2.4.0/.opencode/node_modules/zod/src/v4/classic/tests/codec.test.ts +0 -562
  142. pactkit-2.4.0/.opencode/node_modules/zod/src/v4/classic/tests/coerce.test.ts +0 -160
  143. pactkit-2.4.0/.opencode/node_modules/zod/src/v4/classic/tests/continuability.test.ts +0 -352
  144. pactkit-2.4.0/.opencode/node_modules/zod/src/v4/classic/tests/custom.test.ts +0 -40
  145. pactkit-2.4.0/.opencode/node_modules/zod/src/v4/classic/tests/date.test.ts +0 -31
  146. pactkit-2.4.0/.opencode/node_modules/zod/src/v4/classic/tests/datetime.test.ts +0 -302
  147. pactkit-2.4.0/.opencode/node_modules/zod/src/v4/classic/tests/default.test.ts +0 -365
  148. pactkit-2.4.0/.opencode/node_modules/zod/src/v4/classic/tests/description.test.ts +0 -32
  149. pactkit-2.4.0/.opencode/node_modules/zod/src/v4/classic/tests/discriminated-unions.test.ts +0 -661
  150. pactkit-2.4.0/.opencode/node_modules/zod/src/v4/classic/tests/enum.test.ts +0 -285
  151. pactkit-2.4.0/.opencode/node_modules/zod/src/v4/classic/tests/error-utils.test.ts +0 -595
  152. pactkit-2.4.0/.opencode/node_modules/zod/src/v4/classic/tests/error.test.ts +0 -711
  153. pactkit-2.4.0/.opencode/node_modules/zod/src/v4/classic/tests/file.test.ts +0 -96
  154. pactkit-2.4.0/.opencode/node_modules/zod/src/v4/classic/tests/firstparty.test.ts +0 -179
  155. pactkit-2.4.0/.opencode/node_modules/zod/src/v4/classic/tests/function.test.ts +0 -308
  156. pactkit-2.4.0/.opencode/node_modules/zod/src/v4/classic/tests/generics.test.ts +0 -72
  157. pactkit-2.4.0/.opencode/node_modules/zod/src/v4/classic/tests/hash.test.ts +0 -68
  158. pactkit-2.4.0/.opencode/node_modules/zod/src/v4/classic/tests/index.test.ts +0 -844
  159. pactkit-2.4.0/.opencode/node_modules/zod/src/v4/classic/tests/instanceof.test.ts +0 -34
  160. pactkit-2.4.0/.opencode/node_modules/zod/src/v4/classic/tests/intersection.test.ts +0 -171
  161. pactkit-2.4.0/.opencode/node_modules/zod/src/v4/classic/tests/json.test.ts +0 -108
  162. pactkit-2.4.0/.opencode/node_modules/zod/src/v4/classic/tests/lazy.test.ts +0 -227
  163. pactkit-2.4.0/.opencode/node_modules/zod/src/v4/classic/tests/literal.test.ts +0 -117
  164. pactkit-2.4.0/.opencode/node_modules/zod/src/v4/classic/tests/map.test.ts +0 -196
  165. pactkit-2.4.0/.opencode/node_modules/zod/src/v4/classic/tests/nan.test.ts +0 -21
  166. pactkit-2.4.0/.opencode/node_modules/zod/src/v4/classic/tests/nested-refine.test.ts +0 -168
  167. pactkit-2.4.0/.opencode/node_modules/zod/src/v4/classic/tests/nonoptional.test.ts +0 -101
  168. pactkit-2.4.0/.opencode/node_modules/zod/src/v4/classic/tests/nullable.test.ts +0 -22
  169. pactkit-2.4.0/.opencode/node_modules/zod/src/v4/classic/tests/number.test.ts +0 -270
  170. pactkit-2.4.0/.opencode/node_modules/zod/src/v4/classic/tests/object.test.ts +0 -609
  171. pactkit-2.4.0/.opencode/node_modules/zod/src/v4/classic/tests/optional.test.ts +0 -136
  172. pactkit-2.4.0/.opencode/node_modules/zod/src/v4/classic/tests/partial.test.ts +0 -340
  173. pactkit-2.4.0/.opencode/node_modules/zod/src/v4/classic/tests/pickomit.test.ts +0 -127
  174. pactkit-2.4.0/.opencode/node_modules/zod/src/v4/classic/tests/pipe.test.ts +0 -101
  175. pactkit-2.4.0/.opencode/node_modules/zod/src/v4/classic/tests/prefault.test.ts +0 -74
  176. pactkit-2.4.0/.opencode/node_modules/zod/src/v4/classic/tests/preprocess.test.ts +0 -282
  177. pactkit-2.4.0/.opencode/node_modules/zod/src/v4/classic/tests/primitive.test.ts +0 -175
  178. pactkit-2.4.0/.opencode/node_modules/zod/src/v4/classic/tests/promise.test.ts +0 -81
  179. pactkit-2.4.0/.opencode/node_modules/zod/src/v4/classic/tests/prototypes.test.ts +0 -23
  180. pactkit-2.4.0/.opencode/node_modules/zod/src/v4/classic/tests/readonly.test.ts +0 -252
  181. pactkit-2.4.0/.opencode/node_modules/zod/src/v4/classic/tests/record.test.ts +0 -356
  182. pactkit-2.4.0/.opencode/node_modules/zod/src/v4/classic/tests/recursive-types.test.ts +0 -539
  183. pactkit-2.4.0/.opencode/node_modules/zod/src/v4/classic/tests/refine.test.ts +0 -605
  184. pactkit-2.4.0/.opencode/node_modules/zod/src/v4/classic/tests/registries.test.ts +0 -204
  185. pactkit-2.4.0/.opencode/node_modules/zod/src/v4/classic/tests/set.test.ts +0 -181
  186. pactkit-2.4.0/.opencode/node_modules/zod/src/v4/classic/tests/standard-schema.test.ts +0 -57
  187. pactkit-2.4.0/.opencode/node_modules/zod/src/v4/classic/tests/string-formats.test.ts +0 -125
  188. pactkit-2.4.0/.opencode/node_modules/zod/src/v4/classic/tests/string.test.ts +0 -1080
  189. pactkit-2.4.0/.opencode/node_modules/zod/src/v4/classic/tests/stringbool.test.ts +0 -106
  190. pactkit-2.4.0/.opencode/node_modules/zod/src/v4/classic/tests/template-literal.test.ts +0 -763
  191. pactkit-2.4.0/.opencode/node_modules/zod/src/v4/classic/tests/to-json-schema.test.ts +0 -2622
  192. pactkit-2.4.0/.opencode/node_modules/zod/src/v4/classic/tests/transform.test.ts +0 -361
  193. pactkit-2.4.0/.opencode/node_modules/zod/src/v4/classic/tests/tuple.test.ts +0 -163
  194. pactkit-2.4.0/.opencode/node_modules/zod/src/v4/classic/tests/union.test.ts +0 -181
  195. pactkit-2.4.0/.opencode/node_modules/zod/src/v4/classic/tests/validations.test.ts +0 -283
  196. pactkit-2.4.0/.opencode/node_modules/zod/src/v4/classic/tests/void.test.ts +0 -12
  197. pactkit-2.4.0/.opencode/node_modules/zod/src/v4/core/api.ts +0 -1621
  198. pactkit-2.4.0/.opencode/node_modules/zod/src/v4/core/checks.ts +0 -1287
  199. pactkit-2.4.0/.opencode/node_modules/zod/src/v4/core/config.ts +0 -15
  200. pactkit-2.4.0/.opencode/node_modules/zod/src/v4/core/core.ts +0 -115
  201. pactkit-2.4.0/.opencode/node_modules/zod/src/v4/core/doc.ts +0 -44
  202. pactkit-2.4.0/.opencode/node_modules/zod/src/v4/core/errors.ts +0 -423
  203. pactkit-2.4.0/.opencode/node_modules/zod/src/v4/core/index.ts +0 -14
  204. pactkit-2.4.0/.opencode/node_modules/zod/src/v4/core/json-schema.ts +0 -147
  205. pactkit-2.4.0/.opencode/node_modules/zod/src/v4/core/parse.ts +0 -195
  206. pactkit-2.4.0/.opencode/node_modules/zod/src/v4/core/regexes.ts +0 -177
  207. pactkit-2.4.0/.opencode/node_modules/zod/src/v4/core/registries.ts +0 -97
  208. pactkit-2.4.0/.opencode/node_modules/zod/src/v4/core/schemas.ts +0 -4303
  209. pactkit-2.4.0/.opencode/node_modules/zod/src/v4/core/standard-schema.ts +0 -64
  210. pactkit-2.4.0/.opencode/node_modules/zod/src/v4/core/tests/extend.test.ts +0 -18
  211. pactkit-2.4.0/.opencode/node_modules/zod/src/v4/core/tests/index.test.ts +0 -46
  212. pactkit-2.4.0/.opencode/node_modules/zod/src/v4/core/tests/locales/be.test.ts +0 -124
  213. pactkit-2.4.0/.opencode/node_modules/zod/src/v4/core/tests/locales/en.test.ts +0 -22
  214. pactkit-2.4.0/.opencode/node_modules/zod/src/v4/core/tests/locales/es.test.ts +0 -181
  215. pactkit-2.4.0/.opencode/node_modules/zod/src/v4/core/tests/locales/ru.test.ts +0 -128
  216. pactkit-2.4.0/.opencode/node_modules/zod/src/v4/core/tests/locales/tr.test.ts +0 -69
  217. pactkit-2.4.0/.opencode/node_modules/zod/src/v4/core/to-json-schema.ts +0 -1044
  218. pactkit-2.4.0/.opencode/node_modules/zod/src/v4/core/util.ts +0 -910
  219. pactkit-2.4.0/.opencode/node_modules/zod/src/v4/core/versions.ts +0 -5
  220. pactkit-2.4.0/.opencode/node_modules/zod/src/v4/core/zsf.ts +0 -323
  221. pactkit-2.4.0/.opencode/node_modules/zod/src/v4/index.ts +0 -4
  222. pactkit-2.4.0/.opencode/node_modules/zod/src/v4/locales/ar.ts +0 -125
  223. pactkit-2.4.0/.opencode/node_modules/zod/src/v4/locales/az.ts +0 -121
  224. pactkit-2.4.0/.opencode/node_modules/zod/src/v4/locales/be.ts +0 -184
  225. pactkit-2.4.0/.opencode/node_modules/zod/src/v4/locales/bg.ts +0 -136
  226. pactkit-2.4.0/.opencode/node_modules/zod/src/v4/locales/ca.ts +0 -127
  227. pactkit-2.4.0/.opencode/node_modules/zod/src/v4/locales/cs.ts +0 -142
  228. pactkit-2.4.0/.opencode/node_modules/zod/src/v4/locales/da.ts +0 -141
  229. pactkit-2.4.0/.opencode/node_modules/zod/src/v4/locales/de.ts +0 -124
  230. pactkit-2.4.0/.opencode/node_modules/zod/src/v4/locales/en.ts +0 -127
  231. pactkit-2.4.0/.opencode/node_modules/zod/src/v4/locales/eo.ts +0 -125
  232. pactkit-2.4.0/.opencode/node_modules/zod/src/v4/locales/es.ts +0 -159
  233. pactkit-2.4.0/.opencode/node_modules/zod/src/v4/locales/fa.ts +0 -134
  234. pactkit-2.4.0/.opencode/node_modules/zod/src/v4/locales/fi.ts +0 -131
  235. pactkit-2.4.0/.opencode/node_modules/zod/src/v4/locales/fr-CA.ts +0 -126
  236. pactkit-2.4.0/.opencode/node_modules/zod/src/v4/locales/fr.ts +0 -124
  237. pactkit-2.4.0/.opencode/node_modules/zod/src/v4/locales/he.ts +0 -125
  238. pactkit-2.4.0/.opencode/node_modules/zod/src/v4/locales/hu.ts +0 -126
  239. pactkit-2.4.0/.opencode/node_modules/zod/src/v4/locales/id.ts +0 -125
  240. pactkit-2.4.0/.opencode/node_modules/zod/src/v4/locales/index.ts +0 -46
  241. pactkit-2.4.0/.opencode/node_modules/zod/src/v4/locales/is.ts +0 -127
  242. pactkit-2.4.0/.opencode/node_modules/zod/src/v4/locales/it.ts +0 -125
  243. pactkit-2.4.0/.opencode/node_modules/zod/src/v4/locales/ja.ts +0 -122
  244. pactkit-2.4.0/.opencode/node_modules/zod/src/v4/locales/ka.ts +0 -138
  245. pactkit-2.4.0/.opencode/node_modules/zod/src/v4/locales/kh.ts +0 -7
  246. pactkit-2.4.0/.opencode/node_modules/zod/src/v4/locales/km.ts +0 -126
  247. pactkit-2.4.0/.opencode/node_modules/zod/src/v4/locales/ko.ts +0 -131
  248. pactkit-2.4.0/.opencode/node_modules/zod/src/v4/locales/lt.ts +0 -265
  249. pactkit-2.4.0/.opencode/node_modules/zod/src/v4/locales/mk.ts +0 -127
  250. pactkit-2.4.0/.opencode/node_modules/zod/src/v4/locales/ms.ts +0 -124
  251. pactkit-2.4.0/.opencode/node_modules/zod/src/v4/locales/nl.ts +0 -126
  252. pactkit-2.4.0/.opencode/node_modules/zod/src/v4/locales/no.ts +0 -124
  253. pactkit-2.4.0/.opencode/node_modules/zod/src/v4/locales/ota.ts +0 -125
  254. pactkit-2.4.0/.opencode/node_modules/zod/src/v4/locales/pl.ts +0 -126
  255. pactkit-2.4.0/.opencode/node_modules/zod/src/v4/locales/ps.ts +0 -133
  256. pactkit-2.4.0/.opencode/node_modules/zod/src/v4/locales/pt.ts +0 -123
  257. pactkit-2.4.0/.opencode/node_modules/zod/src/v4/locales/ru.ts +0 -184
  258. pactkit-2.4.0/.opencode/node_modules/zod/src/v4/locales/sl.ts +0 -126
  259. pactkit-2.4.0/.opencode/node_modules/zod/src/v4/locales/sv.ts +0 -127
  260. pactkit-2.4.0/.opencode/node_modules/zod/src/v4/locales/ta.ts +0 -125
  261. pactkit-2.4.0/.opencode/node_modules/zod/src/v4/locales/th.ts +0 -126
  262. pactkit-2.4.0/.opencode/node_modules/zod/src/v4/locales/tr.ts +0 -121
  263. pactkit-2.4.0/.opencode/node_modules/zod/src/v4/locales/ua.ts +0 -7
  264. pactkit-2.4.0/.opencode/node_modules/zod/src/v4/locales/uk.ts +0 -126
  265. pactkit-2.4.0/.opencode/node_modules/zod/src/v4/locales/ur.ts +0 -126
  266. pactkit-2.4.0/.opencode/node_modules/zod/src/v4/locales/vi.ts +0 -125
  267. pactkit-2.4.0/.opencode/node_modules/zod/src/v4/locales/yo.ts +0 -131
  268. pactkit-2.4.0/.opencode/node_modules/zod/src/v4/locales/zh-CN.ts +0 -123
  269. pactkit-2.4.0/.opencode/node_modules/zod/src/v4/locales/zh-TW.ts +0 -125
  270. pactkit-2.4.0/.opencode/node_modules/zod/src/v4/mini/checks.ts +0 -32
  271. pactkit-2.4.0/.opencode/node_modules/zod/src/v4/mini/coerce.ts +0 -22
  272. pactkit-2.4.0/.opencode/node_modules/zod/src/v4/mini/external.ts +0 -40
  273. pactkit-2.4.0/.opencode/node_modules/zod/src/v4/mini/index.ts +0 -3
  274. pactkit-2.4.0/.opencode/node_modules/zod/src/v4/mini/iso.ts +0 -62
  275. pactkit-2.4.0/.opencode/node_modules/zod/src/v4/mini/parse.ts +0 -14
  276. pactkit-2.4.0/.opencode/node_modules/zod/src/v4/mini/schemas.ts +0 -1739
  277. pactkit-2.4.0/.opencode/node_modules/zod/src/v4/mini/tests/assignability.test.ts +0 -129
  278. pactkit-2.4.0/.opencode/node_modules/zod/src/v4/mini/tests/brand.test.ts +0 -51
  279. pactkit-2.4.0/.opencode/node_modules/zod/src/v4/mini/tests/checks.test.ts +0 -144
  280. pactkit-2.4.0/.opencode/node_modules/zod/src/v4/mini/tests/codec.test.ts +0 -529
  281. pactkit-2.4.0/.opencode/node_modules/zod/src/v4/mini/tests/computed.test.ts +0 -36
  282. pactkit-2.4.0/.opencode/node_modules/zod/src/v4/mini/tests/error.test.ts +0 -22
  283. pactkit-2.4.0/.opencode/node_modules/zod/src/v4/mini/tests/functions.test.ts +0 -43
  284. pactkit-2.4.0/.opencode/node_modules/zod/src/v4/mini/tests/index.test.ts +0 -899
  285. pactkit-2.4.0/.opencode/node_modules/zod/src/v4/mini/tests/number.test.ts +0 -95
  286. pactkit-2.4.0/.opencode/node_modules/zod/src/v4/mini/tests/object.test.ts +0 -200
  287. pactkit-2.4.0/.opencode/node_modules/zod/src/v4/mini/tests/prototypes.test.ts +0 -43
  288. pactkit-2.4.0/.opencode/node_modules/zod/src/v4/mini/tests/recursive-types.test.ts +0 -275
  289. pactkit-2.4.0/.opencode/node_modules/zod/src/v4/mini/tests/string.test.ts +0 -315
  290. pactkit-2.4.0/.opencode/node_modules/zod/src/v4-mini/index.ts +0 -1
  291. pactkit-2.4.0/.opencode/node_modules/zod/v3/ZodError.cjs +0 -138
  292. pactkit-2.4.0/.opencode/node_modules/zod/v3/ZodError.d.cts +0 -164
  293. pactkit-2.4.0/.opencode/node_modules/zod/v3/ZodError.d.ts +0 -164
  294. pactkit-2.4.0/.opencode/node_modules/zod/v3/ZodError.js +0 -133
  295. pactkit-2.4.0/.opencode/node_modules/zod/v3/errors.cjs +0 -17
  296. pactkit-2.4.0/.opencode/node_modules/zod/v3/errors.d.cts +0 -5
  297. pactkit-2.4.0/.opencode/node_modules/zod/v3/errors.d.ts +0 -5
  298. pactkit-2.4.0/.opencode/node_modules/zod/v3/errors.js +0 -9
  299. pactkit-2.4.0/.opencode/node_modules/zod/v3/external.cjs +0 -22
  300. pactkit-2.4.0/.opencode/node_modules/zod/v3/external.d.cts +0 -6
  301. pactkit-2.4.0/.opencode/node_modules/zod/v3/external.d.ts +0 -6
  302. pactkit-2.4.0/.opencode/node_modules/zod/v3/external.js +0 -6
  303. pactkit-2.4.0/.opencode/node_modules/zod/v3/helpers/enumUtil.cjs +0 -2
  304. pactkit-2.4.0/.opencode/node_modules/zod/v3/helpers/enumUtil.d.cts +0 -8
  305. pactkit-2.4.0/.opencode/node_modules/zod/v3/helpers/enumUtil.d.ts +0 -8
  306. pactkit-2.4.0/.opencode/node_modules/zod/v3/helpers/enumUtil.js +0 -1
  307. pactkit-2.4.0/.opencode/node_modules/zod/v3/helpers/errorUtil.cjs +0 -9
  308. pactkit-2.4.0/.opencode/node_modules/zod/v3/helpers/errorUtil.d.cts +0 -9
  309. pactkit-2.4.0/.opencode/node_modules/zod/v3/helpers/errorUtil.d.ts +0 -9
  310. pactkit-2.4.0/.opencode/node_modules/zod/v3/helpers/errorUtil.js +0 -6
  311. pactkit-2.4.0/.opencode/node_modules/zod/v3/helpers/parseUtil.cjs +0 -124
  312. pactkit-2.4.0/.opencode/node_modules/zod/v3/helpers/parseUtil.d.cts +0 -78
  313. pactkit-2.4.0/.opencode/node_modules/zod/v3/helpers/parseUtil.d.ts +0 -78
  314. pactkit-2.4.0/.opencode/node_modules/zod/v3/helpers/parseUtil.js +0 -109
  315. pactkit-2.4.0/.opencode/node_modules/zod/v3/helpers/partialUtil.cjs +0 -2
  316. pactkit-2.4.0/.opencode/node_modules/zod/v3/helpers/partialUtil.d.cts +0 -8
  317. pactkit-2.4.0/.opencode/node_modules/zod/v3/helpers/partialUtil.d.ts +0 -8
  318. pactkit-2.4.0/.opencode/node_modules/zod/v3/helpers/partialUtil.js +0 -1
  319. pactkit-2.4.0/.opencode/node_modules/zod/v3/helpers/typeAliases.cjs +0 -2
  320. pactkit-2.4.0/.opencode/node_modules/zod/v3/helpers/typeAliases.d.cts +0 -2
  321. pactkit-2.4.0/.opencode/node_modules/zod/v3/helpers/typeAliases.d.ts +0 -2
  322. pactkit-2.4.0/.opencode/node_modules/zod/v3/helpers/typeAliases.js +0 -1
  323. pactkit-2.4.0/.opencode/node_modules/zod/v3/helpers/util.cjs +0 -137
  324. pactkit-2.4.0/.opencode/node_modules/zod/v3/helpers/util.d.cts +0 -85
  325. pactkit-2.4.0/.opencode/node_modules/zod/v3/helpers/util.d.ts +0 -85
  326. pactkit-2.4.0/.opencode/node_modules/zod/v3/helpers/util.js +0 -133
  327. pactkit-2.4.0/.opencode/node_modules/zod/v3/index.cjs +0 -33
  328. pactkit-2.4.0/.opencode/node_modules/zod/v3/index.d.cts +0 -4
  329. pactkit-2.4.0/.opencode/node_modules/zod/v3/index.d.ts +0 -4
  330. pactkit-2.4.0/.opencode/node_modules/zod/v3/index.js +0 -4
  331. pactkit-2.4.0/.opencode/node_modules/zod/v3/locales/en.cjs +0 -112
  332. pactkit-2.4.0/.opencode/node_modules/zod/v3/locales/en.d.cts +0 -3
  333. pactkit-2.4.0/.opencode/node_modules/zod/v3/locales/en.d.ts +0 -3
  334. pactkit-2.4.0/.opencode/node_modules/zod/v3/locales/en.js +0 -109
  335. pactkit-2.4.0/.opencode/node_modules/zod/v3/package.json +0 -6
  336. pactkit-2.4.0/.opencode/node_modules/zod/v3/standard-schema.cjs +0 -2
  337. pactkit-2.4.0/.opencode/node_modules/zod/v3/standard-schema.d.cts +0 -102
  338. pactkit-2.4.0/.opencode/node_modules/zod/v3/standard-schema.d.ts +0 -102
  339. pactkit-2.4.0/.opencode/node_modules/zod/v3/standard-schema.js +0 -1
  340. pactkit-2.4.0/.opencode/node_modules/zod/v3/types.cjs +0 -3777
  341. pactkit-2.4.0/.opencode/node_modules/zod/v3/types.d.cts +0 -1034
  342. pactkit-2.4.0/.opencode/node_modules/zod/v3/types.d.ts +0 -1034
  343. pactkit-2.4.0/.opencode/node_modules/zod/v3/types.js +0 -3695
  344. pactkit-2.4.0/.opencode/node_modules/zod/v4/classic/checks.cjs +0 -32
  345. pactkit-2.4.0/.opencode/node_modules/zod/v4/classic/checks.d.cts +0 -1
  346. pactkit-2.4.0/.opencode/node_modules/zod/v4/classic/checks.d.ts +0 -1
  347. pactkit-2.4.0/.opencode/node_modules/zod/v4/classic/checks.js +0 -1
  348. pactkit-2.4.0/.opencode/node_modules/zod/v4/classic/coerce.cjs +0 -47
  349. pactkit-2.4.0/.opencode/node_modules/zod/v4/classic/coerce.d.cts +0 -17
  350. pactkit-2.4.0/.opencode/node_modules/zod/v4/classic/coerce.d.ts +0 -17
  351. pactkit-2.4.0/.opencode/node_modules/zod/v4/classic/coerce.js +0 -17
  352. pactkit-2.4.0/.opencode/node_modules/zod/v4/classic/compat.cjs +0 -61
  353. pactkit-2.4.0/.opencode/node_modules/zod/v4/classic/compat.d.cts +0 -50
  354. pactkit-2.4.0/.opencode/node_modules/zod/v4/classic/compat.d.ts +0 -50
  355. pactkit-2.4.0/.opencode/node_modules/zod/v4/classic/compat.js +0 -31
  356. pactkit-2.4.0/.opencode/node_modules/zod/v4/classic/errors.cjs +0 -74
  357. pactkit-2.4.0/.opencode/node_modules/zod/v4/classic/errors.d.cts +0 -30
  358. pactkit-2.4.0/.opencode/node_modules/zod/v4/classic/errors.d.ts +0 -30
  359. pactkit-2.4.0/.opencode/node_modules/zod/v4/classic/errors.js +0 -48
  360. pactkit-2.4.0/.opencode/node_modules/zod/v4/classic/external.cjs +0 -70
  361. pactkit-2.4.0/.opencode/node_modules/zod/v4/classic/external.d.cts +0 -13
  362. pactkit-2.4.0/.opencode/node_modules/zod/v4/classic/external.d.ts +0 -13
  363. pactkit-2.4.0/.opencode/node_modules/zod/v4/classic/external.js +0 -18
  364. pactkit-2.4.0/.opencode/node_modules/zod/v4/classic/index.cjs +0 -33
  365. pactkit-2.4.0/.opencode/node_modules/zod/v4/classic/index.d.cts +0 -4
  366. pactkit-2.4.0/.opencode/node_modules/zod/v4/classic/index.d.ts +0 -4
  367. pactkit-2.4.0/.opencode/node_modules/zod/v4/classic/index.js +0 -4
  368. pactkit-2.4.0/.opencode/node_modules/zod/v4/classic/iso.cjs +0 -60
  369. pactkit-2.4.0/.opencode/node_modules/zod/v4/classic/iso.d.cts +0 -22
  370. pactkit-2.4.0/.opencode/node_modules/zod/v4/classic/iso.d.ts +0 -22
  371. pactkit-2.4.0/.opencode/node_modules/zod/v4/classic/iso.js +0 -30
  372. pactkit-2.4.0/.opencode/node_modules/zod/v4/classic/package.json +0 -6
  373. pactkit-2.4.0/.opencode/node_modules/zod/v4/classic/parse.cjs +0 -41
  374. pactkit-2.4.0/.opencode/node_modules/zod/v4/classic/parse.d.cts +0 -31
  375. pactkit-2.4.0/.opencode/node_modules/zod/v4/classic/parse.d.ts +0 -31
  376. pactkit-2.4.0/.opencode/node_modules/zod/v4/classic/parse.js +0 -15
  377. pactkit-2.4.0/.opencode/node_modules/zod/v4/classic/schemas.cjs +0 -1161
  378. pactkit-2.4.0/.opencode/node_modules/zod/v4/classic/schemas.d.cts +0 -673
  379. pactkit-2.4.0/.opencode/node_modules/zod/v4/classic/schemas.d.ts +0 -673
  380. pactkit-2.4.0/.opencode/node_modules/zod/v4/classic/schemas.js +0 -1050
  381. pactkit-2.4.0/.opencode/node_modules/zod/v4/core/api.cjs +0 -1060
  382. pactkit-2.4.0/.opencode/node_modules/zod/v4/core/api.d.cts +0 -295
  383. pactkit-2.4.0/.opencode/node_modules/zod/v4/core/api.d.ts +0 -295
  384. pactkit-2.4.0/.opencode/node_modules/zod/v4/core/api.js +0 -925
  385. pactkit-2.4.0/.opencode/node_modules/zod/v4/core/checks.cjs +0 -595
  386. pactkit-2.4.0/.opencode/node_modules/zod/v4/core/checks.d.cts +0 -278
  387. pactkit-2.4.0/.opencode/node_modules/zod/v4/core/checks.d.ts +0 -278
  388. pactkit-2.4.0/.opencode/node_modules/zod/v4/core/checks.js +0 -569
  389. pactkit-2.4.0/.opencode/node_modules/zod/v4/core/core.cjs +0 -74
  390. pactkit-2.4.0/.opencode/node_modules/zod/v4/core/core.d.cts +0 -52
  391. pactkit-2.4.0/.opencode/node_modules/zod/v4/core/core.d.ts +0 -52
  392. pactkit-2.4.0/.opencode/node_modules/zod/v4/core/core.js +0 -67
  393. pactkit-2.4.0/.opencode/node_modules/zod/v4/core/doc.cjs +0 -39
  394. pactkit-2.4.0/.opencode/node_modules/zod/v4/core/doc.d.cts +0 -14
  395. pactkit-2.4.0/.opencode/node_modules/zod/v4/core/doc.d.ts +0 -14
  396. pactkit-2.4.0/.opencode/node_modules/zod/v4/core/doc.js +0 -35
  397. pactkit-2.4.0/.opencode/node_modules/zod/v4/core/errors.cjs +0 -221
  398. pactkit-2.4.0/.opencode/node_modules/zod/v4/core/errors.d.cts +0 -210
  399. pactkit-2.4.0/.opencode/node_modules/zod/v4/core/errors.d.ts +0 -210
  400. pactkit-2.4.0/.opencode/node_modules/zod/v4/core/errors.js +0 -190
  401. pactkit-2.4.0/.opencode/node_modules/zod/v4/core/index.cjs +0 -43
  402. pactkit-2.4.0/.opencode/node_modules/zod/v4/core/index.d.cts +0 -14
  403. pactkit-2.4.0/.opencode/node_modules/zod/v4/core/index.d.ts +0 -14
  404. pactkit-2.4.0/.opencode/node_modules/zod/v4/core/index.js +0 -14
  405. pactkit-2.4.0/.opencode/node_modules/zod/v4/core/json-schema.cjs +0 -2
  406. pactkit-2.4.0/.opencode/node_modules/zod/v4/core/json-schema.d.cts +0 -88
  407. pactkit-2.4.0/.opencode/node_modules/zod/v4/core/json-schema.d.ts +0 -88
  408. pactkit-2.4.0/.opencode/node_modules/zod/v4/core/json-schema.js +0 -1
  409. pactkit-2.4.0/.opencode/node_modules/zod/v4/core/package.json +0 -6
  410. pactkit-2.4.0/.opencode/node_modules/zod/v4/core/parse.cjs +0 -131
  411. pactkit-2.4.0/.opencode/node_modules/zod/v4/core/parse.d.cts +0 -49
  412. pactkit-2.4.0/.opencode/node_modules/zod/v4/core/parse.d.ts +0 -49
  413. pactkit-2.4.0/.opencode/node_modules/zod/v4/core/parse.js +0 -93
  414. pactkit-2.4.0/.opencode/node_modules/zod/v4/core/regexes.cjs +0 -136
  415. pactkit-2.4.0/.opencode/node_modules/zod/v4/core/regexes.d.cts +0 -78
  416. pactkit-2.4.0/.opencode/node_modules/zod/v4/core/regexes.d.ts +0 -78
  417. pactkit-2.4.0/.opencode/node_modules/zod/v4/core/regexes.js +0 -127
  418. pactkit-2.4.0/.opencode/node_modules/zod/v4/core/registries.cjs +0 -57
  419. pactkit-2.4.0/.opencode/node_modules/zod/v4/core/registries.d.cts +0 -35
  420. pactkit-2.4.0/.opencode/node_modules/zod/v4/core/registries.d.ts +0 -35
  421. pactkit-2.4.0/.opencode/node_modules/zod/v4/core/registries.js +0 -52
  422. pactkit-2.4.0/.opencode/node_modules/zod/v4/core/schemas.cjs +0 -1972
  423. pactkit-2.4.0/.opencode/node_modules/zod/v4/core/schemas.d.cts +0 -1113
  424. pactkit-2.4.0/.opencode/node_modules/zod/v4/core/schemas.d.ts +0 -1113
  425. pactkit-2.4.0/.opencode/node_modules/zod/v4/core/schemas.js +0 -1941
  426. pactkit-2.4.0/.opencode/node_modules/zod/v4/core/standard-schema.cjs +0 -2
  427. pactkit-2.4.0/.opencode/node_modules/zod/v4/core/standard-schema.d.cts +0 -55
  428. pactkit-2.4.0/.opencode/node_modules/zod/v4/core/standard-schema.d.ts +0 -55
  429. pactkit-2.4.0/.opencode/node_modules/zod/v4/core/standard-schema.js +0 -1
  430. pactkit-2.4.0/.opencode/node_modules/zod/v4/core/to-json-schema.cjs +0 -920
  431. pactkit-2.4.0/.opencode/node_modules/zod/v4/core/to-json-schema.d.cts +0 -90
  432. pactkit-2.4.0/.opencode/node_modules/zod/v4/core/to-json-schema.d.ts +0 -90
  433. pactkit-2.4.0/.opencode/node_modules/zod/v4/core/to-json-schema.js +0 -915
  434. pactkit-2.4.0/.opencode/node_modules/zod/v4/core/util.cjs +0 -658
  435. pactkit-2.4.0/.opencode/node_modules/zod/v4/core/util.d.cts +0 -197
  436. pactkit-2.4.0/.opencode/node_modules/zod/v4/core/util.d.ts +0 -197
  437. pactkit-2.4.0/.opencode/node_modules/zod/v4/core/util.js +0 -601
  438. pactkit-2.4.0/.opencode/node_modules/zod/v4/core/versions.cjs +0 -8
  439. pactkit-2.4.0/.opencode/node_modules/zod/v4/core/versions.d.cts +0 -5
  440. pactkit-2.4.0/.opencode/node_modules/zod/v4/core/versions.d.ts +0 -5
  441. pactkit-2.4.0/.opencode/node_modules/zod/v4/core/versions.js +0 -5
  442. pactkit-2.4.0/.opencode/node_modules/zod/v4/index.cjs +0 -22
  443. pactkit-2.4.0/.opencode/node_modules/zod/v4/index.d.cts +0 -3
  444. pactkit-2.4.0/.opencode/node_modules/zod/v4/index.d.ts +0 -3
  445. pactkit-2.4.0/.opencode/node_modules/zod/v4/index.js +0 -3
  446. pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/ar.cjs +0 -143
  447. pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/ar.d.cts +0 -5
  448. pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/ar.d.ts +0 -4
  449. pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/ar.js +0 -116
  450. pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/az.cjs +0 -142
  451. pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/az.d.cts +0 -5
  452. pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/az.d.ts +0 -4
  453. pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/az.js +0 -115
  454. pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/be.cjs +0 -191
  455. pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/be.d.cts +0 -5
  456. pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/be.d.ts +0 -4
  457. pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/be.js +0 -164
  458. pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/bg.cjs +0 -156
  459. pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/bg.d.cts +0 -5
  460. pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/bg.d.ts +0 -5
  461. pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/bg.js +0 -128
  462. pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/ca.cjs +0 -145
  463. pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/ca.d.cts +0 -5
  464. pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/ca.d.ts +0 -4
  465. pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/ca.js +0 -118
  466. pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/cs.cjs +0 -162
  467. pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/cs.d.cts +0 -5
  468. pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/cs.d.ts +0 -4
  469. pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/cs.js +0 -135
  470. pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/da.cjs +0 -158
  471. pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/da.d.cts +0 -5
  472. pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/da.d.ts +0 -4
  473. pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/da.js +0 -131
  474. pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/de.cjs +0 -143
  475. pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/de.d.cts +0 -5
  476. pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/de.d.ts +0 -4
  477. pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/de.js +0 -116
  478. pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/en.cjs +0 -145
  479. pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/en.d.cts +0 -5
  480. pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/en.d.ts +0 -5
  481. pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/en.js +0 -117
  482. pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/eo.cjs +0 -144
  483. pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/eo.d.cts +0 -5
  484. pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/eo.d.ts +0 -5
  485. pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/eo.js +0 -116
  486. pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/es.cjs +0 -176
  487. pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/es.d.cts +0 -5
  488. pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/es.d.ts +0 -4
  489. pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/es.js +0 -149
  490. pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/fa.cjs +0 -149
  491. pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/fa.d.cts +0 -5
  492. pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/fa.d.ts +0 -4
  493. pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/fa.js +0 -122
  494. pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/fi.cjs +0 -149
  495. pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/fi.d.cts +0 -5
  496. pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/fi.d.ts +0 -4
  497. pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/fi.js +0 -122
  498. pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/fr-CA.cjs +0 -144
  499. pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/fr-CA.d.cts +0 -5
  500. pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/fr-CA.d.ts +0 -4
  501. pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/fr-CA.js +0 -117
  502. pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/fr.cjs +0 -143
  503. pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/fr.d.cts +0 -5
  504. pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/fr.d.ts +0 -4
  505. pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/fr.js +0 -116
  506. pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/he.cjs +0 -144
  507. pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/he.d.cts +0 -5
  508. pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/he.d.ts +0 -4
  509. pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/he.js +0 -117
  510. pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/hu.cjs +0 -144
  511. pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/hu.d.cts +0 -5
  512. pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/hu.d.ts +0 -4
  513. pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/hu.js +0 -117
  514. pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/id.cjs +0 -143
  515. pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/id.d.cts +0 -5
  516. pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/id.d.ts +0 -4
  517. pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/id.js +0 -116
  518. pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/index.cjs +0 -98
  519. pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/index.d.cts +0 -46
  520. pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/index.d.ts +0 -46
  521. pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/index.js +0 -46
  522. pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/is.cjs +0 -145
  523. pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/is.d.cts +0 -5
  524. pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/is.d.ts +0 -5
  525. pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/is.js +0 -117
  526. pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/it.cjs +0 -144
  527. pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/it.d.cts +0 -5
  528. pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/it.d.ts +0 -4
  529. pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/it.js +0 -117
  530. pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/ja.cjs +0 -142
  531. pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/ja.d.cts +0 -5
  532. pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/ja.d.ts +0 -4
  533. pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/ja.js +0 -115
  534. pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/ka.cjs +0 -153
  535. pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/ka.d.cts +0 -5
  536. pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/ka.d.ts +0 -5
  537. pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/ka.js +0 -125
  538. pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/kh.cjs +0 -12
  539. pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/kh.d.cts +0 -5
  540. pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/kh.d.ts +0 -5
  541. pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/kh.js +0 -5
  542. pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/km.cjs +0 -144
  543. pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/km.d.cts +0 -5
  544. pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/km.d.ts +0 -4
  545. pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/km.js +0 -117
  546. pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/ko.cjs +0 -148
  547. pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/ko.d.cts +0 -5
  548. pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/ko.d.ts +0 -4
  549. pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/ko.js +0 -121
  550. pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/lt.cjs +0 -258
  551. pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/lt.d.cts +0 -5
  552. pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/lt.d.ts +0 -5
  553. pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/lt.js +0 -230
  554. pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/mk.cjs +0 -145
  555. pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/mk.d.cts +0 -5
  556. pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/mk.d.ts +0 -4
  557. pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/mk.js +0 -118
  558. pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/ms.cjs +0 -143
  559. pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/ms.d.cts +0 -5
  560. pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/ms.d.ts +0 -4
  561. pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/ms.js +0 -116
  562. pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/nl.cjs +0 -144
  563. pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/nl.d.cts +0 -5
  564. pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/nl.d.ts +0 -4
  565. pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/nl.js +0 -117
  566. pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/no.cjs +0 -143
  567. pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/no.d.cts +0 -5
  568. pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/no.d.ts +0 -4
  569. pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/no.js +0 -116
  570. pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/ota.cjs +0 -144
  571. pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/ota.d.cts +0 -5
  572. pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/ota.d.ts +0 -4
  573. pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/ota.js +0 -117
  574. pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/package.json +0 -6
  575. pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/pl.cjs +0 -144
  576. pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/pl.d.cts +0 -5
  577. pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/pl.d.ts +0 -4
  578. pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/pl.js +0 -117
  579. pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/ps.cjs +0 -149
  580. pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/ps.d.cts +0 -5
  581. pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/ps.d.ts +0 -4
  582. pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/ps.js +0 -122
  583. pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/pt.cjs +0 -143
  584. pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/pt.d.cts +0 -5
  585. pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/pt.d.ts +0 -4
  586. pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/pt.js +0 -116
  587. pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/ru.cjs +0 -191
  588. pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/ru.d.cts +0 -5
  589. pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/ru.d.ts +0 -4
  590. pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/ru.js +0 -164
  591. pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/sl.cjs +0 -144
  592. pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/sl.d.cts +0 -5
  593. pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/sl.d.ts +0 -4
  594. pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/sl.js +0 -117
  595. pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/sv.cjs +0 -145
  596. pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/sv.d.cts +0 -5
  597. pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/sv.d.ts +0 -4
  598. pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/sv.js +0 -118
  599. pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/ta.cjs +0 -144
  600. pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/ta.d.cts +0 -5
  601. pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/ta.d.ts +0 -4
  602. pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/ta.js +0 -117
  603. pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/th.cjs +0 -144
  604. pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/th.d.cts +0 -5
  605. pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/th.d.ts +0 -4
  606. pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/th.js +0 -117
  607. pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/tr.cjs +0 -143
  608. pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/tr.d.cts +0 -5
  609. pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/tr.d.ts +0 -5
  610. pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/tr.js +0 -115
  611. pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/ua.cjs +0 -12
  612. pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/ua.d.cts +0 -5
  613. pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/ua.d.ts +0 -5
  614. pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/ua.js +0 -5
  615. pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/uk.cjs +0 -144
  616. pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/uk.d.cts +0 -5
  617. pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/uk.d.ts +0 -4
  618. pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/uk.js +0 -117
  619. pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/ur.cjs +0 -144
  620. pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/ur.d.cts +0 -5
  621. pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/ur.d.ts +0 -4
  622. pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/ur.js +0 -117
  623. pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/vi.cjs +0 -143
  624. pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/vi.d.cts +0 -5
  625. pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/vi.d.ts +0 -4
  626. pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/vi.js +0 -116
  627. pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/yo.cjs +0 -142
  628. pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/yo.d.cts +0 -5
  629. pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/yo.d.ts +0 -4
  630. pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/yo.js +0 -115
  631. pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/zh-CN.cjs +0 -143
  632. pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/zh-CN.d.cts +0 -5
  633. pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/zh-CN.d.ts +0 -4
  634. pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/zh-CN.js +0 -116
  635. pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/zh-TW.cjs +0 -144
  636. pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/zh-TW.d.cts +0 -5
  637. pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/zh-TW.d.ts +0 -4
  638. pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/zh-TW.js +0 -117
  639. pactkit-2.4.0/.opencode/node_modules/zod/v4/mini/checks.cjs +0 -34
  640. pactkit-2.4.0/.opencode/node_modules/zod/v4/mini/checks.d.cts +0 -1
  641. pactkit-2.4.0/.opencode/node_modules/zod/v4/mini/checks.d.ts +0 -1
  642. pactkit-2.4.0/.opencode/node_modules/zod/v4/mini/checks.js +0 -1
  643. pactkit-2.4.0/.opencode/node_modules/zod/v4/mini/coerce.cjs +0 -47
  644. pactkit-2.4.0/.opencode/node_modules/zod/v4/mini/coerce.d.cts +0 -7
  645. pactkit-2.4.0/.opencode/node_modules/zod/v4/mini/coerce.d.ts +0 -7
  646. pactkit-2.4.0/.opencode/node_modules/zod/v4/mini/coerce.js +0 -17
  647. pactkit-2.4.0/.opencode/node_modules/zod/v4/mini/external.cjs +0 -62
  648. pactkit-2.4.0/.opencode/node_modules/zod/v4/mini/external.d.cts +0 -11
  649. pactkit-2.4.0/.opencode/node_modules/zod/v4/mini/external.d.ts +0 -11
  650. pactkit-2.4.0/.opencode/node_modules/zod/v4/mini/external.js +0 -13
  651. pactkit-2.4.0/.opencode/node_modules/zod/v4/mini/index.cjs +0 -32
  652. pactkit-2.4.0/.opencode/node_modules/zod/v4/mini/index.d.cts +0 -3
  653. pactkit-2.4.0/.opencode/node_modules/zod/v4/mini/index.d.ts +0 -3
  654. pactkit-2.4.0/.opencode/node_modules/zod/v4/mini/index.js +0 -3
  655. pactkit-2.4.0/.opencode/node_modules/zod/v4/mini/iso.cjs +0 -60
  656. pactkit-2.4.0/.opencode/node_modules/zod/v4/mini/iso.d.cts +0 -22
  657. pactkit-2.4.0/.opencode/node_modules/zod/v4/mini/iso.d.ts +0 -22
  658. pactkit-2.4.0/.opencode/node_modules/zod/v4/mini/iso.js +0 -30
  659. pactkit-2.4.0/.opencode/node_modules/zod/v4/mini/package.json +0 -6
  660. pactkit-2.4.0/.opencode/node_modules/zod/v4/mini/parse.cjs +0 -16
  661. pactkit-2.4.0/.opencode/node_modules/zod/v4/mini/parse.d.cts +0 -1
  662. pactkit-2.4.0/.opencode/node_modules/zod/v4/mini/parse.d.ts +0 -1
  663. pactkit-2.4.0/.opencode/node_modules/zod/v4/mini/parse.js +0 -1
  664. pactkit-2.4.0/.opencode/node_modules/zod/v4/mini/schemas.cjs +0 -906
  665. pactkit-2.4.0/.opencode/node_modules/zod/v4/mini/schemas.d.cts +0 -407
  666. pactkit-2.4.0/.opencode/node_modules/zod/v4/mini/schemas.d.ts +0 -407
  667. pactkit-2.4.0/.opencode/node_modules/zod/v4/mini/schemas.js +0 -789
  668. pactkit-2.4.0/.opencode/node_modules/zod/v4/package.json +0 -6
  669. pactkit-2.4.0/.opencode/node_modules/zod/v4-mini/index.cjs +0 -17
  670. pactkit-2.4.0/.opencode/node_modules/zod/v4-mini/index.d.cts +0 -1
  671. pactkit-2.4.0/.opencode/node_modules/zod/v4-mini/index.d.ts +0 -1
  672. pactkit-2.4.0/.opencode/node_modules/zod/v4-mini/index.js +0 -1
  673. pactkit-2.4.0/.opencode/node_modules/zod/v4-mini/package.json +0 -6
  674. pactkit-2.4.0/.opencode/package.json +0 -5
  675. {pactkit-2.4.0 → pactkit-2.4.1}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  676. {pactkit-2.4.0 → pactkit-2.4.1}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
  677. {pactkit-2.4.0 → pactkit-2.4.1}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  678. {pactkit-2.4.0 → pactkit-2.4.1}/.github/dependabot.yml +0 -0
  679. {pactkit-2.4.0 → pactkit-2.4.1}/.github/workflows/ci.yml +0 -0
  680. {pactkit-2.4.0 → pactkit-2.4.1}/.gitignore +0 -0
  681. {pactkit-2.4.0 → pactkit-2.4.1}/AGENTS.md +0 -0
  682. {pactkit-2.4.0 → pactkit-2.4.1}/CODE_OF_CONDUCT.md +0 -0
  683. {pactkit-2.4.0 → pactkit-2.4.1}/CONTRIBUTING.md +0 -0
  684. {pactkit-2.4.0 → pactkit-2.4.1}/LICENSE +0 -0
  685. {pactkit-2.4.0 → pactkit-2.4.1}/README.md +0 -0
  686. {pactkit-2.4.0 → pactkit-2.4.1}/SECURITY.md +0 -0
  687. {pactkit-2.4.0 → pactkit-2.4.1}/docs/assets/logo.png +0 -0
  688. {pactkit-2.4.0 → pactkit-2.4.1}/docs/guides/codex-integration-preresearch.md +0 -0
  689. {pactkit-2.4.0 → pactkit-2.4.1}/docs/guides/tool-integration-checklist.md +0 -0
  690. {pactkit-2.4.0 → pactkit-2.4.1}/docs/specs/BUG-001.md +0 -0
  691. {pactkit-2.4.0 → pactkit-2.4.1}/docs/specs/BUG-002.md +0 -0
  692. {pactkit-2.4.0 → pactkit-2.4.1}/docs/specs/BUG-003.md +0 -0
  693. {pactkit-2.4.0 → pactkit-2.4.1}/docs/specs/BUG-004.md +0 -0
  694. {pactkit-2.4.0 → pactkit-2.4.1}/docs/specs/BUG-005.md +0 -0
  695. {pactkit-2.4.0 → pactkit-2.4.1}/docs/specs/BUG-006.md +0 -0
  696. {pactkit-2.4.0 → pactkit-2.4.1}/docs/specs/BUG-007.md +0 -0
  697. {pactkit-2.4.0 → pactkit-2.4.1}/docs/specs/BUG-008.md +0 -0
  698. {pactkit-2.4.0 → pactkit-2.4.1}/docs/specs/BUG-009.md +0 -0
  699. {pactkit-2.4.0 → pactkit-2.4.1}/docs/specs/BUG-010.md +0 -0
  700. {pactkit-2.4.0 → pactkit-2.4.1}/docs/specs/BUG-011.md +0 -0
  701. {pactkit-2.4.0 → pactkit-2.4.1}/docs/specs/BUG-012.md +0 -0
  702. {pactkit-2.4.0 → pactkit-2.4.1}/docs/specs/BUG-013.md +0 -0
  703. {pactkit-2.4.0 → pactkit-2.4.1}/docs/specs/BUG-014.md +0 -0
  704. {pactkit-2.4.0 → pactkit-2.4.1}/docs/specs/BUG-015.md +0 -0
  705. {pactkit-2.4.0 → pactkit-2.4.1}/docs/specs/BUG-016.md +0 -0
  706. {pactkit-2.4.0 → pactkit-2.4.1}/docs/specs/BUG-017.md +0 -0
  707. {pactkit-2.4.0 → pactkit-2.4.1}/docs/specs/BUG-018.md +0 -0
  708. {pactkit-2.4.0 → pactkit-2.4.1}/docs/specs/BUG-019.md +0 -0
  709. {pactkit-2.4.0 → pactkit-2.4.1}/docs/specs/BUG-020.md +0 -0
  710. {pactkit-2.4.0 → pactkit-2.4.1}/docs/specs/BUG-021.md +0 -0
  711. {pactkit-2.4.0 → pactkit-2.4.1}/docs/specs/BUG-022.md +0 -0
  712. {pactkit-2.4.0 → pactkit-2.4.1}/docs/specs/BUG-023.md +0 -0
  713. {pactkit-2.4.0 → pactkit-2.4.1}/docs/specs/BUG-024.md +0 -0
  714. {pactkit-2.4.0 → pactkit-2.4.1}/docs/specs/BUG-025.md +0 -0
  715. {pactkit-2.4.0 → pactkit-2.4.1}/docs/specs/BUG-026.md +0 -0
  716. {pactkit-2.4.0 → pactkit-2.4.1}/docs/specs/BUG-027.md +0 -0
  717. {pactkit-2.4.0 → pactkit-2.4.1}/docs/specs/BUG-028.md +0 -0
  718. {pactkit-2.4.0 → pactkit-2.4.1}/docs/specs/BUG-029.md +0 -0
  719. {pactkit-2.4.0 → pactkit-2.4.1}/docs/specs/BUG-030.md +0 -0
  720. {pactkit-2.4.0 → pactkit-2.4.1}/docs/specs/BUG-031.md +0 -0
  721. {pactkit-2.4.0 → pactkit-2.4.1}/docs/specs/BUG-032.md +0 -0
  722. {pactkit-2.4.0 → pactkit-2.4.1}/docs/specs/BUG-033.md +0 -0
  723. {pactkit-2.4.0 → pactkit-2.4.1}/docs/specs/BUG-034.md +0 -0
  724. {pactkit-2.4.0 → pactkit-2.4.1}/docs/specs/BUG-035.md +0 -0
  725. {pactkit-2.4.0 → pactkit-2.4.1}/docs/specs/BUG-slim-001.md +0 -0
  726. {pactkit-2.4.0 → pactkit-2.4.1}/docs/specs/BUG-slim-002.md +0 -0
  727. {pactkit-2.4.0 → pactkit-2.4.1}/docs/specs/BUG-slim-003.md +0 -0
  728. {pactkit-2.4.0 → pactkit-2.4.1}/docs/specs/BUG-slim-004.md +0 -0
  729. {pactkit-2.4.0 → pactkit-2.4.1}/docs/specs/BUG-slim-005.md +0 -0
  730. {pactkit-2.4.0 → pactkit-2.4.1}/docs/specs/BUG-slim-006.md +0 -0
  731. {pactkit-2.4.0 → pactkit-2.4.1}/docs/specs/BUG-slim-007.md +0 -0
  732. {pactkit-2.4.0 → pactkit-2.4.1}/docs/test_cases/BUG-001_case.md +0 -0
  733. {pactkit-2.4.0 → pactkit-2.4.1}/docs/test_cases/BUG-002_case.md +0 -0
  734. {pactkit-2.4.0 → pactkit-2.4.1}/opencode.json +0 -0
  735. {pactkit-2.4.0 → pactkit-2.4.1}/src/pactkit/backfill.py +0 -0
  736. {pactkit-2.4.0 → pactkit-2.4.1}/src/pactkit/cleaners.py +0 -0
  737. {pactkit-2.4.0 → pactkit-2.4.1}/src/pactkit/cli.py +0 -0
  738. {pactkit-2.4.0 → pactkit-2.4.1}/src/pactkit/config.py +0 -0
  739. {pactkit-2.4.0 → pactkit-2.4.1}/src/pactkit/context_gen.py +0 -0
  740. {pactkit-2.4.0 → pactkit-2.4.1}/src/pactkit/coverage_gate.py +0 -0
  741. {pactkit-2.4.0 → pactkit-2.4.1}/src/pactkit/doctor.py +0 -0
  742. {pactkit-2.4.0 → pactkit-2.4.1}/src/pactkit/generators/__init__.py +0 -0
  743. {pactkit-2.4.0 → pactkit-2.4.1}/src/pactkit/generators/adapter.py +0 -0
  744. {pactkit-2.4.0 → pactkit-2.4.1}/src/pactkit/guards.py +0 -0
  745. {pactkit-2.4.0 → pactkit-2.4.1}/src/pactkit/id_generator.py +0 -0
  746. {pactkit-2.4.0 → pactkit-2.4.1}/src/pactkit/invariants.py +0 -0
  747. {pactkit-2.4.0 → pactkit-2.4.1}/src/pactkit/issue_sync.py +0 -0
  748. {pactkit-2.4.0 → pactkit-2.4.1}/src/pactkit/lazy_visualize.py +0 -0
  749. {pactkit-2.4.0 → pactkit-2.4.1}/src/pactkit/lessons.py +0 -0
  750. {pactkit-2.4.0 → pactkit-2.4.1}/src/pactkit/lint_runner.py +0 -0
  751. {pactkit-2.4.0 → pactkit-2.4.1}/src/pactkit/profiles.py +0 -0
  752. {pactkit-2.4.0 → pactkit-2.4.1}/src/pactkit/prompts/__init__.py +0 -0
  753. {pactkit-2.4.0 → pactkit-2.4.1}/src/pactkit/prompts/agents.py +0 -0
  754. {pactkit-2.4.0 → pactkit-2.4.1}/src/pactkit/prompts/commands.py +0 -0
  755. {pactkit-2.4.0 → pactkit-2.4.1}/src/pactkit/prompts/references.py +0 -0
  756. {pactkit-2.4.0 → pactkit-2.4.1}/src/pactkit/prompts/rules.py +0 -0
  757. {pactkit-2.4.0 → pactkit-2.4.1}/src/pactkit/prompts/skills.py +0 -0
  758. {pactkit-2.4.0 → pactkit-2.4.1}/src/pactkit/prompts/workflows.py +0 -0
  759. {pactkit-2.4.0 → pactkit-2.4.1}/src/pactkit/regression.py +0 -0
  760. {pactkit-2.4.0 → pactkit-2.4.1}/src/pactkit/schemas.py +0 -0
  761. {pactkit-2.4.0 → pactkit-2.4.1}/src/pactkit/scripts.py +0 -0
  762. {pactkit-2.4.0 → pactkit-2.4.1}/src/pactkit/sec_scope.py +0 -0
  763. {pactkit-2.4.0 → pactkit-2.4.1}/src/pactkit/skills/__init__.py +0 -0
  764. {pactkit-2.4.0 → pactkit-2.4.1}/src/pactkit/skills/scaffold.py +0 -0
  765. {pactkit-2.4.0 → pactkit-2.4.1}/src/pactkit/skills/spec_linter.py +0 -0
  766. {pactkit-2.4.0 → pactkit-2.4.1}/src/pactkit/spec_status.py +0 -0
  767. {pactkit-2.4.0 → pactkit-2.4.1}/src/pactkit/test_mapper.py +0 -0
  768. {pactkit-2.4.0 → pactkit-2.4.1}/src/pactkit/utils.py +0 -0
  769. {pactkit-2.4.0 → pactkit-2.4.1}/src/pactkit/validators.py +0 -0
  770. {pactkit-2.4.0 → pactkit-2.4.1}/tests/conftest.py +0 -0
  771. {pactkit-2.4.0 → pactkit-2.4.1}/tests/e2e/__init__.py +0 -0
  772. {pactkit-2.4.0 → pactkit-2.4.1}/tests/e2e/cli/__init__.py +0 -0
  773. {pactkit-2.4.0 → pactkit-2.4.1}/tests/e2e/cli/test_cli_e2e.py +0 -0
  774. {pactkit-2.4.0 → pactkit-2.4.1}/tests/integration/__init__.py +0 -0
  775. {pactkit-2.4.0 → pactkit-2.4.1}/tests/integration/test_deploy_classic.py +0 -0
  776. {pactkit-2.4.0 → pactkit-2.4.1}/tests/unit/test_agent_features.py +0 -0
  777. {pactkit-2.4.0 → pactkit-2.4.1}/tests/unit/test_agent_frontmatter.py +0 -0
  778. {pactkit-2.4.0 → pactkit-2.4.1}/tests/unit/test_agents_enrichment.py +0 -0
  779. {pactkit-2.4.0 → pactkit-2.4.1}/tests/unit/test_board_bug027.py +0 -0
  780. {pactkit-2.4.0 → pactkit-2.4.1}/tests/unit/test_board_sections.py +0 -0
  781. {pactkit-2.4.0 → pactkit-2.4.1}/tests/unit/test_bug001_skill_path.py +0 -0
  782. {pactkit-2.4.0 → pactkit-2.4.1}/tests/unit/test_bug002_plugin_paths.py +0 -0
  783. {pactkit-2.4.0 → pactkit-2.4.1}/tests/unit/test_bug003_multi_import.py +0 -0
  784. {pactkit-2.4.0 → pactkit-2.4.1}/tests/unit/test_bug004_dead_set.py +0 -0
  785. {pactkit-2.4.0 → pactkit-2.4.1}/tests/unit/test_bug005_archive_taskless.py +0 -0
  786. {pactkit-2.4.0 → pactkit-2.4.1}/tests/unit/test_bug006_scan_excludes.py +0 -0
  787. {pactkit-2.4.0 → pactkit-2.4.1}/tests/unit/test_bug007_stale_trace_refs.py +0 -0
  788. {pactkit-2.4.0 → pactkit-2.4.1}/tests/unit/test_bug008_stale_command_refs.py +0 -0
  789. {pactkit-2.4.0 → pactkit-2.4.1}/tests/unit/test_bug009_project_config_backfill.py +0 -0
  790. {pactkit-2.4.0 → pactkit-2.4.1}/tests/unit/test_bug010_rewrite_yaml.py +0 -0
  791. {pactkit-2.4.0 → pactkit-2.4.1}/tests/unit/test_bug011_stale_refs.py +0 -0
  792. {pactkit-2.4.0 → pactkit-2.4.1}/tests/unit/test_bug012_call_graph_filter.py +0 -0
  793. {pactkit-2.4.0 → pactkit-2.4.1}/tests/unit/test_bug013_config_single_source.py +0 -0
  794. {pactkit-2.4.0 → pactkit-2.4.1}/tests/unit/test_bug014_version_hygiene.py +0 -0
  795. {pactkit-2.4.0 → pactkit-2.4.1}/tests/unit/test_bug017_project_init_playbook.py +0 -0
  796. {pactkit-2.4.0 → pactkit-2.4.1}/tests/unit/test_bug018_issue_tracker_verification.py +0 -0
  797. {pactkit-2.4.0 → pactkit-2.4.1}/tests/unit/test_bug019_venv_deployment.py +0 -0
  798. {pactkit-2.4.0 → pactkit-2.4.1}/tests/unit/test_bug020_claude_md_backup.py +0 -0
  799. {pactkit-2.4.0 → pactkit-2.4.1}/tests/unit/test_bug025_release_delegation.py +0 -0
  800. {pactkit-2.4.0 → pactkit-2.4.1}/tests/unit/test_bug026_version_sync.py +0 -0
  801. {pactkit-2.4.0 → pactkit-2.4.1}/tests/unit/test_bug028_ghost_refs.py +0 -0
  802. {pactkit-2.4.0 → pactkit-2.4.1}/tests/unit/test_bug029_stack_detection_fallback.py +0 -0
  803. {pactkit-2.4.0 → pactkit-2.4.1}/tests/unit/test_bug030_spec_lint_cli.py +0 -0
  804. {pactkit-2.4.0 → pactkit-2.4.1}/tests/unit/test_bug031_docstring_accuracy.py +0 -0
  805. {pactkit-2.4.0 → pactkit-2.4.1}/tests/unit/test_bug034_plan_metadata_template.py +0 -0
  806. {pactkit-2.4.0 → pactkit-2.4.1}/tests/unit/test_bug035_opencode_dual_layer.py +0 -0
  807. {pactkit-2.4.0 → pactkit-2.4.1}/tests/unit/test_bug_021.py +0 -0
  808. {pactkit-2.4.0 → pactkit-2.4.1}/tests/unit/test_bug_022.py +0 -0
  809. {pactkit-2.4.0 → pactkit-2.4.1}/tests/unit/test_bug_023.py +0 -0
  810. {pactkit-2.4.0 → pactkit-2.4.1}/tests/unit/test_bug_024.py +0 -0
  811. {pactkit-2.4.0 → pactkit-2.4.1}/tests/unit/test_bug_slim001_env_detection.py +0 -0
  812. {pactkit-2.4.0 → pactkit-2.4.1}/tests/unit/test_bug_slim002_instruction_collision.py +0 -0
  813. {pactkit-2.4.0 → pactkit-2.4.1}/tests/unit/test_bug_slim003.py +0 -0
  814. {pactkit-2.4.0 → pactkit-2.4.1}/tests/unit/test_bug_slim004.py +0 -0
  815. {pactkit-2.4.0 → pactkit-2.4.1}/tests/unit/test_bug_slim005.py +0 -0
  816. {pactkit-2.4.0 → pactkit-2.4.1}/tests/unit/test_bug_slim006.py +0 -0
  817. {pactkit-2.4.0 → pactkit-2.4.1}/tests/unit/test_check_command.py +0 -0
  818. {pactkit-2.4.0 → pactkit-2.4.1}/tests/unit/test_command_frontmatter.py +0 -0
  819. {pactkit-2.4.0 → pactkit-2.4.1}/tests/unit/test_command_visualize_modes.py +0 -0
  820. {pactkit-2.4.0 → pactkit-2.4.1}/tests/unit/test_config.py +0 -0
  821. {pactkit-2.4.0 → pactkit-2.4.1}/tests/unit/test_config_auto_merge.py +0 -0
  822. {pactkit-2.4.0 → pactkit-2.4.1}/tests/unit/test_constitution_sharpening.py +0 -0
  823. {pactkit-2.4.0 → pactkit-2.4.1}/tests/unit/test_create_skill.py +0 -0
  824. {pactkit-2.4.0 → pactkit-2.4.1}/tests/unit/test_cross_flow_matrix.py +0 -0
  825. {pactkit-2.4.0 → pactkit-2.4.1}/tests/unit/test_deploy_opencode_parity.py +0 -0
  826. {pactkit-2.4.0 → pactkit-2.4.1}/tests/unit/test_deployer_cleanup.py +0 -0
  827. {pactkit-2.4.0 → pactkit-2.4.1}/tests/unit/test_deployer_plugin.py +0 -0
  828. {pactkit-2.4.0 → pactkit-2.4.1}/tests/unit/test_design_command.py +0 -0
  829. {pactkit-2.4.0 → pactkit-2.4.1}/tests/unit/test_done_gates.py +0 -0
  830. {pactkit-2.4.0 → pactkit-2.4.1}/tests/unit/test_draw_prompt.py +0 -0
  831. {pactkit-2.4.0 → pactkit-2.4.1}/tests/unit/test_draw_references.py +0 -0
  832. {pactkit-2.4.0 → pactkit-2.4.1}/tests/unit/test_drawio_mcp.py +0 -0
  833. {pactkit-2.4.0 → pactkit-2.4.1}/tests/unit/test_home_path_fix.py +0 -0
  834. {pactkit-2.4.0 → pactkit-2.4.1}/tests/unit/test_hotfix_command.py +0 -0
  835. {pactkit-2.4.0 → pactkit-2.4.1}/tests/unit/test_init_guard.py +0 -0
  836. {pactkit-2.4.0 → pactkit-2.4.1}/tests/unit/test_lang_profiles.py +0 -0
  837. {pactkit-2.4.0 → pactkit-2.4.1}/tests/unit/test_list_stories.py +0 -0
  838. {pactkit-2.4.0 → pactkit-2.4.1}/tests/unit/test_mcp_integration.py +0 -0
  839. {pactkit-2.4.0 → pactkit-2.4.1}/tests/unit/test_model_config.py +0 -0
  840. {pactkit-2.4.0 → pactkit-2.4.1}/tests/unit/test_modular_constitution.py +0 -0
  841. {pactkit-2.4.0 → pactkit-2.4.1}/tests/unit/test_multi_prefix.py +0 -0
  842. {pactkit-2.4.0 → pactkit-2.4.1}/tests/unit/test_pdca_slim.py +0 -0
  843. {pactkit-2.4.0 → pactkit-2.4.1}/tests/unit/test_profiles.py +0 -0
  844. {pactkit-2.4.0 → pactkit-2.4.1}/tests/unit/test_project_visibility.py +0 -0
  845. {pactkit-2.4.0 → pactkit-2.4.1}/tests/unit/test_prompt_cli_refs.py +0 -0
  846. {pactkit-2.4.0 → pactkit-2.4.1}/tests/unit/test_prompt_structural_invariants.py +0 -0
  847. {pactkit-2.4.0 → pactkit-2.4.1}/tests/unit/test_prompts_package.py +0 -0
  848. {pactkit-2.4.0 → pactkit-2.4.1}/tests/unit/test_release.py +0 -0
  849. {pactkit-2.4.0 → pactkit-2.4.1}/tests/unit/test_release_field.py +0 -0
  850. {pactkit-2.4.0 → pactkit-2.4.1}/tests/unit/test_release_v110.py +0 -0
  851. {pactkit-2.4.0 → pactkit-2.4.1}/tests/unit/test_render_prompt.py +0 -0
  852. {pactkit-2.4.0 → pactkit-2.4.1}/tests/unit/test_review_command.py +0 -0
  853. {pactkit-2.4.0 → pactkit-2.4.1}/tests/unit/test_rules_enrichment.py +0 -0
  854. {pactkit-2.4.0 → pactkit-2.4.1}/tests/unit/test_scaffold.py +0 -0
  855. {pactkit-2.4.0 → pactkit-2.4.1}/tests/unit/test_scaffold_developer_prefix.py +0 -0
  856. {pactkit-2.4.0 → pactkit-2.4.1}/tests/unit/test_schemas.py +0 -0
  857. {pactkit-2.4.0 → pactkit-2.4.1}/tests/unit/test_script_extraction.py +0 -0
  858. {pactkit-2.4.0 → pactkit-2.4.1}/tests/unit/test_selective_deploy.py +0 -0
  859. {pactkit-2.4.0 → pactkit-2.4.1}/tests/unit/test_session_context.py +0 -0
  860. {pactkit-2.4.0 → pactkit-2.4.1}/tests/unit/test_skill_structure.py +0 -0
  861. {pactkit-2.4.0 → pactkit-2.4.1}/tests/unit/test_skills_enrichment.py +0 -0
  862. {pactkit-2.4.0 → pactkit-2.4.1}/tests/unit/test_smart_regression.py +0 -0
  863. {pactkit-2.4.0 → pactkit-2.4.1}/tests/unit/test_sprint_command.py +0 -0
  864. {pactkit-2.4.0 → pactkit-2.4.1}/tests/unit/test_stack_references.py +0 -0
  865. {pactkit-2.4.0 → pactkit-2.4.1}/tests/unit/test_status_command.py +0 -0
  866. {pactkit-2.4.0 → pactkit-2.4.1}/tests/unit/test_statusline.py +0 -0
  867. {pactkit-2.4.0 → pactkit-2.4.1}/tests/unit/test_story014_release.py +0 -0
  868. {pactkit-2.4.0 → pactkit-2.4.1}/tests/unit/test_story015_ci_lint_gate.py +0 -0
  869. {pactkit-2.4.0 → pactkit-2.4.1}/tests/unit/test_story016_claude_md.py +0 -0
  870. {pactkit-2.4.0 → pactkit-2.4.1}/tests/unit/test_story017_init_claude_md.py +0 -0
  871. {pactkit-2.4.0 → pactkit-2.4.1}/tests/unit/test_story018_arch_staleness.py +0 -0
  872. {pactkit-2.4.0 → pactkit-2.4.1}/tests/unit/test_story019_bailout.py +0 -0
  873. {pactkit-2.4.0 → pactkit-2.4.1}/tests/unit/test_story020_horizon.py +0 -0
  874. {pactkit-2.4.0 → pactkit-2.4.1}/tests/unit/test_story021_rfc.py +0 -0
  875. {pactkit-2.4.0 → pactkit-2.4.1}/tests/unit/test_story022_decision_tree.py +0 -0
  876. {pactkit-2.4.0 → pactkit-2.4.1}/tests/unit/test_story023_test_quality.py +0 -0
  877. {pactkit-2.4.0 → pactkit-2.4.1}/tests/unit/test_story024_native_agent.py +0 -0
  878. {pactkit-2.4.0 → pactkit-2.4.1}/tests/unit/test_story025_ci_pipeline.py +0 -0
  879. {pactkit-2.4.0 → pactkit-2.4.1}/tests/unit/test_story026_issue_tracker.py +0 -0
  880. {pactkit-2.4.0 → pactkit-2.4.1}/tests/unit/test_story027_hooks.py +0 -0
  881. {pactkit-2.4.0 → pactkit-2.4.1}/tests/unit/test_story028_rule_scoping.py +0 -0
  882. {pactkit-2.4.0 → pactkit-2.4.1}/tests/unit/test_story029_doctor.py +0 -0
  883. {pactkit-2.4.0 → pactkit-2.4.1}/tests/unit/test_story030_lint.py +0 -0
  884. {pactkit-2.4.0 → pactkit-2.4.1}/tests/unit/test_story031_git_init_guard.py +0 -0
  885. {pactkit-2.4.0 → pactkit-2.4.1}/tests/unit/test_story032_greenfield_redirect.py +0 -0
  886. {pactkit-2.4.0 → pactkit-2.4.1}/tests/unit/test_story033_config_backfill.py +0 -0
  887. {pactkit-2.4.0 → pactkit-2.4.1}/tests/unit/test_story034_plan_config_refresh.py +0 -0
  888. {pactkit-2.4.0 → pactkit-2.4.1}/tests/unit/test_story035_readme_docs.py +0 -0
  889. {pactkit-2.4.0 → pactkit-2.4.1}/tests/unit/test_story037_regression_fix.py +0 -0
  890. {pactkit-2.4.0 → pactkit-2.4.1}/tests/unit/test_story038_call_graph_update.py +0 -0
  891. {pactkit-2.4.0 → pactkit-2.4.1}/tests/unit/test_story039_venv_config.py +0 -0
  892. {pactkit-2.4.0 → pactkit-2.4.1}/tests/unit/test_story040_layered_claude_md.py +0 -0
  893. {pactkit-2.4.0 → pactkit-2.4.1}/tests/unit/test_story042_spec_linter.py +0 -0
  894. {pactkit-2.4.0 → pactkit-2.4.1}/tests/unit/test_story043_active_clarify.py +0 -0
  895. {pactkit-2.4.0 → pactkit-2.4.1}/tests/unit/test_story044_consistency_check.py +0 -0
  896. {pactkit-2.4.0 → pactkit-2.4.1}/tests/unit/test_story045_auto_pr.py +0 -0
  897. {pactkit-2.4.0 → pactkit-2.4.1}/tests/unit/test_story046_agent_adapter.py +0 -0
  898. {pactkit-2.4.0 → pactkit-2.4.1}/tests/unit/test_story047_enterprise_flags.py +0 -0
  899. {pactkit-2.4.0 → pactkit-2.4.1}/tests/unit/test_story048_worktree_isolation.py +0 -0
  900. {pactkit-2.4.0 → pactkit-2.4.1}/tests/unit/test_story049_community_standards.py +0 -0
  901. {pactkit-2.4.0 → pactkit-2.4.1}/tests/unit/test_story050_doc_only_shortcut.py +0 -0
  902. {pactkit-2.4.0 → pactkit-2.4.1}/tests/unit/test_story051_workflow_streamlining.py +0 -0
  903. {pactkit-2.4.0 → pactkit-2.4.1}/tests/unit/test_story052_conditional_github_release.py +0 -0
  904. {pactkit-2.4.0 → pactkit-2.4.1}/tests/unit/test_story053_impact_regression.py +0 -0
  905. {pactkit-2.4.0 → pactkit-2.4.1}/tests/unit/test_story055_commands.py +0 -0
  906. {pactkit-2.4.0 → pactkit-2.4.1}/tests/unit/test_story055_config.py +0 -0
  907. {pactkit-2.4.0 → pactkit-2.4.1}/tests/unit/test_story055_spec_linter.py +0 -0
  908. {pactkit-2.4.0 → pactkit-2.4.1}/tests/unit/test_story056_commands.py +0 -0
  909. {pactkit-2.4.0 → pactkit-2.4.1}/tests/unit/test_story056_config.py +0 -0
  910. {pactkit-2.4.0 → pactkit-2.4.1}/tests/unit/test_story057_implicit_cleanup.py +0 -0
  911. {pactkit-2.4.0 → pactkit-2.4.1}/tests/unit/test_story058_routing_fix.py +0 -0
  912. {pactkit-2.4.0 → pactkit-2.4.1}/tests/unit/test_story060_init_hang.py +0 -0
  913. {pactkit-2.4.0 → pactkit-2.4.1}/tests/unit/test_story061_remove_thinking.py +0 -0
  914. {pactkit-2.4.0 → pactkit-2.4.1}/tests/unit/test_story062_mcp_recommendations.py +0 -0
  915. {pactkit-2.4.0 → pactkit-2.4.1}/tests/unit/test_story063_prompt_slimming.py +0 -0
  916. {pactkit-2.4.0 → pactkit-2.4.1}/tests/unit/test_story064_venv_local_md.py +0 -0
  917. {pactkit-2.4.0 → pactkit-2.4.1}/tests/unit/test_story065_sprint_model.py +0 -0
  918. {pactkit-2.4.0 → pactkit-2.4.1}/tests/unit/test_story069_opencode_format.py +0 -0
  919. {pactkit-2.4.0 → pactkit-2.4.1}/tests/unit/test_story070_opencode_compliance.py +0 -0
  920. {pactkit-2.4.0 → pactkit-2.4.1}/tests/unit/test_story071_opencode_config_parity.py +0 -0
  921. {pactkit-2.4.0 → pactkit-2.4.1}/tests/unit/test_story072_developer_prefix.py +0 -0
  922. {pactkit-2.4.0 → pactkit-2.4.1}/tests/unit/test_story073_command_model_routing.py +0 -0
  923. {pactkit-2.4.0 → pactkit-2.4.1}/tests/unit/test_story_slim009_lazy_rules.py +0 -0
  924. {pactkit-2.4.0 → pactkit-2.4.1}/tests/unit/test_story_slim010_dry_refactor.py +0 -0
  925. {pactkit-2.4.0 → pactkit-2.4.1}/tests/unit/test_story_slim011_command_rules.py +0 -0
  926. {pactkit-2.4.0 → pactkit-2.4.1}/tests/unit/test_story_slim012_ci.py +0 -0
  927. {pactkit-2.4.0 → pactkit-2.4.1}/tests/unit/test_story_slim014_clean.py +0 -0
  928. {pactkit-2.4.0 → pactkit-2.4.1}/tests/unit/test_story_slim014_context.py +0 -0
  929. {pactkit-2.4.0 → pactkit-2.4.1}/tests/unit/test_story_slim014_guard.py +0 -0
  930. {pactkit-2.4.0 → pactkit-2.4.1}/tests/unit/test_story_slim014_lazy_viz.py +0 -0
  931. {pactkit-2.4.0 → pactkit-2.4.1}/tests/unit/test_story_slim014_next_id.py +0 -0
  932. {pactkit-2.4.0 → pactkit-2.4.1}/tests/unit/test_story_slim014_regression.py +0 -0
  933. {pactkit-2.4.0 → pactkit-2.4.1}/tests/unit/test_story_slim014_sec_scope.py +0 -0
  934. {pactkit-2.4.0 → pactkit-2.4.1}/tests/unit/test_story_slim014_validators.py +0 -0
  935. {pactkit-2.4.0 → pactkit-2.4.1}/tests/unit/test_story_slim015_doctor.py +0 -0
  936. {pactkit-2.4.0 → pactkit-2.4.1}/tests/unit/test_story_slim016_testmap_lint.py +0 -0
  937. {pactkit-2.4.0 → pactkit-2.4.1}/tests/unit/test_story_slim017.py +0 -0
  938. {pactkit-2.4.0 → pactkit-2.4.1}/tests/unit/test_story_slim018.py +0 -0
  939. {pactkit-2.4.0 → pactkit-2.4.1}/tests/unit/test_story_slim019_plan_subphases.py +0 -0
  940. {pactkit-2.4.0 → pactkit-2.4.1}/tests/unit/test_story_slim020_explore_stall_fix.py +0 -0
  941. {pactkit-2.4.0 → pactkit-2.4.1}/tests/unit/test_story_slim021.py +0 -0
  942. {pactkit-2.4.0 → pactkit-2.4.1}/tests/unit/test_story_slim022.py +0 -0
  943. {pactkit-2.4.0 → pactkit-2.4.1}/tests/unit/test_story_slim023.py +0 -0
  944. {pactkit-2.4.0 → pactkit-2.4.1}/tests/unit/test_story_slim024.py +0 -0
  945. {pactkit-2.4.0 → pactkit-2.4.1}/tests/unit/test_story_slim025.py +0 -0
  946. {pactkit-2.4.0 → pactkit-2.4.1}/tests/unit/test_story_slim026.py +0 -0
  947. {pactkit-2.4.0 → pactkit-2.4.1}/tests/unit/test_story_slim027.py +0 -0
  948. {pactkit-2.4.0 → pactkit-2.4.1}/tests/unit/test_story_slim028.py +0 -0
  949. {pactkit-2.4.0 → pactkit-2.4.1}/tests/unit/test_story_slim029.py +0 -0
  950. {pactkit-2.4.0 → pactkit-2.4.1}/tests/unit/test_story_slim030.py +0 -0
  951. {pactkit-2.4.0 → pactkit-2.4.1}/tests/unit/test_story_slim031.py +0 -0
  952. {pactkit-2.4.0 → pactkit-2.4.1}/tests/unit/test_story_slim032.py +0 -0
  953. {pactkit-2.4.0 → pactkit-2.4.1}/tests/unit/test_story_slim033.py +0 -0
  954. {pactkit-2.4.0 → pactkit-2.4.1}/tests/unit/test_story_slim034.py +0 -0
  955. {pactkit-2.4.0 → pactkit-2.4.1}/tests/unit/test_story_slim035.py +0 -0
  956. {pactkit-2.4.0 → pactkit-2.4.1}/tests/unit/test_story_slim036.py +0 -0
  957. {pactkit-2.4.0 → pactkit-2.4.1}/tests/unit/test_story_slim037.py +0 -0
  958. {pactkit-2.4.0 → pactkit-2.4.1}/tests/unit/test_story_slim038.py +0 -0
  959. {pactkit-2.4.0 → pactkit-2.4.1}/tests/unit/test_story_slim039.py +0 -0
  960. {pactkit-2.4.0 → pactkit-2.4.1}/tests/unit/test_story_slim040.py +0 -0
  961. {pactkit-2.4.0 → pactkit-2.4.1}/tests/unit/test_story_slim041.py +0 -0
  962. {pactkit-2.4.0 → pactkit-2.4.1}/tests/unit/test_story_slim042.py +0 -0
  963. {pactkit-2.4.0 → pactkit-2.4.1}/tests/unit/test_story_slim043.py +0 -0
  964. {pactkit-2.4.0 → pactkit-2.4.1}/tests/unit/test_story_slim044.py +0 -0
  965. {pactkit-2.4.0 → pactkit-2.4.1}/tests/unit/test_story_slim045.py +0 -0
  966. {pactkit-2.4.0 → pactkit-2.4.1}/tests/unit/test_story_slim046.py +0 -0
  967. {pactkit-2.4.0 → pactkit-2.4.1}/tests/unit/test_story_slim047.py +0 -0
  968. {pactkit-2.4.0 → pactkit-2.4.1}/tests/unit/test_story_slim048.py +0 -0
  969. {pactkit-2.4.0 → pactkit-2.4.1}/tests/unit/test_tools.py +0 -0
  970. {pactkit-2.4.0 → pactkit-2.4.1}/tests/unit/test_update_task.py +0 -0
  971. {pactkit-2.4.0 → pactkit-2.4.1}/tests/unit/test_visualize_modes.py +0 -0
@@ -20,7 +20,7 @@ jobs:
20
20
  - name: Install dependencies
21
21
  run: |
22
22
  python -m pip install --upgrade pip
23
- pip install -e ".[multilang]"
23
+ pip install -e ".[dev]" || pip install -e .
24
24
  pip install pytest ruff
25
25
  pactkit init
26
26
 
@@ -0,0 +1,61 @@
1
+ name: Publish to PyPI
2
+
3
+ on:
4
+ push:
5
+ tags:
6
+ - "v*"
7
+
8
+ permissions:
9
+ contents: read
10
+
11
+ jobs:
12
+ test:
13
+ runs-on: ubuntu-latest
14
+ strategy:
15
+ matrix:
16
+ python-version: ["3.10", "3.11", "3.12", "3.13"]
17
+ steps:
18
+ - uses: actions/checkout@v4
19
+ with:
20
+ fetch-depth: 0
21
+
22
+ - name: Set up Python ${{ matrix.python-version }}
23
+ uses: actions/setup-python@v5
24
+ with:
25
+ python-version: ${{ matrix.python-version }}
26
+
27
+ - name: Install dependencies
28
+ run: |
29
+ python -m pip install --upgrade pip
30
+ pip install -e ".[dev]" || pip install -e .
31
+ pip install pytest ruff
32
+
33
+ - name: Lint
34
+ run: ruff check src/ tests/
35
+
36
+ - name: Test
37
+ run: pytest tests/ -v --ignore=tests/unit/test_story_slim032.py --ignore=tests/unit/test_story_slim033.py --ignore=tests/unit/test_story_slim034.py
38
+
39
+ publish:
40
+ needs: test
41
+ runs-on: ubuntu-latest
42
+ environment: pypi
43
+ permissions:
44
+ contents: read
45
+ id-token: write
46
+ steps:
47
+ - uses: actions/checkout@v4
48
+
49
+ - name: Set up Python
50
+ uses: actions/setup-python@v5
51
+ with:
52
+ python-version: "3.12"
53
+
54
+ - name: Install build tools
55
+ run: python -m pip install --upgrade pip build
56
+
57
+ - name: Build package
58
+ run: python -m build
59
+
60
+ - name: Publish to PyPI
61
+ uses: pypa/gh-action-pypi-publish@release/v1
@@ -2,7 +2,7 @@
2
2
  # Edit this file to customize which components are deployed.
3
3
  # Remove items from a list to disable them. Default: all enabled.
4
4
 
5
- version: "2.4.0"
5
+ version: "2.4.1"
6
6
  stack: python
7
7
  root: .
8
8
  developer: "slim"
@@ -4,6 +4,19 @@ All notable changes to PactKit will be documented in this file.
4
4
 
5
5
  Format follows [Keep a Changelog](https://keepachangelog.com/).
6
6
 
7
+ ## [2.4.1] - 2026-03-26
8
+
9
+ ### Fixed
10
+ - **CI Template Override** (HOTFIX-slim-051) — `_build_github_workflow()` now reads `ci.install_cmd` from `pactkit.yaml` before falling back to `CI_PROFILES` default, preventing `pactkit update` from reverting custom install commands.
11
+ - **Board ITEM_ID_RE** (HOTFIX-slim-052) — Regex now supports developer-prefixed IDs (`HOTFIX-slim-052`, `STORY-alice-001`), matching the pattern already used by `backfill.py` and `doctor.py`.
12
+
13
+ ### Added
14
+ - **Board `move_story` Command** (HOTFIX-slim-052) — New `board.py move_story <ID> <target>` CLI subcommand moves stories between Backlog/In Progress/Done sections regardless of checkbox state.
15
+ - **Automated PyPI Publish** — New `publish.yml` GitHub Actions workflow triggers on `v*` tags; runs full test matrix (Python 3.10-3.13) then publishes via PyPI trusted publisher (OIDC).
16
+
17
+ ### Changed
18
+ - **Closed-Source Migration** — Source repo moved to `pactkit/pactkit-src` (private); public entry point at `pactkit/pactkit-public` (README, issues, install guide). PyPI distribution unchanged.
19
+
7
20
  ## [2.4.0] - 2026-03-25
8
21
 
9
22
  ### Added
@@ -1,11 +1,11 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pactkit
3
- Version: 2.4.0
3
+ Version: 2.4.1
4
4
  Summary: Spec-driven agentic DevOps toolkit for AI coding assistants
5
5
  Project-URL: Homepage, https://pactkit.dev
6
- Project-URL: Repository, https://github.com/pactkit/pactkit
6
+ Project-URL: Repository, https://github.com/pactkit/pactkit-public
7
7
  Project-URL: Documentation, https://pactkit.dev/docs
8
- Project-URL: Issues, https://github.com/pactkit/pactkit/issues
8
+ Project-URL: Issues, https://github.com/pactkit/pactkit-public/issues
9
9
  Author: Slim
10
10
  License-Expression: MIT
11
11
  License-File: LICENSE
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "pactkit"
7
- version = "2.4.0"
7
+ version = "2.4.1"
8
8
  description = "Spec-driven agentic DevOps toolkit for AI coding assistants"
9
9
  readme = "README.md"
10
10
  license = "MIT"
@@ -55,9 +55,9 @@ multilang = [
55
55
 
56
56
  [project.urls]
57
57
  Homepage = "https://pactkit.dev"
58
- Repository = "https://github.com/pactkit/pactkit"
58
+ Repository = "https://github.com/pactkit/pactkit-public"
59
59
  Documentation = "https://pactkit.dev/docs"
60
- Issues = "https://github.com/pactkit/pactkit/issues"
60
+ Issues = "https://github.com/pactkit/pactkit-public/issues"
61
61
 
62
62
  [project.scripts]
63
63
  pactkit = "pactkit.cli:main"
@@ -1,3 +1,3 @@
1
1
  """PactKit - Spec-driven agentic DevOps toolkit."""
2
2
 
3
- __version__ = "2.4.0"
3
+ __version__ = "2.4.1"
@@ -996,9 +996,10 @@ def _build_github_workflow(stack, ci_config, lang_profile, is_ghe=False):
996
996
  for key, val in ci_prof["extra_setup"].items():
997
997
  lines.append(f" {key}: {val}")
998
998
  lines.append("")
999
+ install_cmd = ci_config.get("install_cmd", ci_prof["install_cmd"])
999
1000
  lines.append(" - name: Install dependencies")
1000
1001
  lines.append(" run: |")
1001
- lines.append(f" {ci_prof['install_cmd']}")
1002
+ lines.append(f" {install_cmd}")
1002
1003
  lines.append("")
1003
1004
  lines.append(" - name: Lint")
1004
1005
  lines.append(f" run: {lint_command}")
@@ -16,7 +16,7 @@ def nl():
16
16
  # === SCRIPT BODY ===
17
17
 
18
18
  # Shared pattern for all recognized work item prefixes
19
- ITEM_ID_RE = r"(?:STORY|HOTFIX|BUG)-\d+"
19
+ ITEM_ID_RE = r"(?:STORY|HOTFIX|BUG)(?:-[a-z]+)?-\d+"
20
20
 
21
21
  # Flexible story title pattern: matches ### or #### (tolerant) with [ID] or ID: or ID formats
22
22
  # Group 1: story ID, Group 2: title text
@@ -206,6 +206,54 @@ def snapshot_graph(version):
206
206
  return f"✅ Snapshot {version}: {count} graphs saved"
207
207
 
208
208
 
209
+ # --- MOVE ---
210
+ def move_story(sid, target):
211
+ """Move a story to the specified section regardless of checkbox state."""
212
+ valid_targets = {"backlog": _BACKLOG, "in_progress": _IN_PROGRESS, "done": _DONE}
213
+ if target not in valid_targets:
214
+ return f"❌ Invalid target: {target}. Use: backlog, in_progress, done"
215
+ p = Path.cwd() / "docs/product/sprint_board.md"
216
+ if not p.exists():
217
+ return "❌ No Board"
218
+ content = p.read_text(encoding="utf-8")
219
+ blocks = _parse_story_blocks(content)
220
+ # Find the target story
221
+ story_block = None
222
+ for block_sid, block_text in blocks:
223
+ if block_sid == sid:
224
+ story_block = block_text
225
+ break
226
+ if story_block is None:
227
+ return f"❌ Story {sid} not found on board"
228
+ # Remove the story block from its current position
229
+ idx = content.find(story_block)
230
+ if idx == -1:
231
+ return f"❌ Story {sid} block not found in content"
232
+ content = content[:idx] + content[idx + len(story_block):]
233
+ content = re.sub(r"\n{3,}", nl() + nl(), content)
234
+ # Find target section and the next section after it
235
+ target_header = valid_targets[target]
236
+ section_order = [_BACKLOG, _IN_PROGRESS, _DONE]
237
+ target_idx = content.find(target_header)
238
+ if target_idx == -1:
239
+ return f"❌ Section '{target_header}' not found"
240
+ # Find the next section header after target
241
+ next_section_idx = len(content)
242
+ for sec in section_order:
243
+ sec_idx = content.find(sec)
244
+ if sec_idx > target_idx and sec_idx < next_section_idx:
245
+ next_section_idx = sec_idx
246
+ # Insert story block just before the next section (or at end)
247
+ insert_point = next_section_idx
248
+ entry = nl() + story_block + nl() + nl()
249
+ content = content[:insert_point].rstrip() + entry + content[insert_point:]
250
+ content = re.sub(r"\n{3,}", nl() + nl(), content)
251
+ tmp = p.with_suffix(".tmp")
252
+ tmp.write_text(content, encoding="utf-8")
253
+ os.replace(tmp, p)
254
+ return f"✅ Moved {sid} to {target}"
255
+
256
+
209
257
  # --- LIST ---
210
258
  def list_stories():
211
259
  p = Path.cwd() / "docs/product/sprint_board.md"
@@ -289,6 +337,9 @@ if __name__ == "__main__":
289
337
  p_ver.add_argument("version")
290
338
  p_snap = sub.add_parser("snapshot")
291
339
  p_snap.add_argument("version")
340
+ p_move = sub.add_parser("move_story")
341
+ p_move.add_argument("story_id")
342
+ p_move.add_argument("target", choices=["backlog", "in_progress", "done"])
292
343
  sub.add_parser("archive")
293
344
  sub.add_parser("list_stories")
294
345
  sub.add_parser("fix_board")
@@ -306,5 +357,7 @@ if __name__ == "__main__":
306
357
  print(archive_stories())
307
358
  elif a.cmd == "list_stories":
308
359
  print(list_stories())
360
+ elif a.cmd == "move_story":
361
+ print(move_story(a.story_id, a.target))
309
362
  elif a.cmd == "fix_board":
310
363
  print(fix_board())
@@ -875,9 +875,24 @@ def impact(target='.', entry=None):
875
875
 
876
876
 
877
877
  # --- MAIN VISUALIZE (v1.3.0 Multi-Mode) ---
878
- def visualize(target='.', focus=None, mode='file', entry=None, depth=0, max_nodes=0, reverse=False, lazy=False):
878
+ def visualize(target='.', focus=None, mode='file', entry=None, depth=0, max_nodes=0, reverse=False, lazy=False, split=False):
879
879
  root = Path(target).resolve()
880
880
 
881
+ # --- Unified mode (STORY-slim-049) ---
882
+ if mode == 'unified':
883
+ graph = build_unified_graph(root)
884
+ graphs_dir = root / 'docs' / 'architecture' / 'graphs'
885
+ graphs_dir.mkdir(parents=True, exist_ok=True)
886
+ dest = graphs_dir / 'unified_graph.mmd'
887
+ dest.write_text(graph.to_mermaid(), encoding='utf-8')
888
+ result = f'✅ Graph: {dest}'
889
+ # HOTFIX-slim-050: auto-split only for large graphs; --split forces it
890
+ if split or len(graph.nodes) > MAX_WORKFLOW_NODES:
891
+ focus_dir = graphs_dir / 'focus'
892
+ written = export_focus_graphs(graph, focus_dir)
893
+ result += f' + {len(written)} focus graphs in {focus_dir}'
894
+ return result
895
+
881
896
  # --- Workflow mode (STORY-slim-036) ---
882
897
  if mode == 'workflow':
883
898
  dest = root / 'docs' / 'architecture' / 'graphs' / 'workflow_graph.mmd'
@@ -1006,7 +1021,7 @@ class WorkflowGraph:
1006
1021
  """Sanitize a string for use as a Mermaid node ID."""
1007
1022
  return re.sub(r'[^a-zA-Z0-9_]', '_', raw)
1008
1023
 
1009
- def to_mermaid(self) -> str:
1024
+ def to_mermaid(self, max_render_nodes: int = 0) -> str:
1010
1025
  lines = ['graph TD']
1011
1026
  if self.layered:
1012
1027
  # STORY-slim-048 R3: Group by dimension for unified/layered graphs
@@ -1044,13 +1059,54 @@ class WorkflowGraph:
1044
1059
  sid = self._sanitize_id(n.id)
1045
1060
  lines.append(f' {sid}["{n.label}"]')
1046
1061
  lines.append(' end')
1062
+ # STORY-slim-049 R3: max_render_nodes truncation for human-readable output
1063
+ if max_render_nodes > 0:
1064
+ node_lines = [ln for ln in lines[1:] if '[' in ln and 'NOTE' not in ln]
1065
+ if len(node_lines) > max_render_nodes:
1066
+ truncated_count = len(node_lines) - max_render_nodes
1067
+ keep_ids = set()
1068
+ for ln in node_lines[:max_render_nodes]:
1069
+ nid = ln.strip().split('[')[0].strip()
1070
+ keep_ids.add(nid)
1071
+ filtered = ['graph TD']
1072
+ for ln in lines[1:]:
1073
+ if '[' in ln:
1074
+ line_id = ln.strip().split('[')[0].strip()
1075
+ if line_id in keep_ids:
1076
+ filtered.append(ln)
1077
+ elif 'subgraph' in ln or 'end' == ln.strip():
1078
+ filtered.append(ln)
1079
+ filtered.append(f' NOTE["... and {truncated_count} more nodes"]')
1080
+ lines = filtered
1081
+
1047
1082
  for e in self.edges:
1048
1083
  src = self._sanitize_id(e.source)
1049
1084
  dst = self._sanitize_id(e.target)
1050
1085
  arrow = '-.->' if e.relation == 'sequence' else '-->'
1086
+ if max_render_nodes > 0 and len(lines) > 1:
1087
+ rendered_ids = {ln.strip().split('[')[0].strip() for ln in lines if '[' in ln and 'NOTE' not in ln}
1088
+ if src not in rendered_ids or dst not in rendered_ids:
1089
+ continue
1051
1090
  lines.append(f' {src} {arrow}|{e.relation}| {dst}')
1052
1091
  return nl().join(lines)
1053
1092
 
1093
+ def forward_reach(self, entry_id: str) -> set[str]:
1094
+ """Forward BFS from entry_id — follow edges forward (source→target)."""
1095
+ forward_map: dict[str, list[str]] = {}
1096
+ for e in self.edges:
1097
+ forward_map.setdefault(e.source, []).append(e.target)
1098
+ visited: set[str] = set()
1099
+ queue = [entry_id]
1100
+ while queue:
1101
+ current = queue.pop(0)
1102
+ if current in visited:
1103
+ continue
1104
+ visited.add(current)
1105
+ for dst in forward_map.get(current, []):
1106
+ if dst not in visited:
1107
+ queue.append(dst)
1108
+ return visited
1109
+
1054
1110
  def reverse_reach(self, entry_id: str) -> set[str]:
1055
1111
  """Reverse BFS from entry_id — follow edges backward (target→source)."""
1056
1112
  reverse_map: dict[str, list[str]] = {}
@@ -1963,9 +2019,8 @@ def build_unified_graph(root) -> 'WorkflowGraph':
1963
2019
  """Build a unified layered graph merging all topology dimensions with code-level graph (STORY-slim-048 R1).
1964
2020
 
1965
2021
  Returns WorkflowGraph with layered=True.
1966
- Enforces MAX_WORKFLOW_NODEStruncates with warning if exceeded.
2022
+ STORY-slim-049 R1: No truncation full graph for accurate reverse_reach() impact analysis.
1967
2023
  """
1968
- import warnings as _warnings
1969
2024
  root = Path(root).resolve()
1970
2025
  unified = WorkflowGraph()
1971
2026
  unified.layered = True
@@ -1987,19 +2042,49 @@ def build_unified_graph(root) -> 'WorkflowGraph':
1987
2042
  # Bridge edges across dimensions
1988
2043
  _build_bridge_edges(func_registry, topology_graph, unified)
1989
2044
 
1990
- # Enforce MAX_WORKFLOW_NODES
1991
- if len(unified.nodes) > MAX_WORKFLOW_NODES:
1992
- _warnings.warn(
1993
- f'Unified graph has {len(unified.nodes)} nodes, truncating to {MAX_WORKFLOW_NODES}',
1994
- stacklevel=2,
1995
- )
1996
- keep_ids = set(list(unified.nodes.keys())[:MAX_WORKFLOW_NODES])
1997
- unified.nodes = {k: v for k, v in unified.nodes.items() if k in keep_ids}
1998
- unified.edges = [e for e in unified.edges if e.source in keep_ids and e.target in keep_ids]
2045
+ # STORY-slim-049 R1: No truncation — full graph for accurate reverse_reach() impact analysis.
2046
+ # MAX_WORKFLOW_NODES constant retained for backward compatibility but not enforced here.
1999
2047
 
2000
2048
  return unified
2001
2049
 
2002
2050
 
2051
+ # --- STORY-slim-049: Focused Sub-Graph Export ---
2052
+
2053
+ _ENTRY_POINT_KINDS = {'command', 'service', 'page'}
2054
+
2055
+
2056
+ def export_focus_graphs(graph: WorkflowGraph, output_dir) -> list:
2057
+ """Export per-entry-point focused sub-graph .mmd files (STORY-slim-049 R2).
2058
+
2059
+ Identifies first-level entry points (command/service/page), extracts
2060
+ reachable sub-graphs via reverse_reach(), writes each as a standalone .mmd.
2061
+ Returns list of Path objects for written files.
2062
+ """
2063
+ output_dir = Path(output_dir)
2064
+ entry_points = [n for n in graph.nodes.values() if n.kind in _ENTRY_POINT_KINDS]
2065
+ if not entry_points:
2066
+ return []
2067
+ output_dir.mkdir(parents=True, exist_ok=True)
2068
+ written = []
2069
+ for entry in sorted(entry_points, key=lambda n: n.id):
2070
+ reached_ids = graph.forward_reach(entry.id)
2071
+ # Build sub-graph
2072
+ sub = WorkflowGraph()
2073
+ for nid in reached_ids:
2074
+ node = graph.nodes.get(nid)
2075
+ if node:
2076
+ sub.add_node(node)
2077
+ for edge in graph.edges:
2078
+ if edge.source in reached_ids and edge.target in reached_ids:
2079
+ sub.add_edge(edge)
2080
+ # Write .mmd
2081
+ sanitized = WorkflowGraph._sanitize_id(entry.id)
2082
+ dest = output_dir / f'focus_{sanitized}.mmd'
2083
+ dest.write_text(sub.to_mermaid(), encoding='utf-8')
2084
+ written.append(dest)
2085
+ return written
2086
+
2087
+
2003
2088
  # --- CLI ---
2004
2089
  if __name__ == '__main__':
2005
2090
  parser = argparse.ArgumentParser()
@@ -2008,17 +2093,18 @@ if __name__ == '__main__':
2008
2093
  sub.add_parser('list_rules')
2009
2094
  p_viz = sub.add_parser('visualize')
2010
2095
  p_viz.add_argument('--focus')
2011
- p_viz.add_argument('--mode', choices=['file', 'class', 'call', 'workflow'], default='file')
2096
+ p_viz.add_argument('--mode', choices=['file', 'class', 'call', 'workflow', 'unified'], default='file')
2012
2097
  p_viz.add_argument('--entry')
2013
2098
  p_viz.add_argument('--depth', type=int, default=0, help='Limit graph traversal to N levels (0=unlimited)')
2014
2099
  p_viz.add_argument('--max-nodes', type=int, default=0, help='Truncate graph to N nodes (0=unlimited)')
2015
2100
  p_viz.add_argument('--reverse', action='store_true', default=False, help='Reverse BFS: find callers of entry function (STORY-053)')
2016
2101
  p_viz.add_argument('--lazy', action='store_true', default=False, help='Skip regeneration if graph is up-to-date')
2102
+ p_viz.add_argument('--split', action='store_true', default=False, help='Generate per-entry-point focus graphs (unified mode only)')
2017
2103
  p_impact = sub.add_parser('impact', help='Find test files impacted by a changed function (STORY-053)')
2018
2104
  p_impact.add_argument('--entry', required=True, help='Changed function name')
2019
2105
 
2020
2106
  a = parser.parse_args()
2021
2107
  if a.cmd == 'init_arch': print(init_architecture())
2022
- elif a.cmd == 'visualize': print(visualize('.', a.focus, a.mode, a.entry, depth=a.depth, max_nodes=a.max_nodes, reverse=a.reverse, lazy=a.lazy))
2108
+ elif a.cmd == 'visualize': print(visualize('.', a.focus, a.mode, a.entry, depth=a.depth, max_nodes=a.max_nodes, reverse=a.reverse, lazy=a.lazy, split=a.split))
2023
2109
  elif a.cmd == 'impact': print(impact('.', a.entry))
2024
2110
  elif a.cmd == 'list_rules': print(list_rules())
@@ -0,0 +1,200 @@
1
+ """Tests for STORY-slim-049: Split unified graph — full for AI + focused sub-graphs for humans."""
2
+ import sys
3
+ import warnings
4
+ from pathlib import Path
5
+
6
+ sys.path.insert(0, str(Path(__file__).parent.parent.parent / 'src'))
7
+ from pactkit.skills.visualize import (
8
+ MAX_WORKFLOW_NODES,
9
+ WorkflowEdge,
10
+ WorkflowGraph,
11
+ WorkflowNode,
12
+ build_unified_graph,
13
+ export_focus_graphs,
14
+ )
15
+
16
+
17
+ def _make_project(tmp_path, files: dict[str, str]) -> Path:
18
+ for rel, content in files.items():
19
+ p = tmp_path / rel
20
+ p.parent.mkdir(parents=True, exist_ok=True)
21
+ p.write_text(content, encoding='utf-8')
22
+ return tmp_path
23
+
24
+
25
+ # --- R1: No truncation in build_unified_graph ---
26
+
27
+ class TestNoTruncation:
28
+ def test_full_graph_no_truncation_warning(self, tmp_path):
29
+ """AC1: build_unified_graph returns all nodes without truncation warning."""
30
+ # Create a project with 600+ functions (exceeding MAX_WORKFLOW_NODES)
31
+ funcs = '\n'.join(f'def func_{i}(): pass' for i in range(600))
32
+ _make_project(tmp_path, {
33
+ 'pyproject.toml': '[project]\nname = "bigproject"',
34
+ 'src/big.py': funcs,
35
+ })
36
+ with warnings.catch_warnings(record=True) as w:
37
+ warnings.simplefilter('always')
38
+ graph = build_unified_graph(str(tmp_path))
39
+ truncation_warnings = [x for x in w if 'truncating' in str(x.message).lower()]
40
+ assert len(truncation_warnings) == 0, f'Unexpected truncation warning: {truncation_warnings}'
41
+ # All 600 function nodes should be present
42
+ func_nodes = [n for n in graph.nodes.values() if n.kind == 'function']
43
+ assert len(func_nodes) >= 600
44
+
45
+ def test_max_workflow_nodes_constant_still_defined(self):
46
+ """R5: MAX_WORKFLOW_NODES constant still exists for backward compat."""
47
+ assert isinstance(MAX_WORKFLOW_NODES, int)
48
+ assert MAX_WORKFLOW_NODES == 500
49
+
50
+
51
+ # --- R2: export_focus_graphs ---
52
+
53
+ class TestExportFocusGraphs:
54
+ def _build_graph_with_entries(self) -> WorkflowGraph:
55
+ """Build a graph with commands, services, and pages as entry points."""
56
+ g = WorkflowGraph()
57
+ g.layered = True
58
+ # Commands
59
+ g.add_node(WorkflowNode(id='project-act', kind='command', label='project-act'))
60
+ g.add_node(WorkflowNode(id='project-plan', kind='command', label='project-plan'))
61
+ # Services
62
+ g.add_node(WorkflowNode(id='order-svc', kind='service', label='order-svc'))
63
+ # Pages
64
+ g.add_node(WorkflowNode(id='/dashboard', kind='page', label='/dashboard'))
65
+ # Supporting nodes
66
+ g.add_node(WorkflowNode(id='senior-dev', kind='agent', label='Senior Developer'))
67
+ g.add_node(WorkflowNode(id='pactkit-board', kind='skill', label='pactkit-board'))
68
+ # Edges
69
+ g.add_edge(WorkflowEdge(source='project-act', target='senior-dev', relation='invokes'))
70
+ g.add_edge(WorkflowEdge(source='project-act', target='pactkit-board', relation='depends_on'))
71
+ g.add_edge(WorkflowEdge(source='project-plan', target='senior-dev', relation='invokes'))
72
+ return g
73
+
74
+ def test_creates_files_per_entry_point(self, tmp_path):
75
+ """AC2: One .mmd file per entry point (command, service, page)."""
76
+ graph = self._build_graph_with_entries()
77
+ result = export_focus_graphs(graph, tmp_path)
78
+ assert isinstance(result, list)
79
+ # 4 entry points: project-act, project-plan, order-svc, /dashboard
80
+ assert len(result) == 4
81
+ for p in result:
82
+ assert p.exists()
83
+ assert p.suffix == '.mmd'
84
+
85
+ def test_focus_file_starts_with_graph_td(self, tmp_path):
86
+ """AC3: Each focused sub-graph is valid Mermaid starting with 'graph TD'."""
87
+ graph = self._build_graph_with_entries()
88
+ result = export_focus_graphs(graph, tmp_path)
89
+ for p in result:
90
+ content = p.read_text(encoding='utf-8')
91
+ assert content.startswith('graph TD'), f'{p.name} does not start with graph TD'
92
+
93
+ def test_focus_graph_contains_only_reachable_nodes(self, tmp_path):
94
+ """AC2: Each focus file contains only nodes reachable via reverse_reach."""
95
+ graph = self._build_graph_with_entries()
96
+ export_focus_graphs(graph, tmp_path)
97
+ # Find the project-act focus file
98
+ act_files = list(tmp_path.glob('focus_project_act*'))
99
+ assert len(act_files) == 1
100
+ content = act_files[0].read_text(encoding='utf-8')
101
+ # project-act's reverse_reach should include senior-dev and pactkit-board
102
+ assert 'senior_dev' in content or 'senior-dev' in content
103
+ assert 'pactkit_board' in content or 'pactkit-board' in content
104
+ # order-svc should NOT be in project-act's focus graph
105
+ assert 'order_svc' not in content and 'order-svc' not in content
106
+
107
+ def test_empty_graph_returns_empty_list(self, tmp_path):
108
+ """Edge case: graph with no entry points produces no files."""
109
+ graph = WorkflowGraph()
110
+ graph.add_node(WorkflowNode(id='some-func', kind='function', label='some_func'))
111
+ result = export_focus_graphs(graph, tmp_path)
112
+ assert result == []
113
+
114
+ def test_output_dir_created_if_missing(self, tmp_path):
115
+ """export_focus_graphs creates output_dir if it doesn't exist."""
116
+ graph = self._build_graph_with_entries()
117
+ out = tmp_path / 'nested' / 'focus'
118
+ result = export_focus_graphs(graph, out)
119
+ assert out.is_dir()
120
+ assert len(result) > 0
121
+
122
+
123
+ # --- R3: max_render_nodes in to_mermaid ---
124
+
125
+ class TestMaxRenderNodes:
126
+ def test_default_renders_all(self):
127
+ """Default max_render_nodes=0 renders all nodes."""
128
+ g = WorkflowGraph()
129
+ for i in range(100):
130
+ g.add_node(WorkflowNode(id=f'n{i}', kind='function', label=f'n{i}'))
131
+ mermaid = g.to_mermaid()
132
+ # Should have all 100 nodes
133
+ node_lines = [l for l in mermaid.split('\n') if '[' in l and 'NOTE' not in l]
134
+ assert len(node_lines) == 100
135
+
136
+ def test_truncates_at_limit(self):
137
+ """AC4: max_render_nodes=50 renders 50 nodes + NOTE."""
138
+ g = WorkflowGraph()
139
+ for i in range(100):
140
+ g.add_node(WorkflowNode(id=f'n{i}', kind='function', label=f'n{i}'))
141
+ mermaid = g.to_mermaid(max_render_nodes=50)
142
+ node_lines = [l for l in mermaid.split('\n') if '[' in l and 'NOTE' not in l]
143
+ assert len(node_lines) == 50
144
+ assert 'NOTE' in mermaid
145
+ assert '50 more' in mermaid
146
+
147
+ def test_no_truncation_when_under_limit(self):
148
+ """When graph has fewer nodes than limit, no NOTE added."""
149
+ g = WorkflowGraph()
150
+ for i in range(10):
151
+ g.add_node(WorkflowNode(id=f'n{i}', kind='function', label=f'n{i}'))
152
+ mermaid = g.to_mermaid(max_render_nodes=50)
153
+ assert 'NOTE' not in mermaid
154
+
155
+
156
+ # --- R4: CLI unified mode ---
157
+
158
+ class TestUnifiedCLI:
159
+ def test_unified_mode_writes_unified_graph(self, tmp_path):
160
+ """AC5: visualize --mode unified writes unified_graph.mmd."""
161
+ from pactkit.skills.visualize import visualize
162
+ _make_project(tmp_path, {
163
+ 'pyproject.toml': '[project]\nname = "test"',
164
+ 'src/app.py': 'def main(): pass\n',
165
+ })
166
+ result = visualize(target=str(tmp_path), mode='unified')
167
+ expected = tmp_path / 'docs' / 'architecture' / 'graphs' / 'unified_graph.mmd'
168
+ assert expected.exists()
169
+ content = expected.read_text(encoding='utf-8')
170
+ assert content.startswith('graph TD')
171
+
172
+ def test_unified_split_creates_focus_dir(self, tmp_path):
173
+ """AC6: --split generates focus/ directory with per-entry-point files."""
174
+ from pactkit.skills.visualize import visualize
175
+ _make_project(tmp_path, {
176
+ 'pyproject.toml': '[project]\nname = "test"',
177
+ '.claude/commands/project-act.md': '# Act\n- **Agent**: Senior Developer\n',
178
+ 'src/app.py': 'def main(): pass\n',
179
+ })
180
+ result = visualize(target=str(tmp_path), mode='unified', split=True)
181
+ focus_dir = tmp_path / 'docs' / 'architecture' / 'graphs' / 'focus'
182
+ assert focus_dir.is_dir()
183
+ focus_files = list(focus_dir.glob('*.mmd'))
184
+ assert len(focus_files) >= 1
185
+
186
+
187
+ # --- R5: Backward compatibility ---
188
+
189
+ class TestBackwardCompat:
190
+ def test_workflow_mode_unchanged(self, tmp_path):
191
+ """AC7: workflow mode still works identically."""
192
+ from pactkit.skills.visualize import visualize
193
+ _make_project(tmp_path, {
194
+ 'pyproject.toml': '[project]\nname = "test"',
195
+ '.claude/commands/project-act.md': '# Act\n- **Agent**: Senior Developer\n',
196
+ })
197
+ result = visualize(target=str(tmp_path), mode='workflow')
198
+ expected = tmp_path / 'docs' / 'architecture' / 'graphs' / 'workflow_graph.mmd'
199
+ assert expected.exists()
200
+ assert 'unified_graph' not in result
@@ -1,4 +0,0 @@
1
- node_modules
2
- package.json
3
- bun.lock
4
- .gitignore
@@ -1,18 +0,0 @@
1
- {
2
- "lockfileVersion": 1,
3
- "configVersion": 1,
4
- "workspaces": {
5
- "": {
6
- "dependencies": {
7
- "@opencode-ai/plugin": "1.2.27",
8
- },
9
- },
10
- },
11
- "packages": {
12
- "@opencode-ai/plugin": ["@opencode-ai/plugin@1.2.27", "", { "dependencies": { "@opencode-ai/sdk": "1.2.27", "zod": "4.1.8" } }, "sha512-h+8Bw9v9nghMg7T+SUCTzxlIhOrsTqXW7U0HVLGQST5DjbN7uyCUM51roZWZ8LRjGxzbzFhvPnY1bj8i+ioZyw=="],
13
-
14
- "@opencode-ai/sdk": ["@opencode-ai/sdk@1.2.27", "", {}, "sha512-Wk0o/I+Fo+wE3zgvlJDs8Fb67KlKqX0PrV8dK5adSDkANq6r4Z25zXJg2iOir+a8ntg3rAcpel1OY4FV/TwRUA=="],
15
-
16
- "zod": ["zod@4.1.8", "", {}, "sha512-5R1P+WwQqmmMIEACyzSvo4JXHY5WiAFHRMg+zBZKgKS+Q1viRa0C1hmUKtHltoIFKtIdki3pRxkmpP74jnNYHQ=="],
17
- }
18
- }
@@ -1 +0,0 @@
1
- *
@@ -1,7 +0,0 @@
1
- ---
2
- description: ''
3
- label: project
4
- limit: 5000
5
- read_only: false
6
- ---
7
-