codex-overleaf-link 2.4.0 → 2.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (327) hide show
  1. package/README.md +272 -311
  2. package/README.zh-CN.md +287 -326
  3. package/extension/bootstrap/background.js +47 -10
  4. package/extension/bootstrap/manifest.template.json +9 -4
  5. package/extension/bootstrap/popup.html +10 -16
  6. package/extension/bootstrap/update.js +25 -2
  7. package/extension/runtime-manifest.json +3 -1
  8. package/extension/src/background.js +28 -3
  9. package/extension/src/backgroundSharedSessions.js +380 -0
  10. package/extension/src/backgroundUpdateCoordinator.js +442 -379
  11. package/extension/src/content/activeTurnControl.js +8 -0
  12. package/extension/src/content/assetTransferBroker.js +186 -12
  13. package/extension/src/content/changeHistoryView.js +175 -0
  14. package/extension/src/content/composerAttachments.js +24 -22
  15. package/extension/src/content/composerPanel.js +23 -8
  16. package/extension/src/content/contentRuntime.js +572 -571
  17. package/extension/src/content/diagnosticsController.js +1 -2
  18. package/extension/src/content/diagnosticsExport.js +222 -0
  19. package/extension/src/content/diagnosticsPanel.js +48 -19
  20. package/extension/src/content/diffReviewPanel.js +8 -5
  21. package/extension/src/content/generated/content.bundle.js +8974 -1781
  22. package/extension/src/content/generated/content.bundle.meta.json +22 -3
  23. package/extension/src/content/legacyGlobalRegistry.js +19 -1
  24. package/extension/src/content/localSkillsPanel.js +42 -7
  25. package/extension/src/content/markdownDomRenderer.js +9 -4
  26. package/extension/src/content/modelPicker.js +1 -1
  27. package/extension/src/content/pageBridgeClient.js +18 -3
  28. package/extension/src/content/panelMaintenance.js +51 -120
  29. package/extension/src/content/panelRenderer.js +4 -0
  30. package/extension/src/content/pendingInputView.js +109 -76
  31. package/extension/src/content/providerSettingsCoordinator.js +17 -6
  32. package/extension/src/content/providerSettingsDialog.js +661 -108
  33. package/extension/src/content/recentProjects.js +364 -356
  34. package/extension/src/content/runActivitySummary.js +631 -0
  35. package/extension/src/content/runController.js +3 -1
  36. package/extension/src/content/runFailureNotice.js +14 -1
  37. package/extension/src/content/runGuidanceController.js +4 -3
  38. package/extension/src/content/runPresence.js +306 -0
  39. package/extension/src/content/runQueueScheduler.js +2 -1
  40. package/extension/src/content/runResultActions.js +123 -3
  41. package/extension/src/content/runTimelineView.js +194 -164
  42. package/extension/src/content/scopedPersistenceCoordinator.js +2 -1
  43. package/extension/src/content/scopedPersistencePanelState.js +45 -2
  44. package/extension/src/content/selectionContextView.js +300 -0
  45. package/extension/src/content/sessionPersistence.js +10 -2
  46. package/extension/src/content/settingsPanel.js +93 -54
  47. package/extension/src/content/settingsWorkbench.js +374 -0
  48. package/extension/src/content/sharedSessionViewSync.js +72 -0
  49. package/extension/src/content/subagentActivityView.js +195 -0
  50. package/extension/src/content/trackedChangeCaptureController.js +7 -3
  51. package/extension/src/content/updateNotice.js +121 -50
  52. package/extension/src/content/writebackController.js +257 -0
  53. package/extension/src/content/writebackOrchestrator.js +146 -141
  54. package/extension/src/content/writebackPlan.js +231 -0
  55. package/extension/src/content/writebackRecovery.js +122 -0
  56. package/extension/src/content/writingStyleSettings.js +576 -0
  57. package/extension/src/content/writtenChangesView.js +152 -0
  58. package/extension/src/page/binaryAssetUploader.js +97 -19
  59. package/extension/src/page/overleafProjectSnapshot.js +1 -0
  60. package/extension/src/page/referenceProjects.js +148 -0
  61. package/extension/src/page/saveState.js +58 -3
  62. package/extension/src/page/snapshotRouter.js +44 -13
  63. package/extension/src/page/textCoordinates.js +102 -0
  64. package/extension/src/page/textFileCreator.js +350 -59
  65. package/extension/src/page/trackedChangeCapture.js +42 -56
  66. package/extension/src/page/trackedChangeOwnership.js +198 -0
  67. package/extension/src/page/trackedChangeReplay.js +164 -0
  68. package/extension/src/page/trackedChangesLifecycle.js +139 -150
  69. package/extension/src/page/treeOperations.js +36 -29
  70. package/extension/src/page/writebackReceiptJournal.js +112 -0
  71. package/extension/src/page/writebackRouter.js +176 -136
  72. package/extension/src/pageBridge.js +59 -101
  73. package/extension/src/popup.js +203 -59
  74. package/extension/src/shared/agentTranscript.js +18 -4
  75. package/extension/src/shared/auditRecords.js +71 -0
  76. package/extension/src/shared/changeHistoryModel.js +94 -0
  77. package/extension/src/shared/compatibility.js +1 -1
  78. package/extension/src/shared/compileAdapter.js +42 -0
  79. package/extension/src/shared/failureReasons.js +20 -0
  80. package/extension/src/shared/globalPreferences.js +1 -1
  81. package/extension/src/shared/i18n.js +187 -65
  82. package/extension/src/shared/managedUpdateProjection.js +6 -3
  83. package/extension/src/shared/pageRpcContract.js +7 -1
  84. package/extension/src/shared/providerProfiles.js +109 -0
  85. package/extension/src/shared/runActivityModel.js +361 -0
  86. package/extension/src/shared/runExecutionSnapshot.js +8 -2
  87. package/extension/src/shared/runExecutionSnapshotCodec.js +16 -4
  88. package/extension/src/shared/scopedPersistenceBrowserAdapter.js +6 -3
  89. package/extension/src/shared/selectionContext.js +28 -0
  90. package/extension/src/shared/sessionState.js +97 -6
  91. package/extension/src/shared/sharedSessionBridge.js +288 -0
  92. package/extension/src/shared/storageDb.js +23 -55
  93. package/extension/src/shared/storageMigration.js +3 -0
  94. package/extension/src/shared/storageRunActions.js +54 -4
  95. package/extension/src/shared/storageValuePruning.js +40 -0
  96. package/extension/src/shared/subagentActivityModel.js +174 -0
  97. package/extension/src/shared/undoOperations.js +87 -0
  98. package/extension/src/shared/updateConsent.js +37 -8
  99. package/extension/src/shared/writebackIntent.js +62 -0
  100. package/extension/src/shared/writebackSettlement.js +29 -10
  101. package/extension/src/shared/writingStyle.js +33 -0
  102. package/extension/styles/panel.css +2136 -744
  103. package/extension/styles/popup.css +110 -0
  104. package/native-host/src/anthropicBridgeRequest.js +2 -1
  105. package/native-host/src/codexModelRecovery.js +107 -0
  106. package/native-host/src/codexPromptAssembly.js +2 -0
  107. package/native-host/src/codexProviderLaunch.js +3 -3
  108. package/native-host/src/codexRuntimeIdentity.js +1 -0
  109. package/native-host/src/codexSessionRunner.js +146 -177
  110. package/native-host/src/codexSessionTiming.js +71 -0
  111. package/native-host/src/managedInstall.js +5 -4
  112. package/native-host/src/nativeEnvironment.js +70 -0
  113. package/native-host/src/nativeQuotas.js +15 -8
  114. package/native-host/src/overleafWorkspaceRules.js +16 -0
  115. package/native-host/src/processStopBarrier.js +80 -0
  116. package/native-host/src/providerModelCatalog.js +4 -3
  117. package/native-host/src/providerProfile.js +13 -1
  118. package/native-host/src/providerReasoning.js +9 -5
  119. package/native-host/src/providerStore.js +4 -0
  120. package/native-host/src/readProgressGuard.js +84 -17
  121. package/native-host/src/releaseTransport.js +14 -5
  122. package/native-host/src/selectionScope.js +58 -0
  123. package/native-host/src/skills/parallel-subagents/SKILL.md +31 -3
  124. package/native-host/src/skills/writing-style-builder/SKILL.md +146 -0
  125. package/native-host/src/subagentBroker.js +102 -98
  126. package/native-host/src/subagentTelemetry.js +316 -0
  127. package/native-host/src/subagentWorkspace.js +103 -0
  128. package/native-host/src/subagentWorkspacePath.js +31 -0
  129. package/native-host/src/taskRunnerRuntime.js +55 -5
  130. package/native-host/src/turnAttachments.js +113 -0
  131. package/native-host/src/updateManager.js +122 -12
  132. package/native-host/src/updateNetworkControl.js +75 -0
  133. package/native-host/src/updateTrust.js +21 -2
  134. package/native-host/src/vendor/pdfjs/LICENSE +177 -0
  135. package/native-host/src/vendor/pdfjs/SOURCE.txt +3 -0
  136. package/native-host/src/vendor/pdfjs/cmaps/78-EUC-H.bcmap +0 -0
  137. package/native-host/src/vendor/pdfjs/cmaps/78-EUC-V.bcmap +0 -0
  138. package/native-host/src/vendor/pdfjs/cmaps/78-H.bcmap +0 -0
  139. package/native-host/src/vendor/pdfjs/cmaps/78-RKSJ-H.bcmap +0 -0
  140. package/native-host/src/vendor/pdfjs/cmaps/78-RKSJ-V.bcmap +0 -0
  141. package/native-host/src/vendor/pdfjs/cmaps/78-V.bcmap +0 -0
  142. package/native-host/src/vendor/pdfjs/cmaps/78ms-RKSJ-H.bcmap +0 -0
  143. package/native-host/src/vendor/pdfjs/cmaps/78ms-RKSJ-V.bcmap +0 -0
  144. package/native-host/src/vendor/pdfjs/cmaps/83pv-RKSJ-H.bcmap +0 -0
  145. package/native-host/src/vendor/pdfjs/cmaps/90ms-RKSJ-H.bcmap +0 -0
  146. package/native-host/src/vendor/pdfjs/cmaps/90ms-RKSJ-V.bcmap +0 -0
  147. package/native-host/src/vendor/pdfjs/cmaps/90msp-RKSJ-H.bcmap +0 -0
  148. package/native-host/src/vendor/pdfjs/cmaps/90msp-RKSJ-V.bcmap +0 -0
  149. package/native-host/src/vendor/pdfjs/cmaps/90pv-RKSJ-H.bcmap +0 -0
  150. package/native-host/src/vendor/pdfjs/cmaps/90pv-RKSJ-V.bcmap +0 -0
  151. package/native-host/src/vendor/pdfjs/cmaps/Add-H.bcmap +0 -0
  152. package/native-host/src/vendor/pdfjs/cmaps/Add-RKSJ-H.bcmap +0 -0
  153. package/native-host/src/vendor/pdfjs/cmaps/Add-RKSJ-V.bcmap +0 -0
  154. package/native-host/src/vendor/pdfjs/cmaps/Add-V.bcmap +0 -0
  155. package/native-host/src/vendor/pdfjs/cmaps/Adobe-CNS1-0.bcmap +0 -0
  156. package/native-host/src/vendor/pdfjs/cmaps/Adobe-CNS1-1.bcmap +0 -0
  157. package/native-host/src/vendor/pdfjs/cmaps/Adobe-CNS1-2.bcmap +0 -0
  158. package/native-host/src/vendor/pdfjs/cmaps/Adobe-CNS1-3.bcmap +0 -0
  159. package/native-host/src/vendor/pdfjs/cmaps/Adobe-CNS1-4.bcmap +0 -0
  160. package/native-host/src/vendor/pdfjs/cmaps/Adobe-CNS1-5.bcmap +0 -0
  161. package/native-host/src/vendor/pdfjs/cmaps/Adobe-CNS1-6.bcmap +0 -0
  162. package/native-host/src/vendor/pdfjs/cmaps/Adobe-CNS1-UCS2.bcmap +0 -0
  163. package/native-host/src/vendor/pdfjs/cmaps/Adobe-GB1-0.bcmap +0 -0
  164. package/native-host/src/vendor/pdfjs/cmaps/Adobe-GB1-1.bcmap +0 -0
  165. package/native-host/src/vendor/pdfjs/cmaps/Adobe-GB1-2.bcmap +0 -0
  166. package/native-host/src/vendor/pdfjs/cmaps/Adobe-GB1-3.bcmap +0 -0
  167. package/native-host/src/vendor/pdfjs/cmaps/Adobe-GB1-4.bcmap +0 -0
  168. package/native-host/src/vendor/pdfjs/cmaps/Adobe-GB1-5.bcmap +0 -0
  169. package/native-host/src/vendor/pdfjs/cmaps/Adobe-GB1-UCS2.bcmap +0 -0
  170. package/native-host/src/vendor/pdfjs/cmaps/Adobe-Japan1-0.bcmap +0 -0
  171. package/native-host/src/vendor/pdfjs/cmaps/Adobe-Japan1-1.bcmap +0 -0
  172. package/native-host/src/vendor/pdfjs/cmaps/Adobe-Japan1-2.bcmap +0 -0
  173. package/native-host/src/vendor/pdfjs/cmaps/Adobe-Japan1-3.bcmap +0 -0
  174. package/native-host/src/vendor/pdfjs/cmaps/Adobe-Japan1-4.bcmap +0 -0
  175. package/native-host/src/vendor/pdfjs/cmaps/Adobe-Japan1-5.bcmap +0 -0
  176. package/native-host/src/vendor/pdfjs/cmaps/Adobe-Japan1-6.bcmap +0 -0
  177. package/native-host/src/vendor/pdfjs/cmaps/Adobe-Japan1-UCS2.bcmap +0 -0
  178. package/native-host/src/vendor/pdfjs/cmaps/Adobe-Korea1-0.bcmap +0 -0
  179. package/native-host/src/vendor/pdfjs/cmaps/Adobe-Korea1-1.bcmap +0 -0
  180. package/native-host/src/vendor/pdfjs/cmaps/Adobe-Korea1-2.bcmap +0 -0
  181. package/native-host/src/vendor/pdfjs/cmaps/Adobe-Korea1-UCS2.bcmap +0 -0
  182. package/native-host/src/vendor/pdfjs/cmaps/B5-H.bcmap +0 -0
  183. package/native-host/src/vendor/pdfjs/cmaps/B5-V.bcmap +0 -0
  184. package/native-host/src/vendor/pdfjs/cmaps/B5pc-H.bcmap +0 -0
  185. package/native-host/src/vendor/pdfjs/cmaps/B5pc-V.bcmap +0 -0
  186. package/native-host/src/vendor/pdfjs/cmaps/CNS-EUC-H.bcmap +0 -0
  187. package/native-host/src/vendor/pdfjs/cmaps/CNS-EUC-V.bcmap +0 -0
  188. package/native-host/src/vendor/pdfjs/cmaps/CNS1-H.bcmap +0 -0
  189. package/native-host/src/vendor/pdfjs/cmaps/CNS1-V.bcmap +0 -0
  190. package/native-host/src/vendor/pdfjs/cmaps/CNS2-H.bcmap +0 -0
  191. package/native-host/src/vendor/pdfjs/cmaps/CNS2-V.bcmap +3 -0
  192. package/native-host/src/vendor/pdfjs/cmaps/ETHK-B5-H.bcmap +0 -0
  193. package/native-host/src/vendor/pdfjs/cmaps/ETHK-B5-V.bcmap +0 -0
  194. package/native-host/src/vendor/pdfjs/cmaps/ETen-B5-H.bcmap +0 -0
  195. package/native-host/src/vendor/pdfjs/cmaps/ETen-B5-V.bcmap +0 -0
  196. package/native-host/src/vendor/pdfjs/cmaps/ETenms-B5-H.bcmap +3 -0
  197. package/native-host/src/vendor/pdfjs/cmaps/ETenms-B5-V.bcmap +0 -0
  198. package/native-host/src/vendor/pdfjs/cmaps/EUC-H.bcmap +0 -0
  199. package/native-host/src/vendor/pdfjs/cmaps/EUC-V.bcmap +0 -0
  200. package/native-host/src/vendor/pdfjs/cmaps/Ext-H.bcmap +0 -0
  201. package/native-host/src/vendor/pdfjs/cmaps/Ext-RKSJ-H.bcmap +0 -0
  202. package/native-host/src/vendor/pdfjs/cmaps/Ext-RKSJ-V.bcmap +0 -0
  203. package/native-host/src/vendor/pdfjs/cmaps/Ext-V.bcmap +0 -0
  204. package/native-host/src/vendor/pdfjs/cmaps/GB-EUC-H.bcmap +0 -0
  205. package/native-host/src/vendor/pdfjs/cmaps/GB-EUC-V.bcmap +0 -0
  206. package/native-host/src/vendor/pdfjs/cmaps/GB-H.bcmap +4 -0
  207. package/native-host/src/vendor/pdfjs/cmaps/GB-V.bcmap +0 -0
  208. package/native-host/src/vendor/pdfjs/cmaps/GBK-EUC-H.bcmap +0 -0
  209. package/native-host/src/vendor/pdfjs/cmaps/GBK-EUC-V.bcmap +0 -0
  210. package/native-host/src/vendor/pdfjs/cmaps/GBK2K-H.bcmap +0 -0
  211. package/native-host/src/vendor/pdfjs/cmaps/GBK2K-V.bcmap +0 -0
  212. package/native-host/src/vendor/pdfjs/cmaps/GBKp-EUC-H.bcmap +0 -0
  213. package/native-host/src/vendor/pdfjs/cmaps/GBKp-EUC-V.bcmap +0 -0
  214. package/native-host/src/vendor/pdfjs/cmaps/GBT-EUC-H.bcmap +0 -0
  215. package/native-host/src/vendor/pdfjs/cmaps/GBT-EUC-V.bcmap +0 -0
  216. package/native-host/src/vendor/pdfjs/cmaps/GBT-H.bcmap +0 -0
  217. package/native-host/src/vendor/pdfjs/cmaps/GBT-V.bcmap +0 -0
  218. package/native-host/src/vendor/pdfjs/cmaps/GBTpc-EUC-H.bcmap +0 -0
  219. package/native-host/src/vendor/pdfjs/cmaps/GBTpc-EUC-V.bcmap +0 -0
  220. package/native-host/src/vendor/pdfjs/cmaps/GBpc-EUC-H.bcmap +0 -0
  221. package/native-host/src/vendor/pdfjs/cmaps/GBpc-EUC-V.bcmap +0 -0
  222. package/native-host/src/vendor/pdfjs/cmaps/H.bcmap +0 -0
  223. package/native-host/src/vendor/pdfjs/cmaps/HKdla-B5-H.bcmap +0 -0
  224. package/native-host/src/vendor/pdfjs/cmaps/HKdla-B5-V.bcmap +0 -0
  225. package/native-host/src/vendor/pdfjs/cmaps/HKdlb-B5-H.bcmap +0 -0
  226. package/native-host/src/vendor/pdfjs/cmaps/HKdlb-B5-V.bcmap +0 -0
  227. package/native-host/src/vendor/pdfjs/cmaps/HKgccs-B5-H.bcmap +0 -0
  228. package/native-host/src/vendor/pdfjs/cmaps/HKgccs-B5-V.bcmap +0 -0
  229. package/native-host/src/vendor/pdfjs/cmaps/HKm314-B5-H.bcmap +0 -0
  230. package/native-host/src/vendor/pdfjs/cmaps/HKm314-B5-V.bcmap +0 -0
  231. package/native-host/src/vendor/pdfjs/cmaps/HKm471-B5-H.bcmap +0 -0
  232. package/native-host/src/vendor/pdfjs/cmaps/HKm471-B5-V.bcmap +0 -0
  233. package/native-host/src/vendor/pdfjs/cmaps/HKscs-B5-H.bcmap +0 -0
  234. package/native-host/src/vendor/pdfjs/cmaps/HKscs-B5-V.bcmap +0 -0
  235. package/native-host/src/vendor/pdfjs/cmaps/Hankaku.bcmap +0 -0
  236. package/native-host/src/vendor/pdfjs/cmaps/Hiragana.bcmap +0 -0
  237. package/native-host/src/vendor/pdfjs/cmaps/KSC-EUC-H.bcmap +0 -0
  238. package/native-host/src/vendor/pdfjs/cmaps/KSC-EUC-V.bcmap +0 -0
  239. package/native-host/src/vendor/pdfjs/cmaps/KSC-H.bcmap +0 -0
  240. package/native-host/src/vendor/pdfjs/cmaps/KSC-Johab-H.bcmap +0 -0
  241. package/native-host/src/vendor/pdfjs/cmaps/KSC-Johab-V.bcmap +0 -0
  242. package/native-host/src/vendor/pdfjs/cmaps/KSC-V.bcmap +0 -0
  243. package/native-host/src/vendor/pdfjs/cmaps/KSCms-UHC-H.bcmap +0 -0
  244. package/native-host/src/vendor/pdfjs/cmaps/KSCms-UHC-HW-H.bcmap +0 -0
  245. package/native-host/src/vendor/pdfjs/cmaps/KSCms-UHC-HW-V.bcmap +0 -0
  246. package/native-host/src/vendor/pdfjs/cmaps/KSCms-UHC-V.bcmap +0 -0
  247. package/native-host/src/vendor/pdfjs/cmaps/KSCpc-EUC-H.bcmap +0 -0
  248. package/native-host/src/vendor/pdfjs/cmaps/KSCpc-EUC-V.bcmap +0 -0
  249. package/native-host/src/vendor/pdfjs/cmaps/Katakana.bcmap +0 -0
  250. package/native-host/src/vendor/pdfjs/cmaps/LICENSE +36 -0
  251. package/native-host/src/vendor/pdfjs/cmaps/NWP-H.bcmap +0 -0
  252. package/native-host/src/vendor/pdfjs/cmaps/NWP-V.bcmap +0 -0
  253. package/native-host/src/vendor/pdfjs/cmaps/RKSJ-H.bcmap +0 -0
  254. package/native-host/src/vendor/pdfjs/cmaps/RKSJ-V.bcmap +0 -0
  255. package/native-host/src/vendor/pdfjs/cmaps/Roman.bcmap +0 -0
  256. package/native-host/src/vendor/pdfjs/cmaps/UniCNS-UCS2-H.bcmap +0 -0
  257. package/native-host/src/vendor/pdfjs/cmaps/UniCNS-UCS2-V.bcmap +0 -0
  258. package/native-host/src/vendor/pdfjs/cmaps/UniCNS-UTF16-H.bcmap +0 -0
  259. package/native-host/src/vendor/pdfjs/cmaps/UniCNS-UTF16-V.bcmap +0 -0
  260. package/native-host/src/vendor/pdfjs/cmaps/UniCNS-UTF32-H.bcmap +0 -0
  261. package/native-host/src/vendor/pdfjs/cmaps/UniCNS-UTF32-V.bcmap +0 -0
  262. package/native-host/src/vendor/pdfjs/cmaps/UniCNS-UTF8-H.bcmap +0 -0
  263. package/native-host/src/vendor/pdfjs/cmaps/UniCNS-UTF8-V.bcmap +0 -0
  264. package/native-host/src/vendor/pdfjs/cmaps/UniGB-UCS2-H.bcmap +0 -0
  265. package/native-host/src/vendor/pdfjs/cmaps/UniGB-UCS2-V.bcmap +0 -0
  266. package/native-host/src/vendor/pdfjs/cmaps/UniGB-UTF16-H.bcmap +0 -0
  267. package/native-host/src/vendor/pdfjs/cmaps/UniGB-UTF16-V.bcmap +0 -0
  268. package/native-host/src/vendor/pdfjs/cmaps/UniGB-UTF32-H.bcmap +0 -0
  269. package/native-host/src/vendor/pdfjs/cmaps/UniGB-UTF32-V.bcmap +0 -0
  270. package/native-host/src/vendor/pdfjs/cmaps/UniGB-UTF8-H.bcmap +0 -0
  271. package/native-host/src/vendor/pdfjs/cmaps/UniGB-UTF8-V.bcmap +0 -0
  272. package/native-host/src/vendor/pdfjs/cmaps/UniJIS-UCS2-H.bcmap +0 -0
  273. package/native-host/src/vendor/pdfjs/cmaps/UniJIS-UCS2-HW-H.bcmap +0 -0
  274. package/native-host/src/vendor/pdfjs/cmaps/UniJIS-UCS2-HW-V.bcmap +0 -0
  275. package/native-host/src/vendor/pdfjs/cmaps/UniJIS-UCS2-V.bcmap +0 -0
  276. package/native-host/src/vendor/pdfjs/cmaps/UniJIS-UTF16-H.bcmap +0 -0
  277. package/native-host/src/vendor/pdfjs/cmaps/UniJIS-UTF16-V.bcmap +0 -0
  278. package/native-host/src/vendor/pdfjs/cmaps/UniJIS-UTF32-H.bcmap +0 -0
  279. package/native-host/src/vendor/pdfjs/cmaps/UniJIS-UTF32-V.bcmap +0 -0
  280. package/native-host/src/vendor/pdfjs/cmaps/UniJIS-UTF8-H.bcmap +0 -0
  281. package/native-host/src/vendor/pdfjs/cmaps/UniJIS-UTF8-V.bcmap +0 -0
  282. package/native-host/src/vendor/pdfjs/cmaps/UniJIS2004-UTF16-H.bcmap +0 -0
  283. package/native-host/src/vendor/pdfjs/cmaps/UniJIS2004-UTF16-V.bcmap +0 -0
  284. package/native-host/src/vendor/pdfjs/cmaps/UniJIS2004-UTF32-H.bcmap +0 -0
  285. package/native-host/src/vendor/pdfjs/cmaps/UniJIS2004-UTF32-V.bcmap +0 -0
  286. package/native-host/src/vendor/pdfjs/cmaps/UniJIS2004-UTF8-H.bcmap +0 -0
  287. package/native-host/src/vendor/pdfjs/cmaps/UniJIS2004-UTF8-V.bcmap +0 -0
  288. package/native-host/src/vendor/pdfjs/cmaps/UniJISPro-UCS2-HW-V.bcmap +0 -0
  289. package/native-host/src/vendor/pdfjs/cmaps/UniJISPro-UCS2-V.bcmap +0 -0
  290. package/native-host/src/vendor/pdfjs/cmaps/UniJISPro-UTF8-V.bcmap +0 -0
  291. package/native-host/src/vendor/pdfjs/cmaps/UniJISX0213-UTF32-H.bcmap +0 -0
  292. package/native-host/src/vendor/pdfjs/cmaps/UniJISX0213-UTF32-V.bcmap +0 -0
  293. package/native-host/src/vendor/pdfjs/cmaps/UniJISX02132004-UTF32-H.bcmap +0 -0
  294. package/native-host/src/vendor/pdfjs/cmaps/UniJISX02132004-UTF32-V.bcmap +0 -0
  295. package/native-host/src/vendor/pdfjs/cmaps/UniKS-UCS2-H.bcmap +0 -0
  296. package/native-host/src/vendor/pdfjs/cmaps/UniKS-UCS2-V.bcmap +0 -0
  297. package/native-host/src/vendor/pdfjs/cmaps/UniKS-UTF16-H.bcmap +0 -0
  298. package/native-host/src/vendor/pdfjs/cmaps/UniKS-UTF16-V.bcmap +0 -0
  299. package/native-host/src/vendor/pdfjs/cmaps/UniKS-UTF32-H.bcmap +0 -0
  300. package/native-host/src/vendor/pdfjs/cmaps/UniKS-UTF32-V.bcmap +0 -0
  301. package/native-host/src/vendor/pdfjs/cmaps/UniKS-UTF8-H.bcmap +0 -0
  302. package/native-host/src/vendor/pdfjs/cmaps/UniKS-UTF8-V.bcmap +0 -0
  303. package/native-host/src/vendor/pdfjs/cmaps/V.bcmap +0 -0
  304. package/native-host/src/vendor/pdfjs/cmaps/WP-Symbol.bcmap +0 -0
  305. package/native-host/src/vendor/pdfjs/pdf.mjs +26740 -0
  306. package/native-host/src/vendor/pdfjs/pdf.worker.mjs +62201 -0
  307. package/native-host/src/vendor/pdfjs/standard_fonts/FoxitDingbats.pfb +0 -0
  308. package/native-host/src/vendor/pdfjs/standard_fonts/FoxitFixed.pfb +0 -0
  309. package/native-host/src/vendor/pdfjs/standard_fonts/FoxitFixedBold.pfb +0 -0
  310. package/native-host/src/vendor/pdfjs/standard_fonts/FoxitFixedBoldItalic.pfb +0 -0
  311. package/native-host/src/vendor/pdfjs/standard_fonts/FoxitFixedItalic.pfb +0 -0
  312. package/native-host/src/vendor/pdfjs/standard_fonts/FoxitSerif.pfb +0 -0
  313. package/native-host/src/vendor/pdfjs/standard_fonts/FoxitSerifBold.pfb +0 -0
  314. package/native-host/src/vendor/pdfjs/standard_fonts/FoxitSerifBoldItalic.pfb +0 -0
  315. package/native-host/src/vendor/pdfjs/standard_fonts/FoxitSerifItalic.pfb +0 -0
  316. package/native-host/src/vendor/pdfjs/standard_fonts/FoxitSymbol.pfb +0 -0
  317. package/native-host/src/vendor/pdfjs/standard_fonts/LICENSE_FOXIT +27 -0
  318. package/native-host/src/vendor/pdfjs/standard_fonts/LICENSE_LIBERATION +102 -0
  319. package/native-host/src/vendor/pdfjs/standard_fonts/LiberationSans-Bold.ttf +0 -0
  320. package/native-host/src/vendor/pdfjs/standard_fonts/LiberationSans-BoldItalic.ttf +0 -0
  321. package/native-host/src/vendor/pdfjs/standard_fonts/LiberationSans-Italic.ttf +0 -0
  322. package/native-host/src/vendor/pdfjs/standard_fonts/LiberationSans-Regular.ttf +0 -0
  323. package/native-host/src/writingStyleEvidence.js +102 -0
  324. package/native-host/src/writingStylePdfWorker.js +35 -0
  325. package/native-host/src/writingStyleProfile.js +165 -0
  326. package/native-host/src/writingStyleRuntime.js +447 -0
  327. package/package.json +1 -1
