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
|
@@ -372,6 +372,7 @@
|
|
|
372
372
|
status: 'running',
|
|
373
373
|
streamKey: getCodexStreamKey(method, params),
|
|
374
374
|
streamRole: method === 'item/agentMessage/delta' ? 'assistant' : 'reasoning',
|
|
375
|
+
streamPhase: params.phase || '',
|
|
375
376
|
appendText: true
|
|
376
377
|
};
|
|
377
378
|
}
|
|
@@ -412,12 +413,13 @@
|
|
|
412
413
|
};
|
|
413
414
|
}
|
|
414
415
|
if (method === 'warning' || method === 'guardianWarning' || method === 'configWarning') {
|
|
415
|
-
const title = cleanVisibleText(params.message || params.warning || '');
|
|
416
|
+
const title = cleanVisibleText(params.message || params.warning || params.summary || '');
|
|
417
|
+
if (!title) return technicalOnly(event, locale);
|
|
416
418
|
return {
|
|
417
419
|
kind: 'activity',
|
|
418
420
|
visible: true,
|
|
419
|
-
title
|
|
420
|
-
status: '
|
|
421
|
+
title,
|
|
422
|
+
status: event.status === 'failed' ? 'failed' : method === 'guardianWarning' ? 'warning' : 'info',
|
|
421
423
|
technicalDetail: normalizeRawEvent(event)
|
|
422
424
|
};
|
|
423
425
|
}
|
|
@@ -459,6 +461,7 @@
|
|
|
459
461
|
status,
|
|
460
462
|
streamKey: getItemStreamKey('agent', item),
|
|
461
463
|
streamRole: 'assistant',
|
|
464
|
+
streamPhase: item.phase || '',
|
|
462
465
|
replaceText: true
|
|
463
466
|
};
|
|
464
467
|
}
|
|
@@ -500,6 +503,10 @@
|
|
|
500
503
|
status,
|
|
501
504
|
detail: {
|
|
502
505
|
command: item.command,
|
|
506
|
+
itemId: item.id,
|
|
507
|
+
threadId: event.detail?.params?.threadId,
|
|
508
|
+
turnId: event.detail?.params?.turnId,
|
|
509
|
+
commandActions: item.commandActions,
|
|
503
510
|
output: item.aggregatedOutput,
|
|
504
511
|
exitCode: item.exitCode
|
|
505
512
|
}
|
|
@@ -863,6 +870,11 @@
|
|
|
863
870
|
: textFor(locale, '本轮没有可撤销的写入', 'this run has no reversible writes');
|
|
864
871
|
}
|
|
865
872
|
|
|
873
|
+
if (input.saveVerification && input.saveVerification.state !== 'not_checked') {
|
|
874
|
+
report.saveState = input.saveVerification.state === 'verified_saved'
|
|
875
|
+
? textFor(locale, '已确认保存', 'Saved')
|
|
876
|
+
: textFor(locale, '待确认,可检查保存状态', 'Pending confirmation; check save status');
|
|
877
|
+
}
|
|
866
878
|
const failed = input.status === 'failed' || input.status === 'blocked';
|
|
867
879
|
return {
|
|
868
880
|
title: textFor(locale, '本轮完成报告', 'Task report'),
|
|
@@ -946,6 +958,7 @@
|
|
|
946
958
|
});
|
|
947
959
|
}
|
|
948
960
|
|
|
961
|
+
if (report.saveState) meta.push({ key: 'saveState', label: textFor(locale, '保存', 'Save'), value: report.saveState });
|
|
949
962
|
return { conclusion, body: bodySections.join('\n\n'), meta };
|
|
950
963
|
}
|
|
951
964
|
|
|
@@ -976,6 +989,7 @@
|
|
|
976
989
|
if (nextStep) {
|
|
977
990
|
sections.push(textFor(locale, `下一步:${nextStep}`, `Next: ${nextStep}`));
|
|
978
991
|
}
|
|
992
|
+
if (report.saveState) sections.push(textFor(locale, `保存:${report.saveState}`, `Save: ${report.saveState}`));
|
|
979
993
|
return sections.join('\n\n');
|
|
980
994
|
}
|
|
981
995
|
|
|
@@ -1045,7 +1059,7 @@
|
|
|
1045
1059
|
if (input.mode === 'ask' || input.status === '只问不改') {
|
|
1046
1060
|
return textFor(locale, '这轮是只问不改。', 'This run was Ask mode.');
|
|
1047
1061
|
}
|
|
1048
|
-
if (input.status === 'rejected') {
|
|
1062
|
+
if (input.status === 'cancelled' || input.status === 'rejected') {
|
|
1049
1063
|
return textFor(locale, '你取消了这轮修改。', 'You cancelled this change.');
|
|
1050
1064
|
}
|
|
1051
1065
|
return '';
|
|
@@ -75,6 +75,7 @@
|
|
|
75
75
|
mirror: summarizeMirror(input.mirror),
|
|
76
76
|
auditLogs: summarizeAuditLogList(input.auditLogs),
|
|
77
77
|
run: summarizeRun(input.run),
|
|
78
|
+
...(Array.isArray(input.recentRuns) ? { recentRuns: input.recentRuns.slice(0, 8).map(summarizeRun) } : {}),
|
|
78
79
|
governance: summarizeGovernance(input.governance),
|
|
79
80
|
projectIdHash: hashString(stringField(input.projectId))
|
|
80
81
|
};
|
|
@@ -272,9 +273,22 @@
|
|
|
272
273
|
}
|
|
273
274
|
|
|
274
275
|
function summarizeRun(run = {}) {
|
|
276
|
+
run = run && typeof run === 'object' && !Array.isArray(run) ? run : {};
|
|
277
|
+
const captures = Array.isArray(run.trackedChangeCaptures) ? run.trackedChangeCaptures : [];
|
|
275
278
|
return removeEmptySummaryFields({
|
|
276
279
|
id: redactSecretLikeText(stringField(run.id)),
|
|
277
280
|
status: redactSecretLikeText(stringField(run.status)),
|
|
281
|
+
startedAt: redactSecretLikeText(stringField(run.startedAt)),
|
|
282
|
+
finishedAt: redactSecretLikeText(stringField(run.finishedAt)),
|
|
283
|
+
requireReviewing: typeof run.executionSnapshot?.requireReviewing === 'boolean'
|
|
284
|
+
? run.executionSnapshot.requireReviewing : undefined,
|
|
285
|
+
trackedChangeStatus: diagnosticToken(run.trackedChangeStatus),
|
|
286
|
+
undoStatus: diagnosticToken(run.undoStatus),
|
|
287
|
+
appliedOperationCount: Array.isArray(run.appliedOperations) ? run.appliedOperations.length : undefined,
|
|
288
|
+
undoTrackedChangeCount: Array.isArray(run.undoTrackedChanges) ? run.undoTrackedChanges.length : undefined,
|
|
289
|
+
captureCount: Array.isArray(run.trackedChangeCaptures) ? captures.length : undefined,
|
|
290
|
+
capturesTruncated: captures.length > 20 ? true : undefined,
|
|
291
|
+
trackedChangeCaptures: captures.slice(0, 20).map(summarizeTrackedCapture),
|
|
278
292
|
errorCode: redactSecretLikeText(stringField(run.errorCode)),
|
|
279
293
|
errorCategory: categorizeError(run.errorCode || run.message || run.error),
|
|
280
294
|
events: (Array.isArray(run.events) ? run.events : []).map(event => removeEmptyFields({
|
|
@@ -287,6 +301,63 @@
|
|
|
287
301
|
});
|
|
288
302
|
}
|
|
289
303
|
|
|
304
|
+
// Export only proof metadata, never document text, prompts, labels or raw IDs.
|
|
305
|
+
function diagnosticToken(value) {
|
|
306
|
+
const text = redactSecretLikeText(stringField(value));
|
|
307
|
+
return /^[a-z][a-z0-9_]{0,79}$/.test(text) ? text : undefined;
|
|
308
|
+
}
|
|
309
|
+
|
|
310
|
+
function diagnosticNumbers(value, keys) {
|
|
311
|
+
const source = value && typeof value === 'object' ? value : {};
|
|
312
|
+
const result = {};
|
|
313
|
+
for (const key of keys) {
|
|
314
|
+
if (Number.isSafeInteger(source[key]) && source[key] >= 0) result[key] = source[key];
|
|
315
|
+
}
|
|
316
|
+
return result;
|
|
317
|
+
}
|
|
318
|
+
|
|
319
|
+
function diagnosticFingerprint(value) {
|
|
320
|
+
return typeof value === 'string' && /^\d{1,16}:[a-f0-9]{1,8}:[a-f0-9]{1,8}$/.test(value)
|
|
321
|
+
? value : undefined;
|
|
322
|
+
}
|
|
323
|
+
|
|
324
|
+
function summarizeTrackedCapture(value) {
|
|
325
|
+
const capture = value && typeof value === 'object' && !Array.isArray(value) ? value : {};
|
|
326
|
+
const before = Array.isArray(capture.before) ? capture.before : [];
|
|
327
|
+
const refs = Array.isArray(capture.refs) ? capture.refs : [];
|
|
328
|
+
const ranges = Array.isArray(capture.ranges) ? capture.ranges : [];
|
|
329
|
+
const diagnostics = capture.diagnostics || {};
|
|
330
|
+
const refSummary = ref => removeEmptySummaryFields({
|
|
331
|
+
idHash: stringField(ref?.id) ? hashString(ref.id) : undefined,
|
|
332
|
+
kind: diagnosticToken(ref?.kind),
|
|
333
|
+
...diagnosticNumbers(ref, ['from', 'to', 'textLength']),
|
|
334
|
+
textHash: diagnosticFingerprint(ref?.textHash)
|
|
335
|
+
});
|
|
336
|
+
return removeEmptySummaryFields({
|
|
337
|
+
pathHash: stringField(capture.path) ? hashString(capture.path) : undefined,
|
|
338
|
+
nativeDocIdHash: stringField(capture.nativeDocId) ? hashString(capture.nativeDocId) : undefined,
|
|
339
|
+
state: diagnosticToken(capture.state), reason: diagnosticToken(capture.reason),
|
|
340
|
+
source: diagnosticToken(capture.source),
|
|
341
|
+
...diagnosticNumbers(capture, ['startedAt', 'expiresAt']),
|
|
342
|
+
expectedFingerprint: diagnosticFingerprint(capture.expected),
|
|
343
|
+
beforeCount: before.length, refCount: refs.length, rangeCount: ranges.length,
|
|
344
|
+
truncated: before.length > 1200 || refs.length > 1200 || ranges.length > 1000 ? true : undefined,
|
|
345
|
+
before: before.slice(0, 1200).map(refSummary),
|
|
346
|
+
refs: refs.slice(0, 1200).map(refSummary),
|
|
347
|
+
ranges: ranges.slice(0, 1000).map(range => removeEmptySummaryFields({
|
|
348
|
+
...diagnosticNumbers(range, ['from', 'to', 'start', 'end', 'removedLength']),
|
|
349
|
+
removedHash: diagnosticFingerprint(range?.removedHash)
|
|
350
|
+
})),
|
|
351
|
+
diagnostics: removeEmptySummaryFields({
|
|
352
|
+
...diagnosticNumbers(diagnostics, ['beforeCount', 'afterCount', 'capturedCount',
|
|
353
|
+
'filteredCount', 'polls', 'elapsedMs', 'waitMs']),
|
|
354
|
+
reason: diagnosticToken(diagnostics.reason),
|
|
355
|
+
source: diagnosticToken(diagnostics.source),
|
|
356
|
+
sourceReason: diagnosticToken(diagnostics.sourceReason)
|
|
357
|
+
})
|
|
358
|
+
});
|
|
359
|
+
}
|
|
360
|
+
|
|
290
361
|
function summarizeGovernance(rules = {}) {
|
|
291
362
|
return {
|
|
292
363
|
readonlyPatternCount: Array.isArray(rules.readonlyPatterns) ? rules.readonlyPatterns.length : 0,
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
(function initChangeHistoryModel(root, factory) {
|
|
2
|
+
if (typeof module === 'object' && module.exports) {
|
|
3
|
+
module.exports = factory(require('./settlementFacts'), require('./sessionState'));
|
|
4
|
+
} else root.CodexOverleafModuleRegistry.define('ChangeHistoryModel', ['SettlementFacts', 'SessionState'], factory);
|
|
5
|
+
})(typeof globalThis !== 'undefined' ? globalThis : window, function changeHistoryModelFactory(SettlementFacts, SessionState) {
|
|
6
|
+
'use strict';
|
|
7
|
+
const array = value => Array.isArray(value) ? value : [];
|
|
8
|
+
const text = value => typeof value === 'string' ? value : '';
|
|
9
|
+
const opaque = value => /^\[.*(?:omitted|redacted|chars=\d+|hash=).*?\]$/i.test(text(value).trim());
|
|
10
|
+
|
|
11
|
+
function project(records, options = {}) {
|
|
12
|
+
const { projectId, accountScopeId } = options;
|
|
13
|
+
if (!projectId || !accountScopeId) return [];
|
|
14
|
+
const sanitize = options.sanitizeText || text;
|
|
15
|
+
const safe = value => text(sanitize(text(value))).trim();
|
|
16
|
+
const sessions = new Map();
|
|
17
|
+
const live = new Map();
|
|
18
|
+
for (const session of array(options.storedSessions)) {
|
|
19
|
+
if (session?.projectId === projectId && session.accountScopeId === accountScopeId) sessions.set(session.id, session);
|
|
20
|
+
}
|
|
21
|
+
// In-memory sessions already passed the runtime's account/project hydrate
|
|
22
|
+
// boundary. Their review state is newer than the persisted audit snapshot.
|
|
23
|
+
for (const session of array(options.sessions)) {
|
|
24
|
+
if (!session?.id) continue;
|
|
25
|
+
const prior = sessions.get(session.id);
|
|
26
|
+
const runs = new Map(array(prior?.runs).map(run => [run.id, run]));
|
|
27
|
+
const current = session.id === options.activeSessionId ? array(options.activeRuns) : array(session.runs);
|
|
28
|
+
for (const run of current) if (run?.id) runs.set(run.id, run);
|
|
29
|
+
sessions.set(session.id, { ...prior, ...session, runs: [...runs.values()] });
|
|
30
|
+
live.set(session.id, new Set(current.filter(run => run?.id && (!run.runProjectId || run.runProjectId === projectId)).map(run => run.id)));
|
|
31
|
+
}
|
|
32
|
+
function path(value) {
|
|
33
|
+
const raw = text(value).replace(/\\/g, '/').replace(/^\.\//, '');
|
|
34
|
+
if (/(^|\/)\.codex-overleaf-(subagents|attachments)(\/|$)/.test(raw)) return '';
|
|
35
|
+
const result = safe(raw);
|
|
36
|
+
if (!result || /^\[.*\]$/.test(result)) return '';
|
|
37
|
+
return result.slice(0, 320);
|
|
38
|
+
}
|
|
39
|
+
const seen = new Set();
|
|
40
|
+
return array(records).filter(record => record?.projectId === projectId
|
|
41
|
+
&& (!record.accountScopeId || record.accountScopeId === accountScopeId)
|
|
42
|
+
&& sessions.has(record.sessionId))
|
|
43
|
+
.slice().sort((a, b) => String(b.createdAt || '').localeCompare(String(a.createdAt || '')))
|
|
44
|
+
.filter(record => {
|
|
45
|
+
const key = JSON.stringify([record.sessionId, record.turnId || record.id]);
|
|
46
|
+
if (seen.has(key)) return false;
|
|
47
|
+
seen.add(key); return true;
|
|
48
|
+
}).slice(0, 50).map(record => {
|
|
49
|
+
const session = sessions.get(record.sessionId);
|
|
50
|
+
const candidate = array(session.runs).find(run => run.id === record.turnId);
|
|
51
|
+
const run = candidate && (!candidate.runProjectId || candidate.runProjectId === projectId) ? candidate : null;
|
|
52
|
+
const facts = SettlementFacts.compactSettlementFacts(run?.settlement || run?.settlementFacts || {});
|
|
53
|
+
const projection = run ? SettlementFacts.projectRunSettlement(run) : null;
|
|
54
|
+
const applied = array(record.appliedFiles).filter(file => path(typeof file === 'string' ? file : file?.path));
|
|
55
|
+
const review = text(run?.trackedChangeStatus);
|
|
56
|
+
const hasWrites = applied.length > 0 || run?.changedDocument === true
|
|
57
|
+
|| ['changed', 'possibly-changed'].includes(facts.documentEffect)
|
|
58
|
+
|| ['pending', 'accepted', 'rejected', 'needs_review'].includes(review)
|
|
59
|
+
|| run?.undoStatus === 'applied';
|
|
60
|
+
let files = applied.slice();
|
|
61
|
+
files.push(...facts.fileSettlements.filter(file => ['complete', 'partial'].includes(file.applied)
|
|
62
|
+
|| ['changed', 'possibly-changed'].includes(file.documentEffect)));
|
|
63
|
+
if (!files.length && hasWrites) files = array(record.changedFiles);
|
|
64
|
+
const paths = [...new Set(files.flatMap(file => typeof file === 'string'
|
|
65
|
+
? [path(file)] : [path(file?.path), path(file?.destinationPath)]).filter(Boolean))];
|
|
66
|
+
const unsafeSave = record.saveVerification?.ok === false
|
|
67
|
+
|| ['failed', 'unavailable'].includes(record.saveVerification?.state);
|
|
68
|
+
let status;
|
|
69
|
+
if (review === 'accepted') status = 'accepted';
|
|
70
|
+
else if (review === 'rejected' || run?.undoStatus === 'applied') status = 'undone';
|
|
71
|
+
else if (review === 'needs_review' || projection?.terminalState === 'needs_review'
|
|
72
|
+
|| facts.documentEffect === 'possibly-changed'
|
|
73
|
+
|| ['partial', 'needs-review'].includes(facts.evidence.settled)
|
|
74
|
+
|| hasWrites && (unsafeSave || ['failed', 'interrupted', 'needs_review_after_navigation'].includes(run?.status))) status = 'attention';
|
|
75
|
+
else if (run?.status === 'running' || record.resultStatus === 'draft' && !record.completedAt) status = 'running';
|
|
76
|
+
else if (review === 'pending') status = 'pending';
|
|
77
|
+
else if (!hasWrites) status = 'unchanged';
|
|
78
|
+
else status = run ? 'written' : 'unknown';
|
|
79
|
+
const suppliedSummary = safe(run?.safeTaskSummary || '');
|
|
80
|
+
const summary = suppliedSummary && !opaque(suppliedSummary)
|
|
81
|
+
? SessionState.computeSafeTaskSummary(suppliedSummary) : '';
|
|
82
|
+
// Audit promptSummary deliberately stores a privacy marker. Never
|
|
83
|
+
// recover it, render it, or turn it into an apparent task summary.
|
|
84
|
+
return {
|
|
85
|
+
key: JSON.stringify([record.sessionId, record.turnId || record.id]),
|
|
86
|
+
projectId, accountScopeId, sessionId: record.sessionId, turnId: record.turnId,
|
|
87
|
+
createdAt: text(record.createdAt), paths, hasWrites, status, summary,
|
|
88
|
+
operation: paths.length === 1 ? text(files[0]?.type) : '',
|
|
89
|
+
canJump: Boolean(run && live.get(record.sessionId)?.has(record.turnId))
|
|
90
|
+
};
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
return { project };
|
|
94
|
+
});
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
const MIN_NATIVE_VERSION = '1.0.0';
|
|
13
13
|
const MIN_COMPATIBLE_NATIVE_VERSION = '1.0.0';
|
|
14
14
|
const MIN_COMPATIBLE_EXTENSION_VERSION = '1.0.0';
|
|
15
|
-
const BUILD_TARGET_VERSION = '2.
|
|
15
|
+
const BUILD_TARGET_VERSION = '2.5.0';
|
|
16
16
|
const DEFAULT_CHROME_EXTENSION_ID = 'illdpneeeopfffmiepaejglgmhpmdhdc';
|
|
17
17
|
const REQUIRED_CAPABILITIES = Object.freeze([
|
|
18
18
|
'bridgePing',
|
|
@@ -163,7 +163,49 @@
|
|
|
163
163
|
return result;
|
|
164
164
|
}
|
|
165
165
|
|
|
166
|
+
function buildPostWriteCompileSummary({ result = null, logResult = null, error = null } = {}) {
|
|
167
|
+
const logAvailable = logResult?.ok === true;
|
|
168
|
+
const errors = logAvailable && Array.isArray(logResult.errors)
|
|
169
|
+
? logResult.errors.slice(0, 5).map(formatCompileDiagnosticForSummary)
|
|
170
|
+
: [];
|
|
171
|
+
const warnings = logAvailable && Array.isArray(logResult.warnings)
|
|
172
|
+
? logResult.warnings.slice(0, 5).map(formatCompileDiagnosticForSummary)
|
|
173
|
+
: [];
|
|
174
|
+
if (error) {
|
|
175
|
+
return {
|
|
176
|
+
status: 'failed',
|
|
177
|
+
reason: error?.message || 'Post-write compile failed.',
|
|
178
|
+
errors,
|
|
179
|
+
warnings,
|
|
180
|
+
logAvailable
|
|
181
|
+
};
|
|
182
|
+
}
|
|
183
|
+
if (!result?.ok) {
|
|
184
|
+
return {
|
|
185
|
+
status: 'failed',
|
|
186
|
+
reason: result?.reason || 'Post-write compile did not succeed.',
|
|
187
|
+
errors,
|
|
188
|
+
warnings,
|
|
189
|
+
logAvailable
|
|
190
|
+
};
|
|
191
|
+
}
|
|
192
|
+
return {
|
|
193
|
+
status: result.compile?.status || 'triggered',
|
|
194
|
+
reason: result.reason || '',
|
|
195
|
+
errors,
|
|
196
|
+
warnings,
|
|
197
|
+
logAvailable
|
|
198
|
+
};
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
function formatCompileDiagnosticForSummary(value) {
|
|
202
|
+
const text = String(value || '').replace(/\s+/g, ' ').trim();
|
|
203
|
+
return text.length > 180 ? `${text.slice(0, 179)}...` : text;
|
|
204
|
+
}
|
|
205
|
+
|
|
166
206
|
return {
|
|
207
|
+
buildPostWriteCompileSummary,
|
|
208
|
+
formatCompileDiagnosticForSummary,
|
|
167
209
|
COMPILABLE_EXTENSIONS,
|
|
168
210
|
MAX_LOG_BYTES,
|
|
169
211
|
extractErrorBlocks,
|
|
@@ -158,6 +158,26 @@
|
|
|
158
158
|
fallbackUserMessage: 'Create/delete/rename/move did not appear in the file tree as expected.',
|
|
159
159
|
fallbackNextAction: 'Inspect the file tree and retry if needed.'
|
|
160
160
|
},
|
|
161
|
+
source_zip_unavailable: {
|
|
162
|
+
stage: 'preflight', severity: 'blocked', defaultRetryable: true,
|
|
163
|
+
fallbackUserMessage: 'The project could not be checked before uploading this file.',
|
|
164
|
+
fallbackNextAction: 'Retry sync; only missing files will be uploaded.'
|
|
165
|
+
},
|
|
166
|
+
file_upload_unconfirmed: {
|
|
167
|
+
stage: 'verify', severity: 'warning', defaultRetryable: true,
|
|
168
|
+
fallbackUserMessage: 'The file was submitted, but its saved content is not yet confirmed.',
|
|
169
|
+
fallbackNextAction: 'Check the file before retrying; matching content will not be uploaded twice.'
|
|
170
|
+
},
|
|
171
|
+
subagent_unfinished_output: {
|
|
172
|
+
stage: 'preflight', severity: 'blocked', defaultRetryable: false,
|
|
173
|
+
fallbackUserMessage: 'A subagent stopped before finishing this file; the main agent must review and adopt it.',
|
|
174
|
+
fallbackNextAction: 'Have the main agent complete and adopt the pending file.'
|
|
175
|
+
},
|
|
176
|
+
subagent_unauthorized_edit: {
|
|
177
|
+
stage: 'preflight', severity: 'blocked', defaultRetryable: false,
|
|
178
|
+
fallbackUserMessage: 'A file changed outside the subagent ownership boundary and was not synced.',
|
|
179
|
+
fallbackNextAction: 'Review the ownership violation; it cannot be cleared through output adoption.'
|
|
180
|
+
},
|
|
161
181
|
partial_write_needs_review: {
|
|
162
182
|
stage: 'verify', severity: 'warning', defaultRetryable: false,
|
|
163
183
|
fallbackUserMessage: 'Some operations wrote, some were skipped.',
|
|
@@ -112,7 +112,7 @@
|
|
|
112
112
|
try {
|
|
113
113
|
const url = new URL(sender?.tab?.url || '');
|
|
114
114
|
allowed = sender.id === chromeApi.runtime.id && url.protocol === 'https:'
|
|
115
|
-
&& ['overleaf.com', 'www.overleaf.com'].includes(url.hostname)
|
|
115
|
+
&& ['overleaf.com', 'www.overleaf.com', 'cn.overleaf.com'].includes(url.hostname)
|
|
116
116
|
&& /^\/project(?:\/|$)/.test(url.pathname);
|
|
117
117
|
} catch (_error) { /* reject unrelated contexts */ }
|
|
118
118
|
if (!allowed) {
|