Skip to content

refactor: split into @loreai/core + opencode-lore monorepo#71

Merged
BYK merged 1 commit intomainfrom
refactor/monorepo-core-extraction
Apr 17, 2026
Merged

refactor: split into @loreai/core + opencode-lore monorepo#71
BYK merged 1 commit intomainfrom
refactor/monorepo-core-extraction

Conversation

@BYK
Copy link
Copy Markdown
Owner

@BYK BYK commented Apr 17, 2026

Summary

First step toward the @LoreAi monorepo. Restructures the single opencode-lore package into a Bun workspace with two packages:

  • packages/core@loreai/core — shared memory engine (SQLite, FTS5, distillation, curation, gradient)
  • packages/opencodeopencode-lore — OpenCode plugin (Plugin entry + recall tool)

What moved

Before After
src/*.ts (core modules) packages/core/src/
src/index.ts, src/reflect.ts packages/opencode/src/
test/* (core tests) packages/core/test/
test/index.test.ts + new recovery.test.ts packages/opencode/test/
scripts/ packages/opencode/scripts/
eval/ packages/opencode/eval/

Zero user-visible change

  • Package name stays opencode-lore — existing users' "plugin": ["opencode-lore"] configs keep working unchanged.
  • All 354 tests pass (no regressions).
  • No runtime behavior change — this is purely a source layout refactor.

Why

First step toward:

  1. Dual-publish as opencode-lore (legacy) + @loreai/opencode (canonical), sharing the same tarball.
  2. Publish @loreai/core so a future @loreai/pi extension can depend on the same memory engine.

Follow-up PRs

  • SQLite driver swap (#db/driver subpath imports for bun:sqlitenode:sqlite)
  • Host abstraction layer (LoreMessage/LorePart, LLMClient interface)
  • esbuild bundling for published output
  • Pi extension package

Restructures the single opencode-lore package into a Bun workspace with:

- packages/core  (@loreai/core)          — shared memory engine
- packages/opencode (opencode-lore)       — OpenCode plugin (name preserved)

What moved:
- src/*.ts                 → packages/core/src/
- src/index.ts + reflect.ts→ packages/opencode/src/ (OpenCode-specific)
- test/*                   → packages/core/test/ (+ opencode-specific subset)
- scripts/                 → packages/opencode/scripts/
- eval/                    → packages/opencode/eval/

What stays the same:
- Package name opencode-lore — existing users' "plugin": ["opencode-lore"]
  configs keep working unchanged.
- All 354 tests pass unchanged.
- No runtime behavior change — this is purely a source layout refactor.

Why:
First step toward dual-publish (opencode-lore legacy name + @loreai/opencode
canonical name) and upcoming @loreai/pi extension that will share the core.

Follow-up PRs:
- SQLite driver swap (node:sqlite subpath imports)
- esbuild build scripts for packaged output
- Pi extension package
@BYK BYK enabled auto-merge (squash) April 17, 2026 10:06
@BYK BYK merged commit 28b623a into main Apr 17, 2026
1 check passed
@BYK BYK deleted the refactor/monorepo-core-extraction branch April 17, 2026 10:06
BYK added a commit that referenced this pull request Apr 17, 2026
The monorepo refactor (PR #71) removed the root \`main\` and \`exports\`
fields, which breaks \`"plugin": ["file:///path/to/opencode-lore"]\`
loading in OpenCode.

Adds a root-level trampoline that points to
\`packages/opencode/src/index.ts\`.

Verified: \`bun --eval 'import("/home/byk/Code/opencode-lore")'.\`
exports \`LorePlugin\` correctly.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant