@cortexkit/opencode-magic-context 0.49.2 → 0.49.3

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 (114) hide show
  1. package/README.md +2 -38
  2. package/dist/auto-search-worker.js +3 -3
  3. package/dist/compaction-marker-candidates-dd638ypn.js +19 -0
  4. package/dist/compaction-marker-candidates-worker.js +24 -0
  5. package/dist/{conflict-warning-hook-asnt6hfc.js → conflict-warning-hook-ae8nmv7c.js} +5 -4
  6. package/dist/{context-tfyhtdcs.js → context-9tbxh883.js} +63 -29
  7. package/dist/{embedding-backfill-wyc3ykyf.js → embedding-backfill-aj488s8x.js} +5 -5
  8. package/dist/features/magic-context/compaction-marker-candidates-worker.d.ts +2 -0
  9. package/dist/features/magic-context/compaction-marker-candidates-worker.d.ts.map +1 -0
  10. package/dist/features/magic-context/compaction-marker-candidates.d.ts +47 -0
  11. package/dist/features/magic-context/compaction-marker-candidates.d.ts.map +1 -0
  12. package/dist/features/magic-context/compaction-marker.d.ts +12 -0
  13. package/dist/features/magic-context/compaction-marker.d.ts.map +1 -1
  14. package/dist/features/magic-context/memory/project-identity.d.ts +5 -1
  15. package/dist/features/magic-context/memory/project-identity.d.ts.map +1 -1
  16. package/dist/features/magic-context/message-index-async.d.ts +3 -0
  17. package/dist/features/magic-context/message-index-async.d.ts.map +1 -1
  18. package/dist/features/magic-context/message-index.d.ts.map +1 -1
  19. package/dist/features/magic-context/storage-clone.d.ts +2 -0
  20. package/dist/features/magic-context/storage-clone.d.ts.map +1 -1
  21. package/dist/features/magic-context/storage-tags.d.ts +1 -1
  22. package/dist/features/magic-context/storage-tags.d.ts.map +1 -1
  23. package/dist/hooks/magic-context/compaction-marker-manager.d.ts +3 -0
  24. package/dist/hooks/magic-context/compaction-marker-manager.d.ts.map +1 -1
  25. package/dist/hooks/magic-context/compartment-runner-incremental.d.ts.map +1 -1
  26. package/dist/hooks/magic-context/history-boundary-repair.d.ts +11 -2
  27. package/dist/hooks/magic-context/history-boundary-repair.d.ts.map +1 -1
  28. package/dist/hooks/magic-context/protected-tail-boundary.d.ts +4 -3
  29. package/dist/hooks/magic-context/protected-tail-boundary.d.ts.map +1 -1
  30. package/dist/hooks/magic-context/raw-ordinal-warmup.d.ts +10 -0
  31. package/dist/hooks/magic-context/raw-ordinal-warmup.d.ts.map +1 -1
  32. package/dist/hooks/magic-context/read-session-chunk.d.ts.map +1 -1
  33. package/dist/hooks/magic-context/rust-mode-transform.d.ts.map +1 -1
  34. package/dist/hooks/magic-context/transform-postprocess-phase.d.ts.map +1 -1
  35. package/dist/{index-sfhndpcb.js → index-3wckxwfp.js} +39 -39
  36. package/dist/{index-gzky5rva.js → index-41gqa557.js} +4 -2
  37. package/dist/{index-r2zcs71c.js → index-7ndnvw7a.js} +1 -1
  38. package/dist/{index-sv0bb7vg.js → index-7zg9dvx0.js} +35 -4
  39. package/dist/{index-xgrwmj82.js → index-bhk710rw.js} +1 -1
  40. package/dist/{index-fg00p1cg.js → index-c0b01zrc.js} +2 -2
  41. package/dist/{index-rafsaxac.js → index-fjtgekd4.js} +2 -2
  42. package/dist/{index-fdtkt5r1.js → index-fst3t0d9.js} +9 -9
  43. package/dist/{index-6tfxmc4n.js → index-je2na55n.js} +4 -4
  44. package/dist/{index-h5zfkjyk.js → index-jpm52v9x.js} +6 -24
  45. package/dist/{index-s7fc0fkn.js → index-m4p77myp.js} +1 -1
  46. package/dist/{index-xnanvj3w.js → index-mgy5dwcw.js} +607 -579
  47. package/dist/{index-0pjvpfkf.js → index-qvr78ej6.js} +1 -1
  48. package/dist/{index-zfzdpeq2.js → index-s4ztdn8v.js} +1311 -1271
  49. package/dist/index-v0p37hm2.js +22 -0
  50. package/dist/{index-eypn4ba6.js → index-w9pe0nx1.js} +3 -3
  51. package/dist/{index-p0n5ryq8.js → index-ws3gcy5m.js} +19 -9
  52. package/dist/{index-att4bfan.js → index-xfbfrngb.js} +1 -1
  53. package/dist/{index-nydv6g8r.js → index-yqps2zsv.js} +44 -6
  54. package/dist/index-yxawqmdd.js +212 -0
  55. package/dist/{index-zg8yq4ya.js → index-znzgze2v.js} +3 -3
  56. package/dist/index.js +38 -35
  57. package/dist/{message-index-bounded-hqktkhdy.js → message-index-bounded-pv6ct15d.js} +18 -17
  58. package/dist/message-index-jqa7qd0s.js +60 -0
  59. package/dist/migration-worker.js +3 -3
  60. package/dist/{project-embedding-registry-0gv3h6y8.js → project-embedding-registry-fcmszatg.js} +4 -4
  61. package/dist/raw-ordinal-warmup-worker.js +22 -5
  62. package/dist/{read-session-chunk-5mh0bh8y.js → read-session-chunk-cwgjwjd0.js} +7 -6
  63. package/dist/{read-session-raw-8sjbc9h0.js → read-session-raw-z38cn0as.js} +2 -1
  64. package/dist/{recomp-orchestrator-kpkhkjhq.js → recomp-orchestrator-txcc802e.js} +19 -17
  65. package/dist/{search-p9w39qv4.js → search-v1t47s2q.js} +14 -13
  66. package/dist/{send-session-notification-xffh3bbe.js → send-session-notification-yp9m5g4p.js} +4 -3
  67. package/dist/shared/tag-owner-id.d.ts +1 -0
  68. package/dist/shared/tag-owner-id.d.ts.map +1 -1
  69. package/dist/{storage-tags-k0pda32s.js → storage-tags-0ssbmzg9.js} +2 -2
  70. package/dist/{transform-postprocess-phase-481j5a7z.js → transform-postprocess-phase-113rwew1.js} +19 -17
  71. package/dist/v2/auto-search-worker.js +3 -3
  72. package/dist/v2/compaction-marker-candidates-1s21e2fz.js +18 -0
  73. package/dist/v2/compaction-marker-candidates-worker.js +24 -0
  74. package/dist/v2/{context-gsdtha5v.js → context-p1xf3w5q.js} +115 -44
  75. package/dist/v2/{embedding-backfill-dbvjbcmm.js → embedding-backfill-9hbkfvnz.js} +5 -5
  76. package/dist/v2/{message-index-bounded-p6v0n8qh.js → message-index-bounded-c0810p5w.js} +17 -16
  77. package/dist/v2/message-index-h8ssgq3q.js +59 -0
  78. package/dist/v2/migration-worker.js +3 -3
  79. package/dist/v2/{project-embedding-registry-nyq7z8y6.js → project-embedding-registry-42th7k1z.js} +4 -4
  80. package/dist/v2/raw-ordinal-warmup-worker.js +22 -5
  81. package/dist/v2/{read-session-chunk-fhyfe4qa.js → read-session-chunk-n86v9xfg.js} +6 -5
  82. package/dist/v2/{read-session-raw-j8dvp7f4.js → read-session-raw-3b3ehga4.js} +2 -1
  83. package/dist/v2/{recomp-orchestrator-5xy7w136.js → recomp-orchestrator-v168jwgg.js} +16 -14
  84. package/dist/v2/{search-j7bakcwa.js → search-048v8y02.js} +13 -12
  85. package/dist/v2/{send-session-notification-f6v698r5.js → send-session-notification-a4h2azxa.js} +2 -1
  86. package/dist/v2/{server-bgzy0phk.js → server-3bc6k4k4.js} +62 -33
  87. package/dist/v2/{server-7h861yms.js → server-3dqjhchy.js} +5 -18
  88. package/dist/v2/{server-c7n2ftng.js → server-4n2tknpc.js} +34 -3
  89. package/dist/v2/server-51779zs2.js +19 -0
  90. package/dist/v2/{server-kh958yj8.js → server-5zrpr764.js} +1 -1
  91. package/dist/v2/{server-6tcrjfw8.js → server-8pqnnmf9.js} +1 -1
  92. package/dist/v2/server-9290a1mb.js +212 -0
  93. package/dist/v2/{server-7vkj6zhb.js → server-9a6v0wth.js} +3 -3
  94. package/dist/v2/{server-1fszbabv.js → server-cjz51jm2.js} +2 -2
  95. package/dist/v2/{server-7spkq1y6.js → server-cxxjb33r.js} +2286 -2246
  96. package/dist/v2/{server-mqvtz7wz.js → server-hetyb88z.js} +9 -9
  97. package/dist/v2/{server-4c7jt8gq.js → server-pcygfdbs.js} +44 -6
  98. package/dist/v2/{server-8xmq9h3f.js → server-q6j5dasr.js} +4 -2
  99. package/dist/v2/{server-zbxjj2mz.js → server-rygvffsf.js} +2 -2
  100. package/dist/v2/server.js +4 -4
  101. package/dist/v2/{storage-tags-5yxrvkaf.js → storage-tags-3a4cavqb.js} +2 -2
  102. package/dist/v2/{wrapup-orchestrator-yem5422s.js → wrapup-orchestrator-zcyf8ymw.js} +14 -12
  103. package/dist/{wrapup-orchestrator-xvrr27ws.js → wrapup-orchestrator-5aa2q4v3.js} +20 -18
  104. package/package.json +3 -3
  105. package/src/config/latch-permanence-guard.test.ts +6 -1
  106. package/src/shared/sqlite-writer-diagnostics.test.ts +21 -10
  107. package/src/shared/tag-owner-id.ts +13 -0
  108. package/src/shared/tag-transcript.test.ts +6 -1
  109. package/src/shared/tag-transcript.ts +2 -1
  110. package/src/shared/windows-hidden-spawns.test.ts +60 -4
  111. /package/dist/{index-69vas84q.js → index-e6xnpach.js} +0 -0
  112. /package/dist/{index-p1hnwfd8.js → index-gcdb3rqw.js} +0 -0
  113. /package/dist/v2/{index-69vas84q.js → index-e6xnpach.js} +0 -0
  114. /package/dist/v2/{server-s2st631p.js → server-8wcf79fe.js} +0 -0
