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
|
@@ -5,14 +5,15 @@
|
|
|
5
5
|
waiting: 'waiting_for_idle',
|
|
6
6
|
waiting_for_safe_point: 'waiting_for_idle',
|
|
7
7
|
awaiting_health_check: 'awaiting_health',
|
|
8
|
-
health_checking: 'awaiting_health'
|
|
8
|
+
health_checking: 'awaiting_health',
|
|
9
|
+
bootstrap_pending: 'awaiting_health'
|
|
9
10
|
});
|
|
10
|
-
|
|
11
11
|
const PHASES = Object.freeze([
|
|
12
12
|
'idle',
|
|
13
13
|
'up_to_date',
|
|
14
14
|
'checking',
|
|
15
15
|
'update_available',
|
|
16
|
+
'manual_install_required',
|
|
16
17
|
'downloading',
|
|
17
18
|
'staged',
|
|
18
19
|
'waiting_for_idle',
|
|
@@ -27,7 +28,7 @@
|
|
|
27
28
|
|
|
28
29
|
const PHASE_TIMEOUTS = Object.freeze({
|
|
29
30
|
checking: 60 * 1000,
|
|
30
|
-
downloading:
|
|
31
|
+
downloading: 6 * 60 * 1000,
|
|
31
32
|
applying: 90 * 1000,
|
|
32
33
|
awaiting_health: 2 * 60 * 1000,
|
|
33
34
|
rolling_back: 60 * 1000
|
|
@@ -75,9 +76,11 @@
|
|
|
75
76
|
const TRANSITIONS = Object.freeze({
|
|
76
77
|
idle: Object.freeze(['checking']),
|
|
77
78
|
up_to_date: Object.freeze(['checking', 'idle']),
|
|
78
|
-
checking: Object.freeze(['idle', 'up_to_date', 'update_available', 'failed']),
|
|
79
|
+
checking: Object.freeze(['idle', 'up_to_date', 'update_available', 'manual_install_required', 'failed']),
|
|
80
|
+
// Only a reinstall resolves it; leave by checking again or going idle.
|
|
81
|
+
manual_install_required: Object.freeze(['checking', 'idle', 'update_available', 'failed']),
|
|
79
82
|
update_available: Object.freeze(['checking', 'downloading', 'deferred', 'failed']),
|
|
80
|
-
downloading: Object.freeze(['staged', 'failed']),
|
|
83
|
+
downloading: Object.freeze(['staged', 'failed', 'update_available', 'idle']),
|
|
81
84
|
staged: Object.freeze(['waiting_for_idle', 'applying', 'update_available', 'deferred', 'failed']),
|
|
82
85
|
waiting_for_idle: Object.freeze(['applying', 'update_available', 'deferred', 'failed']),
|
|
83
86
|
applying: Object.freeze(['staged', 'awaiting_health', 'rolling_back', 'failed']),
|
|
@@ -5,21 +5,28 @@
|
|
|
5
5
|
})(typeof window !== 'undefined' ? window : (typeof globalThis !== 'undefined' ? globalThis : this), function () {
|
|
6
6
|
'use strict';
|
|
7
7
|
|
|
8
|
-
var REVISION = '2026-
|
|
8
|
+
var REVISION = '2026-10-05-scope-correction-v42';
|
|
9
9
|
var METHODS = freezeCatalog({
|
|
10
10
|
initializeCapability: entry('bridge.initialize', 'control', 'none', 'default', false, 'none'),
|
|
11
11
|
probe: entry('bridge.probe', 'read', 'none', 'default', false, 'safe'),
|
|
12
12
|
cancelActiveWrite: entry('write.cancel', 'control', 'none', 'default', false, 'idempotent'),
|
|
13
13
|
getProjectSnapshot: entry('snapshot.read', 'read', 'none', 'snapshot', true, 'safe'),
|
|
14
14
|
getProjectFileList: entry('snapshot.list', 'read', 'none', 'file_list', true, 'safe'),
|
|
15
|
+
listReferenceProjects: entry('reference.list', 'read', 'none', 'file_list', false, 'safe'),
|
|
16
|
+
getReferenceProjectSnapshot: entry('reference.read', 'read', 'none', 'snapshot', false, 'safe'),
|
|
17
|
+
cancelReferenceRead: entry('reference.cancel', 'control', 'none', 'default', false, 'idempotent'),
|
|
15
18
|
invalidateProjectSnapshot: entry('snapshot.invalidate', 'cache', 'none', 'default', false, 'idempotent'),
|
|
16
19
|
createCheckpoint: entry('checkpoint.create', 'page_state', 'none', 'default', false, 'no_retry'),
|
|
17
20
|
ensureReviewing: entry('reviewing.enable', 'page_state', 'optional', 'default', true, 'idempotent'),
|
|
18
21
|
ensureEditing: entry('reviewing.disable', 'page_state', 'optional', 'default', true, 'idempotent'),
|
|
19
22
|
applyOperations: entry('document.write', 'document', 'required', 'writeback', true, 'no_retry'),
|
|
20
|
-
|
|
23
|
+
// Receipts settle already-dispatched writes after cancellation; their RPC deadlines still apply.
|
|
24
|
+
getWritebackReceipt: entry('writeback.receipt', 'read', 'required', 'default', false, 'safe'),
|
|
25
|
+
getSelectionContext: entry('editor.selection', 'read', 'required', 'default', true, 'safe'),
|
|
26
|
+
binaryUploadBegin: entry('asset.stage', 'cache', 'required', 'default', true, 'no_retry'),
|
|
21
27
|
binaryUploadAppend: entry('asset.stage', 'cache', 'none', 'writeback', true, 'no_retry'),
|
|
22
28
|
binaryUploadCommit: entry('asset.write', 'document', 'required', 'writeback', true, 'no_retry'),
|
|
29
|
+
binaryUploadStatus: entry('asset.receipt', 'read', 'required', 'default', false, 'safe'),
|
|
23
30
|
binaryUploadAbort: entry('asset.stage', 'cache', 'none', 'default', false, 'idempotent'),
|
|
24
31
|
jumpToPosition: entry('editor.navigate', 'navigation', 'required', 'default', false, 'idempotent'),
|
|
25
32
|
reconcileTrackedChangeCapture: entry('tracked_changes.read', 'read', 'required', 'default', false, 'safe'),
|
|
@@ -83,55 +83,31 @@
|
|
|
83
83
|
.replace(/^\/+/, '');
|
|
84
84
|
}
|
|
85
85
|
|
|
86
|
+
// Project metadata, ZIP names and operation paths are already literal names.
|
|
87
|
+
// Decoding here would alias e.g. "a%20b.tex" with "a b.tex".
|
|
86
88
|
function normalizeSafeProjectPath(value) {
|
|
87
|
-
if (typeof value !== 'string')
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
}
|
|
93
|
-
const trimmed = value.trim();
|
|
94
|
-
if (!trimmed || trimmed.length > MAX_SAFE_PROJECT_PATH_LENGTH) {
|
|
95
|
-
return '';
|
|
96
|
-
}
|
|
97
|
-
if (trimmed.startsWith('/') || trimmed.includes('\\') || hasWindowsDrivePrefix(trimmed)) {
|
|
98
|
-
return '';
|
|
99
|
-
}
|
|
89
|
+
if (typeof value !== 'string' || !value || value.length > MAX_SAFE_PROJECT_PATH_LENGTH || value.trim() !== value
|
|
90
|
+
|| hasControlCharacter(value) || value.startsWith('/') || value.includes('\\')
|
|
91
|
+
|| hasWindowsDrivePrefix(value)) return '';
|
|
92
|
+
return value.split('/').some(segment => !segment || segment === '.' || segment === '..') ? '' : value;
|
|
93
|
+
}
|
|
100
94
|
|
|
101
|
-
|
|
95
|
+
// Use only at an explicitly URL-encoded input boundary. Return one decoding,
|
|
96
|
+
// while conservatively checking nested encodings for traversal/separators.
|
|
97
|
+
function normalizeUrlEncodedProjectPath(value) {
|
|
98
|
+
if (typeof value !== 'string' || hasEncodedSeparator(value)) return '';
|
|
99
|
+
let decoded;
|
|
100
|
+
try { decoded = decodeURIComponent(value); } catch (_error) { return ''; }
|
|
101
|
+
const result = normalizeSafeProjectPath(decoded);
|
|
102
|
+
if (!result) return '';
|
|
102
103
|
for (let index = 0; index < 3; index += 1) {
|
|
103
|
-
if (hasEncodedSeparator(decoded))
|
|
104
|
-
return '';
|
|
105
|
-
}
|
|
104
|
+
if (hasEncodedSeparator(decoded) || !normalizeSafeProjectPath(decoded)) return '';
|
|
106
105
|
let next;
|
|
107
|
-
try {
|
|
108
|
-
|
|
109
|
-
} catch (_error) {
|
|
110
|
-
return '';
|
|
111
|
-
}
|
|
112
|
-
if (next === decoded) {
|
|
113
|
-
break;
|
|
114
|
-
}
|
|
106
|
+
try { next = decodeURIComponent(decoded); } catch (_error) { break; }
|
|
107
|
+
if (next === decoded) break;
|
|
115
108
|
decoded = next;
|
|
116
109
|
}
|
|
117
|
-
|
|
118
|
-
if (hasControlCharacter(decoded)
|
|
119
|
-
|| decoded.startsWith('/')
|
|
120
|
-
|| decoded.includes('\\')
|
|
121
|
-
|| hasWindowsDrivePrefix(decoded)
|
|
122
|
-
|| decoded.length > MAX_SAFE_PROJECT_PATH_LENGTH) {
|
|
123
|
-
return '';
|
|
124
|
-
}
|
|
125
|
-
|
|
126
|
-
const normalized = decoded.replace(/\/+/g, '/').trim();
|
|
127
|
-
if (!normalized || normalized.length > MAX_SAFE_PROJECT_PATH_LENGTH) {
|
|
128
|
-
return '';
|
|
129
|
-
}
|
|
130
|
-
const segments = normalized.split('/');
|
|
131
|
-
if (segments.some(segment => !segment || segment === '.' || segment === '..')) {
|
|
132
|
-
return '';
|
|
133
|
-
}
|
|
134
|
-
return normalized;
|
|
110
|
+
return hasEncodedSeparator(decoded) || !normalizeSafeProjectPath(decoded) ? '' : result;
|
|
135
111
|
}
|
|
136
112
|
|
|
137
113
|
function assertSafeProjectPath(value, label = 'path') {
|
|
@@ -175,6 +151,7 @@
|
|
|
175
151
|
isUsableProjectFileContent,
|
|
176
152
|
isTextProjectPath,
|
|
177
153
|
normalizePath,
|
|
178
|
-
normalizeSafeProjectPath
|
|
154
|
+
normalizeSafeProjectPath,
|
|
155
|
+
normalizeUrlEncodedProjectPath
|
|
179
156
|
};
|
|
180
157
|
});
|
|
@@ -9,6 +9,105 @@
|
|
|
9
9
|
|
|
10
10
|
const BUILTIN_PROVIDER_ID = 'builtin';
|
|
11
11
|
|
|
12
|
+
const PROVIDER_CONNECTIONS = {
|
|
13
|
+
kimi: {
|
|
14
|
+
anthropic: { baseUrl: 'https://api.moonshot.cn/anthropic', wireApiPreference: 'anthropic', authMode: 'bearer', reasoningAdapter: 'anthropic' },
|
|
15
|
+
chat: { baseUrl: 'https://api.moonshot.cn/v1', wireApiPreference: 'chat', authMode: 'bearer', reasoningAdapter: 'auto' }
|
|
16
|
+
},
|
|
17
|
+
glm: {
|
|
18
|
+
anthropic: { baseUrl: 'https://open.bigmodel.cn/api/anthropic', wireApiPreference: 'anthropic', authMode: 'bearer', reasoningAdapter: 'anthropic' },
|
|
19
|
+
chat: { baseUrl: 'https://open.bigmodel.cn/api/paas/v4', wireApiPreference: 'chat', authMode: 'bearer', reasoningAdapter: 'auto' }
|
|
20
|
+
},
|
|
21
|
+
deepseek: {
|
|
22
|
+
anthropic: { baseUrl: 'https://api.deepseek.com/anthropic', wireApiPreference: 'anthropic', authMode: 'x-api-key', reasoningAdapter: 'anthropic' },
|
|
23
|
+
chat: { baseUrl: 'https://api.deepseek.com', wireApiPreference: 'chat', authMode: 'bearer', reasoningAdapter: 'deepseek' }
|
|
24
|
+
}
|
|
25
|
+
};
|
|
26
|
+
|
|
27
|
+
// Shortcuts select a protocol-specific connection, never an active provider.
|
|
28
|
+
const PROVIDER_PRESETS = [
|
|
29
|
+
{ id: 'custom', name: 'Custom connection', short: '+', baseUrl: '', wireApiPreference: 'auto' },
|
|
30
|
+
{ id: 'openai-compatible', name: 'OpenAI-compatible API', short: 'API', baseUrl: '', wireApiPreference: 'auto' },
|
|
31
|
+
{ id: 'anthropic-compatible', name: 'Anthropic-compatible API', short: 'API', baseUrl: '', wireApiPreference: 'anthropic', authMode: 'x-api-key', reasoningAdapter: 'anthropic' },
|
|
32
|
+
{ id: 'kimi', name: 'Kimi', short: 'K', ...PROVIDER_CONNECTIONS.kimi.anthropic },
|
|
33
|
+
{ id: 'glm', name: 'GLM', short: 'G', ...PROVIDER_CONNECTIONS.glm.anthropic },
|
|
34
|
+
{ id: 'deepseek', name: 'DeepSeek', short: 'D', ...PROVIDER_CONNECTIONS.deepseek.anthropic }
|
|
35
|
+
];
|
|
36
|
+
const MODEL_EFFORTS = ['none', 'minimal', 'low', 'medium', 'high', 'xhigh', 'max'];
|
|
37
|
+
|
|
38
|
+
function getPresetConnectionInfo(baseUrl) {
|
|
39
|
+
const normalized = normalizeText(baseUrl).replace(/\/+$/, '');
|
|
40
|
+
for (const [id, variants] of Object.entries(PROVIDER_CONNECTIONS)) {
|
|
41
|
+
for (const connection of Object.values(variants)) {
|
|
42
|
+
if (normalized === connection.baseUrl) return { id, connection: { ...connection } };
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
return null;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
function getPresetConnection(id, protocol) {
|
|
49
|
+
const variants = Object.prototype.hasOwnProperty.call(PROVIDER_CONNECTIONS, id)
|
|
50
|
+
? PROVIDER_CONNECTIONS[id] : null;
|
|
51
|
+
const connection = variants && Object.prototype.hasOwnProperty.call(variants, protocol)
|
|
52
|
+
? variants[protocol] : null;
|
|
53
|
+
return connection ? { ...connection } : null;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
function getProviderPresets() {
|
|
57
|
+
return PROVIDER_PRESETS.map(preset => ({ ...preset }));
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
function buildPresetDraft(id) {
|
|
61
|
+
const preset = PROVIDER_PRESETS.find(item => item.id === id) || PROVIDER_PRESETS[0];
|
|
62
|
+
const { id: _id, short: _short, ...connection } = preset;
|
|
63
|
+
return { ...buildEmptyDraft(), ...connection,
|
|
64
|
+
name: preset.id === 'custom' ? 'Custom provider' : preset.name };
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
function updateDraftModel(draft, originalId, patch) {
|
|
68
|
+
const models = Array.isArray(draft.models) ? draft.models : [];
|
|
69
|
+
const existing = models.find(model => model.id === originalId);
|
|
70
|
+
const fail = (message, field) => { throw Object.assign(new Error(message), { field }); };
|
|
71
|
+
const id = normalizeText(patch.id);
|
|
72
|
+
if (!id || id.length > 200 || /[\0\r\n"&|<>^%!\x60]/.test(id))
|
|
73
|
+
fail('Enter a valid model ID (up to 200 characters).', 'id');
|
|
74
|
+
if (models.some(model => model.id === id && model.id !== originalId))
|
|
75
|
+
fail('This model ID is already configured.', 'id');
|
|
76
|
+
if (!existing && models.length >= 32) fail('A provider can contain up to 32 models.', 'id');
|
|
77
|
+
const contextWindow = Number(patch.contextWindow);
|
|
78
|
+
if (!Number.isSafeInteger(contextWindow) || contextWindow < 8192 || contextWindow > 4000000)
|
|
79
|
+
fail('Context window must be an integer between 8192 and 4000000.', 'contextWindow');
|
|
80
|
+
const maxOutputTokens = patch.maxOutputTokens === '' || patch.maxOutputTokens == null
|
|
81
|
+
? null : Number(patch.maxOutputTokens);
|
|
82
|
+
if (maxOutputTokens !== null && (!Number.isSafeInteger(maxOutputTokens)
|
|
83
|
+
|| maxOutputTokens < 256 || maxOutputTokens > 65536 || maxOutputTokens >= contextWindow))
|
|
84
|
+
fail('Output limit must be between 256 and 65536 and smaller than the context window.', 'maxOutputTokens');
|
|
85
|
+
const model = { ...existing, id, label: normalizeText(patch.label).slice(0, 200) || id,
|
|
86
|
+
contextWindow, maxOutputTokens,
|
|
87
|
+
inputModalities: normalizeInputModalities(patch.inputModalities),
|
|
88
|
+
supportsParallelToolCalls: patch.supportsParallelToolCalls === true,
|
|
89
|
+
upstreamResponseMode: normalizeUpstreamResponseMode(patch.upstreamResponseMode, true),
|
|
90
|
+
reasoningEfforts: MODEL_EFFORTS.filter(effort => patch.reasoningEfforts?.includes(effort)),
|
|
91
|
+
reasoningAdapter: patch.reasoningAdapter ? normalizeReasoningAdapter(patch.reasoningAdapter) : '',
|
|
92
|
+
reasoningCapability: patch.reasoningCapability ? normalizeReasoningCapability(patch.reasoningCapability)
|
|
93
|
+
: patch.reasoningEfforts?.length ? 'effort' : '',
|
|
94
|
+
baseInstructions: normalizeText(patch.baseInstructions).slice(0, 8000)
|
|
95
|
+
};
|
|
96
|
+
model.resolvedUpstreamResponseMode = model.upstreamResponseMode === existing?.upstreamResponseMode
|
|
97
|
+
? existing.resolvedUpstreamResponseMode || '' : '';
|
|
98
|
+
return { ...draft,
|
|
99
|
+
models: existing ? models.map(item => item.id === originalId ? model : item) : [...models, model],
|
|
100
|
+
defaultModelId: !draft.defaultModelId || draft.defaultModelId === originalId ? id : draft.defaultModelId
|
|
101
|
+
};
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
function removeDraftModel(draft, id) {
|
|
105
|
+
const models = (draft.models || []).filter(model => model.id !== id);
|
|
106
|
+
return { ...draft, models, defaultModelId: draft.defaultModelId === id
|
|
107
|
+
? models[0]?.id || '' : draft.defaultModelId };
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
|
|
12
111
|
function normalizeCatalog(value = {}) {
|
|
13
112
|
const providers = Array.isArray(value.providers)
|
|
14
113
|
? value.providers.map(normalizeProvider).filter(Boolean)
|
|
@@ -68,7 +167,8 @@
|
|
|
68
167
|
anthropicThinkingMode: normalizeAnthropicThinkingMode(value.anthropicThinkingMode),
|
|
69
168
|
anthropicPromptCaching: value.anthropicPromptCaching === true,
|
|
70
169
|
impersonateClaudeCode: value.impersonateClaudeCode === true,
|
|
71
|
-
maxOutputTokens: normalizeMaxOutputTokens(value.maxOutputTokens),
|
|
170
|
+
maxOutputTokens: normalizeMaxOutputTokens(value.maxOutputTokens, value.outputBudgetVersion !== 1),
|
|
171
|
+
outputBudgetVersion: 1,
|
|
72
172
|
hasSecret: value.hasSecret === true,
|
|
73
173
|
secretUpdatedAt: normalizeInteger(value.secretUpdatedAt),
|
|
74
174
|
endpointDisclosureHost: normalizeText(value.endpointDisclosureHost),
|
|
@@ -110,6 +210,9 @@
|
|
|
110
210
|
upstreamResponseMode: normalizeUpstreamResponseMode(value?.upstreamResponseMode, true),
|
|
111
211
|
resolvedUpstreamResponseMode: normalizeUpstreamResponseMode(value?.resolvedUpstreamResponseMode, false),
|
|
112
212
|
contextWindow: normalizeInteger(value?.contextWindow) || 262144,
|
|
213
|
+
maxOutputTokens: value?.maxOutputTokens == null ? null : Math.min(65536, Math.max(256, normalizeInteger(value.maxOutputTokens))),
|
|
214
|
+
reasoningAdapter: value?.reasoningAdapter ? normalizeReasoningAdapter(value.reasoningAdapter) : '',
|
|
215
|
+
reasoningCapability: value?.reasoningCapability ? normalizeReasoningCapability(value.reasoningCapability) : '',
|
|
113
216
|
supportsParallelToolCalls: value?.supportsParallelToolCalls === true,
|
|
114
217
|
inputModalities: normalizeInputModalities(value?.inputModalities),
|
|
115
218
|
baseInstructions: normalizeText(value?.baseInstructions)
|
|
@@ -160,6 +263,7 @@
|
|
|
160
263
|
anthropicPromptCaching: false,
|
|
161
264
|
impersonateClaudeCode: false,
|
|
162
265
|
maxOutputTokens: 65536,
|
|
266
|
+
outputBudgetVersion: 1,
|
|
163
267
|
hasSecret: false,
|
|
164
268
|
secretUpdatedAt: 0,
|
|
165
269
|
endpointDisclosureHost: '',
|
|
@@ -278,14 +382,21 @@
|
|
|
278
382
|
return Number.isFinite(number) && number >= 0 ? Math.floor(number) : 0;
|
|
279
383
|
}
|
|
280
384
|
|
|
281
|
-
function normalizeMaxOutputTokens(value) {
|
|
385
|
+
function normalizeMaxOutputTokens(value, legacy = false) {
|
|
282
386
|
const number = normalizeInteger(value);
|
|
283
|
-
if (!number || number === 8192 || number === 32768) return 65536;
|
|
387
|
+
if (!number || (legacy && (number === 8192 || number === 32768))) return 65536;
|
|
284
388
|
return Math.min(65536, Math.max(256, number));
|
|
285
389
|
}
|
|
286
390
|
|
|
287
391
|
return {
|
|
288
392
|
BUILTIN_PROVIDER_ID,
|
|
393
|
+
MODEL_EFFORTS,
|
|
394
|
+
getProviderPresets,
|
|
395
|
+
getPresetConnectionInfo,
|
|
396
|
+
getPresetConnection,
|
|
397
|
+
buildPresetDraft,
|
|
398
|
+
updateDraftModel,
|
|
399
|
+
removeDraftModel,
|
|
289
400
|
buildBuiltinProvider,
|
|
290
401
|
buildEmptyDraft,
|
|
291
402
|
buildRunSelection,
|