pactkit 2.3.5__tar.gz → 2.4.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.3.5 → pactkit-2.4.0}/.github/workflows/ci.yml +1 -1
- {pactkit-2.3.5 → pactkit-2.4.0}/.github/workflows/pactkit.yml +1 -1
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/pactkit.yaml +19 -1
- {pactkit-2.3.5 → pactkit-2.4.0}/CHANGELOG.md +32 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/PKG-INFO +6 -1
- pactkit-2.4.0/docs/specs/BUG-slim-007.md +138 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/pyproject.toml +12 -3
- {pactkit-2.3.5 → pactkit-2.4.0}/src/pactkit/__init__.py +1 -1
- {pactkit-2.3.5 → pactkit-2.4.0}/src/pactkit/cli.py +9 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/src/pactkit/config.py +30 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/src/pactkit/issue_sync.py +3 -1
- {pactkit-2.3.5 → pactkit-2.4.0}/src/pactkit/prompts/commands.py +20 -38
- {pactkit-2.3.5 → pactkit-2.4.0}/src/pactkit/prompts/rules.py +1 -1
- {pactkit-2.3.5 → pactkit-2.4.0}/src/pactkit/prompts/workflows.py +2 -1
- {pactkit-2.3.5 → pactkit-2.4.0}/src/pactkit/schemas.py +23 -3
- {pactkit-2.3.5 → pactkit-2.4.0}/src/pactkit/skills/__init__.py +2 -1
- {pactkit-2.3.5 → pactkit-2.4.0}/src/pactkit/skills/scaffold.py +18 -2
- {pactkit-2.3.5 → pactkit-2.4.0}/src/pactkit/skills/spec_linter.py +70 -21
- pactkit-2.4.0/src/pactkit/skills/visualize.py +2024 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/tests/unit/test_bug030_spec_lint_cli.py +8 -2
- pactkit-2.4.0/tests/unit/test_bug034_plan_metadata_template.py +45 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/tests/unit/test_config_auto_merge.py +2 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/tests/unit/test_create_skill.py +3 -2
- {pactkit-2.3.5 → pactkit-2.4.0}/tests/unit/test_story033_config_backfill.py +3 -2
- {pactkit-2.3.5 → pactkit-2.4.0}/tests/unit/test_story042_spec_linter.py +6 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/tests/unit/test_story055_commands.py +5 -4
- {pactkit-2.3.5 → pactkit-2.4.0}/tests/unit/test_story055_spec_linter.py +8 -2
- {pactkit-2.3.5 → pactkit-2.4.0}/tests/unit/test_story_slim019_plan_subphases.py +2 -2
- {pactkit-2.3.5 → pactkit-2.4.0}/tests/unit/test_story_slim024.py +6 -0
- pactkit-2.4.0/tests/unit/test_story_slim025.py +340 -0
- pactkit-2.4.0/tests/unit/test_story_slim026.py +127 -0
- pactkit-2.4.0/tests/unit/test_story_slim027.py +363 -0
- pactkit-2.4.0/tests/unit/test_story_slim028.py +418 -0
- pactkit-2.4.0/tests/unit/test_story_slim029.py +268 -0
- pactkit-2.4.0/tests/unit/test_story_slim030.py +391 -0
- pactkit-2.4.0/tests/unit/test_story_slim031.py +451 -0
- pactkit-2.4.0/tests/unit/test_story_slim032.py +482 -0
- pactkit-2.4.0/tests/unit/test_story_slim033.py +462 -0
- pactkit-2.4.0/tests/unit/test_story_slim034.py +203 -0
- pactkit-2.4.0/tests/unit/test_story_slim035.py +322 -0
- pactkit-2.4.0/tests/unit/test_story_slim036.py +108 -0
- pactkit-2.4.0/tests/unit/test_story_slim037.py +140 -0
- pactkit-2.4.0/tests/unit/test_story_slim038.py +106 -0
- pactkit-2.4.0/tests/unit/test_story_slim039.py +162 -0
- pactkit-2.4.0/tests/unit/test_story_slim040.py +124 -0
- pactkit-2.4.0/tests/unit/test_story_slim041.py +212 -0
- pactkit-2.4.0/tests/unit/test_story_slim042.py +198 -0
- pactkit-2.4.0/tests/unit/test_story_slim043.py +130 -0
- pactkit-2.4.0/tests/unit/test_story_slim044.py +151 -0
- pactkit-2.4.0/tests/unit/test_story_slim045.py +236 -0
- pactkit-2.4.0/tests/unit/test_story_slim046.py +157 -0
- pactkit-2.4.0/tests/unit/test_story_slim047.py +138 -0
- pactkit-2.4.0/tests/unit/test_story_slim048.py +223 -0
- pactkit-2.3.5/src/pactkit/skills/visualize.py +0 -495
- pactkit-2.3.5/tests/unit/test_bug034_plan_metadata_template.py +0 -68
- {pactkit-2.3.5 → pactkit-2.4.0}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.github/dependabot.yml +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.gitignore +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/.gitignore +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/bun.lock +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/memory/.gitignore +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/memory/project.md +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/@opencode-ai/plugin/package.json +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/@opencode-ai/sdk/package.json +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/LICENSE +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/README.md +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/index.cjs +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/index.d.cts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/index.d.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/index.js +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/locales/index.cjs +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/locales/index.d.cts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/locales/index.d.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/locales/index.js +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/locales/package.json +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/mini/index.cjs +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/mini/index.d.cts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/mini/index.d.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/mini/index.js +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/mini/package.json +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/package.json +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/index.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/locales/index.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/mini/index.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v3/ZodError.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v3/benchmarks/datetime.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v3/benchmarks/discriminatedUnion.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v3/benchmarks/index.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v3/benchmarks/ipv4.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v3/benchmarks/object.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v3/benchmarks/primitives.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v3/benchmarks/realworld.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v3/benchmarks/string.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v3/benchmarks/union.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v3/errors.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v3/external.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v3/helpers/enumUtil.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v3/helpers/errorUtil.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v3/helpers/parseUtil.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v3/helpers/partialUtil.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v3/helpers/typeAliases.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v3/helpers/util.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v3/index.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v3/locales/en.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v3/standard-schema.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v3/tests/Mocker.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v3/tests/all-errors.test.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v3/tests/anyunknown.test.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v3/tests/array.test.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v3/tests/async-parsing.test.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v3/tests/async-refinements.test.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v3/tests/base.test.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v3/tests/bigint.test.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v3/tests/branded.test.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v3/tests/catch.test.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v3/tests/coerce.test.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v3/tests/complex.test.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v3/tests/custom.test.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v3/tests/date.test.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v3/tests/deepmasking.test.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v3/tests/default.test.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v3/tests/description.test.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v3/tests/discriminated-unions.test.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v3/tests/enum.test.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v3/tests/error.test.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v3/tests/firstparty.test.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v3/tests/firstpartyschematypes.test.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v3/tests/function.test.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v3/tests/generics.test.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v3/tests/instanceof.test.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v3/tests/intersection.test.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v3/tests/language-server.source.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v3/tests/language-server.test.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v3/tests/literal.test.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v3/tests/map.test.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v3/tests/masking.test.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v3/tests/mocker.test.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v3/tests/nan.test.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v3/tests/nativeEnum.test.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v3/tests/nullable.test.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v3/tests/number.test.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v3/tests/object-augmentation.test.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v3/tests/object-in-es5-env.test.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v3/tests/object.test.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v3/tests/optional.test.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v3/tests/parseUtil.test.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v3/tests/parser.test.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v3/tests/partials.test.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v3/tests/pickomit.test.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v3/tests/pipeline.test.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v3/tests/preprocess.test.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v3/tests/primitive.test.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v3/tests/promise.test.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v3/tests/readonly.test.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v3/tests/record.test.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v3/tests/recursive.test.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v3/tests/refine.test.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v3/tests/safeparse.test.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v3/tests/set.test.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v3/tests/standard-schema.test.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v3/tests/string.test.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v3/tests/transformer.test.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v3/tests/tuple.test.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v3/tests/unions.test.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v3/tests/validations.test.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v3/tests/void.test.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v3/types.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v4/classic/checks.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v4/classic/coerce.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v4/classic/compat.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v4/classic/errors.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v4/classic/external.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v4/classic/index.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v4/classic/iso.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v4/classic/parse.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v4/classic/schemas.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v4/classic/tests/anyunknown.test.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v4/classic/tests/array.test.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v4/classic/tests/assignability.test.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v4/classic/tests/async-parsing.test.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v4/classic/tests/async-refinements.test.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v4/classic/tests/base.test.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v4/classic/tests/bigint.test.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v4/classic/tests/brand.test.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v4/classic/tests/catch.test.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v4/classic/tests/coalesce.test.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v4/classic/tests/codec-examples.test.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v4/classic/tests/codec.test.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v4/classic/tests/coerce.test.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v4/classic/tests/continuability.test.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v4/classic/tests/custom.test.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v4/classic/tests/date.test.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v4/classic/tests/datetime.test.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v4/classic/tests/default.test.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v4/classic/tests/description.test.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v4/classic/tests/discriminated-unions.test.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v4/classic/tests/enum.test.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v4/classic/tests/error-utils.test.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v4/classic/tests/error.test.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v4/classic/tests/file.test.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v4/classic/tests/firstparty.test.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v4/classic/tests/function.test.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v4/classic/tests/generics.test.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v4/classic/tests/hash.test.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v4/classic/tests/index.test.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v4/classic/tests/instanceof.test.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v4/classic/tests/intersection.test.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v4/classic/tests/json.test.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v4/classic/tests/lazy.test.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v4/classic/tests/literal.test.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v4/classic/tests/map.test.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v4/classic/tests/nan.test.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v4/classic/tests/nested-refine.test.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v4/classic/tests/nonoptional.test.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v4/classic/tests/nullable.test.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v4/classic/tests/number.test.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v4/classic/tests/object.test.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v4/classic/tests/optional.test.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v4/classic/tests/partial.test.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v4/classic/tests/pickomit.test.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v4/classic/tests/pipe.test.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v4/classic/tests/prefault.test.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v4/classic/tests/preprocess.test.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v4/classic/tests/primitive.test.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v4/classic/tests/promise.test.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v4/classic/tests/prototypes.test.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v4/classic/tests/readonly.test.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v4/classic/tests/record.test.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v4/classic/tests/recursive-types.test.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v4/classic/tests/refine.test.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v4/classic/tests/registries.test.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v4/classic/tests/set.test.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v4/classic/tests/standard-schema.test.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v4/classic/tests/string-formats.test.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v4/classic/tests/string.test.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v4/classic/tests/stringbool.test.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v4/classic/tests/template-literal.test.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v4/classic/tests/to-json-schema.test.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v4/classic/tests/transform.test.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v4/classic/tests/tuple.test.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v4/classic/tests/union.test.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v4/classic/tests/validations.test.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v4/classic/tests/void.test.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v4/core/api.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v4/core/checks.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v4/core/config.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v4/core/core.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v4/core/doc.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v4/core/errors.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v4/core/index.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v4/core/json-schema.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v4/core/parse.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v4/core/regexes.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v4/core/registries.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v4/core/schemas.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v4/core/standard-schema.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v4/core/tests/extend.test.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v4/core/tests/index.test.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v4/core/tests/locales/be.test.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v4/core/tests/locales/en.test.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v4/core/tests/locales/es.test.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v4/core/tests/locales/ru.test.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v4/core/tests/locales/tr.test.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v4/core/to-json-schema.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v4/core/util.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v4/core/versions.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v4/core/zsf.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v4/index.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v4/locales/ar.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v4/locales/az.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v4/locales/be.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v4/locales/bg.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v4/locales/ca.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v4/locales/cs.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v4/locales/da.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v4/locales/de.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v4/locales/en.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v4/locales/eo.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v4/locales/es.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v4/locales/fa.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v4/locales/fi.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v4/locales/fr-CA.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v4/locales/fr.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v4/locales/he.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v4/locales/hu.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v4/locales/id.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v4/locales/index.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v4/locales/is.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v4/locales/it.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v4/locales/ja.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v4/locales/ka.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v4/locales/kh.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v4/locales/km.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v4/locales/ko.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v4/locales/lt.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v4/locales/mk.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v4/locales/ms.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v4/locales/nl.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v4/locales/no.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v4/locales/ota.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v4/locales/pl.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v4/locales/ps.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v4/locales/pt.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v4/locales/ru.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v4/locales/sl.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v4/locales/sv.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v4/locales/ta.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v4/locales/th.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v4/locales/tr.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v4/locales/ua.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v4/locales/uk.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v4/locales/ur.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v4/locales/vi.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v4/locales/yo.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v4/locales/zh-CN.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v4/locales/zh-TW.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v4/mini/checks.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v4/mini/coerce.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v4/mini/external.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v4/mini/index.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v4/mini/iso.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v4/mini/parse.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v4/mini/schemas.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v4/mini/tests/assignability.test.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v4/mini/tests/brand.test.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v4/mini/tests/checks.test.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v4/mini/tests/codec.test.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v4/mini/tests/computed.test.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v4/mini/tests/error.test.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v4/mini/tests/functions.test.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v4/mini/tests/index.test.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v4/mini/tests/number.test.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v4/mini/tests/object.test.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v4/mini/tests/prototypes.test.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v4/mini/tests/recursive-types.test.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v4/mini/tests/string.test.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/src/v4-mini/index.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v3/ZodError.cjs +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v3/ZodError.d.cts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v3/ZodError.d.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v3/ZodError.js +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v3/errors.cjs +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v3/errors.d.cts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v3/errors.d.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v3/errors.js +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v3/external.cjs +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v3/external.d.cts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v3/external.d.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v3/external.js +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v3/helpers/enumUtil.cjs +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v3/helpers/enumUtil.d.cts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v3/helpers/enumUtil.d.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v3/helpers/enumUtil.js +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v3/helpers/errorUtil.cjs +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v3/helpers/errorUtil.d.cts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v3/helpers/errorUtil.d.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v3/helpers/errorUtil.js +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v3/helpers/parseUtil.cjs +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v3/helpers/parseUtil.d.cts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v3/helpers/parseUtil.d.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v3/helpers/parseUtil.js +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v3/helpers/partialUtil.cjs +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v3/helpers/partialUtil.d.cts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v3/helpers/partialUtil.d.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v3/helpers/partialUtil.js +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v3/helpers/typeAliases.cjs +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v3/helpers/typeAliases.d.cts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v3/helpers/typeAliases.d.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v3/helpers/typeAliases.js +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v3/helpers/util.cjs +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v3/helpers/util.d.cts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v3/helpers/util.d.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v3/helpers/util.js +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v3/index.cjs +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v3/index.d.cts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v3/index.d.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v3/index.js +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v3/locales/en.cjs +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v3/locales/en.d.cts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v3/locales/en.d.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v3/locales/en.js +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v3/package.json +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v3/standard-schema.cjs +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v3/standard-schema.d.cts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v3/standard-schema.d.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v3/standard-schema.js +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v3/types.cjs +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v3/types.d.cts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v3/types.d.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v3/types.js +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/classic/checks.cjs +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/classic/checks.d.cts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/classic/checks.d.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/classic/checks.js +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/classic/coerce.cjs +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/classic/coerce.d.cts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/classic/coerce.d.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/classic/coerce.js +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/classic/compat.cjs +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/classic/compat.d.cts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/classic/compat.d.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/classic/compat.js +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/classic/errors.cjs +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/classic/errors.d.cts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/classic/errors.d.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/classic/errors.js +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/classic/external.cjs +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/classic/external.d.cts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/classic/external.d.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/classic/external.js +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/classic/index.cjs +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/classic/index.d.cts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/classic/index.d.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/classic/index.js +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/classic/iso.cjs +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/classic/iso.d.cts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/classic/iso.d.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/classic/iso.js +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/classic/package.json +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/classic/parse.cjs +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/classic/parse.d.cts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/classic/parse.d.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/classic/parse.js +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/classic/schemas.cjs +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/classic/schemas.d.cts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/classic/schemas.d.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/classic/schemas.js +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/core/api.cjs +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/core/api.d.cts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/core/api.d.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/core/api.js +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/core/checks.cjs +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/core/checks.d.cts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/core/checks.d.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/core/checks.js +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/core/core.cjs +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/core/core.d.cts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/core/core.d.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/core/core.js +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/core/doc.cjs +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/core/doc.d.cts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/core/doc.d.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/core/doc.js +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/core/errors.cjs +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/core/errors.d.cts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/core/errors.d.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/core/errors.js +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/core/index.cjs +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/core/index.d.cts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/core/index.d.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/core/index.js +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/core/json-schema.cjs +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/core/json-schema.d.cts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/core/json-schema.d.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/core/json-schema.js +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/core/package.json +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/core/parse.cjs +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/core/parse.d.cts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/core/parse.d.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/core/parse.js +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/core/regexes.cjs +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/core/regexes.d.cts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/core/regexes.d.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/core/regexes.js +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/core/registries.cjs +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/core/registries.d.cts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/core/registries.d.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/core/registries.js +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/core/schemas.cjs +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/core/schemas.d.cts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/core/schemas.d.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/core/schemas.js +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/core/standard-schema.cjs +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/core/standard-schema.d.cts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/core/standard-schema.d.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/core/standard-schema.js +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/core/to-json-schema.cjs +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/core/to-json-schema.d.cts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/core/to-json-schema.d.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/core/to-json-schema.js +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/core/util.cjs +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/core/util.d.cts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/core/util.d.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/core/util.js +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/core/versions.cjs +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/core/versions.d.cts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/core/versions.d.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/core/versions.js +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/index.cjs +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/index.d.cts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/index.d.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/index.js +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/locales/ar.cjs +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/locales/ar.d.cts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/locales/ar.d.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/locales/ar.js +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/locales/az.cjs +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/locales/az.d.cts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/locales/az.d.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/locales/az.js +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/locales/be.cjs +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/locales/be.d.cts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/locales/be.d.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/locales/be.js +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/locales/bg.cjs +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/locales/bg.d.cts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/locales/bg.d.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/locales/bg.js +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/locales/ca.cjs +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/locales/ca.d.cts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/locales/ca.d.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/locales/ca.js +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/locales/cs.cjs +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/locales/cs.d.cts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/locales/cs.d.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/locales/cs.js +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/locales/da.cjs +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/locales/da.d.cts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/locales/da.d.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/locales/da.js +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/locales/de.cjs +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/locales/de.d.cts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/locales/de.d.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/locales/de.js +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/locales/en.cjs +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/locales/en.d.cts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/locales/en.d.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/locales/en.js +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/locales/eo.cjs +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/locales/eo.d.cts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/locales/eo.d.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/locales/eo.js +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/locales/es.cjs +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/locales/es.d.cts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/locales/es.d.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/locales/es.js +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/locales/fa.cjs +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/locales/fa.d.cts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/locales/fa.d.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/locales/fa.js +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/locales/fi.cjs +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/locales/fi.d.cts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/locales/fi.d.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/locales/fi.js +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/locales/fr-CA.cjs +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/locales/fr-CA.d.cts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/locales/fr-CA.d.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/locales/fr-CA.js +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/locales/fr.cjs +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/locales/fr.d.cts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/locales/fr.d.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/locales/fr.js +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/locales/he.cjs +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/locales/he.d.cts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/locales/he.d.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/locales/he.js +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/locales/hu.cjs +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/locales/hu.d.cts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/locales/hu.d.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/locales/hu.js +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/locales/id.cjs +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/locales/id.d.cts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/locales/id.d.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/locales/id.js +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/locales/index.cjs +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/locales/index.d.cts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/locales/index.d.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/locales/index.js +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/locales/is.cjs +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/locales/is.d.cts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/locales/is.d.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/locales/is.js +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/locales/it.cjs +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/locales/it.d.cts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/locales/it.d.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/locales/it.js +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/locales/ja.cjs +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/locales/ja.d.cts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/locales/ja.d.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/locales/ja.js +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/locales/ka.cjs +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/locales/ka.d.cts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/locales/ka.d.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/locales/ka.js +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/locales/kh.cjs +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/locales/kh.d.cts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/locales/kh.d.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/locales/kh.js +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/locales/km.cjs +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/locales/km.d.cts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/locales/km.d.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/locales/km.js +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/locales/ko.cjs +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/locales/ko.d.cts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/locales/ko.d.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/locales/ko.js +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/locales/lt.cjs +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/locales/lt.d.cts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/locales/lt.d.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/locales/lt.js +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/locales/mk.cjs +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/locales/mk.d.cts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/locales/mk.d.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/locales/mk.js +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/locales/ms.cjs +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/locales/ms.d.cts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/locales/ms.d.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/locales/ms.js +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/locales/nl.cjs +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/locales/nl.d.cts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/locales/nl.d.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/locales/nl.js +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/locales/no.cjs +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/locales/no.d.cts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/locales/no.d.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/locales/no.js +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/locales/ota.cjs +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/locales/ota.d.cts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/locales/ota.d.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/locales/ota.js +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/locales/package.json +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/locales/pl.cjs +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/locales/pl.d.cts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/locales/pl.d.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/locales/pl.js +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/locales/ps.cjs +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/locales/ps.d.cts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/locales/ps.d.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/locales/ps.js +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/locales/pt.cjs +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/locales/pt.d.cts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/locales/pt.d.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/locales/pt.js +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/locales/ru.cjs +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/locales/ru.d.cts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/locales/ru.d.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/locales/ru.js +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/locales/sl.cjs +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/locales/sl.d.cts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/locales/sl.d.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/locales/sl.js +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/locales/sv.cjs +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/locales/sv.d.cts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/locales/sv.d.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/locales/sv.js +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/locales/ta.cjs +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/locales/ta.d.cts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/locales/ta.d.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/locales/ta.js +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/locales/th.cjs +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/locales/th.d.cts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/locales/th.d.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/locales/th.js +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/locales/tr.cjs +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/locales/tr.d.cts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/locales/tr.d.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/locales/tr.js +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/locales/ua.cjs +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/locales/ua.d.cts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/locales/ua.d.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/locales/ua.js +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/locales/uk.cjs +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/locales/uk.d.cts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/locales/uk.d.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/locales/uk.js +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/locales/ur.cjs +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/locales/ur.d.cts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/locales/ur.d.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/locales/ur.js +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/locales/vi.cjs +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/locales/vi.d.cts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/locales/vi.d.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/locales/vi.js +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/locales/yo.cjs +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/locales/yo.d.cts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/locales/yo.d.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/locales/yo.js +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/locales/zh-CN.cjs +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/locales/zh-CN.d.cts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/locales/zh-CN.d.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/locales/zh-CN.js +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/locales/zh-TW.cjs +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/locales/zh-TW.d.cts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/locales/zh-TW.d.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/locales/zh-TW.js +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/mini/checks.cjs +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/mini/checks.d.cts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/mini/checks.d.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/mini/checks.js +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/mini/coerce.cjs +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/mini/coerce.d.cts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/mini/coerce.d.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/mini/coerce.js +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/mini/external.cjs +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/mini/external.d.cts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/mini/external.d.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/mini/external.js +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/mini/index.cjs +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/mini/index.d.cts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/mini/index.d.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/mini/index.js +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/mini/iso.cjs +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/mini/iso.d.cts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/mini/iso.d.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/mini/iso.js +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/mini/package.json +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/mini/parse.cjs +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/mini/parse.d.cts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/mini/parse.d.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/mini/parse.js +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/mini/schemas.cjs +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/mini/schemas.d.cts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/mini/schemas.d.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/mini/schemas.js +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4/package.json +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4-mini/index.cjs +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4-mini/index.d.cts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4-mini/index.d.ts +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4-mini/index.js +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/node_modules/zod/v4-mini/package.json +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/.opencode/package.json +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/AGENTS.md +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/CODE_OF_CONDUCT.md +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/CONTRIBUTING.md +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/LICENSE +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/README.md +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/SECURITY.md +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/docs/assets/logo.png +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/docs/guides/codex-integration-preresearch.md +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/docs/guides/tool-integration-checklist.md +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/docs/specs/BUG-001.md +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/docs/specs/BUG-002.md +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/docs/specs/BUG-003.md +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/docs/specs/BUG-004.md +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/docs/specs/BUG-005.md +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/docs/specs/BUG-006.md +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/docs/specs/BUG-007.md +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/docs/specs/BUG-008.md +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/docs/specs/BUG-009.md +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/docs/specs/BUG-010.md +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/docs/specs/BUG-011.md +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/docs/specs/BUG-012.md +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/docs/specs/BUG-013.md +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/docs/specs/BUG-014.md +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/docs/specs/BUG-015.md +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/docs/specs/BUG-016.md +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/docs/specs/BUG-017.md +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/docs/specs/BUG-018.md +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/docs/specs/BUG-019.md +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/docs/specs/BUG-020.md +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/docs/specs/BUG-021.md +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/docs/specs/BUG-022.md +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/docs/specs/BUG-023.md +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/docs/specs/BUG-024.md +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/docs/specs/BUG-025.md +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/docs/specs/BUG-026.md +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/docs/specs/BUG-027.md +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/docs/specs/BUG-028.md +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/docs/specs/BUG-029.md +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/docs/specs/BUG-030.md +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/docs/specs/BUG-031.md +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/docs/specs/BUG-032.md +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/docs/specs/BUG-033.md +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/docs/specs/BUG-034.md +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/docs/specs/BUG-035.md +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/docs/specs/BUG-slim-001.md +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/docs/specs/BUG-slim-002.md +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/docs/specs/BUG-slim-003.md +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/docs/specs/BUG-slim-004.md +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/docs/specs/BUG-slim-005.md +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/docs/specs/BUG-slim-006.md +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/docs/test_cases/BUG-001_case.md +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/docs/test_cases/BUG-002_case.md +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/opencode.json +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/src/pactkit/backfill.py +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/src/pactkit/cleaners.py +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/src/pactkit/context_gen.py +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/src/pactkit/coverage_gate.py +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/src/pactkit/doctor.py +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/src/pactkit/generators/__init__.py +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/src/pactkit/generators/adapter.py +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/src/pactkit/generators/deployer.py +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/src/pactkit/guards.py +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/src/pactkit/id_generator.py +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/src/pactkit/invariants.py +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/src/pactkit/lazy_visualize.py +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/src/pactkit/lessons.py +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/src/pactkit/lint_runner.py +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/src/pactkit/profiles.py +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/src/pactkit/prompts/__init__.py +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/src/pactkit/prompts/agents.py +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/src/pactkit/prompts/references.py +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/src/pactkit/prompts/skills.py +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/src/pactkit/regression.py +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/src/pactkit/scripts.py +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/src/pactkit/sec_scope.py +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/src/pactkit/skills/board.py +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/src/pactkit/spec_status.py +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/src/pactkit/test_mapper.py +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/src/pactkit/utils.py +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/src/pactkit/validators.py +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/tests/conftest.py +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/tests/e2e/__init__.py +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/tests/e2e/cli/__init__.py +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/tests/e2e/cli/test_cli_e2e.py +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/tests/integration/__init__.py +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/tests/integration/test_deploy_classic.py +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/tests/unit/test_agent_features.py +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/tests/unit/test_agent_frontmatter.py +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/tests/unit/test_agents_enrichment.py +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/tests/unit/test_board_bug027.py +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/tests/unit/test_board_sections.py +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/tests/unit/test_bug001_skill_path.py +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/tests/unit/test_bug002_plugin_paths.py +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/tests/unit/test_bug003_multi_import.py +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/tests/unit/test_bug004_dead_set.py +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/tests/unit/test_bug005_archive_taskless.py +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/tests/unit/test_bug006_scan_excludes.py +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/tests/unit/test_bug007_stale_trace_refs.py +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/tests/unit/test_bug008_stale_command_refs.py +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/tests/unit/test_bug009_project_config_backfill.py +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/tests/unit/test_bug010_rewrite_yaml.py +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/tests/unit/test_bug011_stale_refs.py +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/tests/unit/test_bug012_call_graph_filter.py +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/tests/unit/test_bug013_config_single_source.py +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/tests/unit/test_bug014_version_hygiene.py +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/tests/unit/test_bug017_project_init_playbook.py +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/tests/unit/test_bug018_issue_tracker_verification.py +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/tests/unit/test_bug019_venv_deployment.py +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/tests/unit/test_bug020_claude_md_backup.py +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/tests/unit/test_bug025_release_delegation.py +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/tests/unit/test_bug026_version_sync.py +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/tests/unit/test_bug028_ghost_refs.py +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/tests/unit/test_bug029_stack_detection_fallback.py +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/tests/unit/test_bug031_docstring_accuracy.py +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/tests/unit/test_bug035_opencode_dual_layer.py +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/tests/unit/test_bug_021.py +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/tests/unit/test_bug_022.py +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/tests/unit/test_bug_023.py +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/tests/unit/test_bug_024.py +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/tests/unit/test_bug_slim001_env_detection.py +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/tests/unit/test_bug_slim002_instruction_collision.py +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/tests/unit/test_bug_slim003.py +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/tests/unit/test_bug_slim004.py +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/tests/unit/test_bug_slim005.py +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/tests/unit/test_bug_slim006.py +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/tests/unit/test_check_command.py +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/tests/unit/test_command_frontmatter.py +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/tests/unit/test_command_visualize_modes.py +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/tests/unit/test_config.py +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/tests/unit/test_constitution_sharpening.py +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/tests/unit/test_cross_flow_matrix.py +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/tests/unit/test_deploy_opencode_parity.py +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/tests/unit/test_deployer_cleanup.py +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/tests/unit/test_deployer_plugin.py +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/tests/unit/test_design_command.py +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/tests/unit/test_done_gates.py +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/tests/unit/test_draw_prompt.py +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/tests/unit/test_draw_references.py +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/tests/unit/test_drawio_mcp.py +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/tests/unit/test_home_path_fix.py +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/tests/unit/test_hotfix_command.py +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/tests/unit/test_init_guard.py +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/tests/unit/test_lang_profiles.py +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/tests/unit/test_list_stories.py +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/tests/unit/test_mcp_integration.py +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/tests/unit/test_model_config.py +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/tests/unit/test_modular_constitution.py +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/tests/unit/test_multi_prefix.py +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/tests/unit/test_pdca_slim.py +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/tests/unit/test_profiles.py +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/tests/unit/test_project_visibility.py +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/tests/unit/test_prompt_cli_refs.py +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/tests/unit/test_prompt_structural_invariants.py +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/tests/unit/test_prompts_package.py +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/tests/unit/test_release.py +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/tests/unit/test_release_field.py +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/tests/unit/test_release_v110.py +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/tests/unit/test_render_prompt.py +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/tests/unit/test_review_command.py +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/tests/unit/test_rules_enrichment.py +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/tests/unit/test_scaffold.py +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/tests/unit/test_scaffold_developer_prefix.py +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/tests/unit/test_schemas.py +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/tests/unit/test_script_extraction.py +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/tests/unit/test_selective_deploy.py +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/tests/unit/test_session_context.py +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/tests/unit/test_skill_structure.py +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/tests/unit/test_skills_enrichment.py +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/tests/unit/test_smart_regression.py +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/tests/unit/test_sprint_command.py +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/tests/unit/test_stack_references.py +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/tests/unit/test_status_command.py +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/tests/unit/test_statusline.py +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/tests/unit/test_story014_release.py +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/tests/unit/test_story015_ci_lint_gate.py +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/tests/unit/test_story016_claude_md.py +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/tests/unit/test_story017_init_claude_md.py +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/tests/unit/test_story018_arch_staleness.py +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/tests/unit/test_story019_bailout.py +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/tests/unit/test_story020_horizon.py +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/tests/unit/test_story021_rfc.py +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/tests/unit/test_story022_decision_tree.py +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/tests/unit/test_story023_test_quality.py +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/tests/unit/test_story024_native_agent.py +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/tests/unit/test_story025_ci_pipeline.py +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/tests/unit/test_story026_issue_tracker.py +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/tests/unit/test_story027_hooks.py +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/tests/unit/test_story028_rule_scoping.py +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/tests/unit/test_story029_doctor.py +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/tests/unit/test_story030_lint.py +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/tests/unit/test_story031_git_init_guard.py +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/tests/unit/test_story032_greenfield_redirect.py +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/tests/unit/test_story034_plan_config_refresh.py +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/tests/unit/test_story035_readme_docs.py +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/tests/unit/test_story037_regression_fix.py +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/tests/unit/test_story038_call_graph_update.py +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/tests/unit/test_story039_venv_config.py +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/tests/unit/test_story040_layered_claude_md.py +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/tests/unit/test_story043_active_clarify.py +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/tests/unit/test_story044_consistency_check.py +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/tests/unit/test_story045_auto_pr.py +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/tests/unit/test_story046_agent_adapter.py +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/tests/unit/test_story047_enterprise_flags.py +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/tests/unit/test_story048_worktree_isolation.py +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/tests/unit/test_story049_community_standards.py +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/tests/unit/test_story050_doc_only_shortcut.py +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/tests/unit/test_story051_workflow_streamlining.py +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/tests/unit/test_story052_conditional_github_release.py +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/tests/unit/test_story053_impact_regression.py +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/tests/unit/test_story055_config.py +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/tests/unit/test_story056_commands.py +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/tests/unit/test_story056_config.py +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/tests/unit/test_story057_implicit_cleanup.py +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/tests/unit/test_story058_routing_fix.py +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/tests/unit/test_story060_init_hang.py +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/tests/unit/test_story061_remove_thinking.py +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/tests/unit/test_story062_mcp_recommendations.py +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/tests/unit/test_story063_prompt_slimming.py +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/tests/unit/test_story064_venv_local_md.py +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/tests/unit/test_story065_sprint_model.py +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/tests/unit/test_story069_opencode_format.py +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/tests/unit/test_story070_opencode_compliance.py +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/tests/unit/test_story071_opencode_config_parity.py +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/tests/unit/test_story072_developer_prefix.py +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/tests/unit/test_story073_command_model_routing.py +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/tests/unit/test_story_slim009_lazy_rules.py +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/tests/unit/test_story_slim010_dry_refactor.py +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/tests/unit/test_story_slim011_command_rules.py +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/tests/unit/test_story_slim012_ci.py +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/tests/unit/test_story_slim014_clean.py +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/tests/unit/test_story_slim014_context.py +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/tests/unit/test_story_slim014_guard.py +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/tests/unit/test_story_slim014_lazy_viz.py +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/tests/unit/test_story_slim014_next_id.py +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/tests/unit/test_story_slim014_regression.py +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/tests/unit/test_story_slim014_sec_scope.py +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/tests/unit/test_story_slim014_validators.py +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/tests/unit/test_story_slim015_doctor.py +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/tests/unit/test_story_slim016_testmap_lint.py +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/tests/unit/test_story_slim017.py +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/tests/unit/test_story_slim018.py +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/tests/unit/test_story_slim020_explore_stall_fix.py +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/tests/unit/test_story_slim021.py +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/tests/unit/test_story_slim022.py +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/tests/unit/test_story_slim023.py +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/tests/unit/test_tools.py +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/tests/unit/test_update_task.py +0 -0
- {pactkit-2.3.5 → pactkit-2.4.0}/tests/unit/test_visualize_modes.py +0 -0
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
# Edit this file to customize which components are deployed.
|
|
3
3
|
# Remove items from a list to disable them. Default: all enabled.
|
|
4
4
|
|
|
5
|
-
version: "2.
|
|
5
|
+
version: "2.4.0"
|
|
6
6
|
stack: python
|
|
7
7
|
root: .
|
|
8
8
|
developer: "slim"
|
|
@@ -114,6 +114,24 @@ agent_models:
|
|
|
114
114
|
system-medic: haiku
|
|
115
115
|
visual-architect: sonnet
|
|
116
116
|
|
|
117
|
+
# Visualize — configure directory scan exclusions
|
|
118
|
+
visualize:
|
|
119
|
+
scan_excludes:
|
|
120
|
+
- venv
|
|
121
|
+
- _venv
|
|
122
|
+
- .venv
|
|
123
|
+
- .env
|
|
124
|
+
- env
|
|
125
|
+
- __pycache__
|
|
126
|
+
- .git
|
|
127
|
+
- .claude
|
|
128
|
+
- tests
|
|
129
|
+
- docs
|
|
130
|
+
- node_modules
|
|
131
|
+
- site-packages
|
|
132
|
+
- dist
|
|
133
|
+
- build
|
|
134
|
+
|
|
117
135
|
# Custom — user-defined keys (preserved by PactKit)
|
|
118
136
|
e2e:
|
|
119
137
|
blocking: false
|
|
@@ -4,6 +4,38 @@ All notable changes to PactKit will be documented in this file.
|
|
|
4
4
|
|
|
5
5
|
Format follows [Keep a Changelog](https://keepachangelog.com/).
|
|
6
6
|
|
|
7
|
+
## [2.4.0] - 2026-03-25
|
|
8
|
+
|
|
9
|
+
### Added
|
|
10
|
+
- **Multi-Architecture Topology System** (STORY-slim-039~048) — 10 stories implementing a complete topology analysis framework:
|
|
11
|
+
- **TopologyParser ABC** — Abstract base class with `detect()` + `parse()` and zero-config auto-detection via `_TOPOLOGY_MARKERS`
|
|
12
|
+
- **PdcaParser** — Refactored Epic 1 logic into TopologyParser; added PDCA sequence edges (Plan→Act→Check→Done dashed arrows)
|
|
13
|
+
- **ServiceParser** — Parses `docker-compose.yml`, `openapi.yaml`, `*.proto`; extracts service→api→service dependency graph with MQ topic support
|
|
14
|
+
- **FrontendParser** — Parses Next.js (App/Pages Router), Vue Router routes; extracts page→component→hook→store dependency chain
|
|
15
|
+
- **Cross-topology Impact** — `reverse_reach()` works across all topologies; `regression_workflow_impact()` detects service/hook/store changes
|
|
16
|
+
- **Unified Layered Graph** — `build_unified_graph()` merges code + topology dimensions with bridge edges; `to_mermaid()` renders dimension-based subgraphs
|
|
17
|
+
- **MAX_WORKFLOW_NODES=500** — Performance ceiling for unified graph node count
|
|
18
|
+
|
|
19
|
+
### Fixed
|
|
20
|
+
- **detect_topology() DRY fix** — Now delegates to parser's own `detect()` method first, falling back to `_TOPOLOGY_MARKERS` for unregistered topologies only. Fixes empty workflow graph on pactkit's own project.
|
|
21
|
+
- **pyproject.toml metadata** — Moved `authors/keywords/classifiers` from `[project.optional-dependencies]` back to `[project]` (caused CI hatchling validation failure)
|
|
22
|
+
- **CI multilang deps** — Both CI workflows now install `[multilang]` extras for tree-sitter test coverage
|
|
23
|
+
- **Spec/PRD consistency** (HOTFIX-slim-049) — Fixed 040 AC1 wording, 042 markers, PRD database/reads_db removal, PRD roadmap checkboxes
|
|
24
|
+
|
|
25
|
+
## [2.3.6] - 2026-03-24
|
|
26
|
+
|
|
27
|
+
### Fixed
|
|
28
|
+
- **Issue Sync Substring Matching** (STORY-slim-027 R1) — `issue_sync.py` now uses word-boundary regex instead of `in` substring check, preventing `STORY-1` from matching `STORY-10`.
|
|
29
|
+
- **E007 Per-Subsection GWT Check** (R3) — Spec linter E007 now validates Given/When/Then keywords per AC subsection instead of flat-scanning the entire Acceptance Criteria section. Uses raw text (with code fences) to avoid false positives on specs wrapping Gherkin in ` ```gherkin ` blocks.
|
|
30
|
+
- **W008 Scaffold Placeholder Detection** (R4) — New warning W008 fires when `## Background` or `## Target Call Chain` still contains default scaffold placeholder text.
|
|
31
|
+
- **Schema-Linter Alignment** (R2/R10) — `## Security Scope` moved from OPTIONAL to REQUIRED in `schemas.py` to match E009 enforcement; `## Non-Goals` added to OPTIONAL.
|
|
32
|
+
- **RFC Pattern Consistency** (R11) — Spec linter fallback RFC pattern now derived from `SPEC_RFC_KEYWORDS` tuple instead of a separate hardcoded regex.
|
|
33
|
+
- **Scaffold Skill Path** (R8) — `scaffold.py` usage hint now uses resolved `root` path instead of hardcoded `~/.claude/skills/`.
|
|
34
|
+
|
|
35
|
+
### Changed
|
|
36
|
+
- **Design Prompt** (R5) — Phase 3 now includes `pactkit sec-scope` step after filling each Spec.
|
|
37
|
+
- **Act Prompt** (R6/R7) — Phase 0.6 adds "Move to In Progress" board step; Phase 3 adds lint gate before regression.
|
|
38
|
+
|
|
7
39
|
## [2.3.5] - 2026-03-23
|
|
8
40
|
|
|
9
41
|
### Fixed
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: pactkit
|
|
3
|
-
Version: 2.
|
|
3
|
+
Version: 2.4.0
|
|
4
4
|
Summary: Spec-driven agentic DevOps toolkit for AI coding assistants
|
|
5
5
|
Project-URL: Homepage, https://pactkit.dev
|
|
6
6
|
Project-URL: Repository, https://github.com/pactkit/pactkit
|
|
@@ -22,6 +22,11 @@ Classifier: Topic :: Software Development :: Build Tools
|
|
|
22
22
|
Classifier: Topic :: Software Development :: Quality Assurance
|
|
23
23
|
Requires-Python: >=3.10
|
|
24
24
|
Requires-Dist: pyyaml>=6.0
|
|
25
|
+
Provides-Extra: multilang
|
|
26
|
+
Requires-Dist: tree-sitter-go>=0.25; extra == 'multilang'
|
|
27
|
+
Requires-Dist: tree-sitter-java>=0.23; extra == 'multilang'
|
|
28
|
+
Requires-Dist: tree-sitter-typescript>=0.23; extra == 'multilang'
|
|
29
|
+
Requires-Dist: tree-sitter>=0.25; extra == 'multilang'
|
|
25
30
|
Description-Content-Type: text/markdown
|
|
26
31
|
|
|
27
32
|
<p align="center">
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
# BUG-slim-007: W007 substring matching causes false negatives and inconsistency
|
|
2
|
+
|
|
3
|
+
| Field | Value |
|
|
4
|
+
|-------|-------|
|
|
5
|
+
| ID | BUG-slim-007 |
|
|
6
|
+
| Status | Draft |
|
|
7
|
+
| Priority | P1 |
|
|
8
|
+
| Release | 2.3.6 |
|
|
9
|
+
| Origin | Cross-model code review (2026-03-24) |
|
|
10
|
+
|
|
11
|
+
## Background
|
|
12
|
+
|
|
13
|
+
W007 (Req-AC coverage check) was introduced in STORY-slim-024 (v2.3.4) and patched in v2.3.5 to use `SPEC_RFC_KEYWORDS` instead of hardcoded `SHOULD`. Code review found that the implementation uses Python `in` (substring) matching in two places where word-boundary regex is required, plus a pattern divergence from the canonical source.
|
|
14
|
+
|
|
15
|
+
### Bug 1: R{N} coverage check — substring false negative
|
|
16
|
+
|
|
17
|
+
`spec_linter.py:241`:
|
|
18
|
+
```python
|
|
19
|
+
if req_id.lower() not in ac_lower:
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
When AC section mentions `R10`, the string `"r1"` is a substring of `"r10"` — so `R1` is falsely reported as covered. Similarly `"r1" in "r12"`, `"r2" in "r20"`, etc. Also non-R prefixed text like `"CR1"`, `"ERROR1"`, `"PR1"` would suppress W007 for `R1`.
|
|
23
|
+
|
|
24
|
+
**Impact**: Any spec with 10+ requirements silently passes W007 for R1-R9 when R10+ exists in AC. This directly undermines W007's purpose.
|
|
25
|
+
|
|
26
|
+
### Bug 2: RFC keyword detection — substring inconsistency with W003
|
|
27
|
+
|
|
28
|
+
`spec_linter.py:244`:
|
|
29
|
+
```python
|
|
30
|
+
found_keyword = next((kw for kw in SPEC_RFC_KEYWORDS if kw in req_upper), None)
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
W003 at line 172 uses `_RFC2119.search(body)` which is `SPEC_RFC_PATTERN` — a compiled regex with `\b` word boundaries. W007 uses plain `kw in req_upper` (substring). This means `"MAYONNAISE"` matches `MAY`, `"SHALLOW"` matches `SHALL`, etc.
|
|
34
|
+
|
|
35
|
+
Two rules in the same file detecting RFC 2119 keywords with different strategies is a consistency violation.
|
|
36
|
+
|
|
37
|
+
### Bug 3: _REQ_ID_PATTERN diverges from SPEC_REQUIREMENT_PATTERN
|
|
38
|
+
|
|
39
|
+
`spec_linter.py:203`:
|
|
40
|
+
```python
|
|
41
|
+
_REQ_ID_PATTERN = re.compile(r"###\s+(R\d+)[:\s]", re.MULTILINE)
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
`schemas.py:32`:
|
|
45
|
+
```python
|
|
46
|
+
SPEC_REQUIREMENT_PATTERN = r"### R\d+[:\s]"
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
E004 uses `SPEC_REQUIREMENT_PATTERN` (literal single space after `###`), while W007 uses `_REQ_ID_PATTERN` (`\s+` — allows tab, multiple spaces). A heading `### R1:` (double space) would be found by W007 but missed by E004. Both patterns should derive from the same canonical source.
|
|
50
|
+
|
|
51
|
+
## Requirements
|
|
52
|
+
|
|
53
|
+
### R1: Word-boundary matching for R{N} coverage (MUST)
|
|
54
|
+
|
|
55
|
+
W007 MUST use word-boundary regex to check whether an R{N} ID appears in the AC section. `R1` MUST NOT match `R10`, `R12`, `CR1`, `ERROR1`, or any other superstring.
|
|
56
|
+
|
|
57
|
+
Pattern: `re.search(rf"\b{req_id}\b", ac_section, re.IGNORECASE)`
|
|
58
|
+
|
|
59
|
+
### R2: Word-boundary matching for RFC 2119 keywords (MUST)
|
|
60
|
+
|
|
61
|
+
W007's RFC 2119 keyword detection MUST use `SPEC_RFC_PATTERN` (from `schemas.py`) — the same compiled regex with `\b` word boundaries that W003 already uses. `MAY` MUST NOT match `MAYONNAISE`.
|
|
62
|
+
|
|
63
|
+
### R3: _REQ_ID_PATTERN MUST derive from SPEC_REQUIREMENT_PATTERN (SHOULD)
|
|
64
|
+
|
|
65
|
+
`_REQ_ID_PATTERN` SHOULD be constructed from `SPEC_REQUIREMENT_PATTERN` or share the same whitespace semantics, so that E004 and W007 agree on what constitutes a valid `### R{N}` heading.
|
|
66
|
+
|
|
67
|
+
If intentional divergence is needed (e.g., W007 is more tolerant), document the reason inline.
|
|
68
|
+
|
|
69
|
+
### R4: Test coverage for multi-digit R{N} (MUST)
|
|
70
|
+
|
|
71
|
+
Tests MUST include a spec with R1 through R10+ where only R10 is referenced in AC, to verify R1 is correctly flagged as uncovered.
|
|
72
|
+
|
|
73
|
+
### R5: Test coverage for all 7 RFC 2119 keywords (SHOULD)
|
|
74
|
+
|
|
75
|
+
Tests SHOULD cover all 7 keywords from `SPEC_RFC_KEYWORDS`, not just MUST/SHOULD/MAY. Tests SHOULD also cover the no-keyword case (empty emphasis).
|
|
76
|
+
|
|
77
|
+
## Acceptance Criteria
|
|
78
|
+
|
|
79
|
+
### AC1: R1 not falsely covered by R10 (R1, R4)
|
|
80
|
+
|
|
81
|
+
- **Given** a spec with `### R1: First` and `### R10: Tenth` in Requirements
|
|
82
|
+
- **When** AC section mentions only `R10` (not `R1`)
|
|
83
|
+
- **Then** W007 fires for R1 with message "Requirement R1 has no corresponding AC reference"
|
|
84
|
+
- **And** W007 does NOT fire for R10
|
|
85
|
+
|
|
86
|
+
### AC2: Non-R prefix text does not suppress W007 (R1)
|
|
87
|
+
|
|
88
|
+
- **Given** a spec with `### R1: Something` in Requirements
|
|
89
|
+
- **When** AC section contains `ERROR1` or `CR1` but not standalone `R1`
|
|
90
|
+
- **Then** W007 fires for R1
|
|
91
|
+
|
|
92
|
+
### AC3: RFC keyword word-boundary (R2)
|
|
93
|
+
|
|
94
|
+
- **Given** a spec with unreferenced `### R1: The system MAYONNAISE handler`
|
|
95
|
+
- **When** spec linter runs
|
|
96
|
+
- **Then** W007 message does NOT contain `(MAY)` — substring `MAY` inside `MAYONNAISE` is not a match
|
|
97
|
+
- **And** emphasis is empty (no RFC keyword found)
|
|
98
|
+
|
|
99
|
+
### AC4: All 7 RFC keywords detected (R2, R5)
|
|
100
|
+
|
|
101
|
+
- **Given** specs with unreferenced requirements containing each of: MUST, SHOULD, MAY, SHALL, REQUIRED, RECOMMENDED, OPTIONAL
|
|
102
|
+
- **When** spec linter runs
|
|
103
|
+
- **Then** each W007 message contains the correct keyword in parentheses: `(MUST)`, `(SHOULD)`, etc.
|
|
104
|
+
|
|
105
|
+
### AC5: W003 and W007 use same detection mechanism (R2)
|
|
106
|
+
|
|
107
|
+
- **Given** the spec_linter.py source code
|
|
108
|
+
- **When** inspecting both W003 and W007 RFC 2119 detection
|
|
109
|
+
- **Then** both use `SPEC_RFC_PATTERN` (or `_RFC2119` alias) for matching — no plain `kw in string`
|
|
110
|
+
|
|
111
|
+
### AC6: Existing tests still pass (regression)
|
|
112
|
+
|
|
113
|
+
- **Given** all pre-existing tests in test_story_slim024.py and test_story042_spec_linter.py
|
|
114
|
+
- **When** running the full test suite
|
|
115
|
+
- **Then** all tests pass — no regressions from word-boundary change
|
|
116
|
+
|
|
117
|
+
## Implementation Steps
|
|
118
|
+
|
|
119
|
+
| Step | File | Action | Dependencies | Risk |
|
|
120
|
+
|------|------|--------|-------------|------|
|
|
121
|
+
| 1 | `src/pactkit/skills/spec_linter.py:241` | Replace `req_id.lower() not in ac_lower` with `re.search(rf"\b{re.escape(req_id)}\b", ac_section, re.IGNORECASE)` | None | Low |
|
|
122
|
+
| 2 | `src/pactkit/skills/spec_linter.py:244` | Replace `next((kw for kw in SPEC_RFC_KEYWORDS if kw in req_upper), None)` with `SPEC_RFC_PATTERN.search(req_body)` using match group | Step 1 | Low |
|
|
123
|
+
| 3 | `src/pactkit/skills/spec_linter.py:203` | Add inline comment documenting why `_REQ_ID_PATTERN` uses `\s+` vs `SPEC_REQUIREMENT_PATTERN`'s literal space, or unify | None | Low |
|
|
124
|
+
| 4 | `tests/unit/test_story_slim024.py` | Add R10 multi-digit test (AC1), non-R-prefix test (AC2), MAYONNAISE test (AC3), all-7-keywords test (AC4), no-keyword test (AC5 empty emphasis) | Steps 1-2 | Low |
|
|
125
|
+
| 5 | `tests/unit/test_story_slim024.py` | Migrate from `tempfile.NamedTemporaryFile(delete=False)` to pytest `tmp_path` fixture (consistency with test_story042) | None | Low |
|
|
126
|
+
|
|
127
|
+
## Security Scope
|
|
128
|
+
|
|
129
|
+
| Check | Applicable | Reason |
|
|
130
|
+
|-------|------------|--------|
|
|
131
|
+
| SEC-1~8 | No | Lint rule logic change, no I/O or auth |
|
|
132
|
+
|
|
133
|
+
## Out of Scope
|
|
134
|
+
|
|
135
|
+
- `_section_text()` returning heading line (fragile but extremely unlikely to cause false suppression)
|
|
136
|
+
- Sectional write rule 150 vs 300 inconsistency in `rules.py:359` (trivial fix, separate commit)
|
|
137
|
+
- `config.py:961` api_spec empty string default (docs already fixed, code default is cosmetic)
|
|
138
|
+
- Board archive section ordering (functional, not a bug)
|
|
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "pactkit"
|
|
7
|
-
version = "2.
|
|
7
|
+
version = "2.4.0"
|
|
8
8
|
description = "Spec-driven agentic DevOps toolkit for AI coding assistants"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
license = "MIT"
|
|
@@ -12,6 +12,7 @@ requires-python = ">=3.10"
|
|
|
12
12
|
dependencies = [
|
|
13
13
|
"pyyaml>=6.0",
|
|
14
14
|
]
|
|
15
|
+
|
|
15
16
|
authors = [
|
|
16
17
|
{ name = "Slim" },
|
|
17
18
|
]
|
|
@@ -44,6 +45,14 @@ classifiers = [
|
|
|
44
45
|
"Topic :: Software Development :: Quality Assurance",
|
|
45
46
|
]
|
|
46
47
|
|
|
48
|
+
[project.optional-dependencies]
|
|
49
|
+
multilang = [
|
|
50
|
+
"tree-sitter>=0.25",
|
|
51
|
+
"tree-sitter-go>=0.25",
|
|
52
|
+
"tree-sitter-java>=0.23",
|
|
53
|
+
"tree-sitter-typescript>=0.23",
|
|
54
|
+
]
|
|
55
|
+
|
|
47
56
|
[project.urls]
|
|
48
57
|
Homepage = "https://pactkit.dev"
|
|
49
58
|
Repository = "https://github.com/pactkit/pactkit"
|
|
@@ -80,6 +89,6 @@ select = ["E", "F", "I", "W"]
|
|
|
80
89
|
"src/pactkit/prompts/skills.py" = ["E501"]
|
|
81
90
|
"src/pactkit/prompts/workflows.py" = ["E501"]
|
|
82
91
|
"src/pactkit/generators/deployer.py" = ["E402"]
|
|
83
|
-
"src/pactkit/skills/*.py" = ["E501", "E701", "E702", "E722", "E731"]
|
|
92
|
+
"src/pactkit/skills/*.py" = ["E501", "E701", "E702", "E722", "E731", "I001"]
|
|
84
93
|
"src/pactkit/scripts.py" = ["E501"]
|
|
85
|
-
"tests/**/*.py" = ["E402", "E501", "E741", "F841"]
|
|
94
|
+
"tests/**/*.py" = ["E402", "E501", "E741", "F841", "I001"]
|
|
@@ -399,6 +399,15 @@ def main():
|
|
|
399
399
|
files = [f for f in result.stdout.strip().split("\n") if f]
|
|
400
400
|
strategy, reason = classify_changes(files)
|
|
401
401
|
print(f"{strategy.upper()} — {reason}")
|
|
402
|
+
# Workflow impact — informational only (STORY-slim-038)
|
|
403
|
+
try:
|
|
404
|
+
from pactkit.skills.visualize import regression_workflow_impact
|
|
405
|
+
|
|
406
|
+
wf_lines = regression_workflow_impact(".", files)
|
|
407
|
+
for line in wf_lines:
|
|
408
|
+
print(line)
|
|
409
|
+
except Exception:
|
|
410
|
+
pass # Graceful degradation (R4)
|
|
402
411
|
raise SystemExit(0 if strategy == "skip" else 0)
|
|
403
412
|
|
|
404
413
|
elif args.command == "context":
|
|
@@ -178,6 +178,14 @@ def get_default_config() -> dict:
|
|
|
178
178
|
"done": {
|
|
179
179
|
"lesson_quality_threshold": 15,
|
|
180
180
|
},
|
|
181
|
+
"visualize": {
|
|
182
|
+
"scan_excludes": [
|
|
183
|
+
"venv", "_venv", ".venv", ".env", "env",
|
|
184
|
+
"__pycache__", ".git", ".claude",
|
|
185
|
+
"tests", "docs",
|
|
186
|
+
"node_modules", "site-packages", "dist", "build",
|
|
187
|
+
],
|
|
188
|
+
},
|
|
181
189
|
"command_models": {
|
|
182
190
|
"project-act": "sonnet",
|
|
183
191
|
"project-check": "sonnet",
|
|
@@ -365,6 +373,7 @@ def load_config(path: Path | str | None = None) -> dict:
|
|
|
365
373
|
"done",
|
|
366
374
|
"e2e",
|
|
367
375
|
"command_models",
|
|
376
|
+
"visualize",
|
|
368
377
|
}
|
|
369
378
|
|
|
370
379
|
# Merge: user keys override defaults; missing keys inherit
|
|
@@ -460,6 +469,7 @@ def auto_merge_config_file(path: Union[Path, str]) -> list[str]:
|
|
|
460
469
|
"check",
|
|
461
470
|
"done",
|
|
462
471
|
"e2e", # STORY-slim-022
|
|
472
|
+
"visualize", # STORY-slim-028
|
|
463
473
|
)
|
|
464
474
|
for key in _BACKFILL_KEYS:
|
|
465
475
|
if key not in user_data:
|
|
@@ -506,6 +516,7 @@ def _rewrite_yaml(path: Path, data: dict) -> None:
|
|
|
506
516
|
"agent_models",
|
|
507
517
|
"command_models",
|
|
508
518
|
"rule_scopes",
|
|
519
|
+
"visualize",
|
|
509
520
|
}
|
|
510
521
|
|
|
511
522
|
lines = [
|
|
@@ -672,6 +683,16 @@ def _rewrite_yaml(path: Path, data: dict) -> None:
|
|
|
672
683
|
lines.append(f' {rule_id}: "{pattern}"')
|
|
673
684
|
lines.append("")
|
|
674
685
|
|
|
686
|
+
# Write visualize section (STORY-slim-028)
|
|
687
|
+
visualize = data.get("visualize", {})
|
|
688
|
+
if isinstance(visualize, dict) and "scan_excludes" in visualize:
|
|
689
|
+
lines.append("# Visualize — configure directory scan exclusions")
|
|
690
|
+
lines.append("visualize:")
|
|
691
|
+
lines.append(" scan_excludes:")
|
|
692
|
+
for item in visualize["scan_excludes"]:
|
|
693
|
+
lines.append(f" - {item}")
|
|
694
|
+
lines.append("")
|
|
695
|
+
|
|
675
696
|
# BUG-023: Preserve unknown user-defined keys
|
|
676
697
|
unknown_keys = {k: v for k, v in data.items() if k not in KNOWN_KEYS}
|
|
677
698
|
if unknown_keys:
|
|
@@ -961,6 +982,15 @@ def generate_default_yaml() -> str:
|
|
|
961
982
|
lines.append(f" api_spec: \"{e2e.get('api_spec', '')}\" # OpenAPI spec path for frontend/backend")
|
|
962
983
|
lines.append(f" compose_file: {e2e.get('compose_file', 'docker-compose.test.yml')} # for fullstack")
|
|
963
984
|
|
|
985
|
+
# Write visualize section (STORY-slim-028)
|
|
986
|
+
visualize = cfg.get("visualize", {})
|
|
987
|
+
if isinstance(visualize, dict) and "scan_excludes" in visualize:
|
|
988
|
+
lines.extend(["", "# Visualize — configure directory scan exclusions"])
|
|
989
|
+
lines.append("visualize:")
|
|
990
|
+
lines.append(" scan_excludes:")
|
|
991
|
+
for item in visualize["scan_excludes"]:
|
|
992
|
+
lines.append(f" - {item}")
|
|
993
|
+
|
|
964
994
|
# Write command_models section (STORY-073)
|
|
965
995
|
cmd_models = cfg.get("command_models", {})
|
|
966
996
|
if cmd_models:
|
|
@@ -5,6 +5,7 @@ Replaces prompt-based issue tracker verification from Done Phase 3.5.5/3.6.
|
|
|
5
5
|
from __future__ import annotations
|
|
6
6
|
|
|
7
7
|
import json
|
|
8
|
+
import re
|
|
8
9
|
import subprocess
|
|
9
10
|
from pathlib import Path
|
|
10
11
|
|
|
@@ -68,7 +69,8 @@ def _search_issue(item_id: str) -> dict | None:
|
|
|
68
69
|
return None
|
|
69
70
|
issues = json.loads(result.stdout)
|
|
70
71
|
for issue in issues:
|
|
71
|
-
|
|
72
|
+
title = issue.get("title", "")
|
|
73
|
+
if re.search(rf"(?<!\w){re.escape(item_id)}(?!\w)", title):
|
|
72
74
|
return issue
|
|
73
75
|
return None
|
|
74
76
|
except Exception:
|
|
@@ -86,53 +86,33 @@ allowed-tools: [Read, Write, Edit, Bash, Glob, Grep]
|
|
|
86
86
|
1. Run `pactkit next-id` to get the next Story ID (reads developer prefix from pactkit.yaml, scans `docs/specs/`).
|
|
87
87
|
2. **Output checkpoint**: Print "Story ID determined: {ID}. Writing Spec now."
|
|
88
88
|
|
|
89
|
-
## 🎬 Phase 3.2a:
|
|
90
|
-
1. **
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
| Release | {version} |
|
|
99
|
-
```
|
|
100
|
-
Field names MUST be exact case (ID, Status, Priority, Release) — not bold, not different names.
|
|
101
|
-
- **MUST**: Fill in the `Release` metadata field by reading the `version` field from `{PACTKIT_YAML}` or `pyproject.toml`. Use that EXACT value — do NOT increment or predict a future version. If the file cannot be read, use `TBD`.
|
|
102
|
-
- **MUST**: Include `## Background` and `## Target Call Chain` sections based on your Trace findings.
|
|
103
|
-
- **MUST**: Fill in the `## Requirements` section using RFC 2119 keywords (MUST/SHOULD/MAY).
|
|
104
|
-
2. **Output checkpoint**: Print "Spec skeleton written. Adding acceptance criteria."
|
|
89
|
+
## 🎬 Phase 3.2a: Scaffold + Metadata Table & Requirements
|
|
90
|
+
1. **Scaffold**: Run `{SCAFFOLD_CMD} create_spec "{ID}" "{title}"` to generate `docs/specs/{ID}.md` from SPEC_TEMPLATE. This creates all sections, tables, and Given/When/Then skeleton — format is guaranteed by Code.
|
|
91
|
+
2. **Read**: Read `docs/specs/{ID}.md` to see the scaffolded template.
|
|
92
|
+
3. **Edit placeholders** (use Edit tool, NOT Write):
|
|
93
|
+
- Edit `Release | TBD` → `Release | {version}` (read version from `{PACTKIT_YAML}` or `pyproject.toml`; if unreadable, keep TBD)
|
|
94
|
+
- Edit `(Description of the problem or feature)` → actual Background content from your Trace findings
|
|
95
|
+
- Edit `## Target Call Chain` placeholder → actual call chain from Phase 1
|
|
96
|
+
- Edit `### R1: (Requirement Name) (MUST)` → actual requirements using RFC 2119 keywords (MUST/SHOULD/MAY). Add more R{N} sections as needed.
|
|
97
|
+
4. **Output checkpoint**: Print "Spec skeleton filled. Adding acceptance criteria."
|
|
105
98
|
|
|
106
99
|
## 🎬 Phase 3.2b: Acceptance Criteria & Implementation Steps
|
|
107
|
-
1. **
|
|
100
|
+
1. **Edit AC** (use Edit tool): Replace `### AC1: (Scenario Name) (R1)` and its Given/When/Then placeholders with actual scenarios. The template already provides the `- **Given**` / `- **When**` / `- **Then**` structure — fill in the content. Add more AC{N} sections as needed.
|
|
108
101
|
- Each Scenario SHOULD map to a verifiable test case in `docs/test_cases/`.
|
|
109
|
-
2. **
|
|
110
|
-
```
|
|
111
|
-
| Step | File | Action | Dependencies | Risk |
|
|
112
|
-
|------|------|--------|--------------|------|
|
|
113
|
-
| 1 | `src/foo.py` | Description | None | Low |
|
|
114
|
-
```
|
|
115
|
-
The `Dependencies` column accepts `None`, `Step N`, or comma-separated step references. The `Risk` column accepts `Low`, `Medium`, `High`.
|
|
102
|
+
2. **Edit Implementation Steps** (optional): If Phase 1 Trace identifies 2+ files to modify, replace the placeholder rows in `## Implementation Steps` with actual steps. The table skeleton (headers + separator) is already in the template.
|
|
116
103
|
3. **Output checkpoint**: Print "Acceptance criteria written. Running security scope."
|
|
117
104
|
|
|
118
105
|
## 🎬 Phase 3.2c: Security Scope
|
|
119
|
-
1. **MUST**: Run `pactkit sec-scope <changed-files>` to auto-detect SEC-1~SEC-8 applicability.
|
|
120
|
-
2. **
|
|
121
|
-
3. **
|
|
122
|
-
|
|
123
|
-
## Security Scope
|
|
124
|
-
| Check | Applicable | Reason |
|
|
125
|
-
|-------|------------|--------|
|
|
126
|
-
| SEC-1 | Yes | Source code modified |
|
|
127
|
-
| SEC-2 | N/A | No user input handling |
|
|
128
|
-
```
|
|
129
|
-
4. **Output checkpoint**: Print "Security scope appended. Running lint."
|
|
106
|
+
1. **MUST**: Run `pactkit sec-scope <changed-files>` to auto-detect SEC-1~SEC-8 applicability.
|
|
107
|
+
2. **Edit** the `## Security Scope` section already in the template: replace the placeholder SEC-1 row with actual SEC-* assessments from the output above. The table skeleton (Check/Applicable/Reason headers) is already in the template.
|
|
108
|
+
3. **Fallback**: If `pactkit sec-scope` is unavailable, manually Edit each SEC-1 through SEC-8 entry. Apply docs/tests-only shortcut if applicable (mark ALL N/A with Reason "docs/tests only").
|
|
109
|
+
4. **Output checkpoint**: Print "Security scope filled. Running lint."
|
|
130
110
|
|
|
131
111
|
## 🎬 Phase 3.2d: Spec Lint Self-Check
|
|
132
112
|
1. Run `pactkit spec-lint docs/specs/{ID}.md`.
|
|
133
|
-
2. If ERROR rules
|
|
113
|
+
2. If any ERROR or WARNING rules fire, self-correct the Spec immediately (you wrote it — you have authority to fix it). Re-run until `pactkit spec-lint` reports 0 errors AND 0 warnings.
|
|
134
114
|
3. This prevents the Spec from being rejected at Act Phase 0.5.
|
|
135
|
-
4. **Output checkpoint**: Print "Spec lint passed."
|
|
115
|
+
4. **Output checkpoint**: Print "Spec lint passed (0 errors AND 0 warnings)."
|
|
136
116
|
|
|
137
117
|
## 🎬 Phase 3.3: Board, Memory & Handover
|
|
138
118
|
1. **Board**: Add Story using `add_story`.
|
|
@@ -180,7 +160,8 @@ allowed-tools: [Read, Write, Edit, Bash, Glob, Grep]
|
|
|
180
160
|
> **NON-BLOCKING**: This phase NEVER stops Act.
|
|
181
161
|
1. **Spec exists?**: Check if `docs/specs/{STORY_ID}.md` exists. If not: WARN "Spec not found".
|
|
182
162
|
2. **Board entry exists?**: Check if `{STORY_ID}` appears in `docs/product/sprint_board.md`. If not: WARN "Board entry not found".
|
|
183
|
-
3. **
|
|
163
|
+
3. **Move to In Progress**: If `{STORY_ID}` is found on the board, move it to In Progress section.
|
|
164
|
+
4. **Continue**: Regardless of findings, proceed to Phase 1.
|
|
184
165
|
|
|
185
166
|
## 🎬 Phase 1: Precision Targeting
|
|
186
167
|
1. **Targeted Visual Scan**: Run `visualize --focus <module>` only (single targeted mode). For large codebases, add `--depth 2`. Do NOT run full 3-mode visualize here — that is handled by Phase 4 Lazy Visualize after implementation.
|
|
@@ -205,6 +186,7 @@ allowed-tools: [Read, Write, Edit, Bash, Glob, Grep]
|
|
|
205
186
|
- Run `pactkit regression` (uses `git diff` + `LANG_PROFILES` to classify: SKIP/FULL/IMPACT). Doc-only changes are auto-skipped.
|
|
206
187
|
- If IMPACT: run `pactkit test-map <changed-files>` for incremental test selection. If any changed file has 3+ importers in `code_graph.mmd`, run full suite. Fallback: full suite.
|
|
207
188
|
- **CRITICAL — Pre-existing test failure protocol**: If a pre-existing test fails, **DO NOT modify** it. **STOP** and report to the user. This is a one-shot check, not an iterative loop.
|
|
189
|
+
4. **Lint Gate**: Run `pactkit lint` to check code style. If lint errors are found, fix them before proceeding. If `pactkit lint` is unavailable, run the stack's lint command directly.
|
|
208
190
|
|
|
209
191
|
## 🎬 Phase 4: Sync & Document
|
|
210
192
|
1. Run `pactkit clean` and `pactkit visualize --lazy` (runs file, `--mode class`, `--mode call` if source changed).
|
|
@@ -356,7 +356,7 @@ When generating **any file** (code, document, test, HTML, etc.) that will exceed
|
|
|
356
356
|
3. **Checkpoint between blocks**: After each Edit, print a brief progress message (e.g., "Block 2/5 written.")
|
|
357
357
|
4. **Never accumulate**: Do NOT compose the entire file in reasoning before writing — write as you go
|
|
358
358
|
|
|
359
|
-
## Applies To — any file type over
|
|
359
|
+
## Applies To — any file type over 300 lines
|
|
360
360
|
- Documents: PRD, specs, README, architecture guides
|
|
361
361
|
- Source code: large modules, multi-endpoint API files, data models
|
|
362
362
|
- Tests: test files with many test classes or scenarios
|
|
@@ -738,7 +738,8 @@ Assign each Story to a horizon:
|
|
|
738
738
|
- `## Requirements` — using RFC 2119 keywords (MUST/SHOULD/MAY)
|
|
739
739
|
- `## Acceptance Criteria` — Given/When/Then scenarios
|
|
740
740
|
- Add Priority Score to the spec header: `- **Priority**: {score} (Impact {I} / Effort {E})`
|
|
741
|
-
4. **
|
|
741
|
+
4. **Security Scope**: After filling each Spec, run `pactkit sec-scope <changed-files>` to populate the `## Security Scope` section. If `pactkit sec-scope` is unavailable, manually fill SEC-1 through SEC-8.
|
|
742
|
+
5. **Spec Lint Self-Check**: After each Spec is generated, run `pactkit spec-lint docs/specs/{STORY_ID}.md`. If ERRORs found, self-correct and re-run until clean. This prevents malformed Specs from blocking the Sprint pipeline at Act Phase 0.5.
|
|
742
743
|
5. **Batch Checkpoint**: Every 3 Specs completed, print a progress checkpoint (e.g., "3/8 Specs created. Continuing."). This prevents unbounded continuous output.
|
|
743
744
|
6. **Dependency Graph**: Add a Mermaid dependency graph at the end of the PRD showing Story execution order and critical path.
|
|
744
745
|
|
|
@@ -18,14 +18,14 @@ When adding a new document type:
|
|
|
18
18
|
|
|
19
19
|
SPEC_REQUIRED_METADATA_FIELDS = ("ID", "Status", "Priority", "Release")
|
|
20
20
|
|
|
21
|
-
SPEC_REQUIRED_SECTIONS = ("## Requirements", "## Acceptance Criteria")
|
|
21
|
+
SPEC_REQUIRED_SECTIONS = ("## Requirements", "## Acceptance Criteria", "## Security Scope")
|
|
22
22
|
|
|
23
23
|
SPEC_OPTIONAL_SECTIONS = (
|
|
24
24
|
"## Background",
|
|
25
25
|
"## Target Call Chain",
|
|
26
26
|
"## Implementation Steps",
|
|
27
|
-
"## Security Scope",
|
|
28
27
|
"## Out of Scope",
|
|
28
|
+
"## Non-Goals",
|
|
29
29
|
)
|
|
30
30
|
|
|
31
31
|
# E004: requirement subsection pattern
|
|
@@ -45,6 +45,10 @@ import re as _re # noqa: E402
|
|
|
45
45
|
|
|
46
46
|
SPEC_RFC_PATTERN = _re.compile(r"\b(" + "|".join(SPEC_RFC_KEYWORDS) + r")\b")
|
|
47
47
|
|
|
48
|
+
# E009: Security Scope section name and SEC-* entry pattern
|
|
49
|
+
SPEC_SECURITY_SCOPE_SECTION = "Security Scope"
|
|
50
|
+
SPEC_SEC_PATTERN = r"\|\s*SEC-"
|
|
51
|
+
|
|
48
52
|
# ─── Spec Template ──────────────────────────────────────────────────────────
|
|
49
53
|
# Used by scaffold.py create_spec(). Must be consistent with spec_linter rules.
|
|
50
54
|
# IMPORTANT: scaffold.py (deployed as standalone script) inlines a copy of this
|
|
@@ -72,12 +76,28 @@ SPEC_TEMPLATE = """\
|
|
|
72
76
|
|
|
73
77
|
## Acceptance Criteria
|
|
74
78
|
|
|
75
|
-
### AC1: (Scenario Name)
|
|
79
|
+
### AC1: (Scenario Name) (R1)
|
|
76
80
|
|
|
77
81
|
- **Given** (precondition)
|
|
78
82
|
- **When** (action)
|
|
79
83
|
- **Then** (expected result)
|
|
80
84
|
|
|
85
|
+
## Target Call Chain
|
|
86
|
+
|
|
87
|
+
(Trace call chain here)
|
|
88
|
+
|
|
89
|
+
## Implementation Steps
|
|
90
|
+
|
|
91
|
+
| Step | File | Action | Dependencies | Risk |
|
|
92
|
+
|------|------|--------|-------------|------|
|
|
93
|
+
| 1 | `src/example.py` | (Description) | None | Low |
|
|
94
|
+
|
|
95
|
+
## Security Scope
|
|
96
|
+
|
|
97
|
+
| Check | Applicable | Reason |
|
|
98
|
+
|-------|------------|--------|
|
|
99
|
+
| SEC-1 | N/A | (Reason) |
|
|
100
|
+
|
|
81
101
|
## Out of Scope
|
|
82
102
|
|
|
83
103
|
- (Items explicitly excluded)
|
|
@@ -8,7 +8,8 @@ from pathlib import Path
|
|
|
8
8
|
|
|
9
9
|
_SCRIPTS_DIR = Path(__file__).parent
|
|
10
10
|
|
|
11
|
-
_SHARED_HEADER = r"""import re, os, sys, json, datetime, argparse, subprocess, shutil, ast
|
|
11
|
+
_SHARED_HEADER = r"""import abc, re, os, sys, json, datetime, argparse, subprocess, shutil, ast
|
|
12
|
+
from dataclasses import dataclass
|
|
12
13
|
from pathlib import Path
|
|
13
14
|
|
|
14
15
|
def nl(): return chr(10)
|
|
@@ -133,12 +133,28 @@ _SPEC_TEMPLATE = """\
|
|
|
133
133
|
|
|
134
134
|
## Acceptance Criteria
|
|
135
135
|
|
|
136
|
-
### AC1: (Scenario Name)
|
|
136
|
+
### AC1: (Scenario Name) (R1)
|
|
137
137
|
|
|
138
138
|
- **Given** (precondition)
|
|
139
139
|
- **When** (action)
|
|
140
140
|
- **Then** (expected result)
|
|
141
141
|
|
|
142
|
+
## Target Call Chain
|
|
143
|
+
|
|
144
|
+
(Trace call chain here)
|
|
145
|
+
|
|
146
|
+
## Implementation Steps
|
|
147
|
+
|
|
148
|
+
| Step | File | Action | Dependencies | Risk |
|
|
149
|
+
|------|------|--------|-------------|------|
|
|
150
|
+
| 1 | `src/example.py` | (Description) | None | Low |
|
|
151
|
+
|
|
152
|
+
## Security Scope
|
|
153
|
+
|
|
154
|
+
| Check | Applicable | Reason |
|
|
155
|
+
|-------|------------|--------|
|
|
156
|
+
| SEC-1 | N/A | (Reason) |
|
|
157
|
+
|
|
142
158
|
## Out of Scope
|
|
143
159
|
|
|
144
160
|
- (Items explicitly excluded)
|
|
@@ -190,7 +206,7 @@ def create_skill(name, desc, base_dir=None):
|
|
|
190
206
|
"",
|
|
191
207
|
"### [command_name] -- [Brief description]",
|
|
192
208
|
"```",
|
|
193
|
-
f"python3
|
|
209
|
+
f"python3 {root}/scripts/{clean}.py [subcommand] [args]",
|
|
194
210
|
"```",
|
|
195
211
|
"",
|
|
196
212
|
"## Usage Scenarios",
|