From ba47df37f0c89bff4f0c3dd7d0bc2ef6c8062b92 Mon Sep 17 00:00:00 2001 From: Adam Malczewski Date: Sun, 21 Jun 2026 02:08:44 +0900 Subject: feat(message-queue): per-conversation queue + steering injection A per-conversation message queue (new message-queue extension) holds user messages enqueued while a turn generates; delivered mid-turn as steering at the tool-result boundary (or carried to a new turn if no tool call fires). - kernel: RunTurnInput.drainSteering callback (generic; kernel stays pure) - wire 0.7.0->0.8.0: QueuedMessage, QueuePayload, TurnSteeringEvent (additive) - transport-contract 0.11.0->0.12.0: POST /conversations/:id/queue + chat.queue WS op - message-queue ext: queue state + per-conversation custom surface (rendererId message-queue) - session-orchestrator: enqueue facade + drainSteering wiring + post-seal carry - transport-http/ws: queue endpoint + chat.queue op (fixes WsClientMessage exhaustive switch) - host-bin: register message-queue 1043 vitest + 199 transport bun pass; tsc/biome clean; boot smoke clean. FE courier: frontend-message-queue-handoff.md. --- packages/message-queue/src/index.ts | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 packages/message-queue/src/index.ts (limited to 'packages/message-queue/src/index.ts') diff --git a/packages/message-queue/src/index.ts b/packages/message-queue/src/index.ts new file mode 100644 index 0000000..79bbb25 --- /dev/null +++ b/packages/message-queue/src/index.ts @@ -0,0 +1,27 @@ +/** + * @dispatch/message-queue — the per-conversation message queue for mid-turn + * steering. Owns the queue state + a per-conversation `custom` surface; the + * session-orchestrator drains it via `messageQueueHandle`. The queue is + * transient (in-memory, per-conversation, only meaningful during generation); + * the surface is the ONLY way the frontend reads queue state. + */ + +export type { QueuedMessage, QueuePayload } from "@dispatch/wire"; +export { extension, manifest } from "./extension.js"; +export { + buildQueueSpec, + combine, + drain, + enqueue, + getQueue, + MESSAGE_QUEUE_RENDERER_ID, + MESSAGE_QUEUE_SURFACE_ID, + type MessageQueueState, + type QueueDeps, +} from "./pure.js"; +export { + createMessageQueueService, + type MessageQueueDeps, + type MessageQueueService, + messageQueueHandle, +} from "./service.js"; -- cgit v1.2.3