fix(session-query): harden SQLite search reconciliation

This commit is contained in:
Hypatia May
2026-07-15 12:10:24 +08:00
parent ecf90ff382
commit f88ca85ffd
40 changed files with 1315 additions and 227 deletions
+8 -4
View File
@@ -58,19 +58,23 @@ export interface SessionEventSearchDocument extends SessionEventRecord {
}
```
`ctx.sessionQuery.filterEvents(sessionId, filters)` returns these documents in ascending seq order. Messages, reasoning, tool calls/results, blocked prompts, todos, and failure/status detail contribute semantic text; structural events and stream chunks do not.
`ctx.sessionQuery.filterSessions(filters)` applies `SessionResultFilter` to the complete logical corpus; `ctx.sessionQuery.filterEvents(sessionId, filters)` returns matching documents in ascending seq order. Messages, reasoning, tool calls/results, blocked prompts, todos, and failure/status detail contribute semantic text; structural events and stream chunks do not.
## Full-text search pages
The independent `ctx.sessionSearch` seam has two scopes. `searchSessions()` groups the corpus by strongest matching event; `searchEvents()` searches one session. Requests bind an opaque cursor to the normalized query, metadata filters, and limit. The event text scan is intentionally absent from provider metadata filters.
```ts type-equiv
export type SessionSearchCursor = Branded<'SessionSearchCursor'>
```
```ts type-equiv
export interface SessionSearchRequest {
query: string
sessionFilters?: readonly SessionResultFilter[]
eventFilters?: readonly SessionEventMetadataFilter[]
limit?: number
cursor?: string
cursor?: SessionSearchCursor
}
```
@@ -80,14 +84,14 @@ export interface SessionEventSearchRequest {
query: string
filters?: readonly SessionEventMetadataFilter[]
limit?: number
cursor?: string
cursor?: SessionSearchCursor
}
```
```ts type-equiv
export interface SessionSearchPage<T> {
items: readonly T[]
nextCursor?: string
nextCursor?: SessionSearchCursor
}
```