package/README.md CHANGED
@@ -1,27 +1,4 @@
1
- <p align="center">
2
- <strong>English</strong> |
3
- <a href="./README.zh.md">简体中文</a> |
4
- <a href="./README.zht.md">繁體中文</a> |
5
- <a href="./README.ko.md">한국어</a> |
6
- <a href="./README.de.md">Deutsch</a> |
7
- <a href="./README.es.md">Español</a> |
8
- <a href="./README.fr.md">Français</a> |
9
- <a href="./README.it.md">Italiano</a> |
10
- <a href="./README.da.md">Dansk</a> |
11
- <a href="./README.ja.md">日本語</a> |
12
- <a href="./README.pl.md">Polski</a> |
13
- <a href="./README.ru.md">Русский</a> |
14
- <a href="./README.bs.md">Bosanski</a> |
15
- <a href="./README.ar.md">العربية</a> |
16
- <a href="./README.no.md">Norsk</a> |
17
- <a href="./README.br.md">Português (Brasil)</a> |
18
- <a href="./README.th.md">ไทย</a> |
19
- <a href="./README.tr.md">Türkçe</a> |
20
- <a href="./README.uk.md">Українська</a> |
21
- <a href="./README.bn.md">বাংলা</a> |
22
- <a href="./README.gr.md">Ελληνικά</a> |
23
- <a href="./README.vi.md">Tiếng Việt</a>
24
- </p>
1
+ **English** · [简体中文](docs/i18n/README.zh-CN.md) · [繁體中文](docs/i18n/README.zh-TW.md) · [한국어](docs/i18n/README.ko.md) · [Deutsch](docs/i18n/README.de.md) · [Español](docs/i18n/README.es.md) · [Français](docs/i18n/README.fr.md) · [Italiano](docs/i18n/README.it.md) · [Dansk](docs/i18n/README.da.md) · [日本語](docs/i18n/README.ja.md) · [Polski](docs/i18n/README.pl.md) · [Русский](docs/i18n/README.ru.md) · [Bosanski](docs/i18n/README.bs.md) · [العربية](docs/i18n/README.ar.md) · [Norsk](docs/i18n/README.nb.md) · [Português (Brasil)](docs/i18n/README.pt-BR.md) · [ไทย](docs/i18n/README.th.md) · [Türkçe](docs/i18n/README.tr.md) · [Українська](docs/i18n/README.uk.md) · [বাংলা](docs/i18n/README.bn.md) · [Ελληνικά](docs/i18n/README.el.md) · [Tiếng Việt](docs/i18n/README.vi.md)
25
2
 
26
3
  <h1 align="center">Magic Context</h1>
27
4
 
@@ -79,24 +56,11 @@ Run one session per project and keep it going for weeks, months, or years. It re
79
56
 
80
57
  ## Quick start
81
58
 
82
- Run the interactive setup wizard. It detects your models, configures everything, and handles compatibility.
83
-
84
- **macOS / Linux:**
85
- ```bash
86
- curl -fsSL https://raw.githubusercontent.com/cortexkit/magic-context/master/scripts/install.sh | bash
87
- ```
88
-
89
- **Windows (PowerShell):**
90
- ```powershell
91
- irm https://raw.githubusercontent.com/cortexkit/magic-context/master/scripts/install.ps1 | iex
92
- ```
93
-
94
- **Or run directly (any OS):**
95
59
  ```bash
96
60
  npx @cortexkit/magic-context@latest setup
97
61
  ```
98
62
 
99
- The wizard auto-detects which harnesses you have (OpenCode, Pi, OMP, or any combination), adds the plugin, disables built-in compaction, helps you pick models for the historian and dreamer, and resolves conflicts with other context-management plugins. Target one with `--harness opencode`, `--harness pi`, or `--harness omp`.
63
+ Auto-detects which harnesses you have installed (OpenCode, Pi, OMP, or any combination) and configures each one: it registers the plugin, turns off the host's built-in compaction, helps you pick models for the historian and dreamer, and resolves conflicts with other context-management plugins. Restart the harness afterwards to load Magic Context. Target a specific harness with `--harness opencode`, `--harness pi`, or `--harness omp`.
100
64
 
101
65
  > **Why disable built-in compaction?** Magic Context manages context itself. The host's compaction would interfere with its cache-aware deferred operations and double-compress.
