summaryrefslogtreecommitdiffhomepage
path: root/packages/session-orchestrator/src
diff options
context:
space:
mode:
authorAdam Malczewski <[email protected]>2026-06-21 16:56:42 +0900
committerAdam Malczewski <[email protected]>2026-06-21 16:56:42 +0900
commitea0e938eca3072649dc8707c999ec00cf87b986a (patch)
tree41f96ed517fe779ed612fc4cb3e8359a841ad088 /packages/session-orchestrator/src
parent36e950ba2cd2591e86f0dcc898f740481c59d912 (diff)
downloaddispatch-ea0e938eca3072649dc8707c999ec00cf87b986a.tar.gz
dispatch-ea0e938eca3072649dc8707c999ec00cf87b986a.zip
feat(transport): CLI endpoints + conversation.open broadcast (Wave 2)
transport-http: GET /conversations (list with ?q= prefix filter), GET /conversations/:id/last (blocks until turn settles, returns last AI text), POST /conversations/:id/open (emits conversationOpened hook), PUT /conversations/:id/title (set title). emit threaded from host.emit. extractLastAssistantText pure helper. 21 new tests (166 total). transport-ws: subscribes to conversationOpened hook, broadcasts ConversationOpenMessage to all connected WS clients. 2 new tests. session-orchestrator: conversationOpened hook descriptor (exported).
Diffstat (limited to 'packages/session-orchestrator/src')
-rw-r--r--packages/session-orchestrator/src/index.ts2
-rw-r--r--packages/session-orchestrator/src/orchestrator.ts14
2 files changed, 16 insertions, 0 deletions
diff --git a/packages/session-orchestrator/src/index.ts b/packages/session-orchestrator/src/index.ts
index afec2b4..3d8ad18 100644
--- a/packages/session-orchestrator/src/index.ts
+++ b/packages/session-orchestrator/src/index.ts
@@ -1,8 +1,10 @@
export { extension, manifest } from "./extension.js";
export {
type ConversationClosedPayload,
+ type ConversationOpenedPayload,
cacheWarmHandle,
conversationClosed,
+ conversationOpened,
createSessionOrchestrator,
createWarmService,
type EnqueueInput,
diff --git a/packages/session-orchestrator/src/orchestrator.ts b/packages/session-orchestrator/src/orchestrator.ts
index 3a74c2d..82ca59e 100644
--- a/packages/session-orchestrator/src/orchestrator.ts
+++ b/packages/session-orchestrator/src/orchestrator.ts
@@ -97,6 +97,20 @@ export interface ConversationClosedPayload {
export const conversationClosed: EventHookDescriptor<ConversationClosedPayload> =
defineEventHook<ConversationClosedPayload>("session-orchestrator/conversation-closed");
+/** Payload for the conversationOpened bus event. */
+export interface ConversationOpenedPayload {
+ readonly conversationId: string;
+}
+
+/**
+ * Fired when a client requests to "open" a conversation (e.g. the CLI `--open`
+ * flag). Transport-ws subscribes and broadcasts a `conversation.open` WS
+ * message to all connected frontend clients. The frontend decides whether to
+ * open/focus a tab — the backend just signals.
+ */
+export const conversationOpened: EventHookDescriptor<ConversationOpenedPayload> =
+ defineEventHook<ConversationOpenedPayload>("session-orchestrator/conversation-opened");
+
/** Payload for the warmCompleted bus event. */
export interface WarmCompletedPayload {
readonly conversationId: string;