Files
25e69c0f69 feat(daemon): expose last user prompt time and session sorting (#14654)
* feat(daemon): expose last user prompt time in session summaries

* fix(daemon): keep last user prompt metadata hot

* feat(daemon): support last-question session sorting

* test(ci): align session sort capabilities and admission waits

* test(managed-agent): use the managed store in row lock test

* fix(daemon): isolate prompt-time reads and gate sorting on presence

An unreadable transcript must not fail a whole session list or the status
route: the reader deliberately throws when a snapshot is replaced mid-read,
so degrade the single row instead, keeping abort semantics intact.

The SDK forwarded any defined sortBy while only pre-flighting the non-default
value, so `sortBy: 'updatedAt'` reached daemons whose query allowlist and
strict catalog schema reject the parameter itself. Gate on presence.

Also parse the cursor before enriching, so a cross-sort cursor is rejected
without scanning every transcript, and drop the pagination cursor when a
sort change discards the loaded pages.

* fix(sessions): keep question sort consistent across hosts and pages (#14654)

Fan-out host groups now read their own stored sort and only ask for
question ordering when that host advertises it. Organized pagination
keeps an unknown-time live-only row reachable on later pages, and the
sort control falls back to the projects header when the brand row is
hidden.

Add witnesses for the warm-cache ownership gate, the numeric-timestamp
case, and the bridge notification/registration wiring.

* fix(sessions): pin question-order paging and drop unrelated Java churn (#14654)

The metadata page cursor now has a witness that ties its boundary key to
sortBy instead of activity time. Restore two runtime-broker files to the
merge-base content so the PR no longer carries unrelated line wrapping.

* test(core): pin that the numeric-timestamp case really parses

The cache reset added for this case is itself unobserved: removing it leaves
the whole reader suite green, because the assertion is then satisfied by the
previously cached undefined snapshot. Assert the index was rebuilt once, so
dropping the reset turns the case red instead of silently making it vacuous.

* fix(sdk-typescript): keep sortBy session lists on native REST (#14654)

The ACP session/list mapping drops sortBy, so a client with an ACP
transport received updatedAt order after the capability pre-flight
succeeded. Force native REST whenever sortBy is requested, mirroring
liveOnly, and pin the routing with a DaemonClient test.

Also cover archived question-time sorting in the CLI session-list suite,
where the archived transcript is the source of truth.

Co-authored-by: Qwen-Coder <[email protected]>

---------

Co-authored-by: yungsen.hys <[email protected]>
Co-authored-by: Shaojin Wen <[email protected]>
Co-authored-by: qwen-code-dev-bot <[email protected]>
Co-authored-by: Qwen-Coder <[email protected]>
2026-11-08 14:29:35 +00:00
..