• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

lsm / neokai / 25534038034 / 26
82%
dev: 82%

Build:
DEFAULT BRANCH: dev
Ran 08 May 2026 02:58AM UTC
Files 277
Run time 8s
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

08 May 2026 02:56AM UTC coverage: 22.35%. First build
25534038034.26

push

github

web-flow
Replace task_thread_messages projection with derived columns (#1823)

* refactor(storage): replace task_thread_messages projection with derived columns

Replace the SQLite-trigger projection table introduced in PR #1803 with a
simpler scheme that scales linearly with reads instead of write fan-out:

- Add `is_renderable`, `is_terminal`, and `parent_tool_use_id` derived
  columns to `sdk_messages`, populated at write time by the repository.
- Add a `task_session_map` table (task_id, session_id, kind, role, label,
  node_execution_id) maintained at write time by `SpaceTaskRepository`
  (task_agent leg) and `NodeExecutionRepository` (node_agent leg).
- Migration 118 backfills derived columns and rebuilds the map for
  existing data.
- Mark `task_session_map` as an internal projection — excluded from
  agent-visible scopes in `db-query/scope-config.ts`.

This removes the trigger machinery while preserving the same liveQuery
semantics, with single-table reads instead of multi-CTE walks through
sessions/space_agents/node_executions on every evaluation.

* refactor(live-query): simplify turn detection — user message ID as turnId

The task-thread liveQueries previously composed `turnId` from
`session_groups.iteration` plus the row's UUID. That coupled message
grouping to feedback-iteration metadata that the runtime stamps for a
different purpose (tracking review rounds), and required the SQL to
extract a JSON field on every row.

Replace with the simpler model:

- A "turn" = one user message + every subsequent non-user message until
  the next user message (per session).
- `turnId` = the user message's own row ID. Rows that precede any user
  message in their session fall back to their own ID.
- The compact and full liveQuery SQLs derive `turnUserMessageId` per row
  via a window-function CTE and ROW_NUMBER lookup, so the row mappers
  read it as a single column instead of computing it from JSON.

`feedbackIteration` stays in `session_groups` metadata for tra... (continued)

16154 of 72279 relevant lines covered (22.35%)

11.65 hits per line

Source Files on job daemon-online-convo - 25534038034.26
  • Tree
  • List 277
  • Changed 0
  • Source Changed 0
  • Coverage Changed 0
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Build 25534038034
  • 0b79d23f on github
  • Next Job for on dev (#25535179445.10)
  • Delete
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc