codex-overleaf-link 2.4.0 → 2.5.0
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 +272 -311
- package/README.zh-CN.md +287 -326
- package/extension/bootstrap/background.js +47 -10
- package/extension/bootstrap/manifest.template.json +9 -4
- package/extension/bootstrap/popup.html +10 -16
- package/extension/bootstrap/update.js +25 -2
- package/extension/runtime-manifest.json +3 -1
- package/extension/src/background.js +28 -3
- package/extension/src/backgroundSharedSessions.js +380 -0
- package/extension/src/backgroundUpdateCoordinator.js +442 -379
- package/extension/src/content/activeTurnControl.js +8 -0
- package/extension/src/content/assetTransferBroker.js +186 -12
- package/extension/src/content/changeHistoryView.js +175 -0
- package/extension/src/content/composerAttachments.js +24 -22
- package/extension/src/content/composerPanel.js +23 -8
- package/extension/src/content/contentRuntime.js +572 -571
- package/extension/src/content/diagnosticsController.js +1 -2
- package/extension/src/content/diagnosticsExport.js +222 -0
- package/extension/src/content/diagnosticsPanel.js +48 -19
- package/extension/src/content/diffReviewPanel.js +8 -5
- package/extension/src/content/generated/content.bundle.js +8974 -1781
- package/extension/src/content/generated/content.bundle.meta.json +22 -3
- package/extension/src/content/legacyGlobalRegistry.js +19 -1
- package/extension/src/content/localSkillsPanel.js +42 -7
- package/extension/src/content/markdownDomRenderer.js +9 -4
- package/extension/src/content/modelPicker.js +1 -1
- package/extension/src/content/pageBridgeClient.js +18 -3
- package/extension/src/content/panelMaintenance.js +51 -120
- package/extension/src/content/panelRenderer.js +4 -0
- package/extension/src/content/pendingInputView.js +109 -76
- package/extension/src/content/providerSettingsCoordinator.js +17 -6
- package/extension/src/content/providerSettingsDialog.js +661 -108
- package/extension/src/content/recentProjects.js +364 -356
- package/extension/src/content/runActivitySummary.js +631 -0
- package/extension/src/content/runController.js +3 -1
- package/extension/src/content/runFailureNotice.js +14 -1
- package/extension/src/content/runGuidanceController.js +4 -3
- package/extension/src/content/runPresence.js +306 -0
- package/extension/src/content/runQueueScheduler.js +2 -1
- package/extension/src/content/runResultActions.js +123 -3
- package/extension/src/content/runTimelineView.js +194 -164
- package/extension/src/content/scopedPersistenceCoordinator.js +2 -1
- package/extension/src/content/scopedPersistencePanelState.js +45 -2
- package/extension/src/content/selectionContextView.js +300 -0
- package/extension/src/content/sessionPersistence.js +10 -2
- package/extension/src/content/settingsPanel.js +93 -54
- package/extension/src/content/settingsWorkbench.js +374 -0
- package/extension/src/content/sharedSessionViewSync.js +72 -0
- package/extension/src/content/subagentActivityView.js +195 -0
- package/extension/src/content/trackedChangeCaptureController.js +7 -3
- package/extension/src/content/updateNotice.js +121 -50
- package/extension/src/content/writebackController.js +257 -0
- package/extension/src/content/writebackOrchestrator.js +146 -141
- package/extension/src/content/writebackPlan.js +231 -0
- package/extension/src/content/writebackRecovery.js +122 -0
- package/extension/src/content/writingStyleSettings.js +576 -0
- package/extension/src/content/writtenChangesView.js +152 -0
- package/extension/src/page/binaryAssetUploader.js +97 -19
- package/extension/src/page/overleafProjectSnapshot.js +1 -0
- package/extension/src/page/referenceProjects.js +148 -0
- package/extension/src/page/saveState.js +58 -3
- package/extension/src/page/snapshotRouter.js +44 -13
- package/extension/src/page/textCoordinates.js +102 -0
- package/extension/src/page/textFileCreator.js +350 -59
- package/extension/src/page/trackedChangeCapture.js +42 -56
- package/extension/src/page/trackedChangeOwnership.js +198 -0
- package/extension/src/page/trackedChangeReplay.js +164 -0
- package/extension/src/page/trackedChangesLifecycle.js +139 -150
- package/extension/src/page/treeOperations.js +36 -29
- package/extension/src/page/writebackReceiptJournal.js +112 -0
- package/extension/src/page/writebackRouter.js +176 -136
- package/extension/src/pageBridge.js +59 -101
- package/extension/src/popup.js +203 -59
- package/extension/src/shared/agentTranscript.js +18 -4
- package/extension/src/shared/auditRecords.js +71 -0
- package/extension/src/shared/changeHistoryModel.js +94 -0
- package/extension/src/shared/compatibility.js +1 -1
- package/extension/src/shared/compileAdapter.js +42 -0
- package/extension/src/shared/failureReasons.js +20 -0
- package/extension/src/shared/globalPreferences.js +1 -1
- package/extension/src/shared/i18n.js +187 -65
- package/extension/src/shared/managedUpdateProjection.js +6 -3
- package/extension/src/shared/pageRpcContract.js +7 -1
- package/extension/src/shared/providerProfiles.js +109 -0
- 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/scopedPersistenceBrowserAdapter.js +6 -3
- package/extension/src/shared/selectionContext.js +28 -0
- package/extension/src/shared/sessionState.js +97 -6
- package/extension/src/shared/sharedSessionBridge.js +288 -0
- package/extension/src/shared/storageDb.js +23 -55
- package/extension/src/shared/storageMigration.js +3 -0
- package/extension/src/shared/storageRunActions.js +54 -4
- package/extension/src/shared/storageValuePruning.js +40 -0
- package/extension/src/shared/subagentActivityModel.js +174 -0
- package/extension/src/shared/undoOperations.js +87 -0
- package/extension/src/shared/updateConsent.js +37 -8
- package/extension/src/shared/writebackIntent.js +62 -0
- package/extension/src/shared/writebackSettlement.js +29 -10
- package/extension/src/shared/writingStyle.js +33 -0
- package/extension/styles/panel.css +2136 -744
- package/extension/styles/popup.css +110 -0
- package/native-host/src/anthropicBridgeRequest.js +2 -1
- package/native-host/src/codexModelRecovery.js +107 -0
- package/native-host/src/codexPromptAssembly.js +2 -0
- package/native-host/src/codexProviderLaunch.js +3 -3
- package/native-host/src/codexRuntimeIdentity.js +1 -0
- package/native-host/src/codexSessionRunner.js +146 -177
- package/native-host/src/codexSessionTiming.js +71 -0
- package/native-host/src/managedInstall.js +5 -4
- package/native-host/src/nativeEnvironment.js +70 -0
- package/native-host/src/nativeQuotas.js +15 -8
- package/native-host/src/overleafWorkspaceRules.js +16 -0
- package/native-host/src/processStopBarrier.js +80 -0
- package/native-host/src/providerModelCatalog.js +4 -3
- package/native-host/src/providerProfile.js +13 -1
- package/native-host/src/providerReasoning.js +9 -5
- package/native-host/src/providerStore.js +4 -0
- package/native-host/src/readProgressGuard.js +84 -17
- package/native-host/src/releaseTransport.js +14 -5
- package/native-host/src/selectionScope.js +58 -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/subagentBroker.js +102 -98
- package/native-host/src/subagentTelemetry.js +316 -0
- package/native-host/src/subagentWorkspace.js +103 -0
- package/native-host/src/subagentWorkspacePath.js +31 -0
- package/native-host/src/taskRunnerRuntime.js +55 -5
- package/native-host/src/turnAttachments.js +113 -0
- package/native-host/src/updateManager.js +122 -12
- 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 +447 -0
- package/package.json +1 -1
|
@@ -13,6 +13,7 @@
|
|
|
13
13
|
'idle',
|
|
14
14
|
'checking',
|
|
15
15
|
'update_available',
|
|
16
|
+
'manual_install_required',
|
|
16
17
|
'downloading',
|
|
17
18
|
'staged',
|
|
18
19
|
'waiting_for_idle',
|
|
@@ -41,6 +42,7 @@
|
|
|
41
42
|
idle: { value: 0, determinate: true, phase: 'idle' },
|
|
42
43
|
checking: { value: 0, determinate: false, phase: 'checking' },
|
|
43
44
|
update_available: { value: 0, determinate: true, phase: 'available' },
|
|
45
|
+
manual_install_required: { value: 0, determinate: true, phase: 'manual' },
|
|
44
46
|
downloading: { value: 35, determinate: false, phase: 'downloading' },
|
|
45
47
|
staged: { value: 65, determinate: true, phase: 'staged' },
|
|
46
48
|
waiting_for_idle: { value: 65, determinate: true, phase: 'waiting' },
|
|
@@ -66,6 +68,9 @@
|
|
|
66
68
|
blocker: blockers[0] || '',
|
|
67
69
|
blockers,
|
|
68
70
|
transactionId: safeId(value.transactionId),
|
|
71
|
+
operationId: safeId(value.operationId),
|
|
72
|
+
cancelRequested: value.cancelRequested === true,
|
|
73
|
+
recoveryPending: value.recoveryPending === true,
|
|
69
74
|
initiatedBy: ['automatic', 'manual'].includes(value.initiatedBy) ? value.initiatedBy : '',
|
|
70
75
|
lastCheckedAt: finiteNumber(value.lastCheckedAt),
|
|
71
76
|
stagedAt: finiteNumber(value.stagedAt),
|
|
@@ -74,10 +79,22 @@
|
|
|
74
79
|
heartbeatAt: finiteNumber(value.heartbeatAt),
|
|
75
80
|
postponeUntil: finiteNumber(value.postponeUntil),
|
|
76
81
|
code: safeToken(value.code),
|
|
77
|
-
message: String(value.message || '').replace(/\s+/g, ' ').trim().slice(0, 300)
|
|
82
|
+
message: String(value.message || '').replace(/\s+/g, ' ').trim().slice(0, 300),
|
|
83
|
+
manualReason: normalizeManualReason(value.manualReason)
|
|
78
84
|
};
|
|
79
85
|
}
|
|
80
86
|
|
|
87
|
+
// Signed per-locale reason a release needs a one-time reinstall.
|
|
88
|
+
function normalizeManualReason(value) {
|
|
89
|
+
if (!value || typeof value !== 'object') return {};
|
|
90
|
+
const out = {};
|
|
91
|
+
for (const locale of ['en', 'zh']) {
|
|
92
|
+
const text = String(value[locale] || '').replace(/\s+/g, ' ').trim().slice(0, 400);
|
|
93
|
+
if (text) out[locale] = text;
|
|
94
|
+
}
|
|
95
|
+
return out;
|
|
96
|
+
}
|
|
97
|
+
|
|
81
98
|
function normalizeConsentState(value = {}) {
|
|
82
99
|
return {
|
|
83
100
|
schemaVersion: 1,
|
|
@@ -106,6 +123,13 @@
|
|
|
106
123
|
consent.snoozedUntil > now;
|
|
107
124
|
const execution = EXECUTION_STATES.has(state.state);
|
|
108
125
|
const available = state.state === 'update_available' && newer;
|
|
126
|
+
// A newer release that only a reinstall can apply. It is shown even after
|
|
127
|
+
// an automatic check, because no Update now button can ever resolve it.
|
|
128
|
+
// Compare with the running version: after the reinstall the stored state
|
|
129
|
+
// still names the old one, and the notice must clear by itself.
|
|
130
|
+
const runningVersion = safeVersion(options.currentVersion) || state.currentVersion;
|
|
131
|
+
const manualInstall = state.state === 'manual_install_required'
|
|
132
|
+
&& compareStableVersions(state.latestVersion, runningVersion) > 0;
|
|
109
133
|
const progress = getProgressModel(state);
|
|
110
134
|
const quietFailure = state.state === 'failed' &&
|
|
111
135
|
state.initiatedBy !== 'manual' &&
|
|
@@ -124,16 +148,21 @@
|
|
|
124
148
|
},
|
|
125
149
|
progress,
|
|
126
150
|
available,
|
|
151
|
+
manualInstall,
|
|
127
152
|
snoozed,
|
|
128
153
|
execution,
|
|
129
|
-
showPanel:
|
|
130
|
-
|
|
131
|
-
|
|
154
|
+
showPanel: state.cancelRequested || state.recoveryPending
|
|
155
|
+
|| (state.state === 'checking' && state.initiatedBy === 'manual')
|
|
156
|
+
|| ((available || manualInstall) && !snoozed) || execution || state.state === 'rolled_back' || visibleFailure,
|
|
157
|
+
badge: getBadge(state, { available: available || manualInstall, snoozed }),
|
|
132
158
|
actions: {
|
|
133
|
-
check: ['idle', 'committed', 'rolled_back', 'failed'].includes(state.state),
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
159
|
+
check: !state.cancelRequested && !state.recoveryPending && ['idle', 'committed', 'rolled_back', 'failed', 'manual_install_required'].includes(state.state),
|
|
160
|
+
copyInstall: manualInstall,
|
|
161
|
+
install: available && !state.cancelRequested && !state.recoveryPending,
|
|
162
|
+
later: !state.recoveryPending && (available || manualInstall || ['staged', 'waiting_for_idle'].includes(state.state)),
|
|
163
|
+
cancel: !state.recoveryPending && (state.cancelRequested || ['checking', 'downloading', 'staged', 'waiting_for_idle'].includes(state.state)),
|
|
164
|
+
recover: state.recoveryPending,
|
|
165
|
+
retry: !state.cancelRequested && !state.recoveryPending && ['failed', 'rolled_back'].includes(state.state)
|
|
137
166
|
}
|
|
138
167
|
};
|
|
139
168
|
}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
(function (root, factory) {
|
|
2
|
+
if (typeof module === 'object' && module.exports) module.exports = factory(require('./undoOperations'));
|
|
3
|
+
else root.CodexOverleafModuleRegistry.define('WritebackIntent', ['UndoOperations'], factory);
|
|
4
|
+
})(typeof globalThis !== 'undefined' ? globalThis : window, function (Undo) {
|
|
5
|
+
'use strict';
|
|
6
|
+
const MAX_BYTES = 300 * 1024;
|
|
7
|
+
const types = new Set(['edit', 'create', 'delete', 'rename', 'move', 'binary-create', 'overwrite-binary']);
|
|
8
|
+
const path = value => typeof value === 'string' && value && !value.startsWith('/')
|
|
9
|
+
&& !/^[A-Za-z]:/.test(value) && !value.replace(/\\/g, '/').split('/').some(part => !part || part === '.' || part === '..');
|
|
10
|
+
function normalize(value) {
|
|
11
|
+
if (!value || typeof value !== 'object' || !value.id || !value.projectId || !value.accountScopeId
|
|
12
|
+
|| !value.sessionId || !value.runId || !Array.isArray(value.operations) || value.operations.length > 100) return null;
|
|
13
|
+
const operations = [];
|
|
14
|
+
for (const input of value.operations) {
|
|
15
|
+
if (!types.has(input?.type) || !path(input.path) || (input.to && !path(input.to))) return null;
|
|
16
|
+
const op = { type: input.type, path: input.path };
|
|
17
|
+
for (const key of ['to', 'content', 'replaceAll', 'find', 'replace', 'sha256', 'mimeType']) {
|
|
18
|
+
if (typeof input[key] === 'string') op[key] = input[key];
|
|
19
|
+
}
|
|
20
|
+
if (Number.isSafeInteger(input.size)) op.size = input.size;
|
|
21
|
+
if (Array.isArray(input.patches)) {
|
|
22
|
+
if (input.patches.length > 1000) return null;
|
|
23
|
+
op.patches = input.patches.map(p => ({ from: p.from, to: p.to, expected: String(p.expected ?? ''), insert: String(p.insert ?? '') }));
|
|
24
|
+
if (op.patches.some(p => !Number.isSafeInteger(p.from) || !Number.isSafeInteger(p.to) || p.from < 0 || p.to < p.from)) return null;
|
|
25
|
+
}
|
|
26
|
+
operations.push(op);
|
|
27
|
+
}
|
|
28
|
+
const paths = new Set(operations.flatMap(op => [op.path, op.to].filter(Boolean)));
|
|
29
|
+
const baseFiles = (Array.isArray(value.baseFiles) ? value.baseFiles : [])
|
|
30
|
+
.filter(file => paths.has(file?.path) && typeof file.content === 'string')
|
|
31
|
+
.map(file => ({ path: file.path, content: file.content }));
|
|
32
|
+
const result = { v: 1, id: String(value.id).slice(0, 160), projectId: String(value.projectId).slice(0, 160),
|
|
33
|
+
accountScopeId: String(value.accountScopeId).slice(0, 160), sessionId: String(value.sessionId).slice(0, 160),
|
|
34
|
+
runId: String(value.runId).slice(0, 160), createdAt: String(value.createdAt || '').slice(0, 64),
|
|
35
|
+
requireReviewing: value.requireReviewing === true, operations, baseFiles };
|
|
36
|
+
if (typeof value.requestId === 'string') result.requestId = value.requestId.slice(0, 160);
|
|
37
|
+
const size = typeof TextEncoder === 'function' ? new TextEncoder().encode(JSON.stringify(result)).length : JSON.stringify(result).length * 2;
|
|
38
|
+
return size <= MAX_BYTES ? result : null;
|
|
39
|
+
}
|
|
40
|
+
function expectedFiles(value) {
|
|
41
|
+
return Undo.buildExpectedFilesAfterOperations({ files: value.baseFiles }, value.operations.filter(op => !op.type.includes('binary')));
|
|
42
|
+
}
|
|
43
|
+
function normalizeSaveCheck(value) {
|
|
44
|
+
if (!value?.projectId || !value.accountScopeId || !value.sessionId || !value.runId
|
|
45
|
+
|| !Array.isArray(value.files) || value.files.length > 1000) return null;
|
|
46
|
+
const files = [];
|
|
47
|
+
for (const file of value.files) {
|
|
48
|
+
if (!path(file?.path)) return null;
|
|
49
|
+
if (file.absent === true) files.push({ path: file.path, absent: true });
|
|
50
|
+
else if (/^[a-f0-9]{64}$/i.test(file.sha256 || '')) {
|
|
51
|
+
if (file.kind !== undefined && !['text', 'binary'].includes(file.kind)) return null;
|
|
52
|
+
files.push({ path: file.path, sha256: file.sha256.toLowerCase(),
|
|
53
|
+
...(file.kind ? { kind: file.kind } : {}) });
|
|
54
|
+
}
|
|
55
|
+
else return null;
|
|
56
|
+
}
|
|
57
|
+
return files.length ? { v: 1, projectId: String(value.projectId).slice(0, 160),
|
|
58
|
+
accountScopeId: String(value.accountScopeId).slice(0, 160), sessionId: String(value.sessionId).slice(0, 160),
|
|
59
|
+
runId: String(value.runId).slice(0, 160), createdAt: String(value.createdAt || '').slice(0, 64), files } : null;
|
|
60
|
+
}
|
|
61
|
+
return { normalize, normalizeSaveCheck, expectedFiles, MAX_BYTES };
|
|
62
|
+
});
|
|
@@ -190,6 +190,27 @@
|
|
|
190
190
|
: (state === 'not_started' || !state ? 'not-attempted' : 'unknown');
|
|
191
191
|
}
|
|
192
192
|
|
|
193
|
+
// A Retry sync re-settles only the files it replays: merge them over the run's original facts.
|
|
194
|
+
function mergeRetrySettlement(previous, retryFacts, failureReasons = DefaultFailureReasons) {
|
|
195
|
+
if (!retryFacts || typeof retryFacts !== 'object') return previous || null;
|
|
196
|
+
if (!previous || typeof previous !== 'object') return retryFacts;
|
|
197
|
+
const retried = new Map((retryFacts.fileSettlements || []).map(file => [file.path, file]));
|
|
198
|
+
const fileSettlements = [...(previous.fileSettlements || []).map(file => retried.get(file.path) || file),
|
|
199
|
+
...[...retried.values()].filter(file => !(previous.fileSettlements || []).some(old => old.path === file.path))];
|
|
200
|
+
const stillFailing = new Set(fileSettlements.flatMap(file => file.failureCodes || []));
|
|
201
|
+
const resolved = new Set([...retried.values()].filter(file => file.applied === 'complete').map(file => file.path));
|
|
202
|
+
const failures = [...(previous.failures || []).filter(failure => !resolved.has(failure.file)
|
|
203
|
+
&& (failure.file || stillFailing.has(failure.code))), ...(retryFacts.failures || [])];
|
|
204
|
+
const all = (key, value) => fileSettlements.every(file => file[key] === value);
|
|
205
|
+
const any = (key, value) => fileSettlements.some(file => file[key] === value);
|
|
206
|
+
return compactSettlementFacts({ ...previous, fileSettlements, failures, documentEffect: retryFacts.documentEffect === 'changed' ? 'changed' : previous.documentEffect,
|
|
207
|
+
evidence: { ...previous.evidence, saved: retryFacts.evidence?.saved || previous.evidence?.saved,
|
|
208
|
+
applied: all('applied', 'complete') ? 'complete' : any('applied', 'complete') ? 'partial' : previous.evidence?.applied,
|
|
209
|
+
readBack: all('readBack', 'exact') ? 'exact' : any('readBack', 'mismatch') ? 'mismatch' : 'partial',
|
|
210
|
+
settled: deriveSettledEvidence(selectPrimaryFailure(failures, failureReasons), fileSettlements) },
|
|
211
|
+
capturedAt: retryFacts.capturedAt || previous.capturedAt });
|
|
212
|
+
}
|
|
213
|
+
|
|
193
214
|
function deriveSettledEvidence(primaryFailure, fileSettlements = []) {
|
|
194
215
|
if (primaryFailure?.terminalState === 'needs_review'
|
|
195
216
|
|| fileSettlements.some(file => file.readBack === 'mismatch')) {
|
|
@@ -270,17 +291,13 @@
|
|
|
270
291
|
}
|
|
271
292
|
const successful = isSuccessfulTrackedChangeSettlement(input.result);
|
|
272
293
|
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 =>
|
|
294
|
+
// Both actions cover every targeted file. Partial success must retain
|
|
295
|
+
// the original recovery material for unresolved siblings.
|
|
296
|
+
const incomplete = collectRunResultSkipped(input.result).length > 0
|
|
297
|
+
|| input.result?.ok === false;
|
|
298
|
+
const needsReview = incomplete || !successful || failures.some(failure =>
|
|
282
299
|
failure.terminalState === 'needs_review' || reviewCodes.has(failure.code)
|
|
283
|
-
)
|
|
300
|
+
);
|
|
284
301
|
const status = needsReview ? 'needs_review' : kind === 'accept' ? 'accepted' : 'rejected';
|
|
285
302
|
return {
|
|
286
303
|
decision: status,
|
|
@@ -368,6 +385,7 @@
|
|
|
368
385
|
next[field] = cloneValue(disposition.value);
|
|
369
386
|
}
|
|
370
387
|
}
|
|
388
|
+
if (next.undoStatus === 'applied' || next.trackedChangeStatus === 'rejected') Object.assign(next, { saveCheck: null, retryWriteback: null });
|
|
371
389
|
if (settlementResult.facts) {
|
|
372
390
|
const existingSettlement = next.settlement && typeof next.settlement === 'object'
|
|
373
391
|
? next.settlement
|
|
@@ -711,6 +729,7 @@
|
|
|
711
729
|
SETTLEMENT_FACTS_MAX_BYTES,
|
|
712
730
|
aggregateFileSettlements,
|
|
713
731
|
applySettlementTransition,
|
|
732
|
+
mergeRetrySettlement,
|
|
714
733
|
acceptDiagnosticStatus,
|
|
715
734
|
attachVerifiedContentToOperation,
|
|
716
735
|
attachAcceptNotVerifiedFailure,
|
|
@@ -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
|
+
});
|