Change summary
ui/src/App.tsx | 5 +
ui/src/components/ConversationDrawer.tsx | 12 ++
ui/src/generated-types.ts | 82 +++++++++++++-------------
ui/src/styles.css | 1
4 files changed, 54 insertions(+), 46 deletions(-)
Detailed changes
@@ -68,7 +68,10 @@ function App() {
const [loading, setLoading] = useState(true);
const [error, setError] = useState<string | null>(null);
const [subagentUpdate, setSubagentUpdate] = useState<Conversation | null>(null);
- const [subagentStateUpdate, setSubagentStateUpdate] = useState<{ conversation_id: string; working: boolean } | null>(null);
+ const [subagentStateUpdate, setSubagentStateUpdate] = useState<{
+ conversation_id: string;
+ working: boolean;
+ } | null>(null);
const initialSlugResolved = useRef(false);
// Resolve initial slug from URL - uses the captured initialSlugFromUrl
@@ -88,7 +88,9 @@ function ConversationDrawer({
setSubagents((prev) => {
// Find which parent contains this subagent
for (const [parentId, subs] of Object.entries(prev)) {
- const subIndex = subs.findIndex((s) => s.conversation_id === subagentStateUpdate.conversation_id);
+ const subIndex = subs.findIndex(
+ (s) => s.conversation_id === subagentStateUpdate.conversation_id,
+ );
if (subIndex >= 0) {
const updated = [...subs];
updated[subIndex] = { ...updated[subIndex], working: subagentStateUpdate.working };
@@ -485,7 +487,9 @@ function ConversationDrawer({
padding: "0.125rem 0.25rem",
}}
title={isExpanded ? "Hide subagents" : "Show subagents"}
- aria-label={isExpanded ? "Collapse subagents" : "Expand subagents"}
+ aria-label={
+ isExpanded ? "Collapse subagents" : "Expand subagents"
+ }
>
<span style={{ fontWeight: 500 }}>
{conversationSubagents.length}
@@ -580,7 +584,9 @@ function ConversationDrawer({
}}
>
<div style={{ flex: 1, minWidth: 0 }}>
- <div style={{ display: "flex", alignItems: "center", gap: "0.5rem" }}>
+ <div
+ style={{ display: "flex", alignItems: "center", gap: "0.5rem" }}
+ >
<div style={{ flex: 1, minWidth: 0 }}>
<div className="conversation-title">
{sub.slug || sub.conversation_id}
@@ -4,61 +4,61 @@
// DO NOT EDIT. This file is automatically generated.
export interface Conversation {
- conversation_id: string;
- slug: string | null;
- user_initiated: boolean;
- created_at: string;
- updated_at: string;
- cwd: string | null;
- archived: boolean;
- parent_conversation_id: string | null;
+ conversation_id: string;
+ slug: string | null;
+ user_initiated: boolean;
+ created_at: string;
+ updated_at: string;
+ cwd: string | null;
+ archived: boolean;
+ parent_conversation_id: string | null;
}
export interface Usage {
- input_tokens: number;
- cache_creation_input_tokens: number;
- cache_read_input_tokens: number;
- output_tokens: number;
- cost_usd: number;
- model?: string;
- start_time?: string | null;
- end_time?: string | null;
+ input_tokens: number;
+ cache_creation_input_tokens: number;
+ cache_read_input_tokens: number;
+ output_tokens: number;
+ cost_usd: number;
+ model?: string;
+ start_time?: string | null;
+ end_time?: string | null;
}
export interface ApiMessageForTS {
- message_id: string;
- conversation_id: string;
- sequence_id: number;
- type: string;
- llm_data?: string | null;
- user_data?: string | null;
- usage_data?: string | null;
- created_at: string;
- display_data?: string | null;
- end_of_turn?: boolean | null;
+ message_id: string;
+ conversation_id: string;
+ sequence_id: number;
+ type: string;
+ llm_data?: string | null;
+ user_data?: string | null;
+ usage_data?: string | null;
+ created_at: string;
+ display_data?: string | null;
+ end_of_turn?: boolean | null;
}
export interface ConversationStateForTS {
- conversation_id: string;
- working: boolean;
+ conversation_id: string;
+ working: boolean;
}
export interface StreamResponseForTS {
- messages: ApiMessageForTS[] | null;
- conversation: Conversation;
- conversation_state?: ConversationStateForTS | null;
+ messages: ApiMessageForTS[] | null;
+ conversation: Conversation;
+ conversation_state?: ConversationStateForTS | null;
}
export interface ConversationWithStateForTS {
- conversation_id: string;
- slug: string | null;
- user_initiated: boolean;
- created_at: string;
- updated_at: string;
- cwd: string | null;
- archived: boolean;
- parent_conversation_id: string | null;
- working: boolean;
+ conversation_id: string;
+ slug: string | null;
+ user_initiated: boolean;
+ created_at: string;
+ updated_at: string;
+ cwd: string | null;
+ archived: boolean;
+ parent_conversation_id: string | null;
+ working: boolean;
}
-export type MessageType = 'user' | 'agent' | 'tool' | 'error' | 'system' | 'gitinfo';
+export type MessageType = "user" | "agent" | "tool" | "error" | "system" | "gitinfo";
@@ -992,7 +992,6 @@ button {
}
.bash-tool-emoji.running {
- animation: rotate 1s linear infinite;
}
.bash-tool-command {