From dc55ece38447587a55d28c3228b5706701b1b445 Mon Sep 17 00:00:00 2001 From: Kit Langton Date: Wed, 20 May 2026 17:07:34 -0400 Subject: [PATCH] refactor(v2): move session storage under storage --- packages/opencode/src/v2/session.ts | 4 ++-- .../storage-memory.ts => storage/session-memory.ts} | 4 ++-- .../v2/{session/storage-sql.ts => storage/session-sql.ts} | 4 ++-- .../src/v2/{session/storage.ts => storage/session.ts} | 2 +- packages/opencode/test/session/prompt.test.ts | 2 +- packages/opencode/test/v2/session-storage.test.ts | 6 +++--- specs/v2/storage-service.md | 2 +- 7 files changed, 12 insertions(+), 12 deletions(-) rename packages/opencode/src/v2/{session/storage-memory.ts => storage/session-memory.ts} (97%) rename packages/opencode/src/v2/{session/storage-sql.ts => storage/session-sql.ts} (98%) rename packages/opencode/src/v2/{session/storage.ts => storage/session.ts} (98%) diff --git a/packages/opencode/src/v2/session.ts b/packages/opencode/src/v2/session.ts index 90f344c131..5b03f4063d 100644 --- a/packages/opencode/src/v2/session.ts +++ b/packages/opencode/src/v2/session.ts @@ -10,8 +10,8 @@ import { optionalOmitUndefined } from "@opencode-ai/core/schema" import { EventV2 } from "@opencode-ai/core/event" import { EventV2Bridge } from "@/event-v2-bridge" import { ModelV2 } from "@opencode-ai/core/model" -import { SessionStorage } from "./session/storage" -import { SessionStorageSql } from "./session/storage-sql" +import { SessionStorage } from "./storage/session" +import { SessionStorageSql } from "./storage/session-sql" export const Delivery = Schema.Literals(["immediate", "deferred"]).annotate({ identifier: "Session.Delivery", diff --git a/packages/opencode/src/v2/session/storage-memory.ts b/packages/opencode/src/v2/storage/session-memory.ts similarity index 97% rename from packages/opencode/src/v2/session/storage-memory.ts rename to packages/opencode/src/v2/storage/session-memory.ts index 13f2b147a9..ecd9d450d5 100644 --- a/packages/opencode/src/v2/session/storage-memory.ts +++ b/packages/opencode/src/v2/storage/session-memory.ts @@ -1,6 +1,6 @@ import { DateTime, Effect, Layer } from "effect" import { SessionMessage } from "@opencode-ai/core/session-message" -import { SessionStorage } from "./storage" +import { SessionStorage } from "./session" export const make = (state: { readonly sessions: Map @@ -98,4 +98,4 @@ function compareRows(aID: string, aTime: number, bID: string, bTime: number, ord return order === "asc" ? result : -result } -export * as SessionStorageMemory from "./storage-memory" +export * as SessionStorageMemory from "./session-memory" diff --git a/packages/opencode/src/v2/session/storage-sql.ts b/packages/opencode/src/v2/storage/session-sql.ts similarity index 98% rename from packages/opencode/src/v2/session/storage-sql.ts rename to packages/opencode/src/v2/storage/session-sql.ts index 6487e1176a..48a6137115 100644 --- a/packages/opencode/src/v2/session/storage-sql.ts +++ b/packages/opencode/src/v2/storage/session-sql.ts @@ -2,7 +2,7 @@ import { SessionMessageTable, SessionTable } from "@/session/session.sql" import { and, asc, Database, desc, eq, gt, gte, isNull, like, lt, or, type SQL } from "@/storage/db" import { SessionMessage } from "@opencode-ai/core/session-message" import { Effect, Layer, Schema } from "effect" -import { SessionStorage } from "./storage" +import { SessionStorage } from "./session" const decodeMessage = Schema.decodeUnknownSync(SessionMessage.Message) const decodeSessionRow = Schema.decodeUnknownSync(SessionStorage.SessionRow) @@ -170,4 +170,4 @@ function fromSessionRow(row: typeof SessionTable.$inferSelect) { }) } -export * as SessionStorageSql from "./storage-sql" +export * as SessionStorageSql from "./session-sql" diff --git a/packages/opencode/src/v2/session/storage.ts b/packages/opencode/src/v2/storage/session.ts similarity index 98% rename from packages/opencode/src/v2/session/storage.ts rename to packages/opencode/src/v2/storage/session.ts index c86289d741..7517b88f77 100644 --- a/packages/opencode/src/v2/session/storage.ts +++ b/packages/opencode/src/v2/storage/session.ts @@ -97,4 +97,4 @@ export function pageOrder(order: SortOrder, direction: PageDirection) { export class Service extends Context.Service()("@opencode/v2/session/Storage") {} -export * as SessionStorage from "./storage" +export * as SessionStorage from "./session" diff --git a/packages/opencode/test/session/prompt.test.ts b/packages/opencode/test/session/prompt.test.ts index ccce5b4015..e30f89d39d 100644 --- a/packages/opencode/test/session/prompt.test.ts +++ b/packages/opencode/test/session/prompt.test.ts @@ -36,7 +36,7 @@ import { SessionRunState } from "../../src/session/run-state" import { MessageID, PartID, SessionID } from "../../src/session/schema" import { SessionStatus } from "../../src/session/status" import { SessionV2 } from "../../src/v2/session" -import { SessionStorageSql } from "../../src/v2/session/storage-sql" +import { SessionStorageSql } from "../../src/v2/storage/session-sql" import { Skill } from "../../src/skill" import { SystemPrompt } from "../../src/session/system" import { Shell } from "../../src/shell/shell" diff --git a/packages/opencode/test/v2/session-storage.test.ts b/packages/opencode/test/v2/session-storage.test.ts index e68730a86c..d03748a048 100644 --- a/packages/opencode/test/v2/session-storage.test.ts +++ b/packages/opencode/test/v2/session-storage.test.ts @@ -4,9 +4,9 @@ import { ProjectTable } from "@/project/project.sql" import { SessionID } from "@/session/schema" import { SessionMessageTable, SessionTable } from "@/session/session.sql" import { Database } from "@/storage/db" -import { SessionStorage } from "@/v2/session/storage" -import { SessionStorageMemory } from "@/v2/session/storage-memory" -import { SessionStorageSql } from "@/v2/session/storage-sql" +import { SessionStorage } from "@/v2/storage/session" +import { SessionStorageMemory } from "@/v2/storage/session-memory" +import { SessionStorageSql } from "@/v2/storage/session-sql" import { EventV2 } from "@opencode-ai/core/event" import { SessionMessage } from "@opencode-ai/core/session-message" import { eq, or } from "@/storage/db" diff --git a/specs/v2/storage-service.md b/specs/v2/storage-service.md index d1fead2996..d289b1d31c 100644 --- a/specs/v2/storage-service.md +++ b/specs/v2/storage-service.md @@ -465,7 +465,7 @@ Avoid leaking Drizzle or SQLite error codes above the storage implementation. Fo The first implementation PR should be small and reversible: -- Add `packages/opencode/src/v2/session/storage.ts` with the `SessionStorage` service shape. +- Add `packages/opencode/src/v2/storage/session.ts` with the `SessionStorage` service shape. - Implement SQL and in-memory read backends for `get`, `list`, `messages`, and `context`. - Refactor `v2/session.ts` to consume `SessionStorage.Service` instead of raw Drizzle calls. - Keep table schemas and existing migrations unchanged.