01
Advance, then query
Refresh only after the projection reports new work instead of polling the full result set.
Agent Primitives /Changes = Reactive advancement
Poll a lightweight advancement feed, then query only when a live view has moved. Changes use the connection you already have and turn wasteful polling into a precise signal.
const feed = await laser
.watch()
.index("orders_v1")
.records()
// await the advance, never re-query blind
let changes = await feed.poll()
while (changes.length === 0) {
await sleep(200)
changes = await feed.poll()
}
for (const change of changes) {
console.log(change.rows, "row(s) landed")
}Primitive guarantees
01
Refresh only after the projection reports new work instead of polling the full result set.
02
Change records describe progress without duplicating the projection data itself.
03
Watch and query through the same SDK boundary already used by the application.
Explore the system
Combine transport, prompt assembly, recall, relationships, and live views without stitching together disconnected systems.