codex-overleaf-link 1.7.0 → 1.7.5
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
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
<h1>Codex Overleaf Link</h1>
|
|
4
4
|
<p><strong>Empower Overleaf with Codex.</strong></p>
|
|
5
5
|
<p>
|
|
6
|
-
<img src="https://img.shields.io/badge/version-1.7.
|
|
6
|
+
<img src="https://img.shields.io/badge/version-1.7.5-blue" alt="version">
|
|
7
7
|
<img src="https://img.shields.io/badge/platform-macOS%20%2F%20Windows%20%2F%20Linux-lightgrey" alt="platform">
|
|
8
8
|
<img src="https://img.shields.io/badge/chrome-MV3-green" alt="chrome manifest v3">
|
|
9
9
|
<img src="https://img.shields.io/badge/node-%3E%3D20-brightgreen" alt="node version">
|
|
@@ -38,14 +38,14 @@ One command installs the native host **and** sets up the extension: the script r
|
|
|
38
38
|
macOS / Linux:
|
|
39
39
|
|
|
40
40
|
```bash
|
|
41
|
-
CODEX_OVERLEAF_REF=v1.7.
|
|
41
|
+
CODEX_OVERLEAF_REF=v1.7.5 bash -c "$(curl -fsSL https://raw.githubusercontent.com/Ghqqqq/codex-overleaf-link/v1.7.5/install.sh)"
|
|
42
42
|
```
|
|
43
43
|
|
|
44
44
|
Windows PowerShell:
|
|
45
45
|
|
|
46
46
|
```powershell
|
|
47
|
-
iwr https://raw.githubusercontent.com/Ghqqqq/codex-overleaf-link/v1.7.
|
|
48
|
-
$env:CODEX_OVERLEAF_REF='v1.7.
|
|
47
|
+
iwr https://raw.githubusercontent.com/Ghqqqq/codex-overleaf-link/v1.7.5/install.ps1 -OutFile install.ps1
|
|
48
|
+
$env:CODEX_OVERLEAF_REF='v1.7.5'
|
|
49
49
|
powershell -ExecutionPolicy Bypass -File install.ps1
|
|
50
50
|
```
|
|
51
51
|
|
|
@@ -56,10 +56,10 @@ Then, in the `chrome://extensions` tab the script opened: enable **Developer mod
|
|
|
56
56
|
`npm exec` installs and updates the **native host only** — it does not include the Chrome extension. Use it if you prefer a pinned npm package to a source checkout.
|
|
57
57
|
|
|
58
58
|
```bash
|
|
59
|
-
npm exec --yes codex-overleaf-link@1.7.
|
|
59
|
+
npm exec --yes codex-overleaf-link@1.7.5 -- install-native
|
|
60
60
|
```
|
|
61
61
|
|
|
62
|
-
Then add the extension yourself: download `codex-overleaf-link-extension-v1.7.
|
|
62
|
+
Then add the extension yourself: download `codex-overleaf-link-extension-v1.7.5.zip` from the [v1.7.5 GitHub Release](https://github.com/Ghqqqq/codex-overleaf-link/releases/tag/v1.7.5), unzip it to a stable folder, and in `chrome://extensions` enable **Developer mode**, click **Load unpacked**, and select that folder.
|
|
63
63
|
|
|
64
64
|
### Open Overleaf
|
|
65
65
|
|
|
@@ -86,9 +86,9 @@ npm installs, updates, uninstalls, and diagnoses the native host only. npm does
|
|
|
86
86
|
|
|
87
87
|
| Action | Command |
|
|
88
88
|
|--------|---------|
|
|
89
|
-
| Install / update | `npm exec --yes codex-overleaf-link@1.7.
|
|
90
|
-
| Diagnose | `npm exec --yes codex-overleaf-link@1.7.
|
|
91
|
-
| Uninstall | `npm exec --yes codex-overleaf-link@1.7.
|
|
89
|
+
| Install / update | `npm exec --yes codex-overleaf-link@1.7.5 -- install-native` |
|
|
90
|
+
| Diagnose | `npm exec --yes codex-overleaf-link@1.7.5 -- doctor` |
|
|
91
|
+
| Uninstall | `npm exec --yes codex-overleaf-link@1.7.5 -- uninstall-native` |
|
|
92
92
|
|
|
93
93
|
Use `--extension-id <chrome-extension-id>` only for a custom/dev unpacked extension id that differs from the official bundled id.
|
|
94
94
|
|
|
@@ -98,13 +98,13 @@ To update, re-run any of the [native host installers](#install) — they install
|
|
|
98
98
|
|
|
99
99
|
## GitHub Release Artifacts
|
|
100
100
|
|
|
101
|
-
The v1.7.
|
|
101
|
+
The v1.7.5 GitHub Release contains:
|
|
102
102
|
|
|
103
|
-
- `codex-overleaf-link-extension-v1.7.
|
|
104
|
-
- `codex-overleaf-native-host-v1.7.
|
|
105
|
-
- `codex-overleaf-link-1.7.
|
|
106
|
-
- `install.sh`: release-pinned macOS / Linux installer that defaults to `v1.7.
|
|
107
|
-
- `install.ps1`: release-pinned Windows PowerShell installer that defaults to `v1.7.
|
|
103
|
+
- `codex-overleaf-link-extension-v1.7.5.zip`: loadable Chrome extension package for manual unpacked installation.
|
|
104
|
+
- `codex-overleaf-native-host-v1.7.5.tar.gz`: native host runtime files used by the installer and release verification.
|
|
105
|
+
- `codex-overleaf-link-1.7.5.tgz`: npm native host CLI package for pinned install, doctor, and uninstall flows.
|
|
106
|
+
- `install.sh`: release-pinned macOS / Linux installer that defaults to `v1.7.5` when run directly from the release artifact.
|
|
107
|
+
- `install.ps1`: release-pinned Windows PowerShell installer that defaults to `v1.7.5` when run directly from the release artifact.
|
|
108
108
|
- `uninstall-native-host.mjs`: native host uninstaller that removes the Chrome Native Messaging manifest, bridge executable, and runtime copy.
|
|
109
109
|
- `nativeHostPlatform.js`, `manifest.js`, `runtimeInstaller.js`: helper files required by the loose uninstaller asset.
|
|
110
110
|
- `SHA256SUMS` and `release-manifest.json`: checksum and artifact metadata for release verification.
|
|
@@ -115,7 +115,7 @@ The v1.7.0 GitHub Release contains:
|
|
|
115
115
|
Remove the native host (use `--browser chromium` on Linux Chromium):
|
|
116
116
|
|
|
117
117
|
```bash
|
|
118
|
-
npm exec --yes codex-overleaf-link@1.7.
|
|
118
|
+
npm exec --yes codex-overleaf-link@1.7.5 -- uninstall-native
|
|
119
119
|
```
|
|
120
120
|
|
|
121
121
|
The same command works on Windows PowerShell. If you installed from a manual checkout or source installer, you can also run `npm run uninstall:native` inside the repo, use `node ~/.codex-overleaf/source/scripts/uninstall-native-host.mjs` on macOS / Linux, or use `node $env:LOCALAPPDATA\CodexOverleaf\source\scripts\uninstall-native-host.mjs` on Windows PowerShell.
|
|
@@ -150,13 +150,13 @@ Then remove the extension from `chrome://extensions`. To delete local data: on m
|
|
|
150
150
|
Linux Chromium install or update:
|
|
151
151
|
|
|
152
152
|
```bash
|
|
153
|
-
CODEX_OVERLEAF_REF=v1.7.
|
|
153
|
+
CODEX_OVERLEAF_REF=v1.7.5 bash -c "$(curl -fsSL https://raw.githubusercontent.com/Ghqqqq/codex-overleaf-link/v1.7.5/install.sh)" -- --browser chromium
|
|
154
154
|
```
|
|
155
155
|
|
|
156
156
|
Linux Chromium uninstall:
|
|
157
157
|
|
|
158
158
|
```bash
|
|
159
|
-
npm exec --yes codex-overleaf-link@1.7.
|
|
159
|
+
npm exec --yes codex-overleaf-link@1.7.5 -- uninstall-native --browser chromium
|
|
160
160
|
```
|
|
161
161
|
|
|
162
162
|
## Features
|
|
@@ -291,7 +291,7 @@ Composer attachments are turn-scoped Codex context. Limits are 8 attachments per
|
|
|
291
291
|
Re-run any [native host installer](#install), reload the extension in `chrome://extensions`, then refresh the Overleaf tab. This also fixes extension/native version mismatch and native protocol mismatch.
|
|
292
292
|
|
|
293
293
|
```bash
|
|
294
|
-
npm exec --yes codex-overleaf-link@1.7.
|
|
294
|
+
npm exec --yes codex-overleaf-link@1.7.5 -- install-native
|
|
295
295
|
```
|
|
296
296
|
|
|
297
297
|
**The Windows popup or panel shows a Bash recovery command**
|
|
@@ -340,8 +340,8 @@ Use this matrix for release-candidate signoff and compatibility reports. Record
|
|
|
340
340
|
| Browser/channel/version | Google Chrome channel and version. | Google Chrome channel and version. | Google Chrome channel and version. | Chromium channel/package and version. |
|
|
341
341
|
| Install mode | Manual unpacked extension from GitHub Release zip or checkout. | Manual unpacked extension from GitHub Release zip or checkout. | Manual unpacked extension from GitHub Release zip or checkout. | Manual unpacked extension from GitHub Release zip or checkout; native host installed with `--browser chromium`. |
|
|
342
342
|
| Extension id | Bundled id `illdpneeeopfffmiepaejglgmhpmdhdc`, or actual custom id passed with `--extension-id`. | Bundled id `illdpneeeopfffmiepaejglgmhpmdhdc`, or actual custom id passed with `--extension-id`. | Bundled id `illdpneeeopfffmiepaejglgmhpmdhdc`, or actual custom id passed with `--extension-id`. | Bundled id `illdpneeeopfffmiepaejglgmhpmdhdc`, or actual custom id passed with `--extension-id`. |
|
|
343
|
-
| Installer/update command | `npm exec --yes codex-overleaf-link@1.7.
|
|
344
|
-
| Uninstall command | `npm exec --yes codex-overleaf-link@1.7.
|
|
343
|
+
| Installer/update command | `npm exec --yes codex-overleaf-link@1.7.5 -- install-native` | `npm exec --yes codex-overleaf-link@1.7.5 -- install-native` | `npm exec --yes codex-overleaf-link@1.7.5 -- install-native` | `npm exec --yes codex-overleaf-link@1.7.5 -- install-native --browser chromium` |
|
|
344
|
+
| Uninstall command | `npm exec --yes codex-overleaf-link@1.7.5 -- uninstall-native` | `npm exec --yes codex-overleaf-link@1.7.5 -- uninstall-native` | `npm exec --yes codex-overleaf-link@1.7.5 -- uninstall-native` | `npm exec --yes codex-overleaf-link@1.7.5 -- uninstall-native --browser chromium` |
|
|
345
345
|
| Manifest/registry path | `~/Library/Application Support/Google/Chrome/NativeMessagingHosts/com.codex.overleaf.json` | `HKCU\Software\Google\Chrome\NativeMessagingHosts\com.codex.overleaf` -> `%LOCALAPPDATA%\CodexOverleaf\native-host-runtime\com.codex.overleaf.json` | `~/.config/google-chrome/NativeMessagingHosts/com.codex.overleaf.json` | `~/.config/chromium/NativeMessagingHosts/com.codex.overleaf.json` |
|
|
346
346
|
| Bridge/runtime/source path | Bridge `~/.codex-overleaf/codex-overleaf-bridge`; runtime `~/.codex-overleaf/native-host-runtime`; source `~/.codex-overleaf/source`. | Bridge `%LOCALAPPDATA%\CodexOverleaf\codex-overleaf-bridge.cmd`; runtime `%LOCALAPPDATA%\CodexOverleaf\native-host-runtime`; source `%LOCALAPPDATA%\CodexOverleaf\source`. | Bridge `~/.codex-overleaf/codex-overleaf-bridge`; runtime `~/.codex-overleaf/native-host-runtime`; source `~/.codex-overleaf/source`. | Bridge `~/.codex-overleaf/codex-overleaf-bridge`; runtime `~/.codex-overleaf/native-host-runtime`; source `~/.codex-overleaf/source`. |
|
|
347
347
|
| Node/Git/Codex/TeX | Node.js >= 20; Git; Codex CLI installed and logged in; TeX optional. | Node.js >= 20; Git; Codex CLI installed and logged in; TeX optional. | Node.js >= 20; Git; Codex CLI installed and logged in; TeX optional. | Node.js >= 20; Git; Codex CLI installed and logged in; TeX optional. |
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
const MIN_NATIVE_VERSION = '1.0.0';
|
|
13
13
|
const MIN_COMPATIBLE_NATIVE_VERSION = '1.0.0';
|
|
14
14
|
const MIN_COMPATIBLE_EXTENSION_VERSION = '1.0.0';
|
|
15
|
-
const BUILD_TARGET_VERSION = '1.7.
|
|
15
|
+
const BUILD_TARGET_VERSION = '1.7.5';
|
|
16
16
|
const DEFAULT_CHROME_EXTENSION_ID = 'illdpneeeopfffmiepaejglgmhpmdhdc';
|
|
17
17
|
const REQUIRED_CAPABILITIES = Object.freeze([
|
|
18
18
|
'bridgePing',
|
|
@@ -252,7 +252,6 @@
|
|
|
252
252
|
personalizationConfig: 'Personalization',
|
|
253
253
|
personalizationHelp: 'Style, terminology, and LaTeX conventions Codex should follow in this project.',
|
|
254
254
|
settingsSaved: 'Saved',
|
|
255
|
-
settingsSaving: 'Saving…',
|
|
256
255
|
appearanceTitle: 'Appearance',
|
|
257
256
|
themeLabel: 'Theme',
|
|
258
257
|
themeDark: 'Dark',
|
|
@@ -273,6 +272,27 @@
|
|
|
273
272
|
modeAutoTitle: 'Write directly after authorization. Deletes still require confirmation.',
|
|
274
273
|
addContext: 'Add @ context',
|
|
275
274
|
attachFiles: 'Attach files (PDF, images)',
|
|
275
|
+
fileProtectionTitle: 'File protection',
|
|
276
|
+
sessionEvictTitle: 'Session limit reached',
|
|
277
|
+
sessionEvictMessage: 'You have 20 sessions. Creating a new one will permanently delete the oldest session "{title}" and all of its history.',
|
|
278
|
+
sessionEvictConfirm: 'Delete oldest & create',
|
|
279
|
+
sessionSwitchRunningTitle: 'A run is still in progress',
|
|
280
|
+
sessionSwitchRunningMessage: 'The current session is still running. If you leave now, the run continues in the background and its result is saved to that session.',
|
|
281
|
+
sessionSwitchRunningConfirm: 'Leave & continue in background',
|
|
282
|
+
diffHunkRevert: 'Undo decision',
|
|
283
|
+
runsTruncatedNote: 'Showing the most recent 20 runs — older runs were trimmed.',
|
|
284
|
+
eventsTruncatedNote: 'Earlier steps of this run were trimmed.',
|
|
285
|
+
newSessionTooltip: 'Start a fresh conversation — the current session\u2019s context will not carry over',
|
|
286
|
+
storageTitle: 'History & storage',
|
|
287
|
+
storageUsageLoading: 'Calculating usage\u2026',
|
|
288
|
+
storageClearAll: 'Clear all history\u2026',
|
|
289
|
+
storageClearAllHelp: 'Removes every stored session, run and audit record for all projects. Project settings and rules are kept.',
|
|
290
|
+
runTurnNavLabel: 'Jump to a turn\u2026',
|
|
291
|
+
historyTitle: 'Change history',
|
|
292
|
+
historyHelp: 'What Codex wrote to this project, per run. Filter by file name or task text.',
|
|
293
|
+
privacyTitle: 'Privacy',
|
|
294
|
+
governanceBroadReadonlyWarning: '"{pattern}" matches every file — Codex will not be able to write anything. Saved; narrow it if unintended.',
|
|
295
|
+
governanceWritableAllowlistNote: 'Writable allowlist active — files outside these patterns cannot be written.',
|
|
276
296
|
atMenuLoading: 'Loading project files…',
|
|
277
297
|
atMenuFileSubtitle: 'Add as focus context',
|
|
278
298
|
atMenuCompileLogSubtitle: 'Attach the latest compile log',
|
|
@@ -444,6 +464,7 @@
|
|
|
444
464
|
recentProjects_badge_running: 'running',
|
|
445
465
|
recentProjects_badge_completed: 'completed',
|
|
446
466
|
recentProjects_badge_failed: 'failed',
|
|
467
|
+
recentProjects_badge_interrupted: 'interrupted',
|
|
447
468
|
recentProjects_badge_background_completed: 'completed in background',
|
|
448
469
|
recentProjects_badge_needs_review_after_navigation: 'pending',
|
|
449
470
|
recentProjects_badge_abandoned_after_navigation: 'abandoned'
|
|
@@ -689,7 +710,6 @@
|
|
|
689
710
|
personalizationConfig: '个性化配置',
|
|
690
711
|
personalizationHelp: 'Codex 在本项目中应遵循的风格、术语和 LaTeX 约定。',
|
|
691
712
|
settingsSaved: '已保存',
|
|
692
|
-
settingsSaving: '保存中…',
|
|
693
713
|
appearanceTitle: '外观',
|
|
694
714
|
themeLabel: '主题',
|
|
695
715
|
themeDark: '深色',
|
|
@@ -710,6 +730,27 @@
|
|
|
710
730
|
modeAutoTitle: '授权后直接写入,删除仍需确认',
|
|
711
731
|
addContext: '添加 @ 上下文',
|
|
712
732
|
attachFiles: '添加附件(PDF、图片)',
|
|
733
|
+
fileProtectionTitle: '文件保护',
|
|
734
|
+
sessionEvictTitle: '会话数已达上限',
|
|
735
|
+
sessionEvictMessage: '当前已有 20 个会话。新建将永久删除最早的会话「{title}」及其全部历史。',
|
|
736
|
+
sessionEvictConfirm: '删除最早并新建',
|
|
737
|
+
sessionSwitchRunningTitle: '仍有运行进行中',
|
|
738
|
+
sessionSwitchRunningMessage: '当前会话还在运行。现在离开的话,该运行会在后台继续,结果仍会记录到原会话。',
|
|
739
|
+
sessionSwitchRunningConfirm: '离开并后台继续',
|
|
740
|
+
diffHunkRevert: '撤销该决定',
|
|
741
|
+
runsTruncatedNote: '仅显示最近 20 轮——更早的轮次已精简。',
|
|
742
|
+
eventsTruncatedNote: '本轮更早的步骤已精简。',
|
|
743
|
+
newSessionTooltip: '开启全新对话——当前会话的上下文不会带入',
|
|
744
|
+
storageTitle: '历史与存储',
|
|
745
|
+
storageUsageLoading: '正在计算占用…',
|
|
746
|
+
storageClearAll: '清空全部历史…',
|
|
747
|
+
storageClearAllHelp: '删除所有项目已存储的全部会话、运行与审计记录。项目设置与规则会保留。',
|
|
748
|
+
runTurnNavLabel: '跳到某一轮…',
|
|
749
|
+
historyTitle: '变更历史',
|
|
750
|
+
historyHelp: 'Codex 每一轮写入本项目的记录。可按文件名或任务内容过滤。',
|
|
751
|
+
privacyTitle: '隐私',
|
|
752
|
+
governanceBroadReadonlyWarning: '「{pattern}」匹配所有文件——Codex 将无法写入任何内容。已保存;若非有意请收窄范围。',
|
|
753
|
+
governanceWritableAllowlistNote: '已设置可写白名单——白名单之外的文件都不可写。',
|
|
713
754
|
atMenuLoading: '正在加载项目文件…',
|
|
714
755
|
atMenuFileSubtitle: '加入重点上下文',
|
|
715
756
|
atMenuCompileLogSubtitle: '附上最新编译日志',
|
|
@@ -880,6 +921,7 @@
|
|
|
880
921
|
recentProjects_badge_running: '运行中',
|
|
881
922
|
recentProjects_badge_completed: '已完成',
|
|
882
923
|
recentProjects_badge_failed: '失败',
|
|
924
|
+
recentProjects_badge_interrupted: '已中断',
|
|
883
925
|
recentProjects_badge_background_completed: '后台已完成',
|
|
884
926
|
recentProjects_badge_needs_review_after_navigation: '待处理',
|
|
885
927
|
recentProjects_badge_abandoned_after_navigation: '已中止'
|
|
@@ -561,10 +561,16 @@
|
|
|
561
561
|
const locale = options.locale || i18n.DEFAULT_LOCALE;
|
|
562
562
|
const events = normalizeRunEvents(run.events);
|
|
563
563
|
if (shouldStopRestoredRun) {
|
|
564
|
+
// v1.7.5: a reload-orphaned run is 'interrupted', not 'failed' — nothing
|
|
565
|
+
// went wrong with the task itself. The notice is a report-kind event
|
|
566
|
+
// carrying a retryable failure code so the recovery-action registry
|
|
567
|
+
// offers "Edit & resend" right on the card.
|
|
564
568
|
events.push({
|
|
565
569
|
title: i18n.t(locale, 'restoredRunStoppedTitle'),
|
|
566
570
|
status: 'failed',
|
|
571
|
+
kind: 'report',
|
|
567
572
|
detail: i18n.t(locale, 'restoredRunStoppedDetail'),
|
|
573
|
+
failure: { code: 'native_request_failed', source: 'panel_reload' },
|
|
568
574
|
timestamp: new Date().toISOString()
|
|
569
575
|
});
|
|
570
576
|
}
|
|
@@ -576,7 +582,7 @@
|
|
|
576
582
|
model: typeof run.model === 'string' ? run.model : '',
|
|
577
583
|
reasoningEffort: typeof run.reasoningEffort === 'string' ? run.reasoningEffort : '',
|
|
578
584
|
speedTier: typeof run.speedTier === 'string' ? run.speedTier : '',
|
|
579
|
-
status: shouldStopRestoredRun ? '
|
|
585
|
+
status: shouldStopRestoredRun ? 'interrupted' : normalizeRunStatus(run.status),
|
|
580
586
|
statusText: shouldStopRestoredRun ? i18n.t(locale, 'restoredRunStoppedStatus') : sanitizeAssistantVisibleText(run.statusText),
|
|
581
587
|
runProjectId: normalizeProjectPrefKey(run.runProjectId),
|
|
582
588
|
startedAt: typeof run.startedAt === 'string' ? run.startedAt : '',
|
|
@@ -654,6 +660,7 @@
|
|
|
654
660
|
'running',
|
|
655
661
|
'completed',
|
|
656
662
|
'failed',
|
|
663
|
+
'interrupted',
|
|
657
664
|
'background_completed',
|
|
658
665
|
'needs_review_after_navigation',
|
|
659
666
|
'abandoned_after_navigation'
|
|
@@ -697,6 +704,19 @@
|
|
|
697
704
|
if (event.failure) {
|
|
698
705
|
normalized.failure = sanitizeAssistantVisibleValue(event.failure);
|
|
699
706
|
}
|
|
707
|
+
if (Array.isArray(event.compileErrors) && event.compileErrors.length) {
|
|
708
|
+
normalized.compileErrors = event.compileErrors.slice(0, 5)
|
|
709
|
+
.map(item => sanitizeAssistantVisibleText(String(item)))
|
|
710
|
+
.filter(Boolean);
|
|
711
|
+
}
|
|
712
|
+
if (Array.isArray(event.rejectedHunks) && event.rejectedHunks.length) {
|
|
713
|
+
normalized.rejectedHunks = event.rejectedHunks.slice(0, 10)
|
|
714
|
+
.map(item => ({
|
|
715
|
+
path: sanitizeAssistantVisibleText(String(item?.path || '')),
|
|
716
|
+
summary: sanitizeAssistantVisibleText(String(item?.summary || ''))
|
|
717
|
+
}))
|
|
718
|
+
.filter(item => item.path);
|
|
719
|
+
}
|
|
700
720
|
return normalized;
|
|
701
721
|
})
|
|
702
722
|
.slice(-MAX_RUN_EVENTS);
|
|
@@ -847,7 +867,12 @@
|
|
|
847
867
|
const limits = options.aggressive ? STORAGE_AGGRESSIVE_LIMITS : STORAGE_DEFAULT_LIMITS;
|
|
848
868
|
const compact = compactPanelStateForStorage(input, limits);
|
|
849
869
|
if (!options.aggressive && estimateJsonBytes(compact) > limits.targetBytes) {
|
|
850
|
-
|
|
870
|
+
// Surface the silent degradation: callers can pass onAggressive to tell
|
|
871
|
+
// the user history is being trimmed harder than the normal limits.
|
|
872
|
+
if (typeof options.onAggressive === 'function') {
|
|
873
|
+
options.onAggressive();
|
|
874
|
+
}
|
|
875
|
+
return prepareStateForStorage(input, { ...options, aggressive: true });
|
|
851
876
|
}
|
|
852
877
|
return compact;
|
|
853
878
|
}
|
|
@@ -1091,6 +1116,19 @@
|
|
|
1091
1116
|
if (event.failure) {
|
|
1092
1117
|
compact.failure = sanitizeAssistantVisibleValue(event.failure);
|
|
1093
1118
|
}
|
|
1119
|
+
if (Array.isArray(event.compileErrors) && event.compileErrors.length) {
|
|
1120
|
+
compact.compileErrors = event.compileErrors.slice(0, 5)
|
|
1121
|
+
.map(item => sanitizeAssistantVisibleText(String(item)))
|
|
1122
|
+
.filter(Boolean);
|
|
1123
|
+
}
|
|
1124
|
+
if (Array.isArray(event.rejectedHunks) && event.rejectedHunks.length) {
|
|
1125
|
+
compact.rejectedHunks = event.rejectedHunks.slice(0, 10)
|
|
1126
|
+
.map(item => ({
|
|
1127
|
+
path: sanitizeAssistantVisibleText(String(item?.path || '')),
|
|
1128
|
+
summary: sanitizeAssistantVisibleText(String(item?.summary || ''))
|
|
1129
|
+
}))
|
|
1130
|
+
.filter(item => item.path);
|
|
1131
|
+
}
|
|
1094
1132
|
return compact;
|
|
1095
1133
|
});
|
|
1096
1134
|
}
|