pactkit 2.4.0__tar.gz → 2.5.0__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.
- {pactkit-2.4.0 → pactkit-2.5.0}/.github/workflows/pactkit.yml +1 -1
- pactkit-2.5.0/.github/workflows/publish.yml +61 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/.opencode/pactkit.yaml +1 -1
- {pactkit-2.4.0 → pactkit-2.5.0}/CHANGELOG.md +34 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/PKG-INFO +3 -3
- {pactkit-2.4.0 → pactkit-2.5.0}/pyproject.toml +3 -3
- {pactkit-2.4.0 → pactkit-2.5.0}/src/pactkit/__init__.py +1 -1
- pactkit-2.5.0/src/pactkit/__main__.py +4 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/src/pactkit/config.py +9 -1
- {pactkit-2.4.0 → pactkit-2.5.0}/src/pactkit/generators/deployer.py +6 -5
- {pactkit-2.4.0 → pactkit-2.5.0}/src/pactkit/prompts/commands.py +5 -1
- {pactkit-2.4.0 → pactkit-2.5.0}/src/pactkit/prompts/workflows.py +11 -10
- {pactkit-2.4.0 → pactkit-2.5.0}/src/pactkit/skills/__init__.py +1 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/src/pactkit/skills/board.py +137 -23
- {pactkit-2.4.0 → pactkit-2.5.0}/src/pactkit/skills/scaffold.py +27 -5
- {pactkit-2.4.0 → pactkit-2.5.0}/src/pactkit/skills/spec_linter.py +39 -12
- {pactkit-2.4.0 → pactkit-2.5.0}/src/pactkit/skills/visualize.py +251 -65
- pactkit-2.5.0/src/pactkit/utils.py +14 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/tests/unit/test_bug030_spec_lint_cli.py +8 -5
- {pactkit-2.4.0 → pactkit-2.5.0}/tests/unit/test_sprint_command.py +77 -5
- {pactkit-2.4.0 → pactkit-2.5.0}/tests/unit/test_story038_call_graph_update.py +4 -2
- {pactkit-2.4.0 → pactkit-2.5.0}/tests/unit/test_story042_spec_linter.py +5 -5
- {pactkit-2.4.0 → pactkit-2.5.0}/tests/unit/test_story048_worktree_isolation.py +2 -1
- {pactkit-2.4.0 → pactkit-2.5.0}/tests/unit/test_story053_impact_regression.py +5 -5
- {pactkit-2.4.0 → pactkit-2.5.0}/tests/unit/test_story063_prompt_slimming.py +4 -2
- pactkit-2.5.0/tests/unit/test_story_slim049.py +200 -0
- pactkit-2.5.0/tests/unit/test_story_slim051.py +585 -0
- pactkit-2.5.0/tests/unit/test_story_slim052.py +604 -0
- pactkit-2.5.0/tests/unit/test_story_slim053.py +229 -0
- pactkit-2.5.0/tests/unit/test_story_slim054.py +138 -0
- pactkit-2.5.0/tests/unit/test_story_slim055.py +93 -0
- pactkit-2.5.0/tests/unit/test_story_slim056.py +495 -0
- pactkit-2.4.0/.opencode/.gitignore +0 -4
- pactkit-2.4.0/.opencode/bun.lock +0 -18
- pactkit-2.4.0/.opencode/memory/.gitignore +0 -1
- pactkit-2.4.0/.opencode/memory/project.md +0 -7
- pactkit-2.4.0/.opencode/node_modules/@opencode-ai/plugin/package.json +0 -34
- pactkit-2.4.0/.opencode/node_modules/@opencode-ai/sdk/package.json +0 -52
- pactkit-2.4.0/.opencode/node_modules/zod/LICENSE +0 -21
- pactkit-2.4.0/.opencode/node_modules/zod/README.md +0 -208
- pactkit-2.4.0/.opencode/node_modules/zod/index.cjs +0 -33
- pactkit-2.4.0/.opencode/node_modules/zod/index.d.cts +0 -4
- pactkit-2.4.0/.opencode/node_modules/zod/index.d.ts +0 -4
- pactkit-2.4.0/.opencode/node_modules/zod/index.js +0 -4
- pactkit-2.4.0/.opencode/node_modules/zod/locales/index.cjs +0 -17
- pactkit-2.4.0/.opencode/node_modules/zod/locales/index.d.cts +0 -1
- pactkit-2.4.0/.opencode/node_modules/zod/locales/index.d.ts +0 -1
- pactkit-2.4.0/.opencode/node_modules/zod/locales/index.js +0 -1
- pactkit-2.4.0/.opencode/node_modules/zod/locales/package.json +0 -6
- pactkit-2.4.0/.opencode/node_modules/zod/mini/index.cjs +0 -17
- pactkit-2.4.0/.opencode/node_modules/zod/mini/index.d.cts +0 -1
- pactkit-2.4.0/.opencode/node_modules/zod/mini/index.d.ts +0 -1
- pactkit-2.4.0/.opencode/node_modules/zod/mini/index.js +0 -1
- pactkit-2.4.0/.opencode/node_modules/zod/mini/package.json +0 -6
- pactkit-2.4.0/.opencode/node_modules/zod/package.json +0 -135
- pactkit-2.4.0/.opencode/node_modules/zod/src/index.ts +0 -4
- pactkit-2.4.0/.opencode/node_modules/zod/src/locales/index.ts +0 -1
- pactkit-2.4.0/.opencode/node_modules/zod/src/mini/index.ts +0 -1
- pactkit-2.4.0/.opencode/node_modules/zod/src/v3/ZodError.ts +0 -330
- pactkit-2.4.0/.opencode/node_modules/zod/src/v3/benchmarks/datetime.ts +0 -58
- pactkit-2.4.0/.opencode/node_modules/zod/src/v3/benchmarks/discriminatedUnion.ts +0 -80
- pactkit-2.4.0/.opencode/node_modules/zod/src/v3/benchmarks/index.ts +0 -59
- pactkit-2.4.0/.opencode/node_modules/zod/src/v3/benchmarks/ipv4.ts +0 -57
- pactkit-2.4.0/.opencode/node_modules/zod/src/v3/benchmarks/object.ts +0 -69
- pactkit-2.4.0/.opencode/node_modules/zod/src/v3/benchmarks/primitives.ts +0 -162
- pactkit-2.4.0/.opencode/node_modules/zod/src/v3/benchmarks/realworld.ts +0 -63
- pactkit-2.4.0/.opencode/node_modules/zod/src/v3/benchmarks/string.ts +0 -55
- pactkit-2.4.0/.opencode/node_modules/zod/src/v3/benchmarks/union.ts +0 -80
- pactkit-2.4.0/.opencode/node_modules/zod/src/v3/errors.ts +0 -13
- pactkit-2.4.0/.opencode/node_modules/zod/src/v3/external.ts +0 -6
- pactkit-2.4.0/.opencode/node_modules/zod/src/v3/helpers/enumUtil.ts +0 -17
- pactkit-2.4.0/.opencode/node_modules/zod/src/v3/helpers/errorUtil.ts +0 -8
- pactkit-2.4.0/.opencode/node_modules/zod/src/v3/helpers/parseUtil.ts +0 -176
- pactkit-2.4.0/.opencode/node_modules/zod/src/v3/helpers/partialUtil.ts +0 -34
- pactkit-2.4.0/.opencode/node_modules/zod/src/v3/helpers/typeAliases.ts +0 -2
- pactkit-2.4.0/.opencode/node_modules/zod/src/v3/helpers/util.ts +0 -224
- pactkit-2.4.0/.opencode/node_modules/zod/src/v3/index.ts +0 -4
- pactkit-2.4.0/.opencode/node_modules/zod/src/v3/locales/en.ts +0 -124
- pactkit-2.4.0/.opencode/node_modules/zod/src/v3/standard-schema.ts +0 -113
- pactkit-2.4.0/.opencode/node_modules/zod/src/v3/tests/Mocker.ts +0 -54
- pactkit-2.4.0/.opencode/node_modules/zod/src/v3/tests/all-errors.test.ts +0 -157
- pactkit-2.4.0/.opencode/node_modules/zod/src/v3/tests/anyunknown.test.ts +0 -28
- pactkit-2.4.0/.opencode/node_modules/zod/src/v3/tests/array.test.ts +0 -71
- pactkit-2.4.0/.opencode/node_modules/zod/src/v3/tests/async-parsing.test.ts +0 -388
- pactkit-2.4.0/.opencode/node_modules/zod/src/v3/tests/async-refinements.test.ts +0 -46
- pactkit-2.4.0/.opencode/node_modules/zod/src/v3/tests/base.test.ts +0 -29
- pactkit-2.4.0/.opencode/node_modules/zod/src/v3/tests/bigint.test.ts +0 -55
- pactkit-2.4.0/.opencode/node_modules/zod/src/v3/tests/branded.test.ts +0 -53
- pactkit-2.4.0/.opencode/node_modules/zod/src/v3/tests/catch.test.ts +0 -220
- pactkit-2.4.0/.opencode/node_modules/zod/src/v3/tests/coerce.test.ts +0 -133
- pactkit-2.4.0/.opencode/node_modules/zod/src/v3/tests/complex.test.ts +0 -56
- pactkit-2.4.0/.opencode/node_modules/zod/src/v3/tests/custom.test.ts +0 -31
- pactkit-2.4.0/.opencode/node_modules/zod/src/v3/tests/date.test.ts +0 -32
- pactkit-2.4.0/.opencode/node_modules/zod/src/v3/tests/deepmasking.test.ts +0 -186
- pactkit-2.4.0/.opencode/node_modules/zod/src/v3/tests/default.test.ts +0 -112
- pactkit-2.4.0/.opencode/node_modules/zod/src/v3/tests/description.test.ts +0 -33
- pactkit-2.4.0/.opencode/node_modules/zod/src/v3/tests/discriminated-unions.test.ts +0 -315
- pactkit-2.4.0/.opencode/node_modules/zod/src/v3/tests/enum.test.ts +0 -80
- pactkit-2.4.0/.opencode/node_modules/zod/src/v3/tests/error.test.ts +0 -551
- pactkit-2.4.0/.opencode/node_modules/zod/src/v3/tests/firstparty.test.ts +0 -87
- pactkit-2.4.0/.opencode/node_modules/zod/src/v3/tests/firstpartyschematypes.test.ts +0 -21
- pactkit-2.4.0/.opencode/node_modules/zod/src/v3/tests/function.test.ts +0 -257
- pactkit-2.4.0/.opencode/node_modules/zod/src/v3/tests/generics.test.ts +0 -48
- pactkit-2.4.0/.opencode/node_modules/zod/src/v3/tests/instanceof.test.ts +0 -37
- pactkit-2.4.0/.opencode/node_modules/zod/src/v3/tests/intersection.test.ts +0 -110
- pactkit-2.4.0/.opencode/node_modules/zod/src/v3/tests/language-server.source.ts +0 -76
- pactkit-2.4.0/.opencode/node_modules/zod/src/v3/tests/language-server.test.ts +0 -207
- pactkit-2.4.0/.opencode/node_modules/zod/src/v3/tests/literal.test.ts +0 -36
- pactkit-2.4.0/.opencode/node_modules/zod/src/v3/tests/map.test.ts +0 -110
- pactkit-2.4.0/.opencode/node_modules/zod/src/v3/tests/masking.test.ts +0 -4
- pactkit-2.4.0/.opencode/node_modules/zod/src/v3/tests/mocker.test.ts +0 -19
- pactkit-2.4.0/.opencode/node_modules/zod/src/v3/tests/nan.test.ts +0 -21
- pactkit-2.4.0/.opencode/node_modules/zod/src/v3/tests/nativeEnum.test.ts +0 -87
- pactkit-2.4.0/.opencode/node_modules/zod/src/v3/tests/nullable.test.ts +0 -42
- pactkit-2.4.0/.opencode/node_modules/zod/src/v3/tests/number.test.ts +0 -176
- pactkit-2.4.0/.opencode/node_modules/zod/src/v3/tests/object-augmentation.test.ts +0 -29
- pactkit-2.4.0/.opencode/node_modules/zod/src/v3/tests/object-in-es5-env.test.ts +0 -29
- pactkit-2.4.0/.opencode/node_modules/zod/src/v3/tests/object.test.ts +0 -434
- pactkit-2.4.0/.opencode/node_modules/zod/src/v3/tests/optional.test.ts +0 -42
- pactkit-2.4.0/.opencode/node_modules/zod/src/v3/tests/parseUtil.test.ts +0 -23
- pactkit-2.4.0/.opencode/node_modules/zod/src/v3/tests/parser.test.ts +0 -41
- pactkit-2.4.0/.opencode/node_modules/zod/src/v3/tests/partials.test.ts +0 -243
- pactkit-2.4.0/.opencode/node_modules/zod/src/v3/tests/pickomit.test.ts +0 -111
- pactkit-2.4.0/.opencode/node_modules/zod/src/v3/tests/pipeline.test.ts +0 -29
- pactkit-2.4.0/.opencode/node_modules/zod/src/v3/tests/preprocess.test.ts +0 -186
- pactkit-2.4.0/.opencode/node_modules/zod/src/v3/tests/primitive.test.ts +0 -440
- pactkit-2.4.0/.opencode/node_modules/zod/src/v3/tests/promise.test.ts +0 -90
- pactkit-2.4.0/.opencode/node_modules/zod/src/v3/tests/readonly.test.ts +0 -194
- pactkit-2.4.0/.opencode/node_modules/zod/src/v3/tests/record.test.ts +0 -171
- pactkit-2.4.0/.opencode/node_modules/zod/src/v3/tests/recursive.test.ts +0 -197
- pactkit-2.4.0/.opencode/node_modules/zod/src/v3/tests/refine.test.ts +0 -313
- pactkit-2.4.0/.opencode/node_modules/zod/src/v3/tests/safeparse.test.ts +0 -27
- pactkit-2.4.0/.opencode/node_modules/zod/src/v3/tests/set.test.ts +0 -142
- pactkit-2.4.0/.opencode/node_modules/zod/src/v3/tests/standard-schema.test.ts +0 -83
- pactkit-2.4.0/.opencode/node_modules/zod/src/v3/tests/string.test.ts +0 -916
- pactkit-2.4.0/.opencode/node_modules/zod/src/v3/tests/transformer.test.ts +0 -233
- pactkit-2.4.0/.opencode/node_modules/zod/src/v3/tests/tuple.test.ts +0 -90
- pactkit-2.4.0/.opencode/node_modules/zod/src/v3/tests/unions.test.ts +0 -57
- pactkit-2.4.0/.opencode/node_modules/zod/src/v3/tests/validations.test.ts +0 -133
- pactkit-2.4.0/.opencode/node_modules/zod/src/v3/tests/void.test.ts +0 -15
- pactkit-2.4.0/.opencode/node_modules/zod/src/v3/types.ts +0 -5138
- pactkit-2.4.0/.opencode/node_modules/zod/src/v4/classic/checks.ts +0 -31
- pactkit-2.4.0/.opencode/node_modules/zod/src/v4/classic/coerce.ts +0 -27
- pactkit-2.4.0/.opencode/node_modules/zod/src/v4/classic/compat.ts +0 -70
- pactkit-2.4.0/.opencode/node_modules/zod/src/v4/classic/errors.ts +0 -82
- pactkit-2.4.0/.opencode/node_modules/zod/src/v4/classic/external.ts +0 -50
- pactkit-2.4.0/.opencode/node_modules/zod/src/v4/classic/index.ts +0 -5
- pactkit-2.4.0/.opencode/node_modules/zod/src/v4/classic/iso.ts +0 -90
- pactkit-2.4.0/.opencode/node_modules/zod/src/v4/classic/parse.ts +0 -82
- pactkit-2.4.0/.opencode/node_modules/zod/src/v4/classic/schemas.ts +0 -2205
- pactkit-2.4.0/.opencode/node_modules/zod/src/v4/classic/tests/anyunknown.test.ts +0 -26
- pactkit-2.4.0/.opencode/node_modules/zod/src/v4/classic/tests/array.test.ts +0 -264
- pactkit-2.4.0/.opencode/node_modules/zod/src/v4/classic/tests/assignability.test.ts +0 -210
- pactkit-2.4.0/.opencode/node_modules/zod/src/v4/classic/tests/async-parsing.test.ts +0 -381
- pactkit-2.4.0/.opencode/node_modules/zod/src/v4/classic/tests/async-refinements.test.ts +0 -68
- pactkit-2.4.0/.opencode/node_modules/zod/src/v4/classic/tests/base.test.ts +0 -7
- pactkit-2.4.0/.opencode/node_modules/zod/src/v4/classic/tests/bigint.test.ts +0 -54
- pactkit-2.4.0/.opencode/node_modules/zod/src/v4/classic/tests/brand.test.ts +0 -63
- pactkit-2.4.0/.opencode/node_modules/zod/src/v4/classic/tests/catch.test.ts +0 -276
- pactkit-2.4.0/.opencode/node_modules/zod/src/v4/classic/tests/coalesce.test.ts +0 -20
- pactkit-2.4.0/.opencode/node_modules/zod/src/v4/classic/tests/codec-examples.test.ts +0 -573
- pactkit-2.4.0/.opencode/node_modules/zod/src/v4/classic/tests/codec.test.ts +0 -562
- pactkit-2.4.0/.opencode/node_modules/zod/src/v4/classic/tests/coerce.test.ts +0 -160
- pactkit-2.4.0/.opencode/node_modules/zod/src/v4/classic/tests/continuability.test.ts +0 -352
- pactkit-2.4.0/.opencode/node_modules/zod/src/v4/classic/tests/custom.test.ts +0 -40
- pactkit-2.4.0/.opencode/node_modules/zod/src/v4/classic/tests/date.test.ts +0 -31
- pactkit-2.4.0/.opencode/node_modules/zod/src/v4/classic/tests/datetime.test.ts +0 -302
- pactkit-2.4.0/.opencode/node_modules/zod/src/v4/classic/tests/default.test.ts +0 -365
- pactkit-2.4.0/.opencode/node_modules/zod/src/v4/classic/tests/description.test.ts +0 -32
- pactkit-2.4.0/.opencode/node_modules/zod/src/v4/classic/tests/discriminated-unions.test.ts +0 -661
- pactkit-2.4.0/.opencode/node_modules/zod/src/v4/classic/tests/enum.test.ts +0 -285
- pactkit-2.4.0/.opencode/node_modules/zod/src/v4/classic/tests/error-utils.test.ts +0 -595
- pactkit-2.4.0/.opencode/node_modules/zod/src/v4/classic/tests/error.test.ts +0 -711
- pactkit-2.4.0/.opencode/node_modules/zod/src/v4/classic/tests/file.test.ts +0 -96
- pactkit-2.4.0/.opencode/node_modules/zod/src/v4/classic/tests/firstparty.test.ts +0 -179
- pactkit-2.4.0/.opencode/node_modules/zod/src/v4/classic/tests/function.test.ts +0 -308
- pactkit-2.4.0/.opencode/node_modules/zod/src/v4/classic/tests/generics.test.ts +0 -72
- pactkit-2.4.0/.opencode/node_modules/zod/src/v4/classic/tests/hash.test.ts +0 -68
- pactkit-2.4.0/.opencode/node_modules/zod/src/v4/classic/tests/index.test.ts +0 -844
- pactkit-2.4.0/.opencode/node_modules/zod/src/v4/classic/tests/instanceof.test.ts +0 -34
- pactkit-2.4.0/.opencode/node_modules/zod/src/v4/classic/tests/intersection.test.ts +0 -171
- pactkit-2.4.0/.opencode/node_modules/zod/src/v4/classic/tests/json.test.ts +0 -108
- pactkit-2.4.0/.opencode/node_modules/zod/src/v4/classic/tests/lazy.test.ts +0 -227
- pactkit-2.4.0/.opencode/node_modules/zod/src/v4/classic/tests/literal.test.ts +0 -117
- pactkit-2.4.0/.opencode/node_modules/zod/src/v4/classic/tests/map.test.ts +0 -196
- pactkit-2.4.0/.opencode/node_modules/zod/src/v4/classic/tests/nan.test.ts +0 -21
- pactkit-2.4.0/.opencode/node_modules/zod/src/v4/classic/tests/nested-refine.test.ts +0 -168
- pactkit-2.4.0/.opencode/node_modules/zod/src/v4/classic/tests/nonoptional.test.ts +0 -101
- pactkit-2.4.0/.opencode/node_modules/zod/src/v4/classic/tests/nullable.test.ts +0 -22
- pactkit-2.4.0/.opencode/node_modules/zod/src/v4/classic/tests/number.test.ts +0 -270
- pactkit-2.4.0/.opencode/node_modules/zod/src/v4/classic/tests/object.test.ts +0 -609
- pactkit-2.4.0/.opencode/node_modules/zod/src/v4/classic/tests/optional.test.ts +0 -136
- pactkit-2.4.0/.opencode/node_modules/zod/src/v4/classic/tests/partial.test.ts +0 -340
- pactkit-2.4.0/.opencode/node_modules/zod/src/v4/classic/tests/pickomit.test.ts +0 -127
- pactkit-2.4.0/.opencode/node_modules/zod/src/v4/classic/tests/pipe.test.ts +0 -101
- pactkit-2.4.0/.opencode/node_modules/zod/src/v4/classic/tests/prefault.test.ts +0 -74
- pactkit-2.4.0/.opencode/node_modules/zod/src/v4/classic/tests/preprocess.test.ts +0 -282
- pactkit-2.4.0/.opencode/node_modules/zod/src/v4/classic/tests/primitive.test.ts +0 -175
- pactkit-2.4.0/.opencode/node_modules/zod/src/v4/classic/tests/promise.test.ts +0 -81
- pactkit-2.4.0/.opencode/node_modules/zod/src/v4/classic/tests/prototypes.test.ts +0 -23
- pactkit-2.4.0/.opencode/node_modules/zod/src/v4/classic/tests/readonly.test.ts +0 -252
- pactkit-2.4.0/.opencode/node_modules/zod/src/v4/classic/tests/record.test.ts +0 -356
- pactkit-2.4.0/.opencode/node_modules/zod/src/v4/classic/tests/recursive-types.test.ts +0 -539
- pactkit-2.4.0/.opencode/node_modules/zod/src/v4/classic/tests/refine.test.ts +0 -605
- pactkit-2.4.0/.opencode/node_modules/zod/src/v4/classic/tests/registries.test.ts +0 -204
- pactkit-2.4.0/.opencode/node_modules/zod/src/v4/classic/tests/set.test.ts +0 -181
- pactkit-2.4.0/.opencode/node_modules/zod/src/v4/classic/tests/standard-schema.test.ts +0 -57
- pactkit-2.4.0/.opencode/node_modules/zod/src/v4/classic/tests/string-formats.test.ts +0 -125
- pactkit-2.4.0/.opencode/node_modules/zod/src/v4/classic/tests/string.test.ts +0 -1080
- pactkit-2.4.0/.opencode/node_modules/zod/src/v4/classic/tests/stringbool.test.ts +0 -106
- pactkit-2.4.0/.opencode/node_modules/zod/src/v4/classic/tests/template-literal.test.ts +0 -763
- pactkit-2.4.0/.opencode/node_modules/zod/src/v4/classic/tests/to-json-schema.test.ts +0 -2622
- pactkit-2.4.0/.opencode/node_modules/zod/src/v4/classic/tests/transform.test.ts +0 -361
- pactkit-2.4.0/.opencode/node_modules/zod/src/v4/classic/tests/tuple.test.ts +0 -163
- pactkit-2.4.0/.opencode/node_modules/zod/src/v4/classic/tests/union.test.ts +0 -181
- pactkit-2.4.0/.opencode/node_modules/zod/src/v4/classic/tests/validations.test.ts +0 -283
- pactkit-2.4.0/.opencode/node_modules/zod/src/v4/classic/tests/void.test.ts +0 -12
- pactkit-2.4.0/.opencode/node_modules/zod/src/v4/core/api.ts +0 -1621
- pactkit-2.4.0/.opencode/node_modules/zod/src/v4/core/checks.ts +0 -1287
- pactkit-2.4.0/.opencode/node_modules/zod/src/v4/core/config.ts +0 -15
- pactkit-2.4.0/.opencode/node_modules/zod/src/v4/core/core.ts +0 -115
- pactkit-2.4.0/.opencode/node_modules/zod/src/v4/core/doc.ts +0 -44
- pactkit-2.4.0/.opencode/node_modules/zod/src/v4/core/errors.ts +0 -423
- pactkit-2.4.0/.opencode/node_modules/zod/src/v4/core/index.ts +0 -14
- pactkit-2.4.0/.opencode/node_modules/zod/src/v4/core/json-schema.ts +0 -147
- pactkit-2.4.0/.opencode/node_modules/zod/src/v4/core/parse.ts +0 -195
- pactkit-2.4.0/.opencode/node_modules/zod/src/v4/core/regexes.ts +0 -177
- pactkit-2.4.0/.opencode/node_modules/zod/src/v4/core/registries.ts +0 -97
- pactkit-2.4.0/.opencode/node_modules/zod/src/v4/core/schemas.ts +0 -4303
- pactkit-2.4.0/.opencode/node_modules/zod/src/v4/core/standard-schema.ts +0 -64
- pactkit-2.4.0/.opencode/node_modules/zod/src/v4/core/tests/extend.test.ts +0 -18
- pactkit-2.4.0/.opencode/node_modules/zod/src/v4/core/tests/index.test.ts +0 -46
- pactkit-2.4.0/.opencode/node_modules/zod/src/v4/core/tests/locales/be.test.ts +0 -124
- pactkit-2.4.0/.opencode/node_modules/zod/src/v4/core/tests/locales/en.test.ts +0 -22
- pactkit-2.4.0/.opencode/node_modules/zod/src/v4/core/tests/locales/es.test.ts +0 -181
- pactkit-2.4.0/.opencode/node_modules/zod/src/v4/core/tests/locales/ru.test.ts +0 -128
- pactkit-2.4.0/.opencode/node_modules/zod/src/v4/core/tests/locales/tr.test.ts +0 -69
- pactkit-2.4.0/.opencode/node_modules/zod/src/v4/core/to-json-schema.ts +0 -1044
- pactkit-2.4.0/.opencode/node_modules/zod/src/v4/core/util.ts +0 -910
- pactkit-2.4.0/.opencode/node_modules/zod/src/v4/core/versions.ts +0 -5
- pactkit-2.4.0/.opencode/node_modules/zod/src/v4/core/zsf.ts +0 -323
- pactkit-2.4.0/.opencode/node_modules/zod/src/v4/index.ts +0 -4
- pactkit-2.4.0/.opencode/node_modules/zod/src/v4/locales/ar.ts +0 -125
- pactkit-2.4.0/.opencode/node_modules/zod/src/v4/locales/az.ts +0 -121
- pactkit-2.4.0/.opencode/node_modules/zod/src/v4/locales/be.ts +0 -184
- pactkit-2.4.0/.opencode/node_modules/zod/src/v4/locales/bg.ts +0 -136
- pactkit-2.4.0/.opencode/node_modules/zod/src/v4/locales/ca.ts +0 -127
- pactkit-2.4.0/.opencode/node_modules/zod/src/v4/locales/cs.ts +0 -142
- pactkit-2.4.0/.opencode/node_modules/zod/src/v4/locales/da.ts +0 -141
- pactkit-2.4.0/.opencode/node_modules/zod/src/v4/locales/de.ts +0 -124
- pactkit-2.4.0/.opencode/node_modules/zod/src/v4/locales/en.ts +0 -127
- pactkit-2.4.0/.opencode/node_modules/zod/src/v4/locales/eo.ts +0 -125
- pactkit-2.4.0/.opencode/node_modules/zod/src/v4/locales/es.ts +0 -159
- pactkit-2.4.0/.opencode/node_modules/zod/src/v4/locales/fa.ts +0 -134
- pactkit-2.4.0/.opencode/node_modules/zod/src/v4/locales/fi.ts +0 -131
- pactkit-2.4.0/.opencode/node_modules/zod/src/v4/locales/fr-CA.ts +0 -126
- pactkit-2.4.0/.opencode/node_modules/zod/src/v4/locales/fr.ts +0 -124
- pactkit-2.4.0/.opencode/node_modules/zod/src/v4/locales/he.ts +0 -125
- pactkit-2.4.0/.opencode/node_modules/zod/src/v4/locales/hu.ts +0 -126
- pactkit-2.4.0/.opencode/node_modules/zod/src/v4/locales/id.ts +0 -125
- pactkit-2.4.0/.opencode/node_modules/zod/src/v4/locales/index.ts +0 -46
- pactkit-2.4.0/.opencode/node_modules/zod/src/v4/locales/is.ts +0 -127
- pactkit-2.4.0/.opencode/node_modules/zod/src/v4/locales/it.ts +0 -125
- pactkit-2.4.0/.opencode/node_modules/zod/src/v4/locales/ja.ts +0 -122
- pactkit-2.4.0/.opencode/node_modules/zod/src/v4/locales/ka.ts +0 -138
- pactkit-2.4.0/.opencode/node_modules/zod/src/v4/locales/kh.ts +0 -7
- pactkit-2.4.0/.opencode/node_modules/zod/src/v4/locales/km.ts +0 -126
- pactkit-2.4.0/.opencode/node_modules/zod/src/v4/locales/ko.ts +0 -131
- pactkit-2.4.0/.opencode/node_modules/zod/src/v4/locales/lt.ts +0 -265
- pactkit-2.4.0/.opencode/node_modules/zod/src/v4/locales/mk.ts +0 -127
- pactkit-2.4.0/.opencode/node_modules/zod/src/v4/locales/ms.ts +0 -124
- pactkit-2.4.0/.opencode/node_modules/zod/src/v4/locales/nl.ts +0 -126
- pactkit-2.4.0/.opencode/node_modules/zod/src/v4/locales/no.ts +0 -124
- pactkit-2.4.0/.opencode/node_modules/zod/src/v4/locales/ota.ts +0 -125
- pactkit-2.4.0/.opencode/node_modules/zod/src/v4/locales/pl.ts +0 -126
- pactkit-2.4.0/.opencode/node_modules/zod/src/v4/locales/ps.ts +0 -133
- pactkit-2.4.0/.opencode/node_modules/zod/src/v4/locales/pt.ts +0 -123
- pactkit-2.4.0/.opencode/node_modules/zod/src/v4/locales/ru.ts +0 -184
- pactkit-2.4.0/.opencode/node_modules/zod/src/v4/locales/sl.ts +0 -126
- pactkit-2.4.0/.opencode/node_modules/zod/src/v4/locales/sv.ts +0 -127
- pactkit-2.4.0/.opencode/node_modules/zod/src/v4/locales/ta.ts +0 -125
- pactkit-2.4.0/.opencode/node_modules/zod/src/v4/locales/th.ts +0 -126
- pactkit-2.4.0/.opencode/node_modules/zod/src/v4/locales/tr.ts +0 -121
- pactkit-2.4.0/.opencode/node_modules/zod/src/v4/locales/ua.ts +0 -7
- pactkit-2.4.0/.opencode/node_modules/zod/src/v4/locales/uk.ts +0 -126
- pactkit-2.4.0/.opencode/node_modules/zod/src/v4/locales/ur.ts +0 -126
- pactkit-2.4.0/.opencode/node_modules/zod/src/v4/locales/vi.ts +0 -125
- pactkit-2.4.0/.opencode/node_modules/zod/src/v4/locales/yo.ts +0 -131
- pactkit-2.4.0/.opencode/node_modules/zod/src/v4/locales/zh-CN.ts +0 -123
- pactkit-2.4.0/.opencode/node_modules/zod/src/v4/locales/zh-TW.ts +0 -125
- pactkit-2.4.0/.opencode/node_modules/zod/src/v4/mini/checks.ts +0 -32
- pactkit-2.4.0/.opencode/node_modules/zod/src/v4/mini/coerce.ts +0 -22
- pactkit-2.4.0/.opencode/node_modules/zod/src/v4/mini/external.ts +0 -40
- pactkit-2.4.0/.opencode/node_modules/zod/src/v4/mini/index.ts +0 -3
- pactkit-2.4.0/.opencode/node_modules/zod/src/v4/mini/iso.ts +0 -62
- pactkit-2.4.0/.opencode/node_modules/zod/src/v4/mini/parse.ts +0 -14
- pactkit-2.4.0/.opencode/node_modules/zod/src/v4/mini/schemas.ts +0 -1739
- pactkit-2.4.0/.opencode/node_modules/zod/src/v4/mini/tests/assignability.test.ts +0 -129
- pactkit-2.4.0/.opencode/node_modules/zod/src/v4/mini/tests/brand.test.ts +0 -51
- pactkit-2.4.0/.opencode/node_modules/zod/src/v4/mini/tests/checks.test.ts +0 -144
- pactkit-2.4.0/.opencode/node_modules/zod/src/v4/mini/tests/codec.test.ts +0 -529
- pactkit-2.4.0/.opencode/node_modules/zod/src/v4/mini/tests/computed.test.ts +0 -36
- pactkit-2.4.0/.opencode/node_modules/zod/src/v4/mini/tests/error.test.ts +0 -22
- pactkit-2.4.0/.opencode/node_modules/zod/src/v4/mini/tests/functions.test.ts +0 -43
- pactkit-2.4.0/.opencode/node_modules/zod/src/v4/mini/tests/index.test.ts +0 -899
- pactkit-2.4.0/.opencode/node_modules/zod/src/v4/mini/tests/number.test.ts +0 -95
- pactkit-2.4.0/.opencode/node_modules/zod/src/v4/mini/tests/object.test.ts +0 -200
- pactkit-2.4.0/.opencode/node_modules/zod/src/v4/mini/tests/prototypes.test.ts +0 -43
- pactkit-2.4.0/.opencode/node_modules/zod/src/v4/mini/tests/recursive-types.test.ts +0 -275
- pactkit-2.4.0/.opencode/node_modules/zod/src/v4/mini/tests/string.test.ts +0 -315
- pactkit-2.4.0/.opencode/node_modules/zod/src/v4-mini/index.ts +0 -1
- pactkit-2.4.0/.opencode/node_modules/zod/v3/ZodError.cjs +0 -138
- pactkit-2.4.0/.opencode/node_modules/zod/v3/ZodError.d.cts +0 -164
- pactkit-2.4.0/.opencode/node_modules/zod/v3/ZodError.d.ts +0 -164
- pactkit-2.4.0/.opencode/node_modules/zod/v3/ZodError.js +0 -133
- pactkit-2.4.0/.opencode/node_modules/zod/v3/errors.cjs +0 -17
- pactkit-2.4.0/.opencode/node_modules/zod/v3/errors.d.cts +0 -5
- pactkit-2.4.0/.opencode/node_modules/zod/v3/errors.d.ts +0 -5
- pactkit-2.4.0/.opencode/node_modules/zod/v3/errors.js +0 -9
- pactkit-2.4.0/.opencode/node_modules/zod/v3/external.cjs +0 -22
- pactkit-2.4.0/.opencode/node_modules/zod/v3/external.d.cts +0 -6
- pactkit-2.4.0/.opencode/node_modules/zod/v3/external.d.ts +0 -6
- pactkit-2.4.0/.opencode/node_modules/zod/v3/external.js +0 -6
- pactkit-2.4.0/.opencode/node_modules/zod/v3/helpers/enumUtil.cjs +0 -2
- pactkit-2.4.0/.opencode/node_modules/zod/v3/helpers/enumUtil.d.cts +0 -8
- pactkit-2.4.0/.opencode/node_modules/zod/v3/helpers/enumUtil.d.ts +0 -8
- pactkit-2.4.0/.opencode/node_modules/zod/v3/helpers/enumUtil.js +0 -1
- pactkit-2.4.0/.opencode/node_modules/zod/v3/helpers/errorUtil.cjs +0 -9
- pactkit-2.4.0/.opencode/node_modules/zod/v3/helpers/errorUtil.d.cts +0 -9
- pactkit-2.4.0/.opencode/node_modules/zod/v3/helpers/errorUtil.d.ts +0 -9
- pactkit-2.4.0/.opencode/node_modules/zod/v3/helpers/errorUtil.js +0 -6
- pactkit-2.4.0/.opencode/node_modules/zod/v3/helpers/parseUtil.cjs +0 -124
- pactkit-2.4.0/.opencode/node_modules/zod/v3/helpers/parseUtil.d.cts +0 -78
- pactkit-2.4.0/.opencode/node_modules/zod/v3/helpers/parseUtil.d.ts +0 -78
- pactkit-2.4.0/.opencode/node_modules/zod/v3/helpers/parseUtil.js +0 -109
- pactkit-2.4.0/.opencode/node_modules/zod/v3/helpers/partialUtil.cjs +0 -2
- pactkit-2.4.0/.opencode/node_modules/zod/v3/helpers/partialUtil.d.cts +0 -8
- pactkit-2.4.0/.opencode/node_modules/zod/v3/helpers/partialUtil.d.ts +0 -8
- pactkit-2.4.0/.opencode/node_modules/zod/v3/helpers/partialUtil.js +0 -1
- pactkit-2.4.0/.opencode/node_modules/zod/v3/helpers/typeAliases.cjs +0 -2
- pactkit-2.4.0/.opencode/node_modules/zod/v3/helpers/typeAliases.d.cts +0 -2
- pactkit-2.4.0/.opencode/node_modules/zod/v3/helpers/typeAliases.d.ts +0 -2
- pactkit-2.4.0/.opencode/node_modules/zod/v3/helpers/typeAliases.js +0 -1
- pactkit-2.4.0/.opencode/node_modules/zod/v3/helpers/util.cjs +0 -137
- pactkit-2.4.0/.opencode/node_modules/zod/v3/helpers/util.d.cts +0 -85
- pactkit-2.4.0/.opencode/node_modules/zod/v3/helpers/util.d.ts +0 -85
- pactkit-2.4.0/.opencode/node_modules/zod/v3/helpers/util.js +0 -133
- pactkit-2.4.0/.opencode/node_modules/zod/v3/index.cjs +0 -33
- pactkit-2.4.0/.opencode/node_modules/zod/v3/index.d.cts +0 -4
- pactkit-2.4.0/.opencode/node_modules/zod/v3/index.d.ts +0 -4
- pactkit-2.4.0/.opencode/node_modules/zod/v3/index.js +0 -4
- pactkit-2.4.0/.opencode/node_modules/zod/v3/locales/en.cjs +0 -112
- pactkit-2.4.0/.opencode/node_modules/zod/v3/locales/en.d.cts +0 -3
- pactkit-2.4.0/.opencode/node_modules/zod/v3/locales/en.d.ts +0 -3
- pactkit-2.4.0/.opencode/node_modules/zod/v3/locales/en.js +0 -109
- pactkit-2.4.0/.opencode/node_modules/zod/v3/package.json +0 -6
- pactkit-2.4.0/.opencode/node_modules/zod/v3/standard-schema.cjs +0 -2
- pactkit-2.4.0/.opencode/node_modules/zod/v3/standard-schema.d.cts +0 -102
- pactkit-2.4.0/.opencode/node_modules/zod/v3/standard-schema.d.ts +0 -102
- pactkit-2.4.0/.opencode/node_modules/zod/v3/standard-schema.js +0 -1
- pactkit-2.4.0/.opencode/node_modules/zod/v3/types.cjs +0 -3777
- pactkit-2.4.0/.opencode/node_modules/zod/v3/types.d.cts +0 -1034
- pactkit-2.4.0/.opencode/node_modules/zod/v3/types.d.ts +0 -1034
- pactkit-2.4.0/.opencode/node_modules/zod/v3/types.js +0 -3695
- pactkit-2.4.0/.opencode/node_modules/zod/v4/classic/checks.cjs +0 -32
- pactkit-2.4.0/.opencode/node_modules/zod/v4/classic/checks.d.cts +0 -1
- pactkit-2.4.0/.opencode/node_modules/zod/v4/classic/checks.d.ts +0 -1
- pactkit-2.4.0/.opencode/node_modules/zod/v4/classic/checks.js +0 -1
- pactkit-2.4.0/.opencode/node_modules/zod/v4/classic/coerce.cjs +0 -47
- pactkit-2.4.0/.opencode/node_modules/zod/v4/classic/coerce.d.cts +0 -17
- pactkit-2.4.0/.opencode/node_modules/zod/v4/classic/coerce.d.ts +0 -17
- pactkit-2.4.0/.opencode/node_modules/zod/v4/classic/coerce.js +0 -17
- pactkit-2.4.0/.opencode/node_modules/zod/v4/classic/compat.cjs +0 -61
- pactkit-2.4.0/.opencode/node_modules/zod/v4/classic/compat.d.cts +0 -50
- pactkit-2.4.0/.opencode/node_modules/zod/v4/classic/compat.d.ts +0 -50
- pactkit-2.4.0/.opencode/node_modules/zod/v4/classic/compat.js +0 -31
- pactkit-2.4.0/.opencode/node_modules/zod/v4/classic/errors.cjs +0 -74
- pactkit-2.4.0/.opencode/node_modules/zod/v4/classic/errors.d.cts +0 -30
- pactkit-2.4.0/.opencode/node_modules/zod/v4/classic/errors.d.ts +0 -30
- pactkit-2.4.0/.opencode/node_modules/zod/v4/classic/errors.js +0 -48
- pactkit-2.4.0/.opencode/node_modules/zod/v4/classic/external.cjs +0 -70
- pactkit-2.4.0/.opencode/node_modules/zod/v4/classic/external.d.cts +0 -13
- pactkit-2.4.0/.opencode/node_modules/zod/v4/classic/external.d.ts +0 -13
- pactkit-2.4.0/.opencode/node_modules/zod/v4/classic/external.js +0 -18
- pactkit-2.4.0/.opencode/node_modules/zod/v4/classic/index.cjs +0 -33
- pactkit-2.4.0/.opencode/node_modules/zod/v4/classic/index.d.cts +0 -4
- pactkit-2.4.0/.opencode/node_modules/zod/v4/classic/index.d.ts +0 -4
- pactkit-2.4.0/.opencode/node_modules/zod/v4/classic/index.js +0 -4
- pactkit-2.4.0/.opencode/node_modules/zod/v4/classic/iso.cjs +0 -60
- pactkit-2.4.0/.opencode/node_modules/zod/v4/classic/iso.d.cts +0 -22
- pactkit-2.4.0/.opencode/node_modules/zod/v4/classic/iso.d.ts +0 -22
- pactkit-2.4.0/.opencode/node_modules/zod/v4/classic/iso.js +0 -30
- pactkit-2.4.0/.opencode/node_modules/zod/v4/classic/package.json +0 -6
- pactkit-2.4.0/.opencode/node_modules/zod/v4/classic/parse.cjs +0 -41
- pactkit-2.4.0/.opencode/node_modules/zod/v4/classic/parse.d.cts +0 -31
- pactkit-2.4.0/.opencode/node_modules/zod/v4/classic/parse.d.ts +0 -31
- pactkit-2.4.0/.opencode/node_modules/zod/v4/classic/parse.js +0 -15
- pactkit-2.4.0/.opencode/node_modules/zod/v4/classic/schemas.cjs +0 -1161
- pactkit-2.4.0/.opencode/node_modules/zod/v4/classic/schemas.d.cts +0 -673
- pactkit-2.4.0/.opencode/node_modules/zod/v4/classic/schemas.d.ts +0 -673
- pactkit-2.4.0/.opencode/node_modules/zod/v4/classic/schemas.js +0 -1050
- pactkit-2.4.0/.opencode/node_modules/zod/v4/core/api.cjs +0 -1060
- pactkit-2.4.0/.opencode/node_modules/zod/v4/core/api.d.cts +0 -295
- pactkit-2.4.0/.opencode/node_modules/zod/v4/core/api.d.ts +0 -295
- pactkit-2.4.0/.opencode/node_modules/zod/v4/core/api.js +0 -925
- pactkit-2.4.0/.opencode/node_modules/zod/v4/core/checks.cjs +0 -595
- pactkit-2.4.0/.opencode/node_modules/zod/v4/core/checks.d.cts +0 -278
- pactkit-2.4.0/.opencode/node_modules/zod/v4/core/checks.d.ts +0 -278
- pactkit-2.4.0/.opencode/node_modules/zod/v4/core/checks.js +0 -569
- pactkit-2.4.0/.opencode/node_modules/zod/v4/core/core.cjs +0 -74
- pactkit-2.4.0/.opencode/node_modules/zod/v4/core/core.d.cts +0 -52
- pactkit-2.4.0/.opencode/node_modules/zod/v4/core/core.d.ts +0 -52
- pactkit-2.4.0/.opencode/node_modules/zod/v4/core/core.js +0 -67
- pactkit-2.4.0/.opencode/node_modules/zod/v4/core/doc.cjs +0 -39
- pactkit-2.4.0/.opencode/node_modules/zod/v4/core/doc.d.cts +0 -14
- pactkit-2.4.0/.opencode/node_modules/zod/v4/core/doc.d.ts +0 -14
- pactkit-2.4.0/.opencode/node_modules/zod/v4/core/doc.js +0 -35
- pactkit-2.4.0/.opencode/node_modules/zod/v4/core/errors.cjs +0 -221
- pactkit-2.4.0/.opencode/node_modules/zod/v4/core/errors.d.cts +0 -210
- pactkit-2.4.0/.opencode/node_modules/zod/v4/core/errors.d.ts +0 -210
- pactkit-2.4.0/.opencode/node_modules/zod/v4/core/errors.js +0 -190
- pactkit-2.4.0/.opencode/node_modules/zod/v4/core/index.cjs +0 -43
- pactkit-2.4.0/.opencode/node_modules/zod/v4/core/index.d.cts +0 -14
- pactkit-2.4.0/.opencode/node_modules/zod/v4/core/index.d.ts +0 -14
- pactkit-2.4.0/.opencode/node_modules/zod/v4/core/index.js +0 -14
- pactkit-2.4.0/.opencode/node_modules/zod/v4/core/json-schema.cjs +0 -2
- pactkit-2.4.0/.opencode/node_modules/zod/v4/core/json-schema.d.cts +0 -88
- pactkit-2.4.0/.opencode/node_modules/zod/v4/core/json-schema.d.ts +0 -88
- pactkit-2.4.0/.opencode/node_modules/zod/v4/core/json-schema.js +0 -1
- pactkit-2.4.0/.opencode/node_modules/zod/v4/core/package.json +0 -6
- pactkit-2.4.0/.opencode/node_modules/zod/v4/core/parse.cjs +0 -131
- pactkit-2.4.0/.opencode/node_modules/zod/v4/core/parse.d.cts +0 -49
- pactkit-2.4.0/.opencode/node_modules/zod/v4/core/parse.d.ts +0 -49
- pactkit-2.4.0/.opencode/node_modules/zod/v4/core/parse.js +0 -93
- pactkit-2.4.0/.opencode/node_modules/zod/v4/core/regexes.cjs +0 -136
- pactkit-2.4.0/.opencode/node_modules/zod/v4/core/regexes.d.cts +0 -78
- pactkit-2.4.0/.opencode/node_modules/zod/v4/core/regexes.d.ts +0 -78
- pactkit-2.4.0/.opencode/node_modules/zod/v4/core/regexes.js +0 -127
- pactkit-2.4.0/.opencode/node_modules/zod/v4/core/registries.cjs +0 -57
- pactkit-2.4.0/.opencode/node_modules/zod/v4/core/registries.d.cts +0 -35
- pactkit-2.4.0/.opencode/node_modules/zod/v4/core/registries.d.ts +0 -35
- pactkit-2.4.0/.opencode/node_modules/zod/v4/core/registries.js +0 -52
- pactkit-2.4.0/.opencode/node_modules/zod/v4/core/schemas.cjs +0 -1972
- pactkit-2.4.0/.opencode/node_modules/zod/v4/core/schemas.d.cts +0 -1113
- pactkit-2.4.0/.opencode/node_modules/zod/v4/core/schemas.d.ts +0 -1113
- pactkit-2.4.0/.opencode/node_modules/zod/v4/core/schemas.js +0 -1941
- pactkit-2.4.0/.opencode/node_modules/zod/v4/core/standard-schema.cjs +0 -2
- pactkit-2.4.0/.opencode/node_modules/zod/v4/core/standard-schema.d.cts +0 -55
- pactkit-2.4.0/.opencode/node_modules/zod/v4/core/standard-schema.d.ts +0 -55
- pactkit-2.4.0/.opencode/node_modules/zod/v4/core/standard-schema.js +0 -1
- pactkit-2.4.0/.opencode/node_modules/zod/v4/core/to-json-schema.cjs +0 -920
- pactkit-2.4.0/.opencode/node_modules/zod/v4/core/to-json-schema.d.cts +0 -90
- pactkit-2.4.0/.opencode/node_modules/zod/v4/core/to-json-schema.d.ts +0 -90
- pactkit-2.4.0/.opencode/node_modules/zod/v4/core/to-json-schema.js +0 -915
- pactkit-2.4.0/.opencode/node_modules/zod/v4/core/util.cjs +0 -658
- pactkit-2.4.0/.opencode/node_modules/zod/v4/core/util.d.cts +0 -197
- pactkit-2.4.0/.opencode/node_modules/zod/v4/core/util.d.ts +0 -197
- pactkit-2.4.0/.opencode/node_modules/zod/v4/core/util.js +0 -601
- pactkit-2.4.0/.opencode/node_modules/zod/v4/core/versions.cjs +0 -8
- pactkit-2.4.0/.opencode/node_modules/zod/v4/core/versions.d.cts +0 -5
- pactkit-2.4.0/.opencode/node_modules/zod/v4/core/versions.d.ts +0 -5
- pactkit-2.4.0/.opencode/node_modules/zod/v4/core/versions.js +0 -5
- pactkit-2.4.0/.opencode/node_modules/zod/v4/index.cjs +0 -22
- pactkit-2.4.0/.opencode/node_modules/zod/v4/index.d.cts +0 -3
- pactkit-2.4.0/.opencode/node_modules/zod/v4/index.d.ts +0 -3
- pactkit-2.4.0/.opencode/node_modules/zod/v4/index.js +0 -3
- pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/ar.cjs +0 -143
- pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/ar.d.cts +0 -5
- pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/ar.d.ts +0 -4
- pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/ar.js +0 -116
- pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/az.cjs +0 -142
- pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/az.d.cts +0 -5
- pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/az.d.ts +0 -4
- pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/az.js +0 -115
- pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/be.cjs +0 -191
- pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/be.d.cts +0 -5
- pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/be.d.ts +0 -4
- pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/be.js +0 -164
- pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/bg.cjs +0 -156
- pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/bg.d.cts +0 -5
- pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/bg.d.ts +0 -5
- pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/bg.js +0 -128
- pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/ca.cjs +0 -145
- pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/ca.d.cts +0 -5
- pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/ca.d.ts +0 -4
- pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/ca.js +0 -118
- pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/cs.cjs +0 -162
- pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/cs.d.cts +0 -5
- pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/cs.d.ts +0 -4
- pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/cs.js +0 -135
- pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/da.cjs +0 -158
- pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/da.d.cts +0 -5
- pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/da.d.ts +0 -4
- pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/da.js +0 -131
- pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/de.cjs +0 -143
- pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/de.d.cts +0 -5
- pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/de.d.ts +0 -4
- pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/de.js +0 -116
- pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/en.cjs +0 -145
- pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/en.d.cts +0 -5
- pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/en.d.ts +0 -5
- pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/en.js +0 -117
- pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/eo.cjs +0 -144
- pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/eo.d.cts +0 -5
- pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/eo.d.ts +0 -5
- pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/eo.js +0 -116
- pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/es.cjs +0 -176
- pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/es.d.cts +0 -5
- pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/es.d.ts +0 -4
- pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/es.js +0 -149
- pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/fa.cjs +0 -149
- pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/fa.d.cts +0 -5
- pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/fa.d.ts +0 -4
- pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/fa.js +0 -122
- pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/fi.cjs +0 -149
- pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/fi.d.cts +0 -5
- pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/fi.d.ts +0 -4
- pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/fi.js +0 -122
- pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/fr-CA.cjs +0 -144
- pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/fr-CA.d.cts +0 -5
- pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/fr-CA.d.ts +0 -4
- pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/fr-CA.js +0 -117
- pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/fr.cjs +0 -143
- pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/fr.d.cts +0 -5
- pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/fr.d.ts +0 -4
- pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/fr.js +0 -116
- pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/he.cjs +0 -144
- pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/he.d.cts +0 -5
- pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/he.d.ts +0 -4
- pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/he.js +0 -117
- pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/hu.cjs +0 -144
- pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/hu.d.cts +0 -5
- pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/hu.d.ts +0 -4
- pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/hu.js +0 -117
- pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/id.cjs +0 -143
- pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/id.d.cts +0 -5
- pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/id.d.ts +0 -4
- pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/id.js +0 -116
- pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/index.cjs +0 -98
- pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/index.d.cts +0 -46
- pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/index.d.ts +0 -46
- pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/index.js +0 -46
- pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/is.cjs +0 -145
- pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/is.d.cts +0 -5
- pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/is.d.ts +0 -5
- pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/is.js +0 -117
- pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/it.cjs +0 -144
- pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/it.d.cts +0 -5
- pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/it.d.ts +0 -4
- pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/it.js +0 -117
- pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/ja.cjs +0 -142
- pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/ja.d.cts +0 -5
- pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/ja.d.ts +0 -4
- pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/ja.js +0 -115
- pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/ka.cjs +0 -153
- pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/ka.d.cts +0 -5
- pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/ka.d.ts +0 -5
- pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/ka.js +0 -125
- pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/kh.cjs +0 -12
- pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/kh.d.cts +0 -5
- pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/kh.d.ts +0 -5
- pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/kh.js +0 -5
- pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/km.cjs +0 -144
- pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/km.d.cts +0 -5
- pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/km.d.ts +0 -4
- pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/km.js +0 -117
- pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/ko.cjs +0 -148
- pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/ko.d.cts +0 -5
- pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/ko.d.ts +0 -4
- pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/ko.js +0 -121
- pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/lt.cjs +0 -258
- pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/lt.d.cts +0 -5
- pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/lt.d.ts +0 -5
- pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/lt.js +0 -230
- pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/mk.cjs +0 -145
- pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/mk.d.cts +0 -5
- pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/mk.d.ts +0 -4
- pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/mk.js +0 -118
- pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/ms.cjs +0 -143
- pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/ms.d.cts +0 -5
- pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/ms.d.ts +0 -4
- pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/ms.js +0 -116
- pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/nl.cjs +0 -144
- pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/nl.d.cts +0 -5
- pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/nl.d.ts +0 -4
- pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/nl.js +0 -117
- pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/no.cjs +0 -143
- pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/no.d.cts +0 -5
- pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/no.d.ts +0 -4
- pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/no.js +0 -116
- pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/ota.cjs +0 -144
- pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/ota.d.cts +0 -5
- pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/ota.d.ts +0 -4
- pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/ota.js +0 -117
- pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/package.json +0 -6
- pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/pl.cjs +0 -144
- pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/pl.d.cts +0 -5
- pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/pl.d.ts +0 -4
- pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/pl.js +0 -117
- pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/ps.cjs +0 -149
- pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/ps.d.cts +0 -5
- pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/ps.d.ts +0 -4
- pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/ps.js +0 -122
- pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/pt.cjs +0 -143
- pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/pt.d.cts +0 -5
- pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/pt.d.ts +0 -4
- pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/pt.js +0 -116
- pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/ru.cjs +0 -191
- pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/ru.d.cts +0 -5
- pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/ru.d.ts +0 -4
- pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/ru.js +0 -164
- pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/sl.cjs +0 -144
- pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/sl.d.cts +0 -5
- pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/sl.d.ts +0 -4
- pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/sl.js +0 -117
- pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/sv.cjs +0 -145
- pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/sv.d.cts +0 -5
- pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/sv.d.ts +0 -4
- pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/sv.js +0 -118
- pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/ta.cjs +0 -144
- pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/ta.d.cts +0 -5
- pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/ta.d.ts +0 -4
- pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/ta.js +0 -117
- pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/th.cjs +0 -144
- pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/th.d.cts +0 -5
- pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/th.d.ts +0 -4
- pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/th.js +0 -117
- pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/tr.cjs +0 -143
- pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/tr.d.cts +0 -5
- pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/tr.d.ts +0 -5
- pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/tr.js +0 -115
- pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/ua.cjs +0 -12
- pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/ua.d.cts +0 -5
- pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/ua.d.ts +0 -5
- pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/ua.js +0 -5
- pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/uk.cjs +0 -144
- pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/uk.d.cts +0 -5
- pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/uk.d.ts +0 -4
- pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/uk.js +0 -117
- pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/ur.cjs +0 -144
- pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/ur.d.cts +0 -5
- pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/ur.d.ts +0 -4
- pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/ur.js +0 -117
- pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/vi.cjs +0 -143
- pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/vi.d.cts +0 -5
- pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/vi.d.ts +0 -4
- pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/vi.js +0 -116
- pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/yo.cjs +0 -142
- pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/yo.d.cts +0 -5
- pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/yo.d.ts +0 -4
- pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/yo.js +0 -115
- pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/zh-CN.cjs +0 -143
- pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/zh-CN.d.cts +0 -5
- pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/zh-CN.d.ts +0 -4
- pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/zh-CN.js +0 -116
- pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/zh-TW.cjs +0 -144
- pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/zh-TW.d.cts +0 -5
- pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/zh-TW.d.ts +0 -4
- pactkit-2.4.0/.opencode/node_modules/zod/v4/locales/zh-TW.js +0 -117
- pactkit-2.4.0/.opencode/node_modules/zod/v4/mini/checks.cjs +0 -34
- pactkit-2.4.0/.opencode/node_modules/zod/v4/mini/checks.d.cts +0 -1
- pactkit-2.4.0/.opencode/node_modules/zod/v4/mini/checks.d.ts +0 -1
- pactkit-2.4.0/.opencode/node_modules/zod/v4/mini/checks.js +0 -1
- pactkit-2.4.0/.opencode/node_modules/zod/v4/mini/coerce.cjs +0 -47
- pactkit-2.4.0/.opencode/node_modules/zod/v4/mini/coerce.d.cts +0 -7
- pactkit-2.4.0/.opencode/node_modules/zod/v4/mini/coerce.d.ts +0 -7
- pactkit-2.4.0/.opencode/node_modules/zod/v4/mini/coerce.js +0 -17
- pactkit-2.4.0/.opencode/node_modules/zod/v4/mini/external.cjs +0 -62
- pactkit-2.4.0/.opencode/node_modules/zod/v4/mini/external.d.cts +0 -11
- pactkit-2.4.0/.opencode/node_modules/zod/v4/mini/external.d.ts +0 -11
- pactkit-2.4.0/.opencode/node_modules/zod/v4/mini/external.js +0 -13
- pactkit-2.4.0/.opencode/node_modules/zod/v4/mini/index.cjs +0 -32
- pactkit-2.4.0/.opencode/node_modules/zod/v4/mini/index.d.cts +0 -3
- pactkit-2.4.0/.opencode/node_modules/zod/v4/mini/index.d.ts +0 -3
- pactkit-2.4.0/.opencode/node_modules/zod/v4/mini/index.js +0 -3
- pactkit-2.4.0/.opencode/node_modules/zod/v4/mini/iso.cjs +0 -60
- pactkit-2.4.0/.opencode/node_modules/zod/v4/mini/iso.d.cts +0 -22
- pactkit-2.4.0/.opencode/node_modules/zod/v4/mini/iso.d.ts +0 -22
- pactkit-2.4.0/.opencode/node_modules/zod/v4/mini/iso.js +0 -30
- pactkit-2.4.0/.opencode/node_modules/zod/v4/mini/package.json +0 -6
- pactkit-2.4.0/.opencode/node_modules/zod/v4/mini/parse.cjs +0 -16
- pactkit-2.4.0/.opencode/node_modules/zod/v4/mini/parse.d.cts +0 -1
- pactkit-2.4.0/.opencode/node_modules/zod/v4/mini/parse.d.ts +0 -1
- pactkit-2.4.0/.opencode/node_modules/zod/v4/mini/parse.js +0 -1
- pactkit-2.4.0/.opencode/node_modules/zod/v4/mini/schemas.cjs +0 -906
- pactkit-2.4.0/.opencode/node_modules/zod/v4/mini/schemas.d.cts +0 -407
- pactkit-2.4.0/.opencode/node_modules/zod/v4/mini/schemas.d.ts +0 -407
- pactkit-2.4.0/.opencode/node_modules/zod/v4/mini/schemas.js +0 -789
- pactkit-2.4.0/.opencode/node_modules/zod/v4/package.json +0 -6
- pactkit-2.4.0/.opencode/node_modules/zod/v4-mini/index.cjs +0 -17
- pactkit-2.4.0/.opencode/node_modules/zod/v4-mini/index.d.cts +0 -1
- pactkit-2.4.0/.opencode/node_modules/zod/v4-mini/index.d.ts +0 -1
- pactkit-2.4.0/.opencode/node_modules/zod/v4-mini/index.js +0 -1
- pactkit-2.4.0/.opencode/node_modules/zod/v4-mini/package.json +0 -6
- pactkit-2.4.0/.opencode/package.json +0 -5
- pactkit-2.4.0/src/pactkit/utils.py +0 -9
- {pactkit-2.4.0 → pactkit-2.5.0}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/.github/dependabot.yml +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/.github/workflows/ci.yml +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/.gitignore +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/AGENTS.md +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/CODE_OF_CONDUCT.md +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/CONTRIBUTING.md +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/LICENSE +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/README.md +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/SECURITY.md +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/docs/assets/logo.png +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/docs/guides/codex-integration-preresearch.md +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/docs/guides/tool-integration-checklist.md +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/docs/specs/BUG-001.md +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/docs/specs/BUG-002.md +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/docs/specs/BUG-003.md +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/docs/specs/BUG-004.md +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/docs/specs/BUG-005.md +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/docs/specs/BUG-006.md +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/docs/specs/BUG-007.md +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/docs/specs/BUG-008.md +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/docs/specs/BUG-009.md +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/docs/specs/BUG-010.md +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/docs/specs/BUG-011.md +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/docs/specs/BUG-012.md +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/docs/specs/BUG-013.md +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/docs/specs/BUG-014.md +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/docs/specs/BUG-015.md +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/docs/specs/BUG-016.md +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/docs/specs/BUG-017.md +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/docs/specs/BUG-018.md +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/docs/specs/BUG-019.md +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/docs/specs/BUG-020.md +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/docs/specs/BUG-021.md +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/docs/specs/BUG-022.md +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/docs/specs/BUG-023.md +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/docs/specs/BUG-024.md +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/docs/specs/BUG-025.md +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/docs/specs/BUG-026.md +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/docs/specs/BUG-027.md +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/docs/specs/BUG-028.md +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/docs/specs/BUG-029.md +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/docs/specs/BUG-030.md +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/docs/specs/BUG-031.md +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/docs/specs/BUG-032.md +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/docs/specs/BUG-033.md +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/docs/specs/BUG-034.md +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/docs/specs/BUG-035.md +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/docs/specs/BUG-slim-001.md +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/docs/specs/BUG-slim-002.md +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/docs/specs/BUG-slim-003.md +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/docs/specs/BUG-slim-004.md +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/docs/specs/BUG-slim-005.md +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/docs/specs/BUG-slim-006.md +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/docs/specs/BUG-slim-007.md +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/docs/test_cases/BUG-001_case.md +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/docs/test_cases/BUG-002_case.md +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/opencode.json +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/src/pactkit/backfill.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/src/pactkit/cleaners.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/src/pactkit/cli.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/src/pactkit/context_gen.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/src/pactkit/coverage_gate.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/src/pactkit/doctor.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/src/pactkit/generators/__init__.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/src/pactkit/generators/adapter.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/src/pactkit/guards.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/src/pactkit/id_generator.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/src/pactkit/invariants.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/src/pactkit/issue_sync.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/src/pactkit/lazy_visualize.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/src/pactkit/lessons.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/src/pactkit/lint_runner.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/src/pactkit/profiles.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/src/pactkit/prompts/__init__.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/src/pactkit/prompts/agents.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/src/pactkit/prompts/references.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/src/pactkit/prompts/rules.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/src/pactkit/prompts/skills.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/src/pactkit/regression.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/src/pactkit/schemas.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/src/pactkit/scripts.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/src/pactkit/sec_scope.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/src/pactkit/spec_status.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/src/pactkit/test_mapper.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/src/pactkit/validators.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/tests/conftest.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/tests/e2e/__init__.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/tests/e2e/cli/__init__.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/tests/e2e/cli/test_cli_e2e.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/tests/integration/__init__.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/tests/integration/test_deploy_classic.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/tests/unit/test_agent_features.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/tests/unit/test_agent_frontmatter.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/tests/unit/test_agents_enrichment.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/tests/unit/test_board_bug027.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/tests/unit/test_board_sections.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/tests/unit/test_bug001_skill_path.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/tests/unit/test_bug002_plugin_paths.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/tests/unit/test_bug003_multi_import.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/tests/unit/test_bug004_dead_set.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/tests/unit/test_bug005_archive_taskless.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/tests/unit/test_bug006_scan_excludes.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/tests/unit/test_bug007_stale_trace_refs.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/tests/unit/test_bug008_stale_command_refs.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/tests/unit/test_bug009_project_config_backfill.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/tests/unit/test_bug010_rewrite_yaml.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/tests/unit/test_bug011_stale_refs.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/tests/unit/test_bug012_call_graph_filter.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/tests/unit/test_bug013_config_single_source.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/tests/unit/test_bug014_version_hygiene.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/tests/unit/test_bug017_project_init_playbook.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/tests/unit/test_bug018_issue_tracker_verification.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/tests/unit/test_bug019_venv_deployment.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/tests/unit/test_bug020_claude_md_backup.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/tests/unit/test_bug025_release_delegation.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/tests/unit/test_bug026_version_sync.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/tests/unit/test_bug028_ghost_refs.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/tests/unit/test_bug029_stack_detection_fallback.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/tests/unit/test_bug031_docstring_accuracy.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/tests/unit/test_bug034_plan_metadata_template.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/tests/unit/test_bug035_opencode_dual_layer.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/tests/unit/test_bug_021.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/tests/unit/test_bug_022.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/tests/unit/test_bug_023.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/tests/unit/test_bug_024.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/tests/unit/test_bug_slim001_env_detection.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/tests/unit/test_bug_slim002_instruction_collision.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/tests/unit/test_bug_slim003.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/tests/unit/test_bug_slim004.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/tests/unit/test_bug_slim005.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/tests/unit/test_bug_slim006.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/tests/unit/test_check_command.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/tests/unit/test_command_frontmatter.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/tests/unit/test_command_visualize_modes.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/tests/unit/test_config.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/tests/unit/test_config_auto_merge.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/tests/unit/test_constitution_sharpening.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/tests/unit/test_create_skill.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/tests/unit/test_cross_flow_matrix.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/tests/unit/test_deploy_opencode_parity.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/tests/unit/test_deployer_cleanup.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/tests/unit/test_deployer_plugin.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/tests/unit/test_design_command.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/tests/unit/test_done_gates.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/tests/unit/test_draw_prompt.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/tests/unit/test_draw_references.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/tests/unit/test_drawio_mcp.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/tests/unit/test_home_path_fix.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/tests/unit/test_hotfix_command.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/tests/unit/test_init_guard.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/tests/unit/test_lang_profiles.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/tests/unit/test_list_stories.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/tests/unit/test_mcp_integration.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/tests/unit/test_model_config.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/tests/unit/test_modular_constitution.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/tests/unit/test_multi_prefix.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/tests/unit/test_pdca_slim.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/tests/unit/test_profiles.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/tests/unit/test_project_visibility.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/tests/unit/test_prompt_cli_refs.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/tests/unit/test_prompt_structural_invariants.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/tests/unit/test_prompts_package.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/tests/unit/test_release.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/tests/unit/test_release_field.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/tests/unit/test_release_v110.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/tests/unit/test_render_prompt.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/tests/unit/test_review_command.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/tests/unit/test_rules_enrichment.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/tests/unit/test_scaffold.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/tests/unit/test_scaffold_developer_prefix.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/tests/unit/test_schemas.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/tests/unit/test_script_extraction.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/tests/unit/test_selective_deploy.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/tests/unit/test_session_context.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/tests/unit/test_skill_structure.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/tests/unit/test_skills_enrichment.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/tests/unit/test_smart_regression.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/tests/unit/test_stack_references.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/tests/unit/test_status_command.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/tests/unit/test_statusline.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/tests/unit/test_story014_release.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/tests/unit/test_story015_ci_lint_gate.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/tests/unit/test_story016_claude_md.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/tests/unit/test_story017_init_claude_md.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/tests/unit/test_story018_arch_staleness.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/tests/unit/test_story019_bailout.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/tests/unit/test_story020_horizon.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/tests/unit/test_story021_rfc.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/tests/unit/test_story022_decision_tree.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/tests/unit/test_story023_test_quality.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/tests/unit/test_story024_native_agent.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/tests/unit/test_story025_ci_pipeline.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/tests/unit/test_story026_issue_tracker.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/tests/unit/test_story027_hooks.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/tests/unit/test_story028_rule_scoping.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/tests/unit/test_story029_doctor.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/tests/unit/test_story030_lint.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/tests/unit/test_story031_git_init_guard.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/tests/unit/test_story032_greenfield_redirect.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/tests/unit/test_story033_config_backfill.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/tests/unit/test_story034_plan_config_refresh.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/tests/unit/test_story035_readme_docs.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/tests/unit/test_story037_regression_fix.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/tests/unit/test_story039_venv_config.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/tests/unit/test_story040_layered_claude_md.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/tests/unit/test_story043_active_clarify.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/tests/unit/test_story044_consistency_check.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/tests/unit/test_story045_auto_pr.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/tests/unit/test_story046_agent_adapter.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/tests/unit/test_story047_enterprise_flags.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/tests/unit/test_story049_community_standards.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/tests/unit/test_story050_doc_only_shortcut.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/tests/unit/test_story051_workflow_streamlining.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/tests/unit/test_story052_conditional_github_release.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/tests/unit/test_story055_commands.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/tests/unit/test_story055_config.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/tests/unit/test_story055_spec_linter.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/tests/unit/test_story056_commands.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/tests/unit/test_story056_config.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/tests/unit/test_story057_implicit_cleanup.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/tests/unit/test_story058_routing_fix.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/tests/unit/test_story060_init_hang.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/tests/unit/test_story061_remove_thinking.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/tests/unit/test_story062_mcp_recommendations.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/tests/unit/test_story064_venv_local_md.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/tests/unit/test_story065_sprint_model.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/tests/unit/test_story069_opencode_format.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/tests/unit/test_story070_opencode_compliance.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/tests/unit/test_story071_opencode_config_parity.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/tests/unit/test_story072_developer_prefix.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/tests/unit/test_story073_command_model_routing.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/tests/unit/test_story_slim009_lazy_rules.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/tests/unit/test_story_slim010_dry_refactor.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/tests/unit/test_story_slim011_command_rules.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/tests/unit/test_story_slim012_ci.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/tests/unit/test_story_slim014_clean.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/tests/unit/test_story_slim014_context.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/tests/unit/test_story_slim014_guard.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/tests/unit/test_story_slim014_lazy_viz.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/tests/unit/test_story_slim014_next_id.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/tests/unit/test_story_slim014_regression.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/tests/unit/test_story_slim014_sec_scope.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/tests/unit/test_story_slim014_validators.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/tests/unit/test_story_slim015_doctor.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/tests/unit/test_story_slim016_testmap_lint.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/tests/unit/test_story_slim017.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/tests/unit/test_story_slim018.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/tests/unit/test_story_slim019_plan_subphases.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/tests/unit/test_story_slim020_explore_stall_fix.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/tests/unit/test_story_slim021.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/tests/unit/test_story_slim022.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/tests/unit/test_story_slim023.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/tests/unit/test_story_slim024.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/tests/unit/test_story_slim025.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/tests/unit/test_story_slim026.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/tests/unit/test_story_slim027.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/tests/unit/test_story_slim028.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/tests/unit/test_story_slim029.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/tests/unit/test_story_slim030.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/tests/unit/test_story_slim031.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/tests/unit/test_story_slim032.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/tests/unit/test_story_slim033.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/tests/unit/test_story_slim034.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/tests/unit/test_story_slim035.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/tests/unit/test_story_slim036.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/tests/unit/test_story_slim037.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/tests/unit/test_story_slim038.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/tests/unit/test_story_slim039.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/tests/unit/test_story_slim040.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/tests/unit/test_story_slim041.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/tests/unit/test_story_slim042.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/tests/unit/test_story_slim043.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/tests/unit/test_story_slim044.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/tests/unit/test_story_slim045.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/tests/unit/test_story_slim046.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/tests/unit/test_story_slim047.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/tests/unit/test_story_slim048.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/tests/unit/test_tools.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/tests/unit/test_update_task.py +0 -0
- {pactkit-2.4.0 → pactkit-2.5.0}/tests/unit/test_visualize_modes.py +0 -0
|
@@ -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
|
|
@@ -4,6 +4,40 @@ 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.5.0] - 2026-03-26
|
|
8
|
+
|
|
9
|
+
### Added
|
|
10
|
+
- **E2E CLI Coverage 100%** (STORY-slim-056) — 60 subprocess-based E2E tests covering all 25 CLI subcommands, including parametrized `--help` consistency check, error path validation, and Unicode project path support.
|
|
11
|
+
- **`__main__.py`** — `python -m pactkit` now works as an alternative to the `pactkit` entry point.
|
|
12
|
+
|
|
13
|
+
### Fixed
|
|
14
|
+
- **Mermaid Quote Injection** (STORY-slim-053 R1) — File/function names containing `"` no longer break `.mmd` graph rendering; escaped via `#quot;` HTML entity at 4 label sites.
|
|
15
|
+
- **O(N×E) Callee Resolution** (STORY-slim-053 R2) — `_resolve_callee()` now uses a pre-built `suffix_index` dict for O(1) lookup instead of linear scan.
|
|
16
|
+
- **Module Index Collision** (STORY-slim-053 R3) — `module_index` changed from `dict[str, Path]` to `dict[str, list[Path]]` with `_best_match()` same-package preference, fixing silent node loss for same-name files in different directories.
|
|
17
|
+
- **Focus Substring False Positives** (STORY-slim-053 R4) — `--focus auth.py` no longer matches `oauth.py`; changed to exact path-tail matching with `_extract_node_id()` set lookup.
|
|
18
|
+
- **BFS O(N²) Pop** (STORY-slim-053 R5) — All 4 BFS sites now use `collections.deque.popleft()` instead of `list.pop(0)`.
|
|
19
|
+
- **`_rewrite_yaml` Non-Atomic Write** (STORY-slim-054 R1) — `config.py` now uses tmp+rename pattern, preventing `pactkit.yaml` corruption on crash/disk-full.
|
|
20
|
+
- **`_deploy_ci` Dict Mutation** (STORY-slim-054 R2) — Changed `.pop("_ghe_override")` to `.get()`, preventing caller dict mutation across multi-call scenarios.
|
|
21
|
+
- **`atomic_write` .tmp Residual** (STORY-slim-054 R3) — Added try/except cleanup so `.tmp` files are removed on `os.replace()` failure.
|
|
22
|
+
- **Visualize Non-Atomic .mmd Writes** (STORY-slim-055 R1) — All 4 `.mmd` output sites now use `_atomic_mmd_write()` (tmp+rename).
|
|
23
|
+
- **Deployer Bare `read_text()`** (STORY-slim-055 R2) — 3 sites in `deployer.py` now specify `encoding='utf-8'` for Windows compatibility.
|
|
24
|
+
- **Large File OOM** (STORY-slim-055 R3) — Added `MAX_FILE_BYTES=1MB` guard to `PythonAnalyzer` and `_build_class_graph()`, skipping auto-generated mega-files.
|
|
25
|
+
- **Sprint Redundant Operations** (STORY-slim-050) — Eliminated duplicate visualize/clean/context runs in sprint orchestration.
|
|
26
|
+
- **Skill Script Robustness** (STORY-slim-051, 052) — Hardened board.py, scaffold.py, spec_linter.py, visualize.py with encoding, error handling, and call-chain fixes.
|
|
27
|
+
|
|
28
|
+
## [2.4.1] - 2026-03-26
|
|
29
|
+
|
|
30
|
+
### Fixed
|
|
31
|
+
- **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.
|
|
32
|
+
- **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`.
|
|
33
|
+
|
|
34
|
+
### Added
|
|
35
|
+
- **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.
|
|
36
|
+
- **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).
|
|
37
|
+
|
|
38
|
+
### Changed
|
|
39
|
+
- **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.
|
|
40
|
+
|
|
7
41
|
## [2.4.0] - 2026-03-25
|
|
8
42
|
|
|
9
43
|
### Added
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: pactkit
|
|
3
|
-
Version: 2.
|
|
3
|
+
Version: 2.5.0
|
|
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.
|
|
7
|
+
version = "2.5.0"
|
|
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,5 +1,6 @@
|
|
|
1
1
|
"""PactKit configuration — load, validate, and generate pactkit.yaml."""
|
|
2
2
|
|
|
3
|
+
import os
|
|
3
4
|
import re
|
|
4
5
|
import warnings
|
|
5
6
|
from dataclasses import dataclass, field
|
|
@@ -704,7 +705,14 @@ def _rewrite_yaml(path: Path, data: dict) -> None:
|
|
|
704
705
|
lines.append(serialized.rstrip())
|
|
705
706
|
lines.append("")
|
|
706
707
|
|
|
707
|
-
path.
|
|
708
|
+
tmp = path.with_suffix(".tmp")
|
|
709
|
+
try:
|
|
710
|
+
tmp.write_text("\n".join(lines), encoding="utf-8")
|
|
711
|
+
os.replace(tmp, path)
|
|
712
|
+
except Exception:
|
|
713
|
+
if tmp.exists():
|
|
714
|
+
tmp.unlink(missing_ok=True)
|
|
715
|
+
raise
|
|
708
716
|
|
|
709
717
|
|
|
710
718
|
# ---------------------------------------------------------------------------
|
|
@@ -891,7 +891,7 @@ def _load_opencode_providers(opencode_root):
|
|
|
891
891
|
json_path = opencode_root / "opencode.json"
|
|
892
892
|
if json_path.is_file():
|
|
893
893
|
try:
|
|
894
|
-
data = json.loads(json_path.read_text())
|
|
894
|
+
data = json.loads(json_path.read_text(encoding='utf-8'))
|
|
895
895
|
return data.get("provider", {})
|
|
896
896
|
except (json.JSONDecodeError, OSError):
|
|
897
897
|
pass
|
|
@@ -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" {
|
|
1002
|
+
lines.append(f" {install_cmd}")
|
|
1002
1003
|
lines.append("")
|
|
1003
1004
|
lines.append(" - name: Lint")
|
|
1004
1005
|
lines.append(f" run: {lint_command}")
|
|
@@ -1063,7 +1064,7 @@ def _deploy_ci(provider, project_root, config):
|
|
|
1063
1064
|
ci_config = {}
|
|
1064
1065
|
|
|
1065
1066
|
# GHE detection priority: _ghe_override (testing) > github_host (explicit) > auto-detect
|
|
1066
|
-
is_ghe = ci_config.
|
|
1067
|
+
is_ghe = ci_config.get("_ghe_override")
|
|
1067
1068
|
if is_ghe is None:
|
|
1068
1069
|
github_host = ci_config.get("github_host", "")
|
|
1069
1070
|
if github_host:
|
|
@@ -1312,7 +1313,7 @@ def _generate_project_claude_md(config):
|
|
|
1312
1313
|
# STORY-040 R4: Migration heuristic
|
|
1313
1314
|
# If CLAUDE.md exists but CLAUDE.local.md doesn't, check for user modifications
|
|
1314
1315
|
if claude_md_path.exists() and not claude_local_path.exists():
|
|
1315
|
-
existing_content = claude_md_path.read_text()
|
|
1316
|
+
existing_content = claude_md_path.read_text(encoding='utf-8')
|
|
1316
1317
|
if _is_user_modified_claude_md(existing_content, project_name):
|
|
1317
1318
|
# Migrate user content to CLAUDE.local.md
|
|
1318
1319
|
atomic_write(claude_local_path, existing_content)
|
|
@@ -1635,7 +1636,7 @@ def _update_global_opencode_json(opencode_root, command_models=None, providers=N
|
|
|
1635
1636
|
# Read existing config if present
|
|
1636
1637
|
if json_path.is_file():
|
|
1637
1638
|
try:
|
|
1638
|
-
config = json.loads(json_path.read_text())
|
|
1639
|
+
config = json.loads(json_path.read_text(encoding='utf-8'))
|
|
1639
1640
|
except (json.JSONDecodeError, OSError):
|
|
1640
1641
|
config = {}
|
|
1641
1642
|
|
|
@@ -373,8 +373,12 @@ allowed-tools: [Read, Write, Edit, Bash, Glob]
|
|
|
373
373
|
## 🎬 Phase 2.5: Regression Gate (MANDATORY)
|
|
374
374
|
> **CRITICAL**: Do NOT skip this step. This is the safety net before commit.
|
|
375
375
|
|
|
376
|
-
### Step
|
|
376
|
+
### Step 0: Source Change Pre-Check
|
|
377
377
|
- Run `git diff --name-only HEAD~1` (or vs. branch base) to list all changed files.
|
|
378
|
+
- Filter for source and test files only (exclude docs, configs, graphs).
|
|
379
|
+
- If **no source/test files changed** since the last commit (e.g., only docs, board, graphs, or config changed): log `"Regression: SKIP — no source/test changes since Act"` and proceed directly to Step 2.7 (Smart Lint Gate). This avoids re-running 3000+ tests when Act already verified the code.
|
|
380
|
+
|
|
381
|
+
### Step 1: Impact Analysis
|
|
378
382
|
- Check if `docs/architecture/graphs/code_graph.mmd` exists.
|
|
379
383
|
|
|
380
384
|
### Step 1.3: Classification Shortcut
|
|
@@ -322,7 +322,7 @@ description: "Automated PDCA Sprint orchestration via Subagent Team (Slim Team)"
|
|
|
322
322
|
allowed-tools: [Read, Write, Edit, Bash, Glob, Grep]
|
|
323
323
|
---
|
|
324
324
|
|
|
325
|
-
# Command: Sprint (v1.
|
|
325
|
+
# Command: Sprint (v1.5.0 Protocol-Only Orchestrator)
|
|
326
326
|
- **Usage**: `/project-sprint "$ARGUMENTS"`
|
|
327
327
|
- **Agent**: Team Lead (current session)
|
|
328
328
|
|
|
@@ -332,7 +332,7 @@ allowed-tools: [Read, Write, Edit, Bash, Glob, Grep]
|
|
|
332
332
|
## Phase 0: Setup
|
|
333
333
|
1. Parse requirement from `$ARGUMENTS`. Run `pactkit next-id` to determine next STORY-ID.
|
|
334
334
|
2. `TeamCreate("sprint-{STORY_ID}")`.
|
|
335
|
-
3. `TaskCreate` for each stage: Plan (no deps), Act (blockedBy: Plan), Check-QA (blockedBy: Act),
|
|
335
|
+
3. `TaskCreate` for each stage: Plan (no deps), Act (blockedBy: Plan), Check-QA (blockedBy: Act), Close (blockedBy: Check-QA).
|
|
336
336
|
4. Verify worktree support (`git worktree list`). Use `isolation="worktree"` if supported.
|
|
337
337
|
5. Read `pactkit.yaml` (check `{PACTKIT_YAML}`), extract `agent_models`: `plan_model=agent_models.get('system-architect','opus')`, `act_model=agent_models.get('senior-developer','sonnet')`. Default: fallback to `sonnet` if model unavailable.
|
|
338
338
|
|
|
@@ -340,18 +340,20 @@ allowed-tools: [Read, Write, Edit, Bash, Glob, Grep]
|
|
|
340
340
|
|
|
341
341
|
### Stage A: Build
|
|
342
342
|
|
|
343
|
-
**A1** (`system-architect`, model: opus, isolation="worktree"): Execute `commands/project-plan.md`.
|
|
343
|
+
**A1** (`system-architect`, model: opus, isolation="worktree"): Execute `commands/project-plan.md`.
|
|
344
|
+
- **Sprint override**: Skip Phase 0.7 Clarify Gate. Use STORY-ID {STORY_ID} (already determined — skip `pactkit next-id`).
|
|
345
|
+
- Verify Spec. STOP on failure.
|
|
344
346
|
|
|
345
347
|
**A2** (`senior-developer`, model: sonnet, isolation="worktree"): Execute `commands/project-act.md`. Merge worktree. STOP on failure.
|
|
346
348
|
|
|
347
|
-
### Stage B: Check
|
|
348
|
-
- Launch `qa-engineer` (model: sonnet, isolation="worktree"): Execute `commands/project-check.md
|
|
349
|
-
-
|
|
350
|
-
- Collect reports from worktrees. On any FAIL: STOP.
|
|
349
|
+
### Stage B: Check
|
|
350
|
+
- Launch `qa-engineer` (model: sonnet, isolation="worktree"): Execute `commands/project-check.md` (includes SEC-1~8 in Phase 1). Report "QA PASS/FAIL".
|
|
351
|
+
- Collect reports from worktree. On FAIL: STOP.
|
|
351
352
|
|
|
352
353
|
### Stage C: Close
|
|
353
|
-
- Launch `repo-maintainer` (model: sonnet, isolation="worktree"): Execute `commands/project-done.md`.
|
|
354
|
-
-
|
|
354
|
+
- Launch `repo-maintainer` (model: sonnet, isolation="worktree"): Execute `commands/project-done.md`.
|
|
355
|
+
- **Sprint overrides**: Skip `pactkit update` in Phase 4. Skip `pactkit visualize --lazy` in Phase 2 (Act already ran it).
|
|
356
|
+
- Report "DONE PASS/FAIL". Merge worktree branch on success.
|
|
355
357
|
|
|
356
358
|
## Phase 2: Cleanup
|
|
357
359
|
1. `SendMessage(type="shutdown_request")` to all teammates.
|
|
@@ -369,7 +371,6 @@ allowed-tools: [Read, Write, Edit, Bash, Glob, Grep]
|
|
|
369
371
|
| Plan | system-architect | opus (agent_models) | project-plan.md |
|
|
370
372
|
| Act | senior-developer | sonnet (agent_models) | project-act.md |
|
|
371
373
|
| Check-QA | qa-engineer | sonnet | project-check.md |
|
|
372
|
-
| Check-Security | security-auditor | sonnet | (inline OWASP audit) |
|
|
373
374
|
| Close | repo-maintainer | sonnet | project-done.md |
|
|
374
375
|
"""
|
|
375
376
|
|
|
@@ -9,6 +9,7 @@ from pathlib import Path
|
|
|
9
9
|
_SCRIPTS_DIR = Path(__file__).parent
|
|
10
10
|
|
|
11
11
|
_SHARED_HEADER = r"""import abc, re, os, sys, json, datetime, argparse, subprocess, shutil, ast
|
|
12
|
+
from collections import deque
|
|
12
13
|
from dataclasses import dataclass
|
|
13
14
|
from pathlib import Path
|
|
14
15
|
|
|
@@ -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)
|
|
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
|
|
@@ -38,6 +38,11 @@ def add_story(sid, title, tasks):
|
|
|
38
38
|
if not p.exists():
|
|
39
39
|
return "❌ No Board"
|
|
40
40
|
content = p.read_text(encoding="utf-8")
|
|
41
|
+
# R6: Duplicate guard — check if story already exists on board
|
|
42
|
+
existing_blocks = _parse_story_blocks(content)
|
|
43
|
+
for block_sid, *_ in existing_blocks:
|
|
44
|
+
if block_sid == sid:
|
|
45
|
+
return f"❌ Story {sid} already on board"
|
|
41
46
|
t_md = nl().join([f"- [ ] {t.strip()}" for t in tasks.split("|") if t.strip()])
|
|
42
47
|
entry = f"{nl()}### [{sid}] {title}{nl()}> Spec: docs/specs/{sid}.md{nl()}{nl()}{t_md}{nl()}"
|
|
43
48
|
# Insert before In Progress section
|
|
@@ -54,7 +59,10 @@ def add_story(sid, title, tasks):
|
|
|
54
59
|
|
|
55
60
|
|
|
56
61
|
def _parse_story_blocks(content):
|
|
57
|
-
"""Extract all ### [ID] or ### ID: blocks with their full text.
|
|
62
|
+
"""Extract all ### [ID] or ### ID: blocks with their full text and positions.
|
|
63
|
+
|
|
64
|
+
Returns list of (sid, block_text, start_pos, end_pos) tuples.
|
|
65
|
+
"""
|
|
58
66
|
blocks = []
|
|
59
67
|
story_pat = _TITLE_RE
|
|
60
68
|
section_pat = r"^## "
|
|
@@ -71,7 +79,12 @@ def _parse_story_blocks(content):
|
|
|
71
79
|
next_section = sp
|
|
72
80
|
break
|
|
73
81
|
end = min(next_story, next_section)
|
|
74
|
-
|
|
82
|
+
# R4 (STORY-slim-052): Trim trailing whitespace and adjust end to match,
|
|
83
|
+
# so that len(block_text) == end - start for all callers.
|
|
84
|
+
raw = content[start:end]
|
|
85
|
+
trimmed = raw.rstrip()
|
|
86
|
+
adjusted_end = start + len(trimmed)
|
|
87
|
+
blocks.append((m.group(1), trimmed, start, adjusted_end))
|
|
75
88
|
return blocks
|
|
76
89
|
|
|
77
90
|
|
|
@@ -98,23 +111,27 @@ def fix_board():
|
|
|
98
111
|
dp = content.find(_DONE)
|
|
99
112
|
if bp == -1 or ip == -1 or dp == -1:
|
|
100
113
|
return "❌ Board missing section headers"
|
|
101
|
-
# Extract all story blocks
|
|
114
|
+
# Extract all story blocks (with positions)
|
|
102
115
|
blocks = _parse_story_blocks(content)
|
|
103
116
|
if not blocks:
|
|
104
117
|
return "✅ No misplaced stories found."
|
|
105
|
-
# Remove all story blocks from content
|
|
118
|
+
# Remove all story blocks from content using position-based removal (R5)
|
|
106
119
|
clean = content
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
120
|
+
offset = 0
|
|
121
|
+
for _, block_text, start, end in blocks:
|
|
122
|
+
span = end - start
|
|
123
|
+
adj_start = start - offset
|
|
124
|
+
clean = clean[:adj_start] + clean[adj_start + span:]
|
|
125
|
+
offset += span
|
|
126
|
+
# R2 (STORY-slim-052): Clean up trailing whitespace on otherwise-empty lines
|
|
127
|
+
clean = nl().join(line.rstrip() for line in clean.split(nl()))
|
|
111
128
|
# Clean up excessive blank lines
|
|
112
129
|
clean = re.sub(r"\n{3,}", nl() + nl(), clean)
|
|
113
130
|
# Classify stories into buckets
|
|
114
131
|
backlog_items = []
|
|
115
132
|
in_progress_items = []
|
|
116
133
|
done_items = []
|
|
117
|
-
for
|
|
134
|
+
for _, block_text, _, _ in blocks:
|
|
118
135
|
cat = _classify_story(block_text)
|
|
119
136
|
if cat == "backlog":
|
|
120
137
|
backlog_items.append(block_text)
|
|
@@ -149,6 +166,19 @@ def fix_board():
|
|
|
149
166
|
return f"✅ Board fixed: {moved} stories relocated."
|
|
150
167
|
|
|
151
168
|
|
|
169
|
+
def _write_board(p, content):
|
|
170
|
+
"""Atomic write to board file."""
|
|
171
|
+
tmp = p.with_suffix(".tmp")
|
|
172
|
+
tmp.write_text(content, encoding="utf-8")
|
|
173
|
+
os.replace(tmp, p)
|
|
174
|
+
|
|
175
|
+
|
|
176
|
+
def _mark_done(content, story_match, story_block, old_task):
|
|
177
|
+
"""Replace one unchecked task with checked, return new content."""
|
|
178
|
+
new_block = story_block.replace(f"- [ ] {old_task}", f"- [x] {old_task}", 1)
|
|
179
|
+
return content[: story_match.start()] + new_block + content[story_match.end() :]
|
|
180
|
+
|
|
181
|
+
|
|
152
182
|
def update_task(sid, tasks_list):
|
|
153
183
|
task_name = " ".join(tasks_list)
|
|
154
184
|
p = Path.cwd() / "docs/product/sprint_board.md"
|
|
@@ -161,20 +191,45 @@ def update_task(sid, tasks_list):
|
|
|
161
191
|
if not story_match:
|
|
162
192
|
return f"❌ Story {sid} not found"
|
|
163
193
|
story_block = story_match.group(1)
|
|
164
|
-
|
|
194
|
+
|
|
195
|
+
def _update_and_fix(content, matched_task):
|
|
196
|
+
content = _mark_done(content, story_match, story_block, matched_task)
|
|
197
|
+
_write_board(p, content)
|
|
198
|
+
fix_board() # Explicit call for auto-move (R4: not in _write_board)
|
|
199
|
+
return f"✅ Task {sid} updated: {matched_task}"
|
|
200
|
+
|
|
201
|
+
# Strategy 1: Exact match
|
|
165
202
|
task_pat = rf"(- \[ \] {re.escape(task_name)})"
|
|
166
203
|
if re.search(task_pat, story_block):
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
tmp.write_text(new_content, encoding="utf-8")
|
|
171
|
-
os.replace(tmp, p)
|
|
172
|
-
fix_board()
|
|
173
|
-
return f"✅ Task {sid} updated: {task_name}"
|
|
174
|
-
# Check if already done
|
|
204
|
+
return _update_and_fix(content, task_name)
|
|
205
|
+
|
|
206
|
+
# Check if already done (exact)
|
|
175
207
|
if re.search(rf"- \[x\] {re.escape(task_name)}", story_block):
|
|
176
208
|
return f"✅ Already done: {task_name}"
|
|
177
|
-
|
|
209
|
+
|
|
210
|
+
# Strategy 2: Fuzzy fallback — collect all unchecked tasks
|
|
211
|
+
unchecked = re.findall(r"- \[ \] (.+)", story_block)
|
|
212
|
+
if not unchecked:
|
|
213
|
+
return f"✅ All tasks in {sid} already done"
|
|
214
|
+
|
|
215
|
+
# 2a: Only one unchecked task — mark it done (most common case)
|
|
216
|
+
if len(unchecked) == 1:
|
|
217
|
+
return _update_and_fix(content, unchecked[0])
|
|
218
|
+
|
|
219
|
+
# 2b: Substring match
|
|
220
|
+
matches = [t for t in unchecked
|
|
221
|
+
if task_name.lower() in t.lower() or t.lower() in task_name.lower()]
|
|
222
|
+
if len(matches) == 1:
|
|
223
|
+
return _update_and_fix(content, matches[0])
|
|
224
|
+
|
|
225
|
+
# 2c: Numeric index (1-based)
|
|
226
|
+
if task_name.isdigit():
|
|
227
|
+
idx = int(task_name) - 1
|
|
228
|
+
if 0 <= idx < len(unchecked):
|
|
229
|
+
return _update_and_fix(content, unchecked[idx])
|
|
230
|
+
|
|
231
|
+
remaining = ", ".join(unchecked)
|
|
232
|
+
return f"❌ Task not found in {sid}: {task_name}. Unchecked: [{remaining}]"
|
|
178
233
|
|
|
179
234
|
|
|
180
235
|
def update_version(version):
|
|
@@ -188,8 +243,12 @@ def update_version(version):
|
|
|
188
243
|
if yaml_path is None:
|
|
189
244
|
return "⚠️ No pactkit.yaml found, skipping version update"
|
|
190
245
|
content = yaml_path.read_text(encoding="utf-8")
|
|
191
|
-
|
|
192
|
-
|
|
246
|
+
# R8: Only replace the first/top-level version: key, not nested ones
|
|
247
|
+
content = re.sub(r"version:\s*\S+", f"version: {version}", content, count=1)
|
|
248
|
+
# R5 (STORY-slim-052): Atomic write via tmp+rename
|
|
249
|
+
tmp = yaml_path.with_suffix(".tmp")
|
|
250
|
+
tmp.write_text(content, encoding="utf-8")
|
|
251
|
+
os.replace(tmp, yaml_path)
|
|
193
252
|
return f"✅ Version updated to {version}"
|
|
194
253
|
|
|
195
254
|
|
|
@@ -206,6 +265,55 @@ def snapshot_graph(version):
|
|
|
206
265
|
return f"✅ Snapshot {version}: {count} graphs saved"
|
|
207
266
|
|
|
208
267
|
|
|
268
|
+
# --- MOVE ---
|
|
269
|
+
def move_story(sid, target):
|
|
270
|
+
"""Move a story to the specified section regardless of checkbox state."""
|
|
271
|
+
valid_targets = {"backlog": _BACKLOG, "in_progress": _IN_PROGRESS, "done": _DONE}
|
|
272
|
+
if target not in valid_targets:
|
|
273
|
+
return f"❌ Invalid target: {target}. Use: backlog, in_progress, done"
|
|
274
|
+
p = Path.cwd() / "docs/product/sprint_board.md"
|
|
275
|
+
if not p.exists():
|
|
276
|
+
return "❌ No Board"
|
|
277
|
+
content = p.read_text(encoding="utf-8")
|
|
278
|
+
blocks = _parse_story_blocks(content)
|
|
279
|
+
# Find the target story (with position)
|
|
280
|
+
story_block = None
|
|
281
|
+
block_start = None
|
|
282
|
+
block_end = None
|
|
283
|
+
for block_sid, block_text, start, end in blocks:
|
|
284
|
+
if block_sid == sid:
|
|
285
|
+
story_block = block_text
|
|
286
|
+
block_start = start
|
|
287
|
+
block_end = end
|
|
288
|
+
break
|
|
289
|
+
if story_block is None:
|
|
290
|
+
return f"❌ Story {sid} not found on board"
|
|
291
|
+
# Remove the story block using its known position (R5)
|
|
292
|
+
content = content[:block_start] + content[block_end:]
|
|
293
|
+
content = re.sub(r"\n{3,}", nl() + nl(), content)
|
|
294
|
+
# Find target section and the next section after it
|
|
295
|
+
target_header = valid_targets[target]
|
|
296
|
+
section_order = [_BACKLOG, _IN_PROGRESS, _DONE]
|
|
297
|
+
target_idx = content.find(target_header)
|
|
298
|
+
if target_idx == -1:
|
|
299
|
+
return f"❌ Section '{target_header}' not found"
|
|
300
|
+
# Find the next section header after target
|
|
301
|
+
next_section_idx = len(content)
|
|
302
|
+
for sec in section_order:
|
|
303
|
+
sec_idx = content.find(sec)
|
|
304
|
+
if sec_idx > target_idx and sec_idx < next_section_idx:
|
|
305
|
+
next_section_idx = sec_idx
|
|
306
|
+
# Insert story block just before the next section (or at end)
|
|
307
|
+
insert_point = next_section_idx
|
|
308
|
+
entry = nl() + story_block + nl() + nl()
|
|
309
|
+
content = content[:insert_point].rstrip() + entry + content[insert_point:]
|
|
310
|
+
content = re.sub(r"\n{3,}", nl() + nl(), content)
|
|
311
|
+
tmp = p.with_suffix(".tmp")
|
|
312
|
+
tmp.write_text(content, encoding="utf-8")
|
|
313
|
+
os.replace(tmp, p)
|
|
314
|
+
return f"✅ Moved {sid} to {target}"
|
|
315
|
+
|
|
316
|
+
|
|
209
317
|
# --- LIST ---
|
|
210
318
|
def list_stories():
|
|
211
319
|
p = Path.cwd() / "docs/product/sprint_board.md"
|
|
@@ -244,7 +352,8 @@ def archive_stories():
|
|
|
244
352
|
return "❌ No Board"
|
|
245
353
|
content = board_path.read_text(encoding="utf-8")
|
|
246
354
|
# BUG-027: Support both ### and #### for backward compatibility
|
|
247
|
-
|
|
355
|
+
# R7: Use ITEM_ID_RE instead of hardcoded prefix list
|
|
356
|
+
parts = re.split(rf"(?=^#{{3,4}} \[?(?:{ITEM_ID_RE})\]?)", content, flags=re.MULTILINE)
|
|
248
357
|
active_parts = [parts[0]]
|
|
249
358
|
archived_parts = []
|
|
250
359
|
for part in parts[1:]:
|
|
@@ -289,6 +398,9 @@ if __name__ == "__main__":
|
|
|
289
398
|
p_ver.add_argument("version")
|
|
290
399
|
p_snap = sub.add_parser("snapshot")
|
|
291
400
|
p_snap.add_argument("version")
|
|
401
|
+
p_move = sub.add_parser("move_story")
|
|
402
|
+
p_move.add_argument("story_id")
|
|
403
|
+
p_move.add_argument("target", choices=["backlog", "in_progress", "done"])
|
|
292
404
|
sub.add_parser("archive")
|
|
293
405
|
sub.add_parser("list_stories")
|
|
294
406
|
sub.add_parser("fix_board")
|
|
@@ -306,5 +418,7 @@ if __name__ == "__main__":
|
|
|
306
418
|
print(archive_stories())
|
|
307
419
|
elif a.cmd == "list_stories":
|
|
308
420
|
print(list_stories())
|
|
421
|
+
elif a.cmd == "move_story":
|
|
422
|
+
print(move_story(a.story_id, a.target))
|
|
309
423
|
elif a.cmd == "fix_board":
|
|
310
424
|
print(fix_board())
|
|
@@ -29,9 +29,13 @@ def git_start(story_id):
|
|
|
29
29
|
branch_type = _BRANCH_PREFIX_MAP.get(prefix, "feature")
|
|
30
30
|
b = f"{branch_type}/{clean_id}"
|
|
31
31
|
try:
|
|
32
|
-
subprocess.run(["git", "checkout", "-b", b], check=True
|
|
33
|
-
|
|
34
|
-
|
|
32
|
+
subprocess.run(["git", "checkout", "-b", b], check=True,
|
|
33
|
+
capture_output=True, text=True)
|
|
34
|
+
except subprocess.CalledProcessError as e:
|
|
35
|
+
reason = (e.stderr or e.stdout or str(e)).strip()
|
|
36
|
+
return f"❌ Branch creation failed: {reason}"
|
|
37
|
+
except FileNotFoundError:
|
|
38
|
+
return "❌ Branch creation failed: git not found"
|
|
35
39
|
return f"✅ Branch: {b}"
|
|
36
40
|
|
|
37
41
|
|
|
@@ -39,6 +43,8 @@ def git_start(story_id):
|
|
|
39
43
|
def create_test_file(path):
|
|
40
44
|
p = Path.cwd() / path
|
|
41
45
|
t = Path.cwd() / "tests/unit" / f"test_{p.name}"
|
|
46
|
+
if t.exists():
|
|
47
|
+
return f"❌ Test file already exists: {t}"
|
|
42
48
|
if not t.parent.exists():
|
|
43
49
|
t.parent.mkdir(parents=True, exist_ok=True)
|
|
44
50
|
c = ["import pytest", f"# Test {p.name}", "def test_basic(): assert True"]
|
|
@@ -50,6 +56,8 @@ def create_e2e(story, name):
|
|
|
50
56
|
story = _inject_developer_prefix(story)
|
|
51
57
|
safe = re.sub(r"[^a-zA-Z0-9]", "_", name.lower())
|
|
52
58
|
p = Path.cwd() / f"tests/e2e/test_{story}_{safe}.py"
|
|
59
|
+
if p.exists():
|
|
60
|
+
return f"❌ E2E test file already exists: {p}"
|
|
53
61
|
if not p.parent.exists():
|
|
54
62
|
p.parent.mkdir(parents=True, exist_ok=True)
|
|
55
63
|
c = ["import pytest", f"# E2E {story}", "def test_e2e(): assert True"]
|
|
@@ -104,7 +112,13 @@ def _inject_developer_prefix(item_id):
|
|
|
104
112
|
# Check if developer prefix is already present
|
|
105
113
|
if rest.startswith(f"{dev}-"):
|
|
106
114
|
return item_id
|
|
107
|
-
|
|
115
|
+
# R17: Only inject prefix if rest is pure numeric (e.g., "042")
|
|
116
|
+
# or matches a known developer-NNN pattern. Reject ambiguous inputs
|
|
117
|
+
# like "slim2-001" where a different prefix is embedded.
|
|
118
|
+
if re.match(r"^\d+$", rest):
|
|
119
|
+
return f"{item_type}-{dev}-{rest}"
|
|
120
|
+
# rest contains non-numeric chars (e.g., "slim2-001") — pass through unchanged
|
|
121
|
+
return item_id
|
|
108
122
|
|
|
109
123
|
|
|
110
124
|
# --- SPEC ---
|
|
@@ -164,9 +178,14 @@ _SPEC_TEMPLATE = """\
|
|
|
164
178
|
def create_spec(i, t):
|
|
165
179
|
i = _inject_developer_prefix(i)
|
|
166
180
|
p = Path.cwd() / f"docs/specs/{i}.md"
|
|
181
|
+
if p.exists():
|
|
182
|
+
return f"❌ Spec already exists: {p}"
|
|
167
183
|
if not p.parent.exists():
|
|
168
184
|
p.parent.mkdir(parents=True, exist_ok=True)
|
|
169
|
-
|
|
185
|
+
# R7 (STORY-slim-052): Use sequential str.replace() instead of .format()
|
|
186
|
+
# to avoid KeyError/ValueError when title contains { or } characters.
|
|
187
|
+
# Follows Architecture Principle 7 (template rendering safety).
|
|
188
|
+
c = _SPEC_TEMPLATE.replace("{id}", i).replace("{title}", t)
|
|
170
189
|
p.write_text(c, encoding="utf-8")
|
|
171
190
|
return "✅ Spec Created"
|
|
172
191
|
|
|
@@ -266,6 +285,9 @@ def create_board():
|
|
|
266
285
|
# --- PRD ---
|
|
267
286
|
def create_prd(product_name):
|
|
268
287
|
p = Path.cwd() / "docs" / "product" / "prd.md"
|
|
288
|
+
# R9 (STORY-slim-052): Guard against overwriting existing PRD
|
|
289
|
+
if p.exists():
|
|
290
|
+
return f"⚠️ PRD already exists: {p}"
|
|
269
291
|
if not p.parent.exists():
|
|
270
292
|
p.parent.mkdir(parents=True, exist_ok=True)
|
|
271
293
|
c = nl().join(
|