Files
agentic-dev/packages/editor/AGENTS.md
Danijel Martinek c42eca5b80 feat(editor): scaffold editor package
UI-only feature package for the ADR-029 editor rebuild: tsconfig
rootDir '.', vitest jsdom base with '@' alias and honest L0 baseline
thresholds, conformance ESLint active, React 19, @xyflow/react +
zustand wired against the pre-approved 2026-07-12 library traces.
Minimal feature.manifest.ts (empty useCases — no binders; declares
requiredCores runner-protocol + baseline coverage band) so the editor
participates in pnpm conformance without weakening any lint rule.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016j8z4VHjedXDTjEDNg7qHK
2026-07-12 22:00:34 +02:00

2.0 KiB

@repo/editor

Owns the rebuilt Veect editor UI (ADR-029): the React Flow board shell, the iframe frame node that hosts the runner's preview-adapter origin, the editor-side selection overlay, the canvas-protocol client (pinned-targetOrigin postMessage both directions, ADR-028), and the minimal zustand store (registry + selection only — DesignDoc v1 arrives with the design-doc-and-editor-foundation epic).

Boundary tag: feature. May import from core (core-runner-protocol, core-shared), feature, and tooling packages. Imported by apps (apps/web-next hosts the board from story 10).

Public surface:

  • . (root) — contracts only: canvas-protocol schemas + types, the feature manifest.
  • ./ui — UI artifacts: board, frame node, selection overlay components, the editor store hook.

Conventions:

  • UI-only feature package — useCases is empty in src/feature.manifest.ts; there are no DI binders. Manifest-first ordering applies the moment a use case appears.
  • Every component in src/ui/ has sibling .stories.tsx + .test.tsx files (component-must-have-story / component-must-have-test) — no exemption zone (ADR-029).
  • Chrome (selection/hover rings) renders as editor-side overlays positioned from agent-reported geometry — never inside the iframe document (ADR-028).
  • Board pan/zoom and frame drag are pure React Flow transforms — no canvas-protocol round-trip on drag (<16 ms/frame budget).
  • The canvas-protocol message shapes agent ↔ editor are local zod schemas in src/canvas-protocol/ for now; they reconcile with the adapter's agent script (walking-skeleton story 05) and @repo/core-runner-protocol in story 10. render-frame already comes from @repo/core-runner-protocol.
  • The prototype under docs/product/reference/project/veect-codebase/ is reference only — never vendored (ADR-029).

See: docs/decisions/adr-028-iframe-canvas.md, docs/decisions/adr-029-designdoc-v1-and-editor-rebuild.md, docs/work/epics/walking-skeleton/09-editor-package/_story.md.