102
66
 
@@ -17,11 +17,11 @@ var [
17
17
  { setHarness },
18
18
  { Database }
19
19
  ] = await Promise.all([
20
- import("./embedding-backfill-wyc3ykyf.js"),
20
+ import("./embedding-backfill-aj488s8x.js"),
21
21
  import("./embedding-cache-mgyr73ef.js"),
22
22
  import("./storage-memory-07fx57k6.js"),
23
- import("./project-embedding-registry-0gv3h6y8.js"),
24
- import("./search-p9w39qv4.js"),
23
+ import("./project-embedding-registry-fcmszatg.js"),
24
+ import("./search-v1t47s2q.js"),
25
25
  import("./embedding-activity-g1dhes6g.js"),
26
26
  import("./harness-e4avh192.js"),
27
27
  import("./sqlite-mhjkerzq.js")
@@ -0,0 +1,19 @@
1
+ import {
2
+ isMarkerCandidateBasisCurrent2,
3
+ invalidateMarkerCandidateBasis2,
4
+ readMarkerCandidateBasis2,
5
+ prepareMarkerCandidateBasis2,
6
+ scanMarkerCandidateSnapshot2
7
+ } from "./index-yxawqmdd.js";
8
+ import"./index-v0p37hm2.js";
9
+ import"./index-kb9nn0a0.js";
10
+ import"./index-nsjyysj0.js";
11
+ import"./index-0sahzkwr.js";
12
+ import"./index-pavzsdc6.js";
13
+ export {
14
+ invalidateMarkerCandidateBasis2 as invalidateMarkerCandidateBasis,
15
+ isMarkerCandidateBasisCurrent2 as isMarkerCandidateBasisCurrent,
16
+ prepareMarkerCandidateBasis2 as prepareMarkerCandidateBasis,
17
+ readMarkerCandidateBasis2 as readMarkerCandidateBasis,
18
+ scanMarkerCandidateSnapshot2 as scanMarkerCandidateSnapshot
19
+ };
@@ -0,0 +1,24 @@
1
+ // src/features/magic-context/compaction-marker-candidates-worker.ts
2
+ import { parentPort, workerData } from "node:worker_threads";
3
+ var port = parentPort;
4
+ if (!port)
5
+ throw new Error("marker candidate worker requires a parent port");
6
+ port.postMessage({ kind: "accepted" });
7
+ var [{ Database }, { scanMarkerCandidateSnapshot }] = await Promise.all([
8
+ import("./sqlite-mhjkerzq.js"),
9
+ import("./compaction-marker-candidates-dd638ypn.js")
10
+ ]);
11
+ var input = workerData;
12
+ var db;
13
+ var reply;
14
+ try {
15
+ db = new Database(input.path, { readonly: true });
16
+ db.exec("PRAGMA busy_timeout=250");
17
+ reply = { kind: "candidates", snapshot: scanMarkerCandidateSnapshot(db, input.sessionId) };
18
+ } catch (error) {
19
+ reply = { kind: "error", error: error instanceof Error ? error.message : String(error) };
20
+ } finally {
21
+ db?.close();
22
+ }
23
+ port.postMessage(reply);
24
+ port.close();
@@ -4,14 +4,15 @@ import {
4
4
  cleanupConflictWarnings2,
5
5
  sendSchemaFenceWarning2,
6
6
  sendStartupAnnouncement2
7
- } from "./index-s7fc0fkn.js";
7
+ } from "./index-m4p77myp.js";
8
8
  import"./index-z1tjp257.js";
9
9
  import"./index-sd3egckz.js";
10
- import"./index-xgrwmj82.js";
10
+ import"./index-bhk710rw.js";
11
11
  import"./index-qt1qqasc.js";
12
12
  import"./index-tqf7yg27.js";
13
- import"./index-0pjvpfkf.js";
14
- import"./index-h5zfkjyk.js";
13
+ import"./index-qvr78ej6.js";
14
+ import"./index-jpm52v9x.js";
15
+ import"./index-v0p37hm2.js";
15
16
  import"./index-58e3y90n.js";
16
17
  import"./index-kb9nn0a0.js";
17
18
  import"./index-nsjyysj0.js";
@@ -59,7 +59,7 @@ import {
59
59
  resetPrefixTrimFallbackState,
60
60
  resolveOpenCodeProtectedTailBoundary,
61
61
  getActiveCompartmentRun
62
- } from "./index-zfzdpeq2.js";
62
+ } from "./index-s4ztdn8v.js";
63
63
  import"./index-sd3egckz.js";
64
64
  import {
65
65
  getHarness2
@@ -105,12 +105,12 @@ import {
105
105
  openDatabaseAsync,
106
106
  isDatabasePersisted,
107
107
  getDatabasePersistenceError
108
- } from "./index-zg8yq4ya.js";
108
+ } from "./index-znzgze2v.js";
109
109
  import {
110
110
  setHomeProjectPermission,
111
111
  resolveProjectIdentityForSession,
112
112
  scheduleAfterBootQuiet
113
- } from "./index-gzky5rva.js";
113
+ } from "./index-41gqa557.js";
114
114
  import {
115
115
  markHostUnservedRow,
116
116
  DreamTokenBudgetExceeded,
@@ -128,6 +128,8 @@ import {
128
128
  recordDetectedContextLimit,
129
129
  getPersistedCompactionMarkerState,
130
130
  setPersistedCompactionMarkerState,
131
+ getPendingPiCompactionMarkerState,
132
+ clearPendingPiCompactionMarkerStateIf,
131
133
  getObservedEpochFloor,
132
134
  detectOverflow,
133
135
  modelAcceptsEmptyContent,
@@ -137,7 +139,7 @@ import {
137
139
  cleanUserText2,
138
140
  readRawSessionMessageIdOrdinalsForRange2,
139
141
  readRawSessionMessageOrdinalById2
140
- } from "./index-sv0bb7vg.js";
142
+ } from "./index-7zg9dvx0.js";
141
143
  import {
142
144
  hasMeaningfulUserText2,
143
145
  preloadTokenizer,
@@ -155,13 +157,13 @@ import {
155
157
  } from "./index-7w18gg78.js";
156
158
  import {
157
159
  deleteChunkEmbedBackoffForSession
158
- } from "./index-p1hnwfd8.js";
160
+ } from "./index-gcdb3rqw.js";
159
161
  import"./index-6m7rdv7y.js";
160
162
  import {
161
163
  BoundedSessionMap,
162
164
  advanceSessionActivity,
163
165
  backfillSessionActivity
164
- } from "./index-sfhndpcb.js";
166
+ } from "./index-3wckxwfp.js";
165
167
  import"./index-1bt88epp.js";
166
168
  import"./index-1zx87sdm.js";
167
169
  import {
@@ -170,22 +172,23 @@ import {
170
172
  evaluateChannel2,
171
173
  reclaimableToolOutputCount,
172
174
  buildChannel2Reminder
173
- } from "./index-nydv6g8r.js";
174
- import"./index-h5zfkjyk.js";
175
+ } from "./index-yqps2zsv.js";
176
+ import"./index-v0p37hm2.js";
177
+ import"./index-jpm52v9x.js";
175
178
  import"./index-58e3y90n.js";
176
- import"./index-0pjvpfkf.js";
179
+ import"./index-qvr78ej6.js";
177
180
  import {
178
181
  getCurrentToolSetHash,
179
182
  recordToolDefinition
180
183
  } from "./index-h2wc01qk.js";
181
184
  import"./index-fr0wbhdn.js";
