codex-overleaf-link 2.4.1 → 2.5.1
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 +275 -305
- package/README.zh-CN.md +290 -320
- package/extension/bootstrap/background.js +99 -19
- package/extension/bootstrap/manifest.template.json +9 -4
- package/extension/bootstrap/popup.html +11 -16
- package/extension/bootstrap/popupFallback.js +55 -0
- package/extension/bootstrap/update.js +25 -2
- package/extension/bootstrap/updateStatus.js +1 -0
- package/extension/runtime-manifest.json +3 -1
- package/extension/src/background.js +234 -56
- package/extension/src/backgroundBootstrapMigration.js +181 -0
- package/extension/src/backgroundSharedSessions.js +440 -0
- package/extension/src/backgroundUpdateCoordinator.js +541 -381
- package/extension/src/backgroundUpdateSafety.js +173 -0
- package/extension/src/content/activeTurnControl.js +16 -2
- package/extension/src/content/applyResultFormatters.js +46 -73
- package/extension/src/content/assetTransferBroker.js +244 -12
- package/extension/src/content/changeHistoryView.js +175 -0
- package/extension/src/content/composerAttachments.js +117 -67
- package/extension/src/content/composerPanel.js +41 -8
- package/extension/src/content/contentRuntime.js +1084 -1099
- package/extension/src/content/diagnosticsController.js +122 -97
- package/extension/src/content/diagnosticsExport.js +236 -0
- package/extension/src/content/diagnosticsPanel.js +78 -19
- package/extension/src/content/diffReviewPanel.js +8 -5
- package/extension/src/content/directoryCleanupRecovery.js +54 -0
- package/extension/src/content/generated/content.bundle.js +14680 -3606
- package/extension/src/content/generated/content.bundle.meta.json +30 -3
- package/extension/src/content/globalPreferencesController.js +1 -1
- package/extension/src/content/legacyGlobalRegistry.js +25 -1
- package/extension/src/content/localSkillsPanel.js +141 -16
- package/extension/src/content/markdownDomRenderer.js +9 -4
- package/extension/src/content/markdownText.js +5 -6
- package/extension/src/content/modelPicker.js +8 -5
- package/extension/src/content/nativeCompatibilityController.js +45 -20
- package/extension/src/content/otWarmMirror.js +4 -5
- package/extension/src/content/otWarmMirrorController.js +17 -20
- package/extension/src/content/pageBridgeClient.js +33 -5
- package/extension/src/content/panelMaintenance.js +87 -132
- package/extension/src/content/panelRenderer.js +10 -0
- package/extension/src/content/pendingInputView.js +109 -76
- package/extension/src/content/projectProviderSelection.js +13 -4
- package/extension/src/content/projectSessionCleanup.js +109 -62
- package/extension/src/content/projectSettingsCoordinator.js +39 -2
- package/extension/src/content/providerSettingsCoordinator.js +63 -14
- package/extension/src/content/providerSettingsDialog.js +724 -113
- package/extension/src/content/recentProjects.js +21 -6
- package/extension/src/content/runActivitySummary.js +665 -0
- package/extension/src/content/runCompletionMeta.js +344 -0
- package/extension/src/content/runController.js +40 -15
- package/extension/src/content/runFailureNotice.js +34 -12
- package/extension/src/content/runGuidanceController.js +76 -30
- package/extension/src/content/runGuidanceView.js +59 -10
- package/extension/src/content/runPresence.js +306 -0
- package/extension/src/content/runQueueScheduler.js +150 -43
- package/extension/src/content/runRecoveryActions.js +146 -0
- package/extension/src/content/runResultActions.js +11 -8
- package/extension/src/content/runReviewController.js +574 -0
- package/extension/src/content/runScrollLayout.js +21 -2
- package/extension/src/content/runTimelineView.js +315 -290
- package/extension/src/content/scopedPersistencePanelState.js +51 -6
- package/extension/src/content/selectionContextView.js +300 -0
- package/extension/src/content/sensitivePreflight.js +140 -0
- package/extension/src/content/sessionForkController.js +80 -17
- package/extension/src/content/sessionManager.js +1 -1
- package/extension/src/content/sessionPersistence.js +6 -1
- package/extension/src/content/settingsPanel.js +84 -55
- package/extension/src/content/settingsWorkbench.js +379 -0
- package/extension/src/content/sharedSessionViewSync.js +109 -0
- package/extension/src/content/subagentActivityView.js +195 -0
- package/extension/src/content/trackedChangeCaptureController.js +7 -3
- package/extension/src/content/updateIdle.js +4 -1
- package/extension/src/content/updateNotice.js +179 -56
- package/extension/src/content/updateSafetyReceiver.js +58 -0
- package/extension/src/content/writebackController.js +308 -2
- package/extension/src/content/writebackOrchestrator.js +213 -199
- package/extension/src/content/writebackPlan.js +231 -0
- package/extension/src/content/writebackRecovery.js +122 -0
- package/extension/src/content/writingStyleSettings.js +600 -0
- package/extension/src/content/writtenChangesView.js +152 -0
- package/extension/src/page/binaryAssetUploader.js +223 -23
- package/extension/src/page/fileMover.js +256 -0
- package/extension/src/page/overleafProjectSnapshot.js +1 -0
- package/extension/src/page/ownedDirectoryCleanup.js +94 -0
- package/extension/src/page/referenceProjects.js +149 -0
- package/extension/src/page/reviewContext.js +113 -0
- package/extension/src/page/saveState.js +20 -6
- package/extension/src/page/snapshotRouter.js +124 -48
- package/extension/src/page/textCoordinates.js +102 -0
- package/extension/src/page/textFileCreator.js +442 -71
- package/extension/src/page/trackedChangeCapture.js +53 -57
- package/extension/src/page/trackedChangeOwnership.js +216 -0
- package/extension/src/page/trackedChangeReplay.js +184 -0
- package/extension/src/page/trackedChangesLifecycle.js +343 -339
- package/extension/src/page/treeOperations.js +33 -12
- package/extension/src/page/updateSafetyProbe.js +41 -0
- package/extension/src/page/writebackReceiptJournal.js +114 -0
- package/extension/src/page/writebackRouter.js +242 -201
- package/extension/src/pageBridge.js +73 -102
- package/extension/src/popup.js +261 -65
- package/extension/src/shared/agentTranscript.js +41 -4
- package/extension/src/shared/auditRecords.js +73 -0
- package/extension/src/shared/changeHistoryModel.js +94 -0
- package/extension/src/shared/compatibility.js +22 -6
- package/extension/src/shared/compileAdapter.js +101 -37
- package/extension/src/shared/composerAttachmentDraft.js +151 -0
- package/extension/src/shared/directoryCleanupProof.js +43 -0
- package/extension/src/shared/failureReasons.js +329 -3
- package/extension/src/shared/globalPreferences.js +31 -14
- package/extension/src/shared/governanceRules.js +4 -37
- package/extension/src/shared/i18n.js +389 -25
- package/extension/src/shared/managedUpdateProjection.js +8 -5
- package/extension/src/shared/nativeRequestIdentity.js +1 -0
- package/extension/src/shared/pageRpcContract.js +9 -2
- package/extension/src/shared/projectFiles.js +21 -44
- package/extension/src/shared/providerProfiles.js +114 -3
- package/extension/src/shared/runActivityModel.js +361 -0
- package/extension/src/shared/runExecutionSnapshot.js +8 -2
- package/extension/src/shared/runExecutionSnapshotCodec.js +16 -4
- package/extension/src/shared/runInputQueue.js +48 -5
- package/extension/src/shared/scopedPersistenceBrowserAdapter.js +6 -3
- package/extension/src/shared/selectionContext.js +37 -0
- package/extension/src/shared/sessionState.js +166 -30
- package/extension/src/shared/settlementFacts.js +10 -2
- package/extension/src/shared/sharedSessionBridge.js +311 -0
- package/extension/src/shared/sharedSessionTransfer.js +140 -0
- package/extension/src/shared/staleGuard.js +118 -13
- package/extension/src/shared/storageDb.js +77 -78
- package/extension/src/shared/storageMigration.js +74 -111
- package/extension/src/shared/storageRunActions.js +211 -22
- package/extension/src/shared/storageValuePruning.js +40 -0
- package/extension/src/shared/subagentActivityModel.js +174 -0
- package/extension/src/shared/undoOperations.js +216 -6
- package/extension/src/shared/updateConsent.js +42 -11
- package/extension/src/shared/updateRuntimeIdentity.js +1 -1
- package/extension/src/shared/writebackIntent.js +78 -0
- package/extension/src/shared/writebackOperationEvidence.js +4 -15
- package/extension/src/shared/writebackSettlement.js +67 -48
- package/extension/src/shared/writingStyle.js +33 -0
- package/extension/styles/panel.css +1987 -385
- package/extension/styles/popup.css +110 -0
- package/native-host/src/anthropicBridgeRequest.js +6 -3
- package/native-host/src/anthropicBridgeResponse.js +6 -2
- package/native-host/src/anthropicMessagesBridge.js +24 -16
- package/native-host/src/bootstrapMigration.js +296 -0
- package/native-host/src/bootstrapMigrationContract.js +101 -0
- package/native-host/src/bootstrapUpdate.js +233 -0
- package/native-host/src/bootstrapUpdateWatchdog.js +44 -0
- package/native-host/src/chatBridgeResponse.js +10 -0
- package/native-host/src/chatCompletionsBridge.js +21 -15
- package/native-host/src/codexConfigPaths.js +106 -0
- package/native-host/src/codexHome.js +66 -73
- package/native-host/src/codexHomeScope.js +124 -0
- package/native-host/src/codexInheritedAuth.js +90 -0
- package/native-host/src/codexLocalSkills.js +301 -0
- package/native-host/src/codexModelRecovery.js +107 -0
- package/native-host/src/codexPromptAssembly.js +33 -12
- package/native-host/src/codexProviderLaunch.js +3 -3
- package/native-host/src/codexProviderTest.js +24 -26
- package/native-host/src/codexRuntimeIdentity.js +1 -0
- package/native-host/src/codexSessionRunner.js +211 -318
- package/native-host/src/codexSessionTiming.js +21 -8
- package/native-host/src/codexSkillIsolation.js +170 -0
- package/native-host/src/codexThreadFork.js +19 -3
- package/native-host/src/index.js +19 -7
- package/native-host/src/managedInstall.js +115 -39
- package/native-host/src/managedInstallRecovery.js +140 -0
- package/native-host/src/managedRuntimeEvidence.js +57 -0
- package/native-host/src/mirrorWorkspace.js +92 -22
- package/native-host/src/nativeDoctor.js +15 -0
- package/native-host/src/nativeEnvironment.js +70 -0
- package/native-host/src/nativeHelperLifecycle.js +21 -0
- package/native-host/src/nativeHostRegistration.js +33 -0
- package/native-host/src/nativeQuotas.js +15 -8
- package/native-host/src/nativeRunLifecycle.js +71 -0
- package/native-host/src/overleafWorkspaceRules.js +16 -0
- package/native-host/src/processStopBarrier.js +115 -0
- package/native-host/src/projectPathPlatform.js +30 -0
- package/native-host/src/providerHttp.js +80 -0
- package/native-host/src/providerModelCatalog.js +4 -3
- package/native-host/src/providerProfile.js +17 -3
- package/native-host/src/providerReasoning.js +10 -11
- package/native-host/src/providerRuntime.js +1 -0
- package/native-host/src/providerStore.js +76 -14
- package/native-host/src/releaseTransport.js +14 -5
- package/native-host/src/responsesPassthroughBridge.js +266 -52
- package/native-host/src/runtimeInstaller.js +21 -1
- package/native-host/src/selectionScope.js +86 -0
- package/native-host/src/skills/parallel-subagents/SKILL.md +31 -3
- package/native-host/src/skills/writing-style-builder/SKILL.md +146 -0
- package/native-host/src/subagentAdmission.js +26 -0
- package/native-host/src/subagentBroker.js +176 -159
- package/native-host/src/subagentTelemetry.js +325 -0
- package/native-host/src/subagentWorkspace.js +103 -0
- package/native-host/src/subagentWorkspacePath.js +34 -0
- package/native-host/src/taskRunnerRuntime.js +130 -57
- package/native-host/src/tomlStatements.js +140 -0
- package/native-host/src/turnAttachments.js +113 -0
- package/native-host/src/updateManager.js +406 -38
- package/native-host/src/updateNetworkControl.js +75 -0
- package/native-host/src/updateTrust.js +21 -2
- package/native-host/src/vendor/pdfjs/LICENSE +177 -0
- package/native-host/src/vendor/pdfjs/SOURCE.txt +3 -0
- package/native-host/src/vendor/pdfjs/cmaps/78-EUC-H.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/78-EUC-V.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/78-H.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/78-RKSJ-H.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/78-RKSJ-V.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/78-V.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/78ms-RKSJ-H.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/78ms-RKSJ-V.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/83pv-RKSJ-H.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/90ms-RKSJ-H.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/90ms-RKSJ-V.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/90msp-RKSJ-H.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/90msp-RKSJ-V.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/90pv-RKSJ-H.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/90pv-RKSJ-V.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/Add-H.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/Add-RKSJ-H.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/Add-RKSJ-V.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/Add-V.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/Adobe-CNS1-0.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/Adobe-CNS1-1.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/Adobe-CNS1-2.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/Adobe-CNS1-3.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/Adobe-CNS1-4.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/Adobe-CNS1-5.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/Adobe-CNS1-6.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/Adobe-CNS1-UCS2.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/Adobe-GB1-0.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/Adobe-GB1-1.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/Adobe-GB1-2.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/Adobe-GB1-3.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/Adobe-GB1-4.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/Adobe-GB1-5.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/Adobe-GB1-UCS2.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/Adobe-Japan1-0.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/Adobe-Japan1-1.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/Adobe-Japan1-2.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/Adobe-Japan1-3.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/Adobe-Japan1-4.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/Adobe-Japan1-5.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/Adobe-Japan1-6.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/Adobe-Japan1-UCS2.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/Adobe-Korea1-0.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/Adobe-Korea1-1.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/Adobe-Korea1-2.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/Adobe-Korea1-UCS2.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/B5-H.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/B5-V.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/B5pc-H.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/B5pc-V.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/CNS-EUC-H.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/CNS-EUC-V.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/CNS1-H.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/CNS1-V.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/CNS2-H.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/CNS2-V.bcmap +3 -0
- package/native-host/src/vendor/pdfjs/cmaps/ETHK-B5-H.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/ETHK-B5-V.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/ETen-B5-H.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/ETen-B5-V.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/ETenms-B5-H.bcmap +3 -0
- package/native-host/src/vendor/pdfjs/cmaps/ETenms-B5-V.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/EUC-H.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/EUC-V.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/Ext-H.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/Ext-RKSJ-H.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/Ext-RKSJ-V.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/Ext-V.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/GB-EUC-H.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/GB-EUC-V.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/GB-H.bcmap +4 -0
- package/native-host/src/vendor/pdfjs/cmaps/GB-V.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/GBK-EUC-H.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/GBK-EUC-V.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/GBK2K-H.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/GBK2K-V.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/GBKp-EUC-H.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/GBKp-EUC-V.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/GBT-EUC-H.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/GBT-EUC-V.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/GBT-H.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/GBT-V.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/GBTpc-EUC-H.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/GBTpc-EUC-V.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/GBpc-EUC-H.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/GBpc-EUC-V.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/H.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/HKdla-B5-H.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/HKdla-B5-V.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/HKdlb-B5-H.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/HKdlb-B5-V.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/HKgccs-B5-H.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/HKgccs-B5-V.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/HKm314-B5-H.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/HKm314-B5-V.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/HKm471-B5-H.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/HKm471-B5-V.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/HKscs-B5-H.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/HKscs-B5-V.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/Hankaku.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/Hiragana.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/KSC-EUC-H.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/KSC-EUC-V.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/KSC-H.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/KSC-Johab-H.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/KSC-Johab-V.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/KSC-V.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/KSCms-UHC-H.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/KSCms-UHC-HW-H.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/KSCms-UHC-HW-V.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/KSCms-UHC-V.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/KSCpc-EUC-H.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/KSCpc-EUC-V.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/Katakana.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/LICENSE +36 -0
- package/native-host/src/vendor/pdfjs/cmaps/NWP-H.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/NWP-V.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/RKSJ-H.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/RKSJ-V.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/Roman.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/UniCNS-UCS2-H.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/UniCNS-UCS2-V.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/UniCNS-UTF16-H.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/UniCNS-UTF16-V.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/UniCNS-UTF32-H.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/UniCNS-UTF32-V.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/UniCNS-UTF8-H.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/UniCNS-UTF8-V.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/UniGB-UCS2-H.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/UniGB-UCS2-V.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/UniGB-UTF16-H.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/UniGB-UTF16-V.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/UniGB-UTF32-H.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/UniGB-UTF32-V.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/UniGB-UTF8-H.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/UniGB-UTF8-V.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/UniJIS-UCS2-H.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/UniJIS-UCS2-HW-H.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/UniJIS-UCS2-HW-V.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/UniJIS-UCS2-V.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/UniJIS-UTF16-H.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/UniJIS-UTF16-V.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/UniJIS-UTF32-H.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/UniJIS-UTF32-V.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/UniJIS-UTF8-H.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/UniJIS-UTF8-V.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/UniJIS2004-UTF16-H.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/UniJIS2004-UTF16-V.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/UniJIS2004-UTF32-H.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/UniJIS2004-UTF32-V.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/UniJIS2004-UTF8-H.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/UniJIS2004-UTF8-V.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/UniJISPro-UCS2-HW-V.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/UniJISPro-UCS2-V.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/UniJISPro-UTF8-V.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/UniJISX0213-UTF32-H.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/UniJISX0213-UTF32-V.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/UniJISX02132004-UTF32-H.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/UniJISX02132004-UTF32-V.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/UniKS-UCS2-H.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/UniKS-UCS2-V.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/UniKS-UTF16-H.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/UniKS-UTF16-V.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/UniKS-UTF32-H.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/UniKS-UTF32-V.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/UniKS-UTF8-H.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/UniKS-UTF8-V.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/V.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/WP-Symbol.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/pdf.mjs +26740 -0
- package/native-host/src/vendor/pdfjs/pdf.worker.mjs +62201 -0
- package/native-host/src/vendor/pdfjs/standard_fonts/FoxitDingbats.pfb +0 -0
- package/native-host/src/vendor/pdfjs/standard_fonts/FoxitFixed.pfb +0 -0
- package/native-host/src/vendor/pdfjs/standard_fonts/FoxitFixedBold.pfb +0 -0
- package/native-host/src/vendor/pdfjs/standard_fonts/FoxitFixedBoldItalic.pfb +0 -0
- package/native-host/src/vendor/pdfjs/standard_fonts/FoxitFixedItalic.pfb +0 -0
- package/native-host/src/vendor/pdfjs/standard_fonts/FoxitSerif.pfb +0 -0
- package/native-host/src/vendor/pdfjs/standard_fonts/FoxitSerifBold.pfb +0 -0
- package/native-host/src/vendor/pdfjs/standard_fonts/FoxitSerifBoldItalic.pfb +0 -0
- package/native-host/src/vendor/pdfjs/standard_fonts/FoxitSerifItalic.pfb +0 -0
- package/native-host/src/vendor/pdfjs/standard_fonts/FoxitSymbol.pfb +0 -0
- package/native-host/src/vendor/pdfjs/standard_fonts/LICENSE_FOXIT +27 -0
- package/native-host/src/vendor/pdfjs/standard_fonts/LICENSE_LIBERATION +102 -0
- package/native-host/src/vendor/pdfjs/standard_fonts/LiberationSans-Bold.ttf +0 -0
- package/native-host/src/vendor/pdfjs/standard_fonts/LiberationSans-BoldItalic.ttf +0 -0
- package/native-host/src/vendor/pdfjs/standard_fonts/LiberationSans-Italic.ttf +0 -0
- package/native-host/src/vendor/pdfjs/standard_fonts/LiberationSans-Regular.ttf +0 -0
- package/native-host/src/writingStyleEvidence.js +102 -0
- package/native-host/src/writingStylePdfWorker.js +35 -0
- package/native-host/src/writingStyleProfile.js +165 -0
- package/native-host/src/writingStyleRuntime.js +475 -0
- package/native-host/src/writingStyleStore.js +73 -0
- package/package.json +1 -1
- package/scripts/install-managed.mjs +1 -0
|
@@ -4,21 +4,24 @@
|
|
|
4
4
|
require('./failureReasons'),
|
|
5
5
|
require('./settlementFacts'),
|
|
6
6
|
require('./writebackEvidenceProjection'),
|
|
7
|
-
require('./writebackOperationEvidence')
|
|
7
|
+
require('./writebackOperationEvidence'),
|
|
8
|
+
require('./undoOperations')
|
|
8
9
|
);
|
|
9
10
|
} else {
|
|
10
11
|
root.CodexOverleafModuleRegistry.define('WritebackSettlement', [
|
|
11
12
|
'FailureReasons',
|
|
12
13
|
'SettlementFacts',
|
|
13
14
|
'WritebackEvidenceProjection',
|
|
14
|
-
'WritebackOperationEvidence'
|
|
15
|
+
'WritebackOperationEvidence',
|
|
16
|
+
'UndoOperations'
|
|
15
17
|
], factory);
|
|
16
18
|
}
|
|
17
19
|
})(typeof window !== 'undefined' ? window : globalThis, function writebackSettlementFactory(
|
|
18
20
|
DefaultFailureReasons,
|
|
19
21
|
SettlementFacts,
|
|
20
22
|
EvidenceProjection,
|
|
21
|
-
OperationEvidence
|
|
23
|
+
OperationEvidence,
|
|
24
|
+
UndoOperations
|
|
22
25
|
) {
|
|
23
26
|
'use strict';
|
|
24
27
|
|
|
@@ -190,8 +193,29 @@
|
|
|
190
193
|
: (state === 'not_started' || !state ? 'not-attempted' : 'unknown');
|
|
191
194
|
}
|
|
192
195
|
|
|
196
|
+
// A Retry sync re-settles only the files it replays: merge them over the run's original facts.
|
|
197
|
+
function mergeRetrySettlement(previous, retryFacts, failureReasons = DefaultFailureReasons) {
|
|
198
|
+
if (!retryFacts || typeof retryFacts !== 'object') return previous || null;
|
|
199
|
+
if (!previous || typeof previous !== 'object') return retryFacts;
|
|
200
|
+
const retried = new Map((retryFacts.fileSettlements || []).map(file => [file.path, file]));
|
|
201
|
+
const fileSettlements = [...(previous.fileSettlements || []).map(file => retried.get(file.path) || file),
|
|
202
|
+
...[...retried.values()].filter(file => !(previous.fileSettlements || []).some(old => old.path === file.path))];
|
|
203
|
+
const stillFailing = new Set(fileSettlements.flatMap(file => file.failureCodes || []));
|
|
204
|
+
const resolved = new Set([...retried.values()].filter(file => file.applied === 'complete').map(file => file.path));
|
|
205
|
+
const failures = [...(previous.failures || []).filter(failure => !resolved.has(failure.file)
|
|
206
|
+
&& (failure.file || stillFailing.has(failure.code))), ...(retryFacts.failures || [])];
|
|
207
|
+
const all = (key, value) => fileSettlements.every(file => file[key] === value);
|
|
208
|
+
const any = (key, value) => fileSettlements.some(file => file[key] === value);
|
|
209
|
+
return compactSettlementFacts({ ...previous, fileSettlements, failures, documentEffect: retryFacts.documentEffect === 'changed' ? 'changed' : previous.documentEffect,
|
|
210
|
+
evidence: { ...previous.evidence, saved: retryFacts.evidence?.saved || previous.evidence?.saved,
|
|
211
|
+
applied: all('applied', 'complete') ? 'complete' : any('applied', 'complete') ? 'partial' : previous.evidence?.applied,
|
|
212
|
+
readBack: all('readBack', 'exact') ? 'exact' : any('readBack', 'mismatch') ? 'mismatch' : 'partial',
|
|
213
|
+
settled: deriveSettledEvidence(selectPrimaryFailure(failures, failureReasons), fileSettlements) },
|
|
214
|
+
capturedAt: retryFacts.capturedAt || previous.capturedAt });
|
|
215
|
+
}
|
|
216
|
+
|
|
193
217
|
function deriveSettledEvidence(primaryFailure, fileSettlements = []) {
|
|
194
|
-
if (primaryFailure?.terminalState === 'needs_review'
|
|
218
|
+
if (primaryFailure?.terminalState === 'needs_review' || DefaultFailureReasons.isUnconfirmedWriteFailure?.(primaryFailure)
|
|
195
219
|
|| fileSettlements.some(file => file.readBack === 'mismatch')) {
|
|
196
220
|
return 'needs-review';
|
|
197
221
|
}
|
|
@@ -270,17 +294,13 @@
|
|
|
270
294
|
}
|
|
271
295
|
const successful = isSuccessfulTrackedChangeSettlement(input.result);
|
|
272
296
|
const reviewCodes = kind === 'accept' ? ACCEPT_NEEDS_REVIEW_CODES : REJECT_NEEDS_REVIEW_CODES;
|
|
273
|
-
//
|
|
274
|
-
//
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
// best-effort terminal policy.
|
|
279
|
-
const incompleteReject = kind === 'reject'
|
|
280
|
-
&& collectRunResultSkipped(input.result).length > 0;
|
|
281
|
-
const needsReview = incompleteReject || (!successful && failures.some(failure =>
|
|
297
|
+
// Both actions cover every targeted file. Partial success must retain
|
|
298
|
+
// the original recovery material for unresolved siblings.
|
|
299
|
+
const incomplete = collectRunResultSkipped(input.result).length > 0
|
|
300
|
+
|| input.result?.ok === false;
|
|
301
|
+
const needsReview = incomplete || !successful || failures.some(failure =>
|
|
282
302
|
failure.terminalState === 'needs_review' || reviewCodes.has(failure.code)
|
|
283
|
-
)
|
|
303
|
+
);
|
|
284
304
|
const status = needsReview ? 'needs_review' : kind === 'accept' ? 'accepted' : 'rejected';
|
|
285
305
|
return {
|
|
286
306
|
decision: status,
|
|
@@ -319,7 +339,8 @@
|
|
|
319
339
|
}
|
|
320
340
|
|
|
321
341
|
function settleLegacyUndo(input = {}) {
|
|
322
|
-
const status = input.status === 'applied'
|
|
342
|
+
const status = input.status === 'applied'
|
|
343
|
+
&& isUndoResultEffectivelyApplied(input.run, input.result, input.run?.undoOperations) ? 'applied' : 'partial';
|
|
323
344
|
const recovery = preserveRecovery();
|
|
324
345
|
return {
|
|
325
346
|
statePatch: { undoStatus: status },
|
|
@@ -368,6 +389,7 @@
|
|
|
368
389
|
next[field] = cloneValue(disposition.value);
|
|
369
390
|
}
|
|
370
391
|
}
|
|
392
|
+
if (next.undoStatus === 'applied' || next.trackedChangeStatus === 'rejected') Object.assign(next, { saveCheck: null, retryWriteback: null });
|
|
371
393
|
if (settlementResult.facts) {
|
|
372
394
|
const existingSettlement = next.settlement && typeof next.settlement === 'object'
|
|
373
395
|
? next.settlement
|
|
@@ -423,7 +445,8 @@
|
|
|
423
445
|
}
|
|
424
446
|
|
|
425
447
|
function isUndoResultEffectivelyApplied(run, result, undoOperations = []) {
|
|
426
|
-
if (
|
|
448
|
+
if (result?.saveVerification?.ok === false || result?.receiptUnconfirmed === true) return false;
|
|
449
|
+
if (!result?.skipped?.length) return result?.ok === true;
|
|
427
450
|
const expectedByPath = new Map((run?.undoExpectedFiles || [])
|
|
428
451
|
.filter(file => file?.path && typeof file.content === 'string')
|
|
429
452
|
.map(file => [normalizeSettlementPath(file.path), file.content])
|
|
@@ -449,10 +472,12 @@
|
|
|
449
472
|
if (entry?.operation?.type === 'edit' && operationPath === normalizedPath) {
|
|
450
473
|
return inner.verifiedContent === expectedContent;
|
|
451
474
|
}
|
|
452
|
-
|
|
453
475
|
const trackedPath = normalizeSettlementPath(entry?.trackedChange?.path);
|
|
454
476
|
if (trackedPath !== normalizedPath) return false;
|
|
455
477
|
const key = String(entry?.trackedChange?.key || '');
|
|
478
|
+
if (['overleaf-review-reject', 'overleaf-review-reject-sweep'].includes(inner.method))
|
|
479
|
+
return /^(?:id:|pos:|sig:)/.test(key) && inner.verified === true
|
|
480
|
+
&& inner.verifiedContent === expectedContent;
|
|
456
481
|
if (key === `editor-undo:${normalizedPath}`) {
|
|
457
482
|
return inner.method === 'overleaf-editor-undo'
|
|
458
483
|
&& inner.verified === true
|
|
@@ -474,14 +499,12 @@
|
|
|
474
499
|
}
|
|
475
500
|
return false;
|
|
476
501
|
}
|
|
477
|
-
|
|
478
502
|
function normalizeSettlementPath(value) {
|
|
479
503
|
return String(value || '')
|
|
480
504
|
.replace(/\\/g, '/')
|
|
481
505
|
.replace(/\/+/g, '/')
|
|
482
506
|
.replace(/^\/+|\/+$/g, '');
|
|
483
507
|
}
|
|
484
|
-
|
|
485
508
|
function attachAcceptNotVerifiedFailure(run, result, options = {}) {
|
|
486
509
|
if (!result || typeof result !== 'object' || result.ok === false) return result;
|
|
487
510
|
if (Array.isArray(result.skipped) && result.skipped.length > 0) return result;
|
|
@@ -562,8 +585,9 @@
|
|
|
562
585
|
const inner = entry?.result || entry;
|
|
563
586
|
if (!inner || inner.ok === true) continue;
|
|
564
587
|
const operation = entry?.operation || (entry?.trackedChange ? { path: entry.trackedChange.path } : undefined);
|
|
565
|
-
|
|
566
|
-
|
|
588
|
+
const normalize = failureReasons?.normalizeWritebackFailure || failureReasons?.normalizeFailureReason;
|
|
589
|
+
failures.push(normalize instanceof Function
|
|
590
|
+
? normalize(inner, operation)
|
|
567
591
|
: normalizeFailure(inner, operation));
|
|
568
592
|
}
|
|
569
593
|
return failures.filter(Boolean);
|
|
@@ -612,9 +636,22 @@
|
|
|
612
636
|
|
|
613
637
|
function attachVerifiedContentToOperation(operation, result) {
|
|
614
638
|
if (!operation || typeof operation !== 'object') return operation;
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
|
|
639
|
+
const createdDirectories = (Array.isArray(result?.createdDirectories) ? result.createdDirectories
|
|
640
|
+
: Array.isArray(result?.moveProof?.createdDirectories) ? result.moveProof.createdDirectories : [])
|
|
641
|
+
.filter(proof => proof?.v === 1 && typeof proof.projectId === 'string' && proof.projectId
|
|
642
|
+
&& typeof proof.path === 'string' && proof.path && !proof.path.split('/').some(part => !part || part === '.' || part === '..')
|
|
643
|
+
&& typeof proof.nativeFolderId === 'string')
|
|
644
|
+
.map(proof => ({ v: 1, projectId: proof.projectId, path: proof.path, nativeFolderId: proof.nativeFolderId,
|
|
645
|
+
ownershipConfirmed: false, observedAfterCreate: proof.observedAfterCreate === true }));
|
|
646
|
+
const rawMove = result?.moveProof;
|
|
647
|
+
const moveProof = rawMove?.v === 1 && ['text', 'binary'].includes(rawMove.kind) && /^[a-f0-9]{64}$/i.test(rawMove.sha256 || '')
|
|
648
|
+
&& typeof rawMove.sourceEntityId === 'string' && rawMove.sourceEntityId
|
|
649
|
+
&& typeof rawMove.targetEntityId === 'string' && rawMove.targetEntityId
|
|
650
|
+
? { v: 1, kind: rawMove.kind, sha256: rawMove.sha256.toLowerCase(), sourceEntityId: rawMove.sourceEntityId,
|
|
651
|
+
targetEntityId: rawMove.targetEntityId, ...(['doc', 'file'].includes(rawMove.entityType) ? { entityType: rawMove.entityType } : {}), ...(createdDirectories.length ? { createdDirectories } : {}) } : null;
|
|
652
|
+
if (!(operation.type === 'edit' && typeof result?.verifiedContent === 'string') && !createdDirectories.length && !moveProof) return operation;
|
|
653
|
+
return { ...operation, ...(operation.type === 'edit' && typeof result?.verifiedContent === 'string' ? { verifiedContent: result.verifiedContent } : {}),
|
|
654
|
+
...(createdDirectories.length ? { createdDirectories } : {}), ...(moveProof ? { moveProof } : {}) };
|
|
618
655
|
}
|
|
619
656
|
|
|
620
657
|
function selectExpectedFilesForTrackedUndo(
|
|
@@ -623,26 +660,7 @@
|
|
|
623
660
|
trackedChanges = [],
|
|
624
661
|
previousExpectedFiles = []
|
|
625
662
|
) {
|
|
626
|
-
|
|
627
|
-
for (const change of trackedChanges || []) {
|
|
628
|
-
if (change?.path) paths.add(change.path);
|
|
629
|
-
}
|
|
630
|
-
for (const operation of operations || []) {
|
|
631
|
-
if (operation?.path) paths.add(operation.path);
|
|
632
|
-
if (operation?.to) paths.add(operation.to);
|
|
633
|
-
}
|
|
634
|
-
const expectedByPath = new Map();
|
|
635
|
-
for (const file of previousExpectedFiles || []) {
|
|
636
|
-
if (paths.has(file?.path) && typeof file?.content === 'string' && !expectedByPath.has(file.path)) {
|
|
637
|
-
expectedByPath.set(file.path, { path: file.path, content: file.content });
|
|
638
|
-
}
|
|
639
|
-
}
|
|
640
|
-
for (const file of project?.files || []) {
|
|
641
|
-
if (paths.has(file?.path) && typeof file?.content === 'string' && !expectedByPath.has(file.path)) {
|
|
642
|
-
expectedByPath.set(file.path, { path: file.path, content: file.content });
|
|
643
|
-
}
|
|
644
|
-
}
|
|
645
|
-
return Array.from(expectedByPath.values());
|
|
663
|
+
return UndoOperations.selectExpectedFilesForTrackedUndo(project, operations, trackedChanges, previousExpectedFiles);
|
|
646
664
|
}
|
|
647
665
|
|
|
648
666
|
function acceptDiagnosticStatus(step, info) {
|
|
@@ -656,10 +674,9 @@
|
|
|
656
674
|
return 'info';
|
|
657
675
|
}
|
|
658
676
|
|
|
659
|
-
function selectPrimaryFailure(failures, failureReasons) {
|
|
660
|
-
|
|
661
|
-
|
|
662
|
-
: failures[0] || null;
|
|
677
|
+
function selectPrimaryFailure(failures, failureReasons = DefaultFailureReasons) {
|
|
678
|
+
const select = failureReasons?.selectPrimaryWritebackFailure || failureReasons?.selectPrimaryFailure;
|
|
679
|
+
return select instanceof Function ? select(failures) : failures[0] || null;
|
|
663
680
|
}
|
|
664
681
|
|
|
665
682
|
function appendSyntheticFailure(result, failure, path, code, type) {
|
|
@@ -711,6 +728,7 @@
|
|
|
711
728
|
SETTLEMENT_FACTS_MAX_BYTES,
|
|
712
729
|
aggregateFileSettlements,
|
|
713
730
|
applySettlementTransition,
|
|
731
|
+
mergeRetrySettlement,
|
|
714
732
|
acceptDiagnosticStatus,
|
|
715
733
|
attachVerifiedContentToOperation,
|
|
716
734
|
attachAcceptNotVerifiedFailure,
|
|
@@ -730,6 +748,7 @@
|
|
|
730
748
|
normalizeOperationEvidence,
|
|
731
749
|
normalizeSaveEvidence,
|
|
732
750
|
projectRunSettlement,
|
|
751
|
+
selectPrimaryFailure,
|
|
733
752
|
selectExpectedFilesForTrackedUndo,
|
|
734
753
|
settle,
|
|
735
754
|
settleLegacyUndo,
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
(function (root, factory) {
|
|
2
|
+
const api = factory();
|
|
3
|
+
if (typeof module === 'object' && module.exports) module.exports = api;
|
|
4
|
+
if (root) root.CodexOverleafWritingStyle = api;
|
|
5
|
+
})(typeof globalThis !== 'undefined' ? globalThis : this, function () {
|
|
6
|
+
'use strict';
|
|
7
|
+
const REFERENCE_LIMITS = Object.freeze({
|
|
8
|
+
maxSources: 3,
|
|
9
|
+
maxPdfBytes: 20 * 1024 * 1024,
|
|
10
|
+
maxPdfTotalBytes: 40 * 1024 * 1024,
|
|
11
|
+
maxProjectBytes: 4 * 1024 * 1024,
|
|
12
|
+
// Two maximum-sized PDFs plus one project remain below Chrome's
|
|
13
|
+
// 64 MiB message ceiling after Base64 encoding and request metadata.
|
|
14
|
+
maxAttachmentTotalBytes: 44 * 1024 * 1024,
|
|
15
|
+
pdfExtractionTimeoutMs: 90000
|
|
16
|
+
});
|
|
17
|
+
function normalizeSnapshot(value) {
|
|
18
|
+
if (value == null || value.enabled === false) return null;
|
|
19
|
+
if (typeof value !== 'object'
|
|
20
|
+
|| typeof value.accountScopeId !== 'string' || !value.accountScopeId || value.accountScopeId.length > 256
|
|
21
|
+
|| !/^[a-zA-Z0-9_-]{1,80}$/.test(value.projectId || '')
|
|
22
|
+
|| !/^[a-f0-9-]{36}$/i.test(value.version || '')
|
|
23
|
+
|| !/^[a-f0-9]{64}$/i.test(value.bundleHash || '')) {
|
|
24
|
+
const error = new Error('The selected writing skill is unavailable. Reopen General settings.');
|
|
25
|
+
error.code = 'writing_style_snapshot_invalid';
|
|
26
|
+
throw error;
|
|
27
|
+
}
|
|
28
|
+
return Object.freeze({ accountScopeId: value.accountScopeId, projectId: value.projectId,
|
|
29
|
+
version: value.version, bundleHash: value.bundleHash.toLowerCase(),
|
|
30
|
+
label: String(value.label || 'Academic writing').slice(0, 160) });
|
|
31
|
+
}
|
|
32
|
+
return { normalizeSnapshot, REFERENCE_LIMITS };
|
|
33
|
+
});
|