@@ -0,0 +1,231 @@
1
+ (function (root, factory) {
2
+ if (typeof module === 'object' && module.exports) module.exports = factory();
3
+ else root.CodexOverleafModuleRegistry.define('WritebackPlan', [], factory);
4
+ })(typeof globalThis !== 'undefined' ? globalThis : window, function () {
5
+ 'use strict';
6
+
7
+ // Input validation, user approval, and audit projection precede page mutation.
8
+ function create(deps = {}) {
9
+ const { tx, tr, normalizeSafeProjectPath, GovernanceRules, getGovernanceRulesForCurrentProject,
10
+ showPluginConfirm, formatOperationFiles, getAppliedEntries, getSkippedEntries } = deps;
11
+
12
+ function partitionUnsafeProjectPathOperations(operations = []) {
13
+ const safe = [];
14
+ const skipped = [];
15
+ for (const operation of operations || []) {
16
+ const normalized = normalizeOperationProjectPaths(operation);
17
+ const invalid = getInvalidOperationProjectPath(normalized);
18
+ if (invalid) {
19
+ skipped.push({
20
+ operation: normalized,
21
+ result: {
22
+ ok: false,
23
+ code: 'invalid_project_path',
24
+ reason: tx(`Invalid ${invalid}. Codex did not write this file.`, `路径无效:${invalid}。Codex 没有写入这个文件。`)
25
+ }
26
+ });
27
+ continue;
28
+ }
29
+ safe.push(normalized);
30
+ }
31
+ return { safe, skipped };
32
+ }
33
+
34
+ function normalizeOperationProjectPaths(operation = {}) {
35
+ if (!operation || typeof operation !== 'object') {
36
+ return operation;
37
+ }
38
+ const normalized = { ...operation };
39
+ if (typeof operation.path === 'string') {
40
+ normalized.path = normalizeSafeProjectPath(operation.path);
41
+ if (!normalized.path) {
42
+ normalized.invalidProjectPath = true;
43
+ }
44
+ }
45
+ if (typeof operation.to === 'string') {
46
+ normalized.to = normalizeSafeProjectPath(operation.to);
47
+ if (!normalized.to) {
48
+ normalized.invalidProjectDestinationPath = true;
49
+ }
50
+ }
51
+ if (typeof operation.destinationPath === 'string') {
52
+ normalized.destinationPath = normalizeSafeProjectPath(operation.destinationPath);
53
+ if (!normalized.destinationPath) {
54
+ normalized.invalidProjectDestinationPath = true;
55
+ }
56
+ }
57
+ return normalized;
58
+ }
59
+
60
+ function getInvalidOperationProjectPath(operation = {}) {
61
+ if (operation.invalidProjectPath || (requiresOperationPath(operation) && !operation.path)) {
62
+ return 'operation path';
63
+ }
64
+ if (operation.invalidProjectDestinationPath || (requiresOperationDestinationPath(operation) && !(operation.to || operation.destinationPath))) {
65
+ return 'operation destination path';
66
+ }
67
+ return '';
68
+ }
69
+
70
+ function requiresOperationPath(operation = {}) {
71
+ return ['edit', 'create', 'delete', 'rename', 'move', 'binary-create', 'overwrite-binary'].includes(operation.type);
72
+ }
73
+
74
+ function requiresOperationDestinationPath(operation = {}) {
75
+ return operation.type === 'rename' || operation.type === 'move';
76
+ }
77
+
78
+
79
+ function evaluateGovernedOperations(operations = []) {
80
+ if (!GovernanceRules?.evaluateGovernedOperations) {
81
+ return { allowed: operations || [], blocked: [], rules: getGovernanceRulesForCurrentProject() };
82
+ }
83
+ return GovernanceRules.evaluateGovernedOperations(operations, getGovernanceRulesForCurrentProject());
84
+ }
85
+
86
+ function buildGovernanceSkippedApplyResult(blockedItems = []) {
87
+ return {
88
+ ok: blockedItems.length === 0,
89
+ applied: [],
90
+ skipped: (blockedItems || []).map(item => ({
91
+ operation: item.operation,
92
+ result: {
93
+ ok: false,
94
+ code: 'governance_blocked',
95
+ reason: formatGovernanceBlockedReason(item),
96
+ reasonKey: item.reason || 'governance_blocked'
97
+ }
98
+ }))
99
+ };
100
+ }
101
+
102
+ function formatGovernanceBlockedReason(item = {}) {
103
+ if (item.reason === 'readonly') {
104
+ return tx(
105
+ 'Project governance marked this path read-only, so Codex did not write it.',
106
+ '项目治理规则将此路径标记为只读,因此 Codex 没有写入。'
107
+ );
108
+ }
109
+ if (item.reason === 'writable_allowlist') {
110
+ return tx(
111
+ 'Project governance allows writes only to configured writable patterns, and this path is outside that allowlist.',
112
+ '项目治理规则只允许写入配置的可写路径,此路径不在允许范围内。'
113
+ );
114
+ }
115
+ return tx('Project governance blocked this write.', '项目治理规则阻止了此写入。');
116
+ }
117
+
118
+ function filterSyncChangesByOperations(syncChanges = [], operations = []) {
119
+ const allowedPaths = new Set((operations || []).map(operation => operation.path).filter(Boolean));
120
+ return (syncChanges || []).filter(change => allowedPaths.has(change?.path));
121
+ }
122
+
123
+ function mergeApplyResultSkipped(result = {}, skipped = []) {
124
+ if (!skipped.length) {
125
+ return result;
126
+ }
127
+ return {
128
+ ...(result || {}),
129
+ ok: false,
130
+ applied: Array.isArray(result?.applied) ? result.applied : [],
131
+ skipped: [
132
+ ...getSkippedEntries(result),
133
+ ...skipped
134
+ ]
135
+ };
136
+ }
137
+
138
+ async function confirmBinaryOperations(operations = []) {
139
+ const binaryOperations = (operations || []).filter(operation => operation.type === 'binary-create' || operation.type === 'overwrite-binary');
140
+ if (!binaryOperations.length) {
141
+ return { operations, skipped: [] };
142
+ }
143
+ const approved = await showPluginConfirm({
144
+ title: tr('binaryAssetConfirmTitle'),
145
+ message: tr('binaryAssetConfirmMessage', { files: formatOperationFiles(binaryOperations) }),
146
+ confirmLabel: tr('binaryAssetConfirm'),
147
+ cancelLabel: tr('binaryAssetCancel'),
148
+ destructive: true
149
+ });
150
+ if (approved) {
151
+ return { operations, skipped: [] };
152
+ }
153
+ return {
154
+ operations: operations.filter(operation => operation.type !== 'binary-create' && operation.type !== 'overwrite-binary'),
155
+ skipped: binaryOperations.map(operation => ({
156
+ operation,
157
+ result: {
158
+ ok: false,
159
+ code: 'binary_confirmation_rejected',
160
+ reason: tx('Binary asset writeback requires explicit confirmation and was skipped.', '二进制资源写回需要显式确认,已跳过。')
161
+ }
162
+ }))
163
+ };
164
+ }
165
+
166
+ function buildAuditDiffSummary(operations = []) {
167
+ const changedFiles = new Set();
168
+ let binaryFilesChanged = 0;
169
+ for (const operation of operations || []) {
170
+ if (operation?.path) {
171
+ changedFiles.add(operation.path);
172
+ }
173
+ if (operation?.type === 'binary-create' || operation?.type === 'overwrite-binary') {
174
+ binaryFilesChanged++;
175
+ }
176
+ }
177
+ return {
178
+ filesChanged: changedFiles.size,
179
+ additions: 0,
180
+ deletions: 0,
181
+ binaryFilesChanged
182
+ };
183
+ }
184
+
185
+ function buildAuditSummaryFromApply({ operations = [], applyResults = [], blockedFiles = [], resultStatus = 'completed', saveVerification = null } = {}) {
186
+ const appliedFiles = [];
187
+ const skippedFiles = [];
188
+ for (const result of applyResults || []) {
189
+ for (const item of getAppliedEntries(result)) {
190
+ appliedFiles.push(summarizeOperationForAudit(item.operation, item.result, 'applied'));
191
+ }
192
+ for (const item of getSkippedEntries(result)) {
193
+ skippedFiles.push(summarizeOperationForAudit(item.operation, item.result, 'skipped'));
194
+ }
195
+ }
196
+ return {
197
+ changedFiles: (operations || []).map(operation => summarizeOperationForAudit(operation, {}, 'changed')),
198
+ ['diffSummary']: buildAuditDiffSummary(operations),
199
+ blockedFiles,
200
+ appliedFiles,
201
+ skippedFiles,
202
+ resultStatus,
203
+ saveVerification
204
+ };
205
+ }
206
+
207
+ // Tolerates `operation` and `result` being null in addition to undefined.
208
+ // Default-parameter values fire only for `undefined`, but the v1.3.8
209
+ // write-guard (pageBridge.runWriteGuard / writebackRouter.checkWritebackRunProjectId)
210
+ // emits batch-level skips with `operation: null` — there is no specific
211
+ // op to attribute the block to. Without this normalization the audit pass
212
+ // crashed with "Cannot read properties of null (reading 'path')", the
213
+ // outer-catch swallowed the partial-sync conclusion, and the user saw the
214
+ // misleading "local Codex returned no usable result" fallback.
215
+ function summarizeOperationForAudit(operation, result, status = '') {
216
+ const op = operation || {};
217
+ const res = result || {};
218
+ return {
219
+ path: op.path || op.from || op.to || '',
220
+ destinationPath: op.destinationPath || op.to || '',
221
+ type: op.type || '',
222
+ reason: res.reasonKey || res.code || res.reason || op.reasonKey || op.reason || '',
223
+ status,
224
+ size: op.size
225
+ };
226
+ }
227
+
228
+ return { partitionUnsafeProjectPathOperations, normalizeOperationProjectPaths, getInvalidOperationProjectPath, evaluateGovernedOperations, buildGovernanceSkippedApplyResult, filterSyncChangesByOperations, mergeApplyResultSkipped, confirmBinaryOperations, buildAuditSummaryFromApply, summarizeOperationForAudit };
229
+ }
230
+ return { create };
231
+ });
@@ -0,0 +1,122 @@
1
+ (function (root, factory) {
2
+ root.CodexOverleafModuleRegistry.define('WritebackRecovery', ['WritebackIntent', 'UndoOperations'], factory);
3
+ })(typeof globalThis !== 'undefined' ? globalThis : window, function (Intent, Undo) {
4
+ 'use strict';
5
+ function create(deps) {
6
+ let recovery = null;
7
+ const owner = () => ({ projectId: deps.getProjectId(), accountScopeId: deps.getAccountScopeId() });
8
+ const current = scope => scope.projectId === deps.getProjectId() && scope.accountScopeId === deps.getAccountScopeId();
9
+ const runs = () => (deps.getState()?.sessions || []).flatMap(session => (session.runs || []).map(run => ({ session, run })));
10
+ async function prepare(input) {
11
+ const view = deps.getRun(), scope = owner();
12
+ const run = view && deps.findRun(view.recordId, view.sessionId);
13
+ if (!run || !scope.accountScopeId || input.runProjectId !== scope.projectId
14
+ || view.runProjectId !== scope.projectId) throw new Error('Writeback ownership changed before dispatch.');
15
+ const pending = Intent.normalize({
16
+ ...scope, id: crypto.randomUUID(), sessionId: view.sessionId, runId: run.id,
17
+ createdAt: new Date().toISOString(), operations: input.operations, baseFiles: input.baseFiles,
18
+ requireReviewing: input.requireReviewing
19
+ });
20
+ if (!pending) throw new Error('This change exceeds the recoverable writeback limit. Split it into smaller changes.');
21
+ for (const op of pending.operations) {
22
+ if (op.type === 'edit' && !pending.baseFiles.some(file => file.path === op.path)) {
23
+ throw new Error('The original content of ' + op.path + ' is unavailable. Refresh the project before writing.');
24
+ }
25
+ }
26
+ run.pendingWriteback = pending;
27
+ await deps.save();
28
+ if (!current(scope)) throw new Error('Project changed before writeback dispatch.');
29
+ const stored = await deps.StorageDb.getRecord('sessions', view.sessionId);
30
+ if (stored?.accountScopeId !== scope.accountScopeId || stored?.projectId !== scope.projectId
31
+ || !(stored.runs || []).some(item => item.id === run.id && item.pendingWriteback?.id === pending.id)) {
32
+ throw new Error('The writeback recovery record could not be saved. No write was dispatched.');
33
+ }
34
+ return pending.id;
35
+ }
36
+ async function settle(input, result) {
37
+ const view = deps.getRun(), run = view && deps.findRun(view.recordId, view.sessionId);
38
+ if (!run?.pendingWriteback || run.pendingWriteback.projectId !== input.runProjectId) return;
39
+ const uncertain = result?.receiptUnconfirmed === true || (result?.skipped || []).some(entry => {
40
+ const item = entry.result || entry; return item.changedDocument === true || item.failure?.changedDocument === true;
41
+ });
42
+ // Volatile marker only. The intent remains durable until the mature
43
+ // action checkpoint has been recorded by the orchestrator.
44
+ run.writebackResultKnown = !uncertain;
45
+ }
46
+ function checkpointRecorded(run) {
47
+ if (run?.writebackResultKnown === true) {
48
+ delete run.pendingWriteback; delete run.writebackResultKnown;
49
+ }
50
+ }
51
+ async function recover() {
52
+ if (recovery) return recovery;
53
+ recovery = reconcile().finally(() => { recovery = null; });
54
+ return recovery;
55
+ }
56
+ async function reconcile() {
57
+ if (deps.getRun()) return false;
58
+ const scope = owner();
59
+ const pending = runs().filter(({ run }) => run.pendingWriteback
60
+ && run.pendingWriteback.projectId === scope.projectId && run.pendingWriteback.accountScopeId === scope.accountScopeId);
61
+ if (!pending.length) return true;
62
+ const snapshot = await deps.readProject();
63
+ if (!current(scope) || !snapshot?.capabilities?.fullProjectSnapshot) return false;
64
+ const observed = new Map((snapshot.files || []).map(file => [file.path, file]));
65
+ for (const { session, run } of pending) {
66
+ const intent = Intent.normalize(run.pendingWriteback);
67
+ if (!intent || intent.sessionId !== session.id || intent.runId !== run.id) continue;
68
+ const before = new Map(intent.baseFiles.map(file => [file.path, file.content]));
69
+ const after = Intent.expectedFiles(intent);
70
+ const applied = [], untouched = [], unknown = [];
71
+ for (const operation of intent.operations) {
72
+ const paths = [operation.path, operation.to].filter(Boolean);
73
+ if (operation.type.includes('binary')) {
74
+ unknown.push(operation.path); continue;
75
+ }
76
+ const matches = map => paths.every(path => map.has(path)
77
+ ? typeof observed.get(path)?.content === 'string' && observed.get(path).content === map.get(path)
78
+ : !observed.has(path));
79
+ if (matches(before)) untouched.push(operation.path);
80
+ else if (matches(after)) applied.push(operation);
81
+ else unknown.push(operation.path);
82
+ }
83
+ if (!current(scope)) return false;
84
+ const retained = Array.isArray(run.appliedOperations) ? run.appliedOperations : [];
85
+ const knownPaths = new Set(retained.map(op => op.path));
86
+ run.appliedOperations = [...retained, ...applied.filter(op => !knownPaths.has(op.path))];
87
+ if (applied.length) {
88
+ run.changedDocument = true;
89
+ if (intent.requireReviewing) {
90
+ // Text readback cannot recreate native tracked-change identities.
91
+ // Preserve real refs if already captured; never fabricate Accept.
92
+ run.undoExpectedFiles = intent.baseFiles;
93
+ run.trackedChangeStatus = ['accepted', 'rejected'].includes(run.trackedChangeStatus)
94
+ ? run.trackedChangeStatus : 'needs_review';
95
+ } else {
96
+ const undo = Undo.buildUndoCheckpoint({ files: intent.baseFiles }, run.appliedOperations);
97
+ run.undoOperations = undo.undoOperations; run.undoBaseFiles = undo.undoBaseFiles;
98
+ run.undoExpectedFiles = intent.baseFiles;
99
+ }
100
+ }
101
+ if (!unknown.length) delete run.pendingWriteback;
102
+ run.status = applied.length || unknown.length ? 'needs_review_after_navigation' : 'interrupted';
103
+ run.statusText = deps.tx('Writeback checked after refresh', '已核对刷新前的写入');
104
+ const text = deps.tx(
105
+ 'Writeback recovery: ' + applied.length + ' confirmed changed, ' + untouched.length + ' unchanged, ' + unknown.length + ' require inspection.',
106
+ '写入核对:' + applied.length + ' 项已确认修改,' + untouched.length + ' 项未修改,' + unknown.length + ' 项需要检查。'
107
+ );
108
+ run.events = [...(run.events || []).filter(event => event.recoveryIntentId !== intent.id), {
109
+ kind: 'activity', title: text, status: unknown.length ? 'warning' : 'completed',
110
+ timestamp: new Date().toISOString(), recoveryIntentId: intent.id,
111
+ activity: { v: 1, kind: 'notice', id: 'writeback-recovery:' + intent.id, state: unknown.length ? 'warning' : 'info' }
112
+ }].slice(-300);
113
+ session.updatedAt = new Date().toISOString();
114
+ }
115
+ await deps.save();
116
+ if (current(scope)) deps.refresh();
117
+ return !runs().some(({ run }) => run.pendingWriteback?.projectId === scope.projectId);
118
+ }
119
+ return { prepare, settle, checkpointRecorded, recover };
120
+ }
121
+ return { create };
122
+ });