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
|
@@ -1,18 +1,25 @@
|
|
|
1
1
|
(function initStorageDb(root, factory) {
|
|
2
2
|
if (typeof module === 'object' && module.exports) {
|
|
3
3
|
module.exports = factory(require('./storageRunActions'), require('./runInputQueue'),
|
|
4
|
-
require('./settlementFacts'), require('./storageSessionClaims'), require('./sessionState'));
|
|
4
|
+
require('./settlementFacts'), require('./storageSessionClaims'), require('./sessionState'), require('./runActivityModel'), require('./sharedSessionBridge'), require('./subagentActivityModel'), require('./storageValuePruning'), require('./composerAttachmentDraft'), require('./sharedSessionTransfer'));
|
|
5
5
|
} else {
|
|
6
6
|
root.CodexOverleafModuleRegistry.define('StorageDb', [
|
|
7
7
|
'StorageRunActions',
|
|
8
8
|
'RunInputQueue',
|
|
9
9
|
'SettlementFacts',
|
|
10
10
|
'StorageSessionClaims',
|
|
11
|
-
'SessionState'
|
|
11
|
+
'SessionState',
|
|
12
|
+
'RunActivityModel',
|
|
13
|
+
'SharedSessionBridge',
|
|
14
|
+
'SubagentActivityModel',
|
|
15
|
+
'StorageValuePruning',
|
|
16
|
+
'ComposerAttachmentDraft',
|
|
17
|
+
'SharedSessionTransfer'
|
|
12
18
|
], factory);
|
|
13
19
|
}
|
|
14
|
-
})(typeof globalThis !== 'undefined' ? globalThis : window, function storageDbFactory(StorageRunActions, RunInputQueue, SettlementFacts, StorageSessionClaims, SessionState) {
|
|
20
|
+
})(typeof globalThis !== 'undefined' ? globalThis : window, function storageDbFactory(StorageRunActions, RunInputQueue, SettlementFacts, StorageSessionClaims, SessionState, RunActivityModel, SharedSessionBridge, SubagentActivityModel, StorageValuePruning, ComposerAttachmentDraft, SharedSessionTransfer) {
|
|
15
21
|
'use strict';
|
|
22
|
+
const { removeEmptySummaryFields, removeEmptyFields } = StorageValuePruning;
|
|
16
23
|
if (!StorageRunActions?.compactRunsForStorage || !StorageRunActions?.compactRunActionPayload || !StorageRunActions?.compactProviderSnapshot || !StorageRunActions?.compactRunExecutionSnapshot || !StorageRunActions?.compactStructuredEventValue || !StorageRunActions?.hashString || !RunInputQueue?.compactForStorage || !SettlementFacts?.compactSettlementFacts || !StorageSessionClaims?.createSessionClaimer) {
|
|
17
24
|
throw new Error('Codex Overleaf storage run-action helpers are unavailable.');
|
|
18
25
|
}
|
|
@@ -135,6 +142,7 @@
|
|
|
135
142
|
});
|
|
136
143
|
}
|
|
137
144
|
var claimSessionsForAccount = StorageSessionClaims.createSessionClaimer(openDb, function () { return IDBKeyRange; });
|
|
145
|
+
var composerDraftStore = ComposerAttachmentDraft.createStore(openDb);
|
|
138
146
|
|
|
139
147
|
function putRecord(storeName, record) {
|
|
140
148
|
return openDb().then(function (db) {
|
|
@@ -232,17 +240,7 @@
|
|
|
232
240
|
}
|
|
233
241
|
|
|
234
242
|
function clearAllStores() {
|
|
235
|
-
return
|
|
236
|
-
var storeNames = Object.keys(STORES);
|
|
237
|
-
return new Promise(function (resolve, reject) {
|
|
238
|
-
var tx = db.transaction(storeNames, 'readwrite');
|
|
239
|
-
for (var i = 0; i < storeNames.length; i++) {
|
|
240
|
-
tx.objectStore(storeNames[i]).clear();
|
|
241
|
-
}
|
|
242
|
-
tx.oncomplete = function () { resolve(); };
|
|
243
|
-
tx.onerror = function (event) { reject(event.target.error); };
|
|
244
|
-
});
|
|
245
|
-
});
|
|
243
|
+
return composerDraftStore.clear(Object.keys(STORES));
|
|
246
244
|
}
|
|
247
245
|
|
|
248
246
|
// --- Record builders ---
|
|
@@ -272,14 +270,17 @@
|
|
|
272
270
|
var lastActivityAt = typeof input.lastActivityAt === 'string' && input.lastActivityAt
|
|
273
271
|
? input.lastActivityAt
|
|
274
272
|
: updatedAt;
|
|
275
|
-
|
|
273
|
+
var record = {
|
|
276
274
|
id: input.id || generateId('ses'),
|
|
277
275
|
projectId: input.projectId || '',
|
|
278
276
|
title: normalizeSessionTitleForStorage(input.title, titleSource),
|
|
279
277
|
titleSource: titleSource,
|
|
280
278
|
codexThreadId: typeof input.codexThreadId === 'string' ? input.codexThreadId : '',
|
|
279
|
+
forkedFromSessionId: normalizeTextField(input.forkedFromSessionId, 160),
|
|
280
|
+
forkedFromRunId: normalizeTextField(input.forkedFromRunId, 160),
|
|
281
281
|
status: typeof input.status === 'string' && input.status ? input.status : 'active',
|
|
282
282
|
focusFiles: normalizePathList(input.focusFiles),
|
|
283
|
+
selectionContext: SessionState.normalizeSelectionContext(input.selectionContext),
|
|
283
284
|
projectReferenceFiles: SessionState.normalizeProjectReferenceFiles(input.projectReferenceFiles),
|
|
284
285
|
pendingInputs: RunInputQueue.compactForStorage(input.pendingInputs, {
|
|
285
286
|
normalizeField: normalizeTextField,
|
|
@@ -287,7 +288,8 @@
|
|
|
287
288
|
normalizePaths: normalizePathList
|
|
288
289
|
}),
|
|
289
290
|
history: compactHistoryForStorage(input.history),
|
|
290
|
-
runs: compactRunsForStorage(input.runs,
|
|
291
|
+
runs: compactRunsForStorage(input.runs, { preserveRunActionPayload: false,
|
|
292
|
+
deferDirectoryCleanup: options.preserveRunActionPayload === true || options.deferDirectoryCleanup === true }),
|
|
291
293
|
task: normalizeDisplayTextForStorage(input.task, SESSION_STORAGE_LIMITS.taskChars),
|
|
292
294
|
mode: normalizeCurrentMode(input.mode), providerId: typeof input.providerId === 'string' && input.providerId ? input.providerId : 'builtin',
|
|
293
295
|
model: typeof input.model === 'string' ? input.model : '',
|
|
@@ -301,6 +303,23 @@
|
|
|
301
303
|
accountScopeUnavailable: accountScopeUnavailable,
|
|
302
304
|
safeTaskSummary: safeTaskSummary
|
|
303
305
|
};
|
|
306
|
+
if (options.preserveRunActionPayload === true) {
|
|
307
|
+
// Count the real display record before allocating recovery space. Adding
|
|
308
|
+
// older checkpoints must not make an otherwise valid history unwritable.
|
|
309
|
+
var metadataText = JSON.stringify(record), metadataBytes = SharedSessionTransfer.byteLength(metadataText);
|
|
310
|
+
record.runs = compactRunsForStorage(input.runs, { ...options,
|
|
311
|
+
canRetainActionPayload: function (bytes, chars) {
|
|
312
|
+
var totalBytes = metadataBytes + bytes + 4096, totalChars = metadataText.length + chars + 4096;
|
|
313
|
+
return totalBytes <= SharedSessionTransfer.MAX_WIRE_BYTES
|
|
314
|
+
|| (totalBytes <= SharedSessionTransfer.MAX_RECORD_BYTES && totalChars * 2 <= SharedSessionTransfer.MAX_WIRE_BYTES);
|
|
315
|
+
} });
|
|
316
|
+
}
|
|
317
|
+
for (var run of record.runs) SessionState.pruneRunRecoveryScope(run, record);
|
|
318
|
+
return record;
|
|
319
|
+
}
|
|
320
|
+
|
|
321
|
+
function compactSessionBatchActions(records, options) {
|
|
322
|
+
return StorageRunActions.compactSessionBatchActions(records, options, buildSessionRecord, SharedSessionTransfer);
|
|
304
323
|
}
|
|
305
324
|
|
|
306
325
|
function resolveAccountScopeId(input) {
|
|
@@ -411,6 +430,7 @@
|
|
|
411
430
|
var now = new Date().toISOString();
|
|
412
431
|
return {
|
|
413
432
|
id: input.id || generateId('aud'),
|
|
433
|
+
accountScopeId: typeof input.accountScopeId === 'string' ? input.accountScopeId : '',
|
|
414
434
|
projectId: typeof input.projectId === 'string' ? input.projectId : '',
|
|
415
435
|
sessionId: typeof input.sessionId === 'string' ? input.sessionId : '',
|
|
416
436
|
turnId: typeof input.turnId === 'string' ? input.turnId : '',
|
|
@@ -460,7 +480,8 @@
|
|
|
460
480
|
customInstructionsByProject: normalizeStringMap(state.customInstructionsByProject),
|
|
461
481
|
governanceRulesByProject: normalizeGovernanceRulesMap(state.governanceRulesByProject),
|
|
462
482
|
selectedLocalSkillIdsByProject: normalizeStringListMap(state.selectedLocalSkillIdsByProject),
|
|
463
|
-
codexOverleafSkillEnabled: normalizeCodexOverleafSkillEnabledMap(state.codexOverleafSkillEnabled)
|
|
483
|
+
codexOverleafSkillEnabled: normalizeCodexOverleafSkillEnabledMap(state.codexOverleafSkillEnabled),
|
|
484
|
+
codexLocalSkillEnabled: SessionState.normalizeCodexLocalSkillEnabled(state.codexLocalSkillEnabled)
|
|
464
485
|
};
|
|
465
486
|
return prefs;
|
|
466
487
|
}
|
|
@@ -513,7 +534,7 @@
|
|
|
513
534
|
continue;
|
|
514
535
|
}
|
|
515
536
|
result[key] = typeof value[rawKey] === 'string'
|
|
516
|
-
?
|
|
537
|
+
? normalizeDisplayTextForStorage(value[rawKey], CUSTOM_INSTRUCTIONS_MAX_CHARS)
|
|
517
538
|
: '';
|
|
518
539
|
}
|
|
519
540
|
return result;
|
|
@@ -634,9 +655,9 @@
|
|
|
634
655
|
function normalizeSessionTitleForStorage(value, titleSource) {
|
|
635
656
|
var title = typeof value === 'string' ? value.trim() : '';
|
|
636
657
|
if (titleSource === 'manual') {
|
|
637
|
-
return
|
|
658
|
+
return normalizeDisplayTextForStorage(title === LEGACY_DEFAULT_SESSION_TITLE ? '' : title, SESSION_STORAGE_LIMITS.sessionTitleChars);
|
|
638
659
|
}
|
|
639
|
-
return
|
|
660
|
+
return normalizeDisplayTextForStorage(title === LEGACY_DEFAULT_SESSION_TITLE ? '' : title, SESSION_STORAGE_LIMITS.sessionTitleChars);
|
|
640
661
|
}
|
|
641
662
|
|
|
642
663
|
function compactHistoryForStorage(history) {
|
|
@@ -654,22 +675,27 @@
|
|
|
654
675
|
function compactRunsForStorage(runs, options) {
|
|
655
676
|
return StorageRunActions.compactRunsForStorage(runs, options, SESSION_STORAGE_LIMITS.maxRunsPerSession, compactRunForStorage);
|
|
656
677
|
}
|
|
657
|
-
function compactRunForStorage(run, keepActionPayload) {
|
|
658
|
-
|
|
678
|
+
function compactRunForStorage(run, keepActionPayload, preparedActionPayload) {
|
|
679
|
+
run = SessionState.recoverRecordedRunFailure(run);
|
|
680
|
+
var actionPayload = preparedActionPayload || StorageRunActions.compactRunActionPayload(run, keepActionPayload);
|
|
659
681
|
var compact = {
|
|
682
|
+
...SessionState.pickWritebackRecovery(run),
|
|
660
683
|
id: run.id,
|
|
684
|
+
forkSnapshot: run.forkSnapshot === true,
|
|
685
|
+
forkSourceRunId: normalizeTextField(run.forkSourceRunId, 160),
|
|
661
686
|
task: normalizeDisplayTextForStorage(run.task || 'untitled task', SESSION_STORAGE_LIMITS.taskChars),
|
|
662
687
|
mode: typeof run.mode === 'string' ? redactSecretLikeText(run.mode) : '', ...StorageRunActions.compactProviderSnapshot(run),
|
|
663
688
|
...StorageRunActions.compactRunExecutionSnapshot(run, function (text) { return normalizeTextField(text, 4096); }),
|
|
664
689
|
model: normalizeTextField(run.model, 80),
|
|
665
690
|
reasoningEffort: typeof run.reasoningEffort === 'string' ? redactSecretLikeText(run.reasoningEffort) : '',
|
|
666
691
|
speedTier: typeof run.speedTier === 'string' ? redactSecretLikeText(run.speedTier) : '',
|
|
667
|
-
status: normalizeRunStatus(run.status),
|
|
692
|
+
status: SessionState.normalizeRunStatus(run.status, run),
|
|
668
693
|
statusText: normalizeDisplayTextForStorage(run.statusText, SESSION_STORAGE_LIMITS.statusTextChars),
|
|
669
694
|
runProjectId: normalizeProjectPrefKey(run.runProjectId),
|
|
670
695
|
startedAt: typeof run.startedAt === 'string' ? redactSecretLikeText(run.startedAt) : '',
|
|
671
696
|
finishedAt: typeof run.finishedAt === 'string' ? redactSecretLikeText(run.finishedAt) : '',
|
|
672
697
|
events: compactRunEventsForStorage(run.events),
|
|
698
|
+
...(run.subagents?.length ? { subagents: SubagentActivityModel.normalize(run.subagents, sanitizeAssistantVisibleText) } : {}),
|
|
673
699
|
attachments: compactRunAttachmentsForStorage(run.attachments),
|
|
674
700
|
appliedOperations: actionPayload.appliedOperations,
|
|
675
701
|
undoOperations: actionPayload.undoOperations,
|
|
@@ -677,7 +703,10 @@
|
|
|
677
703
|
undoTrackedChanges: actionPayload.undoTrackedChanges,
|
|
678
704
|
undoExpectedFiles: actionPayload.undoExpectedFiles,
|
|
679
705
|
...(actionPayload.trackedChangeCaptures ? { trackedChangeCaptures: actionPayload.trackedChangeCaptures } : {}),
|
|
706
|
+
...(actionPayload.pendingDirectoryCleanup ? { pendingDirectoryCleanup: actionPayload.pendingDirectoryCleanup } : {}),
|
|
707
|
+
...(actionPayload.recoveryRetention ? { recoveryRetention: SessionState.normalizeRecoveryRetention(actionPayload.recoveryRetention) } : {}),
|
|
680
708
|
undoStatus: normalizeDisplayTextForStorage(run.undoStatus, SESSION_STORAGE_LIMITS.statusTextChars),
|
|
709
|
+
...(run.undoOwnerProtocol === 1 ? { undoOwnerProtocol: 1 } : {}),
|
|
681
710
|
nativeRequestId: normalizeTextField(run.nativeRequestId, 160),
|
|
682
711
|
codexThreadId: normalizeTextField(run.codexThreadId, 160), codexTurnId: normalizeTextField(run.codexTurnId, 160),
|
|
683
712
|
nativeEventSeq: Number.isFinite(Number(run.nativeEventSeq)) ? Number(run.nativeEventSeq) : 0,
|
|
@@ -716,9 +745,17 @@
|
|
|
716
745
|
status: normalizeEventStatus(event.status),
|
|
717
746
|
timestamp: typeof event.timestamp === 'string' ? redactSecretLikeText(event.timestamp) : '',
|
|
718
747
|
kind: typeof event.kind === 'string' ? redactSecretLikeText(event.kind) : 'activity',
|
|
748
|
+
guidanceId: normalizeTextField(event.guidanceId, 160),
|
|
719
749
|
streamKey: typeof event.streamKey === 'string' ? redactSecretLikeText(event.streamKey) : '',
|
|
720
750
|
streamRole: typeof event.streamRole === 'string' ? redactSecretLikeText(event.streamRole) : ''
|
|
721
751
|
};
|
|
752
|
+
// Persist the bounded display projection, never the raw tool payload.
|
|
753
|
+
// Hydration uses the same model; dropping this metadata demotes tools
|
|
754
|
+
// to hidden diagnostics after an otherwise successful history reload.
|
|
755
|
+
var activity = RunActivityModel.capture(event, sanitizeAssistantVisibleText);
|
|
756
|
+
if (activity) compact.activity = activity;
|
|
757
|
+
var streamPhase = RunActivityModel.normalizePhase(event.streamPhase);
|
|
758
|
+
if (streamPhase) compact.streamPhase = streamPhase;
|
|
722
759
|
if (event.subagent === true) {
|
|
723
760
|
compact.subagent = true;
|
|
724
761
|
}
|
|
@@ -744,7 +781,7 @@
|
|
|
744
781
|
|
|
745
782
|
// Deep-copies a known-safe structured event value (the completion-report
|
|
746
783
|
// {conclusion, body, meta[]} payload, or a FailureReason object) preserving
|
|
747
|
-
// its shape while
|
|
784
|
+
// its shape while applying display-path rules and string limits. Bounded depth +
|
|
748
785
|
// breadth so a pathological value can't blow up the stored record.
|
|
749
786
|
function compactStructuredEventValueForStorage(value, depth) {
|
|
750
787
|
return StorageRunActions.compactStructuredEventValue(value, {
|
|
@@ -787,7 +824,11 @@
|
|
|
787
824
|
}
|
|
788
825
|
|
|
789
826
|
function normalizeDisplayTextForStorage(value, maxChars) {
|
|
790
|
-
|
|
827
|
+
var text = sanitizeAssistantVisibleText(value);
|
|
828
|
+
if (!Number.isFinite(maxChars) || maxChars <= 0 || text.length <= maxChars) {
|
|
829
|
+
return text;
|
|
830
|
+
}
|
|
831
|
+
return text.slice(0, Math.max(0, maxChars - 1)) + '…';
|
|
791
832
|
}
|
|
792
833
|
|
|
793
834
|
function summarizeStructuredValueForStorage(value, maxChars) {
|
|
@@ -914,25 +955,6 @@
|
|
|
914
955
|
.trim(), maxChars || SESSION_STORAGE_LIMITS.pathChars);
|
|
915
956
|
}
|
|
916
957
|
|
|
917
|
-
function normalizeRunStatus(status) {
|
|
918
|
-
// Welcome-panel + write-guard: the run-status
|
|
919
|
-
// enum gained three post-navigation values. The storage normalizer must
|
|
920
|
-
// accept them so a settled run round-trips intact through `buildSessionRecord`.
|
|
921
|
-
// Unknown legacy values fall through to `completed` (the historical default).
|
|
922
|
-
return [
|
|
923
|
-
'pending',
|
|
924
|
-
'running',
|
|
925
|
-
'completed',
|
|
926
|
-
'failed',
|
|
927
|
-
'background_completed',
|
|
928
|
-
'needs_review_after_navigation',
|
|
929
|
-
'abandoned_after_navigation',
|
|
930
|
-
// v1.8.1: reload-orphaned runs settle to 'interrupted' (v1.7.6); the
|
|
931
|
-
// storage round-trip must not rewrite them to a false 'completed'.
|
|
932
|
-
'interrupted'
|
|
933
|
-
].indexOf(status) !== -1 ? status : 'completed';
|
|
934
|
-
}
|
|
935
|
-
|
|
936
958
|
function normalizeEventStatus(status) {
|
|
937
959
|
return VALID_EVENT_STATUSES[status] ? status : 'info';
|
|
938
960
|
}
|
|
@@ -1016,7 +1038,7 @@
|
|
|
1016
1038
|
}
|
|
1017
1039
|
|
|
1018
1040
|
function normalizeTextField(value, maxChars) {
|
|
1019
|
-
var text = sanitizeAssistantVisibleText(value);
|
|
1041
|
+
var text = sanitizeAssistantVisibleText(redactSecretLikeText(value));
|
|
1020
1042
|
if (!Number.isFinite(maxChars) || maxChars <= 0 || text.length <= maxChars) {
|
|
1021
1043
|
return text;
|
|
1022
1044
|
}
|
|
@@ -1027,7 +1049,8 @@
|
|
|
1027
1049
|
if (typeof value !== 'string' || !value) {
|
|
1028
1050
|
return '';
|
|
1029
1051
|
}
|
|
1030
|
-
|
|
1052
|
+
// Preserve conversation examples and quotations through save/reload.
|
|
1053
|
+
var text = value;
|
|
1031
1054
|
if (!mightContainLocalReferenceText(text)) {
|
|
1032
1055
|
return text;
|
|
1033
1056
|
}
|
|
@@ -1106,37 +1129,7 @@
|
|
|
1106
1129
|
return 'error';
|
|
1107
1130
|
}
|
|
1108
1131
|
|
|
1109
|
-
function removeEmptySummaryFields(value) {
|
|
1110
|
-
var result = {};
|
|
1111
|
-
var keys = Object.keys(value || {});
|
|
1112
|
-
for (var i = 0; i < keys.length; i++) {
|
|
1113
|
-
var key = keys[i];
|
|
1114
|
-
var item = value[key];
|
|
1115
|
-
if (item === undefined || item === '' || item === null) {
|
|
1116
|
-
continue;
|
|
1117
|
-
}
|
|
1118
|
-
if (Array.isArray(item) && item.length === 0) {
|
|
1119
|
-
continue;
|
|
1120
|
-
}
|
|
1121
|
-
if (item && typeof item === 'object' && !Array.isArray(item) && Object.keys(item).length === 0) {
|
|
1122
|
-
continue;
|
|
1123
|
-
}
|
|
1124
|
-
result[key] = item;
|
|
1125
|
-
}
|
|
1126
|
-
return result;
|
|
1127
|
-
}
|
|
1128
1132
|
|
|
1129
|
-
function removeEmptyFields(value) {
|
|
1130
|
-
var result = {};
|
|
1131
|
-
var keys = Object.keys(value);
|
|
1132
|
-
for (var i = 0; i < keys.length; i++) {
|
|
1133
|
-
var key = keys[i];
|
|
1134
|
-
if (value[key] !== undefined && value[key] !== '') {
|
|
1135
|
-
result[key] = value[key];
|
|
1136
|
-
}
|
|
1137
|
-
}
|
|
1138
|
-
return result;
|
|
1139
|
-
}
|
|
1140
1133
|
|
|
1141
1134
|
// Welcome-panel + write-guard: the Recent-projects
|
|
1142
1135
|
// dashboard variant calls `listRecentProjectsAcrossAccount` to get the
|
|
@@ -1328,7 +1321,7 @@
|
|
|
1328
1321
|
}
|
|
1329
1322
|
var hashString = StorageRunActions.hashString;
|
|
1330
1323
|
|
|
1331
|
-
return {
|
|
1324
|
+
return SharedSessionBridge.decorate({
|
|
1332
1325
|
TARGET_SCHEMA_VERSION: TARGET_SCHEMA_VERSION,
|
|
1333
1326
|
DB_NAME: DB_NAME,
|
|
1334
1327
|
STORES: STORES,
|
|
@@ -1342,7 +1335,13 @@
|
|
|
1342
1335
|
deleteByIndex: deleteByIndex,
|
|
1343
1336
|
clearStore: clearStore,
|
|
1344
1337
|
clearAllStores: clearAllStores,
|
|
1338
|
+
clearAuxiliaryStores: function () { return composerDraftStore.clear(Object.keys(STORES).filter(name => name !== 'sessions')); },
|
|
1339
|
+
readComposerAttachmentDraft: composerDraftStore.read,
|
|
1340
|
+
writeComposerAttachmentDraft: composerDraftStore.write,
|
|
1345
1341
|
buildSessionRecord: buildSessionRecord,
|
|
1342
|
+
compactSessionBatchActions: compactSessionBatchActions,
|
|
1343
|
+
projectRetentionWarnings: StorageRunActions.projectRetentionWarnings,
|
|
1344
|
+
projectRetentionUpdates: StorageRunActions.projectRetentionUpdates,
|
|
1346
1345
|
mergeSessionReviewState: StorageRunActions.mergeSessionReviewState,
|
|
1347
1346
|
buildTurnRecord: buildTurnRecord,
|
|
1348
1347
|
buildEventRecord: buildEventRecord,
|
|
@@ -1355,5 +1354,5 @@
|
|
|
1355
1354
|
filterRecentProjectsAcrossAccount: filterRecentProjectsAcrossAccount,
|
|
1356
1355
|
derivePrimaryStatusBadge: derivePrimaryStatusBadge,
|
|
1357
1356
|
getAllSessions: getAllSessions
|
|
1358
|
-
};
|
|
1357
|
+
});
|
|
1359
1358
|
});
|
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
'use strict';
|
|
9
9
|
|
|
10
10
|
var PREFS_KEY = 'codexOverleafPrefs';
|
|
11
|
+
var LEGACY_MIGRATION_PREFIX = 'codexOverleafLegacyPanelMigration:';
|
|
11
12
|
var SESSION_TOMBSTONES_KEY = 'codexOverleafSessionTombstones';
|
|
12
13
|
var SESSION_TOMBSTONE_ENTRY_PREFIX = 'codexOverleafSessionTombstone:v2:';
|
|
13
14
|
var MAX_DELETED_SESSION_IDS_PER_PROJECT = 100;
|
|
@@ -50,6 +51,9 @@
|
|
|
50
51
|
}
|
|
51
52
|
|
|
52
53
|
function withProjectPreferenceLock(projectId, work) {
|
|
54
|
+
if (StorageDb.sharedSessionsEnabled?.()) {
|
|
55
|
+
return StorageDb.withSharedLock('preferences', { projectId: projectId }, work);
|
|
56
|
+
}
|
|
53
57
|
var lockName = 'codex-overleaf-project-prefs:' + compactScopePart(projectId);
|
|
54
58
|
var lockManager = typeof navigator !== 'undefined' && navigator && navigator.locks;
|
|
55
59
|
if (lockManager && typeof lockManager.request === 'function') {
|
|
@@ -136,118 +140,77 @@
|
|
|
136
140
|
|
|
137
141
|
function runMigrationIfNeeded(projectId, legacyStorageKey, accountScopeId) {
|
|
138
142
|
projectId = normalizeProjectPrefKey(projectId);
|
|
139
|
-
var
|
|
140
|
-
if (!
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
);
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
});
|
|
198
|
-
}
|
|
199
|
-
|
|
200
|
-
// Migration v0 → v1
|
|
201
|
-
var legacyBlob = stored[legacyStorageKey] || {};
|
|
202
|
-
var legacySessions = Array.isArray(legacyBlob.sessions) ? legacyBlob.sessions : [];
|
|
203
|
-
var migratedSessions = [];
|
|
204
|
-
|
|
205
|
-
for (var i = 0; i < legacySessions.length; i++) {
|
|
206
|
-
var legacy = legacySessions[i];
|
|
207
|
-
if (!legacy || !legacy.id) { continue; }
|
|
208
|
-
if (deletedSessionIds.indexOf(legacy.id) !== -1) { continue; }
|
|
209
|
-
var record = StorageDb.buildSessionRecord(
|
|
210
|
-
buildLegacySessionRecordInput(projectId, legacyBlob, legacy, normalizedAccountScopeId)
|
|
211
|
-
);
|
|
212
|
-
migratedSessions.push(record);
|
|
213
|
-
}
|
|
214
|
-
|
|
215
|
-
var putPromise = migratedSessions.length
|
|
216
|
-
? StorageDb.putRecords('sessions', migratedSessions)
|
|
217
|
-
: Promise.resolve([]);
|
|
218
|
-
|
|
219
|
-
return putPromise.then(function () {
|
|
220
|
-
var newPrefs = StorageDb.extractLightweightPrefs(legacyBlob, projectId);
|
|
221
|
-
newPrefs.activeSessionByProject = StorageDb.buildActiveSessionByProject(
|
|
222
|
-
{},
|
|
223
|
-
projectId,
|
|
224
|
-
legacyBlob.activeSessionId || (migratedSessions.length ? migratedSessions[migratedSessions.length - 1].id : '')
|
|
225
|
-
);
|
|
226
|
-
var mergedPrefs = mergeScopedProjectPreferences(
|
|
227
|
-
storedPrefs,
|
|
228
|
-
newPrefs,
|
|
229
|
-
normalizedAccountScopeId,
|
|
230
|
-
projectId
|
|
231
|
-
);
|
|
232
|
-
var prefsView = buildProjectPreferenceView(
|
|
233
|
-
mergedPrefs,
|
|
234
|
-
normalizedAccountScopeId,
|
|
235
|
-
projectId
|
|
236
|
-
);
|
|
237
|
-
|
|
238
|
-
return chrome.storage.local.set({ [PREFS_KEY]: mergedPrefs }).then(function () {
|
|
239
|
-
return chrome.storage.local.remove(legacyStorageKey).catch(function () {});
|
|
240
|
-
}).then(function () {
|
|
241
|
-
return {
|
|
242
|
-
prefs: prefsView,
|
|
243
|
-
sessions: migratedSessions,
|
|
244
|
-
activeSessionId: prefsView.activeSessionByProject[projectId] || '',
|
|
245
|
-
migrated: true
|
|
246
|
-
};
|
|
247
|
-
});
|
|
248
|
-
});
|
|
143
|
+
var account = normalizeTextField(accountScopeId, PROJECT_PREF_KEY_MAX_CHARS);
|
|
144
|
+
if (!account || !projectId) return Promise.resolve({ prefs: normalizePrefs({}), sessions: [],
|
|
145
|
+
activeSessionId: '', migrated: false, reason: 'account_scope_unavailable' });
|
|
146
|
+
return withProjectPreferenceLock(projectId, async function () {
|
|
147
|
+
var stored = await chrome.storage.local.get(null);
|
|
148
|
+
var claimed = claimLegacyProjectPreferences(stored[PREFS_KEY] || {}, account, projectId);
|
|
149
|
+
var storedPrefs = claimed.prefs;
|
|
150
|
+
if (claimed.changed) await chrome.storage.local.set({ [PREFS_KEY]: storedPrefs });
|
|
151
|
+
var prefs = buildProjectPreferenceView(storedPrefs, account, projectId);
|
|
152
|
+
var deleted = getDeletedSessionIds(collectSessionTombstones(stored), projectId);
|
|
153
|
+
var markerKey = LEGACY_MIGRATION_PREFIX + encodeURIComponent(String(legacyStorageKey || ''));
|
|
154
|
+
var marker = stored[markerKey];
|
|
155
|
+
var legacyBlob = stored[legacyStorageKey];
|
|
156
|
+
var hasLegacy = Boolean(legacyBlob && typeof legacyBlob === 'object' && !Array.isArray(legacyBlob));
|
|
157
|
+
var schemaCurrent = (prefs.storageSchemaVersion || 0) >= StorageDb.TARGET_SCHEMA_VERSION;
|
|
158
|
+
if (marker && (marker.projectId !== projectId || marker.sourceKey !== legacyStorageKey || !marker.accountScopeId)) {
|
|
159
|
+
throw Object.assign(new Error('The legacy history source has a conflicting migration identity.'), { code: 'legacy_migration_scope_conflict' });
|
|
160
|
+
}
|
|
161
|
+
if (typeof StorageDb.claimSessionsForAccount !== 'function') {
|
|
162
|
+
throw Object.assign(new Error('Atomic legacy-session claiming is unavailable.'), { code: 'scoped_claim_unavailable' });
|
|
163
|
+
}
|
|
164
|
+
var visible = await StorageDb.claimSessionsForAccount(projectId, account, deleted);
|
|
165
|
+
function result(currentPrefs, sessions, migrated) {
|
|
166
|
+
var wanted = currentPrefs.activeSessionByProject?.[projectId] || '';
|
|
167
|
+
return { prefs: currentPrefs, sessions: sessions,
|
|
168
|
+
activeSessionId: sessions.some(session => session.id === wanted) ? wanted : sessions.at(-1)?.id || '',
|
|
169
|
+
migrated: migrated };
|
|
170
|
+
}
|
|
171
|
+
if ((schemaCurrent && !hasLegacy) || marker?.complete || (marker && marker.accountScopeId !== account)) {
|
|
172
|
+
return result(prefs, visible, false);
|
|
173
|
+
}
|
|
174
|
+
legacyBlob = hasLegacy ? legacyBlob : {};
|
|
175
|
+
var legacySessions = Array.isArray(legacyBlob.sessions) ? legacyBlob.sessions : [];
|
|
176
|
+
var owners = new Set([legacyBlob.accountScopeId, legacyBlob.__codexOverleafFallbackAccountScopeId,
|
|
177
|
+
...legacySessions.map(session => session?.accountScopeId)].filter(value => typeof value === 'string' && value));
|
|
178
|
+
if ([...owners].some(owner => owner !== account)) return result(prefs, visible, false);
|
|
179
|
+
// The shared preferences lock serializes this source claim across accounts.
|
|
180
|
+
// Keep it after a write failure; only its owner can finish the import.
|
|
181
|
+
if (hasLegacy && !marker) {
|
|
182
|
+
marker = { sourceKey: legacyStorageKey, projectId: projectId, accountScopeId: account, complete: false };
|
|
183
|
+
await chrome.storage.local.set({ [markerKey]: marker });
|
|
184
|
+
}
|
|
185
|
+
var existingIds = new Set(visible.map(session => session.id));
|
|
186
|
+
var incoming = legacySessions.filter(session => session?.id && !deleted.includes(session.id) && !existingIds.has(session.id))
|
|
187
|
+
.map(session => StorageDb.buildSessionRecord(buildLegacySessionRecordInput(projectId, legacyBlob, session, account)));
|
|
188
|
+
var written = incoming.length ? await StorageDb.putRecords('sessions', incoming) : [];
|
|
189
|
+
if (incoming.length && (!Array.isArray(written) || incoming.some(session => !written.some(record =>
|
|
190
|
+
record.id === session.id && record.accountScopeId === account && record.projectId === projectId)))) {
|
|
191
|
+
throw Object.assign(new Error('Legacy history was not confirmed in the main session store.'), { code: 'legacy_migration_not_persisted' });
|
|
192
|
+
}
|
|
193
|
+
var sessions = [...visible, ...written];
|
|
194
|
+
var newPrefs = StorageDb.extractLightweightPrefs(legacyBlob, projectId);
|
|
195
|
+
if (schemaCurrent) {
|
|
196
|
+
// A later project's import must not reset current global preferences.
|
|
197
|
+
var legacyPrefs = newPrefs;
|
|
198
|
+
newPrefs = Object.assign({}, legacyPrefs, prefs);
|
|
199
|
+
PROJECT_SCOPED_PREF_MAPS.forEach(function (name) {
|
|
200
|
+
newPrefs[name] = Object.assign({}, legacyPrefs[name] || {}, prefs[name] || {});
|
|
249
201
|
});
|
|
250
|
-
}
|
|
202
|
+
}
|
|
203
|
+
var currentActive = prefs.activeSessionByProject?.[projectId];
|
|
204
|
+
var activeId = sessions.some(session => session.id === currentActive) ? currentActive
|
|
205
|
+
: legacyBlob.activeSessionId || sessions.at(-1)?.id || '';
|
|
206
|
+
newPrefs.activeSessionByProject = StorageDb.buildActiveSessionByProject({}, projectId, activeId);
|
|
207
|
+
var mergedPrefs = mergeScopedProjectPreferences(storedPrefs, newPrefs, account, projectId);
|
|
208
|
+
await chrome.storage.local.set({ [PREFS_KEY]: mergedPrefs });
|
|
209
|
+
// Completion is per source and owner, independent of the global schema.
|
|
210
|
+
// A failed cleanup cannot replay old content or transfer it to another account.
|
|
211
|
+
if (hasLegacy) await chrome.storage.local.set({ [markerKey]: { ...marker, complete: true } });
|
|
212
|
+
await chrome.storage.local.remove(legacyStorageKey).catch(function () {});
|
|
213
|
+
return result(buildProjectPreferenceView(mergedPrefs, account, projectId), sessions, true);
|
|
251
214
|
});
|
|
252
215
|
}
|
|
253
216
|
|