refactor: apply repository naming contract

Apply the accepted pre-release package, service, type, directory, and role renames as one repository-wide change.
This commit is contained in:
Tianyi Cui
2026-08-13 00:36:22 +08:00
parent 101df7cf58
commit a2d0f7f411
3281 changed files with 21730 additions and 21592 deletions

View File

@@ -8,7 +8,7 @@ import { dirname, join } from 'node:path'
import { DatabaseSync } from 'node:sqlite'
import SessionStore, { SessionId } from '@deepseek-ai/dsh-session'
import type { Session, SessionEvent, SurfaceEvent, SurfaceEventType } from '@deepseek-ai/dsh-session'
import SessionPersistenceSqlite, { SCHEMA_VERSION } from '@deepseek-ai/dsh-session-persistence-sqlite'
import SqliteSessionPersistence, { SCHEMA_VERSION } from '@deepseek-ai/dsh-session-persistence-sqlite'
import {
openDatabase,
rowToEvent,
@@ -44,7 +44,7 @@ async function freshDbPath(): Promise<string> {
async function backend(path = ':memory:'): Promise<{ ctx: Context; dispose: () => Promise<void> }> {
const ctx = new Context()
await ctx.plugin(SessionStore)
const fiber = await ctx.plugin(SessionPersistenceSqlite, { path })
const fiber = await ctx.plugin(SqliteSessionPersistence, { path })
return { ctx, dispose: () => fiber.dispose() }
}
@@ -52,7 +52,7 @@ async function backend(path = ':memory:'): Promise<{ ctx: Context; dispose: () =
runPersistenceContract('sqlite', async () => {
const ctx = new Context()
await ctx.plugin(SessionStore)
const fiber = await ctx.plugin(SessionPersistenceSqlite, { path: ':memory:' })
const fiber = await ctx.plugin(SqliteSessionPersistence, { path: ':memory:' })
return {
persistence: ctx.sessionPersistence,
dispose: async () => { await fiber.dispose() },
@@ -65,7 +65,7 @@ runCoordinatorContract('sqlite', async (): Promise<CoordinatorFixture> => {
const dir = await mkdtemp(join(tmpdir(), 'dsh-sqlite-coord-'))
const path = join(dir, 'sessions.db')
return {
mount: async ctx => ctx.plugin(SessionPersistenceSqlite, { path }),
mount: async ctx => ctx.plugin(SqliteSessionPersistence, { path }),
corruptTail: async (id) => {
// A row past the committed region whose `data` does not parse: scanRows
// bounds the preserved prefix at it and returns its seq as tornFrom, which
@@ -212,7 +212,7 @@ describe('rowToMeta', () => {
})
})
describe('SessionPersistenceSqlite: durability and crash semantics', () => {
describe('SqliteSessionPersistence: durability and crash semantics', () => {
it('rejects a stored v0 log containing a legacy request/header-delta event', async () => {
const path = await freshDbPath()
const m = meta('legacy-header-delta', '/legacy')
@@ -261,7 +261,7 @@ describe('SessionPersistenceSqlite: durability and crash semantics', () => {
// Run 1: persist a complete turn, then a half-written second turn (no turn/end).
const ctx1 = new Context()
await ctx1.plugin(SessionStore)
const fiber1 = await ctx1.plugin(SessionPersistenceSqlite, { path })
const fiber1 = await ctx1.plugin(SqliteSessionPersistence, { path })
await ctx1.sessionPersistence.create(m)
await ctx1.sessionPersistence.append(m.id, oneTurnLog())
await ctx1.sessionPersistence.append(m.id, [
@@ -275,7 +275,7 @@ describe('SessionPersistenceSqlite: durability and crash semantics', () => {
// events: step/end (the step was open) then turn/end {interrupted}.
const ctx2 = new Context()
await ctx2.plugin(SessionStore)
const fiber2 = await ctx2.plugin(SessionPersistenceSqlite, { path })
const fiber2 = await ctx2.plugin(SqliteSessionPersistence, { path })
const loaded = await ctx2.sessionPersistence.load(m.id)
expect(loaded.events.map(e => e.type)).toEqual([
'turn/start', 'user/message', 'step/start', 'assistant/message', 'step/end', 'turn/end', // turn 1
@@ -525,7 +525,7 @@ describe('SessionPersistenceSqlite: durability and crash semantics', () => {
it('append rolls back the whole batch on a mid-batch seq collision (transaction)', async () => {
const ctx = new Context()
await ctx.plugin(SessionStore)
const fiber = await ctx.plugin(SessionPersistenceSqlite, { path: ':memory:' })
const fiber = await ctx.plugin(SqliteSessionPersistence, { path: ':memory:' })
const m = meta('rollback')
await ctx.sessionPersistence.create(m)
await ctx.sessionPersistence.append(m.id, oneTurnLog()) // seqs 0..5
@@ -544,14 +544,14 @@ describe('SessionPersistenceSqlite: durability and crash semantics', () => {
const m = meta('persist', '/proj')
const ctx1 = new Context()
await ctx1.plugin(SessionStore)
const fiber1 = await ctx1.plugin(SessionPersistenceSqlite, { path })
const fiber1 = await ctx1.plugin(SqliteSessionPersistence, { path })
await ctx1.sessionPersistence.create(m)
await ctx1.sessionPersistence.append(m.id, oneTurnLog())
await fiber1.dispose()
const ctx2 = new Context()
await ctx2.plugin(SessionStore)
const fiber2 = await ctx2.plugin(SessionPersistenceSqlite, { path })
const fiber2 = await ctx2.plugin(SqliteSessionPersistence, { path })
expect((await ctx2.sessionPersistence.list()).map(x => x.id)).toContain(m.id)
const loaded = await ctx2.sessionPersistence.load(m.id)
expect(loaded.meta).toMatchObject({ id: m.id, cwd: '/proj' })
@@ -602,7 +602,7 @@ describe('SessionPersistenceSqlite: durability and crash semantics', () => {
const m = meta('stored-prefix-revision')
await b.ctx.sessionPersistence.create(m)
await b.ctx.sessionPersistence.append(m.id, oneTurnLog())
const persistence = b.ctx.sessionPersistence as SessionPersistenceSqlite
const persistence = b.ctx.sessionPersistence as SqliteSessionPersistence
const stored = await persistence.loadStored(m.id)
expect(stored?.revision).toBe(await persistence.readStoredRevision(m.id))
@@ -668,19 +668,19 @@ describe('SessionPersistenceSqlite: durability and crash semantics', () => {
await b.ctx.sessionPersistence.create(m)
await b.ctx.sessionPersistence.append(m.id, oneTurnLog())
const before = await b.ctx.sessionPersistence.listSnapshots()
await (b.ctx.sessionPersistence as SessionPersistenceSqlite).commitRepair(m, undefined, [])
await (b.ctx.sessionPersistence as SqliteSessionPersistence).commitRepair(m, undefined, [])
expect(await b.ctx.sessionPersistence.listSnapshots()).toEqual(before)
await b.dispose()
})
})
describe('SessionPersistenceSqlite: edge cases', () => {
describe('SqliteSessionPersistence: edge cases', () => {
it('resolves the preparation-cache default without schema normalization', async () => {
const ctx = new Context()
await ctx.plugin(SessionStore)
let persistence!: SessionPersistenceSqlite
let persistence!: SqliteSessionPersistence
await ctx.plugin(Object.assign((inner: Context) => {
persistence = new SessionPersistenceSqlite(inner, {
persistence = new SqliteSessionPersistence(inner, {
path: ':memory:',
journalMode: 'wal',
})
@@ -693,7 +693,7 @@ describe('SessionPersistenceSqlite: edge cases', () => {
it('uses the configured preparation cache through the public service', async () => {
const ctx = new Context()
await ctx.plugin(SessionStore)
const fiber = await ctx.plugin(SessionPersistenceSqlite, {
const fiber = await ctx.plugin(SqliteSessionPersistence, {
path: ':memory:',
preparedSessionCacheSize: 1,
writeBatchMaxDelayMs: 1,
@@ -740,7 +740,7 @@ describe('SessionPersistenceSqlite: edge cases', () => {
const path = await freshDbPath()
const ctx = new Context()
await ctx.plugin(SessionStore)
const fiber = await ctx.plugin(SessionPersistenceSqlite, { path, journalMode: 'persist' })
const fiber = await ctx.plugin(SqliteSessionPersistence, { path, journalMode: 'persist' })
const m = meta('persist-permissions')
await ctx.sessionPersistence.create(m)
@@ -759,7 +759,7 @@ describe('SessionPersistenceSqlite: edge cases', () => {
const ctx = new Context()
await ctx.plugin(SessionStore)
const fiber = await ctx.plugin(SessionPersistenceSqlite, { path, journalMode: 'delete' })
const fiber = await ctx.plugin(SqliteSessionPersistence, { path, journalMode: 'delete' })
await ctx.sessionPersistence.list()
expect((await stat(path)).mode & 0o777).toBe(0o644)
@@ -815,7 +815,7 @@ describe('SessionPersistenceSqlite: edge cases', () => {
const deletePath = await freshDbPath()
const ctx = new Context()
await ctx.plugin(SessionStore)
const fiber = await ctx.plugin(SessionPersistenceSqlite, { path: deletePath, journalMode: 'delete' })
const fiber = await ctx.plugin(SqliteSessionPersistence, { path: deletePath, journalMode: 'delete' })
await ctx.sessionPersistence.create(meta('jm-delete'))
// Probe through a second connection: journal_mode=delete is a per-database
// property only insofar as no WAL files exist — assert the world, not the
@@ -845,7 +845,7 @@ describe('SessionPersistenceSqlite: edge cases', () => {
session = inner.sessions.create(SessionId('hmr-collide'))
}, { inject: ['sessions'] }))
session.append('turn/start', { turn: 1 })
await ctx.plugin(SessionPersistenceSqlite, { path })
await ctx.plugin(SqliteSessionPersistence, { path })
await expectFlushError(ctx.sessions.flush(session), /id collision/)
await ctx.fiber.dispose()
})
@@ -897,7 +897,7 @@ describe('surface field round-trip', () => {
it('append and load round-trips surface fields through SQLite', async () => {
const ctx = new Context()
await ctx.plugin(SessionStore)
const fiber = await ctx.plugin(SessionPersistenceSqlite, { path: ':memory:' })
const fiber = await ctx.plugin(SqliteSessionPersistence, { path: ':memory:' })
const session = ctx.sessions.create(SessionId('roundtrip-surface'))
session.append('turn/start', { turn: 1 })
session.append('step/start', { turn: 1, step: 1 })
@@ -932,7 +932,7 @@ describe('surface field round-trip', () => {
it('persists events with surfaceOp but no sourceEventSeqs (covers null branch in surfaceBindings)', async () => {
const ctx = new Context()
await ctx.plugin(SessionStore)
const fiber = await ctx.plugin(SessionPersistenceSqlite, { path: ':memory:' })
const fiber = await ctx.plugin(SqliteSessionPersistence, { path: ':memory:' })
const session = ctx.sessions.create(SessionId('surface-noseq'))
session.append('turn/start', { turn: 1 })
session.append('user/message', createUserMessage({