KQ-2063 · QUEUED/ASKS

Queued Asks

A composer that keeps taking prompts while the assistant is busy, stacking each as a numbered card above the field; beyond stackDepth they tuck into a deck. When the running answer finishes, the top card peels off and flies into the thread as the new prompt bubble — a shared layout transition on springs.glide that untilts as it lands — while the cards below shuffle up on glide and their numbers roll on springs.snap. Cards drag 1:1 into a new order and settle on snap with the release velocity, or edit in place; Alt with Up or Down reorders, Delete removes, Up in an empty field edits the last card, a failed run pauses the queue, and on a phone the stack collapses to a count you expand.

KQ-2063 · QUEUED/ASKS

Basin storage review

Basinworks · Fernworks Model 3

Running
  1. Pull the storage levels for the Ashford basin, 2019 to 2024.

    Ashford averaged 61% full in 2024, down from 74% in 2019. Most of the drop falls in August and September, when abstraction peaks.

  2. Which of the four basins lost the most storage, and when?

    Reading 9 of 22 gauge reports

Up next · 4

Enter queues while the assistant is busy. Up in an empty field edits the last queued ask.

Alt with Up or Down moves it, Enter edits, Delete removes.

running · 4 queued · basinworks research

Install

One command — the source lands in your repo. Or copy it from the Code tab.

$ pnpm dlx shadcn@latest add @kinetiq/queued-asks

Props

stackDepth
number
default 3
Cards that stand fanned before the rest tuck into a deck behind the last one.
cardStyle
"note" | "ticket" | "line"
default "note"
Paper notes with a folded corner, tickets with a perforated stub, or flat lines.
accent
string
default "var(--accent-bright)"
Numbers, your bubbles, progress, Queue and Send — any CSS colour.
queue / defaultQueue
QueuedAsk[]
default — / defaultQueuedAsks
The queued prompts, top first; controlled or initial.
onQueueChange
(queue: QueuedAsk[]) => void
default —
Fires with the whole queue after any add, move, edit, removal or peel.
job
QueuedAsksJob | null
default defaultQueuedJob
The run in progress (prompt, status, progress, step, answer, error), or null when idle. Owned by the host.
thread
QueuedAsksTurn[]
default defaultQueuedThread
Finished turns, oldest first.
onEnqueue
(item: QueuedAsk) => void
default —
A prompt was queued.
onReorder
(ids: string[], moved: { id, from, to }) => void
default —
A card was moved by drag or by Alt with an arrow.
onEditQueued
(id: string, text: string) => void
default —
A queued prompt was edited in place.
onCancel
(id: string) => void
default —
A queued prompt was removed, or Stop was pressed on the run (its id).
onAdvance
(next: QueuedAsk) => void
default —
The top card peeled off: start it as the new job with the same id, so it flies into the thread.
onSend
(text: string) => void
default —
Nothing running and nothing queued: the prompt goes straight to the assistant.
onRetry
(jobId: string) => void
default —
Retry was pressed on a failed run.
onResume
() => void
default —
Skip was pressed on a failed run; the next card peels off.
paused
boolean
default job?.status === "failed"
Hold the queue: nothing peels until it is resumed.
advanceDelay
number
default 500
How long a finished answer rests before the next card peels off, ms.
maxQueue
number
default 8
The most prompts the queue holds.
title
string
default "Basin storage review"
The session's name.
model
string
default "Fernworks Model 3"
The assistant's name.
workspace
string
default "Basinworks"
Whose workspace the session is in.
placeholder
string
default "Ask, or line up the next ask…"
Placeholder for the field.
height
number
default 560
The tallest the surface grows, px; past it the thread scrolls.
disabled
boolean
default false
Nothing can be typed, queued or moved.
className
string
default —
Classes for the outer surface.