wip: pane/session + tab-bar checkpoint

Second checkpoint of in-flight work (sessions route, api types, ChatTabBar,
PaneHeaderActions, Workspace, useWorkspacePanes) so the Orchestrator branch
can rebase onto current main before merge.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-06-03 15:15:47 +00:00
parent 38a0d47bcc
commit 519b1d2ca1
6 changed files with 404 additions and 317 deletions

View File

@@ -40,11 +40,15 @@ const PaneKindZ = z.enum([
'html_artifact',
]);
// Mixed tabs: each tab carries its own kind (parallel to chatIds).
const TabKindZ = z.enum(['chat', 'coder', 'terminal']);
const WorkspacePaneZ = z.object({
id: z.string().min(1).max(200),
kind: PaneKindZ,
chatId: z.string().min(1).max(200).optional(),
chatIds: z.array(z.string().min(1).max(200)).max(50),
tabKinds: z.array(TabKindZ).max(50).optional(),
activeChatIdx: z.number().int(),
markdown_artifact_state: MarkdownArtifactStateZ.optional(),
html_artifact_state: HtmlArtifactStateZ.optional(),
@@ -57,6 +61,7 @@ const WorkspacePaneZ = z.object({
const ClosedPaneEntryZ = z.object({
kind: PaneKindZ,
chatIds: z.array(z.string().min(1).max(200)).max(50),
tabKinds: z.array(TabKindZ).max(50).optional(),
activeChatIdx: z.number().int(),
});