mirror of
https://github.com/deepseek-ai/deepseek-harness.git
synced 2026-09-14 04:01:35 +00:00
Replace the single global session_projcache domain with a per-session cache file inside the session's own persistence directory, resolved through sessionPersistence.locate(meta) — the persistence backend owns the session-directory layout, the cache service keeps every checkpoint and cold-read responsibility. - cachedSnapshot(meta) becomes async (one file read per session); coldSnapshot takes the session header so it can locate the file, with the stored log header remaining the identity witness. - Backends without a per-session directory (sqlite) disable the durable cache: writes no-op and cold reads fall to the full-log rung. An obsolete global cache is never read — derived data refolds on first cold read (no migration). - writeAtomic is exported from dsh-storage-json as the shared atomic whole-file replace primitive; api-proxy listing and subagent cold reads await the now-async cachedSnapshot. - READMEs and a new Agent Note document the per-session medium.
36 lines
1.4 KiB
TypeScript
36 lines
1.4 KiB
TypeScript
/**
|
|
* Package-owned invariant companion for `@deepseek-ai/dsh-session-projection-cache`.
|
|
* @module @deepseek-ai/dsh-session-projection-cache/invariant
|
|
*/
|
|
|
|
/* jscpd:ignore-start */
|
|
import type { Context } from '@deepseek-ai/cordis'
|
|
import type { InvariantInstaller } from '@deepseek-ai/dsh-invariants'
|
|
|
|
const PACKAGE_NAME = '@deepseek-ai/dsh-session-projection-cache'
|
|
|
|
/** Cordis companion plugin name. */
|
|
export const name = 'session-projection-cache-invariant'
|
|
/** Service required before the companion can reserve package ownership. */
|
|
export const inject = ['invariants']
|
|
|
|
/**
|
|
* No runtime invariant: the cache's correctness relation (a stored row equals
|
|
* the registry fold at its `seq` watermark) is only checkable by re-running the
|
|
* fold over the persisted log — duplicating the implementation rather than
|
|
* detecting drift — and its staleness is by design (fail-soft writes). The
|
|
* durable boundary is schema-validated by the cache's own zod parse on every
|
|
* read, and the read ladder's version/watermark guards are proven
|
|
* by the package spec.
|
|
*/
|
|
const install: InvariantInstaller = () => {}
|
|
|
|
/**
|
|
* Register this package's invariant companion.
|
|
* @param ctx - Cordis context carrying the invariant service.
|
|
* @returns the installed registration's disposer after setup succeeds.
|
|
*/
|
|
export const apply = (ctx: Context): Promise<() => void> =>
|
|
Promise.resolve(ctx.invariants.register(PACKAGE_NAME, install))
|
|
/* jscpd:ignore-end */
|