refactor(store): extract @uncaged/nerve-store from daemon #88

Merged
xiaomo merged 1 commits from refactor/extract-nerve-store into main 2026-04-24 11:29:14 +00:00
Owner

What

从 daemon 中拆出存储层为独立包 @uncaged/nerve-store

Why

  • daemon 包过胖(63% 代码量),存储层(~900 LOC)是最容易独立的关注点
  • CLI 的 daemon-types.ts 手动复制 daemon 类型,改接口不会编译报错,运行时才炸
  • 详见 #82 架构 review

Changes

文件 变更
packages/store/ 新建包,含 log-store.ts (702 LOC)、log-archive.ts、blob-store.ts、index.ts
packages/store/package.json @uncaged/nerve-store,依赖 @uncaged/nerve-core
packages/store/rslib.config.ts 构建配置,匹配其他包风格
packages/store/src/__tests__/ 从 daemon 迁移 6 个测试文件(73 个测试全过)
packages/daemon/package.json 新增依赖 @uncaged/nerve-store
packages/daemon/src/ 删除 blob-store.ts、log-store.ts、log-archive.ts,import 改为 @uncaged/nerve-store
packages/daemon/src/index.ts @uncaged/nerve-store 再导出,保持对外兼容
packages/cli/package.json 新增依赖 @uncaged/nerve-store
packages/cli/src/daemon-types.ts 已删除(手抄类型炸弹消除)
packages/cli/src/commands/workflow.ts import 改为 @uncaged/nerve-store
tsconfig.json 新增 store project reference
pnpm-lock.yaml workspace 依赖更新

Ref

Closes #85 | Parent: #82

## What 从 daemon 中拆出存储层为独立包 `@uncaged/nerve-store`。 ## Why - daemon 包过胖(63% 代码量),存储层(~900 LOC)是最容易独立的关注点 - CLI 的 `daemon-types.ts` 手动复制 daemon 类型,改接口不会编译报错,运行时才炸 - 详见 #82 架构 review ## Changes | 文件 | 变更 | |------|------| | `packages/store/` | 新建包,含 log-store.ts (702 LOC)、log-archive.ts、blob-store.ts、index.ts | | `packages/store/package.json` | `@uncaged/nerve-store`,依赖 `@uncaged/nerve-core` | | `packages/store/rslib.config.ts` | 构建配置,匹配其他包风格 | | `packages/store/src/__tests__/` | 从 daemon 迁移 6 个测试文件(73 个测试全过) | | `packages/daemon/package.json` | 新增依赖 `@uncaged/nerve-store` | | `packages/daemon/src/` | 删除 blob-store.ts、log-store.ts、log-archive.ts,import 改为 `@uncaged/nerve-store` | | `packages/daemon/src/index.ts` | 从 `@uncaged/nerve-store` 再导出,保持对外兼容 | | `packages/cli/package.json` | 新增依赖 `@uncaged/nerve-store` | | `packages/cli/src/daemon-types.ts` | **已删除**(手抄类型炸弹消除) | | `packages/cli/src/commands/workflow.ts` | import 改为 `@uncaged/nerve-store` | | `tsconfig.json` | 新增 store project reference | | `pnpm-lock.yaml` | workspace 依赖更新 | ## Ref Closes #85 | Parent: #82
xingyue added 1 commit 2026-04-24 11:27:10 +00:00
- Create packages/store/ with log-store, log-archive, blob-store (~900 LOC)
- daemon depends on @uncaged/nerve-store (workspace:*)
- CLI depends on @uncaged/nerve-store, delete daemon-types.ts
- Move store-related tests to packages/store/src/__tests__/
- All store tests pass (73/73), no new regressions
xiaomo approved these changes 2026-04-24 11:29:12 +00:00
xiaomo left a comment
Owner

LGTM 👍 教科书级的包拆分。

亮点:

  • 依赖方向正确:core ← store ← daemon/cli,无循环
  • daemon 重导出 store 类型,外部消费者零感知
  • CLI 的 daemon-types.ts 类型炸弹彻底删除,编译期即可捕获不一致
  • 测试随代码迁移,6 个文件 rename 无修改,73 个测试全绿
  • store 包配置(rslib、tsconfig、package.json)与其他包风格一致

净删 75 行(+123/-198),复杂度下降,无功能变更。

LGTM 👍 教科书级的包拆分。 **亮点:** - 依赖方向正确:core ← store ← daemon/cli,无循环 - daemon 重导出 store 类型,外部消费者零感知 - CLI 的 daemon-types.ts 类型炸弹彻底删除,编译期即可捕获不一致 - 测试随代码迁移,6 个文件 rename 无修改,73 个测试全绿 - store 包配置(rslib、tsconfig、package.json)与其他包风格一致 **净删 75 行**(+123/-198),复杂度下降,无功能变更。
xiaomo merged commit 65012fbb53 into main 2026-04-24 11:29:14 +00:00
This repo is archived. You cannot comment on pull requests.
No Reviewers
No Label
2 Participants
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: uncaged/nerve#88