3.0 KiB
3.0 KiB
AGENTS.md - @copilotkit/vue workflow guide
This file defines contributor workflow for keeping @copilotkit/vue aligned with upstream @copilotkit/react.
Scope
- Scope is limited to
packages/vue/**. - Keep upstream changes outside the Vue package to a minimum until the Vue port is merged.
Parity source of truth
- React remains the canonical behavioral reference:
packages/react-core/,packages/react-ui/, andpackages/react-textarea/. - Use PARITY.md as the canonical Vue-side parity policy, architectural translation guide, strict test-port rulebook, and living React-to-Vue implementation/test matrix.
- Keep README.md focused on user-facing package documentation.
Required parity workflow
When porting a React feature:
- Identify impacted React implementation and tests.
- Classify whether the feature is near-100% translatable using PARITY.md.
- If it is near-100% translatable, mirror the React suite/file structure and keep matching
describeandittext word-for-word for the mirrored cases. - If API divergence seems necessary or likely, discuss it with the user before introducing a Vue-specific translation.
- Implement Vue behavior in
packages/vue/src/**. - Add or update equivalent Vue tests with parity-friendly discoverability.
- Update the relevant matrix rows in PARITY.md in the same change.
- Document intentional divergences in PARITY.md.
- Do not add fallback or shallower test paths to force green status for near-100% parity suites; keep strict parity boundary and let failures be explicit.
- For strict parity/e2e suites, follow PARITY.md test conventions: Testing Library-first query style, no
wrapper.get(...)-first ports, and no unnecessaryh(...)render-function harnesses. - If Vue-only coverage is needed in a strict parity file, keep all React-mirrored cases first with word-for-word naming, then place Vue-only cases in a separate trailing
describe(...)block labeled as Vue-specific semantics. - Keep slots as the primary Vue customization model.
renderCustomMessagesis the approved secondary provider-level parity surface for ordered and agent-scoped custom message registration; do not invent alternative provider-slot registration APIs. - Do not port React
StrictModeidentity assertions literally into Vue by adding runtime remount caches/workarounds; validate Vue lifecycle invariants under rerender/remount instead.
Validation gates
Run after meaningful changes:
pnpm nx run @copilotkit/vue:lintpnpm nx run @copilotkit/vue:check-typespnpm nx run @copilotkit/vue:test
When touching integration/build behavior:
pnpm nx run @copilotkit/vue:build