gitextract_p6m_7k64/ ├── .claude/ │ ├── agents/ │ │ └── reviewer.md │ └── skills/ │ ├── address-pr-comments/ │ │ ├── SKILL.md │ │ └── get-pr-review-comments.sh │ ├── changelog/ │ │ └── SKILL.md │ ├── cloud-dev-environment/ │ │ └── SKILL.md │ ├── create-pr/ │ │ └── SKILL.md │ ├── e2e/ │ │ └── SKILL.md │ ├── environment-variables/ │ │ └── SKILL.md │ ├── explain-changes/ │ │ └── SKILL.md │ ├── fullstack-workflow/ │ │ └── SKILL.md │ ├── llm/ │ │ └── SKILL.md │ ├── llm-test/ │ │ └── SKILL.md │ ├── logging/ │ │ └── SKILL.md │ ├── pr-loop/ │ │ └── SKILL.md │ ├── pr-watch/ │ │ └── SKILL.md │ ├── prisma/ │ │ └── SKILL.md │ ├── project-structure/ │ │ └── SKILL.md │ ├── qa-new-flow/ │ │ └── SKILL.md │ ├── qa-run/ │ │ └── SKILL.md │ ├── review/ │ │ └── SKILL.md │ ├── test-feature/ │ │ └── SKILL.md │ ├── testing/ │ │ ├── SKILL.md │ │ ├── e2e.md │ │ ├── eval.md │ │ ├── llm.md │ │ ├── unit.md │ │ └── write-tests.md │ ├── ui-components/ │ │ └── SKILL.md │ ├── update-packages/ │ │ └── SKILL.md │ ├── wait/ │ │ └── SKILL.md │ └── write-tests/ │ └── SKILL.md ├── .coderabbit.yaml ├── .codex/ │ ├── agents/ │ │ └── reviewer.toml │ └── config.toml ├── .cursor/ │ └── rules/ │ ├── e2e-testing.mdc │ ├── features/ │ │ ├── cleaner.mdc │ │ ├── delayed-actions.mdc │ │ ├── digest.mdc │ │ ├── knowledge.mdc │ │ └── schedule.mdc │ ├── posthog-feature-flags.mdc │ ├── task-list.mdc │ └── ultracite.mdc ├── .cursor-plugin/ │ └── plugin.json ├── .cursorignore ├── .devcontainer/ │ ├── Dockerfile │ ├── README.md │ ├── devcontainer.json │ ├── docker-compose.yml │ └── setup.sh ├── .dockerignore ├── .github/ │ └── workflows/ │ ├── ai-evals.yml │ ├── api-release.yml │ ├── build-changelog.yml │ ├── build-check.yml │ ├── build_and_publish_docker.yml │ ├── claude-code-review.yml │ ├── claude.yml │ ├── cli-release.yml │ ├── e2e-flows.yml │ ├── local-bypass-smoke.yml │ └── test.yml ├── .gitignore ├── .husky/ │ ├── .gitignore │ ├── pre-commit │ └── pre-push ├── .ncurc.cjs ├── .npmrc ├── .nvmrc ├── .superset/ │ └── config.json ├── .vscode/ │ ├── extensions.json │ ├── settings.json │ └── typescriptreact.code-snippets ├── AGENTS.md ├── ARCHITECTURE.md ├── CLA.md ├── CLAUDE.md ├── Formula/ │ └── inbox-zero.rb ├── LICENSE ├── README.md ├── SECURITY.md ├── agents/ │ └── inbox-zero-api-cli.md ├── apps/ │ └── web/ │ ├── .env.example │ ├── __tests__/ │ │ ├── ai/ │ │ │ └── reply/ │ │ │ ├── draft-follow-up.test.ts │ │ │ ├── draft-reply.test.ts │ │ │ └── reply-context-collector.test.ts │ │ ├── ai-assistant-chat-send-disabled-regression.test.ts │ │ ├── ai-assistant-chat.test.ts │ │ ├── ai-calendar-availability.test.ts │ │ ├── ai-categorize-senders.test.ts │ │ ├── ai-choose-args.test.ts │ │ ├── ai-choose-rule.test.ts │ │ ├── ai-detect-recurring-pattern.test.ts │ │ ├── ai-diff-rules.test.ts │ │ ├── ai-extract-from-email-history.test.ts │ │ ├── ai-extract-knowledge.test.ts │ │ ├── ai-find-snippets.test.ts │ │ ├── ai-mcp-agent.test.ts │ │ ├── ai-meeting-briefing.test.ts │ │ ├── ai-persona.test.ts │ │ ├── ai-prompt-security.test.ts │ │ ├── ai-prompt-to-rules.test.ts │ │ ├── ai-summarize-email-for-digest.test.ts │ │ ├── ai-writing-style.test.ts │ │ ├── determine-thread-status.test.ts │ │ ├── e2e/ │ │ │ ├── README.md │ │ │ ├── calendar/ │ │ │ │ ├── google-calendar.test.ts │ │ │ │ └── microsoft-calendar.test.ts │ │ │ ├── cold-email/ │ │ │ │ ├── google-cold-email.test.ts │ │ │ │ └── microsoft-cold-email.test.ts │ │ │ ├── drafting/ │ │ │ │ └── microsoft-drafting.test.ts │ │ │ ├── flows/ │ │ │ │ ├── README.md │ │ │ │ ├── auto-labeling.test.ts │ │ │ │ ├── config.ts │ │ │ │ ├── draft-cleanup.test.ts │ │ │ │ ├── follow-up-reminders.test.ts │ │ │ │ ├── full-reply-cycle.test.ts │ │ │ │ ├── helpers/ │ │ │ │ │ ├── accounts.ts │ │ │ │ │ ├── email.ts │ │ │ │ │ ├── logging.ts │ │ │ │ │ ├── polling.ts │ │ │ │ │ └── webhook.ts │ │ │ │ ├── message-preservation.test.ts │ │ │ │ ├── outbound-tracking.test.ts │ │ │ │ ├── sent-reply-preservation.test.ts │ │ │ │ ├── setup.ts │ │ │ │ └── teardown.ts │ │ │ ├── gmail-operations.test.ts │ │ │ ├── helpers.ts │ │ │ ├── labeling/ │ │ │ │ ├── gmail-thread-label-removal.test.ts │ │ │ │ ├── google-labeling.test.ts │ │ │ │ ├── helpers.ts │ │ │ │ ├── microsoft-labeling.test.ts │ │ │ │ └── microsoft-thread-category-removal.test.ts │ │ │ ├── outlook-draft-read-status.test.ts │ │ │ ├── outlook-operations.test.ts │ │ │ ├── outlook-query-parsing.test.ts │ │ │ └── outlook-search.test.ts │ │ ├── eval/ │ │ │ ├── assistant-chat-attachments.test.ts │ │ │ ├── assistant-chat-calendar.test.ts │ │ │ ├── assistant-chat-core-tools.test.ts │ │ │ ├── assistant-chat-email-actions.test.ts │ │ │ ├── assistant-chat-eval-utils.ts │ │ │ ├── assistant-chat-inbox-workflows-actions.test.ts │ │ │ ├── assistant-chat-inbox-workflows-search.test.ts │ │ │ ├── assistant-chat-inbox-workflows-test-utils.ts │ │ │ ├── assistant-chat-inbox-workflows-triage.test.ts │ │ │ ├── assistant-chat-label-management.test.ts │ │ │ ├── assistant-chat-progressive-disclosure.test.ts │ │ │ ├── assistant-chat-rule-editing-action-updates.test.ts │ │ │ ├── assistant-chat-rule-editing-condition-updates.test.ts │ │ │ ├── assistant-chat-rule-editing-create-rule.test.ts │ │ │ ├── assistant-chat-rule-editing-learned-patterns.test.ts │ │ │ ├── assistant-chat-rule-eval-test-utils.ts │ │ │ ├── assistant-chat-settings-memory.test.ts │ │ │ ├── assistant-chat-static-sender-rules-learned-patterns.test.ts │ │ │ ├── assistant-chat-static-sender-rules-semantic.test.ts │ │ │ ├── assistant-chat-static-sender-rules-static-from.test.ts │ │ │ ├── assistant-chat-trash-delete.test.ts │ │ │ ├── categorize-senders.test.ts │ │ │ ├── choose-rule.test.ts │ │ │ ├── draft-attachments.test.ts │ │ │ ├── draft-reply.test.ts │ │ │ ├── judge.ts │ │ │ ├── models.test.ts │ │ │ ├── models.ts │ │ │ ├── reply-memory.test.ts │ │ │ ├── reporter.ts │ │ │ └── semantic-judge.ts │ │ ├── helpers.ts │ │ ├── mocks/ │ │ │ └── email-provider.mock.ts │ │ ├── playwright/ │ │ │ └── local-bypass-smoke.spec.ts │ │ └── setup.ts │ ├── app/ │ │ ├── (app)/ │ │ │ ├── (redirects)/ │ │ │ │ ├── assistant/ │ │ │ │ │ └── page.tsx │ │ │ │ ├── automation/ │ │ │ │ │ └── page.tsx │ │ │ │ ├── briefs/ │ │ │ │ │ └── page.tsx │ │ │ │ ├── bulk-archive/ │ │ │ │ │ └── page.tsx │ │ │ │ ├── bulk-unsubscribe/ │ │ │ │ │ └── page.tsx │ │ │ │ ├── calendars/ │ │ │ │ │ └── page.tsx │ │ │ │ ├── clean/ │ │ │ │ │ └── page.tsx │ │ │ │ ├── cold-email-blocker/ │ │ │ │ │ └── page.tsx │ │ │ │ ├── debug/ │ │ │ │ │ └── page.tsx │ │ │ │ ├── drive/ │ │ │ │ │ └── page.tsx │ │ │ │ ├── integrations/ │ │ │ │ │ └── page.tsx │ │ │ │ ├── mail/ │ │ │ │ │ └── page.tsx │ │ │ │ ├── quick-bulk-archive/ │ │ │ │ │ └── page.tsx │ │ │ │ ├── reply-zero/ │ │ │ │ │ └── page.tsx │ │ │ │ ├── setup/ │ │ │ │ │ └── page.tsx │ │ │ │ ├── smart-categories/ │ │ │ │ │ └── page.tsx │ │ │ │ └── stats/ │ │ │ │ └── page.tsx │ │ │ ├── ErrorMessages.tsx │ │ │ ├── ProviderRateLimitBanner.tsx │ │ │ ├── [emailAccountId]/ │ │ │ │ ├── PermissionsCheck.tsx │ │ │ │ ├── assess.tsx │ │ │ │ ├── assistant/ │ │ │ │ │ ├── AIChatButton.tsx │ │ │ │ │ ├── ActionAttachmentsField.tsx │ │ │ │ │ ├── ActionSteps.tsx │ │ │ │ │ ├── ActionSummaryCard.tsx │ │ │ │ │ ├── AddRuleDialog.tsx │ │ │ │ │ ├── AllRulesDisabledBanner.tsx │ │ │ │ │ ├── AssistantOnboarding.tsx │ │ │ │ │ ├── AssistantTabs.tsx │ │ │ │ │ ├── AvailableActionsPanel.tsx │ │ │ │ │ ├── BulkProcessActivityLog.tsx │ │ │ │ │ ├── BulkRunRules.tsx │ │ │ │ │ ├── ConditionSteps.tsx │ │ │ │ │ ├── ConditionSummaryCard.tsx │ │ │ │ │ ├── CreatedRulesModal.tsx │ │ │ │ │ ├── DateCell.tsx │ │ │ │ │ ├── ExamplesList.tsx │ │ │ │ │ ├── FixWithChat.tsx │ │ │ │ │ ├── History.tsx │ │ │ │ │ ├── PersonaDialog.tsx │ │ │ │ │ ├── Process.tsx │ │ │ │ │ ├── ProcessRules.tsx │ │ │ │ │ ├── ProcessingPromptFileDialog.tsx │ │ │ │ │ ├── ResultDisplay.tsx │ │ │ │ │ ├── RuleDialog.tsx │ │ │ │ │ ├── RuleForm.tsx │ │ │ │ │ ├── RuleLoader.tsx │ │ │ │ │ ├── RuleNotFoundState.tsx │ │ │ │ │ ├── RuleSectionCard.tsx │ │ │ │ │ ├── RuleStep.tsx │ │ │ │ │ ├── RuleSteps.tsx │ │ │ │ │ ├── RuleTab.tsx │ │ │ │ │ ├── Rules.tsx │ │ │ │ │ ├── RulesPromptNew.tsx │ │ │ │ │ ├── RulesSelect.tsx │ │ │ │ │ ├── RulesTabNew.tsx │ │ │ │ │ ├── SetDateDropdown.tsx │ │ │ │ │ ├── TestCustomEmailForm.tsx │ │ │ │ │ ├── bulk-run-rules-reducer.test.ts │ │ │ │ │ ├── bulk-run-rules-reducer.ts │ │ │ │ │ ├── constants.ts │ │ │ │ │ ├── consts.ts │ │ │ │ │ ├── examples.ts │ │ │ │ │ ├── group/ │ │ │ │ │ │ ├── LearnedPatterns.tsx │ │ │ │ │ │ └── ViewLearnedPatterns.tsx │ │ │ │ │ ├── knowledge/ │ │ │ │ │ │ ├── KnowledgeBase.tsx │ │ │ │ │ │ └── KnowledgeForm.tsx │ │ │ │ │ ├── page.tsx │ │ │ │ │ ├── rule/ │ │ │ │ │ │ ├── [ruleId]/ │ │ │ │ │ │ │ ├── error.tsx │ │ │ │ │ │ │ └── page.tsx │ │ │ │ │ │ └── create/ │ │ │ │ │ │ └── page.tsx │ │ │ │ │ ├── rule-fetch-error.test.ts │ │ │ │ │ ├── rule-fetch-error.ts │ │ │ │ │ └── settings/ │ │ │ │ │ ├── AboutSetting.tsx │ │ │ │ │ ├── DigestSetting.tsx │ │ │ │ │ ├── DraftConfidenceSetting.tsx │ │ │ │ │ ├── DraftKnowledgeSetting.tsx │ │ │ │ │ ├── DraftReplies.tsx │ │ │ │ │ ├── FollowUpRemindersSetting.tsx │ │ │ │ │ ├── HiddenAiDraftLinksSetting.tsx │ │ │ │ │ ├── LearnedPatternsSetting.tsx │ │ │ │ │ ├── MultiRuleSetting.tsx │ │ │ │ │ ├── PersonalSignatureSetting.tsx │ │ │ │ │ ├── ProactiveUpdatesSetting.tsx │ │ │ │ │ ├── ReferralSignatureSetting.tsx │ │ │ │ │ ├── RuleImportExportSetting.tsx │ │ │ │ │ ├── SettingsTab.tsx │ │ │ │ │ ├── SyncToExtensionSetting.tsx │ │ │ │ │ └── WritingStyleSetting.tsx │ │ │ │ ├── automation/ │ │ │ │ │ └── page.tsx │ │ │ │ ├── briefs/ │ │ │ │ │ ├── DeliveryChannelsSetting.tsx │ │ │ │ │ ├── IntegrationsSetting.tsx │ │ │ │ │ ├── Onboarding.tsx │ │ │ │ │ ├── TimeDurationSetting.tsx │ │ │ │ │ ├── UpcomingMeetings.tsx │ │ │ │ │ └── page.tsx │ │ │ │ ├── bulk-archive/ │ │ │ │ │ ├── AutoCategorizationSetup.test.tsx │ │ │ │ │ ├── AutoCategorizationSetup.tsx │ │ │ │ │ ├── BulkArchive.tsx │ │ │ │ │ ├── BulkArchiveProgress.tsx │ │ │ │ │ ├── BulkArchiveSettingsModal.tsx │ │ │ │ │ └── page.tsx │ │ │ │ ├── bulk-unsubscribe/ │ │ │ │ │ ├── ArchiveProgress.tsx │ │ │ │ │ ├── BulkActions.tsx │ │ │ │ │ ├── BulkUnsubscribeDesktop.tsx │ │ │ │ │ ├── BulkUnsubscribeMobile.tsx │ │ │ │ │ ├── BulkUnsubscribeSection.tsx │ │ │ │ │ ├── BulkUnsubscribeSkeleton.tsx │ │ │ │ │ ├── ResubscribeDialog.tsx │ │ │ │ │ ├── SearchBar.tsx │ │ │ │ │ ├── ShortcutTooltip.tsx │ │ │ │ │ ├── common.tsx │ │ │ │ │ ├── hooks.ts │ │ │ │ │ ├── page.tsx │ │ │ │ │ └── types.ts │ │ │ │ ├── calendars/ │ │ │ │ │ ├── CalendarConnectionCard.tsx │ │ │ │ │ ├── CalendarConnections.tsx │ │ │ │ │ ├── CalendarList.tsx │ │ │ │ │ ├── CalendarSettings.tsx │ │ │ │ │ ├── ConnectCalendar.tsx │ │ │ │ │ ├── TimezoneDetector.test.ts │ │ │ │ │ ├── TimezoneDetector.tsx │ │ │ │ │ └── page.tsx │ │ │ │ ├── clean/ │ │ │ │ │ ├── ActionSelectionStep.tsx │ │ │ │ │ ├── CleanHistory.tsx │ │ │ │ │ ├── CleanInstructionsStep.tsx │ │ │ │ │ ├── CleanRun.tsx │ │ │ │ │ ├── CleanStats.tsx │ │ │ │ │ ├── ConfirmationStep.tsx │ │ │ │ │ ├── EmailFirehose.tsx │ │ │ │ │ ├── EmailFirehoseItem.tsx │ │ │ │ │ ├── IntroStep.tsx │ │ │ │ │ ├── PreviewBatch.tsx │ │ │ │ │ ├── TimeRangeStep.tsx │ │ │ │ │ ├── consts.ts │ │ │ │ │ ├── helpers.ts │ │ │ │ │ ├── history/ │ │ │ │ │ │ └── page.tsx │ │ │ │ │ ├── loading.tsx │ │ │ │ │ ├── onboarding/ │ │ │ │ │ │ └── page.tsx │ │ │ │ │ ├── page.tsx │ │ │ │ │ ├── run/ │ │ │ │ │ │ └── page.tsx │ │ │ │ │ ├── types.ts │ │ │ │ │ ├── useEmailStream.ts │ │ │ │ │ ├── useSkipSettings.ts │ │ │ │ │ └── useStep.tsx │ │ │ │ ├── cold-email-blocker/ │ │ │ │ │ ├── ColdEmailContent.tsx │ │ │ │ │ ├── ColdEmailList.tsx │ │ │ │ │ ├── ColdEmailRejected.tsx │ │ │ │ │ ├── ColdEmailTest.tsx │ │ │ │ │ ├── TestRules.tsx │ │ │ │ │ └── page.tsx │ │ │ │ ├── compose/ │ │ │ │ │ ├── ComposeEmailForm.tsx │ │ │ │ │ └── ComposeEmailFormLazy.tsx │ │ │ │ ├── debug/ │ │ │ │ │ ├── drafts/ │ │ │ │ │ │ └── page.tsx │ │ │ │ │ ├── follow-up/ │ │ │ │ │ │ └── page.tsx │ │ │ │ │ ├── memories/ │ │ │ │ │ │ └── page.tsx │ │ │ │ │ ├── page.tsx │ │ │ │ │ ├── report/ │ │ │ │ │ │ └── page.tsx │ │ │ │ │ ├── rule-history/ │ │ │ │ │ │ ├── [ruleId]/ │ │ │ │ │ │ │ └── page.tsx │ │ │ │ │ │ └── page.tsx │ │ │ │ │ └── rules/ │ │ │ │ │ └── page.tsx │ │ │ │ ├── drive/ │ │ │ │ │ ├── AllowedFolders.tsx │ │ │ │ │ ├── ConnectDrive.tsx │ │ │ │ │ ├── DriveConnectionCard.tsx │ │ │ │ │ ├── DriveConnections.tsx │ │ │ │ │ ├── DriveOnboarding.tsx │ │ │ │ │ ├── DriveSetup.tsx │ │ │ │ │ ├── FilingActivity.tsx │ │ │ │ │ ├── FilingPreferences.tsx │ │ │ │ │ ├── FilingRulesForm.tsx │ │ │ │ │ └── page.tsx │ │ │ │ ├── error.tsx │ │ │ │ ├── integrations/ │ │ │ │ │ ├── IntegrationRow.tsx │ │ │ │ │ ├── Integrations.tsx │ │ │ │ │ ├── IntegrationsPremiumAlert.tsx │ │ │ │ │ ├── RequestAccessDialog.tsx │ │ │ │ │ ├── page.tsx │ │ │ │ │ └── test/ │ │ │ │ │ ├── McpAgentTest.tsx │ │ │ │ │ └── page.tsx │ │ │ │ ├── mail/ │ │ │ │ │ ├── BetaBanner.tsx │ │ │ │ │ └── page.tsx │ │ │ │ ├── no-reply/ │ │ │ │ │ └── page.tsx │ │ │ │ ├── onboarding/ │ │ │ │ │ ├── ContinueButton.tsx │ │ │ │ │ ├── IconCircle.tsx │ │ │ │ │ ├── ImagePreview.tsx │ │ │ │ │ ├── OnboardingButton.tsx │ │ │ │ │ ├── OnboardingCategories.tsx │ │ │ │ │ ├── OnboardingContent.tsx │ │ │ │ │ ├── OnboardingWrapper.tsx │ │ │ │ │ ├── StepBulkUnsubscribe.tsx │ │ │ │ │ ├── StepCompanySize.tsx │ │ │ │ │ ├── StepCustomRules.tsx │ │ │ │ │ ├── StepDigest.tsx │ │ │ │ │ ├── StepDigestV1.tsx │ │ │ │ │ ├── StepDraft.tsx │ │ │ │ │ ├── StepDraftReplies.tsx │ │ │ │ │ ├── StepEmailsSorted.tsx │ │ │ │ │ ├── StepExtension.tsx │ │ │ │ │ ├── StepFeatures.tsx │ │ │ │ │ ├── StepInboxProcessed.tsx │ │ │ │ │ ├── StepIntro.tsx │ │ │ │ │ ├── StepInviteTeam.tsx │ │ │ │ │ ├── StepLabels.tsx │ │ │ │ │ ├── StepWelcome.tsx │ │ │ │ │ ├── StepWho.tsx │ │ │ │ │ ├── config.ts │ │ │ │ │ ├── illustrations/ │ │ │ │ │ │ ├── BulkUnsubscribeIllustration.tsx │ │ │ │ │ │ ├── DraftRepliesIllustration.tsx │ │ │ │ │ │ ├── EmailsSortedIllustration.tsx │ │ │ │ │ │ └── InboxReadyIllustration.tsx │ │ │ │ │ ├── page.tsx │ │ │ │ │ └── steps.ts │ │ │ │ ├── onboarding-brief/ │ │ │ │ │ ├── MeetingBriefsOnboardingContent.tsx │ │ │ │ │ ├── StepConnectCalendar.tsx │ │ │ │ │ ├── StepReady.tsx │ │ │ │ │ ├── StepSendTestBrief.tsx │ │ │ │ │ └── page.tsx │ │ │ │ ├── organization/ │ │ │ │ │ ├── create/ │ │ │ │ │ │ └── page.tsx │ │ │ │ │ └── page.tsx │ │ │ │ ├── permissions/ │ │ │ │ │ └── consent/ │ │ │ │ │ └── page.tsx │ │ │ │ ├── quick-bulk-archive/ │ │ │ │ │ ├── BulkArchiveTab.tsx │ │ │ │ │ └── page.tsx │ │ │ │ ├── reply-zero/ │ │ │ │ │ ├── AwaitingReply.tsx │ │ │ │ │ ├── EnableReplyTracker.tsx │ │ │ │ │ ├── NeedsAction.tsx │ │ │ │ │ ├── NeedsReply.tsx │ │ │ │ │ ├── ReplyTrackerEmails.tsx │ │ │ │ │ ├── Resolved.tsx │ │ │ │ │ ├── TimeRangeFilter.tsx │ │ │ │ │ ├── date-filter.ts │ │ │ │ │ ├── fetch-trackers.ts │ │ │ │ │ ├── onboarding/ │ │ │ │ │ │ └── page.tsx │ │ │ │ │ └── page.tsx │ │ │ │ ├── settings/ │ │ │ │ │ ├── AboutSectionForm.tsx │ │ │ │ │ ├── ApiKeysCreateForm.tsx │ │ │ │ │ ├── ApiKeysSection.tsx │ │ │ │ │ ├── BillingSection.tsx │ │ │ │ │ ├── CleanupDraftsSection.tsx │ │ │ │ │ ├── ConnectedAppsSection.tsx │ │ │ │ │ ├── CopyRulesDialog.tsx │ │ │ │ │ ├── CopyRulesSection.tsx │ │ │ │ │ ├── DeleteSection.tsx │ │ │ │ │ ├── DigestItemsForm.tsx │ │ │ │ │ ├── DigestScheduleForm.tsx │ │ │ │ │ ├── DigestSettingsForm.tsx │ │ │ │ │ ├── EmailUpdatesSection.tsx │ │ │ │ │ ├── ModelSection.tsx │ │ │ │ │ ├── MultiAccountSection.tsx │ │ │ │ │ ├── OrgAnalyticsConsentSection.tsx │ │ │ │ │ ├── ResetAnalyticsSection.tsx │ │ │ │ │ ├── SignatureSectionForm.tsx │ │ │ │ │ ├── ToggleAllRulesSection.tsx │ │ │ │ │ ├── WebhookGenerate.tsx │ │ │ │ │ ├── WebhookSection.tsx │ │ │ │ │ └── page.tsx │ │ │ │ ├── setup/ │ │ │ │ │ ├── SetupContent.tsx │ │ │ │ │ ├── StatsCardGrid.tsx │ │ │ │ │ └── page.tsx │ │ │ │ ├── smart-categories/ │ │ │ │ │ ├── CategorizeProgress.tsx │ │ │ │ │ ├── CategorizeWithAiButton.tsx │ │ │ │ │ ├── CreateCategoryButton.tsx │ │ │ │ │ ├── Uncategorized.tsx │ │ │ │ │ ├── page.tsx │ │ │ │ │ └── setup/ │ │ │ │ │ ├── SetUpCategories.tsx │ │ │ │ │ ├── SmartCategoriesOnboarding.tsx │ │ │ │ │ └── page.tsx │ │ │ │ ├── stats/ │ │ │ │ │ ├── ActionBar.tsx │ │ │ │ │ ├── BarChart.tsx │ │ │ │ │ ├── BarListCard.tsx │ │ │ │ │ ├── DetailedStatsFilter.tsx │ │ │ │ │ ├── EmailActionsAnalytics.tsx │ │ │ │ │ ├── EmailAnalytics.tsx │ │ │ │ │ ├── EmailsToIncludeFilter.tsx │ │ │ │ │ ├── LoadProgress.tsx │ │ │ │ │ ├── LoadStatsButton.tsx │ │ │ │ │ ├── MainStatChart.tsx │ │ │ │ │ ├── NewsletterModal.tsx │ │ │ │ │ ├── ResponseTimeAnalytics.tsx │ │ │ │ │ ├── RuleStatsChart.tsx │ │ │ │ │ ├── Stats.tsx │ │ │ │ │ ├── StatsOnboarding.tsx │ │ │ │ │ ├── StatsSummary.tsx │ │ │ │ │ ├── page.tsx │ │ │ │ │ ├── params.ts │ │ │ │ │ └── useExpanded.tsx │ │ │ │ └── usage/ │ │ │ │ ├── page.tsx │ │ │ │ └── usage.tsx │ │ │ ├── accounts/ │ │ │ │ ├── AddAccount.tsx │ │ │ │ └── page.tsx │ │ │ ├── admin/ │ │ │ │ ├── AdminHashEmail.tsx │ │ │ │ ├── AdminSyncStripe.tsx │ │ │ │ ├── AdminTopSpenders.tsx │ │ │ │ ├── AdminUpgradeUserForm.tsx │ │ │ │ ├── AdminUserControls.tsx │ │ │ │ ├── AdminUserInfo.tsx │ │ │ │ ├── DebugLabels.tsx │ │ │ │ ├── GmailUrlConverter.tsx │ │ │ │ ├── RegisterSSOModal.tsx │ │ │ │ ├── page.tsx │ │ │ │ └── validation.tsx │ │ │ ├── config/ │ │ │ │ └── page.tsx │ │ │ ├── early-access/ │ │ │ │ ├── EarlyAccessFeatures.tsx │ │ │ │ └── page.tsx │ │ │ ├── error.tsx │ │ │ ├── layout.tsx │ │ │ ├── license/ │ │ │ │ └── page.tsx │ │ │ ├── no-access/ │ │ │ │ └── page.tsx │ │ │ ├── organization/ │ │ │ │ └── [organizationId]/ │ │ │ │ ├── Members.tsx │ │ │ │ ├── OrgAnalyticsConsentBanner.tsx │ │ │ │ ├── OrganizationTabs.tsx │ │ │ │ ├── page.tsx │ │ │ │ └── stats/ │ │ │ │ ├── OrgStats.tsx │ │ │ │ └── page.tsx │ │ │ ├── premium/ │ │ │ │ ├── AppPricingLazy.tsx │ │ │ │ ├── ManageSubscription.tsx │ │ │ │ ├── PremiumModal.tsx │ │ │ │ ├── Pricing.tsx │ │ │ │ ├── PricingFrequencyToggle.tsx │ │ │ │ ├── PricingLazy.tsx │ │ │ │ ├── config.test.ts │ │ │ │ ├── config.ts │ │ │ │ └── page.tsx │ │ │ ├── refer/ │ │ │ │ └── page.tsx │ │ │ ├── sentry-identify.tsx │ │ │ └── settings/ │ │ │ ├── AppearanceSection.tsx │ │ │ └── page.tsx │ │ ├── (landing)/ │ │ │ ├── components/ │ │ │ │ ├── TestAction.tsx │ │ │ │ ├── TestError.tsx │ │ │ │ ├── chat/ │ │ │ │ │ └── page.tsx │ │ │ │ ├── page.tsx │ │ │ │ ├── test-action.ts │ │ │ │ └── tools/ │ │ │ │ └── page.tsx │ │ │ ├── error.tsx │ │ │ ├── home/ │ │ │ │ ├── CTAButtons.tsx │ │ │ │ ├── FAQs.tsx │ │ │ │ ├── Features.tsx │ │ │ │ ├── FinalCTA.tsx │ │ │ │ ├── Footer.tsx │ │ │ │ ├── Hero.tsx │ │ │ │ ├── HeroAB.tsx │ │ │ │ ├── LogoCloud.tsx │ │ │ │ ├── Privacy.tsx │ │ │ │ ├── SquaresPattern.tsx │ │ │ │ ├── Testimonials.tsx │ │ │ │ └── page.tsx │ │ │ ├── layout.tsx │ │ │ ├── login/ │ │ │ │ ├── LoginForm.tsx │ │ │ │ ├── error/ │ │ │ │ │ ├── AutoLogOut.tsx │ │ │ │ │ └── page.tsx │ │ │ │ ├── messages.ts │ │ │ │ ├── page.tsx │ │ │ │ └── sso/ │ │ │ │ └── page.tsx │ │ │ ├── logout/ │ │ │ │ └── page.tsx │ │ │ ├── old-landing/ │ │ │ │ └── page.tsx │ │ │ ├── onboarding/ │ │ │ │ └── page.tsx │ │ │ ├── onboarding-brief/ │ │ │ │ └── page.tsx │ │ │ ├── oss-friends/ │ │ │ │ └── page.tsx │ │ │ ├── page.tsx │ │ │ ├── pricing/ │ │ │ │ ├── PricingComparisonTable.tsx │ │ │ │ ├── PricingFAQs.tsx │ │ │ │ └── page.tsx │ │ │ ├── privacy/ │ │ │ │ ├── content.mdx │ │ │ │ ├── content.tsx │ │ │ │ └── page.tsx │ │ │ ├── terms/ │ │ │ │ ├── content.mdx │ │ │ │ ├── content.tsx │ │ │ │ └── page.tsx │ │ │ ├── thank-you/ │ │ │ │ └── page.tsx │ │ │ ├── welcome/ │ │ │ │ ├── form.tsx │ │ │ │ ├── page.tsx │ │ │ │ ├── survey.ts │ │ │ │ └── utms.tsx │ │ │ ├── welcome-redirect/ │ │ │ │ └── page.tsx │ │ │ └── welcome-upgrade/ │ │ │ ├── Testimonial.tsx │ │ │ ├── WelcomeUpgradeHeader.tsx │ │ │ ├── WelcomeUpgradeNav.tsx │ │ │ ├── WelcomeUpgradePricing.tsx │ │ │ └── page.tsx │ │ ├── api/ │ │ │ ├── admin/ │ │ │ │ └── top-spenders/ │ │ │ │ └── route.ts │ │ │ ├── ai/ │ │ │ │ ├── analyze-sender-pattern/ │ │ │ │ │ ├── call-analyze-pattern-api.ts │ │ │ │ │ └── route.ts │ │ │ │ ├── compose-autocomplete/ │ │ │ │ │ ├── route.ts │ │ │ │ │ └── validation.ts │ │ │ │ ├── digest/ │ │ │ │ │ ├── queue/ │ │ │ │ │ │ └── route.ts │ │ │ │ │ ├── route.ts │ │ │ │ │ └── validation.ts │ │ │ │ ├── models/ │ │ │ │ │ └── route.ts │ │ │ │ └── summarise/ │ │ │ │ ├── controller.ts │ │ │ │ ├── route.ts │ │ │ │ └── validation.ts │ │ │ ├── auth/ │ │ │ │ └── [...all]/ │ │ │ │ └── route.ts │ │ │ ├── automation-jobs/ │ │ │ │ └── execute/ │ │ │ │ ├── queue/ │ │ │ │ │ └── route.ts │ │ │ │ └── route.ts │ │ │ ├── chat/ │ │ │ │ ├── chat-message-persistence.test.ts │ │ │ │ ├── chat-message-persistence.ts │ │ │ │ ├── confirm-email-action/ │ │ │ │ │ ├── route.test.ts │ │ │ │ │ └── route.ts │ │ │ │ ├── route.ts │ │ │ │ └── validation.ts │ │ │ ├── chats/ │ │ │ │ ├── [chatId]/ │ │ │ │ │ └── route.ts │ │ │ │ └── route.ts │ │ │ ├── clean/ │ │ │ │ ├── gmail/ │ │ │ │ │ └── route.ts │ │ │ │ ├── history/ │ │ │ │ │ └── route.ts │ │ │ │ ├── route.test.ts │ │ │ │ └── route.ts │ │ │ ├── cron/ │ │ │ │ ├── automation-jobs/ │ │ │ │ │ └── route.ts │ │ │ │ └── scheduled-actions/ │ │ │ │ └── route.ts │ │ │ ├── digest-preview/ │ │ │ │ ├── route.ts │ │ │ │ └── validation.ts │ │ │ ├── email-stream/ │ │ │ │ └── route.ts │ │ │ ├── follow-up-reminders/ │ │ │ │ ├── account/ │ │ │ │ │ ├── queue/ │ │ │ │ │ │ └── route.ts │ │ │ │ │ └── route.ts │ │ │ │ ├── process.test.ts │ │ │ │ ├── process.ts │ │ │ │ └── route.ts │ │ │ ├── google/ │ │ │ │ ├── calendar/ │ │ │ │ │ ├── auth-url/ │ │ │ │ │ │ └── route.ts │ │ │ │ │ └── callback/ │ │ │ │ │ └── route.ts │ │ │ │ ├── contacts/ │ │ │ │ │ └── route.ts │ │ │ │ ├── drive/ │ │ │ │ │ ├── auth-url/ │ │ │ │ │ │ └── route.ts │ │ │ │ │ └── callback/ │ │ │ │ │ └── route.ts │ │ │ │ ├── linking/ │ │ │ │ │ ├── auth-url/ │ │ │ │ │ │ └── route.ts │ │ │ │ │ └── callback/ │ │ │ │ │ └── route.ts │ │ │ │ └── webhook/ │ │ │ │ ├── process-history-item.test.ts │ │ │ │ ├── process-history-item.ts │ │ │ │ ├── process-history.test.ts │ │ │ │ ├── process-history.ts │ │ │ │ ├── process-label-added-event.test.ts │ │ │ │ ├── process-label-added-event.ts │ │ │ │ ├── process-label-removed-event.test.ts │ │ │ │ ├── process-label-removed-event.ts │ │ │ │ ├── route.ts │ │ │ │ └── types.ts │ │ │ ├── health/ │ │ │ │ └── route.ts │ │ │ ├── knowledge/ │ │ │ │ └── route.ts │ │ │ ├── labels/ │ │ │ │ ├── create/ │ │ │ │ │ └── route.ts │ │ │ │ └── route.ts │ │ │ ├── lemon-squeezy/ │ │ │ │ └── webhook/ │ │ │ │ ├── route.ts │ │ │ │ └── types.ts │ │ │ ├── mcp/ │ │ │ │ ├── [integration]/ │ │ │ │ │ ├── auth-url/ │ │ │ │ │ │ └── route.ts │ │ │ │ │ └── callback/ │ │ │ │ │ └── route.ts │ │ │ │ └── integrations/ │ │ │ │ └── route.ts │ │ │ ├── meeting-briefs/ │ │ │ │ └── route.ts │ │ │ ├── messages/ │ │ │ │ ├── attachment/ │ │ │ │ │ └── route.ts │ │ │ │ ├── batch/ │ │ │ │ │ └── route.ts │ │ │ │ ├── route.ts │ │ │ │ └── validation.ts │ │ │ ├── organizations/ │ │ │ │ └── [organizationId]/ │ │ │ │ ├── executed-rules-count/ │ │ │ │ │ └── route.ts │ │ │ │ ├── members/ │ │ │ │ │ └── route.ts │ │ │ │ ├── route.ts │ │ │ │ └── stats/ │ │ │ │ ├── email-buckets/ │ │ │ │ │ └── route.ts │ │ │ │ ├── rules-buckets/ │ │ │ │ │ └── route.ts │ │ │ │ ├── totals/ │ │ │ │ │ └── route.ts │ │ │ │ └── types.ts │ │ │ ├── outlook/ │ │ │ │ ├── calendar/ │ │ │ │ │ ├── auth-url/ │ │ │ │ │ │ └── route.ts │ │ │ │ │ └── callback/ │ │ │ │ │ └── route.ts │ │ │ │ ├── drive/ │ │ │ │ │ ├── auth-url/ │ │ │ │ │ │ └── route.ts │ │ │ │ │ └── callback/ │ │ │ │ │ └── route.ts │ │ │ │ ├── linking/ │ │ │ │ │ ├── auth-url/ │ │ │ │ │ │ └── route.ts │ │ │ │ │ └── callback/ │ │ │ │ │ ├── route.test.ts │ │ │ │ │ └── route.ts │ │ │ │ ├── watch/ │ │ │ │ │ ├── all/ │ │ │ │ │ │ └── route.ts │ │ │ │ │ └── route.ts │ │ │ │ └── webhook/ │ │ │ │ ├── learn-label-removal.test.ts │ │ │ │ ├── learn-label-removal.ts │ │ │ │ ├── process-history.test.ts │ │ │ │ ├── process-history.ts │ │ │ │ ├── route.ts │ │ │ │ └── types.ts │ │ │ ├── referrals/ │ │ │ │ ├── code/ │ │ │ │ │ └── route.ts │ │ │ │ └── stats/ │ │ │ │ └── route.ts │ │ │ ├── reply-tracker/ │ │ │ │ └── disable-unused-auto-draft/ │ │ │ │ ├── disable-unused-auto-drafts.test.ts │ │ │ │ ├── disable-unused-auto-drafts.ts │ │ │ │ └── route.ts │ │ │ ├── resend/ │ │ │ │ ├── digest/ │ │ │ │ │ ├── all/ │ │ │ │ │ │ └── route.ts │ │ │ │ │ ├── queue/ │ │ │ │ │ │ └── route.ts │ │ │ │ │ ├── route.ts │ │ │ │ │ └── validation.ts │ │ │ │ └── summary/ │ │ │ │ ├── all/ │ │ │ │ │ └── route.ts │ │ │ │ ├── queue/ │ │ │ │ │ └── route.ts │ │ │ │ ├── route.ts │ │ │ │ └── validation.ts │ │ │ ├── scheduled-actions/ │ │ │ │ └── execute/ │ │ │ │ └── route.ts │ │ │ ├── slack/ │ │ │ │ ├── auth-url/ │ │ │ │ │ └── route.ts │ │ │ │ ├── callback/ │ │ │ │ │ └── route.ts │ │ │ │ ├── commands/ │ │ │ │ │ └── route.ts │ │ │ │ └── events/ │ │ │ │ ├── route.test.ts │ │ │ │ └── route.ts │ │ │ ├── sso/ │ │ │ │ └── signin/ │ │ │ │ ├── route.test.ts │ │ │ │ └── route.ts │ │ │ ├── stripe/ │ │ │ │ ├── success/ │ │ │ │ │ └── route.ts │ │ │ │ └── webhook/ │ │ │ │ └── route.ts │ │ │ ├── teams/ │ │ │ │ └── events/ │ │ │ │ └── route.ts │ │ │ ├── telegram/ │ │ │ │ └── events/ │ │ │ │ └── route.ts │ │ │ ├── threads/ │ │ │ │ ├── [id]/ │ │ │ │ │ └── route.ts │ │ │ │ ├── basic/ │ │ │ │ │ └── route.ts │ │ │ │ ├── batch/ │ │ │ │ │ └── route.ts │ │ │ │ ├── route.ts │ │ │ │ └── validation.ts │ │ │ ├── unsubscribe/ │ │ │ │ ├── route.test.ts │ │ │ │ └── route.ts │ │ │ ├── user/ │ │ │ │ ├── api-keys/ │ │ │ │ │ └── route.ts │ │ │ │ ├── automation-jobs/ │ │ │ │ │ └── route.ts │ │ │ │ ├── calendar/ │ │ │ │ │ └── upcoming-events/ │ │ │ │ │ └── route.ts │ │ │ │ ├── calendars/ │ │ │ │ │ └── route.ts │ │ │ │ ├── categories/ │ │ │ │ │ └── route.ts │ │ │ │ ├── categorize/ │ │ │ │ │ └── senders/ │ │ │ │ │ ├── batch/ │ │ │ │ │ │ ├── handle-batch-validation.ts │ │ │ │ │ │ ├── handle-batch.ts │ │ │ │ │ │ ├── route.ts │ │ │ │ │ │ └── simple/ │ │ │ │ │ │ └── route.ts │ │ │ │ │ ├── categorized/ │ │ │ │ │ │ └── route.ts │ │ │ │ │ ├── progress/ │ │ │ │ │ │ └── route.ts │ │ │ │ │ ├── types.ts │ │ │ │ │ └── uncategorized/ │ │ │ │ │ ├── get-senders.ts │ │ │ │ │ ├── get-uncategorized-senders.ts │ │ │ │ │ └── route.ts │ │ │ │ ├── cold-email/ │ │ │ │ │ └── route.ts │ │ │ │ ├── complete-registration/ │ │ │ │ │ └── route.ts │ │ │ │ ├── debug/ │ │ │ │ │ ├── follow-up/ │ │ │ │ │ │ └── route.ts │ │ │ │ │ ├── memories/ │ │ │ │ │ │ └── route.ts │ │ │ │ │ └── rules/ │ │ │ │ │ └── route.ts │ │ │ │ ├── digest-schedule/ │ │ │ │ │ └── route.ts │ │ │ │ ├── digest-settings/ │ │ │ │ │ └── route.ts │ │ │ │ ├── draft-actions/ │ │ │ │ │ └── route.ts │ │ │ │ ├── drive/ │ │ │ │ │ ├── connections/ │ │ │ │ │ │ └── route.ts │ │ │ │ │ ├── filings/ │ │ │ │ │ │ └── route.ts │ │ │ │ │ ├── folders/ │ │ │ │ │ │ ├── [folderId]/ │ │ │ │ │ │ │ └── route.ts │ │ │ │ │ │ └── route.ts │ │ │ │ │ ├── preview/ │ │ │ │ │ │ ├── attachments/ │ │ │ │ │ │ │ └── route.ts │ │ │ │ │ │ └── route.ts │ │ │ │ │ └── source-items/ │ │ │ │ │ ├── [folderId]/ │ │ │ │ │ │ └── route.ts │ │ │ │ │ └── route.ts │ │ │ │ ├── email-account/ │ │ │ │ │ └── route.ts │ │ │ │ ├── email-accounts/ │ │ │ │ │ └── route.ts │ │ │ │ ├── executed-rules/ │ │ │ │ │ ├── batch/ │ │ │ │ │ │ └── route.ts │ │ │ │ │ └── history/ │ │ │ │ │ └── route.ts │ │ │ │ ├── folders/ │ │ │ │ │ └── route.ts │ │ │ │ ├── group/ │ │ │ │ │ ├── [groupId]/ │ │ │ │ │ │ ├── items/ │ │ │ │ │ │ │ └── route.ts │ │ │ │ │ │ └── rules/ │ │ │ │ │ │ └── route.ts │ │ │ │ │ └── route.ts │ │ │ │ ├── labels/ │ │ │ │ │ └── route.ts │ │ │ │ ├── me/ │ │ │ │ │ └── route.ts │ │ │ │ ├── meeting-briefs/ │ │ │ │ │ ├── history/ │ │ │ │ │ │ └── route.ts │ │ │ │ │ └── route.ts │ │ │ │ ├── messaging-channels/ │ │ │ │ │ ├── [channelId]/ │ │ │ │ │ │ └── targets/ │ │ │ │ │ │ └── route.ts │ │ │ │ │ └── route.ts │ │ │ │ ├── no-reply/ │ │ │ │ │ └── route.ts │ │ │ │ ├── organization-membership/ │ │ │ │ │ └── route.ts │ │ │ │ ├── persona/ │ │ │ │ │ └── route.ts │ │ │ │ ├── rules/ │ │ │ │ │ ├── [id]/ │ │ │ │ │ │ └── route.ts │ │ │ │ │ └── route.ts │ │ │ │ ├── schedule/ │ │ │ │ │ └── [id]/ │ │ │ │ │ └── route.ts │ │ │ │ ├── settings/ │ │ │ │ │ └── multi-account/ │ │ │ │ │ ├── route.ts │ │ │ │ │ └── validation.ts │ │ │ │ ├── setup-progress/ │ │ │ │ │ └── route.ts │ │ │ │ └── stats/ │ │ │ │ ├── by-period/ │ │ │ │ │ ├── controller.ts │ │ │ │ │ ├── route.ts │ │ │ │ │ └── validation.ts │ │ │ │ ├── email-actions/ │ │ │ │ │ └── route.ts │ │ │ │ ├── helpers.ts │ │ │ │ ├── newsletters/ │ │ │ │ │ ├── helpers.ts │ │ │ │ │ ├── route.ts │ │ │ │ │ └── summary/ │ │ │ │ │ └── route.ts │ │ │ │ ├── recipients/ │ │ │ │ │ └── route.ts │ │ │ │ ├── response-time/ │ │ │ │ │ ├── calculate.test.ts │ │ │ │ │ ├── calculate.ts │ │ │ │ │ ├── controller.ts │ │ │ │ │ ├── route.ts │ │ │ │ │ └── validation.ts │ │ │ │ ├── rule-stats/ │ │ │ │ │ └── route.ts │ │ │ │ ├── sender-emails/ │ │ │ │ │ └── route.ts │ │ │ │ └── senders/ │ │ │ │ └── route.ts │ │ │ ├── v1/ │ │ │ │ ├── openapi/ │ │ │ │ │ └── route.ts │ │ │ │ ├── rules/ │ │ │ │ │ ├── [id]/ │ │ │ │ │ │ └── route.ts │ │ │ │ │ ├── request.ts │ │ │ │ │ ├── route.ts │ │ │ │ │ ├── serializers.ts │ │ │ │ │ ├── validation.test.ts │ │ │ │ │ └── validation.ts │ │ │ │ └── stats/ │ │ │ │ ├── by-period/ │ │ │ │ │ ├── route.ts │ │ │ │ │ └── validation.ts │ │ │ │ └── response-time/ │ │ │ │ ├── route.ts │ │ │ │ └── validation.ts │ │ │ └── watch/ │ │ │ ├── all/ │ │ │ │ └── route.ts │ │ │ ├── route.ts │ │ │ └── unwatch/ │ │ │ └── route.ts │ │ ├── global-error.tsx │ │ ├── layout.tsx │ │ ├── manifest.ts │ │ ├── not-found.tsx │ │ ├── organizations/ │ │ │ └── invitations/ │ │ │ └── [invitationId]/ │ │ │ └── accept/ │ │ │ └── page.tsx │ │ ├── robots.ts │ │ ├── startup-image.ts │ │ ├── sw.ts │ │ └── utm.tsx │ ├── components/ │ │ ├── AccessDenied.tsx │ │ ├── AccountSwitcher.tsx │ │ ├── ActionButtons.tsx │ │ ├── ActionButtonsBulk.tsx │ │ ├── Alert.tsx │ │ ├── AppErrorBoundary.tsx │ │ ├── Badge.tsx │ │ ├── Banner.tsx │ │ ├── BulkArchiveCards.tsx │ │ ├── Button.tsx │ │ ├── ButtonCheckbox.tsx │ │ ├── ButtonGroup.tsx │ │ ├── ButtonList.tsx │ │ ├── ButtonListSurvey.tsx │ │ ├── CategorySelect.tsx │ │ ├── Celebration.tsx │ │ ├── Checkbox.tsx │ │ ├── ClientOnly.tsx │ │ ├── Combobox.tsx │ │ ├── CommandK.tsx │ │ ├── ConfirmDialog.tsx │ │ ├── Container.tsx │ │ ├── CopyInput.tsx │ │ ├── CrispChat.tsx │ │ ├── DatePickerWithRange.tsx │ │ ├── EmailCell.tsx │ │ ├── EmailMessageCell.tsx │ │ ├── EmailViewer.tsx │ │ ├── EnableFeatureCard.tsx │ │ ├── ErrorBoundary.tsx │ │ ├── ErrorDisplay.tsx │ │ ├── ErrorPage.tsx │ │ ├── ExpandableText.tsx │ │ ├── FolderSelector.tsx │ │ ├── Form.tsx │ │ ├── GroupHeading.tsx │ │ ├── GroupedTable.tsx │ │ ├── HeroVideoDialog.tsx │ │ ├── HoverCard.tsx │ │ ├── Input.tsx │ │ ├── InviteMemberModal.tsx │ │ ├── LabelCombobox.tsx │ │ ├── LabelsSubMenu.tsx │ │ ├── LandingErrorBoundary.tsx │ │ ├── LegalPage.tsx │ │ ├── Linkify.tsx │ │ ├── List.tsx │ │ ├── Loading.tsx │ │ ├── LoadingContent.tsx │ │ ├── Logo.tsx │ │ ├── MultiSelectFilter.tsx │ │ ├── MuxVideo.tsx │ │ ├── NavUser.tsx │ │ ├── Notice.tsx │ │ ├── OnboardingModal.tsx │ │ ├── PageHeader.tsx │ │ ├── PageWrapper.tsx │ │ ├── Panel.tsx │ │ ├── PersonWithLogo.tsx │ │ ├── PlanBadge.tsx │ │ ├── PremiumAlert.tsx │ │ ├── PremiumCard.tsx │ │ ├── ProfileImage.tsx │ │ ├── ProgressPanel.tsx │ │ ├── ReferralDialog.tsx │ │ ├── ScrollableFadeContainer.tsx │ │ ├── SearchForm.tsx │ │ ├── Select.tsx │ │ ├── SettingCard.tsx │ │ ├── SettingsSection.tsx │ │ ├── SetupCard.tsx │ │ ├── SetupProgressCard.tsx │ │ ├── SideNav.tsx │ │ ├── SideNavMenu.tsx │ │ ├── SideNavWithTopNav.tsx │ │ ├── SidebarRight.tsx │ │ ├── SlideOverSheet.tsx │ │ ├── StatsCards.tsx │ │ ├── TabSelect.tsx │ │ ├── TablePagination.tsx │ │ ├── Tabs.tsx │ │ ├── TabsToolbar.tsx │ │ ├── Tag.tsx │ │ ├── TagInput.tsx │ │ ├── TimePicker.tsx │ │ ├── Toast.tsx │ │ ├── Toggle.tsx │ │ ├── Tooltip.tsx │ │ ├── TooltipExplanation.tsx │ │ ├── TopBar.tsx │ │ ├── TopSection.tsx │ │ ├── TruncatedText.tsx │ │ ├── TruncatedTooltipText.tsx │ │ ├── Typography.tsx │ │ ├── VideoCard.tsx │ │ ├── ViewEmailButton.tsx │ │ ├── WebhookDocumentation.tsx │ │ ├── YouTubeVideo.tsx │ │ ├── ai-elements/ │ │ │ ├── actions.tsx │ │ │ ├── code-block.tsx │ │ │ ├── conversation.tsx │ │ │ ├── loader.tsx │ │ │ ├── message.tsx │ │ │ ├── prompt-input.tsx │ │ │ ├── reasoning.tsx │ │ │ ├── response.test.tsx │ │ │ ├── response.tsx │ │ │ ├── shimmer.tsx │ │ │ ├── suggestion.tsx │ │ │ └── tool.tsx │ │ ├── assistant-chat/ │ │ │ ├── chat.tsx │ │ │ ├── email-lookup-context.tsx │ │ │ ├── examples-dialog.tsx │ │ │ ├── helpers.ts │ │ │ ├── inline-email-action-context.tsx │ │ │ ├── inline-email-card.test.tsx │ │ │ ├── inline-email-card.tsx │ │ │ ├── message-editor.tsx │ │ │ ├── message-part.tsx │ │ │ ├── messages.tsx │ │ │ ├── messaging-channel-hint.tsx │ │ │ ├── overview.tsx │ │ │ ├── preview-attachment.tsx │ │ │ ├── tool-label.test.ts │ │ │ ├── tool-label.ts │ │ │ ├── tools.tsx │ │ │ └── types.ts │ │ ├── bulk-archive/ │ │ │ └── categoryIcons.ts │ │ ├── charts/ │ │ │ ├── DomainIcon.tsx │ │ │ └── HorizontalBarChart.tsx │ │ ├── drive/ │ │ │ ├── FilingStatusCell.tsx │ │ │ ├── TableCellWithTooltip.tsx │ │ │ └── YesNoIndicator.tsx │ │ ├── editor/ │ │ │ ├── SimpleRichTextEditor.css │ │ │ ├── SimpleRichTextEditor.tsx │ │ │ ├── Tiptap.tsx │ │ │ ├── extensions/ │ │ │ │ ├── LabelMention.tsx │ │ │ │ └── MentionList.tsx │ │ │ └── extensions.ts │ │ ├── email-list/ │ │ │ ├── EmailAttachments.tsx │ │ │ ├── EmailContents.tsx │ │ │ ├── EmailDate.tsx │ │ │ ├── EmailDetails.tsx │ │ │ ├── EmailList.tsx │ │ │ ├── EmailListItem.tsx │ │ │ ├── EmailMessage.tsx │ │ │ ├── EmailPanel.tsx │ │ │ ├── EmailThread.tsx │ │ │ ├── PlanExplanation.tsx │ │ │ └── types.ts │ │ ├── feature-announcements/ │ │ │ ├── AnnouncementDialog.tsx │ │ │ ├── AnnouncementDialogDemo.tsx │ │ │ ├── FollowUpRemindersIllustration.tsx │ │ │ └── MeetingBriefsIllustration.tsx │ │ ├── kibo-ui/ │ │ │ └── tree/ │ │ │ └── index.tsx │ │ ├── layouts/ │ │ │ ├── BasicLayout.tsx │ │ │ └── BlogLayout.tsx │ │ ├── new-landing/ │ │ │ ├── BrandScroller.tsx │ │ │ ├── CallToAction.tsx │ │ │ ├── FeatureCardGrid.tsx │ │ │ ├── FooterLineLogo.tsx │ │ │ ├── HeaderLinks.tsx │ │ │ ├── LiquidGlassButton.tsx │ │ │ ├── PatternBanner.tsx │ │ │ ├── UnicornScene.tsx │ │ │ ├── common/ │ │ │ │ ├── Anchor.tsx │ │ │ │ ├── Badge.tsx │ │ │ │ ├── BlurFade.tsx │ │ │ │ ├── Button.tsx │ │ │ │ ├── Card.tsx │ │ │ │ ├── CardWrapper.tsx │ │ │ │ ├── DisplayCard.tsx │ │ │ │ ├── Logo.tsx │ │ │ │ ├── Section.tsx │ │ │ │ ├── Typography.tsx │ │ │ │ └── WordReveal.tsx │ │ │ ├── icons/ │ │ │ │ ├── Analytics.tsx │ │ │ │ ├── AutoOrganize.tsx │ │ │ │ ├── Bell.tsx │ │ │ │ ├── Briefcase.tsx │ │ │ │ ├── Calendar.tsx │ │ │ │ ├── Chat.tsx │ │ │ │ ├── ChatTwo.tsx │ │ │ │ ├── Check.tsx │ │ │ │ ├── Connect.tsx │ │ │ │ ├── Envelope.tsx │ │ │ │ ├── Fire.tsx │ │ │ │ ├── Gmail.tsx │ │ │ │ ├── Link.tsx │ │ │ │ ├── Megaphone.tsx │ │ │ │ ├── Newsletter.tsx │ │ │ │ ├── Outlook.tsx │ │ │ │ ├── Pen.tsx │ │ │ │ ├── Play.tsx │ │ │ │ ├── Receipt.tsx │ │ │ │ ├── SnowFlake.tsx │ │ │ │ ├── Sparkle.tsx │ │ │ │ ├── SparkleBlue.tsx │ │ │ │ ├── Team.tsx │ │ │ │ └── Zap.tsx │ │ │ └── sections/ │ │ │ ├── Awards.tsx │ │ │ ├── BulkUnsubscribe.tsx │ │ │ ├── EverythingElseSection.tsx │ │ │ ├── Footer.tsx │ │ │ ├── Header.tsx │ │ │ ├── OrganizedInbox.tsx │ │ │ ├── PreWrittenDrafts.tsx │ │ │ ├── Pricing.tsx │ │ │ ├── StartedInMinutes.tsx │ │ │ └── Testimonials.tsx │ │ ├── theme-provider.tsx │ │ ├── theme-toggle.tsx │ │ └── ui/ │ │ ├── alert-dialog.tsx │ │ ├── alert.tsx │ │ ├── avatar.tsx │ │ ├── badge.tsx │ │ ├── button.tsx │ │ ├── calendar.tsx │ │ ├── card.tsx │ │ ├── chart.tsx │ │ ├── checkbox.tsx │ │ ├── collapsible.tsx │ │ ├── command.tsx │ │ ├── dialog.tsx │ │ ├── dropdown-menu.tsx │ │ ├── empty.tsx │ │ ├── form.tsx │ │ ├── hover-card.tsx │ │ ├── input.tsx │ │ ├── item.tsx │ │ ├── label.tsx │ │ ├── navigation-menu.tsx │ │ ├── pagination.tsx │ │ ├── popover.tsx │ │ ├── progress.tsx │ │ ├── radio-group.tsx │ │ ├── resizable.tsx │ │ ├── scroll-area.tsx │ │ ├── select.tsx │ │ ├── separator.tsx │ │ ├── sheet.tsx │ │ ├── sidebar.tsx │ │ ├── skeleton.tsx │ │ ├── switch.tsx │ │ ├── table.tsx │ │ ├── tabs.tsx │ │ ├── textarea.tsx │ │ └── tooltip.tsx │ ├── components.json │ ├── ee/ │ │ ├── LICENSE.md │ │ └── billing/ │ │ ├── lemon/ │ │ │ └── index.ts │ │ └── stripe/ │ │ ├── ai-overage.test.ts │ │ ├── ai-overage.ts │ │ ├── index.ts │ │ ├── loops-events.test.ts │ │ ├── loops-events.ts │ │ ├── posthog-events.test.ts │ │ ├── posthog-events.ts │ │ └── sync-stripe.ts │ ├── entrypoint.sh │ ├── env.ts │ ├── hooks/ │ │ ├── use-mobile.tsx │ │ ├── useAccounts.ts │ │ ├── useActionTiming.ts │ │ ├── useAdminTopSpenders.ts │ │ ├── useAnalytics.ts │ │ ├── useApiKeys.ts │ │ ├── useAutomationJob.ts │ │ ├── useBeforeUnload.ts │ │ ├── useCalendarUpcomingEvents.tsx │ │ ├── useCalendars.ts │ │ ├── useCategories.ts │ │ ├── useChatMessages.ts │ │ ├── useChats.ts │ │ ├── useCommandPaletteCommands.ts │ │ ├── useDialogState.ts │ │ ├── useDisplayedEmail.ts │ │ ├── useDriveConnections.ts │ │ ├── useDriveFolders.ts │ │ ├── useDriveSourceChildren.ts │ │ ├── useDriveSourceItems.ts │ │ ├── useDriveSubfolders.ts │ │ ├── useEmailAccountFull.ts │ │ ├── useExecutedRules.tsx │ │ ├── useExecutedRulesCount.ts │ │ ├── useFeatureFlags.ts │ │ ├── useFilingActivity.ts │ │ ├── useFilingPreview.ts │ │ ├── useFilingPreviewAttachments.ts │ │ ├── useFolders.ts │ │ ├── useIntegrations.tsx │ │ ├── useInterval.ts │ │ ├── useLabels.ts │ │ ├── useMeetingBriefs.ts │ │ ├── useMessagesBatch.ts │ │ ├── useMessagingChannels.ts │ │ ├── useModal.tsx │ │ ├── useModifierKey.ts │ │ ├── useOrgAccess.ts │ │ ├── useOrgSWR.ts │ │ ├── useOrgStatsEmailBuckets.ts │ │ ├── useOrgStatsRulesBuckets.ts │ │ ├── useOrgStatsTotals.ts │ │ ├── useOrganization.ts │ │ ├── useOrganizationMembers.ts │ │ ├── useOrganizationMembership.ts │ │ ├── usePersona.ts │ │ ├── useRule.tsx │ │ ├── useRules.tsx │ │ ├── useSetupProgress.ts │ │ ├── useSignupEvent.tsx │ │ ├── useSlackConnect.ts │ │ ├── useTableKeyboardNavigation.ts │ │ ├── useThread.ts │ │ ├── useThreads.ts │ │ ├── useThreadsByIds.ts │ │ ├── useToggleSelect.ts │ │ └── useUser.ts │ ├── instrumentation-client.ts │ ├── instrumentation.ts │ ├── lib/ │ │ └── commands/ │ │ ├── fuzzy-search.ts │ │ └── types.ts │ ├── mdx-components.tsx │ ├── next.config.ts │ ├── package.json │ ├── playwright.local-bypass.config.mjs │ ├── postcss.config.js │ ├── prisma/ │ │ ├── migrations/ │ │ │ ├── 20230730073019_init/ │ │ │ │ └── migration.sql │ │ │ ├── 20230804105315_rule_name/ │ │ │ │ └── migration.sql │ │ │ ├── 20230804140051_cascade_delete_executed_rule/ │ │ │ │ └── migration.sql │ │ │ ├── 20230913192346_lemon_squeezy/ │ │ │ │ └── migration.sql │ │ │ ├── 20230919082654_ai_model/ │ │ │ │ └── migration.sql │ │ │ ├── 20231027022923_unique_account/ │ │ │ │ └── migration.sql │ │ │ ├── 20231112182812_onboarding_flag/ │ │ │ │ └── migration.sql │ │ │ ├── 20231207000800_settings/ │ │ │ │ └── migration.sql │ │ │ ├── 20231213064514_newsletter_status/ │ │ │ │ └── migration.sql │ │ │ ├── 20231219225431_unsubscribe_credits/ │ │ │ │ └── migration.sql │ │ │ ├── 20231229221011_remove_summarize_action/ │ │ │ │ └── migration.sql │ │ │ ├── 20240101222135_cold_email_blocker/ │ │ │ │ └── migration.sql │ │ │ ├── 20240116235134_shared_premium/ │ │ │ │ └── migration.sql │ │ │ ├── 20240122015840_remove_old_fields/ │ │ │ │ └── migration.sql │ │ │ ├── 20240131044439_onboarding_answers/ │ │ │ │ └── migration.sql │ │ │ ├── 20240208223501_ai_threads/ │ │ │ │ └── migration.sql │ │ │ ├── 20240317133130_ai_provider/ │ │ │ │ └── migration.sql │ │ │ ├── 20240319131634_executed_actions/ │ │ │ │ └── migration.sql │ │ │ ├── 20240319151146_unique_executed_rule/ │ │ │ │ └── migration.sql │ │ │ ├── 20240319151147_migrate_actions/ │ │ │ │ └── migration.sql │ │ │ ├── 20240319151148_delete_deprecated_fields/ │ │ │ │ └── migration.sql │ │ │ ├── 20240322094912_behaviour_profile/ │ │ │ │ └── migration.sql │ │ │ ├── 20240323230604_last_login/ │ │ │ │ └── migration.sql │ │ │ ├── 20240323230633_utm/ │ │ │ │ └── migration.sql │ │ │ ├── 20240418150351_license_key/ │ │ │ │ └── migration.sql │ │ │ ├── 20240424111051_groups/ │ │ │ │ └── migration.sql │ │ │ ├── 20240426150851_rule_type/ │ │ │ │ └── migration.sql │ │ │ ├── 20240507211259_premium_admin/ │ │ │ │ └── migration.sql │ │ │ ├── 20240509085010_automate_default_off/ │ │ │ │ └── migration.sql │ │ │ ├── 20240513103627_mark_not_cold_email/ │ │ │ │ └── migration.sql │ │ │ ├── 20240516112326_remove_newsletter_cold_email/ │ │ │ │ └── migration.sql │ │ │ ├── 20240516112350_cold_email_model/ │ │ │ │ └── migration.sql │ │ │ ├── 20240528083708_summary_email/ │ │ │ │ └── migration.sql │ │ │ ├── 20240528181840_premium_basic/ │ │ │ │ └── migration.sql │ │ │ ├── 20240624075134_argument_prompt/ │ │ │ │ └── migration.sql │ │ │ ├── 20240728084326_api_key/ │ │ │ │ └── migration.sql │ │ │ ├── 20240730122310_copilot_tier/ │ │ │ │ └── migration.sql │ │ │ ├── 20240820220244_ai_api_key/ │ │ │ │ └── migration.sql │ │ │ ├── 20240917021039_rule_prompt/ │ │ │ │ └── migration.sql │ │ │ ├── 20240917232302_disable_rule/ │ │ │ │ └── migration.sql │ │ │ ├── 20241008234839_error_messages/ │ │ │ │ └── migration.sql │ │ │ ├── 20241020163727_app_onboarding/ │ │ │ │ └── migration.sql │ │ │ ├── 20241023204900_category/ │ │ │ │ └── migration.sql │ │ │ ├── 20241027173153_category_filter/ │ │ │ │ └── migration.sql │ │ │ ├── 20241031212440_auto_categorize_senders/ │ │ │ │ └── migration.sql │ │ │ ├── 20241107151035_applying_execute_status/ │ │ │ │ └── migration.sql │ │ │ ├── 20241107152409_remove_default_executed_status/ │ │ │ │ └── migration.sql │ │ │ ├── 20241119163400_categorize_date_range/ │ │ │ │ └── migration.sql │ │ │ ├── 20241125052523_remove_categorized_time/ │ │ │ │ └── migration.sql │ │ │ ├── 20241128034952_migrate_prompt_fields/ │ │ │ │ └── migration.sql │ │ │ ├── 20241216093030_upgrade_to_v6/ │ │ │ │ └── migration.sql │ │ │ ├── 20241218123405_multi_conditions/ │ │ │ │ └── migration.sql │ │ │ ├── 20241219122254_rename_to_conditional_operator/ │ │ │ │ └── migration.sql │ │ │ ├── 20241219190656_deprecate_rule_type/ │ │ │ │ └── migration.sql │ │ │ ├── 20241219192522_optional_deprecated_rule_type/ │ │ │ │ └── migration.sql │ │ │ ├── 20241230180925_call_webhook_action/ │ │ │ │ └── migration.sql │ │ │ ├── 20241230204311_action_webhook_url/ │ │ │ │ └── migration.sql │ │ │ ├── 20250112081255_pending_invite/ │ │ │ │ └── migration.sql │ │ │ ├── 20250116101856_mark_read_action/ │ │ │ │ └── migration.sql │ │ │ ├── 20250128141602_cascade_delete_group/ │ │ │ │ └── migration.sql │ │ │ ├── 20250130215802_read_cold_emails/ │ │ │ │ └── migration.sql │ │ │ ├── 20250202092329_reply_tracker/ │ │ │ │ └── migration.sql │ │ │ ├── 20250202154501_remove_deprecated_action/ │ │ │ │ └── migration.sql │ │ │ ├── 20250203174037_reply_tracker_sent_at/ │ │ │ │ └── migration.sql │ │ │ ├── 20250204162638_email_token/ │ │ │ │ └── migration.sql │ │ │ ├── 20250204191020_remove_email_token_action/ │ │ │ │ └── migration.sql │ │ │ ├── 20250209113928_non_null_email/ │ │ │ │ └── migration.sql │ │ │ ├── 20250210224905_summary_indexes/ │ │ │ │ └── migration.sql │ │ │ ├── 20250210225300_tracker_indexes/ │ │ │ │ └── migration.sql │ │ │ ├── 20250212125908_signature/ │ │ │ │ └── migration.sql │ │ │ ├── 20250223190244_draft_replies/ │ │ │ │ └── migration.sql │ │ │ ├── 20250227135610_payments/ │ │ │ │ └── migration.sql │ │ │ ├── 20250227135758_processor_type_enum/ │ │ │ │ └── migration.sql │ │ │ ├── 20250227142620_payment_tax/ │ │ │ │ └── migration.sql │ │ │ ├── 20250227144751_remove_default_timestamps_from_payment/ │ │ │ │ └── migration.sql │ │ │ ├── 20250227173229_remove_prompt_history/ │ │ │ │ └── migration.sql │ │ │ ├── 20250309095123_cleaner/ │ │ │ │ └── migration.sql │ │ │ ├── 20250311110807_job_details/ │ │ │ │ └── migration.sql │ │ │ ├── 20250312172635_skips/ │ │ │ │ └── migration.sql │ │ │ ├── 20250316155443_email_message/ │ │ │ │ └── migration.sql │ │ │ ├── 20250316155944_remove_size_estimate/ │ │ │ │ └── migration.sql │ │ │ ├── 20250316201459_remove_to_domain/ │ │ │ │ └── migration.sql │ │ │ ├── 20250324221721_skip_conversations/ │ │ │ │ └── migration.sql │ │ │ ├── 20250324222007_skipconversation/ │ │ │ │ └── migration.sql │ │ │ ├── 20250403104153_unique_knowledge_title/ │ │ │ │ └── migration.sql │ │ │ ├── 20250406111823_track_thread_action/ │ │ │ │ └── migration.sql │ │ │ ├── 20250406111915_migrate_track_replies_to_actions/ │ │ │ │ └── migration.sql │ │ │ ├── 20250408111051_newsletter_learned_patterns/ │ │ │ │ └── migration.sql │ │ │ ├── 20250410110949_remove_deprecated/ │ │ │ │ └── migration.sql │ │ │ ├── 20250410111325_remove_deprecated_onboarding/ │ │ │ │ └── migration.sql │ │ │ ├── 20250410132704_remove_rule_type/ │ │ │ │ └── migration.sql │ │ │ ├── 20250414091625_rule_system_type/ │ │ │ │ └── migration.sql │ │ │ ├── 20250414103126_migrate_system_rule_types/ │ │ │ │ └── migration.sql │ │ │ ├── 20250415162053_draft_score/ │ │ │ │ └── migration.sql │ │ │ ├── 20250417135524_writing_style/ │ │ │ │ └── migration.sql │ │ │ ├── 20250420131728_email_account_settings/ │ │ │ │ └── migration.sql │ │ │ ├── 20250429192105_mutli_email/ │ │ │ │ └── migration.sql │ │ │ ├── 20250430094808_remove_cleanupjob_email/ │ │ │ │ └── migration.sql │ │ │ ├── 20250502155551_lemon_subscription_status/ │ │ │ │ └── migration.sql │ │ │ ├── 20250504061506_drop_old_userids/ │ │ │ │ └── migration.sql │ │ │ ├── 20250506025728_stripe/ │ │ │ │ └── migration.sql │ │ │ ├── 20250509151934_remove_deprecated/ │ │ │ │ └── migration.sql │ │ │ ├── 20250519090915_add_exclude_to_group_item/ │ │ │ │ └── migration.sql │ │ │ ├── 20250521104911_chat/ │ │ │ │ └── migration.sql │ │ │ ├── 20250521132820_message_parts/ │ │ │ │ └── migration.sql │ │ │ ├── 20250606102158_onboarding_answers/ │ │ │ │ └── migration.sql │ │ │ ├── 20250609204102_rule_history/ │ │ │ │ └── migration.sql │ │ │ ├── 20250610100452_add_outlook_subscription_id/ │ │ │ │ └── migration.sql │ │ │ ├── 20250612142528_referrals/ │ │ │ │ └── migration.sql │ │ │ ├── 20250616122919_add_digest/ │ │ │ │ └── migration.sql │ │ │ ├── 20250627111946_update_digest/ │ │ │ │ └── migration.sql │ │ │ ├── 20250722084939_schedule_actions/ │ │ │ │ └── migration.sql │ │ │ ├── 20250804163003_better_auth/ │ │ │ │ └── migration.sql │ │ │ ├── 20250811130806_add_move_folder_action/ │ │ │ │ └── migration.sql │ │ │ ├── 20250812130230_persona_analysis/ │ │ │ │ └── migration.sql │ │ │ ├── 20250812223533_add_folder_id/ │ │ │ │ └── migration.sql │ │ │ ├── 20250813214639_email_account_role/ │ │ │ │ └── migration.sql │ │ │ ├── 20250819125304_add_include_referral_signature/ │ │ │ │ └── migration.sql │ │ │ ├── 20250904131746_add_sso_and_organizations/ │ │ │ │ └── migration.sql │ │ │ ├── 20250912071705_calendar/ │ │ │ │ └── migration.sql │ │ │ ├── 20250916133642_default_signature_enabled/ │ │ │ │ └── migration.sql │ │ │ ├── 20250916180645_company_size/ │ │ │ │ └── migration.sql │ │ │ ├── 20250918194235_update_org_tables_to_email_account/ │ │ │ │ └── migration.sql │ │ │ ├── 20251001142931_mcp/ │ │ │ │ └── migration.sql │ │ │ ├── 20251001203533_convert_automate_false_to_disabled/ │ │ │ │ └── migration.sql │ │ │ ├── 20251003000636_default_rule_automate/ │ │ │ │ └── migration.sql │ │ │ ├── 20251005093547_label_id/ │ │ │ │ └── migration.sql │ │ │ ├── 20251009133100_add_system_type_enum_values/ │ │ │ │ └── migration.sql │ │ │ ├── 20251009133101_migrate_cold_email_to_rules/ │ │ │ │ └── migration.sql │ │ │ ├── 20251009133154_system_type_expansion/ │ │ │ │ └── migration.sql │ │ │ ├── 20251010143722_remove_track_thread_action/ │ │ │ │ └── migration.sql │ │ │ ├── 20251013003655_cascade_delete_digest_item/ │ │ │ │ └── migration.sql │ │ │ ├── 20251016181540_email_message_name/ │ │ │ │ └── migration.sql │ │ │ ├── 20251021123040_drop_executed_rule_unique/ │ │ │ │ └── migration.sql │ │ │ ├── 20251021213524_better_auth_refresh_token_expires_at/ │ │ │ │ └── migration.sql │ │ │ ├── 20251022094717_add_multi_rule_selection_enabled/ │ │ │ │ └── migration.sql │ │ │ ├── 20251024092349_match_metadata/ │ │ │ │ └── migration.sql │ │ │ ├── 20251030010539_indexes/ │ │ │ │ └── migration.sql │ │ │ ├── 20251110013724_add_outlook_subscription_history/ │ │ │ │ └── migration.sql │ │ │ ├── 20251116165134_add_timezone_and_booking_link/ │ │ │ │ └── migration.sql │ │ │ ├── 20251204222441_fromname_index/ │ │ │ │ └── migration.sql │ │ │ ├── 20251207172822_response_time/ │ │ │ │ └── migration.sql │ │ │ ├── 20251209013008_referral_signature_off/ │ │ │ │ └── migration.sql │ │ │ ├── 20251209071346_response_time_mins/ │ │ │ │ └── migration.sql │ │ │ ├── 20251210202624_meeting_briefs/ │ │ │ │ └── migration.sql │ │ │ ├── 20251215004700_brief_status/ │ │ │ │ └── migration.sql │ │ │ ├── 20251219012216_add_notify_sender_action_type/ │ │ │ │ └── migration.sql │ │ │ ├── 20251221132935_drive/ │ │ │ │ └── migration.sql │ │ │ ├── 20251222222738_add_filing_preview_support/ │ │ │ │ └── migration.sql │ │ │ ├── 20251223000001_rename_notification_token_to_message_id/ │ │ │ │ └── migration.sql │ │ │ ├── 20260101221942_account_disconnected_at/ │ │ │ │ └── migration.sql │ │ │ ├── 20260103000000_migrate_cold_emails_to_group_items/ │ │ │ │ └── migration.sql │ │ │ ├── 20260104000000_add_label_removed_to_group_item_source/ │ │ │ │ └── migration.sql │ │ │ ├── 20260107163249_remove_index/ │ │ │ │ └── migration.sql │ │ │ ├── 20260109163518_newsletter_sender_name/ │ │ │ │ └── migration.sql │ │ │ ├── 20260111000000_add_follow_up_reminders/ │ │ │ │ └── migration.sql │ │ │ ├── 20260113000000_update_conversation_rule_defaults/ │ │ │ │ └── migration.sql │ │ │ ├── 20260114000000_follow_up_days_to_float/ │ │ │ │ └── migration.sql │ │ │ ├── 20260115091612_follow_up_index/ │ │ │ │ └── migration.sql │ │ │ ├── 20260121000000_announcement_dismissed_at/ │ │ │ │ └── migration.sql │ │ │ ├── 20260122000000_add_followup_draft_id/ │ │ │ │ └── migration.sql │ │ │ ├── 20260126000000_add_allow_org_admin_analytics/ │ │ │ │ └── migration.sql │ │ │ ├── 20260126000001_enforce_single_org_per_email/ │ │ │ │ └── migration.sql │ │ │ ├── 20260208000000_add_messaging_channels/ │ │ │ │ └── migration.sql │ │ │ ├── 20260209000000_add_send_document_filings/ │ │ │ │ └── migration.sql │ │ │ ├── 20260209111238_add_executed_rule_created_at_index/ │ │ │ │ └── migration.sql │ │ │ ├── 20260210000000_add_bot_user_id_to_messaging_channel/ │ │ │ │ └── migration.sql │ │ │ ├── 20260210100000_add_plus_tier/ │ │ │ │ └── migration.sql │ │ │ ├── 20260214000000_chat_compaction_memory/ │ │ │ │ └── migration.sql │ │ │ ├── 20260217000000_add_dismissed_hints/ │ │ │ │ └── migration.sql │ │ │ ├── 20260219024141_automation_jobs/ │ │ │ │ └── migration.sql │ │ │ ├── 20260225000000_add_label_added_source/ │ │ │ │ └── migration.sql │ │ │ ├── 20260228000000_add_messaging_provider_values/ │ │ │ │ └── migration.sql │ │ │ ├── 20260228000000_draft_confidence_enum/ │ │ │ │ └── migration.sql │ │ │ ├── 20260302120000_add_stripe_ai_overage_checkpoint/ │ │ │ │ └── migration.sql │ │ │ ├── 20260311120000_account_scoped_api_keys/ │ │ │ │ └── migration.sql │ │ │ ├── 20260311130000_add_attachment_sources/ │ │ │ │ └── migration.sql │ │ │ ├── 20260315000000_add_action_static_attachments/ │ │ │ │ └── migration.sql │ │ │ ├── 20260316000000_add_draft_generation_metadata/ │ │ │ │ └── migration.sql │ │ │ ├── 20260316134000_hidden_ai_draft_links/ │ │ │ │ └── migration.sql │ │ │ ├── 20260317113949_add_reply_memories/ │ │ │ │ └── migration.sql │ │ │ ├── 20260318121000_add_executed_action_draft_context_metadata/ │ │ │ │ └── migration.sql │ │ │ └── migration_lock.toml │ │ └── schema.prisma │ ├── prisma.config.ts │ ├── providers/ │ │ ├── AppProviders.tsx │ │ ├── ChatProvider.tsx │ │ ├── ComposeModalProvider.tsx │ │ ├── EmailAccountProvider.tsx │ │ ├── EmailProvider.tsx │ │ ├── GlobalProviders.tsx │ │ ├── GmailProvider.tsx │ │ ├── PostHogProvider.tsx │ │ ├── SWRProvider.tsx │ │ └── StatLoaderProvider.tsx │ ├── public/ │ │ └── .well-known/ │ │ └── microsoft-identity-association.json │ ├── sanity.cli.ts │ ├── sanity.config.ts │ ├── scripts/ │ │ ├── addUsersToResend.ts │ │ ├── check-enum-imports.js │ │ ├── generate-llm-pricing.ts │ │ ├── listIncompleteStripeSubscriptions.ts │ │ ├── listRedisUsage.ts │ │ ├── listSubQuantitiesLemon.ts │ │ ├── setup-telegram-bot.ts │ │ └── vercel-ignore-build.sh │ ├── store/ │ │ ├── QueueInitializer.tsx │ │ ├── ai-categorize-sender-queue.ts │ │ ├── ai-queue.ts │ │ ├── archive-queue.ts │ │ ├── archive-sender-queue.ts │ │ ├── email.ts │ │ ├── index.ts │ │ ├── mark-read-sender-queue.ts │ │ └── sender-queue.ts │ ├── styles/ │ │ ├── globals.css │ │ └── scrollbar.css │ ├── tailwind.config.js │ ├── tsconfig.json │ ├── types/ │ │ └── gmail-api-parse-message.d.ts │ ├── utils/ │ │ ├── __mocks__/ │ │ │ ├── email-provider.ts │ │ │ └── prisma.ts │ │ ├── account-linking.ts │ │ ├── account.ts │ │ ├── action-display.tsx │ │ ├── action-item.test.ts │ │ ├── action-item.ts │ │ ├── action-sort.test.ts │ │ ├── action-sort.ts │ │ ├── actions/ │ │ │ ├── __tests__/ │ │ │ │ ├── copy-rules-action.test.ts │ │ │ │ ├── invitation-actions.test.ts │ │ │ │ └── organization-actions.test.ts │ │ │ ├── admin.ts │ │ │ ├── admin.validation.ts │ │ │ ├── ai-rule.ts │ │ │ ├── ai-rule.validation.ts │ │ │ ├── announcements.ts │ │ │ ├── announcements.validation.ts │ │ │ ├── api-key.ts │ │ │ ├── api-key.validation.ts │ │ │ ├── assess.ts │ │ │ ├── assistant-chat.test.ts │ │ │ ├── assistant-chat.ts │ │ │ ├── assistant-chat.validation.test.ts │ │ │ ├── assistant-chat.validation.ts │ │ │ ├── attachment-sources.ts │ │ │ ├── attachment-sources.validation.ts │ │ │ ├── automation-jobs.helpers.ts │ │ │ ├── automation-jobs.ts │ │ │ ├── automation-jobs.validation.ts │ │ │ ├── calendar.ts │ │ │ ├── calendar.validation.ts │ │ │ ├── categorize.ts │ │ │ ├── categorize.validation.ts │ │ │ ├── clean.ts │ │ │ ├── clean.validation.ts │ │ │ ├── client.ts │ │ │ ├── cold-email.ts │ │ │ ├── cold-email.validation.ts │ │ │ ├── drive.ts │ │ │ ├── drive.validation.ts │ │ │ ├── email-account-cookie.ts │ │ │ ├── email-account.ts │ │ │ ├── email-account.validation.ts │ │ │ ├── error-handling.test.ts │ │ │ ├── error-handling.ts │ │ │ ├── error-messages.ts │ │ │ ├── follow-up-reminders.test.ts │ │ │ ├── follow-up-reminders.ts │ │ │ ├── follow-up-reminders.validation.ts │ │ │ ├── generate-reply.test.ts │ │ │ ├── generate-reply.ts │ │ │ ├── generate-reply.validation.ts │ │ │ ├── group.ts │ │ │ ├── group.validation.ts │ │ │ ├── hints.ts │ │ │ ├── hints.validation.ts │ │ │ ├── knowledge.ts │ │ │ ├── knowledge.validation.ts │ │ │ ├── mail-bulk-action.ts │ │ │ ├── mail.ts │ │ │ ├── mcp.ts │ │ │ ├── mcp.validation.ts │ │ │ ├── meeting-briefs.ts │ │ │ ├── meeting-briefs.validation.ts │ │ │ ├── messaging-channels.test.ts │ │ │ ├── messaging-channels.ts │ │ │ ├── messaging-channels.validation.ts │ │ │ ├── onboarding.ts │ │ │ ├── onboarding.validation.ts │ │ │ ├── organization.test.ts │ │ │ ├── organization.ts │ │ │ ├── organization.validation.ts │ │ │ ├── permissions.ts │ │ │ ├── premium.ts │ │ │ ├── premium.validation.ts │ │ │ ├── reply-tracking.ts │ │ │ ├── report.ts │ │ │ ├── rule.ts │ │ │ ├── rule.validation.test.ts │ │ │ ├── rule.validation.ts │ │ │ ├── safe-action.ts │ │ │ ├── settings.ts │ │ │ ├── settings.validation.test.ts │ │ │ ├── settings.validation.ts │ │ │ ├── sso.ts │ │ │ ├── sso.validation.ts │ │ │ ├── stats.ts │ │ │ ├── unsubscriber.ts │ │ │ ├── unsubscriber.validation.ts │ │ │ ├── user.ts │ │ │ ├── user.validation.ts │ │ │ ├── webhook.ts │ │ │ └── whitelist.ts │ │ ├── admin.test.ts │ │ ├── admin.ts │ │ ├── ai/ │ │ │ ├── actions.test.ts │ │ │ ├── actions.ts │ │ │ ├── assistant/ │ │ │ │ ├── chat-calendar-tools.ts │ │ │ │ ├── chat-inbox-tools.test.ts │ │ │ │ ├── chat-inbox-tools.ts │ │ │ │ ├── chat-label-tools.test.ts │ │ │ │ ├── chat-label-tools.ts │ │ │ │ ├── chat-memory-tools.ts │ │ │ │ ├── chat-rule-tools.ts │ │ │ │ ├── chat-settings-tools.test.ts │ │ │ │ ├── chat-settings-tools.ts │ │ │ │ ├── chat.ts │ │ │ │ ├── compact.test.ts │ │ │ │ ├── compact.ts │ │ │ │ ├── get-inbox-stats-for-chat-context.ts │ │ │ │ ├── get-recent-chat-memories.ts │ │ │ │ ├── inline-email-actions.test.ts │ │ │ │ ├── inline-email-actions.ts │ │ │ │ ├── manage-inbox-actions.test.ts │ │ │ │ └── manage-inbox-actions.ts │ │ │ ├── automation-jobs/ │ │ │ │ └── generate-check-in-message.ts │ │ │ ├── calendar/ │ │ │ │ └── availability.ts │ │ │ ├── categorize-sender/ │ │ │ │ ├── ai-categorize-senders.ts │ │ │ │ ├── ai-categorize-single-sender.ts │ │ │ │ └── format-categories.ts │ │ │ ├── choose-rule/ │ │ │ │ ├── NOTES.md │ │ │ │ ├── ai-choose-args.test.ts │ │ │ │ ├── ai-choose-args.ts │ │ │ │ ├── ai-choose-rule.ts │ │ │ │ ├── ai-detect-recurring-pattern.ts │ │ │ │ ├── bulk-process-emails.ts │ │ │ │ ├── choose-args.test.ts │ │ │ │ ├── choose-args.ts │ │ │ │ ├── draft-management.test.ts │ │ │ │ ├── draft-management.ts │ │ │ │ ├── execute.test.ts │ │ │ │ ├── execute.ts │ │ │ │ ├── match-rules.test.ts │ │ │ │ ├── match-rules.ts │ │ │ │ ├── run-rules.test.ts │ │ │ │ ├── run-rules.ts │ │ │ │ └── types.ts │ │ │ ├── clean/ │ │ │ │ ├── ai-clean-select-labels.ts │ │ │ │ └── ai-clean.ts │ │ │ ├── digest/ │ │ │ │ └── summarize-email-for-digest.ts │ │ │ ├── document-filing/ │ │ │ │ ├── analyze-document.ts │ │ │ │ └── parse-filing-reply.ts │ │ │ ├── draft-cleanup.ts │ │ │ ├── group/ │ │ │ │ ├── create-group.ts │ │ │ │ ├── find-newsletters.test.ts │ │ │ │ ├── find-newsletters.ts │ │ │ │ ├── find-receipts.test.ts │ │ │ │ └── find-receipts.ts │ │ │ ├── helpers.test.ts │ │ │ ├── helpers.ts │ │ │ ├── knowledge/ │ │ │ │ ├── extract-from-email-history.ts │ │ │ │ ├── extract.ts │ │ │ │ ├── persona.ts │ │ │ │ └── writing-style.ts │ │ │ ├── mcp/ │ │ │ │ ├── mcp-agent.ts │ │ │ │ └── mcp-tools.ts │ │ │ ├── meeting-briefs/ │ │ │ │ ├── generate-briefing.test.ts │ │ │ │ └── generate-briefing.ts │ │ │ ├── reply/ │ │ │ │ ├── check-if-needs-reply.ts │ │ │ │ ├── determine-thread-status.test.ts │ │ │ │ ├── determine-thread-status.ts │ │ │ │ ├── draft-attribution.ts │ │ │ │ ├── draft-confidence.test.ts │ │ │ │ ├── draft-confidence.ts │ │ │ │ ├── draft-context-metadata.ts │ │ │ │ ├── draft-follow-up.ts │ │ │ │ ├── draft-reply.formatting.test.ts │ │ │ │ ├── draft-reply.ts │ │ │ │ ├── generate-nudge.ts │ │ │ │ ├── reply-context-collector.ts │ │ │ │ ├── reply-memory.test.ts │ │ │ │ └── reply-memory.ts │ │ │ ├── report/ │ │ │ │ ├── analyze-email-behavior.ts │ │ │ │ ├── analyze-label-optimization.ts │ │ │ │ ├── build-user-persona.ts │ │ │ │ ├── fetch.ts │ │ │ │ ├── generate-actionable-recommendations.ts │ │ │ │ ├── generate-executive-summary.ts │ │ │ │ ├── response-patterns.ts │ │ │ │ └── summarize-emails.ts │ │ │ ├── rule/ │ │ │ │ ├── create-rule-schema.test.ts │ │ │ │ ├── create-rule-schema.ts │ │ │ │ ├── diff-rules.ts │ │ │ │ ├── find-existing-rules.ts │ │ │ │ ├── prompt-to-rules.ts │ │ │ │ └── rule-condition-descriptions.ts │ │ │ ├── security.ts │ │ │ ├── snippets/ │ │ │ │ └── find-snippets.ts │ │ │ └── types.ts │ │ ├── announcements.tsx │ │ ├── api-auth.test.ts │ │ ├── api-auth.ts │ │ ├── api-key-scopes.ts │ │ ├── api-key.ts │ │ ├── api-middleware.test.ts │ │ ├── api-middleware.ts │ │ ├── assess.ts │ │ ├── async.ts │ │ ├── attachments/ │ │ │ ├── draft-attachments.ts │ │ │ ├── rule.test.ts │ │ │ ├── rule.ts │ │ │ └── source-schema.ts │ │ ├── auth/ │ │ │ ├── cleanup-invalid-tokens.test.ts │ │ │ ├── cleanup-invalid-tokens.ts │ │ │ ├── local-bypass-config.ts │ │ │ ├── local-bypass-email-account.ts │ │ │ └── local-bypass-plugin.ts │ │ ├── auth-client.ts │ │ ├── auth-cookies.ts │ │ ├── auth.test.ts │ │ ├── auth.ts │ │ ├── auto-draft.ts │ │ ├── automation-jobs/ │ │ │ ├── cron.test.ts │ │ │ ├── cron.ts │ │ │ ├── defaults.ts │ │ │ ├── describe.ts │ │ │ ├── execute.ts │ │ │ ├── message.test.ts │ │ │ ├── message.ts │ │ │ ├── messaging-channel.ts │ │ │ ├── messaging.test.ts │ │ │ ├── messaging.ts │ │ │ ├── slack.ts │ │ │ ├── stale.test.ts │ │ │ └── stale.ts │ │ ├── braintrust.ts │ │ ├── branding.ts │ │ ├── brands.ts │ │ ├── bulk-archive/ │ │ │ ├── get-archive-candidates.test.ts │ │ │ └── get-archive-candidates.ts │ │ ├── calendar/ │ │ │ ├── availability-types.ts │ │ │ ├── client.ts │ │ │ ├── constants.ts │ │ │ ├── event-provider.ts │ │ │ ├── event-types.ts │ │ │ ├── handle-calendar-callback.ts │ │ │ ├── oauth-callback-helpers.test.ts │ │ │ ├── oauth-callback-helpers.ts │ │ │ ├── oauth-types.ts │ │ │ ├── providers/ │ │ │ │ ├── google-availability.ts │ │ │ │ ├── google-events.ts │ │ │ │ ├── google.ts │ │ │ │ ├── microsoft-availability.test.ts │ │ │ │ ├── microsoft-availability.ts │ │ │ │ ├── microsoft-events.ts │ │ │ │ └── microsoft.ts │ │ │ ├── timezone-helpers.ts │ │ │ ├── unified-availability.test.ts │ │ │ └── unified-availability.ts │ │ ├── categories.ts │ │ ├── categorize/ │ │ │ └── senders/ │ │ │ ├── categorize.test.ts │ │ │ └── categorize.ts │ │ ├── category-config.tsx │ │ ├── category.server.ts │ │ ├── celebration.ts │ │ ├── cold-email/ │ │ │ ├── cold-email-blocker-enabled.ts │ │ │ ├── cold-email-rule.ts │ │ │ ├── is-cold-email.test.ts │ │ │ ├── is-cold-email.ts │ │ │ ├── prompt.ts │ │ │ └── send-notification.ts │ │ ├── colors.ts │ │ ├── condition.test.ts │ │ ├── condition.ts │ │ ├── config.ts │ │ ├── constants/ │ │ │ └── user-roles.ts │ │ ├── cookies.server.ts │ │ ├── cookies.ts │ │ ├── cron.test.ts │ │ ├── cron.ts │ │ ├── date.test.ts │ │ ├── date.ts │ │ ├── delayed-actions.ts │ │ ├── digest/ │ │ │ ├── digest-enabled.ts │ │ │ ├── index.ts │ │ │ ├── schedule.test.ts │ │ │ ├── schedule.ts │ │ │ ├── summary-limit.test.ts │ │ │ └── summary-limit.ts │ │ ├── drive/ │ │ │ ├── client.ts │ │ │ ├── constants.ts │ │ │ ├── document-extraction.test.ts │ │ │ ├── document-extraction.ts │ │ │ ├── filing-engine.ts │ │ │ ├── filing-notifications.ts │ │ │ ├── filing-slack-notifications.ts │ │ │ ├── folder-utils.test.ts │ │ │ ├── folder-utils.ts │ │ │ ├── handle-drive-callback.ts │ │ │ ├── handle-filing-reply.ts │ │ │ ├── provider.ts │ │ │ ├── providers/ │ │ │ │ ├── google-token.ts │ │ │ │ ├── google.ts │ │ │ │ ├── microsoft-token.ts │ │ │ │ ├── microsoft.ts │ │ │ │ └── token-helpers.ts │ │ │ ├── scopes.ts │ │ │ ├── source-items.test.ts │ │ │ ├── source-items.ts │ │ │ ├── types.ts │ │ │ ├── url.test.ts │ │ │ └── url.ts │ │ ├── dub.ts │ │ ├── email/ │ │ │ ├── bulk-action-tracking.ts │ │ │ ├── get-formatted-sender-address.ts │ │ │ ├── google.test.ts │ │ │ ├── google.ts │ │ │ ├── latest-message.test.ts │ │ │ ├── latest-message.ts │ │ │ ├── local-bypass-provider.ts │ │ │ ├── message-timestamp.test.ts │ │ │ ├── message-timestamp.ts │ │ │ ├── microsoft.test.ts │ │ │ ├── microsoft.ts │ │ │ ├── provider-types.ts │ │ │ ├── provider.ts │ │ │ ├── quoted-plain-text.test.ts │ │ │ ├── quoted-plain-text.ts │ │ │ ├── rate-limit-mode-error.ts │ │ │ ├── rate-limit.test.ts │ │ │ ├── rate-limit.ts │ │ │ ├── render-safe-links.test.ts │ │ │ ├── render-safe-links.ts │ │ │ ├── reply-all.test.ts │ │ │ ├── reply-all.ts │ │ │ ├── signature-extraction.test.ts │ │ │ ├── signature-extraction.ts │ │ │ ├── subject.ts │ │ │ ├── threading.test.ts │ │ │ ├── threading.ts │ │ │ ├── types.ts │ │ │ └── watch-manager.ts │ │ ├── email-account.ts │ │ ├── email.test.ts │ │ ├── email.ts │ │ ├── encryption.test.ts │ │ ├── encryption.ts │ │ ├── error-messages/ │ │ │ └── index.ts │ │ ├── error.server.ts │ │ ├── error.test.ts │ │ ├── error.ts │ │ ├── fb.ts │ │ ├── fetch.ts │ │ ├── filebot/ │ │ │ ├── is-filebot-email.test.ts │ │ │ └── is-filebot-email.ts │ │ ├── filter-ignored-senders.test.ts │ │ ├── filter-ignored-senders.ts │ │ ├── follow-up/ │ │ │ ├── cleanup.test.ts │ │ │ ├── cleanup.ts │ │ │ ├── generate-draft.test.ts │ │ │ ├── generate-draft.ts │ │ │ ├── labels.test.ts │ │ │ └── labels.ts │ │ ├── get-email-from-message.ts │ │ ├── gmail/ │ │ │ ├── attachment.ts │ │ │ ├── batch.ts │ │ │ ├── client.ts │ │ │ ├── constants.ts │ │ │ ├── contact.ts │ │ │ ├── decode.ts │ │ │ ├── draft.test.ts │ │ │ ├── draft.ts │ │ │ ├── filter.ts │ │ │ ├── forward.test.ts │ │ │ ├── forward.ts │ │ │ ├── history.ts │ │ │ ├── label-validation.test.ts │ │ │ ├── label-validation.ts │ │ │ ├── label.test.ts │ │ │ ├── label.ts │ │ │ ├── mail.test.ts │ │ │ ├── mail.ts │ │ │ ├── message.test.ts │ │ │ ├── message.ts │ │ │ ├── permissions.ts │ │ │ ├── reply.test.ts │ │ │ ├── reply.ts │ │ │ ├── retry.test.ts │ │ │ ├── retry.ts │ │ │ ├── scopes.ts │ │ │ ├── settings.ts │ │ │ ├── signature-settings.ts │ │ │ ├── snippet.test.ts │ │ │ ├── snippet.ts │ │ │ ├── spam.ts │ │ │ ├── thread.ts │ │ │ ├── trash.ts │ │ │ └── watch.ts │ │ ├── group/ │ │ │ ├── find-matching-group.test.ts │ │ │ ├── find-matching-group.ts │ │ │ └── group-item.ts │ │ ├── gtm.ts │ │ ├── hash.ts │ │ ├── index.ts │ │ ├── internal-api.ts │ │ ├── label/ │ │ │ ├── find-label-by-name.test.ts │ │ │ ├── find-label-by-name.ts │ │ │ ├── normalize-label-name.test.ts │ │ │ ├── normalize-label-name.ts │ │ │ ├── resolve-label.test.ts │ │ │ └── resolve-label.ts │ │ ├── label.server.ts │ │ ├── label.ts │ │ ├── llms/ │ │ │ ├── config.ts │ │ │ ├── fallback.test.ts │ │ │ ├── index.test.ts │ │ │ ├── index.ts │ │ │ ├── model-id.ts │ │ │ ├── model-usage-guard.test.ts │ │ │ ├── model-usage-guard.ts │ │ │ ├── model.test.ts │ │ │ ├── model.ts │ │ │ ├── pricing.generated.ts │ │ │ ├── retry.test.ts │ │ │ ├── retry.ts │ │ │ ├── supported-model-pricing.ts │ │ │ ├── types.ts │ │ │ ├── unsupported-tools.test.ts │ │ │ └── unsupported-tools.ts │ │ ├── log-error-with-dedupe.test.ts │ │ ├── log-error-with-dedupe.ts │ │ ├── logger-client.ts │ │ ├── logger-flush.ts │ │ ├── logger.test.ts │ │ ├── logger.ts │ │ ├── mail.test.ts │ │ ├── mail.ts │ │ ├── mcp/ │ │ │ ├── integrations.ts │ │ │ ├── list-tools.ts │ │ │ ├── oauth.ts │ │ │ ├── sync-tools.test.ts │ │ │ ├── sync-tools.ts │ │ │ └── transport.ts │ │ ├── meeting-briefs/ │ │ │ ├── fetch-upcoming-events.test.ts │ │ │ ├── fetch-upcoming-events.ts │ │ │ ├── gather-context.ts │ │ │ ├── process.ts │ │ │ ├── recipient-context.test.ts │ │ │ ├── recipient-context.ts │ │ │ └── send-briefing.ts │ │ ├── mention.test.ts │ │ ├── mention.ts │ │ ├── messaging/ │ │ │ ├── chat-sdk/ │ │ │ │ ├── bot.test.ts │ │ │ │ ├── bot.ts │ │ │ │ ├── link-code-consume.test.ts │ │ │ │ ├── link-code-consume.ts │ │ │ │ ├── link-code.test.ts │ │ │ │ ├── link-code.ts │ │ │ │ └── webhook-route.ts │ │ │ ├── pending-email-preview.test.ts │ │ │ ├── pending-email-preview.ts │ │ │ ├── platforms.ts │ │ │ ├── prompt-commands.test.ts │ │ │ ├── prompt-commands.ts │ │ │ └── providers/ │ │ │ ├── slack/ │ │ │ │ ├── channels.ts │ │ │ │ ├── client.ts │ │ │ │ ├── constants.ts │ │ │ │ ├── format.test.ts │ │ │ │ ├── format.ts │ │ │ │ ├── handle-slack-callback.ts │ │ │ │ ├── messages/ │ │ │ │ │ ├── document-filing.ts │ │ │ │ │ └── meeting-briefing.ts │ │ │ │ ├── reactions.ts │ │ │ │ ├── send-onboarding-direct-message.ts │ │ │ │ ├── send.ts │ │ │ │ ├── slash-commands.ts │ │ │ │ ├── users.ts │ │ │ │ └── verify-signature.ts │ │ │ └── telegram/ │ │ │ ├── api.ts │ │ │ ├── bot-config.test.ts │ │ │ ├── bot-config.ts │ │ │ ├── format.test.ts │ │ │ └── format.ts │ │ ├── middleware.test.ts │ │ ├── middleware.ts │ │ ├── network/ │ │ │ ├── safe-http-url.test.ts │ │ │ └── safe-http-url.ts │ │ ├── oauth/ │ │ │ ├── account-linking.test.ts │ │ │ ├── account-linking.ts │ │ │ ├── callback-validation.test.ts │ │ │ ├── callback-validation.ts │ │ │ ├── error-handler.ts │ │ │ ├── microsoft-oauth.test.ts │ │ │ ├── microsoft-oauth.ts │ │ │ ├── provider-config.test.ts │ │ │ ├── provider-config.ts │ │ │ ├── redirect.ts │ │ │ ├── state.test.ts │ │ │ ├── state.ts │ │ │ ├── verify.test.ts │ │ │ └── verify.ts │ │ ├── organizations/ │ │ │ ├── access.ts │ │ │ ├── invitations.ts │ │ │ └── roles.ts │ │ ├── outlook/ │ │ │ ├── attachment.ts │ │ │ ├── batch.ts │ │ │ ├── calendar-client.ts │ │ │ ├── client.ts │ │ │ ├── constants.ts │ │ │ ├── draft.ts │ │ │ ├── errors.test.ts │ │ │ ├── errors.ts │ │ │ ├── filter.ts │ │ │ ├── folders.test.ts │ │ │ ├── folders.ts │ │ │ ├── label-validation.test.ts │ │ │ ├── label-validation.ts │ │ │ ├── label.test.ts │ │ │ ├── label.ts │ │ │ ├── mail.test.ts │ │ │ ├── mail.ts │ │ │ ├── message.test.ts │ │ │ ├── message.ts │ │ │ ├── odata-escape.test.ts │ │ │ ├── odata-escape.ts │ │ │ ├── reply.test.ts │ │ │ ├── reply.ts │ │ │ ├── retry.test.ts │ │ │ ├── retry.ts │ │ │ ├── scopes.ts │ │ │ ├── spam.ts │ │ │ ├── subscription-history.test.ts │ │ │ ├── subscription-history.ts │ │ │ ├── subscription-manager.test.ts │ │ │ ├── subscription-manager.ts │ │ │ ├── thread-helpers.test.ts │ │ │ ├── thread-helpers.ts │ │ │ ├── thread.ts │ │ │ ├── trash.ts │ │ │ └── watch.ts │ │ ├── parse/ │ │ │ ├── calender-event.test.ts │ │ │ ├── calender-event.ts │ │ │ ├── cta.test.ts │ │ │ ├── cta.ts │ │ │ ├── extract-reply.client.test.ts │ │ │ ├── extract-reply.client.ts │ │ │ ├── parseHtml.client.ts │ │ │ ├── parseHtml.server.ts │ │ │ ├── unsubscribe.test.ts │ │ │ └── unsubscribe.ts │ │ ├── path.test.ts │ │ ├── path.ts │ │ ├── posthog.ts │ │ ├── premium/ │ │ │ ├── create-premium.ts │ │ │ ├── index.ts │ │ │ └── server.ts │ │ ├── prisma-extensions.ts │ │ ├── prisma-helpers.ts │ │ ├── prisma-retry.ts │ │ ├── prisma.ts │ │ ├── qstash.test.ts │ │ ├── qstash.ts │ │ ├── queue/ │ │ │ ├── ai-queue.ts │ │ │ ├── create-forwarding-queue-handler.ts │ │ │ ├── dispatch.ts │ │ │ ├── email-action-queue.ts │ │ │ ├── email-actions.ts │ │ │ ├── forward-to-internal-api.ts │ │ │ ├── retry.ts │ │ │ └── vercel.ts │ │ ├── redirect.test.ts │ │ ├── redirect.ts │ │ ├── redis/ │ │ │ ├── account-validation.ts │ │ │ ├── categorization-progress.ts │ │ │ ├── category.ts │ │ │ ├── clean.ts │ │ │ ├── clean.types.ts │ │ │ ├── email-provider-rate-limit.ts │ │ │ ├── index.ts │ │ │ ├── message-processing.ts │ │ │ ├── messaging-link-code.test.ts │ │ │ ├── messaging-link-code.ts │ │ │ ├── oauth-code.ts │ │ │ ├── outbound-thread-status.test.ts │ │ │ ├── outbound-thread-status.ts │ │ │ ├── reply-tracker-analyzing.ts │ │ │ ├── reply.test.ts │ │ │ ├── reply.ts │ │ │ ├── research-cache.ts │ │ │ ├── subscriber.ts │ │ │ ├── summary.ts │ │ │ ├── usage.test.ts │ │ │ └── usage.ts │ │ ├── referral/ │ │ │ ├── referral-code.test.ts │ │ │ ├── referral-code.ts │ │ │ ├── referral-link.ts │ │ │ └── referral-tracking.ts │ │ ├── reply-tracker/ │ │ │ ├── check-sender-reply-history.ts │ │ │ ├── conversation-status-config.ts │ │ │ ├── draft-tracking.test.ts │ │ │ ├── draft-tracking.ts │ │ │ ├── error-logging.ts │ │ │ ├── generate-draft.test.ts │ │ │ ├── generate-draft.ts │ │ │ ├── handle-conversation-status.ts │ │ │ ├── handle-outbound.ts │ │ │ ├── label-helpers.test.ts │ │ │ ├── label-helpers.ts │ │ │ ├── outbound.test.ts │ │ │ └── outbound.ts │ │ ├── request-timing.ts │ │ ├── retry/ │ │ │ ├── get-retry-after-header.test.ts │ │ │ ├── get-retry-after-header.ts │ │ │ └── is-fetch-error.ts │ │ ├── risk.test.ts │ │ ├── risk.ts │ │ ├── rule/ │ │ │ ├── check-sender-rule-history.test.ts │ │ │ ├── check-sender-rule-history.ts │ │ │ ├── consts.ts │ │ │ ├── email-from-pattern.test.ts │ │ │ ├── email-from-pattern.ts │ │ │ ├── learned-patterns.test.ts │ │ │ ├── learned-patterns.ts │ │ │ ├── mapRulesToExtensionTabs.test.ts │ │ │ ├── mapRulesToExtensionTabs.ts │ │ │ ├── recipient-validation.ts │ │ │ ├── record-label-removal-learning.test.ts │ │ │ ├── record-label-removal-learning.ts │ │ │ ├── rule-history.ts │ │ │ ├── rule-to-text.ts │ │ │ ├── rule.test.ts │ │ │ ├── rule.ts │ │ │ ├── sort.ts │ │ │ ├── static-from-risk.test.ts │ │ │ ├── static-from-risk.ts │ │ │ └── types.ts │ │ ├── schedule.test.ts │ │ ├── schedule.ts │ │ ├── scheduled-actions/ │ │ │ ├── executor.test.ts │ │ │ ├── executor.ts │ │ │ ├── scheduler.test.ts │ │ │ └── scheduler.ts │ │ ├── scripts/ │ │ │ └── lemon.tsx │ │ ├── sender.ts │ │ ├── senders/ │ │ │ ├── record.test.ts │ │ │ ├── record.ts │ │ │ ├── unsubscribe.test.ts │ │ │ └── unsubscribe.ts │ │ ├── similarity-score.test.ts │ │ ├── similarity-score.ts │ │ ├── size.ts │ │ ├── sleep.ts │ │ ├── sso/ │ │ │ ├── extract-sso-provider-config-from-xml.test.ts │ │ │ ├── extract-sso-provider-config-from-xml.ts │ │ │ └── validate-idp-metadata.ts │ │ ├── stats.ts │ │ ├── string.test.ts │ │ ├── string.ts │ │ ├── stringify-email.test.ts │ │ ├── stringify-email.ts │ │ ├── swr.ts │ │ ├── template.test.ts │ │ ├── template.ts │ │ ├── terminology.ts │ │ ├── text.test.ts │ │ ├── text.ts │ │ ├── types/ │ │ │ └── mail.ts │ │ ├── types.ts │ │ ├── unsubscribe.ts │ │ ├── upstash/ │ │ │ ├── categorize-senders.ts │ │ │ ├── index.test.ts │ │ │ └── index.ts │ │ ├── url.test.ts │ │ ├── url.ts │ │ ├── usage.test.ts │ │ ├── usage.ts │ │ ├── user/ │ │ │ ├── delete.ts │ │ │ ├── get.ts │ │ │ ├── merge-account.test.ts │ │ │ ├── merge-account.ts │ │ │ ├── merge-premium.test.ts │ │ │ ├── merge-premium.ts │ │ │ ├── orphaned-account.test.ts │ │ │ ├── orphaned-account.ts │ │ │ └── validate.ts │ │ ├── user.ts │ │ ├── webhook/ │ │ │ ├── error-handler.test.ts │ │ │ ├── error-handler.ts │ │ │ ├── process-history-item.test.ts │ │ │ ├── process-history-item.ts │ │ │ ├── validate-webhook-account.test.ts │ │ │ └── validate-webhook-account.ts │ │ ├── webhook-validation.test.ts │ │ ├── webhook-validation.ts │ │ ├── webhook.ts │ │ └── zod.ts │ ├── vercel.json │ └── vitest.config.mts ├── biome.json ├── clawhub/ │ ├── README.md │ └── inbox-zero-api/ │ ├── SKILL.md │ ├── agents/ │ │ └── openai.yaml │ └── references/ │ └── cli-reference.md ├── clone-marketing.sh ├── conductor.json ├── copilot/ │ ├── environments/ │ │ └── addons/ │ │ ├── addons.parameters.yml │ │ ├── elasticache-redis.yml │ │ └── rds.yml │ ├── inbox-zero-ecs/ │ │ └── manifest.yml │ └── templates/ │ └── webhook-gateway.yml ├── docker/ │ ├── Dockerfile.local │ ├── Dockerfile.prod │ ├── Dockerfile.web │ ├── docker-compose.local.yml │ └── scripts/ │ ├── prisma.config.ts │ ├── publish-ghcr.sh │ ├── replace-placeholder.sh │ ├── run-local.sh │ └── start.sh ├── docker-compose.dev.yml ├── docker-compose.yml ├── docs/ │ ├── .gitignore │ ├── api-reference/ │ │ ├── cli.mdx │ │ ├── endpoint/ │ │ │ ├── delete-rules-id.mdx │ │ │ ├── get-group-emails.mdx │ │ │ ├── get-rules-id.mdx │ │ │ ├── get-rules.mdx │ │ │ ├── get-statsby-period.mdx │ │ │ ├── get-statsresponse-time.mdx │ │ │ ├── post-rules.mdx │ │ │ └── put-rules-id.mdx │ │ └── introduction.mdx │ ├── changelog-entries/ │ │ ├── 2026-03-03.mdx │ │ ├── 2026-03-05.mdx │ │ ├── 2026-03-10.mdx │ │ ├── 2026-03-11.mdx │ │ ├── 2026-03-12.mdx │ │ ├── 2026-03-13.mdx │ │ ├── 2026-03-14.mdx │ │ ├── 2026-03-15.mdx │ │ ├── 2026-03-17.mdx │ │ └── 2026-03-18.mdx │ ├── changelog.mdx │ ├── contributing.mdx │ ├── docs.json │ ├── essentials/ │ │ ├── ai-chat.mdx │ │ ├── api-keys.mdx │ │ ├── auto-file-attachments.mdx │ │ ├── bulk-archiver.mdx │ │ ├── bulk-email-unsubscriber.mdx │ │ ├── calendar-integration.mdx │ │ ├── call-webhook.mdx │ │ ├── cold-email-blocker.mdx │ │ ├── delayed-actions.mdx │ │ ├── email-ai-personal-assistant.mdx │ │ ├── email-analytics.mdx │ │ ├── email-digest.mdx │ │ ├── faq.mdx │ │ ├── inbox-zero-tabs-extension.mdx │ │ ├── meeting-briefs.mdx │ │ ├── reply-zero.mdx │ │ ├── slack-integration.mdx │ │ └── telegram-integration.mdx │ ├── hosting/ │ │ ├── aws-copilot.mdx │ │ ├── aws.mdx │ │ ├── ec2-deployment.mdx │ │ ├── environment-variables.mdx │ │ ├── google-oauth.mdx │ │ ├── google-pubsub.mdx │ │ ├── llm-setup.mdx │ │ ├── microsoft-oauth.mdx │ │ ├── quick-start.mdx │ │ ├── self-hosting.mdx │ │ ├── setup-guides.mdx │ │ ├── terraform.mdx │ │ ├── troubleshooting.mdx │ │ └── vercel.mdx │ ├── introduction.mdx │ ├── openapi.json │ ├── scripts/ │ │ └── build-changelog.mjs │ ├── slack/ │ │ ├── manifest.yaml │ │ └── setup.mdx │ ├── teams/ │ │ └── setup.mdx │ └── telegram/ │ └── setup.mdx ├── package.json ├── packages/ │ ├── api/ │ │ ├── .gitignore │ │ ├── README.md │ │ ├── package.json │ │ ├── src/ │ │ │ ├── api-types.ts │ │ │ ├── client.test.ts │ │ │ ├── client.ts │ │ │ ├── config.test.ts │ │ │ ├── config.ts │ │ │ ├── io.test.ts │ │ │ ├── io.ts │ │ │ ├── main.ts │ │ │ └── output.ts │ │ ├── tsconfig.json │ │ └── vitest.config.ts │ ├── cli/ │ │ ├── .gitignore │ │ ├── README.md │ │ ├── package.json │ │ ├── src/ │ │ │ ├── aws-setup/ │ │ │ │ ├── aws-cli.ts │ │ │ │ ├── google-pubsub.ts │ │ │ │ └── ssm-urls.ts │ │ │ ├── main.ts │ │ │ ├── setup-aws.ts │ │ │ ├── setup-google.ts │ │ │ ├── setup-ports.ts │ │ │ ├── setup-terraform.ts │ │ │ ├── utils.test.ts │ │ │ └── utils.ts │ │ ├── tsconfig.json │ │ └── vitest.config.ts │ ├── loops/ │ │ ├── README.md │ │ ├── package.json │ │ ├── src/ │ │ │ ├── index.ts │ │ │ └── loops.ts │ │ └── tsconfig.json │ ├── resend/ │ │ ├── README.md │ │ ├── emails/ │ │ │ ├── action-required.tsx │ │ │ ├── cold-email-notification.tsx │ │ │ ├── digest.tsx │ │ │ ├── invitation.tsx │ │ │ ├── meeting-briefing.tsx │ │ │ ├── reconnection.tsx │ │ │ └── summary.tsx │ │ ├── package.json │ │ ├── src/ │ │ │ ├── client.ts │ │ │ ├── contacts.ts │ │ │ ├── index.ts │ │ │ └── send.tsx │ │ └── tsconfig.json │ ├── tinybird/ │ │ ├── README.md │ │ ├── datasources/ │ │ │ ├── email.datasource │ │ │ ├── email_action.datasource │ │ │ └── last_and_oldest_emails_mv.datasource │ │ ├── package.json │ │ ├── pipes/ │ │ │ └── get_email_actions_by_period.pipe │ │ ├── src/ │ │ │ ├── client.ts │ │ │ ├── delete.ts │ │ │ ├── index.ts │ │ │ ├── publish.ts │ │ │ └── query.ts │ │ └── tsconfig.json │ ├── tinybird-ai-analytics/ │ │ ├── README.md │ │ ├── datasources/ │ │ │ └── aiCall.datasource │ │ ├── package.json │ │ ├── pipes/ │ │ │ ├── aiCalls.pipe │ │ │ └── ai_generations_by_accounts_and_period.pipe │ │ ├── src/ │ │ │ ├── client.ts │ │ │ ├── delete.ts │ │ │ ├── index.ts │ │ │ ├── publish.ts │ │ │ └── query.ts │ │ └── tsconfig.json │ └── tsconfig/ │ ├── base.json │ ├── nextjs.json │ └── package.json ├── pnpm-workspace.yaml ├── qa/ │ └── browser-flows/ │ ├── README.md │ ├── _template.md │ ├── api-key-create-and-call.md │ ├── assistant-writing-style.md │ ├── awaiting-reply-rule-gmail-to-outlook.md │ ├── awaiting-reply-rule-outlook-to-gmail.md │ ├── calendar-availability-rule-gmail-to-outlook.md │ ├── calendar-availability-rule-outlook-to-gmail.md │ ├── drive-draft-attachment-gmail.md │ ├── follow-up-gmail.md │ ├── follow-up-outlook.md │ ├── only-one-draft-in-gmail-thread.md │ ├── only-one-draft-in-outlook-thread.md │ ├── reply-with-unedited-draft-from-gmail.md │ ├── reply-with-unedited-draft-from-outlook.md │ ├── results/ │ │ └── README.md │ ├── to-reply-rule-gmail-to-outlook.md │ └── to-reply-rule-outlook-to-gmail.md ├── scripts/ │ ├── run-e2e-local.sh │ └── sync-cursor-to-codex.sh ├── setup.sh ├── tsconfig.json └── turbo.json