mirror of
https://github.com/CopilotKit/CopilotKit.git
synced 2026-09-14 16:26:20 +08:00
cb0bf1c9b5
Compares framework dependency pins across showcase/packages/*/ and the corresponding dojo examples/integrations/* trees, flagging drift between the two and rejecting non-exact specs on the showcase side. Key design: - Parses package.json, requirements.txt, and pyproject.toml (including Poetry's [tool.poetry.dependencies] and PEP 621 [project.dependencies] / optional-dependencies). Separate jsDeps and pythonDeps maps prevent cross-ecosystem name collisions. - isExactSpec enforces exact-version pins per ecosystem (npm: no operators, workspace refs, or ranges; Python: ==X / ===X / ~=X with PEP 440 body). Symmetric rejection of bare MAJOR-only forms. - parseRequirementsTxt and parsePyprojectToml thin wrappers throw when the detailed form produced skipped[] or dropped[] entries, preventing silent data loss in simpler callers. - canonicalizeDepMap canonicalises names per PEP 503 and surfaces same-file collisions with differing specs as warnings. - First-writer-wins at both file and package levels. - UnreadableInputError carries an optional partialReport so an infra failure mid-slug-loop preserves already-collected drift findings for other slugs. - Exit codes: 0 ok, 1 drift, 2 internal, 3 unreadable. fail-baseline.json is the single source of truth for the CI ratchet (validatePinsFailCount + validatePinsFailHash) and the demo-count floor (baselineDemoCount, cross-checked against validate-parity.ts in a dedicated sync test). Test coverage spans every parser variant, EACCES routing via chmod probe + fs spies, exit-code taxonomy subprocess tests, partial-report preservation on mid-loop infra throws, and Poetry/PEP 503 edge cases via committed fixture files under __tests__/fixtures/pins/.