51 lines
3.0 KiB
Markdown
51 lines
3.0 KiB
Markdown
# 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/`, and `packages/react-textarea/`.
|
|
- Use [PARITY.md](./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](./README.md) focused on user-facing package documentation.
|
|
|
|
## Required parity workflow
|
|
|
|
When porting a React feature:
|
|
|
|
1. Identify impacted React implementation and tests.
|
|
2. Classify whether the feature is near-100% translatable using [PARITY.md](./PARITY.md).
|
|
3. If it is near-100% translatable, mirror the React suite/file structure and keep matching `describe` and `it` text word-for-word for the mirrored cases.
|
|
4. If API divergence seems necessary or likely, discuss it with the user before introducing a Vue-specific translation.
|
|
5. Implement Vue behavior in `packages/vue/src/**`.
|
|
6. Add or update equivalent Vue tests with parity-friendly discoverability.
|
|
7. Update the relevant matrix rows in [PARITY.md](./PARITY.md) in the same change.
|
|
8. Document intentional divergences in [PARITY.md](./PARITY.md).
|
|
9. 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.
|
|
10. For strict parity/e2e suites, follow [PARITY.md](./PARITY.md) test conventions: Testing Library-first query style, no `wrapper.get(...)`-first ports, and no unnecessary `h(...)` render-function harnesses.
|
|
11. 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.
|
|
12. Keep slots as the primary Vue customization model. `renderCustomMessages` is the approved secondary provider-level parity surface for ordered and agent-scoped custom message registration; do not invent alternative provider-slot registration APIs.
|
|
13. Do not port React `StrictMode` identity assertions literally into Vue by adding runtime remount caches/workarounds; validate Vue lifecycle invariants under rerender/remount instead.
|
|
|
|
## Validation gates
|
|
|
|
Run after meaningful changes:
|
|
|
|
1. `pnpm nx run @copilotkit/vue:lint`
|
|
2. `pnpm nx run @copilotkit/vue:check-types`
|
|
3. `pnpm nx run @copilotkit/vue:test`
|
|
|
|
When touching integration/build behavior:
|
|
|
|
1. `pnpm nx run @copilotkit/vue:build`
|
|
|
|
## Documentation placement
|
|
|
|
- Parity rules, architectural translation decisions, strict translatability criteria, checklist, and mapping matrix: [PARITY.md](./PARITY.md).
|
|
- Public package usage and API examples: [README.md](./README.md).
|
|
- User-facing visual docs/examples: `examples/v2/vue/storybook/**`.
|