SYMBOL INDEX (1756 symbols across 409 files) FILE: apps/capsule/src/api/auth.rs type AuthUser (line 25) | pub struct AuthUser { type Rejection (line 69) | type Rejection = AuthError; method from_request_parts (line 71) | async fn from_request_parts(parts: &mut Parts, _state: &S) -> Result Response { FILE: apps/capsule/src/api/chat.rs function chat_handler (line 40) | pub async fn chat_handler( function chat_stream_handler (line 142) | pub async fn chat_stream_handler( FILE: apps/capsule/src/api/key.rs function public_key_handler (line 20) | pub async fn public_key_handler(State(state): State>) -> J... FILE: apps/capsule/src/api/routes.rs constant MAX_BODY_SIZE (line 17) | const MAX_BODY_SIZE: usize = 100 * 1024 * 1024; type RouterConfig (line 20) | pub struct RouterConfig { function create_router (line 26) | pub fn create_router( function build_cors_layer (line 53) | fn build_cors_layer(config: &RouterConfig) -> CorsLayer { function health_handler (line 93) | async fn health_handler() -> &'static str { FILE: apps/capsule/src/config.rs type Config (line 6) | pub struct Config { method from_env (line 31) | pub fn from_env() -> Result { FILE: apps/capsule/src/crypto/encryption.rs constant HKDF_SALT (line 15) | const HKDF_SALT: &[u8] = b"vessel-capsule-v1-salt"; constant HKDF_INFO (line 16) | const HKDF_INFO: &[u8] = b"vessel-capsule-v1-key"; function decrypt_with_secret (line 28) | pub(crate) fn decrypt_with_secret( function test_decrypt_invalid_public_key (line 89) | fn test_decrypt_invalid_public_key() { function test_decrypt_invalid_nonce (line 104) | fn test_decrypt_invalid_nonce() { FILE: apps/capsule/src/crypto/keypair.rs type VersionedKey (line 12) | struct VersionedKey { method new (line 24) | fn new() -> Self { method public_key_base64 (line 39) | fn public_key_base64(&self) -> String { type KeySlots (line 45) | struct KeySlots { type KeyManager (line 63) | pub struct KeyManager { method new (line 76) | pub fn new(rotation_interval: Duration, grace_period: Duration) -> Self { method current_public_key (line 96) | pub async fn current_public_key(&self) -> (String, String, String) { method decrypt (line 114) | pub async fn decrypt(&self, encrypted: &EncryptedImage) -> Result) -> tokio::task::JoinHandl... method drop (line 213) | fn drop(&mut self) { function encrypt_for_key (line 231) | fn encrypt_for_key(public_key: &PublicKey, data: &[u8]) -> (EncryptedIma... function test_rotation_creates_new_key (line 264) | async fn test_rotation_creates_new_key() { function test_decrypt_with_current_key (line 276) | async fn test_decrypt_with_current_key() { function test_previous_key_available_after_rotation (line 292) | async fn test_previous_key_available_after_rotation() { function test_previous_key_cleared_after_grace_period (line 314) | async fn test_previous_key_cleared_after_grace_period() { function test_no_key_id_fallback (line 337) | async fn test_no_key_id_fallback() { FILE: apps/capsule/src/error.rs type CapsuleError (line 11) | pub enum CapsuleError { method from (line 104) | fn from(err: anyhow::Error) -> Self { method into_response (line 47) | fn into_response(self) -> Response { FILE: apps/capsule/src/main.rs type AppState (line 23) | pub struct AppState { function main (line 35) | async fn main() -> anyhow::Result<()> { FILE: apps/capsule/src/services/jwt.rs type JwtError (line 14) | pub enum JwtError { type JwksResponse (line 39) | struct JwksResponse { type Jwk (line 45) | struct Jwk { type SupabaseClaims (line 66) | pub struct SupabaseClaims { type CachedJwks (line 87) | struct CachedJwks { type JwtValidator (line 99) | pub struct JwtValidator { method new (line 113) | pub fn new(supabase_url: String) -> Self { method get_jwks (line 122) | async fn get_jwks(&self) -> Result, JwtError> { method validate (line 184) | pub async fn validate(&self, token: &str) -> Result Result) -> Self { method with_model (line 36) | pub fn with_model(mut self, model: String) -> Self { method build_messages (line 42) | fn build_messages( method chat (line 84) | pub async fn chat( method analyze_image (line 141) | pub async fn analyze_image( method chat_stream (line 213) | pub async fn chat_stream( method analyze_image_stream (line 262) | pub async fn analyze_image_stream( method process_stream_with_usage (line 325) | fn process_stream_with_usage( type AccumulatedToolCall (line 425) | struct AccumulatedToolCall { method to_json (line 432) | fn to_json(&self) -> serde_json::Value { type ChatRequest (line 447) | struct ChatRequest { type StreamOptions (line 462) | struct StreamOptions { type Message (line 467) | struct Message { type MessageContent (line 479) | enum MessageContent { type ContentPart (line 486) | enum ContentPart { type ImageUrl (line 494) | struct ImageUrl { type TokenUsage (line 500) | pub struct TokenUsage { method from (line 528) | fn from(usage: Option) -> Self { type ChatResult (line 508) | pub struct ChatResult { type ChatResponse (line 515) | struct ChatResponse { type Usage (line 521) | struct Usage { type Choice (line 541) | struct Choice { type ResponseMessage (line 546) | struct ResponseMessage { type StreamChunk (line 552) | struct StreamChunk { type StreamChoice (line 558) | struct StreamChoice { type Delta (line 565) | struct Delta { type StreamToolCall (line 572) | struct StreamToolCall { type StreamToolCallFunction (line 580) | struct StreamToolCallFunction { FILE: apps/capsule/src/services/usage.rs type RateLimitStatus (line 14) | pub struct RateLimitStatus { type UsageTracker (line 38) | pub struct UsageTracker { method new (line 50) | pub fn new(supabase_url: String, service_key: Zeroizing) -> Se... method check_rate_limit (line 69) | pub async fn check_rate_limit(&self, user_id: &str) -> Result) -> Self { method to_base64 (line 45) | pub fn to_base64(&self) -> String { method len (line 50) | pub fn len(&self) -> usize { method is_empty (line 55) | pub fn is_empty(&self) -> bool { FILE: apps/capsule/src/types/encrypted.rs constant MAX_HISTORY_MESSAGES (line 6) | const MAX_HISTORY_MESSAGES: usize = 50; constant MAX_HISTORY_CHARS (line 9) | const MAX_HISTORY_CHARS: usize = 100_000; constant ALLOWED_ROLES (line 12) | const ALLOWED_ROLES: &[&str] = &["user", "assistant", "system", "tool"]; type EncryptedImage (line 17) | pub struct EncryptedImage { type HistoryMessage (line 34) | pub struct HistoryMessage { type ChatRequest (line 49) | pub struct ChatRequest { method validate_history (line 72) | pub fn validate_history(&self) -> Result<(), CapsuleError> { type ChatResponse (line 105) | pub struct ChatResponse { type PublicKeyResponse (line 115) | pub struct PublicKeyResponse { type StreamChunk (line 126) | pub struct StreamChunk { FILE: apps/capsule/tests/api.test.mjs constant BASE_URL (line 14) | const BASE_URL = process.env.CAPSULE_URL || 'http://localhost:3000'; function test (line 24) | async function test(name, fn) { function assert (line 40) | function assert(condition, message) { function assertEqual (line 46) | function assertEqual(actual, expected, message) { function api (line 53) | async function api(path, options = {}) { function testHealthCheck (line 75) | async function testHealthCheck() { function testPublicKey (line 82) | async function testPublicKey() { function testTextChat (line 91) | async function testTextChat() { function testTextChatEmptyMessage (line 100) | async function testTextChatEmptyMessage() { function testImageEncryption (line 109) | async function testImageEncryption(publicKey) { function testImageAnalysis (line 154) | async function testImageAnalysis(imagePath, publicKey) { function testInvalidEncryptedImage (line 177) | async function testInvalidEncryptedImage() { function main (line 200) | async function main() { FILE: apps/capsule/tests/crypto.mjs constant HKDF_SALT (line 13) | const HKDF_SALT = new TextEncoder().encode('vessel-capsule-v1-salt'); constant HKDF_INFO (line 14) | const HKDF_INFO = new TextEncoder().encode('vessel-capsule-v1-key'); function bytesToBase64 (line 17) | function bytesToBase64(bytes) { function base64ToBytes (line 22) | function base64ToBytes(base64) { function encryptImage (line 33) | async function encryptImage(imageData, serverPublicKeyBase64) { FILE: apps/client/src/App.tsx function App (line 209) | function App() { FILE: apps/client/src/app/pageWrapper/page-wrapper.tsx function PageWrapper (line 4) | function PageWrapper(props: PropsWithChildren) { FILE: apps/client/src/app/providers/theme-provider.tsx type Theme (line 3) | type Theme = "dark" | "light" | "system"; type ThemeProviderProps (line 5) | type ThemeProviderProps = { type ThemeProviderState (line 11) | type ThemeProviderState = { function ThemeProvider (line 23) | function ThemeProvider({ FILE: apps/client/src/components/icon/Logo.tsx function VesselLogo (line 1) | function VesselLogo() { FILE: apps/client/src/components/ui/alert-dialog.tsx function AlertDialog (line 7) | function AlertDialog({ function AlertDialogTrigger (line 13) | function AlertDialogTrigger({ function AlertDialogPortal (line 21) | function AlertDialogPortal({ function AlertDialogOverlay (line 29) | function AlertDialogOverlay({ function AlertDialogContent (line 45) | function AlertDialogContent({ function AlertDialogHeader (line 64) | function AlertDialogHeader({ function AlertDialogFooter (line 77) | function AlertDialogFooter({ function AlertDialogTitle (line 93) | function AlertDialogTitle({ function AlertDialogDescription (line 106) | function AlertDialogDescription({ function AlertDialogAction (line 119) | function AlertDialogAction({ function AlertDialogCancel (line 131) | function AlertDialogCancel({ FILE: apps/client/src/components/ui/avatar.tsx function Avatar (line 6) | function Avatar({ function AvatarImage (line 22) | function AvatarImage({ function AvatarFallback (line 35) | function AvatarFallback({ FILE: apps/client/src/components/ui/badge.tsx function Badge (line 28) | function Badge({ FILE: apps/client/src/components/ui/breadcrumb.tsx function Breadcrumb (line 7) | function Breadcrumb({ ...props }: React.ComponentProps<"nav">) { function BreadcrumbList (line 11) | function BreadcrumbList({ className, ...props }: React.ComponentProps<"o... function BreadcrumbItem (line 24) | function BreadcrumbItem({ className, ...props }: React.ComponentProps<"l... function BreadcrumbLink (line 34) | function BreadcrumbLink({ function BreadcrumbPage (line 52) | function BreadcrumbPage({ className, ...props }: React.ComponentProps<"s... function BreadcrumbSeparator (line 65) | function BreadcrumbSeparator({ function BreadcrumbEllipsis (line 83) | function BreadcrumbEllipsis({ FILE: apps/client/src/components/ui/button.tsx function Button (line 38) | function Button({ FILE: apps/client/src/components/ui/card.tsx function Card (line 5) | function Card({ className, ...props }: React.ComponentProps<"div">) { function CardHeader (line 18) | function CardHeader({ className, ...props }: React.ComponentProps<"div">) { function CardTitle (line 31) | function CardTitle({ className, ...props }: React.ComponentProps<"div">) { function CardDescription (line 41) | function CardDescription({ className, ...props }: React.ComponentProps<"... function CardAction (line 51) | function CardAction({ className, ...props }: React.ComponentProps<"div">) { function CardContent (line 64) | function CardContent({ className, ...props }: React.ComponentProps<"div"... function CardFooter (line 74) | function CardFooter({ className, ...props }: React.ComponentProps<"div">) { FILE: apps/client/src/components/ui/dialog.tsx function Dialog (line 7) | function Dialog({ function DialogTrigger (line 13) | function DialogTrigger({ function DialogPortal (line 19) | function DialogPortal({ function DialogClose (line 25) | function DialogClose({ function DialogOverlay (line 31) | function DialogOverlay({ function DialogContent (line 47) | function DialogContent({ function DialogHeader (line 81) | function DialogHeader({ className, ...props }: React.ComponentProps<"div... function DialogFooter (line 91) | function DialogFooter({ className, ...props }: React.ComponentProps<"div... function DialogTitle (line 104) | function DialogTitle({ function DialogDescription (line 117) | function DialogDescription({ FILE: apps/client/src/components/ui/dropdown-menu.tsx function DropdownMenu (line 7) | function DropdownMenu({ function DropdownMenuPortal (line 13) | function DropdownMenuPortal({ function DropdownMenuTrigger (line 21) | function DropdownMenuTrigger({ function DropdownMenuContent (line 32) | function DropdownMenuContent({ function DropdownMenuGroup (line 52) | function DropdownMenuGroup({ function DropdownMenuItem (line 60) | function DropdownMenuItem({ function DropdownMenuCheckboxItem (line 83) | function DropdownMenuCheckboxItem({ function DropdownMenuRadioGroup (line 109) | function DropdownMenuRadioGroup({ function DropdownMenuRadioItem (line 120) | function DropdownMenuRadioItem({ function DropdownMenuLabel (line 144) | function DropdownMenuLabel({ function DropdownMenuSeparator (line 164) | function DropdownMenuSeparator({ function DropdownMenuShortcut (line 177) | function DropdownMenuShortcut({ function DropdownMenuSub (line 193) | function DropdownMenuSub({ function DropdownMenuSubTrigger (line 199) | function DropdownMenuSubTrigger({ function DropdownMenuSubContent (line 223) | function DropdownMenuSubContent({ FILE: apps/client/src/components/ui/input.tsx function Input (line 5) | function Input({ className, type, ...props }: React.ComponentProps<"inpu... FILE: apps/client/src/components/ui/label.tsx function Label (line 6) | function Label({ FILE: apps/client/src/components/ui/navigation-menu.tsx function NavigationMenu (line 8) | function NavigationMenu({ function NavigationMenuList (line 32) | function NavigationMenuList({ function NavigationMenuItem (line 48) | function NavigationMenuItem({ function NavigationMenuTrigger (line 65) | function NavigationMenuTrigger({ function NavigationMenuContent (line 85) | function NavigationMenuContent({ function NavigationMenuViewport (line 102) | function NavigationMenuViewport({ function NavigationMenuLink (line 124) | function NavigationMenuLink({ function NavigationMenuIndicator (line 140) | function NavigationMenuIndicator({ FILE: apps/client/src/components/ui/popover.tsx type PopoverContentProps (line 12) | type PopoverContentProps = React.ComponentPropsWithoutRef< FILE: apps/client/src/components/ui/select.tsx function Select (line 7) | function Select({ function SelectGroup (line 13) | function SelectGroup({ function SelectValue (line 19) | function SelectValue({ function SelectTrigger (line 25) | function SelectTrigger({ function SelectContent (line 51) | function SelectContent({ function SelectLabel (line 86) | function SelectLabel({ function SelectItem (line 99) | function SelectItem({ function SelectSeparator (line 123) | function SelectSeparator({ function SelectScrollUpButton (line 136) | function SelectScrollUpButton({ function SelectScrollDownButton (line 154) | function SelectScrollDownButton({ FILE: apps/client/src/components/ui/separator.tsx function Separator (line 8) | function Separator({ FILE: apps/client/src/components/ui/sheet.tsx function Sheet (line 6) | function Sheet({ ...props }: React.ComponentProps) { function SidebarMenuItem (line 466) | function SidebarMenuItem({ className, ...props }: React.ComponentProps<"... function SidebarMenuButton (line 499) | function SidebarMenuButton({ function SidebarMenuAction (line 549) | function SidebarMenuAction({ function SidebarMenuBadge (line 581) | function SidebarMenuBadge({ function SidebarMenuSkeleton (line 603) | function SidebarMenuSkeleton({ function SidebarMenuSub (line 638) | function SidebarMenuSub({ className, ...props }: React.ComponentProps<"u... function SidebarMenuSubItem (line 653) | function SidebarMenuSubItem({ function SidebarMenuSubButton (line 667) | function SidebarMenuSubButton({ FILE: apps/client/src/components/ui/skeleton.tsx function Skeleton (line 3) | function Skeleton({ className, ...props }: React.ComponentProps<"div">) { FILE: apps/client/src/components/ui/switch.tsx function Switch (line 6) | function Switch({ FILE: apps/client/src/components/ui/table.tsx function Table (line 5) | function Table({ className, ...props }: React.ComponentProps<"table">) { function TableHeader (line 20) | function TableHeader({ className, ...props }: React.ComponentProps<"thea... function TableBody (line 30) | function TableBody({ className, ...props }: React.ComponentProps<"tbody"... function TableFooter (line 40) | function TableFooter({ className, ...props }: React.ComponentProps<"tfoo... function TableRow (line 53) | function TableRow({ className, ...props }: React.ComponentProps<"tr">) { function TableHead (line 66) | function TableHead({ className, ...props }: React.ComponentProps<"th">) { function TableCell (line 79) | function TableCell({ className, ...props }: React.ComponentProps<"td">) { function TableCaption (line 92) | function TableCaption({ FILE: apps/client/src/components/ui/textarea.tsx function Textarea (line 5) | function Textarea({ className, ...props }: React.ComponentProps<"textare... FILE: apps/client/src/components/ui/tooltip.tsx function TooltipProvider (line 8) | function TooltipProvider({ function Tooltip (line 21) | function Tooltip({ function TooltipTrigger (line 31) | function TooltipTrigger({ function TooltipContent (line 37) | function TooltipContent({ FILE: apps/client/src/contexts/SupabaseAuthContext.tsx type SupabaseAuthContextType (line 16) | type SupabaseAuthContextType = { function SupabaseAuthProvider (line 26) | function SupabaseAuthProvider({ children }: { children: ReactNode }) { function useSupabaseAuth (line 170) | function useSupabaseAuth() { FILE: apps/client/src/entities/configurations/codeService.ts constant CODE_SERVICE_CONFIG_KEY (line 3) | const CODE_SERVICE_CONFIG_KEY = "code_service_enabled"; function getCodeServiceEnabled (line 5) | function getCodeServiceEnabled( FILE: apps/client/src/entities/configurations/store.ts type ConfigState (line 5) | interface ConfigState { FILE: apps/client/src/entities/configurations/types.ts type SystemConfiguration (line 1) | interface SystemConfiguration { type SystemConfigurationPayload (line 11) | type SystemConfigurationPayload = Omit< FILE: apps/client/src/entities/custom-nodes/presets.ts type PresetConnector (line 1) | interface PresetConnector { type PresetCategory (line 7) | type PresetCategory = type RhaiPreset (line 15) | interface RhaiPreset { function presetToApiPayload (line 24) | function presetToApiPayload(preset: RhaiPreset) { constant RHAI_PRESETS (line 36) | const RHAI_PRESETS: RhaiPreset[] = [ function getPresetCategories (line 459) | function getPresetCategories(): PresetCategory[] { function getPresetsByCategory (line 467) | function getPresetsByCategory(category: PresetCategory): RhaiPreset[] { FILE: apps/client/src/entities/custom-nodes/types.ts type CustomNodeFromApi (line 1) | interface CustomNodeFromApi { type CustomNodeDynamicData (line 6) | type CustomNodeDynamicData = Record; type CustomNodeData (line 8) | interface CustomNodeData { type CustomNode (line 17) | type CustomNode = CustomNodeFromApi; type Connector (line 19) | interface Connector { type CustomNodeState (line 25) | interface CustomNodeState { FILE: apps/client/src/entities/device-token/store.ts type DeviceTokenState (line 5) | interface DeviceTokenState { FILE: apps/client/src/entities/device-token/types.ts type DeviceToken (line 1) | interface DeviceToken { type IssuedTokenResponse (line 9) | interface IssuedTokenResponse { FILE: apps/client/src/entities/device/store.ts type DeviceState (line 5) | interface DeviceState { FILE: apps/client/src/entities/device/types.ts type Device (line 3) | interface Device { type DeviceWithEntity (line 11) | interface DeviceWithEntity { type DevicePayload (line 20) | type DevicePayload = Omit; FILE: apps/client/src/entities/dynamic-dashboard/api.ts type DynamicDashboardDto (line 3) | type DynamicDashboardDto = { FILE: apps/client/src/entities/dynamic-dashboard/interaction.ts constant DASHBOARD_COMPONENT_EVENT_VERSION (line 2) | const DASHBOARD_COMPONENT_EVENT_VERSION = 2 as const; constant MAX_LISTENER_ID_LENGTH (line 4) | const MAX_LISTENER_ID_LENGTH = 128; function isValidListenerId (line 7) | function isValidListenerId(id: string): boolean { type DashboardComponentType (line 13) | type DashboardComponentType = "button" | string; type DashboardComponentAction (line 15) | type DashboardComponentAction = "click" | "change" | "submit" | string; type DashboardComponentEventPayload (line 21) | type DashboardComponentEventPayload = { FILE: apps/client/src/entities/dynamic-dashboard/layoutResolve.ts function clampItemPosition (line 4) | function clampItemPosition( function itemsCollide (line 15) | function itemsCollide( function resolveItemPositionOrNull (line 31) | function resolveItemPositionOrNull( FILE: apps/client/src/entities/dynamic-dashboard/store.ts type DashboardItemType (line 5) | type DashboardItemType = type DashboardItemDataMap (line 13) | type DashboardItemDataMap = { type DashboardItem (line 36) | type DashboardItem = { type DashboardGroup (line 47) | type DashboardGroup = { type DynamicDashboard (line 55) | type DynamicDashboard = { type LayoutPayload (line 61) | type LayoutPayload = { type CreateItemPayload (line 66) | type CreateItemPayload = { type DynamicDashboardState (line 75) | interface DynamicDashboardState { constant DEFAULT_ITEM_SIZES (line 114) | const DEFAULT_ITEM_SIZES: Record; FILE: apps/client/src/entities/file/store.ts type FileTreeState (line 6) | interface FileTreeState { FILE: apps/client/src/entities/file/types.ts type DirEntry (line 1) | interface DirEntry { type IdeState (line 7) | interface IdeState { FILE: apps/client/src/entities/flow/store.ts type FlowState (line 11) | interface FlowState { FILE: apps/client/src/entities/flow/types.ts type Flow (line 1) | interface Flow { type FlowPayload (line 10) | interface FlowPayload { type FlowVersion (line 16) | interface FlowVersion { type FlowVersionPayload (line 25) | interface FlowVersionPayload { FILE: apps/client/src/entities/ha/types.ts type JsonPrimitive (line 1) | type JsonPrimitive = string | number | boolean | null; type JsonObject (line 2) | type JsonObject = { [key: string]: JsonValue }; type JsonArray (line 3) | type JsonArray = JsonValue[]; type JsonValue (line 4) | type JsonValue = JsonPrimitive | JsonObject | JsonArray; type HaState (line 6) | interface HaState { type HaStateStore (line 15) | interface HaStateStore { FILE: apps/client/src/entities/integrations/store.ts type IntegrationState (line 4) | interface IntegrationState { FILE: apps/client/src/entities/integrations/types.ts type IntegrationStatus (line 1) | interface IntegrationStatus { type IntegrationRegisterPayload (line 7) | interface IntegrationRegisterPayload { FILE: apps/client/src/entities/log/types.ts type LogContentResponse (line 1) | type LogContentResponse = { type LogFileListResponse (line 6) | type LogFileListResponse = { FILE: apps/client/src/entities/map/types.ts type MapVertex (line 3) | interface MapVertex { type MapFeature (line 12) | interface MapFeature { type FeatureWithVertices (line 23) | interface FeatureWithVertices extends MapFeature { type MapLayer (line 27) | interface MapLayer { type LayerWithFeatures (line 37) | interface LayerWithFeatures extends MapLayer { type LayerPayload (line 41) | interface LayerPayload { type VertexPayload (line 47) | interface VertexPayload { type FeaturePayload (line 53) | interface FeaturePayload { type UpdateFeaturePayload (line 61) | interface UpdateFeaturePayload { type DrawingMode (line 67) | type DrawingMode = "POINT" | "LINE" | "POLYGON" | null; type TileMapType (line 70) | type TileMapType = "dark" | "satellite"; type TileMapConfig (line 72) | interface TileMapConfig { constant TILE_MAPS (line 79) | const TILE_MAPS: Record = { type MapInteractionState (line 95) | interface MapInteractionState { type MapDataState (line 107) | interface MapDataState { FILE: apps/client/src/entities/permission/store.ts type PermissionState (line 5) | type PermissionState = { FILE: apps/client/src/entities/permission/types.ts type Permission (line 1) | type Permission = { FILE: apps/client/src/entities/recording/store.ts type RecordingState (line 5) | interface RecordingState { FILE: apps/client/src/entities/recording/types.ts type Recording (line 1) | interface Recording { type RecordingStatus (line 17) | type RecordingStatus = "recording" | "completed" | "failed"; type StartRecordingRequest (line 19) | interface StartRecordingRequest { type StartRecordingResponse (line 23) | interface StartRecordingResponse { type ActiveRecordingInfo (line 29) | interface ActiveRecordingInfo { type TopicRecordingStatus (line 34) | interface TopicRecordingStatus { FILE: apps/client/src/entities/role/store.ts type RoleState (line 5) | type RoleState = { FILE: apps/client/src/entities/role/types.ts type Role (line 3) | type Role = { type CreateRolePayload (line 10) | type CreateRolePayload = { type UpdateRolePayload (line 16) | type UpdateRolePayload = Partial; FILE: apps/client/src/entities/stat/store.ts type StatState (line 5) | interface StatState { FILE: apps/client/src/entities/stat/types.ts type Stat (line 1) | interface Stat { FILE: apps/client/src/entities/tunnel/store.ts type TunnelState (line 5) | type TunnelState = { FILE: apps/client/src/entities/tunnel/types.ts type TunnelStatus (line 1) | type TunnelStatus = { type StartTunnelRequest (line 8) | type StartTunnelRequest = { type StartTunnelResponse (line 14) | type StartTunnelResponse = { FILE: apps/client/src/entities/user/store.ts type UserState (line 5) | type UserState = { FILE: apps/client/src/entities/user/types.ts type User (line 3) | type User = { type CreateUserPayload (line 12) | type CreateUserPayload = { type UpdateUserPayload (line 18) | type UpdateUserPayload = { FILE: apps/client/src/features/account-switcher/index.tsx function AccountSwitcher (line 17) | function AccountSwitcher({ FILE: apps/client/src/features/auth/AuthInterceptor.tsx function AuthInterceptor (line 7) | function AuthInterceptor({ children }: { children: React.ReactNode }) { FILE: apps/client/src/features/auth/DefaultAdminPasswordDialog.tsx type DefaultAdminPasswordDialogProps (line 21) | type DefaultAdminPasswordDialogProps = { function DefaultAdminPasswordDialog (line 27) | function DefaultAdminPasswordDialog({ FILE: apps/client/src/features/auth/api.ts type AuthCredentials (line 4) | type AuthCredentials = { FILE: apps/client/src/features/auth/index.tsx constant MAX_RECENT_URLS (line 22) | const MAX_RECENT_URLS = 5; function sanitizeServerUrl (line 24) | function sanitizeServerUrl(rawUrl: string): string | null { function LoginForm (line 38) | function LoginForm({ FILE: apps/client/src/features/code/CreateItemDialog.tsx type CreateItemDialogProps (line 12) | interface CreateItemDialogProps { FILE: apps/client/src/features/code/FileTree.tsx type TreeNodeProps (line 42) | interface TreeNodeProps { type ConfirmDeleteDialogProps (line 197) | interface ConfirmDeleteDialogProps { FILE: apps/client/src/features/configurations/ConfigurationActionButton.tsx type Props (line 39) | interface Props { function ConfigurationActionButton (line 43) | function ConfigurationActionButton({ config }: Props) { FILE: apps/client/src/features/configurations/ConfigurationCreate.tsx function ConfigurationCreate (line 17) | function ConfigurationCreate({ FILE: apps/client/src/features/configurations/ConfigurationCreateButton.tsx function ConfigurationCreateButton (line 6) | function ConfigurationCreateButton() { FILE: apps/client/src/features/darkmode/mode-toggle.tsx function ModeToggle (line 12) | function ModeToggle() { FILE: apps/client/src/features/dashboard-swipe/DashboardSwipeHeader.tsx function DashboardSwipeHeader (line 53) | function DashboardSwipeHeader() { FILE: apps/client/src/features/dashboard-swipe/DashboardSwipeLayout.tsx function DashboardSwipeRoutePlaceholder (line 24) | function DashboardSwipeRoutePlaceholder() { function maxPanelIndex (line 28) | function maxPanelIndex( function panelIndexFromPath (line 35) | function panelIndexFromPath( constant INTEGRATION_VIEW_IDS (line 76) | const INTEGRATION_VIEW_IDS: DashboardMainPanelContentView[] = [ function DashboardSwipeLayout (line 82) | function DashboardSwipeLayout() { FILE: apps/client/src/features/device-token/DeviceTokenManager.tsx type Props (line 26) | interface Props { function DeviceTokenManager (line 30) | function DeviceTokenManager({ deviceId }: Props) { FILE: apps/client/src/features/device/DeviceCreateButton.tsx function DeviceCreateButton (line 18) | function DeviceCreateButton() { FILE: apps/client/src/features/device/DeviceDeleteButton.tsx type Props (line 18) | interface Props { function DeviceDeleteButton (line 22) | function DeviceDeleteButton({ deviceId }: Props) { FILE: apps/client/src/features/device/DeviceKeyButton.tsx type Props (line 14) | interface Props { function DeviceKeyButton (line 18) | function DeviceKeyButton({ deviceId }: Props) { FILE: apps/client/src/features/device/DeviceUpdateButton.tsx type Props (line 19) | interface Props { function DeviceUpdateButton (line 23) | function DeviceUpdateButton({ device }: Props) { FILE: apps/client/src/features/dynamic-dashboard/GroupCanvas.tsx constant MOBILE_ROW_UNIT_PX (line 56) | const MOBILE_ROW_UNIT_PX = 28; constant DRAG_DELETE_SHOW_MAX_CLIENT_Y (line 59) | const DRAG_DELETE_SHOW_MAX_CLIENT_Y = 100; constant DRAG_DELETE_TARGET_TOP (line 62) | const DRAG_DELETE_TARGET_TOP = "3.5rem"; constant DRAG_SPRING_STIFFNESS (line 65) | const DRAG_SPRING_STIFFNESS = 400; constant DRAG_SPRING_DAMPING (line 66) | const DRAG_SPRING_DAMPING = 40; type Vec2 (line 68) | type Vec2 = { x: number; y: number }; type DragSpringSim (line 70) | type DragSpringSim = { function clampGridSpan (line 78) | function clampGridSpan(position: number, span: number, limit: number): n... type DragSessionState (line 84) | type DragSessionState = { type ResizeEdge (line 92) | type ResizeEdge = "n" | "s" | "e" | "w" | "ne" | "nw" | "se" | "sw"; type ResizeState (line 94) | type ResizeState = { constant FRAME_STRIP_CLASS (line 104) | const FRAME_STRIP_CLASS = function resizeCursorForEdge (line 107) | function resizeCursorForEdge(edge: ResizeEdge): string { function startResize (line 126) | function startResize( type GroupCanvasProps (line 147) | type GroupCanvasProps = { function GroupCanvas (line 154) | function GroupCanvas({ type ButtonConfigEditorProps (line 996) | type ButtonConfigEditorProps = { function ButtonConfigEditor (line 1001) | function ButtonConfigEditor({ item, onSave }: ButtonConfigEditorProps) { function Placeholder (line 1045) | function Placeholder({ text }: { text: string }) { FILE: apps/client/src/features/dynamic-dashboard/events/dispatcher.ts constant DEFAULT_DASHBOARD_COOLDOWN_MS (line 9) | const DEFAULT_DASHBOARD_COOLDOWN_MS = 320; constant MIN_DASHBOARD_COOLDOWN_MS (line 10) | const MIN_DASHBOARD_COOLDOWN_MS = 100; type DashboardEventDispatchContext (line 17) | type DashboardEventDispatchContext = { type DashboardEventDispatcherDeps (line 30) | type DashboardEventDispatcherDeps = { function createDashboardEventDispatcher (line 38) | function createDashboardEventDispatcher(deps: DashboardEventDispatcherDe... type DashboardEventDispatcher (line 119) | type DashboardEventDispatcher = ReturnType< FILE: apps/client/src/features/dynamic-dashboard/panels/ButtonPanel.tsx type ButtonPanelProps (line 7) | type ButtonPanelProps = { function ButtonPanel (line 13) | function ButtonPanel({ FILE: apps/client/src/features/dynamic-dashboard/panels/FlowPanel.tsx type FlowPanelProps (line 20) | type FlowPanelProps = { type FlowStatusPayload (line 25) | type FlowStatusPayload = { function FlowPanel (line 31) | function FlowPanel({ data, onFlowChange }: FlowPanelProps) { FILE: apps/client/src/features/dynamic-dashboard/panels/MapPanel.tsx type MapPanelProps (line 16) | type MapPanelProps = { constant FALLBACK_CENTER (line 21) | const FALLBACK_CENTER: [number, number] = [37.5665, 126.978]; constant FALLBACK_ZOOM (line 22) | const FALLBACK_ZOOM = 5; function MapPanel (line 24) | function MapPanel({ data, onLayerChange }: MapPanelProps) { function ResizeInvalidator (line 142) | function ResizeInvalidator() { FILE: apps/client/src/features/entity/AllEntities.tsx function AllEntities (line 9) | function AllEntities() { FILE: apps/client/src/features/entity/AnalyzeMenuItem.tsx type AnalyzeMenuItemProps (line 9) | interface AnalyzeMenuItemProps { function AnalyzeMenuItem (line 14) | function AnalyzeMenuItem({ topic, className }: AnalyzeMenuItemProps) { FILE: apps/client/src/features/entity/Card.tsx type StreamState (line 24) | type StreamState = { function EntityCard (line 42) | function EntityCard({ function DefaultEntityCard (line 227) | function DefaultEntityCard({ item }: { item: EntityAll }) { function Dot (line 262) | function Dot({ color }: { color: string }) { function Offline (line 266) | function Offline() { function Online (line 274) | function Online() { FILE: apps/client/src/features/entity/EntityCreateButton.tsx function EntityCreateButton (line 31) | function EntityCreateButton() { FILE: apps/client/src/features/entity/EntityDeleteButton.tsx type Props (line 17) | interface Props { function EntityDeleteButton (line 21) | function EntityDeleteButton({ entityId }: Props) { FILE: apps/client/src/features/entity/EntityUpdateButton.tsx type Props (line 30) | interface Props { type EntityFormValues (line 35) | type EntityFormValues = Omit & { function EntityUpdateButton (line 39) | function EntityUpdateButton({ entity, defaultOpen = false }: Props) { FILE: apps/client/src/features/entity/SelectPlatforms.tsx function EntitySelectPlatforms (line 3) | function EntitySelectPlatforms() { FILE: apps/client/src/features/entity/SelectTypes.tsx function EntitySelectTypes (line 4) | function EntitySelectTypes() { FILE: apps/client/src/features/entity/StateHistorySheet.tsx type Props (line 22) | type Props = { constant STRIP_WIDTH (line 29) | const STRIP_WIDTH = 360; constant STRIP_HEIGHT (line 30) | const STRIP_HEIGHT = 80; constant STRIP_PADDING_X (line 31) | const STRIP_PADDING_X = 16; constant AXIS_Y (line 32) | const AXIS_Y = STRIP_HEIGHT - 24; function StateHistorySheet (line 34) | function StateHistorySheet({ function SummaryCell (line 239) | function SummaryCell({ label, value }: { label: string; value: string }) { FILE: apps/client/src/features/entity/useEntitiesData.ts type StreamState (line 7) | type StreamState = { type ChangeStatePayload (line 12) | type ChangeStatePayload = { function useEntitiesData (line 17) | function useEntitiesData() { FILE: apps/client/src/features/error/index.tsx function ErrorRender (line 3) | function ErrorRender() { FILE: apps/client/src/features/flow-log/FlowLog.tsx function FlowLog (line 6) | function FlowLog() { FILE: apps/client/src/features/flow/AddCustomNode.tsx function CustomNodeForm (line 50) | function CustomNodeForm({ function AddCustomNode (line 123) | function AddCustomNode() { FILE: apps/client/src/features/flow/Flow.tsx function FlowPage (line 41) | function FlowPage() { function FlowHeader (line 106) | function FlowHeader() { function FlowSidebar (line 173) | function FlowSidebar() { FILE: apps/client/src/features/flow/Graph.tsx type NodeGroup (line 43) | type NodeGroup = { function Graph (line 56) | function Graph({ FILE: apps/client/src/features/flow/Options.tsx type OptionsProps (line 23) | interface OptionsProps { function Options (line 43) | function Options({ open, selectedNode, setOpen }: OptionsProps) { FILE: apps/client/src/features/flow/RunFlow.tsx function RunFlowButton (line 9) | function RunFlowButton() { FILE: apps/client/src/features/flow/SelectedItemActions.tsx type SelectedElement (line 4) | type SelectedElement = { type Props (line 9) | type Props = { function SelectedItemActions (line 15) | function SelectedItemActions({ selectedElement, onDeleteNode }: Props) { FILE: apps/client/src/features/flow/flow-chat/buildSystemPrompt.ts function buildFlowSystemPrompt (line 5) | function buildFlowSystemPrompt( FILE: apps/client/src/features/flow/flow-chat/executeToolCalls.ts type ToolExecutionResult (line 4) | interface ToolExecutionResult { type FlowStoreActions (line 11) | interface FlowStoreActions { function validateEdges (line 19) | function validateEdges( function executeGenerateFlow (line 68) | function executeGenerateFlow( function executeAddNodes (line 84) | function executeAddNodes( function executeAddEdges (line 99) | function executeAddEdges( function executeRemoveNodes (line 128) | function executeRemoveNodes( function executeUpdateNode (line 153) | function executeUpdateNode( function executeFlowToolCalls (line 177) | function executeFlowToolCalls( FILE: apps/client/src/features/flow/flow-chat/flowTools.ts constant FLOW_TOOLS (line 3) | const FLOW_TOOLS: Tool[] = [ FILE: apps/client/src/features/flow/flowNode.ts type DefaultValueType (line 3) | type DefaultValueType = { constant DEFINITION_NODE (line 10) | const DEFINITION_NODE = { FILE: apps/client/src/features/flow/flowTypes.ts type Connector (line 3) | type Connector = { type NodeRenderer (line 9) | type NodeRenderer = ( type NodeTypes (line 14) | type NodeTypes = keyof typeof DEFINITION_NODE; type NumberNodeType (line 16) | type NumberNodeType = { type TextNodeType (line 20) | type TextNodeType = { type AddNodeType (line 24) | type AddNodeType = { type SetVariableNodeType (line 29) | type SetVariableNodeType = { type ConditionNodeType (line 34) | type ConditionNodeType = { type CalculationNodeType (line 39) | type CalculationNodeType = { type LogicOpetatorNodeType (line 43) | type LogicOpetatorNodeType = { type HTTPRequestNodeType (line 59) | type HTTPRequestNodeType = { type LoopNodeType (line 64) | type LoopNodeType = { type IntervalNodeType (line 68) | type IntervalNodeType = { type MqttPublishNodeType (line 73) | type MqttPublishNodeType = { type MqttSubscribeNodeType (line 79) | type MqttSubscribeNodeType = { type TypeConverterNodeType (line 83) | type TypeConverterNodeType = { type RtpStreamInNodeType (line 87) | type RtpStreamInNodeType = { type JsonSelectorNodeType (line 91) | type JsonSelectorNodeType = { type GstDecoderNodeType (line 95) | type GstDecoderNodeType = { type YoloDetectNodeType (line 99) | type YoloDetectNodeType = { type WebSocketOnNodeType (line 107) | type WebSocketOnNodeType = { type WebSocketSendNodeType (line 111) | type WebSocketSendNodeType = { type Generalize (line 115) | type Generalize = { type AllSpecificDataNodeTypes (line 125) | type AllSpecificDataNodeTypes = { type SpecificDataNodeType (line 128) | type SpecificDataNodeType = type DataNodeType (line 131) | type DataNodeType = Generalize>; type DataNodeTypeType (line 133) | type DataNodeTypeType = Record; type Node (line 135) | type Node = { type Edge (line 148) | type Edge = { type GraphProps (line 154) | interface GraphProps { FILE: apps/client/src/features/flow/flowUtils.ts function getDefalutValue (line 5) | function getDefalutValue(type: NodeTypes, id: string) { function getDefalutNode (line 17) | function getDefalutNode( function getCustomValue (line 36) | function getCustomValue( function getCustomNode (line 86) | function getCustomNode( function getNodeValue (line 110) | function getNodeValue( function getNode (line 126) | function getNode( FILE: apps/client/src/features/flow/nodes/ButtonNode.tsx function renderButtonNode (line 3) | function renderButtonNode( FILE: apps/client/src/features/flow/nodes/CalcNode.tsx function renderCalcNode (line 3) | function renderCalcNode( FILE: apps/client/src/features/flow/nodes/HttpNode.tsx function renderHttpNode (line 3) | function renderHttpNode( FILE: apps/client/src/features/flow/nodes/IntervalNode.tsx function renderIntervalNode (line 3) | function renderIntervalNode( FILE: apps/client/src/features/flow/nodes/LogicNode.tsx function renderLogicNode (line 3) | function renderLogicNode( FILE: apps/client/src/features/flow/nodes/LoopNode.tsx function renderLoopNode (line 3) | function renderLoopNode( FILE: apps/client/src/features/flow/nodes/MQTTNode.tsx function mqttLikeCenterLabel (line 3) | function mqttLikeCenterLabel(d: Node): string { function renderMQTTNode (line 11) | function renderMQTTNode( FILE: apps/client/src/features/flow/nodes/NumberNode.tsx function renderNumberNode (line 3) | function renderNumberNode( FILE: apps/client/src/features/flow/nodes/ProcessingNode.tsx function renderProcessingNode (line 3) | function renderProcessingNode( FILE: apps/client/src/features/flow/nodes/TitleNode.tsx function renderTitleNode (line 3) | function renderTitleNode( FILE: apps/client/src/features/flow/nodes/VarNode.tsx function renderVarNode (line 3) | function renderVarNode( FILE: apps/client/src/features/footer/index.tsx function Footer (line 5) | function Footer() { FILE: apps/client/src/features/ha/HaEntitiesTable.tsx type HaEntitiesTableProps (line 19) | interface HaEntitiesTableProps { FILE: apps/client/src/features/ha/HaStatBlock.tsx type HaStatBlockProps (line 6) | interface HaStatBlockProps { FILE: apps/client/src/features/integration/Integration.tsx function Intergration (line 243) | function Intergration() { FILE: apps/client/src/features/integration/constants.ts constant INTEGRATION_DEVICE_ID (line 1) | const INTEGRATION_DEVICE_ID: Record = { constant INTEGRATION_ENTITY_ID (line 7) | const INTEGRATION_ENTITY_ID: Record = { FILE: apps/client/src/features/integration/types.ts type IntegrationId (line 1) | type IntegrationId = "home-assistant" | "ros2" | "sdr"; type StepComponentProps (line 3) | interface StepComponentProps { type FinalStepProps (line 8) | interface FinalStepProps { type IntegrationWizardModalProps (line 12) | interface IntegrationWizardModalProps { FILE: apps/client/src/features/json/JsonEditor.tsx type JsonCodeEditorProps (line 7) | interface JsonCodeEditorProps extends ReactCodeMirrorProps { FILE: apps/client/src/features/llm-chat/ChatInput.tsx type ChatInputProps (line 5) | interface ChatInputProps { function ChatInput (line 13) | function ChatInput({ FILE: apps/client/src/features/llm-chat/ChatMessage.tsx type ChatMessageProps (line 5) | interface ChatMessageProps { function ChatMessage (line 9) | function ChatMessage({ message }: ChatMessageProps) { FILE: apps/client/src/features/llm-chat/ChatMessages.tsx type ChatMessagesProps (line 6) | interface ChatMessagesProps { function ChatMessages (line 11) | function ChatMessages({ messages, isLoading }: ChatMessagesProps) { FILE: apps/client/src/features/llm-chat/ChatPanel.tsx constant PANEL_WIDTH (line 9) | const PANEL_WIDTH = 400; constant ELECTRON_TOP_OFFSET (line 10) | const ELECTRON_TOP_OFFSET = 34; function ChatPanel (line 12) | function ChatPanel() { FILE: apps/client/src/features/llm-chat/ChatPanelContainer.tsx function ChatPanelContainer (line 7) | function ChatPanelContainer() { FILE: apps/client/src/features/llm-chat/ChatPanelMobile.tsx function ChatPanelMobile (line 13) | function ChatPanelMobile() { FILE: apps/client/src/features/llm-chat/store.ts function generateId (line 13) | function generateId(): string { function buildHistory (line 17) | function buildHistory(messages: ChatMessage[]): HistoryMessage[] { constant DEFAULT_CAPSULE_URL (line 28) | const DEFAULT_CAPSULE_URL = import.meta.env.VITE_CAPSULE_URL || "http://... function handleChatError (line 41) | function handleChatError( FILE: apps/client/src/features/llm-chat/types.ts type ChatMessageImage (line 4) | interface ChatMessageImage { type ChatMessage (line 13) | interface ChatMessage { type FlowChatContext (line 31) | interface FlowChatContext { type ChatPanelState (line 37) | interface ChatPanelState { FILE: apps/client/src/features/llm-chat/useChatKeyboard.ts constant CHAT_KEYBOARD_SHORTCUT (line 4) | const CHAT_KEYBOARD_SHORTCUT = "k"; function useChatKeyboard (line 6) | function useChatKeyboard() { FILE: apps/client/src/features/log/index.tsx function Logs (line 19) | function Logs() { FILE: apps/client/src/features/map-draw/FeatureDetailsPanel.tsx type FeatureDetailsPanelProps (line 51) | interface FeatureDetailsPanelProps { function FeatureDetailsPanel (line 56) | function FeatureDetailsPanel({ FILE: apps/client/src/features/map-draw/FeatureDrawingPreview.tsx function DrawingPreview (line 4) | function DrawingPreview() { FILE: apps/client/src/features/map-draw/FeatureEditor.tsx function FeatureEditor (line 14) | function FeatureEditor() { FILE: apps/client/src/features/map-draw/FeatureRenderer.tsx type FeatureRendererProps (line 7) | interface FeatureRendererProps { function FeatureRenderer (line 11) | function FeatureRenderer({ feature }: FeatureRendererProps) { FILE: apps/client/src/features/map-draw/LayerDialog.tsx type LayerDialogProps (line 16) | interface LayerDialogProps { function LayerDialog (line 23) | function LayerDialog({ FILE: apps/client/src/features/map-draw/LayerSidebar.tsx type LayerDialogState (line 27) | type LayerDialogState = function LayerSidebar (line 32) | function LayerSidebar() { FILE: apps/client/src/features/map-draw/MapEvents.tsx function MapEvents (line 4) | function MapEvents() { FILE: apps/client/src/features/map-draw/MapToolbar.tsx function MapToolbar (line 5) | function MapToolbar() { FILE: apps/client/src/features/map-entity/EntityDetailsPanel.tsx type EntityDetailsPanelProps (line 21) | interface EntityDetailsPanelProps { function EntityDetailsPanel (line 26) | function EntityDetailsPanel({ FILE: apps/client/src/features/map-entity/render.tsx constant MARKER_W (line 11) | const MARKER_W = 32; constant MARKER_H (line 12) | const MARKER_H = 36; constant MARKER_SEL_W (line 13) | const MARKER_SEL_W = 40; constant MARKER_SEL_H (line 14) | const MARKER_SEL_H = 44; constant PIN_SHADOW (line 16) | const PIN_SHADOW = function lucideMapPinMarkup (line 19) | function lucideMapPinMarkup(size: number): string { function entityMarkerHtml (line 33) | function entityMarkerHtml(selected: boolean): string { function MapEntityRender (line 54) | function MapEntityRender() { FILE: apps/client/src/features/map-entity/store.ts type MapEntityState (line 4) | interface MapEntityState { FILE: apps/client/src/features/map/CurrentLocationMarker.tsx type Props (line 4) | type Props = { function CurrentLocationMarker (line 8) | function CurrentLocationMarker({ onLocationUpdate }: Props) { FILE: apps/client/src/features/map/MapViewPersistence.tsx constant MAP_VIEW_STORAGE_KEY (line 4) | const MAP_VIEW_STORAGE_KEY = "map:last-view"; type StoredMapView (line 6) | type StoredMapView = { function getStoredMapView (line 12) | function getStoredMapView(): StoredMapView | null { function persistMapView (line 30) | function persistMapView(center: { lat: number; lng: number }, zoom: numb... function MapLastViewTracker (line 41) | function MapLastViewTracker() { FILE: apps/client/src/features/map/index.tsx function MapResizer (line 37) | function MapResizer({ isSidebarCollapsed }: { isSidebarCollapsed: boolea... function CustomZoomControl (line 53) | function CustomZoomControl() { function CustomScaleControl (line 78) | function CustomScaleControl() { function MapView (line 128) | function MapView({ FILE: apps/client/src/features/recording/RecordingButton.tsx type RecordingButtonProps (line 14) | interface RecordingButtonProps { function RecordingButton (line 19) | function RecordingButton({ topic, className }: RecordingButtonProps) { function RecordingMenuItem (line 82) | function RecordingMenuItem({ topic, className }: RecordingButtonProps) { FILE: apps/client/src/features/recording/RecordingsList.tsx function RecordingsList (line 36) | function RecordingsList() { type RecordingRowProps (line 152) | interface RecordingRowProps { function RecordingRow (line 161) | function RecordingRow({ function formatDuration (line 231) | function formatDuration(ms: number): string { function formatFileSize (line 243) | function formatFileSize(bytes: number): string { FILE: apps/client/src/features/recording/VideoPlaybackDialog.tsx type VideoPlaybackDialogProps (line 14) | interface VideoPlaybackDialogProps { function VideoPlaybackDialog (line 20) | function VideoPlaybackDialog({ function formatDuration (line 96) | function formatDuration(ms: number): string { function formatFileSize (line 107) | function formatFileSize(bytes: number): string { FILE: apps/client/src/features/recording/components/AudioWaveformPlayer.tsx type AudioWaveformPlayerProps (line 10) | interface AudioWaveformPlayerProps { function AudioWaveformPlayer (line 17) | function AudioWaveformPlayer({ FILE: apps/client/src/features/recording/components/FrameTimeline.tsx type Frame (line 5) | interface Frame { type FrameTimelineProps (line 10) | interface FrameTimelineProps { function FrameTimeline (line 19) | function FrameTimeline({ function formatTime (line 158) | function formatTime(ms: number): string { FILE: apps/client/src/features/recording/components/PlaybackControls.tsx type PlaybackControlsProps (line 5) | interface PlaybackControlsProps { function PlaybackControls (line 15) | function PlaybackControls({ function formatTime (line 53) | function formatTime(ms: number): string { FILE: apps/client/src/features/recording/components/TimeRuler.tsx type TimeRulerProps (line 4) | interface TimeRulerProps { function TimeRuler (line 13) | function TimeRuler({ function formatRulerTime (line 135) | function formatRulerTime(ms: number): string { FILE: apps/client/src/features/recording/components/VideoControlBar.tsx type VideoControlBarProps (line 9) | interface VideoControlBarProps { function VideoControlBar (line 17) | function VideoControlBar({ FILE: apps/client/src/features/recording/components/WaveformCanvas.tsx type WaveformCanvasProps (line 5) | interface WaveformCanvasProps { function WaveformCanvas (line 17) | function WaveformCanvas({ FILE: apps/client/src/features/recording/hooks/useAudioWaveform.ts type UseAudioWaveformOptions (line 3) | interface UseAudioWaveformOptions { type UseAudioWaveformReturn (line 8) | interface UseAudioWaveformReturn { function useAudioWaveform (line 14) | function useAudioWaveform({ FILE: apps/client/src/features/recording/hooks/useMediaPlayback.ts type UseMediaPlaybackReturn (line 3) | interface UseMediaPlaybackReturn { function useMediaPlayback (line 14) | function useMediaPlayback( FILE: apps/client/src/features/recording/hooks/useVideoFrames.ts type Frame (line 3) | interface Frame { type UseVideoFramesOptions (line 8) | interface UseVideoFramesOptions { type UseVideoFramesReturn (line 15) | interface UseVideoFramesReturn { function useVideoFrames (line 21) | function useVideoFrames({ FILE: apps/client/src/features/role/RoleForm.tsx type RoleFormProps (line 29) | interface RoleFormProps { FILE: apps/client/src/features/ros2/Ros2Dashboard.tsx function Ros2Dashboard (line 5) | function Ros2Dashboard() { FILE: apps/client/src/features/rtc/AudioLevelBar.tsx type AudioLevelBarProps (line 4) | type AudioLevelBarProps = { function AudioLevelBar (line 9) | function AudioLevelBar({ stream, className }: AudioLevelBarProps) { FILE: apps/client/src/features/rtc/StreamReceiver.tsx type StreamReceiverProps (line 7) | type StreamReceiverProps = { function StreamReceiver (line 12) | function StreamReceiver({ topic, streamType }: StreamReceiverProps) { FILE: apps/client/src/features/rtc/WebRTCProvider.tsx type StreamInfo (line 23) | type StreamInfo = { type WebRTCContextType (line 28) | type WebRTCContextType = { function useWebRTC (line 37) | function useWebRTC() { type WebRTCProviderProps (line 45) | type WebRTCProviderProps = { function WebRTCProvider (line 49) | function WebRTCProvider({ children }: WebRTCProviderProps) { FILE: apps/client/src/features/rtc/captureFrame.ts function captureFrameFromStream (line 8) | async function captureFrameFromStream( FILE: apps/client/src/features/rtc/rtc.ts type WebRTCConfig (line 3) | interface WebRTCConfig { class WebRTCManager (line 7) | class WebRTCManager { method constructor (line 20) | constructor( method setupEvents (line 38) | private setupEvents(): void { method connect (line 138) | public async connect(): Promise { method subscribe (line 159) | public subscribe(topic: string, streamType: "audio" | "video"): void { method close (line 189) | public close(): void { FILE: apps/client/src/features/rtc/turnService.ts type TurnUsage (line 4) | interface TurnUsage { type TurnCredentialsResponse (line 15) | interface TurnCredentialsResponse { constant DEFAULT_ICE_SERVERS (line 21) | const DEFAULT_ICE_SERVERS: RTCIceServer[] = [ constant TURN_CACHE_KEY (line 25) | const TURN_CACHE_KEY = "vessel_turn_credentials"; constant RENEWAL_BUFFER_MS (line 26) | const RENEWAL_BUFFER_MS = 5 * 60 * 1000; type CachedCredentials (line 28) | interface CachedCredentials { type CredentialChangeCallback (line 35) | type CredentialChangeCallback = (iceServers: RTCIceServer[]) => void; type TurnCredentialErrorCode (line 38) | type TurnCredentialErrorCode = class TurnCredentialError (line 43) | class TurnCredentialError extends Error { method constructor (line 48) | constructor( function isTurnCredentialError (line 61) | function isTurnCredentialError(error: unknown): error is TurnCredentialE... type TurnErrorCallback (line 65) | type TurnErrorCallback = (error: TurnCredentialError) => void; function onTurnCredentialError (line 68) | function onTurnCredentialError(cb: TurnErrorCallback): () => void { function notifyTurnCredentialError (line 75) | function notifyTurnCredentialError(error: TurnCredentialError): void { function getDefaultUsage (line 79) | function getDefaultUsage(raw: Partial = {}): TurnUsage { function getTurnErrorCode (line 102) | function getTurnErrorCode(errorCode?: string): TurnCredentialErrorCode { function parseInvokeError (line 113) | async function parseInvokeError(error: unknown): Promise void { function notifyListeners (line 195) | function notifyListeners(iceServers: RTCIceServer[]): void { function scheduleRenewal (line 203) | function scheduleRenewal(expiresAt: string): void { function stopAutoRenewal (line 248) | function stopAutoRenewal(): void { function getCachedCredentials (line 257) | function getCachedCredentials(): CachedCredentials | null { function cacheCredentials (line 277) | function cacheCredentials(data: TurnCredentialsResponse): void { constant TURN_CONFIG_KEY (line 291) | const TURN_CONFIG_KEY = "turn_server_config"; function loadTurnConfigFromServer (line 293) | async function loadTurnConfigFromServer(): Promise { function fetchTurnCredentials (line 405) | async function fetchTurnCredentials(): Promise { function clearTurnCache (line 439) | function clearTurnCache(): void { function getTurnCredentialErrorSummary (line 443) | function getTurnCredentialErrorSummary(error: TurnCredentialError): stri... FILE: apps/client/src/features/sdr/SdrAudioPlayer.tsx constant AUDIO_SAMPLE_RATE (line 4) | const AUDIO_SAMPLE_RATE = 48000; constant BUFFER_SIZE (line 5) | const BUFFER_SIZE = 4096; constant WATERFALL_HEIGHT (line 6) | const WATERFALL_HEIGHT = 200; constant FFT_SIZE (line 7) | const FFT_SIZE = 2048; function amplitudeToColor (line 10) | function amplitudeToColor(value: number): [number, number, number] { type SdrAudioPlayerProps (line 50) | interface SdrAudioPlayerProps { function SdrAudioPlayer (line 57) | function SdrAudioPlayer({ FILE: apps/client/src/features/sdr/SdrDashboard.tsx function SdrDashboard (line 17) | function SdrDashboard() { FILE: apps/client/src/features/search/search-form.tsx function SearchForm (line 10) | function SearchForm({ ...props }: React.ComponentProps<"form">) { FILE: apps/client/src/features/server-resource/resourceUsage.tsx function ResourceUsage (line 12) | function ResourceUsage() { FILE: apps/client/src/features/setup/index.tsx type SetupStep (line 6) | type SetupStep = { FILE: apps/client/src/features/sidebar/footer.tsx function NavFooter (line 37) | function NavFooter({ FILE: apps/client/src/features/sidebar/index.tsx constant CONTROLS_OPEN_KEY (line 46) | const CONTROLS_OPEN_KEY = "controls-menu-open"; constant SIDEBAR_SCROLL_KEY (line 47) | const SIDEBAR_SCROLL_KEY = "sidebar-scroll-top"; function AppSidebar (line 119) | function AppSidebar({ ...props }: ComponentProps) { FILE: apps/client/src/features/stat/index.tsx function StatBlock (line 11) | function StatBlock() { FILE: apps/client/src/features/topbar/index.tsx function TopBar (line 5) | function TopBar({ hide = false }: { hide?: boolean }) { FILE: apps/client/src/features/user/UserRoleAssigner.tsx type UserRoleAssignerProps (line 23) | interface UserRoleAssignerProps { FILE: apps/client/src/features/user/userDelete.tsx type DeleteUserProps (line 16) | interface DeleteUserProps { FILE: apps/client/src/features/user/userEdit.tsx type EditUserProps (line 19) | interface EditUserProps { FILE: apps/client/src/features/user/userForm.tsx type UserFormProps (line 13) | interface UserFormProps { FILE: apps/client/src/features/ws/FlowUiEventBridge.tsx function FlowUiEventBridge (line 12) | function FlowUiEventBridge() { FILE: apps/client/src/features/ws/IsConnected.tsx function Offline (line 4) | function Offline() { function Online (line 12) | function Online() { function WebSocketStatusIndicator (line 20) | function WebSocketStatusIndicator() { FILE: apps/client/src/features/ws/WebSocketProvider.tsx type WebSocketManager (line 14) | type WebSocketManager = WebSocketChannel | MockWebSocketChannel; type WebSocketContextState (line 16) | interface WebSocketContextState { FILE: apps/client/src/features/ws/flowUiAdapters/toastFlowUiAdapter.ts function isRecord (line 4) | function isRecord(value: unknown): value is Record { function asToastData (line 8) | function asToastData(raw: unknown): FlowUiEventToastData | null { function toastFlowUiAdapter (line 29) | function toastFlowUiAdapter(payload: FlowUiEventPayload): void { FILE: apps/client/src/features/ws/flowUiEventRouter.ts type FlowUiEventAdapter (line 3) | type FlowUiEventAdapter = (payload: FlowUiEventPayload) => void; function createFlowUiEventRouter (line 10) | function createFlowUiEventRouter( function mergeFlowUiAdapters (line 24) | function mergeFlowUiAdapters( FILE: apps/client/src/features/ws/ws.ts type FlowUiEventPayload (line 4) | type FlowUiEventPayload = { type FlowUiEventToastData (line 16) | type FlowUiEventToastData = { type WebSocketMessage (line 23) | type WebSocketMessage = { constant FLOW_RUN_SESSION_STORAGE_KEY (line 61) | const FLOW_RUN_SESSION_STORAGE_KEY = "vessel_flow_run_session_id"; function getFlowRunSessionId (line 64) | function getFlowRunSessionId(): string { class WebSocketChannel (line 80) | class WebSocketChannel { method isConnected (line 85) | public isConnected(): boolean { method connect (line 89) | connect(url: string): void { method send (line 105) | send(message: WebSocketMessage): void { method close (line 119) | close(): void { method addMessageListener (line 125) | addMessageListener(listener: (msg: WebSocketMessage) => void): void { method removeMessageListener (line 129) | removeMessageListener(listener: (msg: WebSocketMessage) => void): void { FILE: apps/client/src/features/ws/wsMock.ts class MockWebSocketChannel (line 3) | class MockWebSocketChannel { method isConnected (line 10) | isConnected(): boolean { method emit (line 14) | private emit(message: WebSocketMessage) { method connect (line 18) | connect(): void { method send (line 53) | send(message: WebSocketMessage): void { method close (line 86) | close(): void { method addMessageListener (line 94) | addMessageListener(listener: (msg: WebSocketMessage) => void): void { method removeMessageListener (line 98) | removeMessageListener(listener: (msg: WebSocketMessage) => void): void { FILE: apps/client/src/hooks/use-mobile.ts constant MOBILE_BREAKPOINT (line 3) | const MOBILE_BREAKPOINT = 768 function useIsMobile (line 5) | function useIsMobile() { FILE: apps/client/src/lib/geometry-precision.ts type GeometryProperties (line 3) | interface GeometryProperties { constant WGS84 (line 9) | const WGS84 = { function vincentyDistance (line 26) | function vincentyDistance( function sphericalTriangleArea (line 93) | function sphericalTriangleArea( function calculateFeatureGeometry (line 118) | function calculateFeatureGeometry( FILE: apps/client/src/lib/geometry.ts type GeometryProperties (line 3) | interface GeometryProperties { constant EARTH_RADIUS_KM (line 9) | const EARTH_RADIUS_KM = 6371; function calculateFeatureGeometry (line 40) | function calculateFeatureGeometry( FILE: apps/client/src/lib/jwt.ts type JwtPayload (line 1) | type JwtPayload = { function parseJwt (line 7) | function parseJwt(token?: string): JwtPayload | null { FILE: apps/client/src/lib/storage.ts constant TOKEN_KEY (line 1) | const TOKEN_KEY = "vessel_token"; constant SERVER_URL_KEY (line 2) | const SERVER_URL_KEY = "vessel_server_url"; constant RECENT_URLS_KEY (line 3) | const RECENT_URLS_KEY = "vessel_recent_server_urls"; constant CAPSULE_URL_KEY (line 4) | const CAPSULE_URL_KEY = "vessel_capsule_url"; FILE: apps/client/src/lib/string.ts function formatConstantCase (line 1) | function formatConstantCase(str: string) { FILE: apps/client/src/lib/utils.ts function cn (line 4) | function cn(...inputs: ClassValue[]) { FILE: apps/client/src/pages/auth/index.tsx function AuthPage (line 3) | function AuthPage() { FILE: apps/client/src/pages/code/index.tsx function CodePage (line 28) | function CodePage() { FILE: apps/client/src/pages/dashboard/DashboardMainPanel.tsx type DashboardMainPanelContentView (line 8) | type DashboardMainPanelContentView = "main" | "ha" | "ros2" | "sdr"; type DashboardMainPanelProps (line 10) | type DashboardMainPanelProps = { function DashboardMainPanel (line 14) | function DashboardMainPanel({ FILE: apps/client/src/pages/desktop-settings/index.tsx constant HOST_PRESETS (line 20) | const HOST_PRESETS = [ function DesktopSettingsPage (line 54) | function DesktopSettingsPage(): React.ReactElement { FILE: apps/client/src/pages/devices/index.tsx function DevicePage (line 27) | function DevicePage() { FILE: apps/client/src/pages/dynamic-dashboard/DynamicDashboardMainPanel.tsx type DynamicDashboardMainPanelProps (line 6) | type DynamicDashboardMainPanelProps = { function DynamicDashboardMainPanel (line 11) | function DynamicDashboardMainPanel({ FILE: apps/client/src/pages/dynamic-dashboard/NewDynamicDashboardPanel.tsx function NewDynamicDashboardPanel (line 6) | function NewDynamicDashboardPanel() { FILE: apps/client/src/pages/flow/index.tsx constant UNSAVED_FLOW_MESSAGE (line 37) | const UNSAVED_FLOW_MESSAGE = function FlowPage (line 40) | function FlowPage() { FILE: apps/client/src/pages/landing/index.tsx function LandingPage (line 11) | function LandingPage() { function Navbar (line 56) | function Navbar() { FILE: apps/client/src/pages/map/index.tsx function MapLayout (line 22) | function MapLayout() { function MapPage (line 54) | function MapPage() { FILE: apps/client/src/pages/notfound/index.tsx function NotFound (line 3) | function NotFound() { FILE: apps/client/src/pages/recordings/index.tsx function RecordingsPage (line 18) | function RecordingsPage() { FILE: apps/client/src/pages/settings/account.tsx function formatTurnQuotaUsage (line 44) | function formatTurnQuotaUsage(usage: TurnUsage | null): string | null { function AccountSettingsPage (line 58) | function AccountSettingsPage() { FILE: apps/client/src/pages/settings/config.tsx function ConfigSettingsPage (line 31) | function ConfigSettingsPage() { FILE: apps/client/src/pages/settings/index.tsx type Category (line 28) | type Category = { function SettingsPage (line 88) | function SettingsPage() { FILE: apps/client/src/pages/settings/integration.tsx function IntegrationSettingsPage (line 21) | function IntegrationSettingsPage(): React.ReactElement { FILE: apps/client/src/pages/settings/log.tsx function LogSettingsPage (line 19) | function LogSettingsPage() { FILE: apps/client/src/pages/settings/networks.tsx function useOnlineStatus (line 21) | function useOnlineStatus() { type NetworkCardProps (line 40) | interface NetworkCardProps { function NetworkCard (line 46) | function NetworkCard({ icon, name, status }: NetworkCardProps) { function NetworksSettingsPage (line 64) | function NetworksSettingsPage() { FILE: apps/client/src/pages/settings/services.tsx function ServicesSettingsPage (line 39) | function ServicesSettingsPage() { FILE: apps/client/src/pages/settings/users.tsx function UsersSettingsPage (line 21) | function UsersSettingsPage() { FILE: apps/client/src/pages/setup/index.tsx function SetupPage (line 21) | function SetupPage(): React.ReactElement { FILE: apps/client/src/shared/demo.ts constant DEMO_HOSTNAME (line 1) | const DEMO_HOSTNAME = "demo.vsl.cartesiancs.com"; constant DEMO_SERVER_URL (line 14) | const DEMO_SERVER_URL = "https://demo.vessel.local"; constant DEMO_TOKEN (line 15) | const DEMO_TOKEN = "demo-token"; FILE: apps/client/src/shared/desktop.ts type InvokeFn (line 1) | type InvokeFn = (cmd: string, args?: Record) => Promise... type TauriCore (line 2) | type TauriCore = { invoke?: InvokeFn }; type TauriNamespace (line 3) | type TauriNamespace = { invoke?: InvokeFn }; type TauriGlobal (line 4) | type TauriGlobal = { type SidecarStatus (line 91) | type SidecarStatus = { type ServerAddress (line 98) | type ServerAddress = { FILE: apps/client/src/shared/mock/mockAdapter.ts type DeviceWithEntities (line 121) | type DeviceWithEntities = MockDatabase["devices"][number] & { type RequestBody (line 125) | type RequestBody = Record; type VertexInput (line 126) | type VertexInput = { FILE: apps/client/src/shared/mock/mockData.ts type MockDatabase (line 14) | type MockDatabase = { FILE: apps/client/src/widgets/auth/AuthenticatedLayout.tsx function AuthenticatedLayout (line 13) | function AuthenticatedLayout() { FILE: apps/client/src/widgets/auth/TopBarWrapper.tsx type TopBarWrapType (line 8) | interface TopBarWrapType extends PropsWithChildren { function TopBarWrapper (line 12) | function TopBarWrapper(props: TopBarWrapType) { FILE: apps/client/src/widgets/device-list/DeviceList.tsx function DeviceList (line 30) | function DeviceList() { FILE: apps/client/src/widgets/entity-list/EntityList.tsx function EntityList (line 31) | function EntityList() { FILE: apps/desktop/src-tauri/build.rs function main (line 5) | fn main() { FILE: apps/desktop/src-tauri/src/main.rs constant DEFAULT_LISTEN (line 23) | const DEFAULT_LISTEN: &str = "0.0.0.0:6174"; constant CONFIG_FILE (line 24) | const CONFIG_FILE: &str = "config.toml"; constant SETTINGS_QUERY (line 25) | const SETTINGS_QUERY: &str = "index.html?view=desktop_settings"; type SidecarManager (line 28) | struct SidecarManager { type SidecarStatus (line 39) | struct SidecarStatus { type ServerAddress (line 47) | struct ServerAddress { function ensure_workdir (line 52) | fn ensure_workdir( function read_listen_address (line 71) | fn read_listen_address(workdir: &Path) -> Option { function write_listen_address (line 85) | fn write_listen_address(workdir: &Path, listen: &str) -> Result<(), Stri... function base_url_from_listen (line 110) | fn base_url_from_listen(listen: &str) -> String { function parse_listen (line 130) | fn parse_listen(listen: &str) -> ServerAddress { function build_status (line 145) | fn build_status(state: &SidecarManager, workdir: &Path) -> SidecarStatus { function write_log (line 160) | fn write_log(path: &Path, msg: &str) { function bytes_to_line (line 169) | fn bytes_to_line(bytes: Vec) -> String { function start_server_sidecar (line 173) | fn start_server_sidecar( function stop_sidecar_internal (line 291) | fn stop_sidecar_internal(state: &SidecarManager) -> Result<(), String> { function update_tray_status (line 298) | fn update_tray_status(app: &AppHandle, status: &SidecarStatus) { function update_tray_toggle (line 311) | fn update_tray_toggle(app: &AppHandle) { function get_sidecar_status (line 323) | fn get_sidecar_status( function start_sidecar (line 334) | fn start_sidecar( function stop_sidecar (line 346) | fn stop_sidecar(app: AppHandle, state: State<'_, SidecarManager>) -> Res... function get_server_address (line 355) | fn get_server_address( function update_server_address (line 365) | fn update_server_address( function open_settings_window (line 443) | fn open_settings_window(app: AppHandle) -> Result<(), String> { function build_tray (line 466) | fn build_tray(app: &AppHandle) -> Result<(), Box> { function main (line 558) | fn main() { FILE: apps/landing/src/App.tsx function App (line 72) | function App() { FILE: apps/landing/src/components/Footer.tsx function Footer (line 36) | function Footer() { FILE: apps/landing/src/components/Navbar.tsx function Navbar (line 13) | function Navbar() { FILE: apps/landing/src/components/UsageCharts.tsx function formatBytes (line 26) | function formatBytes(bytes: number): string { function formatDate (line 34) | function formatDate(dateStr: string): string { function EmptyState (line 62) | function EmptyState() { function hasNetworkData (line 70) | function hasNetworkData(data: DailyUsage[]): boolean { function hasCapsuleRequestData (line 74) | function hasCapsuleRequestData(data: DailyUsage[]): boolean { function UsageCharts (line 79) | function UsageCharts({ FILE: apps/landing/src/components/sections/CapsulePromo.tsx function cx (line 4) | function cx(...classes: Array) { function CapsulePromoSection (line 8) | function CapsulePromoSection() { FILE: apps/landing/src/components/sections/Faqs.tsx type FAQItem (line 5) | type FAQItem = { function cx (line 48) | function cx(...classes: Array) { function FAQSection (line 52) | function FAQSection() { FILE: apps/landing/src/components/sections/Features.tsx function HighlightedText (line 33) | function HighlightedText({ function FeaturesSection (line 77) | function FeaturesSection() { FILE: apps/landing/src/components/sections/FooterCta.tsx function cx (line 3) | function cx(...classes: Array) { function FooterCtaSection (line 7) | function FooterCtaSection() { FILE: apps/landing/src/components/sections/HeroScene/CameraRig.tsx function smoothstep (line 5) | function smoothstep(t: number): number { constant START_POS (line 9) | const START_POS: [number, number, number] = [-1.5, 1, 5.5]; constant END_POS (line 10) | const END_POS: [number, number, number] = [-0.4, 0.7, 3.8]; function CameraRig (line 12) | function CameraRig() { FILE: apps/landing/src/components/sections/HeroScene/Computers.tsx function Instances (line 8) | function Instances({ children, ...props }: any) { function Computers (line 26) | function Computers(props: any) { function ScreenVideo (line 55) | function ScreenVideo({ frame, panel, ...props }: any) { function Leds (line 94) | function Leds({ instances }: any) { FILE: apps/landing/src/components/sections/HeroScene/HeroScene.tsx function HeroSceneSection (line 11) | function HeroSceneSection() { FILE: apps/landing/src/components/sections/HeroScene/SpinningBox.tsx type SpinningBoxProps (line 7) | interface SpinningBoxProps { function SpinningBox (line 13) | function SpinningBox({ scale = 1, ...props }: SpinningBoxProps) { FILE: apps/landing/src/components/sections/IntegrationImage.tsx function cx (line 4) | function cx(...classes: Array) { type Logo (line 16) | type Logo = { src: string; alt: string }; function LogoMarquee (line 18) | function LogoMarquee({ function IntegrationSection (line 136) | function IntegrationSection() { FILE: apps/landing/src/components/sections/ListCards.tsx type Slide (line 5) | type Slide = { function cx (line 41) | function cx(...classes: Array) { function ListCardsSection (line 45) | function ListCardsSection() { FILE: apps/landing/src/components/sections/MidCta.tsx function cx (line 3) | function cx(...classes: Array) { function MapPlaneIllustration (line 7) | function MapPlaneIllustration() { function MidCTASection (line 84) | function MidCTASection() { FILE: apps/landing/src/components/sections/ScrollBox.tsx constant EXTRA_SCROLL_PX (line 5) | const EXTRA_SCROLL_PX = 1000; function RotatingBox (line 7) | function RotatingBox({ progress }: { progress: number }) { function ScrollBoxSection (line 33) | function ScrollBoxSection() { FILE: apps/landing/src/components/sections/ScrollTextReveal.tsx constant QUOTE (line 3) | const QUOTE = { function Word (line 9) | function Word({ word, progress }: { word: string; progress: number }) { function QuoteSection (line 28) | function QuoteSection() { function ScrollTextRevealSection (line 99) | function ScrollTextRevealSection() { FILE: apps/landing/src/components/sections/SecurityCta.tsx function cx (line 3) | function cx(...classes: Array) { function SecurityCTASection (line 7) | function SecurityCTASection() { FILE: apps/landing/src/components/sections/SubheadingSection.tsx constant TITLE (line 3) | const TITLE = "Build your own infrastructure"; function SubheadingSection (line 5) | function SubheadingSection() { FILE: apps/landing/src/components/sections/ThreeCards.tsx type Card (line 3) | type Card = { function cx (line 33) | function cx(...classes: Array) { function ThreeCardsSection (line 37) | function ThreeCardsSection() { FILE: apps/landing/src/components/sections/Usecase.tsx type Usecase (line 4) | type Usecase = { function cx (line 35) | function cx(...classes: Array) { function UsecaseSection (line 39) | function UsecaseSection() { FILE: apps/landing/src/components/sections/UsecaseAI.tsx type Usecase (line 4) | type Usecase = { function cx (line 42) | function cx(...classes: Array) { function UsecaseAIAssistantSection (line 46) | function UsecaseAIAssistantSection() { FILE: apps/landing/src/components/sections/capsule/CapsuleArchitecture.tsx function cx (line 5) | function cx(...classes: Array) { type Card (line 9) | type Card = { function CapsuleArchitecture (line 36) | function CapsuleArchitecture() { FILE: apps/landing/src/components/sections/capsule/CapsuleFaq.tsx function cx (line 5) | function cx(...classes: Array) { type FAQItem (line 9) | type FAQItem = { function CapsuleFaq (line 47) | function CapsuleFaq() { FILE: apps/landing/src/components/sections/capsule/CapsuleFeatures.tsx function cx (line 12) | function cx(...classes: Array) { type Feature (line 16) | type Feature = { function CapsuleFeatures (line 61) | function CapsuleFeatures() { FILE: apps/landing/src/components/sections/capsule/CapsuleFooterCta.tsx function cx (line 3) | function cx(...classes: Array) { function CapsuleFooterCta (line 7) | function CapsuleFooterCta() { FILE: apps/landing/src/components/sections/capsule/CapsuleHero.tsx function CapsuleHero (line 3) | function CapsuleHero() { FILE: apps/landing/src/components/sections/capsule/CapsuleHowItWorks.tsx function cx (line 4) | function cx(...classes: Array) { function CapsuleHowItWorks (line 29) | function CapsuleHowItWorks() { FILE: apps/landing/src/components/sections/capsule/CapsuleSecurity.tsx function cx (line 4) | function cx(...classes: Array) { function CapsuleSecurity (line 8) | function CapsuleSecurity() { FILE: apps/landing/src/components/sections/capsule/CapsuleSubheading.tsx constant TITLE (line 3) | const TITLE = "Zero knowledge LLM call"; function CapsuleSubheading (line 5) | function CapsuleSubheading() { FILE: apps/landing/src/components/sections/capsule/CapsuleUsecases.tsx function cx (line 6) | function cx(...classes: Array) { type Usecase (line 10) | type Usecase = { function CapsuleUsecases (line 37) | function CapsuleUsecases() { FILE: apps/landing/src/components/sections/capsule/EncryptionFlowIllustration.tsx function EncryptionFlowIllustration (line 1) | function EncryptionFlowIllustration() { FILE: apps/landing/src/components/ui/alert-dialog.tsx function AlertDialog (line 7) | function AlertDialog({ function AlertDialogTrigger (line 13) | function AlertDialogTrigger({ function AlertDialogPortal (line 21) | function AlertDialogPortal({ function AlertDialogOverlay (line 29) | function AlertDialogOverlay({ function AlertDialogContent (line 45) | function AlertDialogContent({ function AlertDialogHeader (line 64) | function AlertDialogHeader({ function AlertDialogFooter (line 77) | function AlertDialogFooter({ function AlertDialogTitle (line 93) | function AlertDialogTitle({ function AlertDialogDescription (line 106) | function AlertDialogDescription({ function AlertDialogAction (line 119) | function AlertDialogAction({ function AlertDialogCancel (line 131) | function AlertDialogCancel({ FILE: apps/landing/src/components/ui/button.tsx function Button (line 38) | function Button({ FILE: apps/landing/src/components/ui/card.tsx function Card (line 5) | function Card({ className, ...props }: React.ComponentProps<"div">) { function CardHeader (line 18) | function CardHeader({ className, ...props }: React.ComponentProps<"div">) { function CardTitle (line 31) | function CardTitle({ className, ...props }: React.ComponentProps<"div">) { function CardDescription (line 41) | function CardDescription({ className, ...props }: React.ComponentProps<"... function CardAction (line 51) | function CardAction({ className, ...props }: React.ComponentProps<"div">) { function CardContent (line 64) | function CardContent({ className, ...props }: React.ComponentProps<"div"... function CardFooter (line 74) | function CardFooter({ className, ...props }: React.ComponentProps<"div">) { FILE: apps/landing/src/components/ui/chart.tsx constant THEMES (line 7) | const THEMES = { light: "", dark: ".dark" } as const type ChartConfig (line 9) | type ChartConfig = { type ChartContextProps (line 19) | type ChartContextProps = { function useChart (line 25) | function useChart() { function ChartContainer (line 35) | function ChartContainer({ function ChartTooltipContent (line 109) | function ChartTooltipContent({ function ChartLegendContent (line 257) | function ChartLegendContent({ function getPayloadConfigFromPayload (line 314) | function getPayloadConfigFromPayload( FILE: apps/landing/src/components/ui/navigation-menu.tsx function NavigationMenu (line 8) | function NavigationMenu({ function NavigationMenuList (line 32) | function NavigationMenuList({ function NavigationMenuItem (line 48) | function NavigationMenuItem({ function NavigationMenuTrigger (line 65) | function NavigationMenuTrigger({ function NavigationMenuContent (line 85) | function NavigationMenuContent({ function NavigationMenuViewport (line 102) | function NavigationMenuViewport({ function NavigationMenuLink (line 124) | function NavigationMenuLink({ function NavigationMenuIndicator (line 140) | function NavigationMenuIndicator({ FILE: apps/landing/src/contexts/AuthContext.tsx type AuthContextType (line 11) | interface AuthContextType { function AuthProvider (line 21) | function AuthProvider({ children }: { children: ReactNode }) { function useAuth (line 72) | function useAuth() { FILE: apps/landing/src/hooks/useUsageData.ts type DailyUsage (line 5) | interface DailyUsage { function getThirtyDaysAgo (line 15) | function getThirtyDaysAgo(): string { function toDateKey (line 21) | function toDateKey(value: string): string { function useUsageData (line 25) | function useUsageData(user: User | null) { FILE: apps/landing/src/lib/billing.ts function cancelSubscription (line 1) | async function cancelSubscription(accessToken: string) { FILE: apps/landing/src/lib/useFadeInOnScroll.ts function useFadeInOnScroll (line 6) | function useFadeInOnScroll() { FILE: apps/landing/src/lib/utils.ts function cn (line 4) | function cn(...inputs: ClassValue[]) { FILE: apps/landing/src/main.tsx function init (line 7) | async function init() { FILE: apps/landing/src/pages/Capsule.tsx function CapsulePage (line 11) | function CapsulePage() { FILE: apps/landing/src/pages/CheckoutSuccess.tsx type SubscriptionStatus (line 17) | type SubscriptionStatus = "loading" | "active" | "pending" | "error"; constant MAX_POLLS (line 19) | const MAX_POLLS = 10; constant POLL_INTERVAL (line 20) | const POLL_INTERVAL = 2000; function CheckoutSuccessPage (line 22) | function CheckoutSuccessPage() { FILE: apps/landing/src/pages/Contact.tsx function ContactPage (line 18) | function ContactPage() { FILE: apps/landing/src/pages/Dashboard.tsx function DashboardPage (line 32) | function DashboardPage() { FILE: apps/landing/src/pages/Disclaimer.tsx function DisclaimerPage (line 4) | function DisclaimerPage() { FILE: apps/landing/src/pages/Login.tsx function LoginPage (line 14) | function LoginPage() { FILE: apps/landing/src/pages/Main.tsx function maxHeroInsetForWidth (line 25) | function maxHeroInsetForWidth(width: number): number { constant HERO_INSET_SCROLL_RANGE (line 33) | const HERO_INSET_SCROLL_RANGE = 0.72; constant MOBILE_BG_OFF_MEDIA (line 36) | const MOBILE_BG_OFF_MEDIA = "(max-width: 767px)"; function LandingPage (line 38) | function LandingPage() { FILE: apps/landing/src/pages/Pricing.tsx function PricingPage (line 42) | function PricingPage() { FILE: apps/landing/src/pages/Privacy.tsx function cx (line 18) | function cx(...classes: Array) { function PrivacyPage (line 93) | function PrivacyPage() { FILE: apps/landing/src/pages/PrivacyPolicy.tsx function PrivacyPolicyPage (line 4) | function PrivacyPolicyPage() { FILE: apps/landing/src/pages/Roadmap.tsx function RoadmapPage (line 56) | function RoadmapPage() { FILE: apps/landing/src/pages/Terms.tsx function TermsPage (line 4) | function TermsPage() { FILE: apps/landing/src/pages/UseCase.tsx function UsecasePage (line 35) | function UsecasePage() { FILE: apps/landing/src/vite-env.d.ts type ImportMetaEnv (line 3) | interface ImportMetaEnv { type ImportMeta (line 9) | interface ImportMeta { FILE: apps/server/build.rs function main (line 4) | fn main() -> Result<(), Box> { FILE: apps/server/migrations/2025-08-07-152325_users/up.sql type users (line 1) | CREATE TABLE users ( type devices (line 10) | CREATE TABLE devices ( type device_tokens (line 18) | CREATE TABLE device_tokens ( type entities (line 28) | CREATE TABLE entities ( type states_meta (line 38) | CREATE TABLE states_meta ( type states (line 43) | CREATE TABLE states ( type events (line 54) | CREATE TABLE events ( type entities_configurations (line 62) | CREATE TABLE entities_configurations ( type system_configurations (line 71) | CREATE TABLE system_configurations ( type flows (line 81) | CREATE TABLE flows ( type flow_versions (line 90) | CREATE TABLE flow_versions ( FILE: apps/server/migrations/2025-08-22-092047_map/up.sql type map_layers (line 2) | CREATE TABLE map_layers ( type map_features (line 14) | CREATE TABLE map_features ( type map_vertices (line 28) | CREATE TABLE map_vertices ( FILE: apps/server/migrations/2025-09-08-073323_create_rbac_tables/up.sql type roles (line 1) | CREATE TABLE roles ( type permissions (line 7) | CREATE TABLE permissions ( type role_permissions (line 13) | CREATE TABLE role_permissions ( type user_roles (line 21) | CREATE TABLE user_roles ( FILE: apps/server/migrations/2025-09-11-151252_custom_node/up.sql type custom_nodes (line 1) | CREATE TABLE custom_nodes ( FILE: apps/server/migrations/2025-09-19-060609_create_streams/up.sql type streams (line 2) | CREATE TABLE streams ( FILE: apps/server/migrations/2026-01-12-023507_dyndashboard/up.sql type dynamic_dashboards (line 2) | CREATE TABLE dynamic_dashboards ( FILE: apps/server/migrations/2026-01-31-000001_create_recordings/up.sql type recordings (line 1) | CREATE TABLE recordings ( type idx_recordings_topic (line 17) | CREATE INDEX idx_recordings_topic ON recordings(topic) type idx_recordings_status (line 18) | CREATE INDEX idx_recordings_status ON recordings(status) type idx_recordings_started_at (line 19) | CREATE INDEX idx_recordings_started_at ON recordings(started_at) FILE: apps/server/src/broker_mqtt.rs function start_event_loop (line 13) | pub async fn start_event_loop( FILE: apps/server/src/config.rs constant CONFIG_FILE (line 6) | const CONFIG_FILE: &str = "config.toml"; type Settings (line 9) | pub struct Settings { method new (line 16) | pub fn new() -> Result { FILE: apps/server/src/db/conn.rs type SqliteConnectionCustomizer (line 8) | struct SqliteConnectionCustomizer; method on_acquire (line 11) | fn on_acquire(&self, conn: &mut SqliteConnection) -> Result<(), diesel... function establish_connection (line 18) | pub fn establish_connection(database_url: &str) -> DbPool { FILE: apps/server/src/db/models.rs type User (line 14) | pub struct User { type UserWithRoles (line 25) | pub struct UserWithRoles { type NewUser (line 36) | pub struct NewUser<'a> { type UpdateUser (line 44) | pub struct UpdateUser { type Device (line 52) | pub struct Device { type NewDevice (line 62) | pub struct NewDevice<'a> { type Entity (line 72) | pub struct Entity { type NewEntity (line 83) | pub struct NewEntity<'a> { type EntityConfiguration (line 95) | pub struct EntityConfiguration { type NewEntityConfiguration (line 105) | pub struct NewEntityConfiguration<'a> { type EntityWithConfig (line 111) | pub struct EntityWithConfig { type EntityWithStateAndConfig (line 118) | pub struct EntityWithStateAndConfig { type StatesMeta (line 128) | pub struct StatesMeta { type NewStatesMeta (line 135) | pub struct NewStatesMeta<'a> { type State (line 143) | pub struct State { type NewState (line 155) | pub struct NewState<'a> { type Event (line 167) | pub struct Event { type NewEvent (line 177) | pub struct NewEvent<'a> { type SystemConfiguration (line 186) | pub struct SystemConfiguration { type NewSystemConfiguration (line 198) | pub struct NewSystemConfiguration<'a> { type DynamicDashboard (line 208) | pub struct DynamicDashboard { type NewDynamicDashboard (line 218) | pub struct NewDynamicDashboard<'a> { type UpdateDynamicDashboard (line 226) | pub struct UpdateDynamicDashboard<'a> { type DeviceToken (line 235) | pub struct DeviceToken { type NewDeviceToken (line 247) | pub struct NewDeviceToken<'a> { type Flow (line 254) | pub struct Flow { type NewFlow (line 265) | pub struct NewFlow<'a> { type FlowVersion (line 274) | pub struct FlowVersion { type NewFlowVersion (line 285) | pub struct NewFlowVersion<'a> { type MapLayer (line 296) | pub struct MapLayer { type NewMapLayer (line 308) | pub struct NewMapLayer<'a> { type UpdateMapLayer (line 317) | pub struct UpdateMapLayer { type MapFeature (line 328) | pub struct MapFeature { type NewMapFeature (line 341) | pub struct NewMapFeature<'a> { type UpdateMapFeature (line 351) | pub struct UpdateMapFeature { method has_changes (line 357) | pub fn has_changes(&self) -> bool { type MapVertex (line 366) | pub struct MapVertex { type NewMapVertex (line 377) | pub struct NewMapVertex { type FeatureWithVertices (line 386) | pub struct FeatureWithVertices { type LayerWithFeatures (line 393) | pub struct LayerWithFeatures { type Role (line 402) | pub struct Role { type NewRole (line 410) | pub struct NewRole<'a> { type Permission (line 418) | pub struct Permission { type NewPermission (line 426) | pub struct NewPermission<'a> { type UserRole (line 437) | pub struct UserRole { type NewUserRole (line 444) | pub struct NewUserRole { type RolePermission (line 455) | pub struct RolePermission { type NewRolePermission (line 462) | pub struct NewRolePermission { type RoleWithPermissions (line 468) | pub struct RoleWithPermissions { type CustomNode (line 479) | pub struct CustomNode { type CustomNodeResult (line 485) | pub struct CustomNodeResult { type NewCustomNode (line 492) | pub struct NewCustomNode<'a> { type UpdateCustomNode (line 499) | pub struct UpdateCustomNode { type Stream (line 506) | pub struct Stream { type NewStream (line 516) | pub struct NewStream<'a> { type Recording (line 525) | pub struct Recording { type NewRecording (line 543) | pub struct NewRecording<'a> { type UpdateRecording (line 556) | pub struct UpdateRecording { FILE: apps/server/src/db/repository/dashboards.rs function list_dynamic_dashboards (line 11) | pub fn list_dynamic_dashboards(pool: &DbPool) -> Result Resul... FILE: apps/server/src/db/repository/mod.rs function get_user_by_name (line 32) | pub fn get_user_by_name(pool: &DbPool, target_username: &str) -> Result<... function get_all_users (line 45) | pub fn get_all_users(pool: &DbPool) -> Result, anyhow... function create_user (line 78) | pub fn create_user(pool: &DbPool, new_user: NewUser) -> Result Result Result Result Result, anyhow::Err... function update_device (line 144) | pub fn update_device( function delete_device (line 162) | pub fn delete_device(pool: &DbPool, target_id: i32) -> Result Result Result, anyhow::Er... function update_entity (line 187) | pub fn update_entity( function create_entity_with_config (line 205) | pub fn create_entity_with_config( function get_all_entities_with_configs (line 237) | pub fn get_all_entities_with_configs( function get_all_entities_with_configs_filter (line 265) | pub fn get_all_entities_with_configs_filter( function get_entities_by_device_id (line 300) | pub fn get_entities_by_device_id( function update_entity_with_config (line 374) | pub fn update_entity_with_config( function delete_entity (line 419) | pub fn delete_entity(pool: &DbPool, target_id: i32) -> Result Result Result Result Result Result Result, anyhow::Error> { function update_flow (line 574) | pub fn update_flow( function delete_flow (line 587) | pub fn delete_flow(pool: &DbPool, target_id: i32) -> Result Result... function get_all_map_layers (line 1040) | pub fn get_all_map_layers(pool: &DbPool) -> Result, anyhow... function get_map_layer_with_features (line 1048) | pub fn get_map_layer_with_features( function update_map_layer (line 1087) | pub fn update_map_layer( function delete_map_layer (line 1101) | pub fn delete_map_layer(pool: &DbPool, target_layer_id: i32) -> Result Resu... function create_custom_node (line 1230) | pub fn create_custom_node( function get_all_custom_nodes (line 1242) | pub fn get_all_custom_nodes(pool: &DbPool) -> Result Result<... function update_custom_node (line 1274) | pub fn update_custom_node( function delete_custom_node (line 1301) | pub fn delete_custom_node(pool: &DbPool, target_node_type: &str) -> Resu... FILE: apps/server/src/db/repository/rbac.rs function create_role_with_permissions (line 12) | pub fn create_role_with_permissions( function update_role_with_permissions (line 47) | pub fn update_role_with_permissions( function get_all_roles (line 87) | pub fn get_all_roles(pool: &DbPool) -> Result, anyhow::Error> { function delete_role (line 94) | pub fn delete_role(pool: &DbPool, role_id: i32) -> Result Result, any... function assign_role_to_user (line 122) | pub fn assign_role_to_user( function remove_role_from_user (line 139) | pub fn remove_role_from_user( function get_user_roles (line 153) | pub fn get_user_roles(pool: &DbPool, target_user_id: i32) -> Result Result, anyho... function get_recordings_by_status (line 31) | pub fn get_recordings_by_status( function get_recordings_by_topic (line 47) | pub fn get_recordings_by_topic( function get_active_recording_by_topic (line 63) | pub fn get_active_recording_by_topic( function get_recording_by_id (line 79) | pub fn get_recording_by_id(pool: &DbPool, recording_id: i32) -> Result Result Result Result, anyhow::Err... function upsert_stream (line 23) | pub fn upsert_stream(pool: &DbPool, new_stream: &NewStream) -> Result Result Self { method into_response (line 9) | fn into_response(self) -> Response { FILE: apps/server/src/flow/binary_store.rs type BinaryStore (line 7) | pub struct BinaryStore { method new (line 12) | pub fn new() -> Self { method insert (line 28) | pub fn insert(&self, data: Vec) -> Uuid { method remove (line 34) | pub fn remove(&self, id: &Uuid) -> Option> { FILE: apps/server/src/flow/engine.rs type ExecutionContext (line 40) | pub struct ExecutionContext { method new (line 49) | pub fn new( method set_variable (line 64) | pub fn set_variable(&mut self, name: &str, value: Value) { method get_variable (line 68) | pub fn get_variable(&self, name: &str) -> Option<&Value> { method get_broadcast (line 72) | pub fn get_broadcast(&self) -> broadcast::Sender { method emit_flow_ui_event (line 77) | pub fn emit_flow_ui_event( method mqtt_client (line 106) | pub fn mqtt_client(&self) -> &Option { type FlowController (line 111) | pub struct FlowController { method stop (line 116) | pub fn stop(&self) { type TriggerCommand (line 122) | pub struct TriggerCommand { type FlowEngine (line 127) | pub struct FlowEngine { method new (line 139) | pub fn new( method get_node_by_id (line 203) | pub fn get_node_by_id(&self, node_id: &str) -> Option<&Node> { method get_start_nodes (line 207) | pub fn get_start_nodes(&self) -> Vec { method get_source_node_ids (line 215) | pub fn get_source_node_ids(&self) -> Vec { method get_node_instance (line 223) | pub fn get_node_instance( method start (line 307) | pub async fn start( FILE: apps/server/src/flow/manager_state.rs type FlowManagerCommand (line 20) | pub enum FlowManagerCommand { type ActiveFlow (line 36) | struct ActiveFlow { type FlowManagerActor (line 42) | pub struct FlowManagerActor { method new (line 55) | pub fn new( method run (line 77) | pub async fn run(&mut self) { function enrich_configs_from_entities (line 173) | fn enrich_configs_from_entities(pool: &DbPool, configs: &mut Vec Result { method execute (line 20) | async fn execute( FILE: apps/server/src/flow/nodes/calc.rs type CalcNodeData (line 13) | struct CalcNodeData { type CalcNode (line 17) | pub struct CalcNode { method new (line 22) | pub fn new(node_data: &Value) -> Result { method execute (line 30) | async fn execute( FILE: apps/server/src/flow/nodes/custom_node.rs type CustomNode (line 16) | pub struct CustomNode { method new (line 21) | pub fn new(node: &Node) -> Result { method execute (line 29) | async fn execute( FILE: apps/server/src/flow/nodes/dashboard_event_listener.rs type DashboardEventListenerNodeData (line 18) | pub struct DashboardEventListenerNodeData { type DashboardEventListenerNode (line 22) | pub struct DashboardEventListenerNode { method new (line 28) | pub fn new( method execute (line 39) | async fn execute( method is_trigger (line 54) | fn is_trigger(&self) -> bool { method start_trigger (line 58) | fn start_trigger( FILE: apps/server/src/flow/nodes/decode_h264.rs type DecodeH264Node (line 15) | pub struct DecodeH264Node { method new (line 22) | pub fn new() -> Result { method execute (line 110) | async fn execute( method drop (line 147) | fn drop(&mut self) { FILE: apps/server/src/flow/nodes/decode_opus.rs type DecodeOpusNode (line 10) | pub struct DecodeOpusNode; method new (line 13) | pub fn new() -> Result { method execute (line 20) | async fn execute( FILE: apps/server/src/flow/nodes/gst_decoder.rs type GstDecoderData (line 22) | pub struct GstDecoderData { type GstDecoderNode (line 26) | pub struct GstDecoderNode { method new (line 33) | pub fn new( method execute (line 49) | async fn execute( method is_trigger (line 60) | fn is_trigger(&self) -> bool { method start_trigger (line 64) | fn start_trigger( FILE: apps/server/src/flow/nodes/http.rs type HttpNodeData (line 14) | struct HttpNodeData { type HttpNode (line 19) | pub struct HttpNode { method new (line 24) | pub fn new(node_data: &Value) -> Result { method execute (line 32) | async fn execute( FILE: apps/server/src/flow/nodes/interval.rs type IntervalNodeData (line 12) | struct IntervalNodeData { type IntervalNode (line 17) | pub struct IntervalNode { method new (line 22) | pub fn new(node_data: &Value) -> Result { method get_duration (line 27) | pub fn get_duration(&self) -> Result { method execute (line 39) | async fn execute( method is_trigger (line 52) | fn is_trigger(&self) -> bool { method start_trigger (line 56) | fn start_trigger( FILE: apps/server/src/flow/nodes/json_modify.rs type JsonModifyData (line 11) | struct JsonModifyData { type JsonModifyNode (line 15) | pub struct JsonModifyNode { method new (line 20) | pub fn new(node_data: &Value) -> Result { method execute (line 28) | async fn execute( FILE: apps/server/src/flow/nodes/json_selector.rs type JsonSelectorData (line 11) | struct JsonSelectorData { type JsonSelectorNode (line 15) | pub struct JsonSelectorNode { method new (line 20) | pub fn new(node_data: &Value) -> Result { method execute (line 28) | async fn execute( FILE: apps/server/src/flow/nodes/log_message.rs type LogMessageNode (line 11) | pub struct LogMessageNode; method execute (line 15) | async fn execute( FILE: apps/server/src/flow/nodes/logic_operator.rs type LogicOpetatorNodeData (line 13) | struct LogicOpetatorNodeData { type LogicOpetatorNode (line 17) | pub struct LogicOpetatorNode { method new (line 22) | pub fn new(node_data: &Value) -> Result { method get_input_as_bool (line 27) | async fn get_input_as_bool( method get_input_as_f64 (line 53) | async fn get_input_as_f64( method execute (line 75) | async fn execute( FILE: apps/server/src/flow/nodes/mod.rs type ExecutableNode (line 16) | pub trait ExecutableNode: Send + Sync { method execute (line 17) | async fn execute( method is_trigger (line 23) | fn is_trigger(&self) -> bool { method start_trigger (line 27) | fn start_trigger( FILE: apps/server/src/flow/nodes/mqtt_publish.rs type MqttPublishNodeData (line 15) | struct MqttPublishNodeData { type MqttPublishNode (line 21) | pub struct MqttPublishNode { method new (line 26) | pub fn new(node_data: &Value) -> Result { method execute (line 34) | async fn execute( FILE: apps/server/src/flow/nodes/mqtt_subscribe.rs type MqttSubscribeNodeData (line 18) | pub struct MqttSubscribeNodeData { type MqttSubscribeNode (line 22) | pub struct MqttSubscribeNode { method new (line 29) | pub fn new( method execute (line 45) | async fn execute( method is_trigger (line 60) | fn is_trigger(&self) -> bool { method start_trigger (line 64) | fn start_trigger( FILE: apps/server/src/flow/nodes/rtp_stream_in.rs type RtpStreamInData (line 17) | pub struct RtpStreamInData { type RtpStreamInNode (line 21) | pub struct RtpStreamInNode { method new (line 28) | pub fn new( method execute (line 44) | async fn execute( method is_trigger (line 62) | fn is_trigger(&self) -> bool { method start_trigger (line 66) | fn start_trigger( FILE: apps/server/src/flow/nodes/set_variable.rs type SetVariableNodeData (line 13) | struct SetVariableNodeData { type SetVariableNode (line 18) | pub struct SetVariableNode { method new (line 23) | pub fn new(node_data: &Value) -> Result { method execute (line 31) | async fn execute( FILE: apps/server/src/flow/nodes/set_variable_with_exec.rs type SetVariableNodeData (line 13) | struct SetVariableNodeData { type SetVariableWithExecNode (line 18) | pub struct SetVariableWithExecNode { method new (line 23) | pub fn new(node_data: &Value) -> Result { method execute (line 31) | async fn execute( FILE: apps/server/src/flow/nodes/show_toast.rs type ShowToastData (line 12) | struct ShowToastData { function default_level (line 21) | fn default_level() -> String { function default_duration_ms (line 25) | fn default_duration_ms() -> u64 { type ShowToastNode (line 29) | pub struct ShowToastNode { method new (line 35) | pub fn new(node_data: &Value, node_id: String) -> Result { method execute (line 43) | async fn execute( FILE: apps/server/src/flow/nodes/start.rs type StartNode (line 8) | pub struct StartNode; method execute (line 12) | async fn execute( FILE: apps/server/src/flow/nodes/type_converter.rs type TypeConverterNodeData (line 12) | struct TypeConverterNodeData { type TypeConverterNode (line 16) | pub struct TypeConverterNode { method new (line 21) | pub fn new(node_data: &Value) -> Result { method execute (line 29) | async fn execute( FILE: apps/server/src/flow/nodes/websocket_on.rs type WebSocketOnNodeData (line 31) | pub struct WebSocketOnNodeData { type WebSocketOnNode (line 35) | pub struct WebSocketOnNode { method new (line 41) | pub fn new(node_data: &Value, system_configs: Vec... function handle_connection (line 50) | async fn handle_connection( method execute (line 97) | async fn execute( method is_trigger (line 112) | fn is_trigger(&self) -> bool { method start_trigger (line 116) | fn start_trigger( FILE: apps/server/src/flow/nodes/websocket_send.rs type WebSocketSendNodeData (line 19) | struct WebSocketSendNodeData { type WebSocketSendNode (line 23) | pub struct WebSocketSendNode { method new (line 29) | pub fn new(node_data: &Value, system_configs: Vec... method execute (line 40) | async fn execute( FILE: apps/server/src/flow/nodes/yolo_detect.rs type Model (line 16) | type Model = TypedRunnableModel>>; type YoloDetectData (line 19) | struct YoloDetectData { type BBox (line 28) | struct BBox { type YoloDetectNode (line 37) | pub struct YoloDetectNode { method new (line 75) | pub fn new(node_data: &Value, binary_store: BinaryStore) -> Result, threshold: f32) { method execute (line 104) | async fn execute( FILE: apps/server/src/flow/types.rs type FlowRunContext (line 7) | pub struct FlowRunContext { type Trigger (line 12) | pub struct Trigger { type ExecutionResult (line 18) | pub struct ExecutionResult { type Graph (line 25) | pub struct Graph { type Node (line 32) | pub struct Node { type Edge (line 42) | pub struct Edge { type ConnectorKind (line 48) | pub enum ConnectorKind { type Connector (line 55) | pub struct Connector { FILE: apps/server/src/handler/auth.rs type ErrorResponse (line 31) | pub struct ErrorResponse { type AuthPayload (line 37) | pub struct AuthPayload { type AuthError (line 43) | pub enum AuthError { method into_response (line 52) | fn into_response(self) -> Response { type Claims (line 69) | pub struct Claims { type JwtAuth (line 74) | pub struct JwtAuth(pub Claims); type Rejection (line 82) | type Rejection = AuthError; method from_request_parts (line 84) | async fn from_request_parts(parts: &mut Parts, state: &S) -> Result Result Option { function get_token_from_query (line 135) | async fn get_token_from_query(parts: &mut Parts) -> Option { function auth_with_password (line 148) | pub async fn auth_with_password( type DeviceTokenAuth (line 188) | pub struct DeviceTokenAuth { type Rejection (line 194) | type Rejection = AppError; method from_request_parts (line 196) | async fn from_request_parts( FILE: apps/server/src/handler/configurations.rs type SystemConfigPayload (line 19) | pub struct SystemConfigPayload { function create_config (line 26) | pub async fn create_config( function get_configs (line 41) | pub async fn get_configs( function update_config (line 49) | pub async fn update_config( function delete_config (line 65) | pub async fn delete_config( FILE: apps/server/src/handler/custom_nodes.rs type CreateCustomNodePayload (line 19) | pub struct CreateCustomNodePayload { function create_custom_node_handler (line 24) | pub async fn create_custom_node_handler( function get_all_custom_nodes_handler (line 48) | pub async fn get_all_custom_nodes_handler( function get_custom_node_handler (line 55) | pub async fn get_custom_node_handler( type UpdateCustomNodePayload (line 64) | pub struct UpdateCustomNodePayload { function update_custom_node_handler (line 68) | pub async fn update_custom_node_handler( function delete_custom_node_handler (line 92) | pub async fn delete_custom_node_handler( FILE: apps/server/src/handler/dashboards.rs type DynamicDashboardResponse (line 15) | pub struct DynamicDashboardResponse { method from (line 24) | fn from(model: db::models::DynamicDashboard) -> Self { type CreateDashboardPayload (line 39) | pub struct CreateDashboardPayload { type UpdateDashboardPayload (line 45) | pub struct UpdateDashboardPayload { function list_dashboards (line 50) | pub async fn list_dashboards( function create_dashboard (line 61) | pub async fn create_dashboard( function get_dashboard (line 74) | pub async fn get_dashboard( function update_dashboard (line 86) | pub async fn update_dashboard( function delete_dashboard (line 104) | pub async fn delete_dashboard( FILE: apps/server/src/handler/device_tokens.rs function generate_api_key (line 11) | fn generate_api_key() -> String { function issue_token (line 17) | pub async fn issue_token( function get_token_info (line 34) | pub async fn get_token_info( function revoke_token (line 49) | pub async fn revoke_token( FILE: apps/server/src/handler/devices.rs type DevicePayload (line 19) | pub struct DevicePayload { type DeviceWithEntities (line 27) | pub struct DeviceWithEntities { function create_device (line 33) | pub async fn create_device( function get_devices (line 48) | pub async fn get_devices( function get_device (line 56) | pub async fn get_device( function update_device (line 69) | pub async fn update_device( function delete_device (line 85) | pub async fn delete_device( FILE: apps/server/src/handler/entities.rs type EntityPayload (line 20) | pub struct EntityPayload { type GetEntitiesParams (line 30) | pub struct GetEntitiesParams { function create_entity (line 34) | pub async fn create_entity( function get_entities (line 72) | pub async fn get_entities( function get_entities_with_states (line 82) | pub async fn get_entities_with_states( function update_entity (line 94) | pub async fn update_entity( function delete_entity (line 133) | pub async fn delete_entity( function get_entity_history (line 146) | pub async fn get_entity_history( FILE: apps/server/src/handler/flows.rs type FlowPayload (line 19) | pub struct FlowPayload { type FlowVersionPayload (line 26) | pub struct FlowVersionPayload { function get_all_flows (line 31) | pub async fn get_all_flows( function create_flow (line 39) | pub async fn create_flow( function update_flow (line 53) | pub async fn update_flow( function delete_flow (line 70) | pub async fn delete_flow( function create_flow_version (line 81) | pub async fn create_flow_version( function get_flow_versions (line 97) | pub async fn get_flow_versions( FILE: apps/server/src/handler/ha.rs type HaState (line 14) | pub struct HaState { function get_ha_credentials (line 23) | fn get_ha_credentials(pool: &DbPool) -> Result<(String, String), anyhow:... function get_all_states (line 44) | pub async fn get_all_states( type HaStateUpdatePayload (line 82) | pub struct HaStateUpdatePayload { function post_state (line 87) | pub async fn post_state( FILE: apps/server/src/handler/integration.rs type IntegrationRegisterPayload (line 18) | pub struct IntegrationRegisterPayload { function register_integration (line 23) | pub async fn register_integration( function get_integration_status (line 109) | pub async fn get_integration_status( function delete_integration (line 138) | pub async fn delete_integration( FILE: apps/server/src/handler/log.rs constant LOG_DIR (line 12) | const LOG_DIR: &str = "log"; type LogContentResponse (line 15) | struct LogContentResponse { type LogFileListResponse (line 21) | struct LogFileListResponse { type ErrorResponse (line 26) | struct ErrorResponse { function get_log_files (line 30) | fn get_log_files() -> io::Result> { function read_log_file_content (line 47) | fn read_log_file_content(filename: &str) -> Result { function get_latest_log_handler (line 67) | pub async fn get_latest_log_handler(AuthUser(_user): AuthUser) -> Respon... function list_log_files_handler (line 88) | pub async fn list_log_files_handler(AuthUser(_user): AuthUser) -> Respon... function get_log_by_filename_handler (line 103) | pub async fn get_log_by_filename_handler( FILE: apps/server/src/handler/map.rs type LayerPayload (line 15) | pub struct LayerPayload { type VertexPayload (line 22) | pub struct VertexPayload { type FeaturePayload (line 29) | pub struct FeaturePayload { type UpdateFeaturePayload (line 38) | pub struct UpdateFeaturePayload { function create_layer (line 44) | pub async fn create_layer( function get_layers (line 59) | pub async fn get_layers( function get_layer (line 67) | pub async fn get_layer( function update_layer (line 76) | pub async fn update_layer( function delete_layer (line 91) | pub async fn delete_layer( function create_feature (line 102) | pub async fn create_feature( function get_feature (line 132) | pub async fn get_feature( function update_feature (line 141) | pub async fn update_feature( function delete_feature (line 170) | pub async fn delete_feature( FILE: apps/server/src/handler/permissions.rs type PermissionPayload (line 16) | pub struct PermissionPayload { function create_permission (line 21) | pub async fn create_permission( function get_permissions (line 34) | pub async fn get_permissions( FILE: apps/server/src/handler/recordings.rs type StartRecordingRequest (line 21) | pub struct StartRecordingRequest { type StartRecordingResponse (line 26) | pub struct StartRecordingResponse { type ListRecordingsQuery (line 33) | pub struct ListRecordingsQuery { type RecordingResponse (line 41) | pub struct RecordingResponse { method from (line 58) | fn from(r: Recording) -> Self { type ErrorResponse (line 78) | struct ErrorResponse { type ActiveRecordingInfo (line 83) | struct ActiveRecordingInfo { function start_recording (line 88) | pub async fn start_recording( function stop_recording (line 127) | pub async fn stop_recording( function list_recordings (line 156) | pub async fn list_recordings( function get_recording (line 187) | pub async fn get_recording( function delete_recording (line 210) | pub async fn delete_recording( function stream_recording (line 270) | pub async fn stream_recording( function parse_range_header (line 403) | fn parse_range_header(range: &str, file_size: u64) -> Option<(u64, u64)> { function get_active_recordings (line 429) | pub async fn get_active_recordings( function is_topic_recording (line 445) | pub async fn is_topic_recording( FILE: apps/server/src/handler/roles.rs type RolePayload (line 20) | pub struct RolePayload { type PermissionAssignmentPayload (line 27) | pub struct PermissionAssignmentPayload { function create_role (line 31) | pub async fn create_role( function get_roles (line 45) | pub async fn get_roles( function update_role (line 53) | pub async fn update_role( function delete_role (line 69) | pub async fn delete_role( function grant_permission_to_role (line 78) | pub async fn grant_permission_to_role( function revoke_permission_from_role (line 88) | pub async fn revoke_permission_from_role( function get_role_permissions (line 97) | pub async fn get_role_permissions( FILE: apps/server/src/handler/sdr.rs constant RTL_TCP_SET_FREQ (line 18) | const RTL_TCP_SET_FREQ: u8 = 0x01; constant RTL_TCP_SET_SAMPLERATE (line 19) | const RTL_TCP_SET_SAMPLERATE: u8 = 0x02; constant RTL_TCP_SET_GAIN_MODE (line 20) | const RTL_TCP_SET_GAIN_MODE: u8 = 0x03; constant RTL_TCP_SET_AGC (line 21) | const RTL_TCP_SET_AGC: u8 = 0x08; constant DEFAULT_SAMPLERATE (line 23) | const DEFAULT_SAMPLERATE: u32 = 2_048_000; constant AUDIO_SAMPLE_RATE (line 24) | const AUDIO_SAMPLE_RATE: u32 = 48000; constant CONNECT_TIMEOUT (line 25) | const CONNECT_TIMEOUT: Duration = Duration::from_secs(5); function get_sdr_address (line 27) | fn get_sdr_address(pool: &DbPool) -> Result<(String, u16), anyhow::Error> { function rtl_tcp_command (line 54) | async fn rtl_tcp_command(stream: &mut TcpStream, cmd: u8, value: u32) ->... function read_rtl_tcp_header (line 64) | async fn read_rtl_tcp_header(stream: &mut TcpStream) -> Result<(u32, u32... type FmDemodState (line 84) | struct FmDemodState { method new (line 91) | fn new() -> Self { function u8_iq_to_float (line 97) | fn u8_iq_to_float(data: &[u8]) -> Vec { function fm_demodulate (line 102) | fn fm_demodulate(iq_samples: &[f32], state: &mut FmDemodState, lpf_alpha... function downsample_to_i16 (line 130) | fn downsample_to_i16(samples: &[f32], src_rate: u32, dst_rate: u32) -> V... type SetFrequencyPayload (line 156) | pub struct SetFrequencyPayload { function set_frequency (line 160) | pub async fn set_frequency( function get_samplerate (line 182) | pub async fn get_samplerate( function start_stream (line 189) | pub async fn start_stream( function stop_stream (line 196) | pub async fn stop_stream( function sdr_audio_ws (line 205) | pub async fn sdr_audio_ws( function handle_sdr_audio (line 212) | async fn handle_sdr_audio(mut ws: WebSocket, state: Arc) { FILE: apps/server/src/handler/stat.rs function get_stats (line 12) | pub async fn get_stats( FILE: apps/server/src/handler/state.rs type StateRequest (line 19) | pub struct StateRequest { type StateResponse (line 24) | pub struct StateResponse { function set_state (line 28) | pub async fn set_state( FILE: apps/server/src/handler/storage.rs type ErrorResponse (line 21) | struct ErrorResponse { type SuccessResponse (line 26) | struct SuccessResponse { type UpdateContentRequest (line 31) | pub struct UpdateContentRequest { type RenameRequest (line 36) | pub struct RenameRequest { type DirEntry (line 42) | pub struct DirEntry { type ListResponse (line 48) | pub struct ListResponse { function get_storage_root (line 53) | fn get_storage_root() -> io::Result { function get_safe_path (line 59) | fn get_safe_path(root: &StdPath, user_path: &str) -> Result Response { function guard_code_service (line 91) | fn guard_code_service(pool: &DbPool) -> Result<(), Response> { function read_handler (line 114) | pub async fn read_handler( function list_dir_contents (line 140) | async fn list_dir_contents(path: &PathBuf, user_path: &str) -> Response { function read_file_content (line 165) | async fn read_file_content(path: &PathBuf, user_path: &str) -> Response { function create_or_update_file_handler (line 172) | pub async fn create_or_update_file_handler( function create_dir_handler (line 215) | pub async fn create_dir_handler( function delete_handler (line 244) | pub async fn delete_handler( function rename_handler (line 279) | pub async fn rename_handler( FILE: apps/server/src/handler/streams.rs type RegisterStreamRequest (line 14) | pub struct RegisterStreamRequest { type RegisterStreamResponse (line 20) | pub struct RegisterStreamResponse { function register_stream (line 25) | pub async fn register_stream( FILE: apps/server/src/handler/tunnel.rs type StartRequest (line 9) | pub struct StartRequest { type StartResponse (line 16) | pub struct StartResponse { type StatusResponse (line 21) | pub struct StatusResponse { function start_tunnel (line 28) | pub async fn start_tunnel( function stop_tunnel (line 40) | pub async fn stop_tunnel(State(state): State>) -> Result>) -> Json String { function cooldown_ms (line 45) | fn cooldown_ms(ev: &DashboardComponentEventV2) -> u64 { function validate_listener_id (line 49) | fn validate_listener_id(id: &str) -> bool { function apply_dashboard_component_event (line 59) | pub(crate) fn apply_dashboard_component_event( function deserializes_v2 (line 138) | fn deserializes_v2() { function listener_id_validation (line 156) | fn listener_id_validation() { FILE: apps/server/src/handler/ws/handlers.rs type WsMessageIn (line 41) | struct WsMessageIn { type ServerStats (line 48) | struct ServerStats { type StreamState (line 54) | struct StreamState { type SubscribeStreamPayload (line 60) | struct SubscribeStreamPayload { type FlowPayload (line 65) | struct FlowPayload { type FlowStatus (line 70) | struct FlowStatus { type ActorCommand (line 76) | enum ActorCommand { type WSActor (line 118) | struct WSActor { method run (line 129) | async fn run(mut self) { method handle_get_all_flows (line 210) | async fn handle_get_all_flows(&self, responder: oneshot::Sender Result { method handle_get_all_stream_state (line 257) | async fn handle_get_all_stream_state(&self, payload: serde_json::Value) { method handle_offer (line 287) | async fn handle_offer( method handle_health_check (line 303) | async fn handle_health_check(&self, payload: serde_json::Value) { method handle_ping (line 331) | async fn handle_ping(&self, payload: serde_json::Value) { method handle_compute_flow (line 350) | async fn handle_compute_flow(&self, payload: serde_json::Value) { method handle_stop_flow (line 401) | async fn handle_stop_flow(&self, flow_id: i32) { method extract_ice_credentials (line 408) | fn extract_ice_credentials(sdp: &str) -> Option<(String, String)> { method patch_ice_credentials (line 424) | fn patch_ice_credentials(sdp: &str, ufrag: &str, pwd: &str) -> String { method is_h264_keyframe (line 441) | fn is_h264_keyframe(pkt: &webrtc::rtp::packet::Packet) -> bool { method handle_subscribe (line 480) | async fn handle_subscribe(&mut self, topic: String) { function handle_socket (line 791) | pub async fn handle_socket(socket: WebSocket, state: Arc) { FILE: apps/server/src/handler/ws/mod.rs function ws_handler (line 20) | pub async fn ws_handler( type WsMessageOut (line 32) | pub struct WsMessageOut<'a, T: Serialize> { FILE: apps/server/src/handler/ws/webrtc.rs function filter_ice_url (line 36) | fn filter_ice_url(url: &str) -> Option { function build_ice_servers (line 48) | fn build_ice_servers(pool: &DbPool) -> Vec { function create_peer_connection (line 145) | pub async fn create_peer_connection( FILE: apps/server/src/init/db_record.rs function create_initial_admin (line 11) | pub fn create_initial_admin(conn: &mut SqliteConnection) { function create_initial_configurations (line 50) | pub fn create_initial_configurations(conn: &mut SqliteConnection) { function seed_initial_permissions (line 101) | pub fn seed_initial_permissions(conn: &mut SqliteConnection) { FILE: apps/server/src/init/streams.rs function create_hydrate_streams (line 8) | pub fn create_hydrate_streams(pool: &DbPool, streams: &StreamManager) { FILE: apps/server/src/logo.rs constant LOGO (line 6) | const LOGO: &str = r#" function print_header (line 16) | pub fn print_header() { function print_footer (line 21) | pub fn print_footer() { function print_local_ip_info (line 25) | pub fn print_local_ip_info(ip: &str, port: &str) { function print_error (line 34) | pub fn print_error(message: &str) { function get_local_ip_address (line 38) | pub fn get_local_ip_address() -> Result> { function print_logo (line 43) | pub fn print_logo() { FILE: apps/server/src/main.rs constant LOG_FILE_PATH (line 12) | const LOG_FILE_PATH: &str = "log/app.log"; constant MIGRATIONS (line 45) | pub const MIGRATIONS: EmbeddedMigrations = embed_migrations!("./migratio... function run_migrations (line 47) | fn run_migrations(connection: &mut impl MigrationHarness Result<()> { FILE: apps/server/src/media/adapter.rs type MediaAdapter (line 8) | pub trait MediaAdapter: Send + Sync { method protocol (line 9) | fn protocol(&self) -> Protocol; method start (line 10) | async fn start(&self, shutdown: watch::Receiver<()>) -> Result<()>; FILE: apps/server/src/media/rtp_push.rs type RtpPushAdapter (line 10) | pub struct RtpPushAdapter { method new (line 16) | pub fn new(addr: String, streams: StreamManager) -> Self { method run (line 20) | async fn run(&self, mut shutdown_rx: watch::Receiver<()>) -> Result<()> { method protocol (line 77) | fn protocol(&self) -> Protocol { method start (line 81) | async fn start(&self, shutdown: watch::Receiver<()>) -> Result<()> { FILE: apps/server/src/media/rtsp_pull.rs type RtspPullAdapter (line 20) | pub struct RtspPullAdapter { method new (line 27) | pub fn new( method start_pipelines (line 39) | async fn start_pipelines(&self, mut shutdown_rx: watch::Receiver<()>) ... method spawn_new_pipelines (line 77) | async fn spawn_new_pipelines( method protocol (line 160) | fn protocol(&self) -> Protocol { method start (line 164) | async fn start(&self, shutdown: watch::Receiver<()>) -> Result<()> { function run_pipeline (line 169) | async fn run_pipeline( FILE: apps/server/src/recording/manager.rs type ActiveRecording (line 15) | pub struct ActiveRecording { type RecordingManager (line 21) | pub struct RecordingManager { method new (line 29) | pub fn new(streams: StreamManager, pool: DbPool) -> Self { method cleanup_orphaned_recordings (line 50) | fn cleanup_orphaned_recordings(pool: &DbPool) { method start_recording (line 67) | pub fn start_recording(&self, topic: &str, user_id: Option) -> Re... method stop_recording (line 182) | pub fn stop_recording(&self, recording_id: i32) -> Result<()> { method stop_recording_by_topic (line 197) | pub fn stop_recording_by_topic(&self, topic: &str) -> Result<()> { method is_recording (line 211) | pub fn is_recording(&self, topic: &str) -> bool { method get_active_recording_id (line 215) | pub fn get_active_recording_id(&self, topic: &str) -> Option { method get_all_active_recordings (line 221) | pub fn get_all_active_recordings(&self) -> Vec<(String, i32)> { FILE: apps/server/src/recording/muxer.rs type GstMuxer (line 12) | pub struct GstMuxer { method new (line 21) | pub fn new(output_path: &str, media_type: MediaType, payload_type: u8)... method start (line 64) | pub fn start(&self) -> Result<()> { method write_packet (line 70) | pub fn write_packet(&self, packet: &Packet) -> Result<()> { method get_bytes_written (line 98) | pub async fn get_bytes_written(&self) -> u64 { method finalize (line 102) | pub fn finalize(&self) -> Result<()> { method output_path (line 136) | pub fn output_path(&self) -> &str { method media_type (line 140) | pub fn media_type(&self) -> MediaType { method drop (line 146) | fn drop(&mut self) { FILE: apps/server/src/recording/service.rs type RecordingService (line 14) | pub struct RecordingService { method new (line 23) | pub fn new( method run (line 39) | pub async fn run(&self, mut shutdown_rx: watch::Receiver<()>) -> Resul... method update_recording_completed (line 175) | fn update_recording_completed(&self, duration_ms: i32, file_size: i32)... method update_recording_failed (line 187) | fn update_recording_failed(&self, error_msg: &str) -> Result<()> { FILE: apps/server/src/routes.rs function get_server_info (line 25) | async fn get_server_info() -> Json { type ClientAsset (line 35) | struct ClientAsset; function static_handler (line 37) | async fn static_handler(uri: Uri) -> impl IntoResponse { function web_server (line 59) | pub async fn web_server( FILE: apps/server/src/state.rs type DbPool (line 12) | pub type DbPool = r2d2::Pool>; type MediaType (line 22) | pub enum MediaType { type Protocol (line 28) | pub enum Protocol { type StreamDescriptor (line 40) | pub struct StreamDescriptor { type StreamHandle (line 49) | pub struct StreamHandle { type StreamRegistry (line 57) | pub struct StreamRegistry { method new (line 63) | pub fn new() -> Self { method register (line 67) | pub fn register(&self, descriptor: StreamDescriptor) -> StreamHandle { method insert_with_sender (line 72) | pub fn insert_with_sender( method get_by_ssrc (line 90) | pub fn get_by_ssrc(&self, ssrc: u32) -> Option { method get_by_topic (line 94) | pub fn get_by_topic(&self, topic: &str) -> Option { method mark_online (line 100) | pub fn mark_online(&self, ssrc: u32) { method update_last_seen (line 111) | pub fn update_last_seen(&self, ssrc: u32) { method iter (line 119) | pub fn iter(&self) -> dashmap::iter::Iter<'_, u32, StreamHandle> { method remove (line 123) | pub fn remove(&self, ssrc: &u32) -> Option<(u32, StreamHandle)> { method len (line 132) | pub fn len(&self) -> usize { type StreamManager (line 137) | pub type StreamManager = Arc; type MqttMessage (line 140) | pub struct MqttMessage { type TopicMapping (line 146) | pub struct TopicMapping { type DashboardUiEvent (line 154) | pub struct DashboardUiEvent { type AppState (line 172) | pub struct AppState { FILE: apps/server/src/tunnel_control.rs constant BINARY_PREFIX (line 18) | const BINARY_PREFIX: usize = 8; constant MAX_HEADER_BYTES (line 19) | const MAX_HEADER_BYTES: usize = 64 * 1024; type TunnelStatus (line 22) | pub struct TunnelStatus { type TunnelManager (line 29) | pub struct TunnelManager { method new (line 42) | pub fn new() -> Self { method start (line 54) | pub async fn start(&self, server: String, target: String, access_token... method stop (line 84) | pub async fn stop(&self) -> Result<()> { method status (line 98) | pub async fn status(&self) -> TunnelStatus { type Inner (line 33) | struct Inner { type AgentToServer (line 111) | enum AgentToServer { type ServerToAgent (line 127) | enum ServerToAgent { type AgentState (line 143) | struct AgentState { type PendingRequest (line 149) | struct PendingRequest { type AgentOutbound (line 160) | enum AgentOutbound { type TargetInfo (line 166) | struct TargetInfo { method parse (line 173) | fn parse(raw: &str) -> Result { method host_header (line 190) | fn host_header(&self) -> String { function run_agent (line 195) | async fn run_agent( function wait_for_registration (line 302) | async fn wait_for_registration( function handle_server_control (line 317) | async fn handle_server_control(agent: Arc, msg: ServerToAgen... function handle_server_body (line 387) | async fn handle_server_body(agent: Arc, data: Bytes) -> Resu... function forward_request (line 404) | async fn forward_request( function find_header_split (line 574) | fn find_header_split(buf: &[u8]) -> Option { function is_upgrade (line 580) | fn is_upgrade(headers: &[(String, String)]) -> bool { FILE: apps/server/src/utils/entity_map.rs function remap_topics (line 10) | pub async fn remap_topics(State(state): State>) -> Result<... FILE: apps/server/src/utils/hash.rs function hash_password (line 1) | pub fn hash_password(password: &str) -> Result Result<... FILE: apps/server/src/utils/stream_checker.rs constant STREAM_TIMEOUT (line 9) | const STREAM_TIMEOUT: Duration = Duration::from_secs(10); function stream_status_checker (line 11) | pub async fn stream_status_checker( FILE: apps/server/src/utils/system_configs.rs function replace_config_placeholders (line 3) | pub fn replace_config_placeholders(template: &str, configs: &[SystemConf... FILE: apps/server/tests/common/mod.rs constant MIGRATIONS (line 6) | pub const MIGRATIONS: EmbeddedMigrations = embed_migrations!("migrations"); function setup_test_pool (line 9) | pub fn setup_test_pool() -> DbPool { FILE: apps/server/tests/recording_manager_tests.rs function setup_test_streams (line 9) | fn setup_test_streams() -> Arc { function test_is_recording_false_initially (line 26) | fn test_is_recording_false_initially() { function test_get_active_recording_id_none (line 35) | fn test_get_active_recording_id_none() { function test_get_all_active_recordings_empty (line 44) | fn test_get_all_active_recordings_empty() { function test_start_recording_stream_not_found (line 53) | fn test_start_recording_stream_not_found() { function test_stop_recording_not_found (line 64) | fn test_stop_recording_not_found() { function test_stop_recording_by_topic_not_found (line 75) | fn test_stop_recording_by_topic_not_found() { FILE: apps/server/tests/recordings_repository_tests.rs function create_test_recording (line 6) | fn create_test_recording<'a>() -> NewRecording<'a> { function test_create_recording (line 20) | fn test_create_recording() { function test_get_recording_by_id (line 29) | fn test_get_recording_by_id() { function test_get_recording_by_id_not_found (line 38) | fn test_get_recording_by_id_not_found() { function test_get_all_recordings (line 44) | fn test_get_all_recordings() { function test_get_recordings_by_status (line 54) | fn test_get_recordings_by_status() { function test_update_recording (line 73) | fn test_update_recording() { function test_delete_recording (line 89) | fn test_delete_recording() { function test_mark_orphaned_as_abandoned (line 98) | fn test_mark_orphaned_as_abandoned() { FILE: apps/server/tests/state_tests.rs function create_test_descriptor (line 5) | fn create_test_descriptor(id: u32, topic: &str) -> StreamDescriptor { function test_register_stream (line 16) | fn test_register_stream() { function test_get_by_ssrc (line 27) | fn test_get_by_ssrc() { function test_get_by_topic (line 36) | fn test_get_by_topic() { function test_mark_online (line 45) | fn test_mark_online() { function test_remove (line 55) | fn test_remove() { function test_insert_with_sender (line 67) | fn test_insert_with_sender() { function test_iter (line 77) | fn test_iter() { FILE: example/golang/audio-file/audio.go type RegisterRequest (line 11) | type RegisterRequest struct type RegisterResponse (line 16) | type RegisterResponse struct function main (line 21) | func main() { FILE: example/golang/audio-mic/audio.go type RegisterRequest (line 14) | type RegisterRequest struct type RegisterResponse (line 19) | type RegisterResponse struct function main (line 24) | func main() { FILE: example/golang/video-sample/video.go type RegisterRequest (line 11) | type RegisterRequest struct type RegisterResponse (line 16) | type RegisterResponse struct function main (line 21) | func main() { FILE: example/golang/video2-sample/video.go type RegisterRequest (line 11) | type RegisterRequest struct type RegisterResponse (line 16) | type RegisterResponse struct function main (line 21) | func main() { FILE: example/golang/video3-sample/video.go type RegisterRequest (line 11) | type RegisterRequest struct type RegisterResponse (line 16) | type RegisterResponse struct function main (line 21) | func main() { FILE: example/js/index.js function postState (line 29) | async function postState() { FILE: packages/capsule-client/src/client.ts class CapsuleAuthError (line 19) | class CapsuleAuthError extends Error { method constructor (line 20) | constructor(message: string = 'Authentication required') { class CapsuleRateLimitError (line 31) | class CapsuleRateLimitError extends Error { method constructor (line 32) | constructor(message: string = 'Rate limit exceeded') { class CapsuleSubscriptionError (line 43) | class CapsuleSubscriptionError extends Error { method constructor (line 44) | constructor(message: string = 'Pro subscription required') { class CapsuleClient (line 70) | class CapsuleClient { method constructor (line 76) | constructor(options: CapsuleClientOptions) { method getPublicKey (line 88) | async getPublicKey(): Promise { method clearPublicKeyCache (line 106) | clearPublicKeyCache(): void { method setBaseUrl (line 115) | setBaseUrl(url: string): void { method chat (line 126) | async chat(message: string, options?: ChatOptions): Promise(path: string, init: RequestInit): Promise { method fetchStream (line 288) | private async fetchStream( FILE: packages/capsule-client/src/conversation.ts constant DEFAULT_MAX_HISTORY (line 7) | const DEFAULT_MAX_HISTORY = 50; type ConversationOptions (line 12) | interface ConversationOptions { class Conversation (line 40) | class Conversation { method constructor (line 46) | constructor(client: CapsuleClient, options?: ConversationOptions) { method chat (line 57) | async chat(message: string): Promise { method chatStream (line 76) | async chatStream(message: string, onChunk: StreamCallback): Promise { method clearHistory (line 128) | clearHistory(): void { method setSystemPrompt (line 135) | setSystemPrompt(prompt: string | undefined): void { method appendToHistory (line 139) | private appendToHistory(message: HistoryMessage): void { FILE: packages/capsule-client/src/crypto.ts constant HKDF_SALT (line 9) | const HKDF_SALT = new TextEncoder().encode('vessel-capsule-v1-salt'); constant HKDF_INFO (line 11) | const HKDF_INFO = new TextEncoder().encode('vessel-capsule-v1-key'); function bytesToBase64 (line 16) | function bytesToBase64(bytes: Uint8Array): string { function base64ToBytes (line 32) | function base64ToBytes(base64: string): Uint8Array { function zeroize (line 44) | function zeroize(arr: Uint8Array): void { function encryptImage (line 73) | async function encryptImage( function fileToBytes (line 114) | async function fileToBytes(file: File | Blob): Promise { FILE: packages/capsule-client/src/types.ts type HistoryMessage (line 7) | interface HistoryMessage { type ToolFunction (line 21) | interface ToolFunction { type Tool (line 30) | interface Tool { type ToolCallResult (line 38) | interface ToolCallResult { type ToolCallCallback (line 47) | type ToolCallCallback = (toolCalls: ToolCallResult[]) => void; type ChatOptions (line 52) | interface ChatOptions { type EncryptedImage (line 68) | interface EncryptedImage { type ChatRequest (line 80) | interface ChatRequest { type ChatResponse (line 98) | interface ChatResponse { type PublicKeyResponse (line 106) | interface PublicKeyResponse { type CapsuleClientOptions (line 114) | interface CapsuleClientOptions { type AnalyzeImageOptions (line 142) | interface AnalyzeImageOptions { type StreamCallback (line 152) | type StreamCallback = (chunk: string, done: boolean) => void; FILE: packages/custom-node-utils/add_number.py function main (line 1) | def main(inputs): FILE: packages/custom-node-utils/random.py function main (line 3) | def main(inputs): FILE: tests/api.test.js constant API_BASE_URL (line 3) | const API_BASE_URL = "http://localhost:6174";