182
- import"./index-att4bfan.js";
183
- import"./index-fg00p1cg.js";
185
+ import"./index-xfbfrngb.js";
186
+ import"./index-c0b01zrc.js";
184
187
  import"./index-fb3zxn06.js";
185
188
  import {
186
189
  renderUserFacingFailure,
187
190
  userFacingFailureCode
188
- } from "./index-rafsaxac.js";
191
+ } from "./index-fjtgekd4.js";
189
192
  import {
190
193
  runSessionProjectBackfill,
191
194
  createLiveSessionState,
@@ -236,7 +239,7 @@ import {
236
239
  applyJsonSchemaParameterDescriptions,
237
240
  MagicContextRpcServer,
238
241
  subagentTemperature
239
- } from "./index-xnanvj3w.js";
242
+ } from "./index-mgy5dwcw.js";
240
243
  import {
241
244
  createTagger,
242
245
  setCtxReduceRegisteredGlobally,
@@ -244,20 +247,21 @@ import {
244
247
  EmergencyFailClosedError,
245
248
  DegradedPassRefusalError,
246
249
  isSyntheticHeadMessage2
247
- } from "./index-p0n5ryq8.js";
250
+ } from "./index-ws3gcy5m.js";
251
+ import"./index-yxawqmdd.js";
248
252
  import"./index-qt1qqasc.js";
249
253
  import"./index-4dhv7mqz.js";
250
254
  import"./index-gbmqa9x9.js";
251
- import"./index-r2zcs71c.js";
255
+ import"./index-7ndnvw7a.js";
252
256
  import"./index-7jzrrxap.js";
253
257
  import {
254
258
  pushNotification2,
255
259
  isTuiConnected2
256
260
  } from "./index-x8a7jmkh.js";
257
261
  import"./index-tqf7yg27.js";
258
- import"./index-xgrwmj82.js";
259
- import"./index-fdtkt5r1.js";
260
- import"./index-eypn4ba6.js";
262
+ import"./index-bhk710rw.js";
263
+ import"./index-fst3t0d9.js";
264
+ import"./index-w9pe0nx1.js";
261
265
  import"./index-mw7c950g.js";
