From 8d00f9cba13fc074a0b0c7eb0ede2f0f1e2361f0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=98=9F=E6=9C=88?= Date: Fri, 24 Apr 2026 19:26:46 +0800 Subject: [PATCH] refactor(store): extract @uncaged/nerve-store from daemon (#85) - 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 --- packages/cli/package.json | 2 +- packages/cli/rslib.config.ts | 2 +- .../cli/src/__tests__/daemon-types.test.ts | 80 ----------------- packages/cli/src/__tests__/workflow.test.ts | 4 +- packages/cli/src/commands/workflow.ts | 2 +- packages/cli/src/daemon-types.ts | 86 ------------------- packages/cli/src/workspace-daemon.ts | 4 +- packages/daemon/package.json | 1 + packages/daemon/src/__tests__/kernel.test.ts | 2 +- .../__tests__/log-store-integration.test.ts | 4 +- .../src/__tests__/sense-runtime.test.ts | 2 +- packages/daemon/src/index.ts | 25 +++--- packages/daemon/src/kernel.ts | 4 +- packages/daemon/src/reflex-scheduler.ts | 2 +- packages/daemon/src/sense-runtime.ts | 2 +- packages/daemon/src/sense-worker.ts | 2 +- packages/daemon/src/workflow-manager.ts | 3 +- packages/store/package.json | 24 ++++++ packages/store/rslib.config.ts | 19 ++++ .../src/__tests__/blob-store.test.ts | 0 .../src/__tests__/log-archive.test.ts | 0 .../src/__tests__/log-store-archive.test.ts | 0 .../log-store-crash-recovery.test.ts | 0 .../src/__tests__/log-store-workflow.test.ts | 0 .../src/__tests__/log-store.test.ts | 0 packages/{daemon => store}/src/blob-store.ts | 0 packages/store/src/index.ts | 16 ++++ packages/{daemon => store}/src/log-archive.ts | 0 packages/{daemon => store}/src/log-store.ts | 0 packages/store/tsconfig.json | 9 ++ pnpm-lock.yaml | 25 +++++- tsconfig.json | 1 + 32 files changed, 123 insertions(+), 198 deletions(-) delete mode 100644 packages/cli/src/__tests__/daemon-types.test.ts delete mode 100644 packages/cli/src/daemon-types.ts create mode 100644 packages/store/package.json create mode 100644 packages/store/rslib.config.ts rename packages/{daemon => store}/src/__tests__/blob-store.test.ts (100%) rename packages/{daemon => store}/src/__tests__/log-archive.test.ts (100%) rename packages/{daemon => store}/src/__tests__/log-store-archive.test.ts (100%) rename packages/{daemon => store}/src/__tests__/log-store-crash-recovery.test.ts (100%) rename packages/{daemon => store}/src/__tests__/log-store-workflow.test.ts (100%) rename packages/{daemon => store}/src/__tests__/log-store.test.ts (100%) rename packages/{daemon => store}/src/blob-store.ts (100%) create mode 100644 packages/store/src/index.ts rename packages/{daemon => store}/src/log-archive.ts (100%) rename packages/{daemon => store}/src/log-store.ts (100%) create mode 100644 packages/store/tsconfig.json diff --git a/packages/cli/package.json b/packages/cli/package.json index 520ebc4..5a666cc 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -21,13 +21,13 @@ }, "dependencies": { "@uncaged/nerve-core": "workspace:*", + "@uncaged/nerve-store": "workspace:*", "citty": "^0.1.6", "yaml": "^2.8.3" }, "devDependencies": { "@rslib/core": "^0.21.3", "@types/node": "^22.0.0", - "@uncaged/nerve-daemon": "workspace:*", "vitest": "^4.1.5" } } diff --git a/packages/cli/rslib.config.ts b/packages/cli/rslib.config.ts index 60863bc..5e66a79 100644 --- a/packages/cli/rslib.config.ts +++ b/packages/cli/rslib.config.ts @@ -20,6 +20,6 @@ export default defineConfig({ output: { target: "node", cleanDistPath: true, - externals: ["@uncaged/nerve-daemon"], + externals: ["@uncaged/nerve-daemon", "@uncaged/nerve-store"], }, }); diff --git a/packages/cli/src/__tests__/daemon-types.test.ts b/packages/cli/src/__tests__/daemon-types.test.ts deleted file mode 100644 index a3e6179..0000000 --- a/packages/cli/src/__tests__/daemon-types.test.ts +++ /dev/null @@ -1,80 +0,0 @@ -/** - * Compile-time check: daemon-types.ts stays in sync with @uncaged/nerve-daemon exports. - * If the daemon package changes its public API, this file will fail to compile. - */ - -import type { SenseInfo } from "@uncaged/nerve-core"; -import type { - ArchiveLogsDayResult as DaemonArchiveLogsDayResult, - ArchiveLogsOptions as DaemonArchiveLogsOptions, - ArchiveLogsResult as DaemonArchiveLogsResult, - LogEntry as DaemonLogEntry, - LogQuery as DaemonLogQuery, - LogStore as DaemonLogStore, - SenseInfo as DaemonSenseInfo, - WorkflowRun as DaemonWorkflowRun, - WorkflowRunStatus as DaemonWorkflowRunStatus, -} from "@uncaged/nerve-daemon"; -import { describe, expectTypeOf, it } from "vitest"; - -import type { - ArchiveLogsDayResult, - ArchiveLogsOptions, - ArchiveLogsResult, - LogEntry, - LogQuery, - LogStore, - WorkflowRun, - WorkflowRunStatus, -} from "../daemon-types.js"; - -describe("daemon-types drift guard", () => { - it("SenseInfo matches daemon package export (list-senses IPC)", () => { - expectTypeOf().toMatchTypeOf(); - expectTypeOf().toMatchTypeOf(); - }); - - it("WorkflowRunStatus is assignable both ways", () => { - expectTypeOf().toMatchTypeOf(); - expectTypeOf().toMatchTypeOf(); - }); - - it("WorkflowRun is assignable both ways", () => { - expectTypeOf().toMatchTypeOf(); - expectTypeOf().toMatchTypeOf(); - }); - - it("LogEntry is assignable both ways", () => { - expectTypeOf().toMatchTypeOf(); - expectTypeOf().toMatchTypeOf(); - }); - - it("LogQuery is assignable both ways", () => { - expectTypeOf().toMatchTypeOf(); - expectTypeOf().toMatchTypeOf(); - }); - - it("LogStore has all required methods", () => { - expectTypeOf().toMatchTypeOf< - Pick< - DaemonLogStore, - | "query" - | "getWorkflowRun" - | "getActiveWorkflowRuns" - | "getAllWorkflowRuns" - | "upsertWorkflowRun" - | "archiveLogs" - | "close" - > - >(); - }); - - it("ArchiveLogs types match daemon", () => { - expectTypeOf().toMatchTypeOf(); - expectTypeOf().toMatchTypeOf(); - expectTypeOf().toMatchTypeOf(); - expectTypeOf().toMatchTypeOf(); - expectTypeOf().toMatchTypeOf(); - expectTypeOf().toMatchTypeOf(); - }); -}); diff --git a/packages/cli/src/__tests__/workflow.test.ts b/packages/cli/src/__tests__/workflow.test.ts index 0ea583b..ca83b25 100644 --- a/packages/cli/src/__tests__/workflow.test.ts +++ b/packages/cli/src/__tests__/workflow.test.ts @@ -12,7 +12,7 @@ import { createServer } from "node:net"; import { tmpdir } from "node:os"; import { join } from "node:path"; -import { createLogStore } from "@uncaged/nerve-daemon"; +import { createLogStore } from "@uncaged/nerve-store"; import { afterEach, beforeEach, describe, expect, it } from "vitest"; import { @@ -28,7 +28,7 @@ import { statusIcon, } from "../commands/workflow.js"; import { triggerWorkflowViaDaemon } from "../daemon-client.js"; -import type { LogStore, ThreadRoundRow, WorkflowRun } from "../daemon-types.js"; +import type { LogStore, ThreadRoundRow, WorkflowRun } from "@uncaged/nerve-store"; // --------------------------------------------------------------------------- // Test helpers diff --git a/packages/cli/src/commands/workflow.ts b/packages/cli/src/commands/workflow.ts index 29797f0..3cf2744 100644 --- a/packages/cli/src/commands/workflow.ts +++ b/packages/cli/src/commands/workflow.ts @@ -5,7 +5,7 @@ import { defineCommand } from "citty"; import { stringify } from "yaml"; import { triggerWorkflowViaDaemon } from "../daemon-client.js"; -import type { LogStore, ThreadRoundRow, WorkflowRun } from "../daemon-types.js"; +import type { LogStore, ThreadRoundRow, WorkflowRun } from "@uncaged/nerve-store"; import { loadDaemonModule } from "../workspace-daemon.js"; import { getNerveRoot, getSocketPath, isRunning } from "../workspace.js"; diff --git a/packages/cli/src/daemon-types.ts b/packages/cli/src/daemon-types.ts deleted file mode 100644 index e30d149..0000000 --- a/packages/cli/src/daemon-types.ts +++ /dev/null @@ -1,86 +0,0 @@ -/** - * Structural types for workflow CLI — mirrors @uncaged/nerve-daemon log-store - * public API so the CLI runtime does not statically depend on the daemon package. - * - * ⚠️ Keep in sync with @uncaged/nerve-daemon exports. - * Run `pnpm --filter @uncaged/nerve-cli test` to catch drift via satisfies assertions. - */ - -export type WorkflowRunStatus = - | "queued" - | "started" - | "completed" - | "failed" - | "crashed" - | "dropped" - | "interrupted"; - -export type WorkflowRun = { - runId: string; - workflow: string; - status: WorkflowRunStatus; - ts: number; -}; - -export type LogEntry = { - id?: number; - source: string; - type: string; - refId: string | null; - payload: string | null; - ts: number; -}; - -export type LogQuery = { - source?: string; - type?: string; - refId?: string; - since?: number; - until?: number; - limit?: number; -}; - -export type ArchiveLogsOptions = { - now?: number; - vacuum?: boolean; - maxDays?: number; - retentionMs?: number; -}; - -export type ArchiveLogsDayResult = { - day: string; - rowCount: number; - filePath: string; -}; - -export type ArchiveLogsResult = { - days: ArchiveLogsDayResult[]; - vacuumed: boolean; -}; - -/** One role round row — keep in sync with daemon `log-store` `ThreadRoundRow`. */ -export type ThreadRoundRow = { - round: number; - logId: number; - ts: number; - message: { role: string; content: string; meta: unknown; timestamp: number }; -}; - -/** Keep in sync with daemon `log-store` `GetThreadRoundsParams`. */ -export type GetThreadRoundsParams = { - before: number; - limit: number; -}; - -/** Subset of daemon LogStore used by the CLI workflow commands. */ -export type LogStore = { - query: (filter?: LogQuery) => LogEntry[]; - getWorkflowRun: (runId: string) => WorkflowRun | null; - getActiveWorkflowRuns: (workflowName?: string) => WorkflowRun[]; - getAllWorkflowRuns: (workflowName: string | null) => WorkflowRun[]; - upsertWorkflowRun: (entry: Omit, run: WorkflowRun) => LogEntry; - getThreadRoundCount: (runId: string) => number; - getThreadRounds: (runId: string, params: GetThreadRoundsParams) => ThreadRoundRow[]; - archiveLogs: (options?: ArchiveLogsOptions) => ArchiveLogsResult; - close: () => void; -}; diff --git a/packages/cli/src/workspace-daemon.ts b/packages/cli/src/workspace-daemon.ts index 2abcd17..c61128f 100644 --- a/packages/cli/src/workspace-daemon.ts +++ b/packages/cli/src/workspace-daemon.ts @@ -5,7 +5,7 @@ import { pathToFileURL } from "node:url"; import type { NerveConfig } from "@uncaged/nerve-core"; -import type { LogStore } from "./daemon-types.js"; +import type { LogStore } from "@uncaged/nerve-store"; export function getDaemonEntryPath(nerveRoot: string): string | undefined { const pkgPath = join(nerveRoot, "node_modules", "@uncaged", "nerve-daemon", "package.json"); @@ -29,7 +29,7 @@ export function assertWorkspaceDaemonInstalled(nerveRoot: string): string { return entry; } -/** Loaded from ~/.uncaged-nerve/node_modules at runtime — keep types structural only. */ +/** Loaded from ~/.uncaged-nerve/node_modules at runtime. */ export type DaemonModule = { createKernel: ( config: NerveConfig, diff --git a/packages/daemon/package.json b/packages/daemon/package.json index ca2272d..7d92b47 100644 --- a/packages/daemon/package.json +++ b/packages/daemon/package.json @@ -15,6 +15,7 @@ }, "dependencies": { "@uncaged/nerve-core": "workspace:*", + "@uncaged/nerve-store": "workspace:*", "drizzle-orm": "1.0.0-beta.23-c10d10c", "yaml": "^2.8.3" }, diff --git a/packages/daemon/src/__tests__/kernel.test.ts b/packages/daemon/src/__tests__/kernel.test.ts index e14e401..05802e0 100644 --- a/packages/daemon/src/__tests__/kernel.test.ts +++ b/packages/daemon/src/__tests__/kernel.test.ts @@ -47,7 +47,7 @@ vi.mock("node:child_process", () => ({ // Import after mock is set up const { createKernel } = await import("../kernel.js"); -const { createLogStore } = await import("../log-store.js"); +const { createLogStore } = await import("@uncaged/nerve-store"); // --------------------------------------------------------------------------- // Helpers diff --git a/packages/daemon/src/__tests__/log-store-integration.test.ts b/packages/daemon/src/__tests__/log-store-integration.test.ts index 5b36249..1a06eb2 100644 --- a/packages/daemon/src/__tests__/log-store-integration.test.ts +++ b/packages/daemon/src/__tests__/log-store-integration.test.ts @@ -4,8 +4,8 @@ import { join } from "node:path"; import { afterEach, beforeEach, describe, expect, it, vi } from "vitest"; import type { NerveConfig, Signal } from "@uncaged/nerve-core"; -import { createLogStore } from "../log-store.js"; -import type { LogStore } from "../log-store.js"; +import { createLogStore } from "@uncaged/nerve-store"; +import type { LogStore } from "@uncaged/nerve-store"; import { createReflexScheduler } from "../reflex-scheduler.js"; import { createSignalBus } from "../signal-bus.js"; diff --git a/packages/daemon/src/__tests__/sense-runtime.test.ts b/packages/daemon/src/__tests__/sense-runtime.test.ts index 1aed4b7..32258c0 100644 --- a/packages/daemon/src/__tests__/sense-runtime.test.ts +++ b/packages/daemon/src/__tests__/sense-runtime.test.ts @@ -7,7 +7,7 @@ import { drizzle } from "drizzle-orm/node-sqlite"; import { integer, real, sqliteTable } from "drizzle-orm/sqlite-core"; import { describe, expect, it } from "vitest"; -import { createBlobStore } from "../blob-store.js"; +import { createBlobStore } from "@uncaged/nerve-store"; import { parseParentMessage } from "../ipc.js"; import { executeCompute, openPeerDb, openSenseDb, runMigrations } from "../sense-runtime.js"; import type { ComputeFn, DrizzleDB, PeerMap, SenseRuntime } from "../sense-runtime.js"; diff --git a/packages/daemon/src/index.ts b/packages/daemon/src/index.ts index ea5bd36..e29a2a4 100644 --- a/packages/daemon/src/index.ts +++ b/packages/daemon/src/index.ts @@ -35,22 +35,25 @@ export type { SenseInfo } from "./daemon-ipc.js"; export { createFileWatcher } from "./file-watcher.js"; export type { FileWatcher, FileChange, FileChangeHandler } from "./file-watcher.js"; -export { createBlobStore, normalizeBlobHash } from "./blob-store.js"; -export type { BlobStore } from "./blob-store.js"; - -export { createLogStore, LOG_ARCHIVE_META_KEY } from "./log-store.js"; +export { + createBlobStore, + createLogStore, + LOG_ARCHIVE_META_KEY, + normalizeBlobHash, +} from "@uncaged/nerve-store"; export type { - LogStore, - LogEntry, - LogQuery, - WorkflowRun, - WorkflowRunStatus, ArchiveLogsDayResult, ArchiveLogsOptions, ArchiveLogsResult, - ThreadRoundRow, + BlobStore, GetThreadRoundsParams, -} from "./log-store.js"; + LogEntry, + LogQuery, + LogStore, + ThreadRoundRow, + WorkflowRun, + WorkflowRunStatus, +} from "@uncaged/nerve-store"; export { createWorkflowManager } from "./workflow-manager.js"; export type { WorkflowManager } from "./workflow-manager.js"; diff --git a/packages/daemon/src/kernel.ts b/packages/daemon/src/kernel.ts index ddc6aee..0a921a2 100644 --- a/packages/daemon/src/kernel.ts +++ b/packages/daemon/src/kernel.ts @@ -27,8 +27,8 @@ import { createFileWatcher } from "./file-watcher.js"; import type { FileWatcher } from "./file-watcher.js"; import type { ComputeMessage, ShutdownMessage } from "./ipc.js"; import { parseWorkerMessage } from "./ipc.js"; -import { createLogStore } from "./log-store.js"; -import type { LogStore } from "./log-store.js"; +import { createLogStore } from "@uncaged/nerve-store"; +import type { LogStore } from "@uncaged/nerve-store"; import { createReflexScheduler } from "./reflex-scheduler.js"; import type { ReflexScheduler } from "./reflex-scheduler.js"; import { createSignalBus } from "./signal-bus.js"; diff --git a/packages/daemon/src/reflex-scheduler.ts b/packages/daemon/src/reflex-scheduler.ts index d1c416d..2bf2060 100644 --- a/packages/daemon/src/reflex-scheduler.ts +++ b/packages/daemon/src/reflex-scheduler.ts @@ -10,7 +10,7 @@ */ import type { NerveConfig } from "@uncaged/nerve-core"; -import type { LogStore } from "./log-store.js"; +import type { LogStore } from "@uncaged/nerve-store"; import type { SignalBus, Unsubscribe } from "./signal-bus.js"; /** Sends a compute message to the worker responsible for the given sense. */ diff --git a/packages/daemon/src/sense-runtime.ts b/packages/daemon/src/sense-runtime.ts index 643e1cb..9d4d9cb 100644 --- a/packages/daemon/src/sense-runtime.ts +++ b/packages/daemon/src/sense-runtime.ts @@ -8,7 +8,7 @@ import type { NodeSQLiteDatabase } from "drizzle-orm/node-sqlite"; import type { Result } from "@uncaged/nerve-core"; import { err, ok } from "@uncaged/nerve-core"; -import type { BlobStore } from "./blob-store.js"; +import type { BlobStore } from "@uncaged/nerve-store"; /** A Drizzle DB instance (schema-generic) */ export type DrizzleDB = NodeSQLiteDatabase>; diff --git a/packages/daemon/src/sense-worker.ts b/packages/daemon/src/sense-worker.ts index 29fb094..d726c83 100644 --- a/packages/daemon/src/sense-worker.ts +++ b/packages/daemon/src/sense-worker.ts @@ -20,7 +20,7 @@ import { join, resolve } from "node:path"; import { parseNerveConfig } from "@uncaged/nerve-core"; import type { NerveConfig } from "@uncaged/nerve-core"; -import { createBlobStore } from "./blob-store.js"; +import { createBlobStore } from "@uncaged/nerve-store"; import type { WorkerToParentMessage } from "./ipc.js"; import { parseParentMessage } from "./ipc.js"; import { executeCompute, loadComputeFn, openPeerDb, openSenseDb } from "./sense-runtime.js"; diff --git a/packages/daemon/src/workflow-manager.ts b/packages/daemon/src/workflow-manager.ts index d7388df..f8f19e1 100644 --- a/packages/daemon/src/workflow-manager.ts +++ b/packages/daemon/src/workflow-manager.ts @@ -21,8 +21,7 @@ import type { ThreadEventMessage, } from "./ipc.js"; import { parseWorkerMessage } from "./ipc.js"; -import type { LogStore } from "./log-store.js"; -import type { WorkflowRunStatus } from "./log-store.js"; +import type { LogStore, WorkflowRunStatus } from "@uncaged/nerve-store"; import { formatCapturedStderrTail, formatChildExitSummary, diff --git a/packages/store/package.json b/packages/store/package.json new file mode 100644 index 0000000..6e6da29 --- /dev/null +++ b/packages/store/package.json @@ -0,0 +1,24 @@ +{ + "name": "@uncaged/nerve-store", + "version": "0.3.0", + "type": "module", + "main": "dist/index.js", + "types": "dist/index.d.ts", + "files": ["dist"], + "publishConfig": { + "access": "public" + }, + "scripts": { + "prepublishOnly": "bash ../../scripts/prepublish-check.sh", + "build": "rslib build", + "test": "vitest run" + }, + "dependencies": { + "@uncaged/nerve-core": "workspace:*" + }, + "devDependencies": { + "@rslib/core": "^0.21.3", + "@types/node": "^22.0.0", + "vitest": "^4.1.5" + } +} diff --git a/packages/store/rslib.config.ts b/packages/store/rslib.config.ts new file mode 100644 index 0000000..87bb8a3 --- /dev/null +++ b/packages/store/rslib.config.ts @@ -0,0 +1,19 @@ +import { defineConfig } from "@rslib/core"; + +export default defineConfig({ + lib: [ + { + format: "esm", + dts: true, + }, + ], + source: { + entry: { + index: "src/index.ts", + }, + }, + output: { + target: "node", + cleanDistPath: true, + }, +}); diff --git a/packages/daemon/src/__tests__/blob-store.test.ts b/packages/store/src/__tests__/blob-store.test.ts similarity index 100% rename from packages/daemon/src/__tests__/blob-store.test.ts rename to packages/store/src/__tests__/blob-store.test.ts diff --git a/packages/daemon/src/__tests__/log-archive.test.ts b/packages/store/src/__tests__/log-archive.test.ts similarity index 100% rename from packages/daemon/src/__tests__/log-archive.test.ts rename to packages/store/src/__tests__/log-archive.test.ts diff --git a/packages/daemon/src/__tests__/log-store-archive.test.ts b/packages/store/src/__tests__/log-store-archive.test.ts similarity index 100% rename from packages/daemon/src/__tests__/log-store-archive.test.ts rename to packages/store/src/__tests__/log-store-archive.test.ts diff --git a/packages/daemon/src/__tests__/log-store-crash-recovery.test.ts b/packages/store/src/__tests__/log-store-crash-recovery.test.ts similarity index 100% rename from packages/daemon/src/__tests__/log-store-crash-recovery.test.ts rename to packages/store/src/__tests__/log-store-crash-recovery.test.ts diff --git a/packages/daemon/src/__tests__/log-store-workflow.test.ts b/packages/store/src/__tests__/log-store-workflow.test.ts similarity index 100% rename from packages/daemon/src/__tests__/log-store-workflow.test.ts rename to packages/store/src/__tests__/log-store-workflow.test.ts diff --git a/packages/daemon/src/__tests__/log-store.test.ts b/packages/store/src/__tests__/log-store.test.ts similarity index 100% rename from packages/daemon/src/__tests__/log-store.test.ts rename to packages/store/src/__tests__/log-store.test.ts diff --git a/packages/daemon/src/blob-store.ts b/packages/store/src/blob-store.ts similarity index 100% rename from packages/daemon/src/blob-store.ts rename to packages/store/src/blob-store.ts diff --git a/packages/store/src/index.ts b/packages/store/src/index.ts new file mode 100644 index 0000000..3159f53 --- /dev/null +++ b/packages/store/src/index.ts @@ -0,0 +1,16 @@ +/** + * @uncaged/nerve-store — append-only log storage, cold-archive helpers, CAS blob store. + */ + +export * from "./blob-store.js"; +export * from "./log-archive.js"; +export { createLogStore } from "./log-store.js"; +export type { + GetThreadRoundsParams, + LogEntry, + LogQuery, + LogStore, + ThreadRoundRow, + WorkflowRun, + WorkflowRunStatus, +} from "./log-store.js"; diff --git a/packages/daemon/src/log-archive.ts b/packages/store/src/log-archive.ts similarity index 100% rename from packages/daemon/src/log-archive.ts rename to packages/store/src/log-archive.ts diff --git a/packages/daemon/src/log-store.ts b/packages/store/src/log-store.ts similarity index 100% rename from packages/daemon/src/log-store.ts rename to packages/store/src/log-store.ts diff --git a/packages/store/tsconfig.json b/packages/store/tsconfig.json new file mode 100644 index 0000000..9036088 --- /dev/null +++ b/packages/store/tsconfig.json @@ -0,0 +1,9 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "outDir": "dist", + "rootDir": "src", + "composite": false + }, + "include": ["src"] +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index b83ffc4..67546bd 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -23,6 +23,9 @@ importers: '@uncaged/nerve-core': specifier: workspace:* version: link:../core + '@uncaged/nerve-store': + specifier: workspace:* + version: link:../store citty: specifier: ^0.1.6 version: 0.1.6 @@ -36,9 +39,6 @@ importers: '@types/node': specifier: ^22.0.0 version: 22.19.17 - '@uncaged/nerve-daemon': - specifier: workspace:* - version: link:../daemon vitest: specifier: ^4.1.5 version: 4.1.5(@types/node@22.19.17)(vite@8.0.9(@types/node@22.19.17)(esbuild@0.27.7)(yaml@2.8.3)) @@ -61,6 +61,9 @@ importers: '@uncaged/nerve-core': specifier: workspace:* version: link:../core + '@uncaged/nerve-store': + specifier: workspace:* + version: link:../store drizzle-orm: specifier: 1.0.0-beta.23-c10d10c version: 1.0.0-beta.23-c10d10c(@types/better-sqlite3@7.6.13)(@types/mssql@9.1.11(@azure/core-client@1.10.1))(better-sqlite3@11.10.0)(mssql@11.0.1(@azure/core-client@1.10.1))(sql.js@1.14.1) @@ -78,6 +81,22 @@ importers: specifier: ^4.1.5 version: 4.1.5(@types/node@22.19.17)(vite@8.0.9(@types/node@22.19.17)(esbuild@0.27.7)(yaml@2.8.3)) + packages/store: + dependencies: + '@uncaged/nerve-core': + specifier: workspace:* + version: link:../core + devDependencies: + '@rslib/core': + specifier: ^0.21.3 + version: 0.21.3(typescript@5.9.3) + '@types/node': + specifier: ^22.0.0 + version: 22.19.17 + vitest: + specifier: ^4.1.5 + version: 4.1.5(@types/node@22.19.17)(vite@8.0.9(@types/node@22.19.17)(esbuild@0.27.7)(yaml@2.8.3)) + packages: '@ast-grep/napi-darwin-arm64@0.37.0': diff --git a/tsconfig.json b/tsconfig.json index b43e7c1..1cbbe08 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -17,6 +17,7 @@ }, "references": [ { "path": "packages/core" }, + { "path": "packages/store" }, { "path": "packages/cli" }, { "path": "packages/daemon" } ]