diff --git a/packages/app/src/app/_layout.tsx b/packages/app/src/app/_layout.tsx
index f6903bab4..d20194640 100644
--- a/packages/app/src/app/_layout.tsx
+++ b/packages/app/src/app/_layout.tsx
@@ -1,17 +1,20 @@
import { Stack } from 'expo-router';
import { SafeAreaProvider } from 'react-native-safe-area-context';
import { KeyboardProvider } from 'react-native-keyboard-controller';
+import { GestureHandlerRootView } from 'react-native-gesture-handler';
export default function RootLayout() {
return (
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
);
}
diff --git a/packages/app/src/app/index.tsx b/packages/app/src/app/index.tsx
index d9d7fd225..30006baa6 100644
--- a/packages/app/src/app/index.tsx
+++ b/packages/app/src/app/index.tsx
@@ -12,6 +12,7 @@ import {
Modal,
} from "react-native";
import { useReanimatedKeyboardAnimation } from "react-native-keyboard-controller";
+import { GestureDetector, Gesture } from "react-native-gesture-handler";
import ReanimatedAnimated, {
useAnimatedStyle,
useSharedValue,
@@ -19,6 +20,9 @@ import ReanimatedAnimated, {
withRepeat,
withSequence,
withTiming,
+ cancelAnimation,
+ runOnJS,
+ Easing,
} from "react-native-reanimated";
import { router } from "expo-router";
import { activateKeepAwakeAsync, deactivateKeepAwake } from "expo-keep-awake";
@@ -44,7 +48,7 @@ import {
ToolCall,
} from "@/components/message";
import { ArtifactDrawer, type Artifact } from "@/components/artifact-drawer";
-import { ActiveProcesses } from "@/components/active-processes";
+import { AgentSidebar } from "@/components/agent-sidebar";
import { AgentStreamView } from "@/components/agent-stream-view";
import { ConversationSelector } from "@/components/conversation-selector";
import { VolumeMeter } from "@/components/volume-meter";
@@ -59,6 +63,8 @@ import {
MicOff,
Plus,
ChevronDown,
+ Menu,
+ Home,
} from "lucide-react-native";
import type {
ActivityLogPayload,
@@ -124,6 +130,8 @@ interface Agent {
name: string;
description?: string | null;
}>;
+ title?: string;
+ cwd: string;
}
interface Command {
@@ -338,6 +346,9 @@ export default function VoiceAssistantScreen() {
// Agent creation modal state
const [showCreateAgentModal, setShowCreateAgentModal] = useState(false);
+ // Agent sidebar state
+ const [sidebarOpen, setSidebarOpen] = useState(false);
+
// Mode selector modal state
const [showModeSelector, setShowModeSelector] = useState(false);
@@ -347,6 +358,22 @@ export default function VoiceAssistantScreen() {
const [agentUpdates, setAgentUpdates] = useState