Source Map
Loro Extended
Source:
- Repository:
https://github.com/schoolAI/loro-extended - Studied commit:
e6f1ebbe011c05e4ec452789f4488b0d337c9791 - Local checkout used during study:
/tmp/loro-extended-study - Main packages inspected:
packages/change,packages/repo,packages/lens
Package versions at the studied commit:
| Package | Version | Why it matters |
|---|---|---|
@loro-extended/change |
6.0.0-beta.0 |
Typed schema/ref/change layer over Loro. This is the closest match to CVL engine needs. |
@loro-extended/repo |
6.0.0-beta.0 |
Local-first sync/document lifecycle framework. Useful as architecture input, not a direct replacement for Careervector persistence. |
@loro-extended/lens |
1.0.0-beta.0 |
Filtered worldview documents. Interesting later for sandboxed AI/preview workflows. |
High-Value Files
Re-read these first:
README.md: project framing and package map.TECHNICAL.md: API consistency, typed ref architecture, diff overlays, mergeable flattened storage.packages/change/README.md: user-facing change API and placeholders.packages/change/TECHNICAL.md: internals, materialization, mergeable storage limitations.packages/change/src/shape.ts: schema model.packages/change/src/typed-doc.ts: typed document wrapper, metadata, flattened reconstruction.packages/change/src/typed-refs/base.ts: facade plus internals pattern.packages/change/src/typed-refs/map-based-ref-internals.ts: shared struct/record logic.packages/change/src/typed-refs/utils.ts: child container creation and mergeable/root-container logic.packages/change/src/path-selector.ts: typed selector type model.packages/change/src/path-builder.ts: runtime selector builder.packages/change/src/path-subscription.ts: JSONPath vs global-subscription fallback.packages/change/src/diff-overlay.ts: before/after overlay entry point.packages/change/src/replay-diff.ts: replaying diffs as local ops.packages/change/src/mergeable-flattened.test.ts: behavior tests for root path containers.packages/change/src/nested-container-materialization.test.ts: nested identity failure mode and fix.docs/repo-architecture.md: repo/synchronizer architecture.docs/discovery-and-sync-architecture.md: pull-based discovery and sync.docs/permissions.md: sync-time permission predicates.docs/bidirectional-lens.md: lens worldview model and mergeable constraints.
Concepts To Keep
- Typed schema layer above raw CRDT containers.
- Public facade plus symbol-hidden internals.
- Batched
change()boundary for invariant-heavy edits. - Method-based writes instead of assignment.
- Placeholders as read overlays, not persisted defaults.
- Deterministic root-container naming for nested logical paths.
- ID-keyed records plus explicit order lists over deeply nested lists of containers.
- Semantic/path selector subscriptions.
- Transition reports from before/after diffs.
- Pure synchronizer/worker core with command execution around side effects.
Concepts To Avoid For Now
- Replacing Careervector REST/Yjs sub-doc persistence with Loro Extended repo.
- Exposing raw Loro/Yjs refs to Svelte or MCP.
- Modeling canonical CVL as nested CRDT container lists.
- Treating placeholders as proof of valid quarry state.
- Committing to Loro only because this wrapper is elegant.