clawdex-mobile 5.0.1 → 5.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -0
- package/docs/setup-and-operations.md +3 -1
- package/docs/troubleshooting.md +1 -0
- package/package.json +18 -8
- package/scripts/setup-secure-dev.sh +26 -17
- package/services/rust-bridge/Cargo.lock +1 -1
- package/services/rust-bridge/Cargo.toml +1 -1
- package/vendor/bridge-binaries/darwin-arm64/codex-rust-bridge +0 -0
- package/vendor/bridge-binaries/darwin-x64/codex-rust-bridge +0 -0
- package/vendor/bridge-binaries/linux-x64/codex-rust-bridge +0 -0
- package/vendor/bridge-binaries/win32-x64/codex-rust-bridge.exe +0 -0
- package/.artifacts/bridge-binaries/bridge-binaries-darwin-arm64/codex-rust-bridge +0 -0
- package/.artifacts/bridge-binaries/bridge-binaries-darwin-x64/codex-rust-bridge +0 -0
- package/.artifacts/bridge-binaries/bridge-binaries-linux-x64/codex-rust-bridge +0 -0
- package/.artifacts/bridge-binaries/bridge-binaries-win32-x64/codex-rust-bridge.exe +0 -0
- package/.github/workflows/ci.yml +0 -80
- package/.github/workflows/npm-release.yml +0 -208
- package/.github/workflows/pages.yml +0 -41
- package/AGENTS.md +0 -273
- package/STATUS.md +0 -115
- package/apps/mobile/.env.example +0 -6
- package/apps/mobile/App.tsx +0 -943
- package/apps/mobile/app.json +0 -77
- package/apps/mobile/assets/brand/adaptive-icon.png +0 -0
- package/apps/mobile/assets/brand/app-icon.png +0 -0
- package/apps/mobile/assets/brand/favicon.png +0 -0
- package/apps/mobile/assets/brand/mark.png +0 -0
- package/apps/mobile/assets/brand/splash-icon-white.png +0 -0
- package/apps/mobile/assets/brand/splash-icon.png +0 -0
- package/apps/mobile/babel.config.js +0 -7
- package/apps/mobile/eas.json +0 -40
- package/apps/mobile/eslint.config.cjs +0 -28
- package/apps/mobile/index.js +0 -5
- package/apps/mobile/package.json +0 -57
- package/apps/mobile/plugins/withAndroidCleartextTraffic.js +0 -14
- package/apps/mobile/src/api/__tests__/chatMapping.test.ts +0 -351
- package/apps/mobile/src/api/__tests__/client.test.ts +0 -1494
- package/apps/mobile/src/api/__tests__/ws.test.ts +0 -640
- package/apps/mobile/src/api/account.ts +0 -47
- package/apps/mobile/src/api/chatMapping.ts +0 -1048
- package/apps/mobile/src/api/client.ts +0 -1430
- package/apps/mobile/src/api/rateLimits.ts +0 -143
- package/apps/mobile/src/api/types.ts +0 -435
- package/apps/mobile/src/api/ws.ts +0 -852
- package/apps/mobile/src/bridgeUrl.ts +0 -105
- package/apps/mobile/src/components/ActivityBar.tsx +0 -95
- package/apps/mobile/src/components/ApprovalBanner.tsx +0 -207
- package/apps/mobile/src/components/BrandMark.tsx +0 -43
- package/apps/mobile/src/components/ChatHeader.tsx +0 -107
- package/apps/mobile/src/components/ChatInput.tsx +0 -457
- package/apps/mobile/src/components/ChatMessage.tsx +0 -959
- package/apps/mobile/src/components/ComposerUsageLimits.tsx +0 -167
- package/apps/mobile/src/components/SelectionSheet.tsx +0 -466
- package/apps/mobile/src/components/StatusLine.tsx +0 -52
- package/apps/mobile/src/components/ToolBlock.tsx +0 -67
- package/apps/mobile/src/components/TypingIndicator.tsx +0 -64
- package/apps/mobile/src/components/VoiceRecordingWaveform.tsx +0 -181
- package/apps/mobile/src/components/WorkspacePickerModal.tsx +0 -812
- package/apps/mobile/src/components/__tests__/chat-input-layout.test.ts +0 -35
- package/apps/mobile/src/components/__tests__/chatImageSource.test.ts +0 -44
- package/apps/mobile/src/components/__tests__/composerUsageLimits.test.ts +0 -138
- package/apps/mobile/src/components/__tests__/voiceWaveform.test.ts +0 -31
- package/apps/mobile/src/components/chat-input-layout.ts +0 -59
- package/apps/mobile/src/components/chatImageSource.ts +0 -86
- package/apps/mobile/src/components/usageLimitBadges.ts +0 -109
- package/apps/mobile/src/components/voiceWaveform.ts +0 -46
- package/apps/mobile/src/config.ts +0 -64
- package/apps/mobile/src/hooks/useVoiceRecorder.ts +0 -271
- package/apps/mobile/src/navigation/DrawerContent.tsx +0 -1129
- package/apps/mobile/src/navigation/__tests__/chatThreadTree.test.ts +0 -89
- package/apps/mobile/src/navigation/__tests__/drawerChats.test.ts +0 -65
- package/apps/mobile/src/navigation/chatThreadTree.ts +0 -191
- package/apps/mobile/src/navigation/drawerChats.ts +0 -9
- package/apps/mobile/src/screens/GitScreen.tsx +0 -1489
- package/apps/mobile/src/screens/MainScreen.tsx +0 -10511
- package/apps/mobile/src/screens/OnboardingScreen.tsx +0 -1746
- package/apps/mobile/src/screens/PrivacyScreen.tsx +0 -196
- package/apps/mobile/src/screens/SettingsScreen.tsx +0 -870
- package/apps/mobile/src/screens/TerminalScreen.tsx +0 -248
- package/apps/mobile/src/screens/TermsScreen.tsx +0 -192
- package/apps/mobile/src/screens/__tests__/agentThreadDisplay.test.ts +0 -80
- package/apps/mobile/src/screens/__tests__/agentThreads.test.ts +0 -170
- package/apps/mobile/src/screens/__tests__/gitDiff.test.ts +0 -131
- package/apps/mobile/src/screens/__tests__/planCardState.test.ts +0 -88
- package/apps/mobile/src/screens/__tests__/subAgentTranscript.test.ts +0 -102
- package/apps/mobile/src/screens/__tests__/transcriptMessages.test.ts +0 -97
- package/apps/mobile/src/screens/agentThreadDisplay.ts +0 -261
- package/apps/mobile/src/screens/agentThreads.ts +0 -167
- package/apps/mobile/src/screens/gitDiff.ts +0 -380
- package/apps/mobile/src/screens/planCardState.ts +0 -40
- package/apps/mobile/src/screens/subAgentTranscript.ts +0 -149
- package/apps/mobile/src/screens/transcriptMessages.ts +0 -102
- package/apps/mobile/src/theme.ts +0 -106
- package/apps/mobile/src/types/assets.d.ts +0 -4
- package/apps/mobile/tsconfig.json +0 -33
- package/docs/app-review-notes.md +0 -116
- package/docs/codex-app-server-cli-gap-tracker.md +0 -90
- package/docs/eas-builds.md +0 -91
- package/docs/open-source-license-requirements.md +0 -32
- package/docs/plans/2026-02-20-codex-desktop-style-redesign.md +0 -190
- package/docs/plans/2026-02-20-codex-mobile-implementation.md +0 -1630
- package/docs/plans/2026-02-21-codex-ui-redesign-design.md +0 -101
- package/docs/plans/2026-02-21-codex-ui-redesign.md +0 -1229
- package/docs/privacy-policy.md +0 -54
- package/docs/realtime-streaming-limitations.md +0 -161
- package/docs/terms-of-service.md +0 -33
- package/docs/voice-transcription.md +0 -87
- package/scripts/codex-live-demo.sh +0 -69
- package/scripts/start-bridge-secure.sh +0 -5
- package/scripts/start-expo.sh +0 -176
- package/scripts/sync-versions.js +0 -63
- package/scripts/teardown.sh +0 -136
- package/services/mac-bridge/.env.example +0 -10
- package/services/mac-bridge/codex-types/AbsolutePathBuf.ts +0 -14
- package/services/mac-bridge/codex-types/AddConversationListenerParams.ts +0 -6
- package/services/mac-bridge/codex-types/AddConversationSubscriptionResponse.ts +0 -5
- package/services/mac-bridge/codex-types/AgentMessageContent.ts +0 -5
- package/services/mac-bridge/codex-types/AgentMessageContentDeltaEvent.ts +0 -5
- package/services/mac-bridge/codex-types/AgentMessageDeltaEvent.ts +0 -5
- package/services/mac-bridge/codex-types/AgentMessageEvent.ts +0 -5
- package/services/mac-bridge/codex-types/AgentMessageItem.ts +0 -21
- package/services/mac-bridge/codex-types/AgentReasoningDeltaEvent.ts +0 -5
- package/services/mac-bridge/codex-types/AgentReasoningEvent.ts +0 -5
- package/services/mac-bridge/codex-types/AgentReasoningRawContentDeltaEvent.ts +0 -5
- package/services/mac-bridge/codex-types/AgentReasoningRawContentEvent.ts +0 -5
- package/services/mac-bridge/codex-types/AgentReasoningSectionBreakEvent.ts +0 -5
- package/services/mac-bridge/codex-types/AgentStatus.ts +0 -8
- package/services/mac-bridge/codex-types/ApplyPatchApprovalParams.ts +0 -21
- package/services/mac-bridge/codex-types/ApplyPatchApprovalRequestEvent.ts +0 -23
- package/services/mac-bridge/codex-types/ApplyPatchApprovalResponse.ts +0 -6
- package/services/mac-bridge/codex-types/ArchiveConversationParams.ts +0 -6
- package/services/mac-bridge/codex-types/ArchiveConversationResponse.ts +0 -5
- package/services/mac-bridge/codex-types/AskForApproval.ts +0 -9
- package/services/mac-bridge/codex-types/AuthMode.ts +0 -8
- package/services/mac-bridge/codex-types/AuthStatusChangeNotification.ts +0 -9
- package/services/mac-bridge/codex-types/BackgroundEventEvent.ts +0 -5
- package/services/mac-bridge/codex-types/ByteRange.ts +0 -13
- package/services/mac-bridge/codex-types/CallToolResult.ts +0 -9
- package/services/mac-bridge/codex-types/CancelLoginChatGptParams.ts +0 -5
- package/services/mac-bridge/codex-types/CancelLoginChatGptResponse.ts +0 -5
- package/services/mac-bridge/codex-types/ClientInfo.ts +0 -5
- package/services/mac-bridge/codex-types/ClientNotification.ts +0 -5
- package/services/mac-bridge/codex-types/ClientRequest.ts +0 -60
- package/services/mac-bridge/codex-types/CodexErrorInfo.ts +0 -8
- package/services/mac-bridge/codex-types/CollabAgentInteractionBeginEvent.ts +0 -23
- package/services/mac-bridge/codex-types/CollabAgentInteractionEndEvent.ts +0 -28
- package/services/mac-bridge/codex-types/CollabAgentSpawnBeginEvent.ts +0 -19
- package/services/mac-bridge/codex-types/CollabAgentSpawnEndEvent.ts +0 -28
- package/services/mac-bridge/codex-types/CollabCloseBeginEvent.ts +0 -18
- package/services/mac-bridge/codex-types/CollabCloseEndEvent.ts +0 -24
- package/services/mac-bridge/codex-types/CollabResumeBeginEvent.ts +0 -18
- package/services/mac-bridge/codex-types/CollabResumeEndEvent.ts +0 -24
- package/services/mac-bridge/codex-types/CollabWaitingBeginEvent.ts +0 -18
- package/services/mac-bridge/codex-types/CollabWaitingEndEvent.ts +0 -19
- package/services/mac-bridge/codex-types/CollaborationMode.ts +0 -10
- package/services/mac-bridge/codex-types/CollaborationModeMask.ts +0 -11
- package/services/mac-bridge/codex-types/ContentItem.ts +0 -5
- package/services/mac-bridge/codex-types/ContextCompactedEvent.ts +0 -5
- package/services/mac-bridge/codex-types/ContextCompactionItem.ts +0 -5
- package/services/mac-bridge/codex-types/ConversationGitInfo.ts +0 -5
- package/services/mac-bridge/codex-types/ConversationSummary.ts +0 -8
- package/services/mac-bridge/codex-types/CreditsSnapshot.ts +0 -5
- package/services/mac-bridge/codex-types/CustomPrompt.ts +0 -5
- package/services/mac-bridge/codex-types/DeprecationNoticeEvent.ts +0 -13
- package/services/mac-bridge/codex-types/DynamicToolCallRequest.ts +0 -6
- package/services/mac-bridge/codex-types/ElicitationRequestEvent.ts +0 -5
- package/services/mac-bridge/codex-types/ErrorEvent.ts +0 -6
- package/services/mac-bridge/codex-types/EventMsg.ts +0 -78
- package/services/mac-bridge/codex-types/ExecApprovalRequestEvent.ts +0 -44
- package/services/mac-bridge/codex-types/ExecCommandApprovalParams.ts +0 -16
- package/services/mac-bridge/codex-types/ExecCommandApprovalResponse.ts +0 -6
- package/services/mac-bridge/codex-types/ExecCommandBeginEvent.ts +0 -35
- package/services/mac-bridge/codex-types/ExecCommandEndEvent.ts +0 -64
- package/services/mac-bridge/codex-types/ExecCommandOutputDeltaEvent.ts +0 -18
- package/services/mac-bridge/codex-types/ExecCommandSource.ts +0 -5
- package/services/mac-bridge/codex-types/ExecCommandStatus.ts +0 -5
- package/services/mac-bridge/codex-types/ExecOneOffCommandParams.ts +0 -6
- package/services/mac-bridge/codex-types/ExecOneOffCommandResponse.ts +0 -5
- package/services/mac-bridge/codex-types/ExecOutputStream.ts +0 -5
- package/services/mac-bridge/codex-types/ExecPolicyAmendment.ts +0 -12
- package/services/mac-bridge/codex-types/ExitedReviewModeEvent.ts +0 -6
- package/services/mac-bridge/codex-types/FileChange.ts +0 -5
- package/services/mac-bridge/codex-types/ForcedLoginMethod.ts +0 -5
- package/services/mac-bridge/codex-types/ForkConversationParams.ts +0 -7
- package/services/mac-bridge/codex-types/ForkConversationResponse.ts +0 -7
- package/services/mac-bridge/codex-types/FunctionCallOutputBody.ts +0 -6
- package/services/mac-bridge/codex-types/FunctionCallOutputContentItem.ts +0 -9
- package/services/mac-bridge/codex-types/FunctionCallOutputPayload.ts +0 -12
- package/services/mac-bridge/codex-types/FuzzyFileSearchParams.ts +0 -5
- package/services/mac-bridge/codex-types/FuzzyFileSearchResponse.ts +0 -6
- package/services/mac-bridge/codex-types/FuzzyFileSearchResult.ts +0 -8
- package/services/mac-bridge/codex-types/FuzzyFileSearchSessionCompletedNotification.ts +0 -5
- package/services/mac-bridge/codex-types/FuzzyFileSearchSessionUpdatedNotification.ts +0 -6
- package/services/mac-bridge/codex-types/GetAuthStatusParams.ts +0 -5
- package/services/mac-bridge/codex-types/GetAuthStatusResponse.ts +0 -6
- package/services/mac-bridge/codex-types/GetConversationSummaryParams.ts +0 -6
- package/services/mac-bridge/codex-types/GetConversationSummaryResponse.ts +0 -6
- package/services/mac-bridge/codex-types/GetHistoryEntryResponseEvent.ts +0 -10
- package/services/mac-bridge/codex-types/GetUserAgentResponse.ts +0 -5
- package/services/mac-bridge/codex-types/GetUserSavedConfigResponse.ts +0 -6
- package/services/mac-bridge/codex-types/GhostCommit.ts +0 -8
- package/services/mac-bridge/codex-types/GitDiffToRemoteParams.ts +0 -5
- package/services/mac-bridge/codex-types/GitDiffToRemoteResponse.ts +0 -6
- package/services/mac-bridge/codex-types/GitSha.ts +0 -5
- package/services/mac-bridge/codex-types/HistoryEntry.ts +0 -5
- package/services/mac-bridge/codex-types/InitializeCapabilities.ts +0 -17
- package/services/mac-bridge/codex-types/InitializeParams.ts +0 -7
- package/services/mac-bridge/codex-types/InitializeResponse.ts +0 -5
- package/services/mac-bridge/codex-types/InputItem.ts +0 -10
- package/services/mac-bridge/codex-types/InputModality.ts +0 -8
- package/services/mac-bridge/codex-types/InterruptConversationParams.ts +0 -6
- package/services/mac-bridge/codex-types/InterruptConversationResponse.ts +0 -6
- package/services/mac-bridge/codex-types/ItemCompletedEvent.ts +0 -7
- package/services/mac-bridge/codex-types/ItemStartedEvent.ts +0 -7
- package/services/mac-bridge/codex-types/ListConversationsParams.ts +0 -5
- package/services/mac-bridge/codex-types/ListConversationsResponse.ts +0 -6
- package/services/mac-bridge/codex-types/ListCustomPromptsResponseEvent.ts +0 -9
- package/services/mac-bridge/codex-types/ListRemoteSkillsResponseEvent.ts +0 -9
- package/services/mac-bridge/codex-types/ListSkillsResponseEvent.ts +0 -9
- package/services/mac-bridge/codex-types/LocalShellAction.ts +0 -6
- package/services/mac-bridge/codex-types/LocalShellExecAction.ts +0 -5
- package/services/mac-bridge/codex-types/LocalShellStatus.ts +0 -5
- package/services/mac-bridge/codex-types/LoginApiKeyParams.ts +0 -5
- package/services/mac-bridge/codex-types/LoginApiKeyResponse.ts +0 -5
- package/services/mac-bridge/codex-types/LoginChatGptCompleteNotification.ts +0 -8
- package/services/mac-bridge/codex-types/LoginChatGptResponse.ts +0 -5
- package/services/mac-bridge/codex-types/LogoutChatGptResponse.ts +0 -5
- package/services/mac-bridge/codex-types/McpAuthStatus.ts +0 -5
- package/services/mac-bridge/codex-types/McpInvocation.ts +0 -18
- package/services/mac-bridge/codex-types/McpListToolsResponseEvent.ts +0 -25
- package/services/mac-bridge/codex-types/McpStartupCompleteEvent.ts +0 -6
- package/services/mac-bridge/codex-types/McpStartupFailure.ts +0 -5
- package/services/mac-bridge/codex-types/McpStartupStatus.ts +0 -5
- package/services/mac-bridge/codex-types/McpStartupUpdateEvent.ts +0 -14
- package/services/mac-bridge/codex-types/McpToolCallBeginEvent.ts +0 -10
- package/services/mac-bridge/codex-types/McpToolCallEndEvent.ts +0 -15
- package/services/mac-bridge/codex-types/MessagePhase.ts +0 -11
- package/services/mac-bridge/codex-types/ModeKind.ts +0 -8
- package/services/mac-bridge/codex-types/ModelRerouteEvent.ts +0 -6
- package/services/mac-bridge/codex-types/ModelRerouteReason.ts +0 -5
- package/services/mac-bridge/codex-types/NetworkAccess.ts +0 -8
- package/services/mac-bridge/codex-types/NetworkApprovalContext.ts +0 -6
- package/services/mac-bridge/codex-types/NetworkApprovalProtocol.ts +0 -5
- package/services/mac-bridge/codex-types/NewConversationParams.ts +0 -8
- package/services/mac-bridge/codex-types/NewConversationResponse.ts +0 -7
- package/services/mac-bridge/codex-types/ParsedCommand.ts +0 -12
- package/services/mac-bridge/codex-types/PatchApplyBeginEvent.ts +0 -23
- package/services/mac-bridge/codex-types/PatchApplyEndEvent.ts +0 -36
- package/services/mac-bridge/codex-types/PatchApplyStatus.ts +0 -5
- package/services/mac-bridge/codex-types/Personality.ts +0 -5
- package/services/mac-bridge/codex-types/PlanDeltaEvent.ts +0 -5
- package/services/mac-bridge/codex-types/PlanItem.ts +0 -5
- package/services/mac-bridge/codex-types/PlanItemArg.ts +0 -6
- package/services/mac-bridge/codex-types/PlanType.ts +0 -5
- package/services/mac-bridge/codex-types/Profile.ts +0 -9
- package/services/mac-bridge/codex-types/RateLimitSnapshot.ts +0 -8
- package/services/mac-bridge/codex-types/RateLimitWindow.ts +0 -17
- package/services/mac-bridge/codex-types/RawResponseItemEvent.ts +0 -6
- package/services/mac-bridge/codex-types/ReadOnlyAccess.ts +0 -19
- package/services/mac-bridge/codex-types/ReasoningContentDeltaEvent.ts +0 -5
- package/services/mac-bridge/codex-types/ReasoningEffort.ts +0 -8
- package/services/mac-bridge/codex-types/ReasoningItem.ts +0 -5
- package/services/mac-bridge/codex-types/ReasoningItemContent.ts +0 -5
- package/services/mac-bridge/codex-types/ReasoningItemReasoningSummary.ts +0 -5
- package/services/mac-bridge/codex-types/ReasoningRawContentDeltaEvent.ts +0 -5
- package/services/mac-bridge/codex-types/ReasoningSummary.ts +0 -10
- package/services/mac-bridge/codex-types/RemoteSkillDownloadedEvent.ts +0 -8
- package/services/mac-bridge/codex-types/RemoteSkillSummary.ts +0 -5
- package/services/mac-bridge/codex-types/RemoveConversationListenerParams.ts +0 -5
- package/services/mac-bridge/codex-types/RemoveConversationSubscriptionResponse.ts +0 -5
- package/services/mac-bridge/codex-types/RequestId.ts +0 -5
- package/services/mac-bridge/codex-types/RequestUserInputEvent.ts +0 -15
- package/services/mac-bridge/codex-types/RequestUserInputQuestion.ts +0 -6
- package/services/mac-bridge/codex-types/RequestUserInputQuestionOption.ts +0 -5
- package/services/mac-bridge/codex-types/Resource.ts +0 -9
- package/services/mac-bridge/codex-types/ResourceTemplate.ts +0 -9
- package/services/mac-bridge/codex-types/ResponseItem.ts +0 -18
- package/services/mac-bridge/codex-types/ResumeConversationParams.ts +0 -8
- package/services/mac-bridge/codex-types/ResumeConversationResponse.ts +0 -7
- package/services/mac-bridge/codex-types/ReviewCodeLocation.ts +0 -9
- package/services/mac-bridge/codex-types/ReviewDecision.ts +0 -9
- package/services/mac-bridge/codex-types/ReviewFinding.ts +0 -9
- package/services/mac-bridge/codex-types/ReviewLineRange.ts +0 -8
- package/services/mac-bridge/codex-types/ReviewOutputEvent.ts +0 -9
- package/services/mac-bridge/codex-types/ReviewRequest.ts +0 -9
- package/services/mac-bridge/codex-types/ReviewTarget.ts +0 -9
- package/services/mac-bridge/codex-types/SandboxMode.ts +0 -5
- package/services/mac-bridge/codex-types/SandboxPolicy.ts +0 -44
- package/services/mac-bridge/codex-types/SandboxSettings.ts +0 -6
- package/services/mac-bridge/codex-types/SendUserMessageParams.ts +0 -7
- package/services/mac-bridge/codex-types/SendUserMessageResponse.ts +0 -5
- package/services/mac-bridge/codex-types/SendUserTurnParams.ts +0 -16
- package/services/mac-bridge/codex-types/SendUserTurnResponse.ts +0 -5
- package/services/mac-bridge/codex-types/ServerNotification.ts +0 -45
- package/services/mac-bridge/codex-types/ServerRequest.ts +0 -16
- package/services/mac-bridge/codex-types/SessionConfiguredEvent.ts +0 -57
- package/services/mac-bridge/codex-types/SessionConfiguredNotification.ts +0 -8
- package/services/mac-bridge/codex-types/SessionNetworkProxyRuntime.ts +0 -5
- package/services/mac-bridge/codex-types/SessionSource.ts +0 -6
- package/services/mac-bridge/codex-types/SetDefaultModelParams.ts +0 -6
- package/services/mac-bridge/codex-types/SetDefaultModelResponse.ts +0 -5
- package/services/mac-bridge/codex-types/Settings.ts +0 -9
- package/services/mac-bridge/codex-types/SkillDependencies.ts +0 -6
- package/services/mac-bridge/codex-types/SkillErrorInfo.ts +0 -5
- package/services/mac-bridge/codex-types/SkillInterface.ts +0 -5
- package/services/mac-bridge/codex-types/SkillMetadata.ts +0 -12
- package/services/mac-bridge/codex-types/SkillScope.ts +0 -5
- package/services/mac-bridge/codex-types/SkillToolDependency.ts +0 -5
- package/services/mac-bridge/codex-types/SkillsListEntry.ts +0 -7
- package/services/mac-bridge/codex-types/StepStatus.ts +0 -5
- package/services/mac-bridge/codex-types/StreamErrorEvent.ts +0 -12
- package/services/mac-bridge/codex-types/SubAgentSource.ts +0 -6
- package/services/mac-bridge/codex-types/TerminalInteractionEvent.ts +0 -17
- package/services/mac-bridge/codex-types/TextElement.ts +0 -14
- package/services/mac-bridge/codex-types/ThreadId.ts +0 -5
- package/services/mac-bridge/codex-types/ThreadNameUpdatedEvent.ts +0 -6
- package/services/mac-bridge/codex-types/ThreadRolledBackEvent.ts +0 -9
- package/services/mac-bridge/codex-types/TokenCountEvent.ts +0 -7
- package/services/mac-bridge/codex-types/TokenUsage.ts +0 -5
- package/services/mac-bridge/codex-types/TokenUsageInfo.ts +0 -6
- package/services/mac-bridge/codex-types/Tool.ts +0 -9
- package/services/mac-bridge/codex-types/Tools.ts +0 -5
- package/services/mac-bridge/codex-types/TurnAbortReason.ts +0 -5
- package/services/mac-bridge/codex-types/TurnAbortedEvent.ts +0 -6
- package/services/mac-bridge/codex-types/TurnCompleteEvent.ts +0 -5
- package/services/mac-bridge/codex-types/TurnDiffEvent.ts +0 -5
- package/services/mac-bridge/codex-types/TurnItem.ts +0 -11
- package/services/mac-bridge/codex-types/TurnStartedEvent.ts +0 -6
- package/services/mac-bridge/codex-types/UndoCompletedEvent.ts +0 -5
- package/services/mac-bridge/codex-types/UndoStartedEvent.ts +0 -5
- package/services/mac-bridge/codex-types/UpdatePlanArgs.ts +0 -10
- package/services/mac-bridge/codex-types/UserInfoResponse.ts +0 -5
- package/services/mac-bridge/codex-types/UserInput.ts +0 -16
- package/services/mac-bridge/codex-types/UserMessageEvent.ts +0 -22
- package/services/mac-bridge/codex-types/UserMessageItem.ts +0 -6
- package/services/mac-bridge/codex-types/UserSavedConfig.ts +0 -14
- package/services/mac-bridge/codex-types/Verbosity.ts +0 -9
- package/services/mac-bridge/codex-types/ViewImageToolCallEvent.ts +0 -13
- package/services/mac-bridge/codex-types/WarningEvent.ts +0 -5
- package/services/mac-bridge/codex-types/WebSearchAction.ts +0 -5
- package/services/mac-bridge/codex-types/WebSearchBeginEvent.ts +0 -5
- package/services/mac-bridge/codex-types/WebSearchEndEvent.ts +0 -6
- package/services/mac-bridge/codex-types/WebSearchItem.ts +0 -6
- package/services/mac-bridge/codex-types/WebSearchMode.ts +0 -5
- package/services/mac-bridge/codex-types/index.ts +0 -234
- package/services/mac-bridge/codex-types/serde_json/JsonValue.ts +0 -5
- package/services/mac-bridge/codex-types/v2/Account.ts +0 -6
- package/services/mac-bridge/codex-types/v2/AccountLoginCompletedNotification.ts +0 -5
- package/services/mac-bridge/codex-types/v2/AccountRateLimitsUpdatedNotification.ts +0 -6
- package/services/mac-bridge/codex-types/v2/AccountUpdatedNotification.ts +0 -6
- package/services/mac-bridge/codex-types/v2/AgentMessageDeltaNotification.ts +0 -5
- package/services/mac-bridge/codex-types/v2/AnalyticsConfig.ts +0 -6
- package/services/mac-bridge/codex-types/v2/AppBranding.ts +0 -8
- package/services/mac-bridge/codex-types/v2/AppDisabledReason.ts +0 -5
- package/services/mac-bridge/codex-types/v2/AppInfo.ts +0 -19
- package/services/mac-bridge/codex-types/v2/AppListUpdatedNotification.ts +0 -9
- package/services/mac-bridge/codex-types/v2/AppMetadata.ts +0 -7
- package/services/mac-bridge/codex-types/v2/AppReview.ts +0 -5
- package/services/mac-bridge/codex-types/v2/AppScreenshot.ts +0 -5
- package/services/mac-bridge/codex-types/v2/AppsConfig.ts +0 -6
- package/services/mac-bridge/codex-types/v2/AppsListParams.ts +0 -24
- package/services/mac-bridge/codex-types/v2/AppsListResponse.ts +0 -14
- package/services/mac-bridge/codex-types/v2/AskForApproval.ts +0 -5
- package/services/mac-bridge/codex-types/v2/ByteRange.ts +0 -5
- package/services/mac-bridge/codex-types/v2/CancelLoginAccountParams.ts +0 -5
- package/services/mac-bridge/codex-types/v2/CancelLoginAccountResponse.ts +0 -6
- package/services/mac-bridge/codex-types/v2/CancelLoginAccountStatus.ts +0 -5
- package/services/mac-bridge/codex-types/v2/ChatgptAuthTokensRefreshParams.ts +0 -16
- package/services/mac-bridge/codex-types/v2/ChatgptAuthTokensRefreshReason.ts +0 -5
- package/services/mac-bridge/codex-types/v2/ChatgptAuthTokensRefreshResponse.ts +0 -5
- package/services/mac-bridge/codex-types/v2/CodexErrorInfo.ts +0 -11
- package/services/mac-bridge/codex-types/v2/CollabAgentState.ts +0 -6
- package/services/mac-bridge/codex-types/v2/CollabAgentStatus.ts +0 -5
- package/services/mac-bridge/codex-types/v2/CollabAgentTool.ts +0 -5
- package/services/mac-bridge/codex-types/v2/CollabAgentToolCallStatus.ts +0 -5
- package/services/mac-bridge/codex-types/v2/CommandAction.ts +0 -5
- package/services/mac-bridge/codex-types/v2/CommandExecParams.ts +0 -6
- package/services/mac-bridge/codex-types/v2/CommandExecResponse.ts +0 -5
- package/services/mac-bridge/codex-types/v2/CommandExecutionApprovalDecision.ts +0 -6
- package/services/mac-bridge/codex-types/v2/CommandExecutionOutputDeltaNotification.ts +0 -5
- package/services/mac-bridge/codex-types/v2/CommandExecutionRequestApprovalParams.ts +0 -37
- package/services/mac-bridge/codex-types/v2/CommandExecutionRequestApprovalResponse.ts +0 -6
- package/services/mac-bridge/codex-types/v2/CommandExecutionStatus.ts +0 -5
- package/services/mac-bridge/codex-types/v2/Config.ts +0 -17
- package/services/mac-bridge/codex-types/v2/ConfigBatchWriteParams.ts +0 -10
- package/services/mac-bridge/codex-types/v2/ConfigEdit.ts +0 -7
- package/services/mac-bridge/codex-types/v2/ConfigLayer.ts +0 -7
- package/services/mac-bridge/codex-types/v2/ConfigLayerMetadata.ts +0 -6
- package/services/mac-bridge/codex-types/v2/ConfigLayerSource.ts +0 -16
- package/services/mac-bridge/codex-types/v2/ConfigReadParams.ts +0 -11
- package/services/mac-bridge/codex-types/v2/ConfigReadResponse.ts +0 -8
- package/services/mac-bridge/codex-types/v2/ConfigRequirements.ts +0 -9
- package/services/mac-bridge/codex-types/v2/ConfigRequirementsReadResponse.ts +0 -10
- package/services/mac-bridge/codex-types/v2/ConfigValueWriteParams.ts +0 -11
- package/services/mac-bridge/codex-types/v2/ConfigWarningNotification.ts +0 -22
- package/services/mac-bridge/codex-types/v2/ConfigWriteResponse.ts +0 -12
- package/services/mac-bridge/codex-types/v2/ContextCompactedNotification.ts +0 -8
- package/services/mac-bridge/codex-types/v2/CreditsSnapshot.ts +0 -5
- package/services/mac-bridge/codex-types/v2/DeprecationNoticeNotification.ts +0 -13
- package/services/mac-bridge/codex-types/v2/DynamicToolCallOutputContentItem.ts +0 -5
- package/services/mac-bridge/codex-types/v2/DynamicToolCallParams.ts +0 -6
- package/services/mac-bridge/codex-types/v2/DynamicToolCallResponse.ts +0 -6
- package/services/mac-bridge/codex-types/v2/DynamicToolSpec.ts +0 -6
- package/services/mac-bridge/codex-types/v2/ErrorNotification.ts +0 -6
- package/services/mac-bridge/codex-types/v2/ExecPolicyAmendment.ts +0 -5
- package/services/mac-bridge/codex-types/v2/ExperimentalFeature.ts +0 -37
- package/services/mac-bridge/codex-types/v2/ExperimentalFeatureListParams.ts +0 -13
- package/services/mac-bridge/codex-types/v2/ExperimentalFeatureListResponse.ts +0 -11
- package/services/mac-bridge/codex-types/v2/ExperimentalFeatureStage.ts +0 -5
- package/services/mac-bridge/codex-types/v2/FeedbackUploadParams.ts +0 -5
- package/services/mac-bridge/codex-types/v2/FeedbackUploadResponse.ts +0 -5
- package/services/mac-bridge/codex-types/v2/FileChangeApprovalDecision.ts +0 -5
- package/services/mac-bridge/codex-types/v2/FileChangeOutputDeltaNotification.ts +0 -5
- package/services/mac-bridge/codex-types/v2/FileChangeRequestApprovalParams.ts +0 -14
- package/services/mac-bridge/codex-types/v2/FileChangeRequestApprovalResponse.ts +0 -6
- package/services/mac-bridge/codex-types/v2/FileUpdateChange.ts +0 -6
- package/services/mac-bridge/codex-types/v2/GetAccountParams.ts +0 -13
- package/services/mac-bridge/codex-types/v2/GetAccountRateLimitsResponse.ts +0 -14
- package/services/mac-bridge/codex-types/v2/GetAccountResponse.ts +0 -6
- package/services/mac-bridge/codex-types/v2/GitInfo.ts +0 -5
- package/services/mac-bridge/codex-types/v2/HazelnutScope.ts +0 -5
- package/services/mac-bridge/codex-types/v2/ItemCompletedNotification.ts +0 -6
- package/services/mac-bridge/codex-types/v2/ItemStartedNotification.ts +0 -6
- package/services/mac-bridge/codex-types/v2/ListMcpServerStatusParams.ts +0 -13
- package/services/mac-bridge/codex-types/v2/ListMcpServerStatusResponse.ts +0 -11
- package/services/mac-bridge/codex-types/v2/LoginAccountParams.ts +0 -21
- package/services/mac-bridge/codex-types/v2/LoginAccountResponse.ts +0 -9
- package/services/mac-bridge/codex-types/v2/LogoutAccountResponse.ts +0 -5
- package/services/mac-bridge/codex-types/v2/McpAuthStatus.ts +0 -5
- package/services/mac-bridge/codex-types/v2/McpServerOauthLoginCompletedNotification.ts +0 -5
- package/services/mac-bridge/codex-types/v2/McpServerOauthLoginParams.ts +0 -5
- package/services/mac-bridge/codex-types/v2/McpServerOauthLoginResponse.ts +0 -5
- package/services/mac-bridge/codex-types/v2/McpServerRefreshResponse.ts +0 -5
- package/services/mac-bridge/codex-types/v2/McpServerStatus.ts +0 -9
- package/services/mac-bridge/codex-types/v2/McpToolCallError.ts +0 -5
- package/services/mac-bridge/codex-types/v2/McpToolCallProgressNotification.ts +0 -5
- package/services/mac-bridge/codex-types/v2/McpToolCallResult.ts +0 -6
- package/services/mac-bridge/codex-types/v2/McpToolCallStatus.ts +0 -5
- package/services/mac-bridge/codex-types/v2/MergeStrategy.ts +0 -5
- package/services/mac-bridge/codex-types/v2/Model.ts +0 -8
- package/services/mac-bridge/codex-types/v2/ModelListParams.ts +0 -17
- package/services/mac-bridge/codex-types/v2/ModelListResponse.ts +0 -11
- package/services/mac-bridge/codex-types/v2/ModelRerouteReason.ts +0 -5
- package/services/mac-bridge/codex-types/v2/ModelReroutedNotification.ts +0 -6
- package/services/mac-bridge/codex-types/v2/NetworkAccess.ts +0 -5
- package/services/mac-bridge/codex-types/v2/NetworkRequirements.ts +0 -5
- package/services/mac-bridge/codex-types/v2/OverriddenMetadata.ts +0 -7
- package/services/mac-bridge/codex-types/v2/PatchApplyStatus.ts +0 -5
- package/services/mac-bridge/codex-types/v2/PatchChangeKind.ts +0 -5
- package/services/mac-bridge/codex-types/v2/PlanDeltaNotification.ts +0 -9
- package/services/mac-bridge/codex-types/v2/ProductSurface.ts +0 -5
- package/services/mac-bridge/codex-types/v2/ProfileV2.ts +0 -11
- package/services/mac-bridge/codex-types/v2/RateLimitSnapshot.ts +0 -8
- package/services/mac-bridge/codex-types/v2/RateLimitWindow.ts +0 -5
- package/services/mac-bridge/codex-types/v2/RawResponseItemCompletedNotification.ts +0 -6
- package/services/mac-bridge/codex-types/v2/ReadOnlyAccess.ts +0 -6
- package/services/mac-bridge/codex-types/v2/ReasoningEffortOption.ts +0 -6
- package/services/mac-bridge/codex-types/v2/ReasoningSummaryPartAddedNotification.ts +0 -5
- package/services/mac-bridge/codex-types/v2/ReasoningSummaryTextDeltaNotification.ts +0 -5
- package/services/mac-bridge/codex-types/v2/ReasoningTextDeltaNotification.ts +0 -5
- package/services/mac-bridge/codex-types/v2/RemoteSkillSummary.ts +0 -5
- package/services/mac-bridge/codex-types/v2/ResidencyRequirement.ts +0 -5
- package/services/mac-bridge/codex-types/v2/ReviewDelivery.ts +0 -5
- package/services/mac-bridge/codex-types/v2/ReviewStartParams.ts +0 -12
- package/services/mac-bridge/codex-types/v2/ReviewStartResponse.ts +0 -13
- package/services/mac-bridge/codex-types/v2/ReviewTarget.ts +0 -9
- package/services/mac-bridge/codex-types/v2/SandboxMode.ts +0 -5
- package/services/mac-bridge/codex-types/v2/SandboxPolicy.ts +0 -8
- package/services/mac-bridge/codex-types/v2/SandboxWorkspaceWrite.ts +0 -5
- package/services/mac-bridge/codex-types/v2/SessionSource.ts +0 -6
- package/services/mac-bridge/codex-types/v2/SkillDependencies.ts +0 -6
- package/services/mac-bridge/codex-types/v2/SkillErrorInfo.ts +0 -5
- package/services/mac-bridge/codex-types/v2/SkillInterface.ts +0 -5
- package/services/mac-bridge/codex-types/v2/SkillMetadata.ts +0 -12
- package/services/mac-bridge/codex-types/v2/SkillScope.ts +0 -5
- package/services/mac-bridge/codex-types/v2/SkillToolDependency.ts +0 -5
- package/services/mac-bridge/codex-types/v2/SkillsConfigWriteParams.ts +0 -5
- package/services/mac-bridge/codex-types/v2/SkillsConfigWriteResponse.ts +0 -5
- package/services/mac-bridge/codex-types/v2/SkillsListEntry.ts +0 -7
- package/services/mac-bridge/codex-types/v2/SkillsListExtraRootsForCwd.ts +0 -5
- package/services/mac-bridge/codex-types/v2/SkillsListParams.ts +0 -18
- package/services/mac-bridge/codex-types/v2/SkillsListResponse.ts +0 -6
- package/services/mac-bridge/codex-types/v2/SkillsRemoteReadParams.ts +0 -7
- package/services/mac-bridge/codex-types/v2/SkillsRemoteReadResponse.ts +0 -6
- package/services/mac-bridge/codex-types/v2/SkillsRemoteWriteParams.ts +0 -5
- package/services/mac-bridge/codex-types/v2/SkillsRemoteWriteResponse.ts +0 -5
- package/services/mac-bridge/codex-types/v2/TerminalInteractionNotification.ts +0 -5
- package/services/mac-bridge/codex-types/v2/TextElement.ts +0 -14
- package/services/mac-bridge/codex-types/v2/TextPosition.ts +0 -13
- package/services/mac-bridge/codex-types/v2/TextRange.ts +0 -6
- package/services/mac-bridge/codex-types/v2/Thread.ts +0 -51
- package/services/mac-bridge/codex-types/v2/ThreadArchiveParams.ts +0 -5
- package/services/mac-bridge/codex-types/v2/ThreadArchiveResponse.ts +0 -5
- package/services/mac-bridge/codex-types/v2/ThreadArchivedNotification.ts +0 -5
- package/services/mac-bridge/codex-types/v2/ThreadCompactStartParams.ts +0 -5
- package/services/mac-bridge/codex-types/v2/ThreadCompactStartResponse.ts +0 -5
- package/services/mac-bridge/codex-types/v2/ThreadForkParams.ts +0 -28
- package/services/mac-bridge/codex-types/v2/ThreadForkResponse.ts +0 -9
- package/services/mac-bridge/codex-types/v2/ThreadItem.ts +0 -81
- package/services/mac-bridge/codex-types/v2/ThreadListParams.ts +0 -39
- package/services/mac-bridge/codex-types/v2/ThreadListResponse.ts +0 -11
- package/services/mac-bridge/codex-types/v2/ThreadLoadedListParams.ts +0 -13
- package/services/mac-bridge/codex-types/v2/ThreadLoadedListResponse.ts +0 -14
- package/services/mac-bridge/codex-types/v2/ThreadNameUpdatedNotification.ts +0 -5
- package/services/mac-bridge/codex-types/v2/ThreadReadParams.ts +0 -9
- package/services/mac-bridge/codex-types/v2/ThreadReadResponse.ts +0 -6
- package/services/mac-bridge/codex-types/v2/ThreadResumeParams.ts +0 -37
- package/services/mac-bridge/codex-types/v2/ThreadResumeResponse.ts +0 -9
- package/services/mac-bridge/codex-types/v2/ThreadRollbackParams.ts +0 -12
- package/services/mac-bridge/codex-types/v2/ThreadRollbackResponse.ts +0 -14
- package/services/mac-bridge/codex-types/v2/ThreadSetNameParams.ts +0 -5
- package/services/mac-bridge/codex-types/v2/ThreadSetNameResponse.ts +0 -5
- package/services/mac-bridge/codex-types/v2/ThreadSortKey.ts +0 -5
- package/services/mac-bridge/codex-types/v2/ThreadSourceKind.ts +0 -5
- package/services/mac-bridge/codex-types/v2/ThreadStartParams.ts +0 -17
- package/services/mac-bridge/codex-types/v2/ThreadStartResponse.ts +0 -9
- package/services/mac-bridge/codex-types/v2/ThreadStartedNotification.ts +0 -6
- package/services/mac-bridge/codex-types/v2/ThreadTokenUsage.ts +0 -6
- package/services/mac-bridge/codex-types/v2/ThreadTokenUsageUpdatedNotification.ts +0 -6
- package/services/mac-bridge/codex-types/v2/ThreadUnarchiveParams.ts +0 -5
- package/services/mac-bridge/codex-types/v2/ThreadUnarchiveResponse.ts +0 -6
- package/services/mac-bridge/codex-types/v2/ThreadUnarchivedNotification.ts +0 -5
- package/services/mac-bridge/codex-types/v2/TokenUsageBreakdown.ts +0 -5
- package/services/mac-bridge/codex-types/v2/ToolRequestUserInputAnswer.ts +0 -8
- package/services/mac-bridge/codex-types/v2/ToolRequestUserInputOption.ts +0 -8
- package/services/mac-bridge/codex-types/v2/ToolRequestUserInputParams.ts +0 -9
- package/services/mac-bridge/codex-types/v2/ToolRequestUserInputQuestion.ts +0 -9
- package/services/mac-bridge/codex-types/v2/ToolRequestUserInputResponse.ts +0 -9
- package/services/mac-bridge/codex-types/v2/ToolsV2.ts +0 -5
- package/services/mac-bridge/codex-types/v2/Turn.ts +0 -18
- package/services/mac-bridge/codex-types/v2/TurnCompletedNotification.ts +0 -6
- package/services/mac-bridge/codex-types/v2/TurnDiffUpdatedNotification.ts +0 -9
- package/services/mac-bridge/codex-types/v2/TurnError.ts +0 -6
- package/services/mac-bridge/codex-types/v2/TurnInterruptParams.ts +0 -5
- package/services/mac-bridge/codex-types/v2/TurnInterruptResponse.ts +0 -5
- package/services/mac-bridge/codex-types/v2/TurnPlanStep.ts +0 -6
- package/services/mac-bridge/codex-types/v2/TurnPlanStepStatus.ts +0 -5
- package/services/mac-bridge/codex-types/v2/TurnPlanUpdatedNotification.ts +0 -6
- package/services/mac-bridge/codex-types/v2/TurnStartParams.ts +0 -44
- package/services/mac-bridge/codex-types/v2/TurnStartResponse.ts +0 -6
- package/services/mac-bridge/codex-types/v2/TurnStartedNotification.ts +0 -6
- package/services/mac-bridge/codex-types/v2/TurnStatus.ts +0 -5
- package/services/mac-bridge/codex-types/v2/TurnSteerParams.ts +0 -11
- package/services/mac-bridge/codex-types/v2/TurnSteerResponse.ts +0 -5
- package/services/mac-bridge/codex-types/v2/UserInput.ts +0 -10
- package/services/mac-bridge/codex-types/v2/WebSearchAction.ts +0 -5
- package/services/mac-bridge/codex-types/v2/WindowsWorldWritableWarningNotification.ts +0 -5
- package/services/mac-bridge/codex-types/v2/WriteStatus.ts +0 -5
- package/services/mac-bridge/codex-types/v2/index.ts +0 -204
- package/services/mac-bridge/eslint.config.cjs +0 -22
- package/services/mac-bridge/package.json +0 -30
- package/services/mac-bridge/schema.ts +0 -0
- package/services/mac-bridge/src/index.ts +0 -18
- package/services/mac-bridge/src/server.ts +0 -426
- package/services/mac-bridge/src/services/__tests__/gitService.test.ts +0 -157
- package/services/mac-bridge/src/services/__tests__/realtimeHub.test.ts +0 -116
- package/services/mac-bridge/src/services/__tests__/terminalService.test.ts +0 -51
- package/services/mac-bridge/src/services/codexAppServerClient.ts +0 -507
- package/services/mac-bridge/src/services/codexCliAdapter.ts +0 -622
- package/services/mac-bridge/src/services/gitService.ts +0 -61
- package/services/mac-bridge/src/services/realtimeHub.ts +0 -25
- package/services/mac-bridge/src/services/terminalService.ts +0 -226
- package/services/mac-bridge/src/types.ts +0 -151
- package/services/mac-bridge/src/utils/__tests__/threadMapping.test.ts +0 -397
- package/services/mac-bridge/src/utils/threadMapping.ts +0 -176
- package/services/mac-bridge/tsconfig.json +0 -16
- package/services/mac-bridge/vitest.config.ts +0 -9
- package/services/rust-bridge/.env.example +0 -14
- package/services/rust-bridge/package.json +0 -13
- package/services/rust-bridge/security_best_practices_report.md +0 -24
- package/site/index.html +0 -54
- package/site/privacy/index.html +0 -80
- package/site/styles.css +0 -135
- package/site/support/index.html +0 -51
- package/site/terms/index.html +0 -68
- package/tsconfig.json +0 -4
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
import { resolveComposerBottomSpacing } from '../chat-input-layout';
|
|
2
|
-
|
|
3
|
-
describe('resolveComposerBottomSpacing', () => {
|
|
4
|
-
it('keeps a small fixed reserve for iPhones with a home indicator', () => {
|
|
5
|
-
expect(resolveComposerBottomSpacing('ios', 34, false)).toEqual({
|
|
6
|
-
baseBottomPadding: 6,
|
|
7
|
-
extraBottomInset: 8,
|
|
8
|
-
totalBottomPadding: 14,
|
|
9
|
-
});
|
|
10
|
-
});
|
|
11
|
-
|
|
12
|
-
it('collapses the bottom reserve while the keyboard is visible on iOS', () => {
|
|
13
|
-
expect(resolveComposerBottomSpacing('ios', 34, true)).toEqual({
|
|
14
|
-
baseBottomPadding: 2,
|
|
15
|
-
extraBottomInset: 0,
|
|
16
|
-
totalBottomPadding: 2,
|
|
17
|
-
});
|
|
18
|
-
});
|
|
19
|
-
|
|
20
|
-
it('treats Android gesture navigation as nearly flush', () => {
|
|
21
|
-
expect(resolveComposerBottomSpacing('android', 8, false)).toEqual({
|
|
22
|
-
baseBottomPadding: 8,
|
|
23
|
-
extraBottomInset: 2,
|
|
24
|
-
totalBottomPadding: 10,
|
|
25
|
-
});
|
|
26
|
-
});
|
|
27
|
-
|
|
28
|
-
it('keeps extra clearance for Android phones with visible nav buttons', () => {
|
|
29
|
-
expect(resolveComposerBottomSpacing('android', 24, false)).toEqual({
|
|
30
|
-
baseBottomPadding: 8,
|
|
31
|
-
extraBottomInset: 8,
|
|
32
|
-
totalBottomPadding: 16,
|
|
33
|
-
});
|
|
34
|
-
});
|
|
35
|
-
});
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
import { toMarkdownImageSource } from '../chatImageSource';
|
|
2
|
-
|
|
3
|
-
describe('chatImageSource', () => {
|
|
4
|
-
it('keeps remote https images direct', () => {
|
|
5
|
-
expect(
|
|
6
|
-
toMarkdownImageSource(
|
|
7
|
-
'https://example.com/image.png',
|
|
8
|
-
'http://192.168.1.26:8787',
|
|
9
|
-
'secret-token'
|
|
10
|
-
)
|
|
11
|
-
).toEqual({
|
|
12
|
-
uri: 'https://example.com/image.png',
|
|
13
|
-
});
|
|
14
|
-
});
|
|
15
|
-
|
|
16
|
-
it('proxies absolute local paths through the bridge', () => {
|
|
17
|
-
expect(
|
|
18
|
-
toMarkdownImageSource('/tmp/My QR.png', 'http://192.168.1.26:8787', 'secret-token')
|
|
19
|
-
).toEqual({
|
|
20
|
-
uri: 'http://192.168.1.26:8787/local-image?path=%2Ftmp%2FMy%20QR.png',
|
|
21
|
-
headers: {
|
|
22
|
-
Authorization: 'Bearer secret-token',
|
|
23
|
-
},
|
|
24
|
-
});
|
|
25
|
-
});
|
|
26
|
-
|
|
27
|
-
it('proxies file scheme paths through the bridge', () => {
|
|
28
|
-
expect(
|
|
29
|
-
toMarkdownImageSource(
|
|
30
|
-
'file:///Users/mohitpatil/Desktop/bridge.png',
|
|
31
|
-
'http://192.168.1.26:8787',
|
|
32
|
-
null
|
|
33
|
-
)
|
|
34
|
-
).toEqual({
|
|
35
|
-
uri: 'http://192.168.1.26:8787/local-image?path=%2FUsers%2Fmohitpatil%2FDesktop%2Fbridge.png',
|
|
36
|
-
});
|
|
37
|
-
});
|
|
38
|
-
|
|
39
|
-
it('returns null for unsupported relative paths', () => {
|
|
40
|
-
expect(
|
|
41
|
-
toMarkdownImageSource('./relative.png', 'http://192.168.1.26:8787', 'secret-token')
|
|
42
|
-
).toBeNull();
|
|
43
|
-
});
|
|
44
|
-
});
|
|
@@ -1,138 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
buildComposerUsageLimitBadges,
|
|
3
|
-
formatComposerUsageLimitLabel,
|
|
4
|
-
} from '../usageLimitBadges';
|
|
5
|
-
|
|
6
|
-
describe('composerUsageLimits', () => {
|
|
7
|
-
it('maps primary and secondary windows into remaining-percentage badges', () => {
|
|
8
|
-
const badges = buildComposerUsageLimitBadges({
|
|
9
|
-
limitId: 'codex',
|
|
10
|
-
limitName: 'Codex',
|
|
11
|
-
planType: 'plus',
|
|
12
|
-
credits: null,
|
|
13
|
-
primary: {
|
|
14
|
-
usedPercent: 34,
|
|
15
|
-
windowDurationMins: 300,
|
|
16
|
-
resetsAt: 1_700_000_000,
|
|
17
|
-
},
|
|
18
|
-
secondary: {
|
|
19
|
-
usedPercent: 79,
|
|
20
|
-
windowDurationMins: 10_080,
|
|
21
|
-
resetsAt: 1_700_000_100,
|
|
22
|
-
},
|
|
23
|
-
});
|
|
24
|
-
|
|
25
|
-
expect(badges).toEqual([
|
|
26
|
-
{
|
|
27
|
-
id: 'primary',
|
|
28
|
-
label: '5h',
|
|
29
|
-
remainingPercent: 66,
|
|
30
|
-
tone: 'neutral',
|
|
31
|
-
},
|
|
32
|
-
{
|
|
33
|
-
id: 'secondary',
|
|
34
|
-
label: 'weekly',
|
|
35
|
-
remainingPercent: 21,
|
|
36
|
-
tone: 'warning',
|
|
37
|
-
},
|
|
38
|
-
]);
|
|
39
|
-
});
|
|
40
|
-
|
|
41
|
-
it('clamps remaining percent and escalates critical limits', () => {
|
|
42
|
-
const badges = buildComposerUsageLimitBadges({
|
|
43
|
-
limitId: 'codex',
|
|
44
|
-
limitName: null,
|
|
45
|
-
planType: 'pro',
|
|
46
|
-
credits: null,
|
|
47
|
-
primary: {
|
|
48
|
-
usedPercent: 140,
|
|
49
|
-
windowDurationMins: 60,
|
|
50
|
-
resetsAt: null,
|
|
51
|
-
},
|
|
52
|
-
secondary: {
|
|
53
|
-
usedPercent: 89.6,
|
|
54
|
-
windowDurationMins: 1_440,
|
|
55
|
-
resetsAt: null,
|
|
56
|
-
},
|
|
57
|
-
});
|
|
58
|
-
|
|
59
|
-
expect(badges).toEqual([
|
|
60
|
-
{
|
|
61
|
-
id: 'primary',
|
|
62
|
-
label: '1h',
|
|
63
|
-
remainingPercent: 0,
|
|
64
|
-
tone: 'critical',
|
|
65
|
-
},
|
|
66
|
-
{
|
|
67
|
-
id: 'secondary',
|
|
68
|
-
label: '1d',
|
|
69
|
-
remainingPercent: 10,
|
|
70
|
-
tone: 'critical',
|
|
71
|
-
},
|
|
72
|
-
]);
|
|
73
|
-
});
|
|
74
|
-
|
|
75
|
-
it('omits missing windows', () => {
|
|
76
|
-
const badges = buildComposerUsageLimitBadges({
|
|
77
|
-
limitId: 'codex',
|
|
78
|
-
limitName: null,
|
|
79
|
-
planType: 'team',
|
|
80
|
-
credits: null,
|
|
81
|
-
primary: null,
|
|
82
|
-
secondary: {
|
|
83
|
-
usedPercent: 45,
|
|
84
|
-
windowDurationMins: 120,
|
|
85
|
-
resetsAt: null,
|
|
86
|
-
},
|
|
87
|
-
});
|
|
88
|
-
|
|
89
|
-
expect(badges).toEqual([
|
|
90
|
-
{
|
|
91
|
-
id: 'secondary',
|
|
92
|
-
label: '2h',
|
|
93
|
-
remainingPercent: 55,
|
|
94
|
-
tone: 'neutral',
|
|
95
|
-
},
|
|
96
|
-
]);
|
|
97
|
-
});
|
|
98
|
-
|
|
99
|
-
it('formats generic duration labels', () => {
|
|
100
|
-
expect(formatComposerUsageLimitLabel(45)).toBe('45m');
|
|
101
|
-
expect(formatComposerUsageLimitLabel(720)).toBe('12h');
|
|
102
|
-
expect(formatComposerUsageLimitLabel(2_880)).toBe('2d');
|
|
103
|
-
});
|
|
104
|
-
|
|
105
|
-
it('falls back to 5h and weekly for the default codex pair when duration is omitted', () => {
|
|
106
|
-
const badges = buildComposerUsageLimitBadges({
|
|
107
|
-
limitId: 'codex',
|
|
108
|
-
limitName: 'Codex',
|
|
109
|
-
planType: 'plus',
|
|
110
|
-
credits: null,
|
|
111
|
-
primary: {
|
|
112
|
-
usedPercent: 31,
|
|
113
|
-
windowDurationMins: null,
|
|
114
|
-
resetsAt: 1_700_000_000,
|
|
115
|
-
},
|
|
116
|
-
secondary: {
|
|
117
|
-
usedPercent: 82,
|
|
118
|
-
windowDurationMins: null,
|
|
119
|
-
resetsAt: 1_700_000_100,
|
|
120
|
-
},
|
|
121
|
-
});
|
|
122
|
-
|
|
123
|
-
expect(badges).toEqual([
|
|
124
|
-
{
|
|
125
|
-
id: 'primary',
|
|
126
|
-
label: '5h',
|
|
127
|
-
remainingPercent: 69,
|
|
128
|
-
tone: 'neutral',
|
|
129
|
-
},
|
|
130
|
-
{
|
|
131
|
-
id: 'secondary',
|
|
132
|
-
label: 'weekly',
|
|
133
|
-
remainingPercent: 18,
|
|
134
|
-
tone: 'warning',
|
|
135
|
-
},
|
|
136
|
-
]);
|
|
137
|
-
});
|
|
138
|
-
});
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
appendVoiceWaveformSample,
|
|
3
|
-
fallbackVoiceWaveformLevel,
|
|
4
|
-
formatVoiceRecordingDuration,
|
|
5
|
-
normalizeVoiceMetering,
|
|
6
|
-
} from '../voiceWaveform';
|
|
7
|
-
|
|
8
|
-
describe('voiceWaveform', () => {
|
|
9
|
-
it('formats recording duration as mm:ss', () => {
|
|
10
|
-
expect(formatVoiceRecordingDuration(0)).toBe('00:00');
|
|
11
|
-
expect(formatVoiceRecordingDuration(9_000)).toBe('00:09');
|
|
12
|
-
expect(formatVoiceRecordingDuration(65_000)).toBe('01:05');
|
|
13
|
-
});
|
|
14
|
-
|
|
15
|
-
it('normalizes metering into a bounded waveform level', () => {
|
|
16
|
-
expect(normalizeVoiceMetering(undefined)).toBe(0);
|
|
17
|
-
expect(normalizeVoiceMetering(-160)).toBe(0);
|
|
18
|
-
expect(normalizeVoiceMetering(5)).toBe(1);
|
|
19
|
-
expect(normalizeVoiceMetering(-5)).toBeGreaterThan(normalizeVoiceMetering(-35));
|
|
20
|
-
});
|
|
21
|
-
|
|
22
|
-
it('keeps only the newest waveform samples', () => {
|
|
23
|
-
expect(appendVoiceWaveformSample([0.1, 0.2], 0.3, 4)).toEqual([0.1, 0.2, 0.3]);
|
|
24
|
-
expect(appendVoiceWaveformSample([0.1, 0.2, 0.3], 0.4, 3)).toEqual([0.2, 0.3, 0.4]);
|
|
25
|
-
});
|
|
26
|
-
|
|
27
|
-
it('provides a subtle fallback waveform level when metering is unavailable', () => {
|
|
28
|
-
expect(fallbackVoiceWaveformLevel(0)).toBeGreaterThan(0);
|
|
29
|
-
expect(fallbackVoiceWaveformLevel(10)).toBeLessThanOrEqual(1);
|
|
30
|
-
});
|
|
31
|
-
});
|
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
import { spacing } from '../theme';
|
|
2
|
-
|
|
3
|
-
const IOS_HOME_INDICATOR_THRESHOLD = 20;
|
|
4
|
-
const ANDROID_NAV_BUTTONS_THRESHOLD = 16;
|
|
5
|
-
|
|
6
|
-
export interface ComposerBottomSpacing {
|
|
7
|
-
baseBottomPadding: number;
|
|
8
|
-
extraBottomInset: number;
|
|
9
|
-
totalBottomPadding: number;
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
export function resolveComposerBottomSpacing(
|
|
13
|
-
platform: string,
|
|
14
|
-
safeAreaBottomInset: number,
|
|
15
|
-
keyboardVisible: boolean
|
|
16
|
-
): ComposerBottomSpacing {
|
|
17
|
-
const normalizedInset = Number.isFinite(safeAreaBottomInset)
|
|
18
|
-
? Math.max(0, safeAreaBottomInset)
|
|
19
|
-
: 0;
|
|
20
|
-
|
|
21
|
-
const baseBottomPadding = resolveBaseBottomPadding(platform, keyboardVisible);
|
|
22
|
-
const extraBottomInset = keyboardVisible
|
|
23
|
-
? 0
|
|
24
|
-
: resolveRestingBottomInset(platform, normalizedInset);
|
|
25
|
-
|
|
26
|
-
return {
|
|
27
|
-
baseBottomPadding,
|
|
28
|
-
extraBottomInset,
|
|
29
|
-
totalBottomPadding: baseBottomPadding + extraBottomInset,
|
|
30
|
-
};
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
function resolveBaseBottomPadding(platform: string, keyboardVisible: boolean): number {
|
|
34
|
-
if (platform === 'ios') {
|
|
35
|
-
return keyboardVisible ? 2 : spacing.xs + 2;
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
if (platform === 'android') {
|
|
39
|
-
return keyboardVisible ? 0 : spacing.sm;
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
return keyboardVisible ? 0 : spacing.sm;
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
function resolveRestingBottomInset(platform: string, safeAreaBottomInset: number): number {
|
|
46
|
-
if (platform === 'ios') {
|
|
47
|
-
return safeAreaBottomInset >= IOS_HOME_INDICATOR_THRESHOLD ? spacing.sm : 0;
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
if (platform === 'android') {
|
|
51
|
-
if (safeAreaBottomInset >= ANDROID_NAV_BUTTONS_THRESHOLD) {
|
|
52
|
-
return spacing.sm;
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
return safeAreaBottomInset > 0 ? 2 : 0;
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
return safeAreaBottomInset;
|
|
59
|
-
}
|
|
@@ -1,86 +0,0 @@
|
|
|
1
|
-
type RemoteImageSource = {
|
|
2
|
-
uri: string;
|
|
3
|
-
headers?: Record<string, string>;
|
|
4
|
-
};
|
|
5
|
-
|
|
6
|
-
const REMOTE_SCHEME_PATTERN =
|
|
7
|
-
/^(?:https?:\/\/|data:image\/|content:\/\/|assets-library:\/\/|ph:\/\/|blob:)/i;
|
|
8
|
-
const FILE_SCHEME_PATTERN = /^file:\/\//i;
|
|
9
|
-
const WINDOWS_ABSOLUTE_PATH_PATTERN = /^[A-Za-z]:[\\/]/;
|
|
10
|
-
|
|
11
|
-
export function toMarkdownImageSource(
|
|
12
|
-
rawSource: string,
|
|
13
|
-
bridgeUrl: string | null | undefined,
|
|
14
|
-
bridgeToken: string | null | undefined
|
|
15
|
-
): RemoteImageSource | null {
|
|
16
|
-
const normalizedSource = rawSource.trim();
|
|
17
|
-
if (!normalizedSource) {
|
|
18
|
-
return null;
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
if (FILE_SCHEME_PATTERN.test(normalizedSource)) {
|
|
22
|
-
const withoutScheme = normalizedSource.replace(FILE_SCHEME_PATTERN, '');
|
|
23
|
-
return toBridgeImageSource(withoutScheme, bridgeUrl, bridgeToken);
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
if (REMOTE_SCHEME_PATTERN.test(normalizedSource)) {
|
|
27
|
-
return { uri: normalizedSource };
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
if (normalizedSource.startsWith('/') || WINDOWS_ABSOLUTE_PATH_PATTERN.test(normalizedSource)) {
|
|
31
|
-
return toBridgeImageSource(normalizedSource, bridgeUrl, bridgeToken);
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
return null;
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
function toBridgeImageSource(
|
|
38
|
-
rawPath: string,
|
|
39
|
-
bridgeUrl: string | null | undefined,
|
|
40
|
-
bridgeToken: string | null | undefined
|
|
41
|
-
): RemoteImageSource | null {
|
|
42
|
-
const normalizedBridgeUrl = bridgeUrl?.trim();
|
|
43
|
-
if (!normalizedBridgeUrl) {
|
|
44
|
-
return null;
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
const normalizedPath = normalizeLocalPath(rawPath);
|
|
48
|
-
if (!normalizedPath) {
|
|
49
|
-
return null;
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
const uri = `${normalizedBridgeUrl.replace(/\/$/, '')}/local-image?path=${encodeURIComponent(
|
|
53
|
-
normalizedPath
|
|
54
|
-
)}`;
|
|
55
|
-
const token = bridgeToken?.trim();
|
|
56
|
-
|
|
57
|
-
return token
|
|
58
|
-
? {
|
|
59
|
-
uri,
|
|
60
|
-
headers: {
|
|
61
|
-
Authorization: `Bearer ${token}`,
|
|
62
|
-
},
|
|
63
|
-
}
|
|
64
|
-
: { uri };
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
function normalizeLocalPath(rawPath: string): string | null {
|
|
68
|
-
let normalizedPath = rawPath.trim();
|
|
69
|
-
if (!normalizedPath) {
|
|
70
|
-
return null;
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
normalizedPath = normalizedPath.replace(/\\/g, '/');
|
|
74
|
-
|
|
75
|
-
try {
|
|
76
|
-
normalizedPath = decodeURI(normalizedPath);
|
|
77
|
-
} catch {
|
|
78
|
-
// Keep original path when URI decoding fails.
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
if (WINDOWS_ABSOLUTE_PATH_PATTERN.test(normalizedPath) && !normalizedPath.startsWith('/')) {
|
|
82
|
-
normalizedPath = `/${normalizedPath}`;
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
return normalizedPath;
|
|
86
|
-
}
|
|
@@ -1,109 +0,0 @@
|
|
|
1
|
-
import type { AccountRateLimitSnapshot, AccountRateLimitWindow } from '../api/types';
|
|
2
|
-
|
|
3
|
-
export type ComposerUsageLimitTone = 'neutral' | 'warning' | 'critical';
|
|
4
|
-
|
|
5
|
-
export interface ComposerUsageLimitBadgeModel {
|
|
6
|
-
id: 'primary' | 'secondary';
|
|
7
|
-
label: string;
|
|
8
|
-
remainingPercent: number;
|
|
9
|
-
tone: ComposerUsageLimitTone;
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
export function buildComposerUsageLimitBadges(
|
|
13
|
-
snapshot: AccountRateLimitSnapshot | null
|
|
14
|
-
): ComposerUsageLimitBadgeModel[] {
|
|
15
|
-
if (!snapshot) {
|
|
16
|
-
return [];
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
const badges: ComposerUsageLimitBadgeModel[] = [];
|
|
20
|
-
const primary = toComposerUsageLimitBadge('primary', snapshot.primary, snapshot);
|
|
21
|
-
if (primary) {
|
|
22
|
-
badges.push(primary);
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
const secondary = toComposerUsageLimitBadge('secondary', snapshot.secondary, snapshot);
|
|
26
|
-
if (secondary) {
|
|
27
|
-
badges.push(secondary);
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
return badges;
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
export function formatComposerUsageLimitLabel(windowDurationMins: number | null): string {
|
|
34
|
-
if (windowDurationMins === null || windowDurationMins <= 0) {
|
|
35
|
-
return 'limit';
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
if (windowDurationMins === 300) {
|
|
39
|
-
return '5h';
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
if (windowDurationMins === 10_080) {
|
|
43
|
-
return 'weekly';
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
if (windowDurationMins < 60) {
|
|
47
|
-
return `${String(windowDurationMins)}m`;
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
if (windowDurationMins < 1_440) {
|
|
51
|
-
return `${String(Math.round(windowDurationMins / 60))}h`;
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
return `${String(Math.round(windowDurationMins / 1_440))}d`;
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
function toComposerUsageLimitBadge(
|
|
58
|
-
id: ComposerUsageLimitBadgeModel['id'],
|
|
59
|
-
window: AccountRateLimitWindow | null,
|
|
60
|
-
snapshot: AccountRateLimitSnapshot
|
|
61
|
-
): ComposerUsageLimitBadgeModel | null {
|
|
62
|
-
if (!window) {
|
|
63
|
-
return null;
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
const remainingPercent = clampPercent(100 - window.usedPercent);
|
|
67
|
-
return {
|
|
68
|
-
id,
|
|
69
|
-
label: resolveComposerUsageLimitLabel(id, window.windowDurationMins, snapshot),
|
|
70
|
-
remainingPercent,
|
|
71
|
-
tone:
|
|
72
|
-
remainingPercent <= 10
|
|
73
|
-
? 'critical'
|
|
74
|
-
: remainingPercent <= 25
|
|
75
|
-
? 'warning'
|
|
76
|
-
: 'neutral',
|
|
77
|
-
};
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
function resolveComposerUsageLimitLabel(
|
|
81
|
-
id: ComposerUsageLimitBadgeModel['id'],
|
|
82
|
-
windowDurationMins: number | null,
|
|
83
|
-
snapshot: AccountRateLimitSnapshot
|
|
84
|
-
): string {
|
|
85
|
-
const explicitLabel = formatComposerUsageLimitLabel(windowDurationMins);
|
|
86
|
-
if (explicitLabel !== 'limit') {
|
|
87
|
-
return explicitLabel;
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
const normalizedLimitId = snapshot.limitId?.trim().toLowerCase() ?? null;
|
|
91
|
-
const hasPrimary = Boolean(snapshot.primary);
|
|
92
|
-
const hasSecondary = Boolean(snapshot.secondary);
|
|
93
|
-
const looksLikeDefaultCodexPair =
|
|
94
|
-
hasPrimary && hasSecondary && (!normalizedLimitId || normalizedLimitId === 'codex');
|
|
95
|
-
|
|
96
|
-
if (looksLikeDefaultCodexPair) {
|
|
97
|
-
return id === 'primary' ? '5h' : 'weekly';
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
return 'limit';
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
function clampPercent(value: number): number {
|
|
104
|
-
if (!Number.isFinite(value)) {
|
|
105
|
-
return 0;
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
return Math.max(0, Math.min(100, Math.round(value)));
|
|
109
|
-
}
|
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
export const VOICE_WAVEFORM_BAR_COUNT = 28;
|
|
2
|
-
export const VOICE_WAVEFORM_SAMPLE_INTERVAL_MS = 80;
|
|
3
|
-
|
|
4
|
-
const METERING_FLOOR_DB = -55;
|
|
5
|
-
|
|
6
|
-
export function createVoiceWaveformSeed(barCount: number): number[] {
|
|
7
|
-
return Array.from({ length: Math.max(1, barCount) }, () => 0);
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
export function appendVoiceWaveformSample(
|
|
11
|
-
previousSamples: number[],
|
|
12
|
-
nextSample: number,
|
|
13
|
-
maxBars: number
|
|
14
|
-
): number[] {
|
|
15
|
-
const trimmedSamples = previousSamples.slice(-(Math.max(1, maxBars) - 1));
|
|
16
|
-
return [...trimmedSamples, clampWaveformLevel(nextSample)];
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
export function normalizeVoiceMetering(metering: number | null | undefined): number {
|
|
20
|
-
if (typeof metering !== 'number' || Number.isNaN(metering)) {
|
|
21
|
-
return 0;
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
const clampedMetering = Math.max(METERING_FLOOR_DB, Math.min(0, metering));
|
|
25
|
-
const normalizedLevel = (clampedMetering - METERING_FLOOR_DB) / Math.abs(METERING_FLOOR_DB);
|
|
26
|
-
return clampWaveformLevel(Math.pow(normalizedLevel, 0.65));
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
export function fallbackVoiceWaveformLevel(step: number): number {
|
|
30
|
-
const oscillation = Math.abs(Math.sin(step / 2.35));
|
|
31
|
-
return clampWaveformLevel(0.12 + oscillation * 0.24);
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
export function formatVoiceRecordingDuration(durationMillis: number): string {
|
|
35
|
-
const totalSeconds = Math.max(0, Math.floor(durationMillis / 1_000));
|
|
36
|
-
const minutes = Math.floor(totalSeconds / 60);
|
|
37
|
-
const seconds = totalSeconds % 60;
|
|
38
|
-
return `${String(minutes).padStart(2, '0')}:${String(seconds).padStart(2, '0')}`;
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
function clampWaveformLevel(level: number): number {
|
|
42
|
-
if (!Number.isFinite(level)) {
|
|
43
|
-
return 0;
|
|
44
|
-
}
|
|
45
|
-
return Math.max(0, Math.min(1, level));
|
|
46
|
-
}
|
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
import { isInsecureRemoteUrl, normalizeBridgeUrlInput } from './bridgeUrl';
|
|
2
|
-
|
|
3
|
-
const defaultPrivacyPolicyUrl =
|
|
4
|
-
'https://mohit-patil.github.io/clawdex-mobile/privacy/';
|
|
5
|
-
const defaultTermsOfServiceUrl =
|
|
6
|
-
'https://mohit-patil.github.io/clawdex-mobile/terms/';
|
|
7
|
-
|
|
8
|
-
const legacyHostBridgeUrl = normalizeBridgeUrlInput(
|
|
9
|
-
process.env.EXPO_PUBLIC_HOST_BRIDGE_URL ??
|
|
10
|
-
process.env.EXPO_PUBLIC_MAC_BRIDGE_URL ??
|
|
11
|
-
''
|
|
12
|
-
);
|
|
13
|
-
const hostBridgeToken =
|
|
14
|
-
process.env.EXPO_PUBLIC_HOST_BRIDGE_TOKEN?.trim() ||
|
|
15
|
-
process.env.EXPO_PUBLIC_MAC_BRIDGE_TOKEN?.trim() ||
|
|
16
|
-
null;
|
|
17
|
-
const allowWsQueryTokenAuth =
|
|
18
|
-
process.env.EXPO_PUBLIC_ALLOW_QUERY_TOKEN_AUTH?.trim().toLowerCase() ===
|
|
19
|
-
'true';
|
|
20
|
-
const allowInsecureRemoteBridge =
|
|
21
|
-
process.env.EXPO_PUBLIC_ALLOW_INSECURE_REMOTE_BRIDGE?.trim().toLowerCase() ===
|
|
22
|
-
'true';
|
|
23
|
-
const privacyPolicyUrl =
|
|
24
|
-
process.env.EXPO_PUBLIC_PRIVACY_POLICY_URL?.trim() || defaultPrivacyPolicyUrl;
|
|
25
|
-
const termsOfServiceUrl =
|
|
26
|
-
process.env.EXPO_PUBLIC_TERMS_OF_SERVICE_URL?.trim() || defaultTermsOfServiceUrl;
|
|
27
|
-
const externalStatusFullSyncDebounceMs = parseNonNegativeIntEnv(
|
|
28
|
-
process.env.EXPO_PUBLIC_EXTERNAL_STATUS_FULL_SYNC_DEBOUNCE_MS,
|
|
29
|
-
450
|
|
30
|
-
);
|
|
31
|
-
|
|
32
|
-
if (legacyHostBridgeUrl && isInsecureRemoteUrl(legacyHostBridgeUrl) && !allowInsecureRemoteBridge) {
|
|
33
|
-
console.warn(
|
|
34
|
-
'Using build-time bridge URL fallback from env. Configure bridge URL in-app from onboarding/settings when possible.'
|
|
35
|
-
);
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
export const env = {
|
|
39
|
-
legacyHostBridgeUrl,
|
|
40
|
-
hostBridgeToken,
|
|
41
|
-
allowWsQueryTokenAuth,
|
|
42
|
-
allowInsecureRemoteBridge,
|
|
43
|
-
externalStatusFullSyncDebounceMs,
|
|
44
|
-
privacyPolicyUrl,
|
|
45
|
-
termsOfServiceUrl
|
|
46
|
-
};
|
|
47
|
-
|
|
48
|
-
function parseNonNegativeIntEnv(value: string | undefined, fallback: number): number {
|
|
49
|
-
if (typeof value !== 'string') {
|
|
50
|
-
return fallback;
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
const trimmed = value.trim();
|
|
54
|
-
if (!trimmed) {
|
|
55
|
-
return fallback;
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
const parsed = Number.parseInt(trimmed, 10);
|
|
59
|
-
if (!Number.isFinite(parsed) || parsed < 0) {
|
|
60
|
-
return fallback;
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
return parsed;
|
|
64
|
-
}
|