gitextract_bmhz2bpu/ ├── .claude/ │ └── settings.local.json ├── .cursor/ │ └── rules/ │ ├── always.mdc │ ├── code-conventions.mdc │ ├── react.mdc │ └── typescript.mdc ├── .gitattributes ├── .github/ │ └── workflows/ │ ├── app-deploy.yml │ ├── autolink-pr-to-issue.yml │ ├── build-image.yml │ ├── build.yml │ ├── ci-controller.yml │ ├── deploy-server.yml │ ├── infra-deploy.yml │ ├── native-build-check.yml │ └── test-runner.yml ├── .gitignore ├── .prettierignore ├── .prettierrc.json ├── .vscode/ │ └── settings.json ├── AGENTS.md ├── CLAUDE.md ├── LICENSE ├── README.md ├── app/ │ ├── app.tsx │ ├── assets/ │ │ ├── .gitignore │ │ ├── accesssibility.webm │ │ └── microphone.webm │ ├── components/ │ │ ├── analytics/ │ │ │ └── index.ts │ │ ├── auth/ │ │ │ ├── Auth0Provider.tsx │ │ │ └── useAuth.ts │ │ ├── home/ │ │ │ ├── HomeKit.tsx │ │ │ ├── ProUpgradeDialog.tsx │ │ │ └── contents/ │ │ │ ├── AboutContent.tsx │ │ │ ├── DictionaryContent.tsx │ │ │ ├── HomeContent.tsx │ │ │ ├── NotesContent.tsx │ │ │ ├── SettingsContent.tsx │ │ │ ├── activityMessages.ts │ │ │ └── settings/ │ │ │ ├── AccountSettingsContent.tsx │ │ │ ├── AdvancedSettingsContent.tsx │ │ │ ├── AudioSettingsContent.tsx │ │ │ ├── GeneralSettingsContent.tsx │ │ │ ├── KeyboardSettingsContent.tsx │ │ │ └── PricingBillingSettingsContent.tsx │ │ ├── icons/ │ │ │ ├── AppleIcon.tsx │ │ │ ├── AppleNotesIcon.tsx │ │ │ ├── AsterikIcon.tsx │ │ │ ├── AudioIcon.tsx │ │ │ ├── AvatarIcon.tsx │ │ │ ├── ChatGPTIcon.tsx │ │ │ ├── ClaudeIcon.tsx │ │ │ ├── CodeWindowIcon.tsx │ │ │ ├── ColorSchemeIcon.tsx │ │ │ ├── CursorIcon.tsx │ │ │ ├── DiscordIcon.tsx │ │ │ ├── FanIcon.tsx │ │ │ ├── GitHubIcon.tsx │ │ │ ├── GmailIcon.tsx │ │ │ ├── GoogleIcon.tsx │ │ │ ├── IMessageIcon.tsx │ │ │ ├── ItoIcon.tsx │ │ │ ├── MicrosoftIcon.tsx │ │ │ ├── NotionIcon.tsx │ │ │ ├── SlackIcon.tsx │ │ │ ├── SpeedIcon.tsx │ │ │ ├── TotalWordsIcon.tsx │ │ │ ├── VSCodeIcon.tsx │ │ │ └── XIcon.tsx │ │ ├── pill/ │ │ │ ├── Pill.tsx │ │ │ └── contents/ │ │ │ ├── AudioBars.tsx │ │ │ ├── AudioBarsBase.tsx │ │ │ ├── LoadingAnimation.tsx │ │ │ ├── PreviewAudioBars.tsx │ │ │ └── TooltipButton.tsx │ │ ├── ui/ │ │ │ ├── animated-checkmark.tsx │ │ │ ├── app-orbit-image.tsx │ │ │ ├── badge.tsx │ │ │ ├── button.tsx │ │ │ ├── dialog.tsx │ │ │ ├── dropdown-menu.tsx │ │ │ ├── keyboard-key.tsx │ │ │ ├── keyboard-shortcut-editor.tsx │ │ │ ├── microphone-selector.tsx │ │ │ ├── multi-shortcut-editor.tsx │ │ │ ├── nav-item.tsx │ │ │ ├── note.tsx │ │ │ ├── spinner.tsx │ │ │ ├── status-indicator.tsx │ │ │ ├── switch.tsx │ │ │ ├── tip.tsx │ │ │ └── tooltip.tsx │ │ ├── welcome/ │ │ │ ├── WelcomeKit.tsx │ │ │ ├── contents/ │ │ │ │ ├── AnyAppContent.tsx │ │ │ │ ├── CheckEmailContent.tsx │ │ │ │ ├── CreateAccountContent.tsx │ │ │ │ ├── DataControlContent.tsx │ │ │ │ ├── EmailLoginContent.tsx │ │ │ │ ├── EmailSignupContent.tsx │ │ │ │ ├── GoodToGoContent.tsx │ │ │ │ ├── IntroducingIntelligentModeContent.tsx │ │ │ │ ├── KeyboardTestContext.tsx │ │ │ │ ├── MicrophoneTestContent.tsx │ │ │ │ ├── PermissionsContent.tsx │ │ │ │ ├── ReferralContent.tsx │ │ │ │ ├── SignInContent.tsx │ │ │ │ └── TryItOutContent.tsx │ │ │ └── styles.css │ │ └── window/ │ │ ├── OnboardingTitlebar.tsx │ │ ├── Titlebar.tsx │ │ ├── TitlebarContext.tsx │ │ └── WindowContext.tsx │ ├── generated/ │ │ ├── buf/ │ │ │ └── validate/ │ │ │ └── validate_pb.ts │ │ ├── ito_connect.ts │ │ └── ito_pb.ts │ ├── hooks/ │ │ ├── useBillingState.test.ts │ │ ├── useBillingState.ts │ │ ├── useDeviceChangeListener.ts │ │ └── usePlatform.ts │ ├── index.d.ts │ ├── index.html │ ├── media/ │ │ └── microphone.ts │ ├── renderer.tsx │ ├── sentry.ts │ ├── store/ │ │ ├── useAdvancedSettingsStore.ts │ │ ├── useAudioStore.ts │ │ ├── useAuthStore.ts │ │ ├── useDictionaryStore.ts │ │ ├── useMainStore.ts │ │ ├── useNotesStore.ts │ │ ├── useOnboardingStore.ts │ │ ├── usePermissionsStore.ts │ │ ├── useSettingsStore.ts │ │ ├── useShortcutEditingStore.ts │ │ └── useUserMetadataStore.ts │ ├── styles/ │ │ ├── app.css │ │ ├── globals.css │ │ └── window.css │ └── utils/ │ ├── audioUtils.ts │ ├── healthCheck.test.ts │ ├── healthCheck.ts │ ├── keyboard.test.ts │ ├── keyboard.ts │ └── utils.ts ├── build/ │ ├── entitlements.mac.inherit.plist │ └── entitlements.mac.plist ├── build-app.sh ├── build-binaries.sh ├── commitlint.config.js ├── components.json ├── dev-app-update.yml ├── electron-builder.config.js ├── electron.vite.config.ts ├── eslint.config.mjs ├── lib/ │ ├── __tests__/ │ │ ├── fixtures/ │ │ │ ├── auth.ts │ │ │ └── database.ts │ │ ├── helpers/ │ │ │ └── testUtils.ts │ │ ├── mocks/ │ │ │ ├── electron.ts │ │ │ └── sqlite.ts │ │ └── setup.ts │ ├── auth/ │ │ ├── config.test.ts │ │ ├── config.ts │ │ ├── events.test.ts │ │ └── events.ts │ ├── clients/ │ │ ├── grpcClient.test.ts │ │ ├── grpcClient.ts │ │ └── itoHttpClient.ts │ ├── constants/ │ │ ├── external-links.ts │ │ ├── generated-defaults.ts │ │ ├── keyboard-defaults.ts │ │ ├── store-keys.test.ts │ │ └── store-keys.ts │ ├── main/ │ │ ├── app.ts │ │ ├── appNap.ts │ │ ├── audio/ │ │ │ ├── AudioStreamManager.test.ts │ │ │ └── AudioStreamManager.ts │ │ ├── autoUpdaterWrapper.ts │ │ ├── context/ │ │ │ └── ContextGrabber.ts │ │ ├── env.ts │ │ ├── grammar/ │ │ │ ├── GrammarRulesService.test.ts │ │ │ └── GrammarRulesService.ts │ │ ├── index.d.ts │ │ ├── interactions/ │ │ │ ├── InteractionManager.test.ts │ │ │ └── InteractionManager.ts │ │ ├── itoSessionManager.test.ts │ │ ├── itoSessionManager.ts │ │ ├── itoStreamController.test.ts │ │ ├── itoStreamController.ts │ │ ├── logger.ts │ │ ├── main.ts │ │ ├── recordingStateNotifier.ts │ │ ├── sentry.ts │ │ ├── sqlite/ │ │ │ ├── db.test.ts │ │ │ ├── db.ts │ │ │ ├── migrations.ts │ │ │ ├── models.ts │ │ │ ├── repo.test.ts │ │ │ ├── repo.ts │ │ │ ├── schema.ts │ │ │ └── utils.ts │ │ ├── store.test.ts │ │ ├── store.ts │ │ ├── syncService.test.ts │ │ ├── syncService.ts │ │ ├── teardown.ts │ │ ├── text/ │ │ │ ├── TextInserter.test.ts │ │ │ └── TextInserter.ts │ │ ├── timing/ │ │ │ ├── TimingCollector.test.ts │ │ │ └── TimingCollector.ts │ │ ├── tray.ts │ │ ├── voiceInputService.test.ts │ │ └── voiceInputService.ts │ ├── media/ │ │ ├── IAccessibilityContextProvider.ts │ │ ├── active-application.test.ts │ │ ├── active-application.ts │ │ ├── audio.test.ts │ │ ├── audio.ts │ │ ├── keyboard.test.ts │ │ ├── keyboard.ts │ │ ├── macOSAccessibilityContextProvider.ts │ │ ├── microphoneSetUp.ts │ │ ├── native-interface.test.ts │ │ ├── native-interface.ts │ │ ├── selected-text-reader.test.ts │ │ ├── selected-text-reader.ts │ │ ├── systemAudio.ts │ │ └── text-writer.ts │ ├── preload/ │ │ ├── api.test.ts │ │ ├── api.ts │ │ ├── index.d.ts │ │ └── preload.ts │ ├── protocol/ │ │ └── index.ts │ ├── types/ │ │ ├── cursorContext.ts │ │ ├── ipc.ts │ │ └── keyboard.ts │ ├── utils/ │ │ ├── applicationDetection.ts │ │ ├── crossPlatform.ts │ │ ├── settings.test.ts │ │ └── settings.ts │ ├── utils.ts │ └── window/ │ ├── index.ts │ ├── ipcDev.ts │ ├── ipcEvents.test.ts │ └── ipcEvents.ts ├── native/ │ ├── Cargo.toml │ ├── active-application/ │ │ ├── Cargo.toml │ │ ├── active-application.manifest │ │ ├── build.rs │ │ └── src/ │ │ └── main.rs │ ├── audio-recorder/ │ │ ├── Cargo.toml │ │ ├── audio-recorder.manifest │ │ ├── build.rs │ │ └── src/ │ │ └── main.rs │ ├── clippy.toml │ ├── cursor-context/ │ │ ├── Package.resolved │ │ ├── Package.swift │ │ └── Sources/ │ │ └── cursor-context/ │ │ ├── CLI.swift │ │ └── main.swift │ ├── global-key-listener/ │ │ ├── Cargo.toml │ │ ├── README.md │ │ ├── build.rs │ │ ├── global-key-listener.manifest │ │ └── src/ │ │ ├── key_codes.rs │ │ └── main.rs │ ├── macos-text/ │ │ ├── .gitignore │ │ ├── Package.swift │ │ └── Sources/ │ │ └── focused-text-reader/ │ │ └── main.swift │ ├── rustfmt.toml │ ├── selected-text-reader/ │ │ ├── Cargo.toml │ │ ├── build.rs │ │ ├── selected-text-reader.manifest │ │ └── src/ │ │ ├── macos.rs │ │ ├── main.rs │ │ └── windows.rs │ └── text-writer/ │ ├── Cargo.toml │ ├── build.rs │ ├── src/ │ │ ├── macos_writer.rs │ │ ├── main.rs │ │ └── windows_writer.rs │ └── text-writer.manifest ├── package.json ├── resources/ │ └── build/ │ ├── entitlements.mac.plist │ └── icon.icns ├── scripts/ │ ├── clean-app-data.js │ └── generate-constants.js ├── server/ │ ├── .dockerignore │ ├── Dockerfile │ ├── README.md │ ├── buf.gen.yaml │ ├── buf.yaml │ ├── docker-compose.yml │ ├── infra/ │ │ ├── .gitignore │ │ ├── .npmignore │ │ ├── README.md │ │ ├── bin/ │ │ │ └── infra.ts │ │ ├── cdk.context.json │ │ ├── cdk.json │ │ ├── jest.config.js │ │ ├── lambdas/ │ │ │ ├── firehose-transform.ts │ │ │ ├── opensearch-bootstrap.ts │ │ │ ├── run-migration.ts │ │ │ └── timing-merger.ts │ │ ├── lib/ │ │ │ ├── cicd-stack.ts │ │ │ ├── constants.ts │ │ │ ├── helpers.ts │ │ │ ├── network-stack.ts │ │ │ ├── observability-stack.ts │ │ │ ├── platform-stack.ts │ │ │ ├── security-stack.ts │ │ │ ├── service/ │ │ │ │ ├── fargate-task.ts │ │ │ │ ├── firehose-config.ts │ │ │ │ ├── index.ts │ │ │ │ ├── log-groups.ts │ │ │ │ ├── migration-lambda.ts │ │ │ │ └── opensearch-bootstrap.ts │ │ │ ├── service-stack.ts │ │ │ └── timing-config.ts │ │ ├── package.json │ │ └── tsconfig.json │ ├── package.json │ ├── scripts/ │ │ ├── migrate-audio-to-s3.ts │ │ ├── migrate.sh │ │ └── setup-minio.sh │ ├── src/ │ │ ├── auth/ │ │ │ ├── auth0Helpers.ts │ │ │ └── userContext.ts │ │ ├── clients/ │ │ │ ├── asrConfig.ts │ │ │ ├── cerebrasClient.ts │ │ │ ├── errors.ts │ │ │ ├── groqClient.test.ts │ │ │ ├── groqClient.ts │ │ │ ├── intentTranscriptionConfig.ts │ │ │ ├── llmProvider.ts │ │ │ ├── providerUtils.ts │ │ │ ├── providers.ts │ │ │ └── s3storageClient.ts │ │ ├── constants/ │ │ │ ├── generated-defaults.ts │ │ │ ├── markers.ts │ │ │ └── storage.ts │ │ ├── db/ │ │ │ ├── models.ts │ │ │ └── repo.ts │ │ ├── db.ts │ │ ├── generated/ │ │ │ ├── buf/ │ │ │ │ └── validate/ │ │ │ │ └── validate_pb.ts │ │ │ ├── ito_connect.ts │ │ │ └── ito_pb.ts │ │ ├── index.ts │ │ ├── ito.proto │ │ ├── migrations/ │ │ │ ├── 1722889955000_initial_schema.js │ │ │ ├── 1752006262324_add-raw-audio-column.js │ │ │ ├── 1752099660683_add-duration-ms.js │ │ │ ├── 1753297915000_add-advanced-settings.js │ │ │ ├── 1754938499581_update-advanced-settings.js │ │ │ ├── 1756922843670_raw-audio-reference.js │ │ │ ├── 1760496947939_add-temporary-analytics-token.js │ │ │ ├── 1761765111646_add-user-trials.js │ │ │ ├── 1761778190395_add-user-subscriptions.js │ │ │ ├── 1762468699097_add-subscription-end-at.js │ │ │ ├── 1763753112000_make-llm-settings-nullable.js │ │ │ └── schema/ │ │ │ └── initial.js │ │ ├── prompts/ │ │ │ ├── transcription.test.ts │ │ │ └── transcription.ts │ │ ├── server.ts │ │ ├── services/ │ │ │ ├── __tests__/ │ │ │ │ └── helpers.ts │ │ │ ├── auth0.ts │ │ │ ├── billing.test.ts │ │ │ ├── billing.ts │ │ │ ├── cloudWatchLogger.ts │ │ │ ├── errorInterceptor.ts │ │ │ ├── ito/ │ │ │ │ ├── audioUtils.ts │ │ │ │ ├── constants.ts │ │ │ │ ├── helpers.ts │ │ │ │ ├── itoService.ts │ │ │ │ ├── timingService.ts │ │ │ │ ├── transcribeStreamHandler.ts │ │ │ │ ├── transcribeStreamV2Handler.ts │ │ │ │ └── types.ts │ │ │ ├── logging.test.ts │ │ │ ├── logging.ts │ │ │ ├── loggingInterceptor.ts │ │ │ ├── stripeWebhook.test.ts │ │ │ ├── stripeWebhook.ts │ │ │ ├── timing/ │ │ │ │ └── ServerTimingCollector.ts │ │ │ ├── trial.test.ts │ │ │ ├── trial.ts │ │ │ ├── validationInterceptor.test.ts │ │ │ └── validationInterceptor.ts │ │ ├── utils/ │ │ │ ├── abortUtils.ts │ │ │ ├── audio.ts │ │ │ ├── audioProcessing.ts │ │ │ └── renderCallback.ts │ │ └── validation/ │ │ ├── HeaderValidator.test.ts │ │ ├── HeaderValidator.ts │ │ ├── schemas.test.ts │ │ └── schemas.ts │ ├── test-client.ts │ └── tsconfig.json ├── shared-constants.js ├── tailwind.config.js ├── tsconfig.json ├── tsconfig.node.json ├── tsconfig.web.json └── vite-env.d.ts