# Conflicts: # docs/cordis-catalog/services.md # docs/rfc/INDEX.md # docs/rfc/implemented/testing/2026-07-06-pin-request-header-content-in-one-scenario.md # docs/rfc/proposed/simplification/2026-07-12-simplify-session-log-representation.md # packages/support/acp-snapshot/README.md # packages/support/acp-snapshot/src/normalize.ts # packages/support/acp-snapshot/src/suite.ts # packages/support/acp-snapshot/tests/fixtures/suite/pin-turn/session.jsonl # packages/support/acp-snapshot/tests/suite.spec.ts
@deepseek-ai/dsh-session-query
Exact session-history retrieval through ctx.sessionQuery. The service presents live ctx.sessions and an optional, dynamically mounted ctx.sessionPersistence as one logical corpus. Matching ids produce one record: live events win, while live and persisted report both source availabilities. Conflicting immutable headers fail with SESSION_QUERY_SOURCE_CONFLICT.
Reads
listSessions()reads current persistence metadata, merges live records with live precedence, and returns cloned records in deterministic newest-first order.listEvents(sessionId)loads the live-preferred raw log and classifies each event ascurrent,shadowed, orlog-onlywith the shareddsh-sessionsurface fold.readEvent(request)returns a cloned header, the full target event, and a bounded raw-seq window.beforeandafterdefault to zero and may not exceedreadWindowMax.
Persistence is optional and may mount or unmount dynamically. A cross-corpus list fails with SESSION_QUERY_PERSISTENCE_FAILED while mounted persistence is unreadable. A read targeting a known live session does not consult persistence, so durable backend health cannot make current in-memory history unreadable. Persisted exact reads list before loading, and reject a metadata mismatch rather than combining inconsistent observations.
SessionQueryError.code is a closed union: SESSION_QUERY_EVENT_NOT_FOUND, SESSION_QUERY_INVALID_CONFIG, SESSION_QUERY_INVALID_SURFACE, SESSION_QUERY_INVALID_WINDOW, SESSION_QUERY_PERSISTENCE_FAILED, SESSION_QUERY_SESSION_NOT_FOUND, and SESSION_QUERY_SOURCE_CONFLICT.
Configuration
| Key | Default | Contract |
|---|---|---|
readWindowMax |
50 |
Maximum before or after raw-event count. |
Model Experience
None, as this trusted query service returns cloned session records only to its callers and registers no model-facing prompt, schema, tool, or message.
Known Limitations and Deferred Work
- No caller authorization — this is trusted context-wide infrastructure; a future model tool or UI must constrain which sessions its caller may inspect.
- Exact retrieval only — filters, lineage/provenance traversal, extraction, search-provider protocol, index synchronization, and a model-facing tool are absent. Full-text search belongs beside its first implementation; the proposed SQLite package and its single transaction/reconciliation owner are described in the phase-two RFC.