262
266
  import {
263
267
  detectConflicts
@@ -294,7 +298,7 @@ function forgetCachedPrefix(sessionId) {
294
298
  clearInjectionCache(sessionId);
295
299
  resetPrefixTrimFallbackState(sessionId);
296
300
  }
297
- function dropCompartmentsAfter(db, sessionId, anchor, holderId) {
301
+ function dropCompartmentsAfter(db, sessionId, anchor, holderId, activeBranch = false, onRetire) {
298
302
  db.exec("BEGIN IMMEDIATE");
299
303
  let finished = false;
300
304
  try {
@@ -303,12 +307,19 @@ function dropCompartmentsAfter(db, sessionId, anchor, holderId) {
303
307
  finished = true;
304
308
  return null;
305
309
  }
306
- const dropped = db.prepare("SELECT id, sequence FROM compartments WHERE session_id = ? AND sequence > ? ORDER BY sequence").all(sessionId, anchor.sequence);
310
+ const dropped = db.prepare("SELECT id, sequence FROM compartments WHERE session_id = ? AND sequence > ? ORDER BY sequence").all(sessionId, anchor?.sequence ?? -1);
311
+ onRetire?.();
307
312
  const deleteEmbeddings = db.prepare("DELETE FROM compartment_chunk_embeddings WHERE compartment_id = ?");
308
313
  for (const row of dropped)
309
314
  deleteEmbeddings.run(row.id);
310
- db.prepare("DELETE FROM compartments WHERE session_id = ? AND sequence > ?").run(sessionId, anchor.sequence);
311
- db.prepare("DELETE FROM compression_depth WHERE session_id = ? AND message_ordinal > ?").run(sessionId, anchor.endMessage);
315
+ db.prepare("DELETE FROM compartments WHERE session_id = ? AND sequence > ?").run(sessionId, anchor?.sequence ?? -1);
316
+ db.prepare("DELETE FROM compression_depth WHERE session_id = ? AND message_ordinal > ?").run(sessionId, anchor?.endMessage ?? 0);
317
+ if (activeBranch) {
318
+ db.prepare("UPDATE session_meta SET prior_boundary_ordinal = ? WHERE session_id = ?").run((anchor?.endMessage ?? 0) + 1, sessionId);
319
+ const marker = getPendingPiCompactionMarkerState(db, sessionId);
320
+ if (marker)
321
+ clearPendingPiCompactionMarkerStateIf(db, sessionId, marker);
322
+ }
312
323
  deleteChunkEmbedBackoffForSession(db, sessionId);
313
324
  queueM0Mutation(db, { sessionId, mutationType: "recomp_boundary_change" });
314
325
  clearCachedM0M1(db, sessionId);
@@ -324,24 +335,38 @@ function dropCompartmentsAfter(db, sessionId, anchor, holderId) {
324
335
  }
325
336
  }
326
337
  function repairMissingHistoryBoundary(args) {
327
- const { db, sessionId, isInHostStore } = args;
328
- const compartments = getCompartments(db, sessionId);
338
+ const { db, sessionId, isInHostStore, scope = "store" } = args;
339
+ const compartments = scope === "active-branch" ? db.prepare("SELECT sequence, COALESCE(end_message_id, '') AS endMessageId FROM compartments WHERE session_id = ? ORDER BY sequence").all(sessionId) : getCompartments(db, sessionId);
329
340
  let latestIndex = compartments.length - 1;
330
341
  while (latestIndex >= 0 && !compartments[latestIndex]?.endMessageId)
331
342
  latestIndex -= 1;
332
343
  if (latestIndex < 0)
333
344
  return { kind: "intact" };
345
+ if (scope === "active-branch") {
346
+ for (let index = 0;index <= latestIndex; index += 1) {
347
+ const endId = compartments[index]?.endMessageId;
348
+ if (!endId)
349
+ continue;
350
+ const present = isInHostStore(endId);
351
+ if (present === null)
352
+ return { kind: "unknown" };
353
+ if (!present) {
354
+ latestIndex = index;
355
+ break;
356
+ }
357
+ }
358
+ }
334
359
  const latestEnd = compartments[latestIndex].endMessageId;
335
360
  const latestPresent = isInHostStore(latestEnd);
336
361
  if (latestPresent === null)
337
362
  return { kind: "unknown" };
338
363
  if (!latestPresent) {
339
364
  const missing = latestEnd;
340
- const problem = `newest compartment end ${latestEnd} is not in the host store`;
365
+ const problem = `compartment end ${latestEnd} is not in ${scope === "active-branch" ? "the active host branch" : "the host store"}`;
341
366
  const anchor = findAnchor(compartments, latestIndex, isInHostStore);
342
367
  if (anchor === "unknown")
343
368
  return { kind: "unknown" };
344
- if (anchor === null) {
369
+ if (anchor === null && scope === "store") {
345
370
  sessionLog2(sessionId, `history boundary unresolved: ${problem} and no older compartment end is in the host store; nothing to re-anchor on`);
346
371
  return { kind: "unresolved", reason: "no-anchor", missingEndMessageId: missing };
347
372
  }
@@ -353,8 +378,15 @@ function repairMissingHistoryBoundary(args) {
353
378
  return { kind: "unresolved", reason: "busy", missingEndMessageId: missing };
354
379
  }
355
380
  let dropped;
381
+ let anchorForDrop = anchor;
356
382
  try {
357
- dropped = dropCompartmentsAfter(db, sessionId, anchor, holderId);
383
+ if (scope === "active-branch" && anchor) {
384
+ const row = db.prepare("SELECT end_message AS endMessage FROM compartments WHERE session_id = ? AND sequence = ?").get(sessionId, anchor.sequence);
385
+ if (!row)
386
+ return { kind: "unresolved", reason: "busy", missingEndMessageId: missing };
387
+ anchorForDrop = { ...anchor, endMessage: row.endMessage };
388
+ }
389
+ dropped = dropCompartmentsAfter(db, sessionId, anchorForDrop, holderId, scope === "active-branch", () => args.onRetire?.(compartments.slice(latestIndex), anchor));
358
390
  } finally {
359
391
  releaseCompartmentLeaseBestEffort(db, sessionId, holderId);
360
392
  }
@@ -364,14 +396,16 @@ function repairMissingHistoryBoundary(args) {
364
396
  invalidateAutoEmbedSession(sessionId);
365
397
  forgetCachedPrefix(sessionId);
366
398
  const range = dropped.length === 0 ? "none" : `${dropped[0]}-${dropped[dropped.length - 1]} (${dropped.length})`;
367
- sessionLog2(sessionId, `history boundary repair: ${problem}; re-anchored on compartment ${anchor.sequence} ending at ${anchor.endMessageId} (ordinal ${anchor.endMessage}); removed compartments ${range} for the historian to rebuild; the cached prefix is rebuilt on this pass`);
399
+ sessionLog2(sessionId, `history boundary repair: ${problem}; re-anchored on ${anchorForDrop ? `compartment ${anchorForDrop.sequence} ending at ${anchorForDrop.endMessageId} (ordinal ${anchorForDrop.endMessage})` : "the start of history"}; removed compartments ${range} for the historian to rebuild; the cached prefix is rebuilt on this pass`);
368
400
  return {
369
401
  kind: "repaired",
370
402
  missingEndMessageId: missing,
371
- anchorEndMessageId: anchor.endMessageId,
403
+ anchorEndMessageId: anchor?.endMessageId ?? "",
372
404
  droppedSequences: dropped
373
405
  };
374
406
  }
407
+ if (scope === "active-branch")
408
+ return { kind: "intact" };
375
409
  const baseline = readBaseline(db, sessionId);
376
410
  if (!baseline.hasCachedM0 || baseline.boundary === null || baseline.boundary === latestEnd) {
377
411
  return { kind: "intact" };
@@ -1,18 +1,18 @@
1
1
  import {
2
2
  ensureMemoryEmbeddings2
3
- } from "./index-r2zcs71c.js";
4
- import"./index-fg00p1cg.js";
5
- import"./index-p1hnwfd8.js";
3
+ } from "./index-7ndnvw7a.js";
4
+ import"./index-c0b01zrc.js";
5
+ import"./index-gcdb3rqw.js";
6
6
  import"./index-4dhv7mqz.js";
7
7
  import"./index-qt1qqasc.js";
8
8
  import"./index-gbmqa9x9.js";
9
9
  import"./index-vkbqdnkj.js";
10
- import"./index-gzky5rva.js";
10
+ import"./index-41gqa557.js";
11
11
  import"./index-7w18gg78.js";
12
12
  import"./index-k6xvbj2e.js";
13
- import"./index-qx53vezw.js";
14
13
  import"./index-4mjhqadz.js";
15
14
  import"./index-kb9nn0a0.js";
15
+ import"./index-qx53vezw.js";
16
16
  import"./index-nsjyysj0.js";
17
17
  import"./index-0sahzkwr.js";
18
18
  import"./index-pavzsdc6.js";
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=compaction-marker-candidates-worker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compaction-marker-candidates-worker.d.ts","sourceRoot":"","sources":["../../../src/features/magic-context/compaction-marker-candidates-worker.ts"],"names":[],"mappings":""}
@@ -0,0 +1,47 @@
1
+ import { type Database } from "../../shared/sqlite";
2
+ interface MarkerFrontier {
3
+ rowid: number;
4
+ id: string;
5
+ }
6
+ export interface MarkerCandidateSnapshot {
7
+ ids: string[];
8
+ frontier: MarkerFrontier | null;
9
+ }
10
+ export interface MarkerCandidateBasis extends MarkerCandidateSnapshot {
11
+ connection: Database;
12
+ sessionId: string;
13
+ revisionKey: string;
14
+ ownWriteRevision: number;
15
+ }
16
+ export interface MarkerCandidatePreparationOptions {
17
+ entry?: URL;
18
+ acceptMs?: number;
19
+ resultMs?: number;
20
+ }
21
+ export type MarkerCandidateReply = {
22
+ kind: "accepted";
23
+ } | {
24
+ kind: "candidates";
25
+ snapshot: MarkerCandidateSnapshot;
26
+ } | {
27
+ kind: "error";
28
+ error: string;
29
+ };
30
+ export declare const MARKER_CERTIFICATION_SQL = "SELECT\n (SELECT rowid FROM message WHERE id = ?) AS previousRowid,\n (SELECT rowid FROM message ORDER BY rowid DESC LIMIT 1) AS newestRowid,\n (SELECT id FROM message ORDER BY rowid DESC LIMIT 1) AS newestId,\n EXISTS(SELECT 1 FROM message\n WHERE rowid > ? AND +session_id = ? AND json_valid(data)\n AND COALESCE(json_extract(data, '$.summary'), 0) = 1) AS newSummary";
31
+ export declare function isMarkerCandidateBasisCurrent(db: Database, basis: MarkerCandidateBasis): boolean;
32
+ export declare function invalidateMarkerCandidateBasis(db: Database, sessionId: string): void;
33
+ export declare function readMarkerCandidateBasis(db: Database, sessionId: string): MarkerCandidateBasis | undefined;
34
+ /** Discover summary IDs off-thread. Defer cleanup if a new summary appears or the
35
+ * last scanned row is deleted or assigned a different rowid. Ordinary message
36
+ * updates and appends do not invalidate the discovered summary IDs. */
37
+ export declare function prepareMarkerCandidateBasis(db: Database, sessionId: string, options?: MarkerCandidatePreparationOptions): Promise<boolean>;
38
+ /** Find all messages with the summary flag on a worker. Marker cleanup then
39
+ * checks each ID's parent, completion status and exact text before deleting it.
40
+ * Do not filter by creation time: imported or rewritten legacy summaries can
41
+ * precede their parent even though the original writer used later timestamps. */
42
+ export declare function scanMarkerSummaryCandidates(db: Database, sessionId: string): string[];
43
+ /** Read summary IDs and the newest row in one snapshot, so an insert between
44
+ * those reads cannot be skipped by the next rowid-based certification. */
45
+ export declare function scanMarkerCandidateSnapshot(db: Database, sessionId: string): MarkerCandidateSnapshot;
46
+ export {};
47
+ //# sourceMappingURL=compaction-marker-candidates.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compaction-marker-candidates.d.ts","sourceRoot":"","sources":["../../../src/features/magic-context/compaction-marker-candidates.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,KAAK,QAAQ,EAAyB,MAAM,qBAAqB,CAAC;AAE3E,UAAU,cAAc;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,EAAE,EAAE,MAAM,CAAC;CACd;AACD,MAAM,WAAW,uBAAuB;IACpC,GAAG,EAAE,MAAM,EAAE,CAAC;IACd,QAAQ,EAAE,cAAc,GAAG,IAAI,CAAC;CACnC;AACD,MAAM,WAAW,oBAAqB,SAAQ,uBAAuB;IACjE,UAAU,EAAE,QAAQ,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,gBAAgB,EAAE,MAAM,CAAC;CAC5B;AACD,MAAM,WAAW,iCAAiC;IAC9C,KAAK,CAAC,EAAE,GAAG,CAAC;IACZ,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACrB;AACD,MAAM,MAAM,oBAAoB,GAC1B;IAAE,IAAI,EAAE,UAAU,CAAA;CAAE,GACpB;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,QAAQ,EAAE,uBAAuB,CAAA;CAAE,GACzD;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAkBvC,eAAO,MAAM,wBAAwB,8YAMuC,CAAC;AAE7E,wBAAgB,6BAA6B,CAAC,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,oBAAoB,GAAG,OAAO,CA+ChG;AAED,wBAAgB,8BAA8B,CAAC,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,CAOpF;AACD,wBAAgB,wBAAwB,CACpC,EAAE,EAAE,QAAQ,EACZ,SAAS,EAAE,MAAM,GAClB,oBAAoB,GAAG,SAAS,CAKlC;AAED;;uEAEuE;AACvE,wBAAgB,2BAA2B,CACvC,EAAE,EAAE,QAAQ,EACZ,SAAS,EAAE,MAAM,EACjB,OAAO,GAAE,iCAAsC,GAChD,OAAO,CAAC,OAAO,CAAC,CA2ClB;AAyFD;;;iFAGiF;AACjF,wBAAgB,2BAA2B,CAAC,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,EAAE,CAarF;AAED;0EAC0E;AAC1E,wBAAgB,2BAA2B,CACvC,EAAE,EAAE,QAAQ,EACZ,SAAS,EAAE,MAAM,GAClB,uBAAuB,CAczB"}
@@ -26,6 +26,7 @@
26
26
  * (b) has a completed summary assistant response (summary: true, finish: "stop")
27
27
  * whose parentID matches that user message's id
28
28
  */
29
+ import { type MarkerCandidatePreparationOptions } from "./compaction-marker-candidates";
29
30
  export declare function generateMessageId(timestampMs: number, counter?: bigint, identity?: string): string;
30
31
  export declare function generatePartId(timestampMs: number, counter?: bigint, identity?: string): string;
31
32
  export declare function getOpenCodeDbPath(): string;
@@ -92,11 +93,19 @@ export interface InjectCompactionMarkerArgs {
92
93
  /** Boundary resolved before removing the old marker (prevents null-boundary cache busts). */
93
94
  resolvedBoundary?: BoundaryUserMessage;
94
95
  }
96
+ export declare const LEGACY_MARKER_LINEAGE_SQL = "SELECT m.id\n FROM message m\n WHERE +m.session_id = ? AND m.id IN (SELECT value FROM json_each(?)) AND m.id <> ?\n AND COALESCE(json_extract(m.data, '$.summary'), 0) = 1\n AND COALESCE(json_extract(m.data, '$.finish'), '') = 'stop'\n AND COALESCE(json_extract(m.data, '$.parentID'), '') = ?\n AND EXISTS (SELECT 1 FROM part p\n WHERE +p.session_id = m.session_id AND p.message_id = m.id\n AND COALESCE(json_extract(p.data, '$.type'), '') = 'text'\n AND COALESCE(json_extract(p.data, '$.text'), '') = ?)";
95
97
  /**
96
98
  * Inject a compaction marker into OpenCode's DB.
97
99
  * Returns the marker state if successful, null if boundary couldn't be found.
98
100
  */
99
101
  export declare function injectCompactionMarker(args: InjectCompactionMarkerArgs): CompactionMarkerState | null;
102
+ /** Prepare summary IDs for marker cleanup independently of message-number lookup.
103
+ * If discovery is unavailable or the store changes during it, return false:
104
+ * callers keep the existing marker but can still serve the rebuilt history. */
105
+ export declare function prepareCompactionMarkerCandidates(sessionId: string, options?: MarkerCandidatePreparationOptions): Promise<boolean>;
106
+ /** Return every summary ID discovered for this session, only while the store is
107
+ * unchanged. Cleanup probes these primary keys; diagnostics can inspect them. */
108
+ export declare function getPreparedCompactionMarkerSummaryIds(sessionId: string): readonly string[] | undefined;
100
109
  /**
101
110
  * Replace an existing marker and inject its successor under one host-store
102
111
  * write lock. Acquiring that lock before the first DELETE avoids SQLite's
@@ -105,6 +114,9 @@ export declare function injectCompactionMarker(args: InjectCompactionMarkerArgs)
105
114
  export type CompactionMarkerReplacementOutcome = {
106
115
  kind: "committed";
107
116
  marker: CompactionMarkerState;
117
+ } | {
118
+ kind: "deferred";
119
+ error: Error;
108
120
  } | {
109
121
  kind: "definitely-no-cut" | "uncertain";
110
122
  error: Error;
@@ -1 +1 @@
1
- {"version":3,"file":"compaction-marker.d.ts","sourceRoot":"","sources":["../../../src/features/magic-context/compaction-marker.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"compaction-marker.d.ts","sourceRoot":"","sources":["../../../src/features/magic-context/compaction-marker.ts"],"names":[],"mappings":"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"}
@@ -34,8 +34,12 @@ export declare class ProjectIdentityError extends Error {
34
34
  *
35
35
  * The cache is process-local, keyed by `path.resolve(directory)`, and stores only successful git
36
36
  * identities. Transient failures are never cached.
37
+ * Set `cache: false` for a fresh, read-only probe that neither reads cached identities nor
38
+ * updates process caches or durable identity pins.
37
39
  */
38
- export declare function resolveProjectIdentityStrict(directory: string, allowHomeProject?: boolean): string;
40
+ export declare function resolveProjectIdentityStrict(directory: string, allowHomeProject?: boolean, options?: {
41
+ cache?: boolean;
42
+ }): string;
39
43
  export declare function takeDubiousOwnershipProjectIdentityWarning(directory: string): string | null;
40
44
  export declare function isUserHomeDirectory(directory: string): boolean;
41
45
  export declare function resolveProjectIdentity(directory: string, allowHomeProject?: boolean): string;
@@ -1 +1 @@
1
- {"version":3,"file":"project-identity.d.ts","sourceRoot":"","sources":["../../../../src/features/magic-context/memory/project-identity.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAkDlD,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAE/D;AAED,0FAA0F;AAC1F,wBAAgB,2BAA2B,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAgBtE;AAMD,qHAAqH;AACrH,MAAM,MAAM,yBAAyB,GAC/B,uBAAuB,GACvB,0BAA0B,GAC1B,cAAc,GACd,YAAY,GACZ,aAAa,GACb,aAAa,GACb,mBAAmB,GACnB,mBAAmB,GACnB,SAAS,CAAC;AAEhB;;GAEG;AACH,qBAAa,oBAAqB,SAAQ,KAAK;IAC3C,QAAQ,CAAC,UAAU,EAAE,yBAAyB,CAAC;IAC/C,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;gBAG1B,UAAU,EAAE,yBAAyB,EACrC,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,MAAM,EACf,KAAK,CAAC,EAAE,KAAK;CAUpB;AA4MD;;;;;;;;;GASG;AACH,wBAAgB,4BAA4B,CACxC,SAAS,EAAE,MAAM,EACjB,gBAAgB,UAAwB,GACzC,MAAM,CAoER;AA8ED,wBAAgB,0CAA0C,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAM3F;AAmBD,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAW9D;AAiBD,wBAAgB,sBAAsB,CAClC,SAAS,EAAE,MAAM,EACjB,gBAAgB,UAAwB,GACzC,MAAM,CAqDR;AAED,wBAAgB,gCAAgC,CAC5C,SAAS,EAAE,MAAM,EACjB,gBAAgB,UAAwB,GACzC,MAAM,CAiBR;AAmDD;;yEAEyE;AACzE,wBAAgB,uBAAuB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAElE;AAED;;;;;;;GAOG;AACH,wBAAgB,iCAAiC,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAoB3E;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,QAAQ,IAAI,MAAM,CAE/F;AAED,wBAAgB,gCAAgC,CAC5C,SAAS,EAAE,MAAM,EACjB,gBAAgB,UAAwB,GACzC,MAAM,GAAG,SAAS,CA6DpB;AAED;;;;;;GAMG;AACH,wBAAgB,0BAA0B,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAWtE;AAED;;;;;;;;GAQG;AACH,wBAAgB,2BAA2B,CACvC,iBAAiB,EAAE,MAAM,EACzB,eAAe,EAAE,MAAM,GACxB,OAAO,CAKT;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CA6B9D;AAED,wBAAgB,6BAA6B,CAAC,KAAK,EAAE;IACjD,YAAY,CAAC,EAAE,OAAO,YAAY,CAAC;IACnC,aAAa,CAAC,EAAE,MAAM,MAAM,CAAC;IAC7B,KAAK,CAAC,EAAE,MAAM,MAAM,CAAC;IACrB,iBAAiB,CAAC,EAAE,MAAM,IAAI,CAAC;CAClC,GAAG,IAAI,CAKP;AAED,wBAAgB,+CAA+C,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAWxF;AAED,wBAAgB,6CAA6C,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAWtF;AAED,wBAAgB,8BAA8B,IAAI,IAAI,CAmBrD"}
1
+ {"version":3,"file":"project-identity.d.ts","sourceRoot":"","sources":["../../../../src/features/magic-context/memory/project-identity.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAkDlD,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAE/D;AAED,0FAA0F;AAC1F,wBAAgB,2BAA2B,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAgBtE;AAMD,qHAAqH;AACrH,MAAM,MAAM,yBAAyB,GAC/B,uBAAuB,GACvB,0BAA0B,GAC1B,cAAc,GACd,YAAY,GACZ,aAAa,GACb,aAAa,GACb,mBAAmB,GACnB,mBAAmB,GACnB,SAAS,CAAC;AAEhB;;GAEG;AACH,qBAAa,oBAAqB,SAAQ,KAAK;IAC3C,QAAQ,CAAC,UAAU,EAAE,yBAAyB,CAAC;IAC/C,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;gBAG1B,UAAU,EAAE,yBAAyB,EACrC,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,MAAM,EACf,KAAK,CAAC,EAAE,KAAK;CAUpB;AA4MD;;;;;;;;;;;GAWG;AACH,wBAAgB,4BAA4B,CACxC,SAAS,EAAE,MAAM,EACjB,gBAAgB,UAAwB,EACxC,OAAO,GAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAA;CAAO,GAClC,MAAM,CAqER;AA8ED,wBAAgB,0CAA0C,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAM3F;AAmBD,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAW9D;AAiBD,wBAAgB,sBAAsB,CAClC,SAAS,EAAE,MAAM,EACjB,gBAAgB,UAAwB,GACzC,MAAM,CAqDR;AAED,wBAAgB,gCAAgC,CAC5C,SAAS,EAAE,MAAM,EACjB,gBAAgB,UAAwB,GACzC,MAAM,CAiBR;AAmDD;;yEAEyE;AACzE,wBAAgB,uBAAuB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAElE;AAED;;;;;;;GAOG;AACH,wBAAgB,iCAAiC,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAoB3E;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,QAAQ,IAAI,MAAM,CAE/F;AAED,wBAAgB,gCAAgC,CAC5C,SAAS,EAAE,MAAM,EACjB,gBAAgB,UAAwB,GACzC,MAAM,GAAG,SAAS,CA6DpB;AAED;;;;;;GAMG;AACH,wBAAgB,0BAA0B,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAWtE;AAED;;;;;;;;GAQG;AACH,wBAAgB,2BAA2B,CACvC,iBAAiB,EAAE,MAAM,EACzB,eAAe,EAAE,MAAM,GACxB,OAAO,CAKT;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CA6B9D;AAED,wBAAgB,6BAA6B,CAAC,KAAK,EAAE;IACjD,YAAY,CAAC,EAAE,OAAO,YAAY,CAAC;IACnC,aAAa,CAAC,EAAE,MAAM,MAAM,CAAC;IAC7B,KAAK,CAAC,EAAE,MAAM,MAAM,CAAC;IACrB,iBAAiB,CAAC,EAAE,MAAM,IAAI,CAAC;CAClC,GAAG,IAAI,CAKP;AAED,wBAAgB,+CAA+C,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAWxF;AAED,wBAAgB,6CAA6C,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAWtF;AAED,wBAAgB,8BAA8B,IAAI,IAAI,CAmBrD"}
@@ -1,5 +1,6 @@
1
1
  import type { RawMessage, RawMessageOrdinalAnchor } from "../../hooks/magic-context/read-session-raw";
2
2
  import { type Database } from "../../shared/sqlite";
3
+ import { type MessageHistoryOrphanSweepOptions, type MessageHistoryOrphanSweepResult } from "./message-index";
3
4
  import type { IndexWorkerMeasurements } from "./message-index-bounded";
4
5
  export declare function getIndexWorkerMeasurements(db: Database, sessionId: string): IndexWorkerMeasurements | undefined;
5
6
  /**
@@ -26,6 +27,8 @@ export declare function scheduleReconciliation(db: Database, sessionId: string,
26
27
  export declare function scheduleIncrementalIndex(db: Database, sessionId: string, messageId: string, messageSource: IncrementalMessageSource): void;
27
28
  /** FTS segment merges and WAL checkpoints at COMMIT must not run on the event loop. */
28
29
  export declare function indexSingleMessageOffThread(db: Database, sessionId: string, message: RawMessage): Promise<boolean>;
30
+ /** Candidate scans, cascaded deletes and FTS commits belong on a worker, not a timer's event loop. */
31
+ export declare function sweepOrphanedOpenCodeMessageIndexesOffThread(db: Database, openSource: () => Database | null, options?: MessageHistoryOrphanSweepOptions): Promise<MessageHistoryOrphanSweepResult>;
29
32
  export declare function scheduleClearAndReindex(db: Database, sessionId: string, readMessages: MessageReconciliationSource): void;
30
33
  export interface MessageIndexQueueHeapStats {
31
34
  queueLength: number;
@@ -1 +1 @@
1
- {"version":3,"file":"message-index-async.d.ts","sourceRoot":"","sources":["../../../src/features/magic-context/message-index-async.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACR,UAAU,EACV,uBAAuB,EAC1B,MAAM,4CAA4C,CAAC;AAIpD,OAAO,EACH,KAAK,QAAQ,EAIhB,MAAM,qBAAqB,CAAC;AAW7B,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAMvE,wBAAgB,0BAA0B,CACtC,EAAE,EAAE,QAAQ,EACZ,SAAS,EAAE,MAAM,GAClB,uBAAuB,GAAG,SAAS,CAErC;AAoFD;;;;;GAKG;AACH,KAAK,cAAc,GAAG;IAAE,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;CAAE,CAAC;AAS5E,KAAK,gBAAgB,GAAG,CAAC,CAAC,SAAS,EAAE,MAAM,KAAK,UAAU,EAAE,CAAC,GAAG;IAC5D,QAAQ,CAAC,EAAE,CACP,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,MAAM,EACpB,KAAK,EAAE,MAAM,EACb,cAAc,EAAE,MAAM,EACtB,KAAK,CAAC,EAAE,uBAAuB,KAC9B,UAAU,EAAE,CAAC;IAClB,QAAQ,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,MAAM,CAAC;CAC5C,GAAG,cAAc,CAAC;AAEnB,MAAM,WAAW,kCAAmC,SAAQ,cAAc;IACtE,QAAQ,CACJ,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,MAAM,EACpB,KAAK,EAAE,MAAM,EACb,cAAc,EAAE,MAAM,EACtB,KAAK,CAAC,EAAE,uBAAuB,GAChC,UAAU,EAAE,CAAC;IAChB,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAAC;CACvC;AAED,MAAM,MAAM,2BAA2B,GAAG,gBAAgB,GAAG,kCAAkC,CAAC;AAChG,KAAK,iBAAiB,GAAG,CAAC,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,KAAK,UAAU,GAAG,IAAI,CAAC,GAClF,cAAc,CAAC;AACnB,KAAK,wBAAwB,GAAG,iBAAiB,GAAG,UAAU,CAAC;AAiI/D,wBAAgB,sBAAsB,CAClC,EAAE,EAAE,QAAQ,EACZ,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,2BAA2B,GAC1C,IAAI,CAiCN;AAED,wBAAgB,wBAAwB,CACpC,EAAE,EAAE,QAAQ,EACZ,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,aAAa,EAAE,wBAAwB,GACxC,IAAI,CA+EN;AAED,uFAAuF;AACvF,wBAAsB,2BAA2B,CAC7C,EAAE,EAAE,QAAQ,EACZ,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,UAAU,GACpB,OAAO,CAAC,OAAO,CAAC,CAiClB;AAED,wBAAgB,uBAAuB,CACnC,EAAE,EAAE,QAAQ,EACZ,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,2BAA2B,GAC1C,IAAI,CAwCN;AAED,MAAM,WAAW,0BAA0B;IACvC,WAAW,EAAE,MAAM,CAAC;IACpB,uBAAuB,EAAE,MAAM,CAAC;IAChC,iBAAiB,EAAE,MAAM,CAAC;IAC1B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,wBAAwB,EAAE,MAAM,CAAC;IACjC,oBAAoB,EAAE,MAAM,CAAC;IAC7B,iBAAiB,EAAE,MAAM,CAAC;CAC7B;AAED,6EAA6E;AAC7E,wBAAgB,6BAA6B,IAAI,0BAA0B,CAoB1E;AAED,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAE9D;AAED,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CA0B5D;AAED,wBAAgB,gCAAgC,IAAI,IAAI,CAavD"}
1
+ {"version":3,"file":"message-index-async.d.ts","sourceRoot":"","sources":["../../../src/features/magic-context/message-index-async.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"message-index.d.ts","sourceRoot":"","sources":["../../../src/features/magic-context/message-index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"message-index.d.ts","sourceRoot":"","sources":["../../../src/features/magic-context/message-index.ts"],"names":[],"mappings":"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"}
@@ -13,6 +13,8 @@ export interface CloneTagRow {
13
13
  toolOwnerMessageId: string | null;
14
14
  }
15
15
  export interface CloneSessionStateFilter {
16
+ /** Require no destination metadata, even if the child has no compartments or tags yet. */
17
+ requireEmptyDestinationMeta?: boolean;
16
18
  resolveBoundaryOrdinal(messageId: string): number | undefined;
17
19
  includeTag(tag: CloneTagRow): boolean;
18
20
  includeMessageId(messageId: string): boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"storage-clone.d.ts","sourceRoot":"","sources":["../../../src/features/magic-context/storage-clone.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAmBpD,MAAM,WAAW,mBAAmB;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,WAAW;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;CACrC;AAED,MAAM,WAAW,uBAAuB;IACpC,sBAAsB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;IAC9D,UAAU,CAAC,GAAG,EAAE,WAAW,GAAG,OAAO,CAAC;IACtC,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC;IAC7C,oEAAoE;IACpE,YAAY,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,MAAM,CAAC;IAC7C,uFAAuF;IACvF,QAAQ,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,KAAK,MAAM,CAAC;IACrE,2EAA2E;IAC3E,wBAAwB,CAAC,EAAE,OAAO,CAAC;IACnC,qEAAqE;IACrE,UAAU,CAAC,EAAE,CAAC,aAAa,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC;IAC3D,qBAAqB,CACjB,QAAQ,EAAE,MAAM,GAAG,IAAI,EACvB,kBAAkB,EAAE,SAAS,mBAAmB,EAAE,GACnD,MAAM,GAAG,IAAI,CAAC;CACpB;AAED,MAAM,WAAW,8BAA8B;IAC3C,IAAI,EAAE,UAAU,GAAG,uBAAuB,CAAC;IAC3C,kBAAkB,EAAE,MAAM,CAAC;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,gBAAgB,EAAE,MAAM,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,qBAAqB,EAAE,OAAO,CAAC;CAClC;AAoYD;;;;GAIG;AACH,wBAAgB,wBAAwB,CACpC,EAAE,EAAE,QAAQ,EACZ,eAAe,EAAE,MAAM,EACvB,oBAAoB,EAAE,MAAM,EAC5B,MAAM,EAAE,uBAAuB,GAChC,8BAA8B,CAqUhC"}
1
+ {"version":3,"file":"storage-clone.d.ts","sourceRoot":"","sources":["../../../src/features/magic-context/storage-clone.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAmBpD,MAAM,WAAW,mBAAmB;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,WAAW;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;CACrC;AAED,MAAM,WAAW,uBAAuB;IACpC,0FAA0F;IAC1F,2BAA2B,CAAC,EAAE,OAAO,CAAC;IACtC,sBAAsB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;IAC9D,UAAU,CAAC,GAAG,EAAE,WAAW,GAAG,OAAO,CAAC;IACtC,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC;IAC7C,oEAAoE;IACpE,YAAY,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,MAAM,CAAC;IAC7C,uFAAuF;IACvF,QAAQ,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,KAAK,MAAM,CAAC;IACrE,2EAA2E;IAC3E,wBAAwB,CAAC,EAAE,OAAO,CAAC;IACnC,qEAAqE;IACrE,UAAU,CAAC,EAAE,CAAC,aAAa,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC;IAC3D,qBAAqB,CACjB,QAAQ,EAAE,MAAM,GAAG,IAAI,EACvB,kBAAkB,EAAE,SAAS,mBAAmB,EAAE,GACnD,MAAM,GAAG,IAAI,CAAC;CACpB;AAED,MAAM,WAAW,8BAA8B;IAC3C,IAAI,EAAE,UAAU,GAAG,uBAAuB,CAAC;IAC3C,kBAAkB,EAAE,MAAM,CAAC;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,gBAAgB,EAAE,MAAM,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,qBAAqB,EAAE,OAAO,CAAC;CAClC;AAoYD;;;;GAIG;AACH,wBAAgB,wBAAwB,CACpC,EAAE,EAAE,QAAQ,EACZ,eAAe,EAAE,MAAM,EACvB,oBAAoB,EAAE,MAAM,EAC5B,MAAM,EAAE,uBAAuB,GAChC,8BAA8B,CAuUhC"}
@@ -157,7 +157,7 @@ export declare function getPersistedToolTagAccounting(db: Database, sessionId: s
157
157
  export declare function getAllStatusTagTokenTotalsFlat(db: Database, sessionId: string, floor?: number, calibration?: {
158
158
  proseRatio: number;
159
159
  toolsRatio: number;
160
- }): {
160
+ }, ownerMessageIds?: readonly string[]): {
161
161
  totals: Map<string, number>;
162
162
  nullMessageIds: Set<string>;
163
163
  };