SYMBOL INDEX (1208 symbols across 233 files) FILE: app/app.tsx function App (line 52) | function App() { FILE: app/components/analytics/index.ts type BaseEventProperties (line 126) | interface BaseEventProperties { type OnboardingEventProperties (line 132) | interface OnboardingEventProperties extends BaseEventProperties { type HotkeyEventProperties (line 141) | interface HotkeyEventProperties extends BaseEventProperties { type AuthEventProperties (line 148) | interface AuthEventProperties extends BaseEventProperties { type SettingsEventProperties (line 154) | interface SettingsEventProperties extends BaseEventProperties { type UserProperties (line 161) | interface UserProperties { constant ANALYTICS_EVENTS (line 174) | const ANALYTICS_EVENTS = { type AnalyticsEvent (line 206) | type AnalyticsEvent = class AnalyticsService (line 213) | class AnalyticsService { method constructor (line 220) | constructor() { method enableAnalytics (line 231) | async enableAnalytics() { method disableAnalytics (line 254) | disableAnalytics() { method isEnabled (line 269) | isEnabled(): boolean { method identifyUser (line 276) | identifyUser( method updateUserProperties (line 321) | updateUserProperties(properties: Partial) { method track (line 340) | track(eventName: AnalyticsEvent, properties: BaseEventProperties = {}) { method trackOnboarding (line 367) | trackOnboarding( method trackAuth (line 385) | trackAuth( method trackSettings (line 402) | trackSettings( method trackPermission (line 419) | trackPermission( method resetUser (line 436) | resetUser() { method getSessionDuration (line 455) | getSessionDuration(): number { method isUserIdentified (line 462) | isUserIdentified(): boolean { method getDeviceId (line 469) | getDeviceId(): string | null { method updateInitializationStatus (line 476) | updateInitializationStatus(isInitialized: boolean, deviceId: string | ... method shouldTrack (line 487) | private shouldTrack(): boolean { FILE: app/components/auth/Auth0Provider.tsx type Auth0ProviderProps (line 5) | interface Auth0ProviderProps { FILE: app/components/auth/useAuth.ts function hydrateOnboardingState (line 55) | async function hydrateOnboardingState(context?: string): Promise { FILE: app/components/home/HomeKit.tsx function HomeKit (line 23) | function HomeKit() { FILE: app/components/home/ProUpgradeDialog.tsx type ProUpgradeDialogProps (line 8) | interface ProUpgradeDialogProps { function ProUpgradeDialog (line 13) | function ProUpgradeDialog({ function FeatureItem (line 131) | function FeatureItem({ text }: { text: string }) { FILE: app/components/home/contents/AboutContent.tsx type AboutCardProps (line 9) | interface AboutCardProps { function AboutCard (line 17) | function AboutCard({ function AboutContent (line 44) | function AboutContent() { FILE: app/components/home/contents/DictionaryContent.tsx function DictionaryContent (line 16) | function DictionaryContent() { FILE: app/components/home/contents/HomeContent.tsx type InteractionStats (line 36) | interface InteractionStats { type HomeContentProps (line 67) | interface HomeContentProps { function HomeContent (line 71) | function HomeContent({ FILE: app/components/home/contents/NotesContent.tsx function NotesContent (line 21) | function NotesContent() { FILE: app/components/home/contents/SettingsContent.tsx function SettingsContent (line 9) | function SettingsContent() { FILE: app/components/home/contents/activityMessages.ts type ActivityMessage (line 2) | interface ActivityMessage { type ActivityMessageLevel (line 6) | interface ActivityMessageLevel { type ActivityMessageCategory (line 10) | interface ActivityMessageCategory { constant STREAK_MESSAGES (line 15) | const STREAK_MESSAGES: ActivityMessageCategory = { constant SPEED_MESSAGES (line 56) | const SPEED_MESSAGES: ActivityMessageCategory = { constant TOTAL_WORDS_MESSAGES (line 97) | const TOTAL_WORDS_MESSAGES: ActivityMessageCategory = { FILE: app/components/home/contents/settings/AccountSettingsContent.tsx function AccountSettingsContent (line 17) | function AccountSettingsContent() { FILE: app/components/home/contents/settings/AdvancedSettingsContent.tsx type LlmSettingConfig (line 15) | type LlmSettingConfig = { function formatDisplayValue (line 110) | function formatDisplayValue(value: string | number | null): string { type SettingInputProps (line 121) | interface SettingInputProps { function AdvancedSettingsContent (line 203) | function AdvancedSettingsContent() { FILE: app/components/home/contents/settings/AudioSettingsContent.tsx function AudioSettingsContent (line 5) | function AudioSettingsContent() { FILE: app/components/home/contents/settings/GeneralSettingsContent.tsx function GeneralSettingsContent (line 7) | function GeneralSettingsContent() { FILE: app/components/home/contents/settings/KeyboardSettingsContent.tsx function KeyboardSettingsContent (line 5) | function KeyboardSettingsContent() { FILE: app/components/home/contents/settings/PricingBillingSettingsContent.tsx type BillingPeriod (line 6) | type BillingPeriod = 'monthly' | 'annual' function PricingBillingSettingsContent (line 8) | function PricingBillingSettingsContent() { type PricingCardProps (line 277) | interface PricingCardProps { function PricingCard (line 286) | function PricingCard({ FILE: app/components/icons/AppleIcon.tsx type AppleIconProps (line 3) | interface AppleIconProps { function AppleIcon (line 9) | function AppleIcon({ FILE: app/components/icons/AppleNotesIcon.tsx type AppleNotesIconProps (line 3) | interface AppleNotesIconProps extends React.SVGProps { function AppleNotesIcon (line 10) | function AppleNotesIcon({ FILE: app/components/icons/ChatGPTIcon.tsx type ChatGPTIconProps (line 1) | interface ChatGPTIconProps { FILE: app/components/icons/ClaudeIcon.tsx type ClaudeIconProps (line 3) | interface ClaudeIconProps extends React.SVGProps { function ClaudeIcon (line 10) | function ClaudeIcon({ FILE: app/components/icons/DiscordIcon.tsx type DiscordIconProps (line 3) | interface DiscordIconProps { function DiscordIcon (line 9) | function DiscordIcon({ FILE: app/components/icons/GitHubIcon.tsx type GitHubIconProps (line 3) | interface GitHubIconProps { function GitHubIcon (line 9) | function GitHubIcon({ FILE: app/components/icons/GmailIcon.tsx type GmailIconProps (line 1) | interface GmailIconProps { FILE: app/components/icons/GoogleIcon.tsx type GoogleIconProps (line 3) | interface GoogleIconProps { function GoogleIcon (line 9) | function GoogleIcon({ FILE: app/components/icons/IMessageIcon.tsx type IMessageIconProps (line 3) | interface IMessageIconProps extends React.SVGProps { function IMessageIcon (line 10) | function IMessageIcon({ FILE: app/components/icons/ItoIcon.tsx type ItoIconProps (line 3) | interface ItoIconProps { FILE: app/components/icons/MicrosoftIcon.tsx type MicrosoftIconProps (line 3) | interface MicrosoftIconProps { function MicrosoftIcon (line 9) | function MicrosoftIcon({ FILE: app/components/icons/SlackIcon.tsx type SlackIconProps (line 1) | interface SlackIconProps { FILE: app/components/icons/VSCodeIcon.tsx type VSCodeIconProps (line 3) | interface VSCodeIconProps extends React.SVGProps { function VSCodeIcon (line 10) | function VSCodeIcon({ FILE: app/components/icons/XIcon.tsx type XIconProps (line 3) | interface XIconProps { function XIcon (line 9) | function XIcon({ FILE: app/components/pill/Pill.tsx constant BAR_UPDATE_INTERVAL (line 48) | const BAR_UPDATE_INTERVAL = 64 FILE: app/components/pill/contents/AudioBarsBase.tsx type AudioBarsBaseProps (line 1) | interface AudioBarsBaseProps { constant BAR_COUNT (line 6) | const BAR_COUNT = 21 FILE: app/components/pill/contents/LoadingAnimation.tsx type LoadingAnimationProps (line 3) | interface LoadingAnimationProps { FILE: app/components/pill/contents/TooltipButton.tsx type TooltipButtonProps (line 7) | interface TooltipButtonProps { FILE: app/components/ui/animated-checkmark.tsx function AnimatedCheck (line 5) | function AnimatedCheck({ trigger }: { trigger: boolean }) { FILE: app/components/ui/app-orbit-image.tsx function AppOrbitImage (line 91) | function AppOrbitImage() { FILE: app/components/ui/badge.tsx function Badge (line 28) | function Badge({ FILE: app/components/ui/button.tsx function Button (line 38) | function Button({ FILE: app/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: app/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: app/components/ui/keyboard-key.tsx type KeyboardKeyProps (line 177) | interface KeyboardKeyProps extends ComponentPropsWithoutRef<'div'> { function KeyboardKey (line 187) | function KeyboardKey({ FILE: app/components/ui/keyboard-shortcut-editor.tsx type KeyboardShortcutEditorProps (line 12) | interface KeyboardShortcutEditorProps { constant MAX_KEYS_PER_SHORTCUT (line 29) | const MAX_KEYS_PER_SHORTCUT = 5 function KeyboardShortcutEditor (line 31) | function KeyboardShortcutEditor({ FILE: app/components/ui/microphone-selector.tsx type MicrophoneSelectorProps (line 17) | interface MicrophoneSelectorProps { function MicrophoneSelector (line 32) | function MicrophoneSelector({ FILE: app/components/ui/multi-shortcut-editor.tsx type KeyboardShortcutConfig (line 12) | interface KeyboardShortcutConfig { type Props (line 18) | type Props = { constant MAX_KEYS_PER_SHORTCUT (line 26) | const MAX_KEYS_PER_SHORTCUT = 5 function MultiShortcutEditor (line 28) | function MultiShortcutEditor({ FILE: app/components/ui/nav-item.tsx type NavItemProps (line 4) | interface NavItemProps { function NavItem (line 12) | function NavItem({ FILE: app/components/ui/note.tsx type NoteProps (line 5) | interface NoteProps { function highlightText (line 20) | function highlightText(text: string, searchQuery: string): React.ReactEl... function Note (line 47) | function Note({ FILE: app/components/ui/spinner.tsx type SpinnerContentProps (line 31) | interface SpinnerContentProps function Spinner (line 38) | function Spinner({ FILE: app/components/ui/status-indicator.tsx type StatusIndicatorProps (line 4) | interface StatusIndicatorProps { function StatusIndicator (line 12) | function StatusIndicator({ FILE: app/components/ui/switch.tsx function Switch (line 6) | function Switch({ FILE: app/components/ui/tip.tsx function Tip (line 4) | function Tip({ FILE: app/components/ui/tooltip.tsx function TooltipProvider (line 6) | function TooltipProvider({ function Tooltip (line 19) | function Tooltip({ function TooltipTrigger (line 29) | function TooltipTrigger({ function TooltipContent (line 35) | function TooltipContent({ FILE: app/components/welcome/WelcomeKit.tsx function WelcomeKit (line 18) | function WelcomeKit() { FILE: app/components/welcome/contents/AnyAppContent.tsx function AnyAppContent (line 5) | function AnyAppContent() { FILE: app/components/welcome/contents/CheckEmailContent.tsx type Props (line 6) | type Props = { function CheckEmailContent (line 14) | function CheckEmailContent({ FILE: app/components/welcome/contents/CreateAccountContent.tsx function CreateAccountContent (line 26) | function CreateAccountContent() { FILE: app/components/welcome/contents/DataControlContent.tsx function DataControlContent (line 7) | function DataControlContent() { FILE: app/components/welcome/contents/EmailLoginContent.tsx type Props (line 7) | type Props = { function EmailLoginContent (line 13) | function EmailLoginContent({ FILE: app/components/welcome/contents/EmailSignupContent.tsx type Props (line 9) | type Props = { function EmailSignupContent (line 15) | function EmailSignupContent({ FILE: app/components/welcome/contents/GoodToGoContent.tsx function GoodToGoContent (line 5) | function GoodToGoContent() { FILE: app/components/welcome/contents/IntroducingIntelligentModeContent.tsx function IntroducingIntelligentMode (line 10) | function IntroducingIntelligentMode() { FILE: app/components/welcome/contents/KeyboardTestContext.tsx function KeyboardTestContent (line 11) | function KeyboardTestContent() { FILE: app/components/welcome/contents/MicrophoneTestContent.tsx function MicrophoneBars (line 7) | function MicrophoneBars({ volume }: { volume: number }) { function MicrophoneTestContent (line 37) | function MicrophoneTestContent() { FILE: app/components/welcome/contents/PermissionsContent.tsx function PermissionsContent (line 17) | function PermissionsContent() { FILE: app/components/welcome/contents/ReferralContent.tsx function ReferralContent (line 25) | function ReferralContent() { FILE: app/components/welcome/contents/SignInContent.tsx constant AUTH_PROVIDERS (line 24) | const AUTH_PROVIDERS = { type AuthButtonProps (line 64) | interface AuthButtonProps { function AuthButton (line 73) | function AuthButton({ function SignInContent (line 112) | function SignInContent() { FILE: app/components/welcome/contents/TryItOutContent.tsx function TryItOut (line 17) | function TryItOut() { FILE: app/components/window/Titlebar.tsx type TitlebarProps (line 271) | interface TitlebarProps { FILE: app/components/window/TitlebarContext.tsx type TitlebarContextProps (line 26) | interface TitlebarContextProps {} FILE: app/components/window/WindowContext.tsx type WindowContextProps (line 59) | interface WindowContextProps { type WindowInitProps (line 64) | interface WindowInitProps { type WindowContextProviderProps (line 72) | interface WindowContextProviderProps { FILE: app/generated/buf/validate/validate_pb.ts type Rule (line 50) | type Rule = Message<"buf.validate.Rule"> & { type MessageRules (line 93) | type MessageRules = Message<"buf.validate.MessageRules"> & { type MessageOneofRule (line 167) | type MessageOneofRule = Message<"buf.validate.MessageOneofRule"> & { type OneofRules (line 198) | type OneofRules = Message<"buf.validate.OneofRules"> & { type FieldRules (line 235) | type FieldRules = Message<"buf.validate.FieldRules"> & { type PredefinedRules (line 487) | type PredefinedRules = Message<"buf.validate.PredefinedRules"> & { type FloatRules (line 522) | type FloatRules = Message<"buf.validate.FloatRules"> & { type DoubleRules (line 704) | type DoubleRules = Message<"buf.validate.DoubleRules"> & { type Int32Rules (line 886) | type Int32Rules = Message<"buf.validate.Int32Rules"> & { type Int64Rules (line 1060) | type Int64Rules = Message<"buf.validate.Int64Rules"> & { type UInt32Rules (line 1234) | type UInt32Rules = Message<"buf.validate.UInt32Rules"> & { type UInt64Rules (line 1408) | type UInt64Rules = Message<"buf.validate.UInt64Rules"> & { type SInt32Rules (line 1581) | type SInt32Rules = Message<"buf.validate.SInt32Rules"> & { type SInt64Rules (line 1754) | type SInt64Rules = Message<"buf.validate.SInt64Rules"> & { type Fixed32Rules (line 1927) | type Fixed32Rules = Message<"buf.validate.Fixed32Rules"> & { type Fixed64Rules (line 2100) | type Fixed64Rules = Message<"buf.validate.Fixed64Rules"> & { type SFixed32Rules (line 2273) | type SFixed32Rules = Message<"buf.validate.SFixed32Rules"> & { type SFixed64Rules (line 2446) | type SFixed64Rules = Message<"buf.validate.SFixed64Rules"> & { type BoolRules (line 2620) | type BoolRules = Message<"buf.validate.BoolRules"> & { type StringRules (line 2668) | type StringRules = Message<"buf.validate.StringRules"> & { type BytesRules (line 3328) | type BytesRules = Message<"buf.validate.BytesRules"> & { type EnumRules (line 3576) | type EnumRules = Message<"buf.validate.EnumRules"> & { type RepeatedRules (line 3698) | type RepeatedRules = Message<"buf.validate.RepeatedRules"> & { type MapRules (line 3786) | type MapRules = Message<"buf.validate.MapRules"> & { type AnyRules (line 3873) | type AnyRules = Message<"buf.validate.AnyRules"> & { type DurationRules (line 3921) | type DurationRules = Message<"buf.validate.DurationRules"> & { type TimestampRules (line 4096) | type TimestampRules = Message<"buf.validate.TimestampRules"> & { type Violations (line 4278) | type Violations = Message<"buf.validate.Violations"> & { type Violation (line 4341) | type Violation = Message<"buf.validate.Violation"> & { type FieldPath (line 4440) | type FieldPath = Message<"buf.validate.FieldPath"> & { type FieldPathElement (line 4465) | type FieldPathElement = Message<"buf.validate.FieldPathElement"> & { type Ignore (line 4575) | enum Ignore { type KnownRegex (line 4685) | enum KnownRegex { FILE: app/generated/ito_pb.ts type Empty (line 22) | type Empty = Message<"ito.Empty"> & { type ClientError (line 35) | type ClientError = Message<"ito.ClientError"> & { type AudioChunk (line 76) | type AudioChunk = Message<"ito.AudioChunk"> & { type ContextInfo (line 97) | type ContextInfo = Message<"ito.ContextInfo"> & { type StreamConfig (line 133) | type StreamConfig = Message<"ito.StreamConfig"> & { type TranscribeStreamRequest (line 168) | type TranscribeStreamRequest = Message<"ito.TranscribeStreamRequest"> & { type TranscriptionResponse (line 203) | type TranscriptionResponse = Message<"ito.TranscriptionResponse"> & { type Note (line 228) | type Note = Message<"ito.Note"> & { type CreateNoteRequest (line 275) | type CreateNoteRequest = Message<"ito.CreateNoteRequest"> & { type GetNoteRequest (line 302) | type GetNoteRequest = Message<"ito.GetNoteRequest"> & { type ListNotesRequest (line 319) | type ListNotesRequest = Message<"ito.ListNotesRequest"> & { type ListNotesResponse (line 338) | type ListNotesResponse = Message<"ito.ListNotesResponse"> & { type UpdateNoteRequest (line 355) | type UpdateNoteRequest = Message<"ito.UpdateNoteRequest"> & { type DeleteNoteRequest (line 377) | type DeleteNoteRequest = Message<"ito.DeleteNoteRequest"> & { type Interaction (line 397) | type Interaction = Message<"ito.Interaction"> & { type CreateInteractionRequest (line 474) | type CreateInteractionRequest = Message<"ito.CreateInteractionRequest"> & { type GetInteractionRequest (line 520) | type GetInteractionRequest = Message<"ito.GetInteractionRequest"> & { type ListInteractionsRequest (line 537) | type ListInteractionsRequest = Message<"ito.ListInteractionsRequest"> & { type ListInteractionsResponse (line 556) | type ListInteractionsResponse = Message<"ito.ListInteractionsResponse"> & { type UpdateInteractionRequest (line 573) | type UpdateInteractionRequest = Message<"ito.UpdateInteractionRequest"> & { type DeleteInteractionRequest (line 595) | type DeleteInteractionRequest = Message<"ito.DeleteInteractionRequest"> & { type DictionaryItem (line 615) | type DictionaryItem = Message<"ito.DictionaryItem"> & { type CreateDictionaryItemRequest (line 662) | type CreateDictionaryItemRequest = Message<"ito.CreateDictionaryItemRequ... type ListDictionaryItemsRequest (line 689) | type ListDictionaryItemsRequest = Message<"ito.ListDictionaryItemsReques... type ListDictionaryItemsResponse (line 708) | type ListDictionaryItemsResponse = Message<"ito.ListDictionaryItemsRespo... type UpdateDictionaryItemRequest (line 725) | type UpdateDictionaryItemRequest = Message<"ito.UpdateDictionaryItemRequ... type DeleteDictionaryItemRequest (line 752) | type DeleteDictionaryItemRequest = Message<"ito.DeleteDictionaryItemRequ... type DeleteUserDataRequest (line 774) | type DeleteUserDataRequest = Message<"ito.DeleteUserDataRequest"> & { type LlmSettings (line 787) | type LlmSettings = Message<"ito.LlmSettings"> & { type AdvancedSettings (line 849) | type AdvancedSettings = Message<"ito.AdvancedSettings"> & { type GetAdvancedSettingsRequest (line 893) | type GetAdvancedSettingsRequest = Message<"ito.GetAdvancedSettingsReques... type UpdateAdvancedSettingsRequest (line 906) | type UpdateAdvancedSettingsRequest = Message<"ito.UpdateAdvancedSettings... type TimingEvent (line 926) | type TimingEvent = Message<"ito.TimingEvent"> & { type TimingReport (line 958) | type TimingReport = Message<"ito.TimingReport"> & { type SubmitTimingReportsRequest (line 1015) | type SubmitTimingReportsRequest = Message<"ito.SubmitTimingReportsReques... type SubmitTimingReportsResponse (line 1034) | type SubmitTimingReportsResponse = Message<"ito.SubmitTimingReportsRespo... type ItoMode (line 1047) | enum ItoMode { type ClientProvider (line 1071) | enum ClientProvider { type ErrorType (line 1092) | enum ErrorType { FILE: app/hooks/useBillingState.test.ts function renderHook (line 76) | function renderHook(hook: () => T): { FILE: app/hooks/useBillingState.ts type BillingState (line 3) | type BillingState = { function useBillingState (line 15) | function useBillingState() { FILE: app/hooks/usePlatform.ts type Platform (line 3) | type Platform = 'darwin' | 'win32' function usePlatform (line 5) | function usePlatform(): Platform | undefined { FILE: app/index.d.ts type Window (line 40) | interface Window { type IpcApi (line 45) | interface IpcApi { FILE: app/media/microphone.ts type Microphone (line 3) | type Microphone = { type MicrophoneToRender (line 8) | type MicrophoneToRender = { function getAvailableMicrophones (line 13) | async function getAvailableMicrophones(): Promise { function verifyStoredMicrophone (line 36) | async function verifyStoredMicrophone() { FILE: app/store/useAdvancedSettingsStore.ts type LlmSettings (line 4) | interface LlmSettings { type AdvancedSettingsState (line 16) | interface AdvancedSettingsState { FILE: app/store/useAudioStore.ts type AudioState (line 4) | interface AudioState { FILE: app/store/useAuthStore.ts type AuthZustandStore (line 10) | interface AuthZustandStore { FILE: app/store/useDictionaryStore.ts type DictionaryEntry (line 5) | type DictionaryEntry = { type DictionaryStore (line 22) | interface DictionaryStore { FILE: app/store/useMainStore.ts type PageType (line 4) | type PageType = 'home' | 'dictionary' | 'notes' | 'settings' | 'about' type SettingsPageType (line 5) | type SettingsPageType = type MainStore (line 13) | interface MainStore { FILE: app/store/useNotesStore.ts type Note (line 4) | type Note = { type NotesStore (line 13) | interface NotesStore { FILE: app/store/useOnboardingStore.ts constant ONBOARDING_CATEGORIES (line 6) | const ONBOARDING_CATEGORIES = { type OnboardingCategory (line 14) | type OnboardingCategory = type OnboardingState (line 17) | interface OnboardingState { constant STEP_NAMES (line 32) | const STEP_NAMES = { constant STEP_NAMES_ARRAY (line 46) | const STEP_NAMES_ARRAY = [ FILE: app/store/usePermissionsStore.ts type PermissionsState (line 3) | interface PermissionsState { FILE: app/store/useSettingsStore.ts type SettingsState (line 20) | interface SettingsState { type SettingCategory (line 46) | type SettingCategory = 'general' | 'audio&mic' | 'keyboard' | 'account' FILE: app/store/useShortcutEditingStore.ts type ShortcutEditingState (line 3) | interface ShortcutEditingState { FILE: app/store/useUserMetadataStore.ts type UserMetadataStore (line 6) | interface UserMetadataStore { constant DEFAULT_METADATA (line 22) | const DEFAULT_METADATA = { FILE: app/utils/audioUtils.ts function createStereo48kWavFromMonoPCM (line 1) | function createStereo48kWavFromMonoPCM( FILE: app/utils/healthCheck.ts type HealthCheckResult (line 5) | interface HealthCheckResult { function checkLocalServerHealth (line 15) | async function checkLocalServerHealth(): Promise { FILE: app/utils/keyboard.ts function getDirectionalIndicator (line 14) | function getDirectionalIndicator( function getKeyDisplay (line 33) | function getKeyDisplay( type ShortcutError (line 81) | type ShortcutError = type ShortcutResult (line 87) | type ShortcutResult = { constant MODIFIER_SEQUENCE (line 93) | const MODIFIER_SEQUENCE = [ constant MODIFIER_INDEX (line 110) | const MODIFIER_INDEX: Record = MODIFIER_SEQUENCE.reduce( function normalizeKey (line 118) | function normalizeKey(raw: KeyName): KeyName { function sortKeysCanonical (line 122) | function sortKeysCanonical(keys: KeyName[]): KeyName[] { function normalizeChord (line 139) | function normalizeChord(keys: KeyName[]): KeyName[] { function modifierVariants (line 144) | function modifierVariants(modifier: string): string[] { function createReservedCombos (line 149) | function createReservedCombos( function getReservedCombinations (line 161) | function getReservedCombinations( function isReservedCombination (line 197) | function isReservedCombination( function isDuplicateShortcut (line 229) | function isDuplicateShortcut( function validateShortcutForDuplicate (line 260) | function validateShortcutForDuplicate( class KeyState (line 281) | class KeyState { method constructor (line 285) | constructor(shortcut: KeyName[] = []) { method updateShortcut (line 293) | updateShortcut(shortcut: KeyName[]) { method update (line 302) | update(event: KeyEvent) { method getPressedKeys (line 322) | getPressedKeys(): string[] { method isKeyPressed (line 331) | isKeyPressed(key: KeyName): boolean { method clear (line 338) | clear() { FILE: lib/__tests__/fixtures/auth.ts constant VALID_JWT_TOKEN (line 2) | const VALID_JWT_TOKEN = constant EXPIRED_JWT_TOKEN (line 5) | const EXPIRED_JWT_TOKEN = constant MALFORMED_JWT_TOKEN (line 8) | const MALFORMED_JWT_TOKEN = 'invalid.jwt.token' constant VALID_AUTH0_CONFIG (line 11) | const VALID_AUTH0_CONFIG = { constant INCOMPLETE_AUTH0_CONFIG (line 21) | const INCOMPLETE_AUTH0_CONFIG = { constant VALID_TOKEN_RESPONSE (line 29) | const VALID_TOKEN_RESPONSE = { constant REFRESH_TOKEN_RESPONSE (line 37) | const REFRESH_TOKEN_RESPONSE = { constant TOKEN_ERROR_RESPONSE (line 45) | const TOKEN_ERROR_RESPONSE = { constant SAMPLE_USER_PROFILE (line 51) | const SAMPLE_USER_PROFILE = { constant SAMPLE_USER_PROFILE_MINIMAL (line 60) | const SAMPLE_USER_PROFILE_MINIMAL = { constant SAMPLE_AUTH_STATE (line 66) | const SAMPLE_AUTH_STATE = { constant SAMPLE_STORED_AUTH (line 73) | const SAMPLE_STORED_AUTH = { constant SAMPLE_EXPIRED_AUTH (line 85) | const SAMPLE_EXPIRED_AUTH = { constant VALID_ENV_VARS (line 116) | const VALID_ENV_VARS = { constant INCOMPLETE_ENV_VARS (line 122) | const INCOMPLETE_ENV_VARS = { FILE: lib/__tests__/fixtures/database.ts constant TEST_USER_ID (line 8) | const TEST_USER_ID = 'test-user-123' constant TEST_USER_ID_2 (line 9) | const TEST_USER_ID_2 = 'test-user-456' FILE: lib/__tests__/helpers/testUtils.ts function fakeTimers (line 5) | function fakeTimers() { FILE: lib/__tests__/setup.ts method constructor (line 35) | constructor() { method loadURL (line 42) | loadURL() {} method loadFile (line 43) | loadFile() {} method on (line 44) | on() {} method once (line 45) | once() {} method show (line 46) | show() {} method hide (line 47) | hide() {} method close (line 48) | close() {} method destroy (line 49) | destroy() {} method minimize (line 50) | minimize() {} method maximize (line 51) | maximize() {} method restore (line 52) | restore() {} method focus (line 53) | focus() {} method blur (line 54) | blur() {} method isFocused (line 55) | isFocused() { method isVisible (line 58) | isVisible() { method isMinimized (line 61) | isMinimized() { method isMaximized (line 64) | isMaximized() { method setTitle (line 67) | setTitle() {} method getTitle (line 68) | getTitle() { FILE: lib/auth/events.ts type JwtPayload (line 10) | interface JwtPayload { FILE: lib/clients/grpcClient.test.ts method constructor (line 139) | constructor(message: string, code: number) { FILE: lib/clients/grpcClient.ts class GrpcClient (line 51) | class GrpcClient { method constructor (line 58) | constructor() { method setMainWindow (line 71) | setMainWindow(window: BrowserWindow) { method safeSendToMainWindow (line 76) | private safeSendToMainWindow(channel: string, ...args: any[]) { method setAuthToken (line 95) | setAuthToken(token: string | null) { method getHeaders (line 99) | private getHeaders() { method getHeadersWithMetadata (line 108) | private async getHeadersWithMetadata(mode: ItoMode) { method withRetry (line 209) | private async withRetry(operation: () => Promise): Promise { method handleAuthError (line 224) | private async handleAuthError(error: any): Promise { method transcribeStream (line 276) | async transcribeStream(stream: AsyncIterable, mode: ItoMod... method transcribeStreamV2 (line 285) | async transcribeStreamV2( method createNote (line 302) | async createNote(note: Note) { method updateNote (line 315) | async updateNote(note: Note) { method deleteNote (line 327) | async deleteNote(note: Note) { method listNotesSince (line 338) | async listNotesSince(since?: string): Promise { method createInteraction (line 350) | async createInteraction(interaction: Interaction) { method updateInteraction (line 383) | async updateInteraction(interaction: Interaction) { method deleteInteraction (line 395) | async deleteInteraction(interaction: Interaction) { method listInteractionsSince (line 406) | async listInteractionsSince(since?: string): Promise { method createDictionaryItem (line 418) | async createDictionaryItem(item: DictionaryItem) { method updateDictionaryItem (line 431) | async updateDictionaryItem(item: DictionaryItem) { method deleteDictionaryItem (line 444) | async deleteDictionaryItem(item: DictionaryItem) { method listDictionaryItemsSince (line 455) | async listDictionaryItemsSince(since?: string): Promise { method updateAdvancedSettings (line 495) | async updateAdvancedSettings( method submitTimingReports (line 532) | async submitTimingReports(reports: TimingReport[]) { FILE: lib/clients/itoHttpClient.ts type RequestOptions (line 4) | interface RequestOptions { class ItoHttpClient (line 12) | class ItoHttpClient { method getBaseUrl (line 13) | private getBaseUrl(): string { method getAccessToken (line 17) | private getAccessToken(): string { method get (line 21) | async get(path: string, options: RequestOptions = {}) { method post (line 54) | async post(path: string, body?: any, options: RequestOptions = {}) { FILE: lib/constants/external-links.ts constant EXTERNAL_LINKS (line 1) | const EXTERNAL_LINKS = { FILE: lib/constants/generated-defaults.ts constant DEFAULT_ADVANCED_SETTINGS (line 7) | const DEFAULT_ADVANCED_SETTINGS = { FILE: lib/constants/keyboard-defaults.ts constant ITO_MODE_SHORTCUT_DEFAULTS_MAC (line 4) | const ITO_MODE_SHORTCUT_DEFAULTS_MAC = { constant ITO_MODE_SHORTCUT_DEFAULTS_WIN (line 9) | const ITO_MODE_SHORTCUT_DEFAULTS_WIN = { function getPlatform (line 15) | function getPlatform(): 'darwin' | 'win32' { function getItoModeShortcutDefaults (line 24) | function getItoModeShortcutDefaults( constant ITO_MODE_SHORTCUT_DEFAULTS (line 37) | const ITO_MODE_SHORTCUT_DEFAULTS = getItoModeShortcutDefaults() FILE: lib/constants/store-keys.ts constant STORE_KEYS (line 3) | const STORE_KEYS = { type StoreKey (line 17) | type StoreKey = (typeof STORE_KEYS)[keyof typeof STORE_KEYS] FILE: lib/main/app.ts function getPillWindow (line 11) | function getPillWindow(): BrowserWindow | null { function createAppWindow (line 16) | function createAppWindow(): BrowserWindow { constant PILL_MAX_WIDTH (line 84) | const PILL_MAX_WIDTH = 172 constant PILL_MAX_HEIGHT (line 85) | const PILL_MAX_HEIGHT = 84 function createPillWindow (line 86) | function createPillWindow(): void { function startPillPositioner (line 140) | function startPillPositioner() { function updatePillPosition (line 154) | function updatePillPosition() { function registerResourcesProtocol (line 196) | function registerResourcesProtocol() { FILE: lib/main/appNap.ts function preventAppNap (line 6) | function preventAppNap() { function allowAppNap (line 13) | function allowAppNap() { FILE: lib/main/audio/AudioStreamManager.ts class AudioStreamManager (line 5) | class AudioStreamManager { method streamAudioChunks (line 13) | async *streamAudioChunks() { method initialize (line 35) | initialize() { method stopStreaming (line 42) | stopStreaming() { method setupListeners (line 51) | private setupListeners() { method removeListeners (line 57) | private removeListeners() { method addAudioChunk (line 77) | addAudioChunk(chunk: Buffer) { method getInteractionAudioBuffer (line 91) | getInteractionAudioBuffer(): Buffer { method setAudioConfig (line 95) | setAudioConfig(config: { sampleRate?: number; channels?: number }) { method getCurrentSampleRate (line 101) | getCurrentSampleRate(): number { method isCurrentlyStreaming (line 105) | isCurrentlyStreaming(): boolean { method clearInteractionAudio (line 109) | clearInteractionAudio() { method getAudioDurationMs (line 113) | getAudioDurationMs(): number { FILE: lib/main/autoUpdaterWrapper.ts type UpdateStatus (line 8) | interface UpdateStatus { function getUpdateStatus (line 18) | function getUpdateStatus(): UpdateStatus { function initializeAutoUpdater (line 22) | function initializeAutoUpdater() { function setupAutoUpdaterEvents (line 80) | function setupAutoUpdaterEvents() { function installUpdateNow (line 116) | async function installUpdateNow() { FILE: lib/main/context/ContextGrabber.ts type ContextData (line 14) | interface ContextData { class ContextGrabber (line 26) | class ContextGrabber { method gatherContext (line 30) | public async gatherContext(mode: ItoMode): Promise { method getVocabulary (line 59) | private async getVocabulary(): Promise { method getWindowContext (line 72) | private async getWindowContext(): Promise<{ method getContextText (line 91) | private async getContextText(mode: ItoMode): Promise { method getCursorContextForGrammar (line 152) | public async getCursorContextForGrammar( FILE: lib/main/env.ts constant ITO_ENV (line 19) | const ITO_ENV = stage FILE: lib/main/grammar/GrammarRulesService.ts class GrammarRulesService (line 3) | class GrammarRulesService { method constructor (line 6) | public constructor(context: string) { method setCaseFirstWord (line 13) | public setCaseFirstWord(transcript: string): string { method addLeadingSpaceIfNeeded (line 60) | public addLeadingSpaceIfNeeded(transcript: string): string { method needsLeadingSpace (line 72) | private needsLeadingSpace(context: string): boolean { method isProperNoun (line 103) | private isProperNoun(word: string): boolean { method shouldCapitalizeBasedOnContext (line 117) | private shouldCapitalizeBasedOnContext( FILE: lib/main/interactions/InteractionManager.test.ts method get (line 18) | get() { method set (line 21) | set() {} method delete (line 22) | delete() {} FILE: lib/main/interactions/InteractionManager.ts class InteractionManager (line 9) | class InteractionManager { method initialize (line 13) | initialize(): string { method getCurrentInteractionId (line 19) | getCurrentInteractionId(): string | null { method getInteractionStartTime (line 23) | getInteractionStartTime(): number | null { method adoptInteractionId (line 27) | adoptInteractionId(id: string) { method createInteraction (line 32) | async createInteraction( method clearCurrentInteraction (line 116) | clearCurrentInteraction() { FILE: lib/main/itoSessionManager.ts class ItoSessionManager (line 13) | class ItoSessionManager { method startSession (line 23) | public async startSession(mode: ItoMode) { method fetchAndSendContext (line 69) | private async fetchAndSendContext() { method setMode (line 91) | public setMode(mode: ItoMode) { method cancelSession (line 99) | public async cancelSession() { method completeSession (line 128) | public async completeSession() { method handleTranscriptionResponse (line 203) | private async handleTranscriptionResponse(result: { method handleTranscriptionError (line 257) | private async handleTranscriptionError(error: any) { FILE: lib/main/itoStreamController.ts class ItoStreamController (line 21) | class ItoStreamController { method initialize (line 30) | public async initialize(mode: ItoMode): Promise { method startGrpcStream (line 52) | public async startGrpcStream(): Promise<{ method getCurrentMode (line 88) | public getCurrentMode(): ItoMode { method setMode (line 92) | public setMode(mode: ItoMode) { method scheduleConfigUpdate (line 105) | public scheduleConfigUpdate(context: ContextData) { method sendModeUpdate (line 116) | private sendModeUpdate(mode: ItoMode) { method endInteraction (line 137) | public endInteraction() { method cancelTranscription (line 147) | public cancelTranscription() { method getAudioDurationMs (line 160) | public getAudioDurationMs(): number { method stopStreaming (line 164) | private stopStreaming() { method clearInteractionAudio (line 168) | public clearInteractionAudio() { method createStreamGenerator (line 172) | private async *createStreamGenerator(): AsyncGenerator = function handleDictionaryConstraintError (line 24) | function handleDictionaryConstraintError( function parseJsonField (line 43) | function parseJsonField(value: any): any { function parseInteractionJsonFields (line 62) | function parseInteractionJsonFields(interaction: Interaction): Interacti... type InsertInteraction (line 76) | type InsertInteraction = Omit< class InteractionsTable (line 81) | class InteractionsTable { method insert (line 82) | static async insert( method findById (line 117) | static async findById(id: string): Promise { method findAll (line 125) | static async findAll(user_id?: string): Promise { method softDelete (line 135) | static async softDelete(id: string): Promise { method deleteAllUserData (line 141) | static async deleteAllUserData(userId: string): Promise { method findModifiedSince (line 151) | static async findModifiedSince(timestamp: string): Promise { type InsertNote (line 199) | type InsertNote = Omit { method findById (line 229) | static async findById(id: string): Promise { method findAll (line 233) | static async findAll(user_id?: string): Promise { method findByInteractionId (line 241) | static async findByInteractionId(interactionId: string): Promise { method softDelete (line 257) | static async softDelete(id: string): Promise { method deleteAllUserData (line 263) | static async deleteAllUserData(userId: string): Promise { method findModifiedSince (line 273) | static async findModifiedSince(timestamp: string): Promise { method upsert (line 279) | static async upsert(note: Note): Promise { type InsertDictionaryItem (line 309) | type InsertDictionaryItem = Omit< class DictionaryTable (line 314) | class DictionaryTable { method insert (line 315) | static async insert( method findAll (line 348) | static async findAll(user_id?: string): Promise { method update (line 356) | static async update( method softDelete (line 371) | static async softDelete(id: string): Promise { method deleteAllUserData (line 378) | static async deleteAllUserData(userId: string): Promise { method findModifiedSince (line 385) | static async findModifiedSince(timestamp: string): Promise> { class KeyValueStore (line 424) | class KeyValueStore { method set (line 425) | static async set(key: string, value: string): Promise { method get (line 434) | static async get(key: string): Promise { method delete (line 442) | static async delete(key: string): Promise { type UserMetadataRow (line 455) | type UserMetadataRow = { function parseUserMetadataRow (line 471) | function parseUserMetadataRow(row: UserMetadataRow): UserMetadata { type InsertUserMetadata (line 494) | type InsertUserMetadata = Omit { method deleteByUserId (line 619) | static async deleteByUserId(userId: string): Promise { FILE: lib/main/sqlite/schema.ts constant INITIAL_SCHEMA (line 1) | const INITIAL_SCHEMA = ` FILE: lib/main/store.ts type KeyboardShortcutConfig (line 10) | interface KeyboardShortcutConfig { type MainStore (line 16) | interface MainStore { type OnboardingStore (line 19) | interface OnboardingStore { type SettingsStore (line 24) | interface SettingsStore { type AuthState (line 40) | interface AuthState { type AuthUser (line 47) | interface AuthUser { type AuthTokens (line 55) | interface AuthTokens { type AuthStore (line 64) | interface AuthStore { type AdvancedSettings (line 70) | interface AdvancedSettings { type AppStore (line 77) | interface AppStore { type StoreLike (line 173) | type StoreLike = { function deepGet (line 197) | function deepGet(obj: any, pathParts: string[]): any { function deepSet (line 204) | function deepSet(obj: any, pathParts: string[], value: any): any { function persistTopLevelKey (line 214) | async function persistTopLevelKey(key: string) { type Migration (line 255) | type Migration = { id: string; run: (s: StoreLike) => void } function runMigrations (line 286) | function runMigrations(s: StoreLike, allMigrations: Migration[... function ensureDefaultsDeep (line 302) | function ensureDefaultsDeep( function initializeStore (line 335) | async function initializeStore() { FILE: lib/main/syncService.ts constant LAST_SYNCED_AT_KEY (line 16) | const LAST_SYNCED_AT_KEY = 'lastSyncedAt' function getEnvNamespace (line 18) | function getEnvNamespace(): string { function getLastSyncedAtKey (line 28) | function getLastSyncedAtKey(userId: string): string { class SyncService (line 33) | class SyncService { method constructor (line 38) | private constructor() { method getInstance (line 42) | public static getInstance(): SyncService { method start (line 49) | public async start() { method stop (line 60) | public stop() { method runSync (line 68) | private async runSync() { method pushNotes (line 120) | private async pushNotes(lastSyncedAt: string): Promise { method pushInteractions (line 141) | private async pushInteractions(lastSyncedAt: string): Promise { method pushDictionaryItems (line 162) | private async pushDictionaryItems(lastSyncedAt: string): Promise { method pullInteractions (line 205) | private async pullInteractions(lastSyncedAt?: string): Promise { method pullDictionaryItems (line 252) | private async pullDictionaryItems(lastSyncedAt?: string): Promise { function hardKillAll (line 53) | async function hardKillAll(): Promise { FILE: lib/main/text/TextInserter.ts class TextInserter (line 4) | class TextInserter { method insertText (line 5) | async insertText(transcript: string): Promise { FILE: lib/main/timing/TimingCollector.ts type TimingEventName (line 13) | enum TimingEventName { type ActiveTiming (line 31) | interface ActiveTiming { class TimingCollector (line 41) | class TimingCollector { method constructor (line 52) | constructor() { method shouldCollect (line 57) | private shouldCollect(): boolean { method startInteraction (line 66) | startInteraction(interactionId?: string) { method startTiming (line 86) | startTiming(eventName: TimingEventName, interactionId?: string) { method endTiming (line 112) | endTiming(eventName: TimingEventName, interactionId?: string) { method finalizeInteraction (line 147) | finalizeInteraction(interactionId?: string) { method clearInteraction (line 220) | clearInteraction(interactionId?: string) { method flush (line 233) | async flush({ flushAll = false } = {}) { method scheduleFlush (line 263) | private scheduleFlush() { method shutdown (line 274) | async shutdown() { method timeAsync (line 297) | async timeAsync( FILE: lib/main/tray.ts constant TRAY_GUID (line 10) | const TRAY_GUID = '7c6b7a2e-0d7e-4a4a-9d3d-2a3d9b6f2b10' // This is a GU... constant TRAY_HEIGHT (line 11) | const TRAY_HEIGHT = 16 function getTrayIconPath (line 13) | function getTrayIconPath(): string { function buildMicrophoneSubmenu (line 21) | async function buildMicrophoneSubmenu(): Promise< function rebuildTrayMenu (line 76) | async function rebuildTrayMenu(): Promise { function createAppTray (line 108) | async function createAppTray(): Promise { function destroyAppTray (line 140) | function destroyAppTray(): void { FILE: lib/main/voiceInputService.ts class VoiceInputService (line 9) | class VoiceInputService { FILE: lib/media/IAccessibilityContextProvider.ts type IAccessibilityContextProvider (line 6) | interface IAccessibilityContextProvider { FILE: lib/media/active-application.ts type ActiveWindow (line 6) | type ActiveWindow = { function getActiveWindow (line 19) | async function getActiveWindow(): Promise { FILE: lib/media/audio.ts constant MSG_TYPE_JSON (line 7) | const MSG_TYPE_JSON = 1 constant MSG_TYPE_AUDIO (line 8) | const MSG_TYPE_AUDIO = 2 type Message (line 10) | interface Message { class AudioRecorderService (line 15) | class AudioRecorderService extends EventEmitter { method constructor (line 27) | constructor() { method initialize (line 34) | public initialize(): void { method terminate (line 75) | public terminate(): void { method startRecording (line 87) | public startRecording(deviceName: string): void { method stopRecording (line 95) | public stopRecording(): void { method getDeviceList (line 103) | public getDeviceList(): Promise { method requestDeviceConfig (line 117) | public requestDeviceConfig(deviceName: string): void { method #onData (line 126) | #onData(chunk: Buffer): void { method #onStdErr (line 131) | #onStdErr(data: Buffer): void { method #onClose (line 135) | #onClose(code: number | null): void { method #onError (line 141) | #onError(err: Error): void { method #processData (line 151) | #processData(): void { method #parseMessage (line 166) | #parseMessage(): Message | null { method #handleMessage (line 193) | #handleMessage(message: Message): void { method awaitDrainComplete (line 238) | public awaitDrainComplete(timeoutMs: number = 500): Promise { method #sendCommand (line 273) | #sendCommand(command: object): void { method #calculateVolume (line 282) | #calculateVolume(buffer: Buffer): number { FILE: lib/media/keyboard.ts type KeyEvent (line 9) | interface KeyEvent { type HeartbeatEvent (line 16) | interface HeartbeatEvent { type RegisteredHotkeysEvent (line 22) | interface RegisteredHotkeysEvent { type ProcessEvent (line 27) | type ProcessEvent = KeyEvent | HeartbeatEvent | RegisteredHotkeysEvent constant HEARTBEAT_CHECK_INTERVAL_MS (line 36) | const HEARTBEAT_CHECK_INTERVAL_MS = 5000 // Check every 5 seconds constant HEARTBEAT_TIMEOUT_MS (line 37) | const HEARTBEAT_TIMEOUT_MS = 15000 // 15 seconds without heartbeat trigg... function normalizeKey (line 55) | function normalizeKey(rawKey: string): KeyName { function handleHeartbeat (line 63) | function handleHeartbeat(_event: HeartbeatEvent) { function startHeartbeatChecker (line 67) | function startHeartbeatChecker() { function stopHeartbeatChecker (line 81) | function stopHeartbeatChecker() { function restartKeyListener (line 88) | function restartKeyListener() { constant STUCK_KEY_TIMEOUT (line 107) | const STUCK_KEY_TIMEOUT = 5000 // 5 seconds constant STUCK_KEY_CHECK_INTERVAL (line 108) | const STUCK_KEY_CHECK_INTERVAL = 1000 // Check every 1 second function checkForStuckKeys (line 111) | function checkForStuckKeys() { function startStuckKeyChecker (line 160) | function startStuckKeyChecker() { function stopStuckKeyChecker (line 170) | function stopStuckKeyChecker() { function handleKeyEventInMain (line 177) | async function handleKeyEventInMain(event: KeyEvent) { FILE: lib/media/macOSAccessibilityContextProvider.ts constant NATIVE_MODULE_NAME (line 18) | const NATIVE_MODULE_NAME = 'cursor-context' class MacOSAccessibilityContextProvider (line 19) | class MacOSAccessibilityContextProvider method constructor (line 24) | constructor() {} method initialize (line 26) | public initialize(): void { method shutdown (line 42) | public shutdown(): void { method isRunning (line 46) | public isRunning(): boolean { method getCursorContext (line 50) | public async getCursorContext( FILE: lib/media/selected-text-reader.ts type SelectedTextOptions (line 6) | interface SelectedTextOptions { type SelectedTextResult (line 11) | interface SelectedTextResult { type SelectedTextCommand (line 18) | interface SelectedTextCommand { type CursorContextResult (line 25) | interface CursorContextResult { type CursorContextCommand (line 32) | interface CursorContextCommand { constant MAXIUMUM_TEXT_LENGTH_DEFAULT (line 40) | const MAXIUMUM_TEXT_LENGTH_DEFAULT = 10000 // Maximum length of text to ... type PendingRequest (line 42) | type PendingRequest = { class SelectedTextReaderService (line 47) | class SelectedTextReaderService extends EventEmitter { method constructor (line 52) | constructor() { method initialize (line 59) | public initialize(): void { method terminate (line 105) | public terminate(): void { method getSelectedText (line 125) | public async getSelectedText( method getCursorContext (line 161) | public async getCursorContext( method #sendCommand (line 192) | #sendCommand(command: SelectedTextCommand | CursorContextCommand): void { method #onData (line 208) | #onData(data: Buffer): void { method #onStdErr (line 241) | #onStdErr(data: Buffer): void { method #onClose (line 245) | #onClose(code: number, signal: string): void { method #onError (line 260) | #onError(error: Error): void { method isRunning (line 265) | public isRunning(): boolean { function getSelectedText (line 273) | function getSelectedText( function getSelectedTextString (line 285) | async function getSelectedTextString( function hasSelectedText (line 303) | async function hasSelectedText(): Promise { function getCursorContext (line 319) | async function getCursorContext(contextLength: number): Promise { FILE: lib/media/systemAudio.ts function getSystemVolume (line 10) | function getSystemVolume(): number | null { function setSystemVolume (line 31) | function setSystemVolume(volume: number): boolean { function muteSystemAudio (line 51) | function muteSystemAudio(): boolean { function unmuteSystemAudio (line 74) | function unmuteSystemAudio(): boolean { FILE: lib/media/text-writer.ts type TextWriterOptions (line 5) | interface TextWriterOptions { function setFocusedText (line 12) | function setFocusedText( FILE: lib/preload/index.d.ts type TrialStatus (line 3) | type TrialStatus = { type KeyEvent (line 14) | interface KeyEvent { type StoreAPI (line 21) | interface StoreAPI { type UpdaterAPI (line 26) | interface UpdaterAPI { type SelectedTextOptions (line 32) | interface SelectedTextOptions { type SelectedTextResult (line 37) | interface SelectedTextResult { type SelectedTextAPI (line 44) | interface SelectedTextAPI { type Window (line 51) | interface Window { FILE: lib/preload/preload.ts method get (line 17) | get(key) { method set (line 20) | set(property, val) { method get (line 35) | get(key) { method set (line 38) | set(property, val) { FILE: lib/protocol/index.ts constant PROTOCOL (line 7) | const PROTOCOL = ITO_ENV === 'prod' ? 'ito' : `ito-dev` function handleProtocolUrl (line 10) | function handleProtocolUrl(url: string) { function setupProtocolHandling (line 124) | function setupProtocolHandling(): void { function processStartupProtocolUrl (line 182) | function processStartupProtocolUrl(): void { FILE: lib/types/cursorContext.ts type CursorPosition (line 11) | interface CursorPosition { type TextRange (line 23) | interface TextRange { type CursorContext (line 35) | interface CursorContext { type CursorContextResult (line 57) | interface CursorContextResult { type CursorContextOptions (line 68) | interface CursorContextOptions { FILE: lib/types/ipc.ts constant IPC_EVENTS (line 4) | const IPC_EVENTS = { type RecordingStatePayload (line 15) | interface RecordingStatePayload { type ProcessingStatePayload (line 20) | interface ProcessingStatePayload { type VolumeUpdatePayload (line 25) | interface VolumeUpdatePayload { type IpcResult (line 30) | type IpcResult = type IpcResponse (line 34) | type IpcResponse = Promise> FILE: lib/types/keyboard.ts type ModifierKey (line 64) | type ModifierKey = type RegularKey (line 76) | type RegularKey = type KeyName (line 125) | type KeyName = ModifierKey | RegularKey function normalizeLegacyKey (line 137) | function normalizeLegacyKey(key: string): KeyName { type KeyDisplayInfo (line 142) | interface KeyDisplayInfo { function getKeyDisplayInfo (line 150) | function getKeyDisplayInfo( FILE: lib/utils.ts function cn (line 4) | function cn(...inputs: ClassValue[]) { FILE: lib/utils/applicationDetection.ts constant TERMINAL_APPS (line 3) | const TERMINAL_APPS = new Set([ function canGetContextWithAccessibilityApis (line 78) | async function canGetContextWithAccessibilityApis(): Promise { function isTerminalApplication (line 92) | function isTerminalApplication(appName: string): boolean { function canGetContextFromCurrentApp (line 97) | async function canGetContextFromCurrentApp(): Promise { FILE: lib/utils/crossPlatform.ts function checkAccessibilityPermission (line 12) | function checkAccessibilityPermission(prompt: boolean = false): boolean { function checkMicrophonePermission (line 25) | async function checkMicrophonePermission( FILE: lib/utils/settings.ts function resolveDefaultKeys (line 4) | function resolveDefaultKeys( FILE: lib/window/ipcDev.ts function registerDevIPC (line 4) | function registerDevIPC() { FILE: lib/window/ipcEvents.ts function registerIPC (line 56) | function registerIPC() { FILE: native/active-application/build.rs function main (line 1) | fn main() { FILE: native/active-application/src/main.rs function main (line 4) | fn main() { function output_result (line 14) | fn output_result(active_window: ActiveWindow) { FILE: native/audio-recorder/build.rs function main (line 1) | fn main() { FILE: native/audio-recorder/src/main.rs type Command (line 15) | enum Command { type DeviceList (line 26) | struct DeviceList { type AudioConfig (line 33) | struct AudioConfig { constant MSG_TYPE_JSON (line 41) | const MSG_TYPE_JSON: u8 = 1; constant MSG_TYPE_AUDIO (line 42) | const MSG_TYPE_AUDIO: u8 = 2; function write_framed_message (line 44) | fn write_framed_message(writer: &mut impl Write, msg_type: u8, data: &[u... function main (line 52) | fn main() { type CommandProcessor (line 75) | struct CommandProcessor { method new (line 86) | fn new(cmd_rx: crossbeam_channel::Receiver, stdout: Arc Rc { method run (line 132) | fn run(&mut self) { method list_devices (line 143) | fn list_devices(&mut self) { method start_recording (line 161) | fn start_recording(&mut self, device_name: Option) { method stop_recording (line 176) | fn stop_recording(&mut self) { method get_device_config (line 190) | fn get_device_config(&mut self, device_name: Option) { function write_audio_chunk (line 226) | fn write_audio_chunk(data: &[f32], stdout: &Arc>) { type CaptureHandles (line 241) | struct CaptureHandles { function downmix_to_mono_vec (line 247) | fn downmix_to_mono_vec(data: &[T], num_channels: usize) -> Vec function writer_loop (line 288) | fn writer_loop( function start_capture (line 435) | fn start_capture( function test_downmix_to_mono_single_channel (line 594) | fn test_downmix_to_mono_single_channel() { function test_downmix_to_mono_stereo (line 603) | fn test_downmix_to_mono_stereo() { function test_downmix_to_mono_quad (line 614) | fn test_downmix_to_mono_quad() { function test_downmix_partial_frame (line 624) | fn test_downmix_partial_frame() { function test_write_framed_message_structure (line 635) | fn test_write_framed_message_structure() { function test_write_framed_message_audio_type (line 654) | fn test_write_framed_message_audio_type() { FILE: native/global-key-listener/build.rs function main (line 1) | fn main() { FILE: native/global-key-listener/src/key_codes.rs function key_to_code (line 4) | pub fn key_to_code(key: &Key) -> Option { function test_key_to_code_letters (line 103) | fn test_key_to_code_letters() { function test_key_to_code_numbers (line 111) | fn test_key_to_code_numbers() { function test_key_to_code_modifiers (line 119) | fn test_key_to_code_modifiers() { function test_key_to_code_function_keys (line 129) | fn test_key_to_code_function_keys() { function test_key_to_code_special_keys (line 137) | fn test_key_to_code_special_keys() { function test_key_to_code_arrow_keys (line 147) | fn test_key_to_code_arrow_keys() { FILE: native/global-key-listener/src/main.rs type HotkeyCombo (line 22) | struct HotkeyCombo { type Command (line 28) | enum Command { function prevent_app_nap (line 51) | fn prevent_app_nap() -> id { function prevent_app_nap (line 70) | fn prevent_app_nap() { function main (line 74) | fn main() { function handle_command (line 114) | fn handle_command(command: Command) { function should_block (line 125) | fn should_block() -> bool { function callback (line 145) | fn callback(event: Event) -> Option { function output_event (line 270) | fn output_event(event_type: &str, key: &Key) { FILE: native/selected-text-reader/build.rs function main (line 1) | fn main() { FILE: native/selected-text-reader/src/macos.rs function count_editor_chars (line 9) | pub fn count_editor_chars(text: &str) -> usize { type __CGEvent (line 15) | struct __CGEvent(c_void); type CGEventRef (line 16) | type CGEventRef = *mut __CGEvent; type CGKeyCode (line 18) | type CGKeyCode = u16; type CGEventFlags (line 19) | type CGEventFlags = u64; constant CG_EVENT_FLAG_MASK_COMMAND (line 20) | const CG_EVENT_FLAG_MASK_COMMAND: CGEventFlags = 0x100000; constant CG_EVENT_FLAG_MASK_SHIFT (line 21) | const CG_EVENT_FLAG_MASK_SHIFT: CGEventFlags = 0x020000; type CGEventTapLocation (line 23) | type CGEventTapLocation = u32; constant CG_SESSION_EVENT_TAP (line 24) | const CG_SESSION_EVENT_TAP: CGEventTapLocation = 1; function CGEventCreateKeyboardEvent (line 27) | fn CGEventCreateKeyboardEvent( function CGEventSetFlags (line 32) | fn CGEventSetFlags(event: CGEventRef, flags: CGEventFlags); function CGEventPost (line 33) | fn CGEventPost(tap: CGEventTapLocation, event: CGEventRef); function CGEventSetIntegerValueField (line 34) | fn CGEventSetIntegerValueField(event: CGEventRef, field: u32, value: i64); function CFRelease (line 35) | fn CFRelease(cf: *const c_void); function get_selected_text (line 38) | pub fn get_selected_text() -> Result> { function native_cmd_c (line 67) | pub fn native_cmd_c() -> Result<(), Box> { function select_previous_chars_and_copy (line 108) | pub fn select_previous_chars_and_copy( function shift_cursor_right_with_deselect (line 174) | pub fn shift_cursor_right_with_deselect( function test_count_editor_chars (line 218) | fn test_count_editor_chars() { FILE: native/selected-text-reader/src/main.rs type Command (line 15) | enum Command { type SelectedTextResponse (line 36) | struct SelectedTextResponse { type CursorContextResponse (line 46) | struct CursorContextResponse { function main (line 56) | fn main() { type CommandProcessor (line 83) | struct CommandProcessor { method new (line 88) | fn new(cmd_rx: crossbeam_channel::Receiver) -> Self { method run (line 92) | fn run(&mut self) { method handle_get_text (line 113) | fn handle_get_text(&mut self, max_length: Option, request_id: S... method handle_get_cursor_context (line 160) | fn handle_get_cursor_context( function get_selected_text (line 213) | fn get_selected_text() -> Result> { function get_selected_text (line 218) | fn get_selected_text() -> Result> { function get_cursor_context (line 222) | fn get_cursor_context(context_length: usize) -> Result Result<(), Box> { function copy_selected_text (line 327) | fn copy_selected_text() -> Result<(), Box> { function select_previous_chars_and_copy (line 332) | fn select_previous_chars_and_copy( function select_previous_chars_and_copy (line 340) | fn select_previous_chars_and_copy( function shift_cursor_right_with_deselect (line 348) | fn shift_cursor_right_with_deselect(char_count: usize) -> Result<(), Box... function shift_cursor_right_with_deselect (line 353) | fn shift_cursor_right_with_deselect(char_count: usize) -> Result<(), Box... function count_editor_chars (line 358) | fn count_editor_chars(text: &str) -> usize { function count_editor_chars (line 363) | fn count_editor_chars(text: &str) -> usize { FILE: native/selected-text-reader/src/windows.rs function count_editor_chars (line 8) | pub fn count_editor_chars(text: &str) -> usize { function get_selected_text (line 14) | pub fn get_selected_text() -> Result> { function copy_selected_text (line 19) | pub fn copy_selected_text() -> Result<(), Box> { function select_previous_chars_and_copy (line 31) | pub fn select_previous_chars_and_copy( function shift_cursor_right_with_deselect (line 74) | pub fn shift_cursor_right_with_deselect( function test_count_editor_chars_normal_text (line 103) | fn test_count_editor_chars_normal_text() { function test_count_editor_chars_with_unix_newline (line 108) | fn test_count_editor_chars_with_unix_newline() { function test_count_editor_chars_with_crlf (line 113) | fn test_count_editor_chars_with_crlf() { function test_count_editor_chars_multiple_crlf (line 119) | fn test_count_editor_chars_multiple_crlf() { function test_count_editor_chars_unicode (line 124) | fn test_count_editor_chars_unicode() { function test_count_editor_chars_emoji (line 129) | fn test_count_editor_chars_emoji() { function test_count_editor_chars_empty (line 134) | fn test_count_editor_chars_empty() { FILE: native/text-writer/build.rs function main (line 1) | fn main() { FILE: native/text-writer/src/macos_writer.rs function type_text_macos (line 13) | pub fn type_text_macos(text: &str, _char_delay: u64) -> Result<(), Strin... FILE: native/text-writer/src/main.rs type Args (line 23) | struct Args { function main (line 44) | fn main() { FILE: native/text-writer/src/windows_writer.rs function type_text_windows (line 10) | pub fn type_text_windows(text: &str, _char_delay: u64) -> Result<(), Str... FILE: server/infra/bin/infra.ts type AppStageProps (line 13) | interface AppStageProps extends StageProps { class AppStage (line 17) | class AppStage extends Stage { method constructor (line 20) | constructor(scope: Construct, id: string, props: AppStageProps) { FILE: server/infra/lambdas/firehose-transform.ts type FirehoseRecord (line 3) | type FirehoseRecord = { type FirehoseResponseRecord (line 8) | type FirehoseResponseRecord = { type FirehoseEvent (line 14) | type FirehoseEvent = { type CwLogEvent (line 18) | type CwLogEvent = { type CwLogsBatch (line 28) | type CwLogsBatch = { constant DATASET (line 37) | const DATASET = process.env.DATASET || 'server' constant STAGE (line 38) | const STAGE = process.env.STAGE || 'dev' function tryJsonParse (line 40) | function tryJsonParse(text: unknown): T | undefined { function isGzip (line 51) | function isGzip(buffer: Buffer): boolean { function decodeRecord (line 55) | function decodeRecord(b64: string): string { function utf8ToBase64 (line 61) | function utf8ToBase64(s: string): string { function isoTimestamp (line 65) | function isoTimestamp(ms?: number): string { function clean (line 70) | function clean(obj: Record): Record { FILE: server/infra/lambdas/opensearch-bootstrap.ts type Event (line 4) | type Event = { constant DOMAIN_ENDPOINT (line 8) | const DOMAIN_ENDPOINT = process.env.DOMAIN_ENDPOINT! constant REGION (line 9) | const REGION = process.env.REGION || 'us-west-2' constant STAGE (line 10) | const STAGE = process.env.STAGE || 'dev' function signRequest (line 24) | function signRequest( function request (line 91) | function request(path: string, method: string, body?: any): Promise { FILE: server/infra/lambdas/timing-merger.ts constant OPENSEARCH_ENDPOINT (line 7) | const OPENSEARCH_ENDPOINT = process.env.OPENSEARCH_ENDPOINT function getTimingIndexName (line 13) | function getTimingIndexName(): string { type TimingEvent (line 29) | interface TimingEvent { type ClientTimingData (line 36) | interface ClientTimingData { type ServerTimingData (line 49) | interface ServerTimingData { type TimingData (line 57) | type TimingData = ClientTimingData | ServerTimingData type MergedEvent (line 59) | interface MergedEvent { function getS3Object (line 67) | async function getS3Object(bucket: string, key: string): Promise { function mergeAndUpsertTimingReport (line 78) | async function mergeAndUpsertTimingReport( FILE: server/infra/lib/cicd-stack.ts type GitHubOidcStackProps (line 23) | interface GitHubOidcStackProps extends StackProps { class GitHubOidcStack (line 27) | class GitHubOidcStack extends Stack { method constructor (line 28) | constructor(scope: Construct, id: string, props: GitHubOidcStackProps) { FILE: server/infra/lib/constants.ts constant DB_NAME (line 1) | const DB_NAME = 'ItoDb' constant SERVER_NAME (line 2) | const SERVER_NAME = 'ito-server' constant CLUSTER_NAME (line 3) | const CLUSTER_NAME = 'ito-cluster' constant SERVICE_NAME (line 4) | const SERVICE_NAME = 'ito-service' constant ITO_PREFIX (line 5) | const ITO_PREFIX = 'Ito' constant SERVICE_REPO_ARN (line 6) | const SERVICE_REPO_ARN = 'ServiceRepoArn' constant DB_PORT (line 7) | const DB_PORT = 5432 FILE: server/infra/lib/helpers.ts function isDev (line 1) | function isDev(stage: string) { FILE: server/infra/lib/network-stack.ts class NetworkStack (line 5) | class NetworkStack extends Stack { method constructor (line 8) | constructor(scope: Construct, id: string, props?: StackProps) { FILE: server/infra/lib/observability-stack.ts type ObservabilityStackProps (line 9) | interface ObservabilityStackProps extends StackProps { class ObservabilityStack (line 13) | class ObservabilityStack extends Stack { method constructor (line 16) | constructor(scope: Construct, id: string, props: ObservabilityStackPro... FILE: server/infra/lib/platform-stack.ts type PlatformStackProps (line 49) | interface PlatformStackProps extends StackProps { class PlatformStack (line 53) | class PlatformStack extends Stack { method constructor (line 62) | constructor(scope: Construct, id: string, props: PlatformStackProps) { FILE: server/infra/lib/security-stack.ts type SecurityStackProps (line 7) | interface SecurityStackProps extends StackProps { class SecurityStack (line 12) | class SecurityStack extends Stack { method constructor (line 13) | constructor(scope: Construct, id: string, props: SecurityStackProps) { FILE: server/infra/lib/service-stack.ts type ServiceStackProps (line 41) | interface ServiceStackProps extends StackProps { class ServiceStack (line 51) | class ServiceStack extends Stack { method constructor (line 56) | constructor(scope: Construct, id: string, props: ServiceStackProps) { FILE: server/infra/lib/service/fargate-task.ts type FargateTaskConfig (line 23) | interface FargateTaskConfig { type FargateTaskResources (line 41) | interface FargateTaskResources { function createFargateTask (line 49) | function createFargateTask( FILE: server/infra/lib/service/firehose-config.ts type FirehoseConfig (line 17) | interface FirehoseConfig { type FirehoseResources (line 28) | interface FirehoseResources { function createFirehoseStreams (line 39) | function createFirehoseStreams( FILE: server/infra/lib/service/log-groups.ts type LogGroupConfig (line 6) | interface LogGroupConfig { type LogGroupResources (line 10) | interface LogGroupResources { function createLogGroups (line 17) | function createLogGroups( FILE: server/infra/lib/service/migration-lambda.ts type MigrationLambdaConfig (line 15) | interface MigrationLambdaConfig { type MigrationLambdaResources (line 27) | interface MigrationLambdaResources { function createMigrationLambda (line 31) | function createMigrationLambda( FILE: server/infra/lib/service/opensearch-bootstrap.ts type OpenSearchBootstrapConfig (line 8) | interface OpenSearchBootstrapConfig { type OpenSearchBootstrapResources (line 13) | interface OpenSearchBootstrapResources { function createOpenSearchBootstrap (line 19) | function createOpenSearchBootstrap( FILE: server/infra/lib/timing-config.ts type TimingConfig (line 11) | interface TimingConfig { type TimingResources (line 18) | interface TimingResources { function createTimingInfrastructure (line 25) | function createTimingInfrastructure( FILE: server/scripts/migrate-audio-to-s3.ts type InteractionRow (line 13) | interface InteractionRow { function migrateAudioToS3 (line 20) | async function migrateAudioToS3() { FILE: server/src/auth/auth0Helpers.ts function getAuth0ManagementToken (line 1) | async function getAuth0ManagementToken(): Promise { function getUserInfoFromAuth0 (line 32) | async function getUserInfoFromAuth0( FILE: server/src/auth/userContext.ts type Auth0User (line 4) | interface Auth0User { FILE: server/src/clients/asrConfig.ts type TranscriptionOptions (line 1) | interface TranscriptionOptions { FILE: server/src/clients/cerebrasClient.ts class CerebrasClient (line 21) | class CerebrasClient implements LlmProvider { method constructor (line 26) | constructor(apiKey: string, userCommandModel: string) { method isAvailable (line 38) | public get isAvailable(): boolean { method adjustTranscript (line 47) | public async adjustTranscript( method transcribeAudio (line 92) | public async transcribeAudio( FILE: server/src/clients/errors.ts type ErrorType (line 10) | enum ErrorType { method constructor (line 24) | constructor( method mapProviderToProtobuf (line 36) | private mapProviderToProtobuf(provider: ClientProvider): ClientProviderPb { method mapErrorTypeToProtobuf (line 50) | private mapErrorTypeToProtobuf(type: ErrorType): ErrorTypePb { method toProtobuf (line 68) | toProtobuf(): ClientErrorPb { method constructor (line 94) | constructor( class ClientApiKeyError (line 106) | class ClientApiKeyError extends ClientConfigurationError { method constructor (line 109) | constructor(provider: ClientProvider) { class ClientModelError (line 117) | class ClientModelError extends ClientConfigurationError { method constructor (line 120) | constructor(provider: ClientProvider) { class ClientUnavailableError (line 128) | class ClientUnavailableError extends ClientError { method constructor (line 132) | constructor(provider: ClientProvider) { method constructor (line 143) | constructor( class ClientNoSpeechError (line 155) | class ClientNoSpeechError extends ClientAudioError { method constructor (line 158) | constructor( class ClientTranscriptionQualityError (line 169) | class ClientTranscriptionQualityError extends ClientAudioError { method constructor (line 172) | constructor( class ClientAudioTooShortError (line 183) | class ClientAudioTooShortError extends ClientAudioError { method constructor (line 186) | constructor(provider: ClientProvider) { class ClientApiError (line 194) | class ClientApiError extends ClientError { method constructor (line 198) | constructor( function isClientError (line 214) | function isClientError(error: unknown): error is ClientError { function isClientErrorType (line 221) | function isClientErrorType( function errorToProtobuf (line 233) | function errorToProtobuf( FILE: server/src/clients/groqClient.test.ts method constructor (line 27) | constructor() { FILE: server/src/clients/groqClient.ts class GroqClient (line 27) | class GroqClient implements LlmProvider { method constructor (line 32) | constructor(apiKey: string, userCommandModel: string) { method isAvailable (line 44) | public get isAvailable(): boolean { method adjustTranscript (line 53) | public async adjustTranscript( method transcribeAudio (line 97) | public async transcribeAudio( FILE: server/src/clients/intentTranscriptionConfig.ts type IntentTranscriptionOptions (line 1) | interface IntentTranscriptionOptions { FILE: server/src/clients/llmProvider.ts type LlmProvider (line 4) | interface LlmProvider { FILE: server/src/clients/providerUtils.ts function getAsrProvider (line 12) | function getAsrProvider(providerName: string): LlmProvider { function getLlmProvider (line 30) | function getLlmProvider(providerName: string): LlmProvider { function getAvailableAsrProviders (line 53) | function getAvailableAsrProviders(): ClientProvider[] { function getAvailableLlmProviders (line 67) | function getAvailableLlmProviders(): ClientProvider[] { FILE: server/src/clients/providers.ts type ClientProvider (line 1) | enum ClientProvider { FILE: server/src/clients/s3storageClient.ts class S3StorageClient (line 17) | class S3StorageClient { method constructor (line 22) | constructor(bucketName?: string) { method uploadObject (line 54) | async uploadObject( method getObject (line 71) | async getObject(key: string): Promise<{ method deleteObject (line 90) | async deleteObject(key: string): Promise { method listObjects (line 99) | async listObjects( method hardDeletePrefix (line 120) | async hardDeletePrefix(prefix: string): Promise { method objectExists (line 156) | async objectExists(key: string): Promise { method getObjectUrl (line 176) | async getObjectUrl(key: string, _expiresIn?: number): Promise { method getBucketName (line 182) | getBucketName(): string { function getStorageClient (line 190) | function getStorageClient(): S3StorageClient { FILE: server/src/constants/generated-defaults.ts constant DEFAULT_ADVANCED_SETTINGS (line 7) | const DEFAULT_ADVANCED_SETTINGS = { FILE: server/src/constants/markers.ts constant START_WINDOW_TITLE_MARKER (line 1) | const START_WINDOW_TITLE_MARKER = '{START_WINDOW_TITLE_MARKER}' constant END_WINDOW_TITLE_MARKER (line 2) | const END_WINDOW_TITLE_MARKER = '{END_WINDOW_TITLE_MARKER}' constant START_APP_NAME_MARKER (line 3) | const START_APP_NAME_MARKER = '{START_APP_NAME_MARKER}' constant END_APP_NAME_MARKER (line 4) | const END_APP_NAME_MARKER = '{END_APP_NAME_MARKER}' constant START_USER_COMMAND_MARKER (line 5) | const START_USER_COMMAND_MARKER = '{START_USER_COMMAND_MARKER}' constant END_USER_COMMAND_MARKER (line 6) | const END_USER_COMMAND_MARKER = '{END_USER_COMMAND_MARKER}' constant START_CONTEXT_MARKER (line 7) | const START_CONTEXT_MARKER = '{START_CONTEXT_MARKER}' constant END_CONTEXT_MARKER (line 8) | const END_CONTEXT_MARKER = '{END_CONTEXT_MARKER}' FILE: server/src/constants/storage.ts constant AUDIO_KEY_PREFIX (line 1) | const AUDIO_KEY_PREFIX = 'raw-audio' function createAudioKey (line 3) | function createAudioKey(userId: string, audioUuid: string): string { FILE: server/src/db/models.ts type Note (line 1) | interface Note { type Interaction (line 11) | interface Interaction { type DictionaryItem (line 25) | interface DictionaryItem { type LlmSettingsBase (line 35) | interface LlmSettingsBase { type LlmSettings (line 48) | interface LlmSettings extends LlmSettingsBase { type AdvancedSettings (line 55) | interface AdvancedSettings { type UserTrial (line 63) | interface UserTrial { type UserSubscription (line 73) | interface UserSubscription { FILE: server/src/db/repo.ts class NotesRepository (line 21) | class NotesRepository { method create (line 22) | static async create( method findById (line 39) | static async findById(id: string): Promise { method findByUserId (line 46) | static async findByUserId(userId: string, since?: Date): Promise { method deleteAllUserData (line 82) | static async deleteAllUserData(userId: string): Promise { method hardDeleteAllUserData (line 92) | static async hardDeleteAllUserData(userId: string): Promise { class InteractionsRepository (line 100) | class InteractionsRepository { method create (line 101) | static async create( method findById (line 124) | static async findById(id: string): Promise { method findByUserId (line 132) | static async findByUserId( method update (line 150) | static async update( method softDelete (line 163) | static async softDelete(id: string): Promise { method deleteAllUserData (line 173) | static async deleteAllUserData(userId: string): Promise { method hardDeleteAllUserData (line 183) | static async hardDeleteAllUserData(userId: string): Promise { class DictionaryRepository (line 192) | class DictionaryRepository { method create (line 193) | static async create( method findByUserId (line 205) | static async findByUserId( method update (line 223) | static async update( method softDelete (line 236) | static async softDelete(id: string): Promise { method deleteAllUserData (line 246) | static async deleteAllUserData(userId: string): Promise { method hardDeleteAllUserData (line 256) | static async hardDeleteAllUserData(userId: string): Promise { class AdvancedSettingsRepository (line 265) | class AdvancedSettingsRepository { method findByUserId (line 266) | static async findByUserId( method upsert (line 299) | static async upsert( method hardDeleteByUserId (line 361) | static async hardDeleteByUserId(userId: string): Promise { class IpLinkRepository (line 369) | class IpLinkRepository { method cleanupExpired (line 370) | static async cleanupExpired(): Promise { method registerCandidate (line 377) | static async registerCandidate( method consumeLatestForIp (line 389) | static async consumeLatestForIp(ipHash: string): Promise { class TrialsRepository (line 406) | class TrialsRepository { method getByUserId (line 407) | static async getByUserId(userId: string): Promise { class SubscriptionsRepository (line 509) | class SubscriptionsRepository { method getByUserId (line 510) | static async getByUserId( method upsertActive (line 520) | static async upsertActive( method updateSubscriptionEndAt (line 544) | static async updateSubscriptionEndAt( method deleteByStripeSubscriptionId (line 558) | static async deleteByStripeSubscriptionId( FILE: server/src/generated/buf/validate/validate_pb.ts type Rule (line 50) | type Rule = Message<"buf.validate.Rule"> & { type MessageRules (line 93) | type MessageRules = Message<"buf.validate.MessageRules"> & { type MessageOneofRule (line 167) | type MessageOneofRule = Message<"buf.validate.MessageOneofRule"> & { type OneofRules (line 198) | type OneofRules = Message<"buf.validate.OneofRules"> & { type FieldRules (line 235) | type FieldRules = Message<"buf.validate.FieldRules"> & { type PredefinedRules (line 487) | type PredefinedRules = Message<"buf.validate.PredefinedRules"> & { type FloatRules (line 522) | type FloatRules = Message<"buf.validate.FloatRules"> & { type DoubleRules (line 704) | type DoubleRules = Message<"buf.validate.DoubleRules"> & { type Int32Rules (line 886) | type Int32Rules = Message<"buf.validate.Int32Rules"> & { type Int64Rules (line 1060) | type Int64Rules = Message<"buf.validate.Int64Rules"> & { type UInt32Rules (line 1234) | type UInt32Rules = Message<"buf.validate.UInt32Rules"> & { type UInt64Rules (line 1408) | type UInt64Rules = Message<"buf.validate.UInt64Rules"> & { type SInt32Rules (line 1581) | type SInt32Rules = Message<"buf.validate.SInt32Rules"> & { type SInt64Rules (line 1754) | type SInt64Rules = Message<"buf.validate.SInt64Rules"> & { type Fixed32Rules (line 1927) | type Fixed32Rules = Message<"buf.validate.Fixed32Rules"> & { type Fixed64Rules (line 2100) | type Fixed64Rules = Message<"buf.validate.Fixed64Rules"> & { type SFixed32Rules (line 2273) | type SFixed32Rules = Message<"buf.validate.SFixed32Rules"> & { type SFixed64Rules (line 2446) | type SFixed64Rules = Message<"buf.validate.SFixed64Rules"> & { type BoolRules (line 2620) | type BoolRules = Message<"buf.validate.BoolRules"> & { type StringRules (line 2668) | type StringRules = Message<"buf.validate.StringRules"> & { type BytesRules (line 3328) | type BytesRules = Message<"buf.validate.BytesRules"> & { type EnumRules (line 3576) | type EnumRules = Message<"buf.validate.EnumRules"> & { type RepeatedRules (line 3698) | type RepeatedRules = Message<"buf.validate.RepeatedRules"> & { type MapRules (line 3786) | type MapRules = Message<"buf.validate.MapRules"> & { type AnyRules (line 3873) | type AnyRules = Message<"buf.validate.AnyRules"> & { type DurationRules (line 3921) | type DurationRules = Message<"buf.validate.DurationRules"> & { type TimestampRules (line 4096) | type TimestampRules = Message<"buf.validate.TimestampRules"> & { type Violations (line 4278) | type Violations = Message<"buf.validate.Violations"> & { type Violation (line 4341) | type Violation = Message<"buf.validate.Violation"> & { type FieldPath (line 4440) | type FieldPath = Message<"buf.validate.FieldPath"> & { type FieldPathElement (line 4465) | type FieldPathElement = Message<"buf.validate.FieldPathElement"> & { type Ignore (line 4575) | enum Ignore { type KnownRegex (line 4685) | enum KnownRegex { FILE: server/src/generated/ito_pb.ts type Empty (line 22) | type Empty = Message<"ito.Empty"> & { type ClientError (line 35) | type ClientError = Message<"ito.ClientError"> & { type AudioChunk (line 76) | type AudioChunk = Message<"ito.AudioChunk"> & { type ContextInfo (line 97) | type ContextInfo = Message<"ito.ContextInfo"> & { type StreamConfig (line 133) | type StreamConfig = Message<"ito.StreamConfig"> & { type TranscribeStreamRequest (line 168) | type TranscribeStreamRequest = Message<"ito.TranscribeStreamRequest"> & { type TranscriptionResponse (line 203) | type TranscriptionResponse = Message<"ito.TranscriptionResponse"> & { type Note (line 228) | type Note = Message<"ito.Note"> & { type CreateNoteRequest (line 275) | type CreateNoteRequest = Message<"ito.CreateNoteRequest"> & { type GetNoteRequest (line 302) | type GetNoteRequest = Message<"ito.GetNoteRequest"> & { type ListNotesRequest (line 319) | type ListNotesRequest = Message<"ito.ListNotesRequest"> & { type ListNotesResponse (line 338) | type ListNotesResponse = Message<"ito.ListNotesResponse"> & { type UpdateNoteRequest (line 355) | type UpdateNoteRequest = Message<"ito.UpdateNoteRequest"> & { type DeleteNoteRequest (line 377) | type DeleteNoteRequest = Message<"ito.DeleteNoteRequest"> & { type Interaction (line 397) | type Interaction = Message<"ito.Interaction"> & { type CreateInteractionRequest (line 474) | type CreateInteractionRequest = Message<"ito.CreateInteractionRequest"> & { type GetInteractionRequest (line 520) | type GetInteractionRequest = Message<"ito.GetInteractionRequest"> & { type ListInteractionsRequest (line 537) | type ListInteractionsRequest = Message<"ito.ListInteractionsRequest"> & { type ListInteractionsResponse (line 556) | type ListInteractionsResponse = Message<"ito.ListInteractionsResponse"> & { type UpdateInteractionRequest (line 573) | type UpdateInteractionRequest = Message<"ito.UpdateInteractionRequest"> & { type DeleteInteractionRequest (line 595) | type DeleteInteractionRequest = Message<"ito.DeleteInteractionRequest"> & { type DictionaryItem (line 615) | type DictionaryItem = Message<"ito.DictionaryItem"> & { type CreateDictionaryItemRequest (line 662) | type CreateDictionaryItemRequest = Message<"ito.CreateDictionaryItemRequ... type ListDictionaryItemsRequest (line 689) | type ListDictionaryItemsRequest = Message<"ito.ListDictionaryItemsReques... type ListDictionaryItemsResponse (line 708) | type ListDictionaryItemsResponse = Message<"ito.ListDictionaryItemsRespo... type UpdateDictionaryItemRequest (line 725) | type UpdateDictionaryItemRequest = Message<"ito.UpdateDictionaryItemRequ... type DeleteDictionaryItemRequest (line 752) | type DeleteDictionaryItemRequest = Message<"ito.DeleteDictionaryItemRequ... type DeleteUserDataRequest (line 774) | type DeleteUserDataRequest = Message<"ito.DeleteUserDataRequest"> & { type LlmSettings (line 787) | type LlmSettings = Message<"ito.LlmSettings"> & { type AdvancedSettings (line 849) | type AdvancedSettings = Message<"ito.AdvancedSettings"> & { type GetAdvancedSettingsRequest (line 893) | type GetAdvancedSettingsRequest = Message<"ito.GetAdvancedSettingsReques... type UpdateAdvancedSettingsRequest (line 906) | type UpdateAdvancedSettingsRequest = Message<"ito.UpdateAdvancedSettings... type TimingEvent (line 926) | type TimingEvent = Message<"ito.TimingEvent"> & { type TimingReport (line 958) | type TimingReport = Message<"ito.TimingReport"> & { type SubmitTimingReportsRequest (line 1015) | type SubmitTimingReportsRequest = Message<"ito.SubmitTimingReportsReques... type SubmitTimingReportsResponse (line 1034) | type SubmitTimingReportsResponse = Message<"ito.SubmitTimingReportsRespo... type ItoMode (line 1047) | enum ItoMode { type ClientProvider (line 1071) | enum ClientProvider { type ErrorType (line 1092) | enum ErrorType { FILE: server/src/migrations/schema/initial.js constant INITIAL_SCHEMA_UP (line 1) | const INITIAL_SCHEMA_UP = ` constant INITIAL_SCHEMA_DOWN (line 34) | const INITIAL_SCHEMA_DOWN = ` FILE: server/src/prompts/transcription.ts function estimateTokenCount (line 4) | function estimateTokenCount(text: string): number { function createTranscriptionPrompt (line 11) | function createTranscriptionPrompt(vocabulary: string[]): string { FILE: server/src/services/__tests__/helpers.ts type AnyObject (line 4) | type AnyObject = Record function createTestApp (line 6) | function createTestApp(): FastifyInstance { function addAuthHook (line 10) | function addAuthHook( function createTestAppWithAuth (line 19) | function createTestAppWithAuth( function createEnvReset (line 27) | function createEnvReset() { FILE: server/src/services/auth0.ts type SendVerificationBody (line 3) | type SendVerificationBody = { FILE: server/src/services/billing.test.ts class Stripe (line 26) | class Stripe { method constructor (line 30) | constructor(_apiKey: string) { FILE: server/src/services/billing.ts type Options (line 9) | type Options = { function getEnv (line 13) | function getEnv(name: string): string { function renderDeepLinkHtml (line 19) | function renderDeepLinkHtml(targetUrl: string): string { FILE: server/src/services/cloudWatchLogger.ts type CloudWatchLogEntry (line 8) | interface CloudWatchLogEntry { class CloudWatchLogger (line 16) | class CloudWatchLogger { method constructor (line 22) | constructor(logGroupName?: string | null, logStreamNameSuffix?: string) { method ensureStream (line 33) | async ensureStream(): Promise { method sendLogs (line 65) | async sendLogs(entries: CloudWatchLogEntry[]): Promise { method isConfigured (line 110) | isConfigured(): boolean { FILE: server/src/services/ito/audioUtils.ts function createWavHeader (line 4) | function createWavHeader( FILE: server/src/services/ito/constants.ts constant ITO_MODE_PROMPT (line 4) | const ITO_MODE_PROMPT: { [key in ItoMode]: string } = { constant ITO_MODE_SYSTEM_PROMPT (line 9) | const ITO_MODE_SYSTEM_PROMPT: { [key in ItoMode]: string } = { constant DEFAULT_ADVANCED_SETTINGS_STRUCT (line 14) | const DEFAULT_ADVANCED_SETTINGS_STRUCT = { FILE: server/src/services/ito/helpers.ts function createUserPromptWithContext (line 17) | function createUserPromptWithContext( function validateAndTransformHeaderValue (line 42) | function validateAndTransformHeaderValue( function getAdvancedSettingsHeaders (line 61) | function getAdvancedSettingsHeaders(headers: Headers) { function getItoMode (line 147) | function getItoMode(input: unknown): ItoMode | undefined { function detectItoMode (line 161) | function detectItoMode(transcript: string): ItoMode { function getPromptForMode (line 168) | function getPromptForMode( FILE: server/src/services/ito/itoService.ts function dbToNotePb (line 39) | function dbToNotePb(dbNote: DbNote): Note { function dbToInteractionPb (line 51) | function dbToInteractionPb( function dbToDictionaryItemPb (line 83) | function dbToDictionaryItemPb( function dbToAdvancedSettingsPb (line 97) | function dbToAdvancedSettingsPb( method transcribeStreamV2 (line 128) | async transcribeStreamV2( method transcribeStream (line 139) | async transcribeStream( method createNote (line 145) | async createNote(request, context: HandlerContext) { method getNote (line 156) | async getNote(request) { method listNotes (line 164) | async listNotes(request, context: HandlerContext) { method updateNote (line 177) | async updateNote(request) { method deleteNote (line 185) | async deleteNote(request) { method createInteraction (line 190) | async createInteraction(request, context: HandlerContext) { method getInteraction (line 245) | async getInteraction(request) { method listInteractions (line 276) | async listInteractions(request, context: HandlerContext) { method updateInteraction (line 335) | async updateInteraction(request) { method deleteInteraction (line 346) | async deleteInteraction(request) { method createDictionaryItem (line 351) | async createDictionaryItem(request, context: HandlerContext) { method listDictionaryItems (line 362) | async listDictionaryItems(request, context: HandlerContext) { method updateDictionaryItem (line 375) | async updateDictionaryItem(request) { method deleteDictionaryItem (line 386) | async deleteDictionaryItem(request) { method deleteUserData (line 391) | async deleteUserData(_request, context: HandlerContext) { method getAdvancedSettings (line 415) | async getAdvancedSettings(_request, context: HandlerContext) { method updateAdvancedSettings (line 438) | async updateAdvancedSettings(request, context: HandlerContext) { FILE: server/src/services/ito/timingService.ts constant TIMING_BUCKET (line 14) | const TIMING_BUCKET = process.env.TIMING_BUCKET method submitTimingReports (line 34) | async submitTimingReports( FILE: server/src/services/ito/transcribeStreamHandler.ts class TranscribeStreamHandler (line 39) | class TranscribeStreamHandler { method process (line 40) | async process(requests: AsyncIterable, context: HandlerCon... FILE: server/src/services/ito/transcribeStreamV2Handler.ts class TranscribeStreamV2Handler (line 33) | class TranscribeStreamV2Handler { method process (line 36) | async process( method collectStreamData (line 184) | private async collectStreamData( method applyModeGracePeriod (line 241) | private applyModeGracePeriod( method extractAsrConfig (line 273) | private extractAsrConfig(mergedConfig: StreamConfig) { method resolveOrDefault (line 295) | private resolveOrDefault( method prepareAdvancedSettings (line 305) | private prepareAdvancedSettings( method transcribeAudioData (line 348) | private async transcribeAudioData( method adjustTranscriptForMode (line 375) | private async adjustTranscriptForMode( method mergeStreamConfigs (line 410) | private mergeStreamConfigs( FILE: server/src/services/ito/types.ts type ItoContext (line 1) | type ItoContext = { FILE: server/src/services/logging.test.ts class CreateLogStreamCommand (line 18) | class CreateLogStreamCommand { method constructor (line 20) | constructor(input: AnyObject) { class DescribeLogStreamsCommand (line 24) | class DescribeLogStreamsCommand { method constructor (line 26) | constructor(input: AnyObject) { class PutLogEventsCommand (line 30) | class PutLogEventsCommand { method constructor (line 32) | constructor(input: AnyObject) { class CloudWatchLogsClient (line 36) | class CloudWatchLogsClient { method send (line 37) | async send(command: any): Promise { FILE: server/src/services/logging.ts type LogEvent (line 4) | type LogEvent = { FILE: server/src/services/stripeWebhook.test.ts class Stripe (line 23) | class Stripe { method constructor (line 27) | constructor(_apiKey: string) { FILE: server/src/services/timing/ServerTimingCollector.ts type ServerTimingEventName (line 7) | enum ServerTimingEventName { constant TIMING_BUCKET (line 16) | const TIMING_BUCKET = process.env.TIMING_BUCKET type TimingEvent (line 31) | interface TimingEvent { type TimingReport (line 38) | interface TimingReport { type ActiveTiming (line 45) | interface ActiveTiming { class ServerTimingCollector (line 55) | class ServerTimingCollector { method constructor (line 66) | constructor() { method startInteraction (line 74) | startInteraction(interactionId?: string, userId?: string) { method startTiming (line 93) | startTiming(eventName: ServerTimingEventName, interactionId?: string) { method endTiming (line 116) | endTiming(eventName: ServerTimingEventName, interactionId?: string) { method finalizeInteraction (line 144) | finalizeInteraction(interactionId?: string) { method clearInteraction (line 206) | clearInteraction(interactionId?: string) { method flush (line 218) | async flush({ flushAll = false } = {}) { method scheduleFlush (line 301) | private scheduleFlush() { method shutdown (line 312) | async shutdown() { method timeAsync (line 328) | async timeAsync( FILE: server/src/services/trial.ts constant TRIAL_DAYS (line 9) | const TRIAL_DAYS = 14 constant MS_PER_DAY (line 10) | const MS_PER_DAY = 24 * 60 * 60 * 1000 function getOrCreateStripeCustomer (line 12) | async function getOrCreateStripeCustomer( function computeStatusFromStripe (line 62) | function computeStatusFromStripe(subscription: Stripe.Subscription): { function computeStatus (line 103) | function computeStatus(row: { FILE: server/src/services/validationInterceptor.ts function createValidationInterceptor (line 5) | function createValidationInterceptor(): Interceptor { FILE: server/src/utils/abortUtils.ts function isAbortError (line 15) | function isAbortError(err: unknown): boolean { function createAbortError (line 32) | function createAbortError( FILE: server/src/utils/audio.ts function enhancePcm16 (line 7) | function enhancePcm16(pcm: Buffer, sampleRate: number): Buffer { FILE: server/src/utils/audioProcessing.ts function concatenateAudioChunks (line 10) | function concatenateAudioChunks(audioChunks: Uint8Array[]): Uint8Array { function prepareAudioForTranscription (line 37) | function prepareAudioForTranscription(audioData: Uint8Array): Buffer { FILE: server/src/utils/renderCallback.ts constant ITO_ENV (line 1) | const ITO_ENV = (process.env.ITO_ENV || 'prod').toLowerCase() constant DEEPLINK_SCHEME (line 2) | const DEEPLINK_SCHEME = ITO_ENV === 'prod' ? 'ito' : `ito-dev` type CallbackPageParams (line 4) | interface CallbackPageParams { function renderCallbackPage (line 9) | function renderCallbackPage(params: CallbackPageParams): string { FILE: server/src/validation/HeaderValidator.ts class HeaderValidator (line 17) | class HeaderValidator { method validateAsrModel (line 18) | static validateAsrModel(headerValue: string): string { method validateAsrProvider (line 29) | static validateAsrProvider(headerValue: string): string { method validateAsrPrompt (line 40) | static validateAsrPrompt(headerValue: string): string { method validateLlmProvider (line 51) | static validateLlmProvider(headerValue: string): string { method validateLlmModel (line 62) | static validateLlmModel(headerValue: string): string { method validateLlmTemperature (line 73) | static validateLlmTemperature(headerValue: number): number { method validateTranscriptionPrompt (line 84) | static validateTranscriptionPrompt(headerValue: string): string { method validateEditingPrompt (line 99) | static validateEditingPrompt(headerValue: string): string { method validateNoSpeechThreshold (line 110) | static validateNoSpeechThreshold(headerValue: number): number { method validateVocabulary (line 121) | static validateVocabulary(headerValue: string): string[] { FILE: server/src/validation/schemas.ts type ValidatedHeaders (line 90) | type ValidatedHeaders = z.infer FILE: server/test-client.ts constant TEST_JWT_TOKEN (line 24) | const TEST_JWT_TOKEN = process.env.TEST_JWT_TOKEN || 'your-jwt-token-here' function testNotesApi (line 39) | async function testNotesApi() { function testInteractionsApi (line 112) | async function testInteractionsApi() { function testDictionaryApi (line 207) | async function testDictionaryApi() { function testHealthEndpoint (line 287) | async function testHealthEndpoint() { function runTests (line 302) | async function runTests() { FILE: shared-constants.js constant DEFAULT_ADVANCED_SETTINGS (line 6) | const DEFAULT_ADVANCED_SETTINGS = { FILE: vite-env.d.ts type ImportMetaEnv (line 1) | interface ImportMetaEnv { type ImportMeta (line 13) | interface ImportMeta {