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
|
@@ -2,21 +2,24 @@
|
|
|
2
2
|
"schemaVersion": 1,
|
|
3
3
|
"entry": "extension/entries/content-entry.mjs",
|
|
4
4
|
"output": "extension/src/content/generated/content.bundle.js",
|
|
5
|
-
"sourceDigest": "
|
|
6
|
-
"outputDigest": "
|
|
7
|
-
"byteLength":
|
|
5
|
+
"sourceDigest": "548acfc19dd7be907e0c5494f2da2e11fa68dfc501e0552846ad63d4e5a35dba",
|
|
6
|
+
"outputDigest": "404e0523fc534b56e87ea96e62cd112514c06ce034209ec7a05feef83d7a64a9",
|
|
7
|
+
"byteLength": 3162346,
|
|
8
8
|
"inputs": [
|
|
9
9
|
"extension/entries/content-entry.mjs",
|
|
10
10
|
"extension/src/content/activeTurnControl.js",
|
|
11
11
|
"extension/src/content/applyResultFormatters.js",
|
|
12
12
|
"extension/src/content/assetTransferBroker.js",
|
|
13
|
+
"extension/src/content/changeHistoryView.js",
|
|
13
14
|
"extension/src/content/composerAttachments.js",
|
|
14
15
|
"extension/src/content/composerPanel.js",
|
|
15
16
|
"extension/src/content/contentRuntime.js",
|
|
16
17
|
"extension/src/content/contextTray.js",
|
|
17
18
|
"extension/src/content/diagnosticsController.js",
|
|
19
|
+
"extension/src/content/diagnosticsExport.js",
|
|
18
20
|
"extension/src/content/diagnosticsPanel.js",
|
|
19
21
|
"extension/src/content/diffReviewPanel.js",
|
|
22
|
+
"extension/src/content/directoryCleanupRecovery.js",
|
|
20
23
|
"extension/src/content/globalPreferencesController.js",
|
|
21
24
|
"extension/src/content/legacyGlobalRegistry.js",
|
|
22
25
|
"extension/src/content/localSkillsPanel.js",
|
|
@@ -43,34 +46,50 @@
|
|
|
43
46
|
"extension/src/content/providerSettingsDialog.js",
|
|
44
47
|
"extension/src/content/recentProjects.js",
|
|
45
48
|
"extension/src/content/reviewHunks.js",
|
|
49
|
+
"extension/src/content/runActivitySummary.js",
|
|
50
|
+
"extension/src/content/runCompletionMeta.js",
|
|
46
51
|
"extension/src/content/runController.js",
|
|
47
52
|
"extension/src/content/runFailureNotice.js",
|
|
48
53
|
"extension/src/content/runGuidanceController.js",
|
|
49
54
|
"extension/src/content/runGuidanceView.js",
|
|
55
|
+
"extension/src/content/runPresence.js",
|
|
50
56
|
"extension/src/content/runQueueScheduler.js",
|
|
57
|
+
"extension/src/content/runRecoveryActions.js",
|
|
51
58
|
"extension/src/content/runResultActions.js",
|
|
59
|
+
"extension/src/content/runReviewController.js",
|
|
52
60
|
"extension/src/content/runScrollLayout.js",
|
|
53
61
|
"extension/src/content/runSettlementPersistence.js",
|
|
54
62
|
"extension/src/content/runTimelineView.js",
|
|
55
63
|
"extension/src/content/scopedPersistenceCoordinator.js",
|
|
56
64
|
"extension/src/content/scopedPersistenceDetachedCommit.js",
|
|
57
65
|
"extension/src/content/scopedPersistencePanelState.js",
|
|
66
|
+
"extension/src/content/selectionContextView.js",
|
|
67
|
+
"extension/src/content/sensitivePreflight.js",
|
|
58
68
|
"extension/src/content/sessionForkController.js",
|
|
59
69
|
"extension/src/content/sessionManager.js",
|
|
60
70
|
"extension/src/content/sessionMenuView.js",
|
|
61
71
|
"extension/src/content/sessionPanel.js",
|
|
62
72
|
"extension/src/content/sessionPersistence.js",
|
|
63
73
|
"extension/src/content/settingsPanel.js",
|
|
74
|
+
"extension/src/content/settingsWorkbench.js",
|
|
75
|
+
"extension/src/content/sharedSessionViewSync.js",
|
|
76
|
+
"extension/src/content/subagentActivityView.js",
|
|
64
77
|
"extension/src/content/themeController.js",
|
|
65
78
|
"extension/src/content/trackedChangeCaptureController.js",
|
|
66
79
|
"extension/src/content/updateIdle.js",
|
|
67
80
|
"extension/src/content/updateNotice.js",
|
|
68
81
|
"extension/src/content/writebackController.js",
|
|
69
82
|
"extension/src/content/writebackOrchestrator.js",
|
|
83
|
+
"extension/src/content/writebackPlan.js",
|
|
84
|
+
"extension/src/content/writingStyleSettings.js",
|
|
85
|
+
"extension/src/content/writtenChangesView.js",
|
|
70
86
|
"extension/src/shared/agentTranscript.js",
|
|
71
87
|
"extension/src/shared/auditRecords.js",
|
|
88
|
+
"extension/src/shared/changeHistoryModel.js",
|
|
72
89
|
"extension/src/shared/compatibility.js",
|
|
73
90
|
"extension/src/shared/compileAdapter.js",
|
|
91
|
+
"extension/src/shared/composerAttachmentDraft.js",
|
|
92
|
+
"extension/src/shared/directoryCleanupProof.js",
|
|
74
93
|
"extension/src/shared/failureReasons.js",
|
|
75
94
|
"extension/src/shared/globalPreferences.js",
|
|
76
95
|
"extension/src/shared/governanceRules.js",
|
|
@@ -84,6 +103,7 @@
|
|
|
84
103
|
"extension/src/shared/projectFiles.js",
|
|
85
104
|
"extension/src/shared/providerProfiles.js",
|
|
86
105
|
"extension/src/shared/reviewing.js",
|
|
106
|
+
"extension/src/shared/runActivityModel.js",
|
|
87
107
|
"extension/src/shared/runExecutionSnapshot.js",
|
|
88
108
|
"extension/src/shared/runExecutionSnapshotCodec.js",
|
|
89
109
|
"extension/src/shared/runInputQueue.js",
|
|
@@ -91,21 +111,28 @@
|
|
|
91
111
|
"extension/src/shared/scopedPersistenceQueuePolicy.js",
|
|
92
112
|
"extension/src/shared/scopedPersistenceReceipt.js",
|
|
93
113
|
"extension/src/shared/scopedPersistenceTransaction.js",
|
|
114
|
+
"extension/src/shared/selectionContext.js",
|
|
94
115
|
"extension/src/shared/sensitiveScan.js",
|
|
95
116
|
"extension/src/shared/sessionState.js",
|
|
96
117
|
"extension/src/shared/sessionTitle.js",
|
|
97
118
|
"extension/src/shared/settlementFacts.js",
|
|
119
|
+
"extension/src/shared/sharedSessionBridge.js",
|
|
120
|
+
"extension/src/shared/sharedSessionTransfer.js",
|
|
98
121
|
"extension/src/shared/staleGuard.js",
|
|
99
122
|
"extension/src/shared/storageDb.js",
|
|
100
123
|
"extension/src/shared/storageKeys.js",
|
|
101
124
|
"extension/src/shared/storageMigration.js",
|
|
102
125
|
"extension/src/shared/storageRunActions.js",
|
|
103
126
|
"extension/src/shared/storageSessionClaims.js",
|
|
127
|
+
"extension/src/shared/storageValuePruning.js",
|
|
128
|
+
"extension/src/shared/subagentActivityModel.js",
|
|
104
129
|
"extension/src/shared/summary.js",
|
|
105
130
|
"extension/src/shared/undoOperations.js",
|
|
106
131
|
"extension/src/shared/writebackEvidenceProjection.js",
|
|
132
|
+
"extension/src/shared/writebackIntent.js",
|
|
107
133
|
"extension/src/shared/writebackOperationEvidence.js",
|
|
108
134
|
"extension/src/shared/writebackSettlement.js",
|
|
135
|
+
"extension/src/shared/writingStyle.js",
|
|
109
136
|
"extension/vendor/katex/katex.min.js",
|
|
110
137
|
"extension/vendor/markdown-it/markdown-it.min.js"
|
|
111
138
|
]
|
|
@@ -40,7 +40,7 @@
|
|
|
40
40
|
if (force || changed.includes('theme')) options.applyTheme?.(values.theme);
|
|
41
41
|
if (changed.includes('locale')) options.applyLocale?.();
|
|
42
42
|
if (force || changed.includes('preloadProjectContext')) options.onPreloadChange?.(values.preloadProjectContext);
|
|
43
|
-
if (changed.some(key => key === 'codexOverleafSkillEnabled' || key.startsWith('loadCodex'))) options.onSkillsChange?.();
|
|
43
|
+
if (changed.some(key => key === 'codexOverleafSkillEnabled' || key === 'codexLocalSkillEnabled' || key.startsWith('loadCodex'))) options.onSkillsChange?.();
|
|
44
44
|
}
|
|
45
45
|
|
|
46
46
|
function accept(value) {
|
|
@@ -17,12 +17,20 @@
|
|
|
17
17
|
'ApplyResultFormatters',
|
|
18
18
|
'AssetTransferBroker',
|
|
19
19
|
'AuditRecords',
|
|
20
|
+
'SelectionContext',
|
|
21
|
+
'SelectionContextView',
|
|
22
|
+
'WritebackIntent',
|
|
23
|
+
'DirectoryCleanupProof',
|
|
24
|
+
'ChangeHistoryModel',
|
|
25
|
+
'ChangeHistoryView',
|
|
20
26
|
'Compatibility',
|
|
21
27
|
'ComposerAttachments',
|
|
28
|
+
'ComposerAttachmentDraft',
|
|
22
29
|
'ComposerPanel',
|
|
23
30
|
'ContentRuntime',
|
|
24
31
|
'ContextTray',
|
|
25
32
|
'DiagnosticsController',
|
|
33
|
+
'DiagnosticsExport',
|
|
26
34
|
'DiagnosticsPanel',
|
|
27
35
|
'DiffReviewPanel',
|
|
28
36
|
'FailureReasons',
|
|
@@ -51,7 +59,11 @@
|
|
|
51
59
|
'ProviderSettingsCoordinator',
|
|
52
60
|
'RecentProjects',
|
|
53
61
|
'ReviewHunks',
|
|
62
|
+
'RunActivitySummary',
|
|
63
|
+
'RunPresence',
|
|
64
|
+
'RunActivityModel',
|
|
54
65
|
'RunController',
|
|
66
|
+
'RunReviewController',
|
|
55
67
|
'RunExecutionSnapshot',
|
|
56
68
|
'RunGuidanceController',
|
|
57
69
|
'RunInputQueue',
|
|
@@ -64,15 +76,20 @@
|
|
|
64
76
|
'ScopedPersistenceCoordinator',
|
|
65
77
|
'ScopedPersistenceTransaction',
|
|
66
78
|
'SensitiveScan',
|
|
79
|
+
'SensitivePreflight',
|
|
67
80
|
'SessionManager',
|
|
68
81
|
'SessionForkController',
|
|
69
82
|
'SessionPanel',
|
|
70
83
|
'SessionPersistence',
|
|
71
84
|
'SessionState',
|
|
72
85
|
'SettingsPanel',
|
|
86
|
+
'SharedSessionBridge',
|
|
87
|
+
'SharedSessionViewSync',
|
|
73
88
|
'StorageDb',
|
|
74
89
|
'StorageKeys',
|
|
75
90
|
'StorageMigration',
|
|
91
|
+
'SubagentActivityModel',
|
|
92
|
+
'SubagentActivityView',
|
|
76
93
|
'Summary',
|
|
77
94
|
'Theme',
|
|
78
95
|
'TrackedChangeCaptureController',
|
|
@@ -80,8 +97,14 @@
|
|
|
80
97
|
'UpdateIdle',
|
|
81
98
|
'UpdateNotice',
|
|
82
99
|
'WritebackController',
|
|
100
|
+
'DirectoryCleanupRecovery',
|
|
101
|
+
'WritebackIntent',
|
|
83
102
|
'WritebackOrchestrator',
|
|
84
|
-
'
|
|
103
|
+
'WritebackPlan',
|
|
104
|
+
'WritebackSettlement',
|
|
105
|
+
'WritingStyle',
|
|
106
|
+
'WritingStyleSettings',
|
|
107
|
+
'WrittenChangesView'
|
|
85
108
|
]);
|
|
86
109
|
|
|
87
110
|
const SUPPORT_MODULES = Object.freeze([
|
|
@@ -93,6 +116,7 @@
|
|
|
93
116
|
'ProviderProfiles',
|
|
94
117
|
'ProviderSettingsDialog',
|
|
95
118
|
'RunGuidanceView',
|
|
119
|
+
'RunRecoveryActions',
|
|
96
120
|
'SessionMenuView'
|
|
97
121
|
]);
|
|
98
122
|
|
|
@@ -17,11 +17,17 @@
|
|
|
17
17
|
document: documentDep = null,
|
|
18
18
|
getPanel = () => null,
|
|
19
19
|
getState = () => null,
|
|
20
|
+
getScope = () => '',
|
|
20
21
|
setState = () => {},
|
|
21
22
|
saveState = null,
|
|
22
23
|
sendBackgroundNative = () => Promise.resolve({ ok: false }),
|
|
23
24
|
getSkillLoadingSettings = () => ({ loadCodexOverleafSkills: true }),
|
|
24
25
|
isCodexOverleafSkillEnabled = () => true,
|
|
26
|
+
isCodexLocalSkillEnabled = (id, skill) => skill?.enabled !== false,
|
|
27
|
+
setCodexLocalSkillEnabled = () => {},
|
|
28
|
+
getCodexLocalSkills = () => [],
|
|
29
|
+
getCodexLocalSkillWarnings = () => [],
|
|
30
|
+
refreshCodexLocalSkills = async () => [],
|
|
25
31
|
setCodexOverleafSkillEnabled = () => {},
|
|
26
32
|
setProjectSettingsStatus = () => {},
|
|
27
33
|
tr = (key) => key,
|
|
@@ -36,27 +42,51 @@
|
|
|
36
42
|
|| root.document
|
|
37
43
|
|| (typeof globalThis !== 'undefined' ? globalThis.document : null);
|
|
38
44
|
|
|
45
|
+
let localSkillsListError = false;
|
|
46
|
+
let refreshGeneration = 0;
|
|
39
47
|
async function refreshLocalSkills() {
|
|
48
|
+
const generation = ++refreshGeneration;
|
|
49
|
+
const scope = getScope();
|
|
50
|
+
const isCurrent = () => generation === refreshGeneration && scope === getScope();
|
|
51
|
+
localSkillsListError = false;
|
|
40
52
|
showSkillListLoading();
|
|
53
|
+
const localList = getPanel()?.querySelector('[data-codex-local-skill-list]');
|
|
54
|
+
if (localList) {
|
|
55
|
+
localList.textContent = '';
|
|
56
|
+
appendLocalSkillEmpty(localList, 'codexOverleafSkillsLoading');
|
|
57
|
+
}
|
|
58
|
+
const localRefresh = localList ? refreshCodexLocalSkills({ force: true }) : Promise.resolve([]);
|
|
59
|
+
const localOutcome = localRefresh.then(() => {
|
|
60
|
+
if (isCurrent()) renderCodexLocalSkillList();
|
|
61
|
+
return null;
|
|
62
|
+
}, error => {
|
|
63
|
+
if (isCurrent()) { localSkillsListError = true; renderCodexLocalSkillList(); }
|
|
64
|
+
return error;
|
|
65
|
+
});
|
|
41
66
|
try {
|
|
42
67
|
const codexOverleafResponse = await sendBackgroundNative({
|
|
43
68
|
method: 'skills.list',
|
|
44
69
|
params: { scope: 'codex-overleaf' }
|
|
45
70
|
});
|
|
46
71
|
if (!codexOverleafResponse?.ok) {
|
|
47
|
-
throw new Error(
|
|
72
|
+
throw new Error(tx('Could not load Codex Overleaf skills. Try again.', '无法加载 Codex Overleaf 技能,请重试。'));
|
|
48
73
|
}
|
|
49
74
|
const codexOverleafSkills = Array.isArray(codexOverleafResponse.result?.skills)
|
|
50
75
|
? codexOverleafResponse.result.skills
|
|
51
76
|
: [];
|
|
77
|
+
if (!isCurrent()) return;
|
|
52
78
|
const state = getState() || {};
|
|
53
79
|
setState({
|
|
54
80
|
...state,
|
|
55
81
|
codexOverleafSkills
|
|
56
82
|
});
|
|
57
83
|
setSlashCodexOverleafSkills(codexOverleafSkills);
|
|
84
|
+
const localError = await localOutcome;
|
|
85
|
+
if (!isCurrent()) return;
|
|
58
86
|
renderLocalSkillList();
|
|
87
|
+
if (localError) throw localError;
|
|
59
88
|
} catch (err) {
|
|
89
|
+
if (!isCurrent()) return;
|
|
60
90
|
renderLocalSkillList();
|
|
61
91
|
throw err;
|
|
62
92
|
}
|
|
@@ -71,6 +101,7 @@
|
|
|
71
101
|
const placeholder = document.createElement('div');
|
|
72
102
|
placeholder.className = 'codex-project-settings-empty';
|
|
73
103
|
placeholder.textContent = tr('codexOverleafSkillsLoading');
|
|
104
|
+
placeholder.dataset.i18n = 'codexOverleafSkillsLoading';
|
|
74
105
|
list.append(placeholder);
|
|
75
106
|
}
|
|
76
107
|
|
|
@@ -84,6 +115,7 @@
|
|
|
84
115
|
}
|
|
85
116
|
|
|
86
117
|
function renderLocalSkillList() {
|
|
118
|
+
renderCodexLocalSkillList();
|
|
87
119
|
const list = getPanel()?.querySelector('[data-local-skill-list]');
|
|
88
120
|
if (!list) {
|
|
89
121
|
return;
|
|
@@ -93,10 +125,10 @@
|
|
|
93
125
|
const codexOverleafEnabled = getSkillLoadingSettings().loadCodexOverleafSkills !== false;
|
|
94
126
|
list.textContent = '';
|
|
95
127
|
if (!codexOverleafEnabled) {
|
|
96
|
-
appendLocalSkillEmpty(list,
|
|
128
|
+
appendLocalSkillEmpty(list, 'codexOverleafSkillsDisabled');
|
|
97
129
|
}
|
|
98
130
|
if (!codexOverleafSkills.length) {
|
|
99
|
-
appendLocalSkillEmpty(list,
|
|
131
|
+
appendLocalSkillEmpty(list, 'codexOverleafSkillsEmpty');
|
|
100
132
|
return;
|
|
101
133
|
}
|
|
102
134
|
for (const skill of codexOverleafSkills) {
|
|
@@ -104,14 +136,55 @@
|
|
|
104
136
|
}
|
|
105
137
|
}
|
|
106
138
|
|
|
139
|
+
function renderCodexLocalSkillList() {
|
|
140
|
+
const list = getPanel()?.querySelector('[data-codex-local-skill-list]');
|
|
141
|
+
if (!list) return;
|
|
142
|
+
list.textContent = '';
|
|
143
|
+
const enabled = getSkillLoadingSettings().loadCodexLocalSkills !== false;
|
|
144
|
+
if (!enabled) appendLocalSkillEmpty(list, 'codexLocalSkillsDisabled');
|
|
145
|
+
const skills = getCodexLocalSkills();
|
|
146
|
+
if (localSkillsListError) { appendLocalSkillEmpty(list, 'codexLocalSkillsLoadFailed'); return; }
|
|
147
|
+
if (!Array.isArray(skills)) { appendLocalSkillEmpty(list, 'codexOverleafSkillsLoading'); return; }
|
|
148
|
+
if (!skills.length) appendLocalSkillEmpty(list, 'codexLocalSkillsEmpty');
|
|
149
|
+
const skippedCount = getCodexLocalSkillWarnings().reduce((sum, warning) => sum + (warning?.code === 'codex_local_skills_skipped' ? warning.count : 0), 0);
|
|
150
|
+
if (skippedCount > 0) {
|
|
151
|
+
const warning = document.createElement('div');
|
|
152
|
+
warning.className = 'codex-project-settings-empty';
|
|
153
|
+
warning._refreshLocale = () => { warning.textContent = tr('codexLocalSkillsSkipped', { count: skippedCount }); };
|
|
154
|
+
warning._refreshLocale();
|
|
155
|
+
list.append(warning);
|
|
156
|
+
}
|
|
157
|
+
for (const skill of skills) {
|
|
158
|
+
const title = String(skill.title || skill.name || skill.id).trim();
|
|
159
|
+
const duplicateTitle = skills.filter(other => String(other.title || other.name || other.id).trim() === title).length > 1;
|
|
160
|
+
renderCodexOverleafSkillRow(list, { ...skill, title, duplicateTitle, scope: 'codex-local', removable: false }, enabled);
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
function createSkillMark(id) {
|
|
165
|
+
const mark = document.createElement('span');
|
|
166
|
+
mark.className = 'codex-local-skill-icon';
|
|
167
|
+
mark.setAttribute('aria-hidden', 'true');
|
|
168
|
+
// Static, locally owned glyphs only; skill metadata never supplies SVG.
|
|
169
|
+
const glyph = id === 'annotated-rewrite'
|
|
170
|
+
? '<path d="M3.2 12.8 4 9.7l6.6-6.6a1.4 1.4 0 0 1 2 2L6 11.7z"/><path d="m9.6 4.1 2.3 2.3"/>'
|
|
171
|
+
: id === 'parallel-subagents'
|
|
172
|
+
? '<circle cx="4" cy="3.5" r="1.75"/><circle cx="12" cy="3.5" r="1.75"/><circle cx="8" cy="12.5" r="1.75"/><path d="M4 5.25v1.5A1.75 1.75 0 0 0 5.75 8.5h4.5A1.75 1.75 0 0 0 12 6.75v-1.5M8 8.5v2.25"/>'
|
|
173
|
+
: '<rect x="3" y="2.5" width="10" height="11" rx="2"/><path d="M6 6h4M6 9h4"/>';
|
|
174
|
+
mark.innerHTML = '<svg viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.4" stroke-linecap="round" stroke-linejoin="round" focusable="false">' + glyph + '</svg>';
|
|
175
|
+
return mark;
|
|
176
|
+
}
|
|
177
|
+
|
|
107
178
|
function renderCodexOverleafSkillRow(list, skill, masterEnabled) {
|
|
108
179
|
const id = String(skill?.id || '').trim();
|
|
109
180
|
if (!id) {
|
|
110
181
|
return;
|
|
111
182
|
}
|
|
183
|
+
const local = skill.scope === 'codex-local';
|
|
184
|
+
const compact = Boolean(list.closest?.('.codex-settings-workbench'));
|
|
112
185
|
const row = document.createElement('div');
|
|
113
186
|
row.className = 'codex-local-skill-row';
|
|
114
|
-
row.dataset.scope = 'codex-overleaf';
|
|
187
|
+
row.dataset.scope = local ? 'codex-local' : 'codex-overleaf';
|
|
115
188
|
if (!masterEnabled) {
|
|
116
189
|
row.dataset.disabled = 'true';
|
|
117
190
|
}
|
|
@@ -125,21 +198,61 @@
|
|
|
125
198
|
const trimmedTitle = typeof skill.title === 'string' ? skill.title.trim() : '';
|
|
126
199
|
text.textContent = trimmedTitle || id;
|
|
127
200
|
text.title = id;
|
|
128
|
-
|
|
201
|
+
text.className = 'codex-local-skill-name';
|
|
202
|
+
const copy = document.createElement('div');
|
|
203
|
+
copy.className = 'codex-local-skill-copy';
|
|
204
|
+
copy.append(text);
|
|
205
|
+
const descriptions = {
|
|
206
|
+
'annotated-rewrite': tx('Guided editing for document revisions.', '用于文稿修订的编辑流程。'),
|
|
207
|
+
'parallel-subagents': tx('Split independent subtasks across multiple agents.', '将相互独立的子任务分配给多个 agent。')
|
|
208
|
+
};
|
|
209
|
+
const description = (!local && descriptions[id])
|
|
210
|
+
|| (typeof skill.description === 'string' ? skill.description.replace(/\s+/g, ' ').trim() : '');
|
|
211
|
+
if (description) {
|
|
212
|
+
const help = document.createElement('span');
|
|
213
|
+
help.className = 'codex-local-skill-description';
|
|
214
|
+
help.textContent = description;
|
|
215
|
+
help.title = description;
|
|
216
|
+
copy.append(help);
|
|
217
|
+
}
|
|
218
|
+
const sourceText = () => (skill.sourceKind === 'system' ? tx('Codex built-in', 'Codex 内置')
|
|
219
|
+
: skill.sourceKind === 'plugin' && skill.sourceLabel ? String(skill.sourceLabel) : tx('Local Codex', 'Codex 本地'))
|
|
220
|
+
+ (skill.duplicateTitle ? ' · ' + (skill.sourceHint || id.slice(-8)) : '');
|
|
221
|
+
let sourceLabel = null;
|
|
222
|
+
if (local) {
|
|
223
|
+
sourceLabel = document.createElement('span');
|
|
224
|
+
sourceLabel.className = 'codex-local-skill-description';
|
|
225
|
+
sourceLabel.textContent = sourceText();
|
|
226
|
+
copy.append(sourceLabel);
|
|
227
|
+
}
|
|
228
|
+
if (compact) row.append(createSkillMark(local ? '' : id));
|
|
229
|
+
row.append(copy);
|
|
230
|
+
const controls = compact ? document.createElement('div') : row;
|
|
231
|
+
if (compact) controls.className = 'codex-local-skill-controls';
|
|
129
232
|
|
|
130
|
-
//
|
|
131
|
-
// row, after the Remove control. It remains a real checkbox input.
|
|
233
|
+
// Keep the same native input and callbacks; only its visual grouping changes.
|
|
132
234
|
const toggle = document.createElement('input');
|
|
133
235
|
toggle.type = 'checkbox';
|
|
134
236
|
toggle.className = 'codex-switch';
|
|
135
|
-
toggle.checked = isCodexOverleafSkillEnabled(id);
|
|
136
|
-
|
|
237
|
+
toggle.checked = local ? isCodexLocalSkillEnabled(id, skill) : isCodexOverleafSkillEnabled(id);
|
|
238
|
+
const accessibleSkillName = (trimmedTitle || id)
|
|
239
|
+
+ (local && skill.duplicateTitle ? ': ' + (skill.sourceHint || id.slice(-8)) : '');
|
|
240
|
+
toggle.setAttribute('aria-label', accessibleSkillName + ': ' + tr('codexOverleafSkillEnableToggle'));
|
|
137
241
|
if (!masterEnabled) {
|
|
138
242
|
toggle.disabled = true;
|
|
139
243
|
}
|
|
140
244
|
toggle.addEventListener('change', event => {
|
|
141
|
-
|
|
245
|
+
if (local) setCodexLocalSkillEnabled(id, event.target.checked);
|
|
246
|
+
else setCodexOverleafSkillEnabled(id, event.target.checked);
|
|
142
247
|
});
|
|
248
|
+
row._refreshLocale = () => {
|
|
249
|
+
if (sourceLabel) sourceLabel.textContent = sourceText();
|
|
250
|
+
toggle.setAttribute('aria-label', accessibleSkillName + ': ' + tr('codexOverleafSkillEnableToggle'));
|
|
251
|
+
const label = !local && id === 'annotated-rewrite' ? tx('Guided editing for document revisions.', '用于文稿修订的编辑流程。')
|
|
252
|
+
: !local && id === 'parallel-subagents' ? tx('Split independent subtasks across multiple agents.', '将相互独立的子任务分配给多个 agent。') : '';
|
|
253
|
+
const help = copy.querySelector('.codex-local-skill-description');
|
|
254
|
+
if (label && help) { help.textContent = label; help.title = label; }
|
|
255
|
+
};
|
|
143
256
|
|
|
144
257
|
if (skill.removable !== false) {
|
|
145
258
|
// The Remove / Confirm / Cancel controls share an actions container so
|
|
@@ -164,6 +277,11 @@
|
|
|
164
277
|
cancelBtn.type = 'button';
|
|
165
278
|
cancelBtn.className = 'codex-set-btn';
|
|
166
279
|
cancelBtn.textContent = tr('localSkillRemoveCancel');
|
|
280
|
+
const refreshRow = row._refreshLocale;
|
|
281
|
+
row._refreshLocale = () => {
|
|
282
|
+
refreshRow(); removeBtn.textContent = tr('localSkillRemove'); cancelBtn.textContent = tr('localSkillRemoveCancel');
|
|
283
|
+
confirmBtn.textContent = tr(confirmBtn.disabled ? 'localSkillRemoving' : 'localSkillRemoveConfirm');
|
|
284
|
+
};
|
|
167
285
|
|
|
168
286
|
function enterConfirming() {
|
|
169
287
|
// Reset any previously confirming row back to its Remove button state.
|
|
@@ -212,15 +330,16 @@
|
|
|
212
330
|
});
|
|
213
331
|
|
|
214
332
|
actions.append(removeBtn);
|
|
215
|
-
|
|
333
|
+
controls.append(actions);
|
|
216
334
|
|
|
217
335
|
// Store references so resetConfirmingRow can find and reset this row.
|
|
218
336
|
row._exitConfirming = exitConfirming;
|
|
219
337
|
row._skillId = id;
|
|
220
338
|
}
|
|
221
339
|
|
|
222
|
-
//
|
|
223
|
-
|
|
340
|
+
// The switch remains rightmost, including during removal confirmation.
|
|
341
|
+
controls.append(toggle);
|
|
342
|
+
if (compact) row.append(controls);
|
|
224
343
|
|
|
225
344
|
list.append(row);
|
|
226
345
|
}
|
|
@@ -239,10 +358,11 @@
|
|
|
239
358
|
}
|
|
240
359
|
}
|
|
241
360
|
|
|
242
|
-
function appendLocalSkillEmpty(list,
|
|
361
|
+
function appendLocalSkillEmpty(list, key) {
|
|
243
362
|
const empty = document.createElement('div');
|
|
244
363
|
empty.className = 'codex-project-settings-empty';
|
|
245
|
-
empty.textContent =
|
|
364
|
+
empty.textContent = tr(key);
|
|
365
|
+
empty.dataset.i18n = key;
|
|
246
366
|
list.append(empty);
|
|
247
367
|
}
|
|
248
368
|
|
|
@@ -258,7 +378,7 @@
|
|
|
258
378
|
throw new Error(response?.error?.message || 'native host did not remove Codex Overleaf skill');
|
|
259
379
|
}
|
|
260
380
|
const activeSkill = normalizeComposerSkillInvocation(getComposerSkillInvocation());
|
|
261
|
-
if (activeSkill?.scope === 'codex-overleaf' && activeSkill.
|
|
381
|
+
if (activeSkill?.scope === 'codex-overleaf' && activeSkill.id === id) {
|
|
262
382
|
clearComposerSkillInvocation();
|
|
263
383
|
}
|
|
264
384
|
setProjectSettingsStatus(tr('codexOverleafSkillRemoveDone'), 'completed');
|
|
@@ -269,6 +389,11 @@
|
|
|
269
389
|
|
|
270
390
|
return {
|
|
271
391
|
refreshLocalSkills,
|
|
392
|
+
refreshLocale: () => {
|
|
393
|
+
for (const selector of ['[data-local-skill-list]', '[data-codex-local-skill-list]']) {
|
|
394
|
+
for (const row of getPanel()?.querySelector(selector)?.children || []) row._refreshLocale?.();
|
|
395
|
+
}
|
|
396
|
+
},
|
|
272
397
|
renderLocalSkillList,
|
|
273
398
|
removeCodexOverleafSkill
|
|
274
399
|
};
|
|
@@ -454,11 +454,16 @@
|
|
|
454
454
|
const text = String(textNode.textContent || '');
|
|
455
455
|
const match = text.match(/^(\s*)(Conclusion:|结论:|Changes:|修改:)(\s*)/);
|
|
456
456
|
if (!match || !textNode.parentNode) continue;
|
|
457
|
+
// The answer speaks for itself: older stored reports still begin with a
|
|
458
|
+
// "Conclusion:" prefix, which is dropped rather than labelled.
|
|
459
|
+
if (['Conclusion:', '结论:'].includes(match[2])) {
|
|
460
|
+
textNode.textContent = `${match[1]}${text.slice(match[0].length)}`;
|
|
461
|
+
if (!String(block.textContent || '').trim()) block.remove?.();
|
|
462
|
+
continue;
|
|
463
|
+
}
|
|
457
464
|
const label = document.createElement('span');
|
|
458
465
|
label.className = 'run-system-label';
|
|
459
|
-
label.dataset.systemLabel =
|
|
460
|
-
? 'conclusion'
|
|
461
|
-
: 'changes';
|
|
466
|
+
label.dataset.systemLabel = 'changes';
|
|
462
467
|
label.textContent = `${match[2]}${match[3]}`;
|
|
463
468
|
textNode.textContent = `${match[1]}${text.slice(match[0].length)}`;
|
|
464
469
|
textNode.parentNode.insertBefore(label, textNode);
|
|
@@ -487,7 +492,7 @@
|
|
|
487
492
|
const check = document.createElement('span');
|
|
488
493
|
check.className = 'run-change-summary__check';
|
|
489
494
|
check.setAttribute('aria-hidden', 'true');
|
|
490
|
-
check.
|
|
495
|
+
check.innerHTML = '<svg class="codex-glyph" viewBox="0 0 16 16" aria-hidden="true" focusable="false"><path d="m3.5 8 3 3 6-6"/></svg>';
|
|
491
496
|
const text = document.createElement('span');
|
|
492
497
|
text.textContent = tx(
|
|
493
498
|
`${syncedFiles} ${syncedFiles === 1 ? 'file' : 'files'} synced`,
|
|
@@ -1,11 +1,8 @@
|
|
|
1
1
|
(function initCodexOverleafMarkdownText() {
|
|
2
2
|
'use strict';
|
|
3
3
|
|
|
4
|
-
//
|
|
5
|
-
//
|
|
6
|
-
// out of contentRuntime.js (v1.4.5 structural-debt phase 1). The code below
|
|
7
|
-
// moved verbatim (original indentation kept); the four runtime collaborators
|
|
8
|
-
// are factory-injected so behavior is unchanged.
|
|
4
|
+
// Assistant-text rendering, sanitizers, and line-reference controls.
|
|
5
|
+
// Runtime collaborators are factory-injected.
|
|
9
6
|
function create(deps = {}) {
|
|
10
7
|
const {
|
|
11
8
|
LineReferences,
|
|
@@ -588,7 +585,9 @@
|
|
|
588
585
|
return;
|
|
589
586
|
}
|
|
590
587
|
renderingDiagnosticKeys.add(key);
|
|
591
|
-
|
|
588
|
+
try {
|
|
589
|
+
if (typeof deps.recordRenderingDiagnostic === 'function') deps.recordRenderingDiagnostic({ code, detail });
|
|
590
|
+
} catch (_error) { /* A diagnostic sink must not interrupt rendering. */ }
|
|
592
591
|
}
|
|
593
592
|
|
|
594
593
|
function appendMarkdownParagraphFlow(target, value) {
|
|
@@ -117,11 +117,12 @@
|
|
|
117
117
|
if (generation !== modelLoadGeneration) {
|
|
118
118
|
return { stale: true };
|
|
119
119
|
}
|
|
120
|
+
options.assertCurrent?.();
|
|
120
121
|
const responseProviderId = response?.result?.providerId || '';
|
|
121
122
|
if (selection?.providerId && responseProviderId && responseProviderId !== selection.providerId) {
|
|
122
123
|
return { stale: true };
|
|
123
124
|
}
|
|
124
|
-
if (selection?.providerId && selection.providerId !== 'builtin'
|
|
125
|
+
if (response?.ok && selection?.providerId && selection.providerId !== 'builtin'
|
|
125
126
|
&& Number(response?.result?.providerRevision) !== Number(selection.providerRevision)) {
|
|
126
127
|
return { stale: true };
|
|
127
128
|
}
|
|
@@ -170,6 +171,7 @@
|
|
|
170
171
|
if (generation !== modelLoadGeneration) {
|
|
171
172
|
return { stale: true };
|
|
172
173
|
}
|
|
174
|
+
options.assertCurrent?.();
|
|
173
175
|
applyUnavailableModelOptions(error);
|
|
174
176
|
return { stale: false, error };
|
|
175
177
|
}
|
|
@@ -251,7 +253,7 @@
|
|
|
251
253
|
}
|
|
252
254
|
const option = document.createElement('option');
|
|
253
255
|
option.value = id;
|
|
254
|
-
option.textContent = model.label;
|
|
256
|
+
option.textContent = model.unverified && model.label === `${id} (custom)` ? tx(`${id} (custom)`, `${id}(自定义)`) : model.label;
|
|
255
257
|
option.dataset.reasoningEfforts = normalizeReasoningEffortsForSelect(model.reasoningEfforts).join(',');
|
|
256
258
|
option.dataset.defaultReasoningEffort = model.defaultReasoningEffort || '';
|
|
257
259
|
option.dataset.reasoningPresentation = model.reasoningPresentation || '';
|
|
@@ -269,7 +271,7 @@
|
|
|
269
271
|
if (selectedId && !renderedSelected && options.allowUnknownSelected !== false) {
|
|
270
272
|
const option = document.createElement('option');
|
|
271
273
|
option.value = selectedId;
|
|
272
|
-
option.textContent = `${selectedId} (custom)
|
|
274
|
+
option.textContent = tx(`${selectedId} (custom)`, `${selectedId}(自定义)`);
|
|
273
275
|
option.dataset.reasoningEfforts = '';
|
|
274
276
|
option.dataset.defaultReasoningEffort = '';
|
|
275
277
|
option.dataset.reasoningPresentation = 'none';
|
|
@@ -370,7 +372,7 @@
|
|
|
370
372
|
for (const option of Array.from(reasoningSelect.options || [])) {
|
|
371
373
|
list.append(createModelConfigChoice({
|
|
372
374
|
value: option.value,
|
|
373
|
-
label:
|
|
375
|
+
label: formatReasoningEffortLabel(option.value, reasoningSelect.dataset.presentation),
|
|
374
376
|
datasetName: 'reasoningChoice'
|
|
375
377
|
}));
|
|
376
378
|
}
|
|
@@ -384,6 +386,7 @@
|
|
|
384
386
|
}
|
|
385
387
|
list.textContent = '';
|
|
386
388
|
for (const option of Array.from(modelSelect.options || [])) {
|
|
389
|
+
if (option.dataset.unverified === 'true' && [`${option.value} (custom)`, `${option.value}(自定义)`].includes(option.textContent)) option.textContent = tx(`${option.value} (custom)`, `${option.value}(自定义)`);
|
|
387
390
|
const choice = createModelConfigChoice({
|
|
388
391
|
value: option.value,
|
|
389
392
|
label: option.textContent || option.value,
|
|
@@ -427,7 +430,7 @@
|
|
|
427
430
|
|
|
428
431
|
const check = document.createElement('span');
|
|
429
432
|
check.className = 'codex-model-config-check';
|
|
430
|
-
check.
|
|
433
|
+
check.innerHTML = '<svg class="codex-glyph" viewBox="0 0 16 16" aria-hidden="true" focusable="false"><path d="m3.5 8 3 3 6-6"/></svg>';
|
|
431
434
|
check.setAttribute('aria-hidden', 'true');
|
|
432
435
|
button.append(check);
|
|
433
436
|
return button;
|