@cortexkit/opencode-magic-context 0.49.16 → 0.49.17
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/dist/auto-search-worker.js +76 -63
- package/dist/chunk-embedding-write-worker.js +11 -11
- package/dist/{compaction-marker-candidates-v5c6997n.js → compaction-marker-candidates-n4krhat4.js} +2 -2
- package/dist/compaction-marker-candidates-worker.js +2 -2
- package/dist/config/schema/magic-context.d.ts +394 -394
- package/dist/{conflict-warning-hook-znry4j76.js → conflict-warning-hook-4pmz879v.js} +5 -5
- package/dist/{context-3znk23va.js → context-yhetp0kn.js} +294 -144
- package/dist/{embedding-backfill-q4n8dend.js → embedding-backfill-fmz50tsy.js} +11 -11
- package/dist/embedding-worker-process.js +1 -1
- package/dist/embedding-worker.js +4 -4
- package/dist/features/magic-context/compartment-chunk-embedding.d.ts +1 -1
- package/dist/features/magic-context/compartment-chunk-embedding.d.ts.map +1 -1
- package/dist/features/magic-context/git-commits/indexer.d.ts.map +1 -1
- package/dist/features/magic-context/memory/embedding-openai.d.ts.map +1 -1
- package/dist/features/magic-context/memory/project-identity-cache.d.ts +2 -0
- package/dist/features/magic-context/memory/project-identity-cache.d.ts.map +1 -1
- package/dist/features/magic-context/message-index-async.d.ts +1 -1
- package/dist/features/magic-context/message-index-async.d.ts.map +1 -1
- package/dist/features/magic-context/message-index.d.ts +5 -0
- package/dist/features/magic-context/message-index.d.ts.map +1 -1
- package/dist/features/magic-context/search.d.ts +6 -1
- package/dist/features/magic-context/search.d.ts.map +1 -1
- package/dist/features/magic-context/storage-meta-session.d.ts.map +1 -1
- package/dist/features/magic-context/storage-meta-shared.d.ts +2 -2
- package/dist/features/magic-context/storage-meta-shared.d.ts.map +1 -1
- package/dist/features/magic-context/storage-session-tables.d.ts +9 -1
- package/dist/features/magic-context/storage-session-tables.d.ts.map +1 -1
- package/dist/hooks/magic-context/apply-operations.d.ts.map +1 -1
- package/dist/hooks/magic-context/auto-search-deadline.d.ts +2 -1
- package/dist/hooks/magic-context/auto-search-deadline.d.ts.map +1 -1
- package/dist/hooks/magic-context/auto-search-hint.d.ts +3 -0
- package/dist/hooks/magic-context/auto-search-hint.d.ts.map +1 -1
- package/dist/hooks/magic-context/auto-search-runner.d.ts.map +1 -1
- package/dist/hooks/magic-context/auto-search-worker-client.d.ts +10 -2
- package/dist/hooks/magic-context/auto-search-worker-client.d.ts.map +1 -1
- package/dist/hooks/magic-context/compartment-runner-historian.d.ts +2 -0
- package/dist/hooks/magic-context/compartment-runner-historian.d.ts.map +1 -1
- package/dist/hooks/magic-context/historian-host-runner.d.ts.map +1 -1
- package/dist/hooks/magic-context/hook.d.ts.map +1 -1
- package/dist/hooks/magic-context/lkg-recovery-fence.d.ts.map +1 -1
- package/dist/hooks/magic-context/read-session-chunk.d.ts.map +1 -1
- package/dist/hooks/magic-context/system-prompt-diagnostics.d.ts +8 -0
- package/dist/hooks/magic-context/system-prompt-diagnostics.d.ts.map +1 -0
- package/dist/hooks/magic-context/system-prompt-hash.d.ts.map +1 -1
- package/dist/hooks/magic-context/tag-messages.d.ts +6 -1
- package/dist/hooks/magic-context/tag-messages.d.ts.map +1 -1
- package/dist/hooks/magic-context/todo-view.d.ts +2 -2
- package/dist/hooks/magic-context/tool-drop-target.d.ts +3 -2
- package/dist/hooks/magic-context/tool-drop-target.d.ts.map +1 -1
- package/dist/hooks/magic-context/transform-stage-logger.d.ts +3 -0
- package/dist/hooks/magic-context/transform-stage-logger.d.ts.map +1 -1
- package/dist/hooks/magic-context/transform.d.ts +1 -0
- package/dist/hooks/magic-context/transform.d.ts.map +1 -1
- package/dist/{index-9nkg2dzk.js → index-24fezq97.js} +3 -3
- package/dist/{index-a8bvhwqs.js → index-2vxtcb95.js} +32 -3
- package/dist/{index-f71thw8j.js → index-4s3t0nd0.js} +1 -1
- package/dist/{index-kn4t1haw.js → index-4yt7dtf4.js} +450 -227
- package/dist/{index-v9asb16b.js → index-5a1ex6x8.js} +5 -5
- package/dist/{index-fkx2qnvw.js → index-6x57ar45.js} +2 -2
- package/dist/{index-dqe8pq4x.js → index-a6mc0v4d.js} +6 -3
- package/dist/{index-ayym1x7f.js → index-a7c4r5re.js} +145 -736
- package/dist/{index-ek1yxvvz.js → index-aabzay3h.js} +165 -46
- package/dist/{index-hehkf6zm.js → index-b5vqckbw.js} +12 -6
- package/dist/{v2/server-wafzvyhg.js → index-beht37jy.js} +8 -0
- package/dist/{index-7b2cfmaz.js → index-bjcnntmz.js} +2 -2
- package/dist/{index-hqkczed7.js → index-c5pytzne.js} +22 -2
- package/dist/{index-p4vde22c.js → index-cwzfcbtq.js} +956 -77
- package/dist/{index-cj9g0j7a.js → index-fb2qxs2y.js} +7 -7
- package/dist/{index-nd7m2a5a.js → index-hqhm3wke.js} +25 -3
- package/dist/{index-5mwk1nek.js → index-jn12fvvh.js} +1 -1
- package/dist/{index-n6m03s3n.js → index-ke416mdc.js} +1 -1
- package/dist/{index-6a6dq53h.js → index-kmdj7dsq.js} +5 -5
- package/dist/{index-mtw9e71a.js → index-kq82mtg0.js} +2 -2
- package/dist/{index-n78avt2p.js → index-n37sebck.js} +1 -1
- package/dist/{index-v63beg1z.js → index-nkpmm9q8.js} +3 -3
- package/dist/{index-j6zw70pf.js → index-p7m7j0cp.js} +24 -16
- package/dist/{index-wk0n1cgt.js → index-qn7xstt2.js} +2 -2
- package/dist/{index-saews2s3.js → index-rr2bb45z.js} +1 -1
- package/dist/{index-7pa32z07.js → index-s734jcsr.js} +1 -1
- package/dist/{index-b17m64g9.js → index-s74zqahq.js} +1 -1
- package/dist/{index-wv9n2zcq.js → index-v8awdgvd.js} +4 -4
- package/dist/{index-4qfy7v57.js → index-vrzjhftj.js} +31 -20
- package/dist/{index-qrahzcqv.js → index-ze7mvk54.js} +10 -7
- package/dist/index.js +39 -39
- package/dist/{message-fts-rowid-map-yvx5a9jw.js → message-fts-rowid-map-17s0dfn4.js} +5 -3
- package/dist/{message-index-bounded-6th8djy9.js → message-index-bounded-1633vc7f.js} +17 -17
- package/dist/{message-index-t4pz7akd.js → message-index-dprebmtt.js} +13 -13
- package/dist/{message-time-backfill-8egzkd3z.js → message-time-backfill-73mmm76q.js} +1 -1
- package/dist/migration-worker.js +8 -8
- package/dist/plugin/dream-timer.d.ts +11 -0
- package/dist/plugin/dream-timer.d.ts.map +1 -1
- package/dist/plugin/hooks/create-session-hooks.d.ts.map +1 -1
- package/dist/{project-embedding-registry-2dea0a77.js → project-embedding-registry-z74mhqkf.js} +10 -10
- package/dist/raw-ordinal-warmup-worker.js +10 -10
- package/dist/{read-session-chunk-4pwqxm5a.js → read-session-chunk-4zp09ejb.js} +7 -7
- package/dist/{read-session-raw-5ar8se5v.js → read-session-raw-rsc8c7qy.js} +2 -2
- package/dist/{recomp-orchestrator-tjcaj5x7.js → recomp-orchestrator-z3ecszx6.js} +24 -24
- package/dist/{search-rb01n29x.js → search-6mee3vty.js} +20 -20
- package/dist/{search-archive-02jws7hw.js → search-archive-znyy44ve.js} +8 -8
- package/dist/{send-session-notification-2x9edkrp.js → send-session-notification-6ve0e8p4.js} +4 -4
- package/dist/shared/historian-cache.d.ts +8 -0
- package/dist/shared/historian-cache.d.ts.map +1 -0
- package/dist/shared/model-suggestion-retry.d.ts +2 -0
- package/dist/shared/model-suggestion-retry.d.ts.map +1 -1
- package/dist/shared/rpc-discovery-cleanup.d.ts +3 -0
- package/dist/shared/rpc-discovery-cleanup.d.ts.map +1 -0
- package/dist/shared/rpc-server.d.ts +2 -0
- package/dist/shared/rpc-server.d.ts.map +1 -1
- package/dist/shared/search-text.d.ts +8 -0
- package/dist/shared/search-text.d.ts.map +1 -0
- package/dist/shared/sqlite.d.ts +4 -2
- package/dist/shared/sqlite.d.ts.map +1 -1
- package/dist/shared/storage-file-mutex.d.ts.map +1 -1
- package/dist/shared/subagent-runner.d.ts +2 -0
- package/dist/shared/subagent-runner.d.ts.map +1 -1
- package/dist/shared/system-directive.d.ts +2 -0
- package/dist/shared/system-directive.d.ts.map +1 -1
- package/dist/{sqlite-4pqyynrs.js → sqlite-zf72c52d.js} +1 -1
- package/dist/{storage-memory-j3v3hc83.js → storage-memory-y3qmy00r.js} +2 -2
- package/dist/{storage-tags-4z1w27xa.js → storage-tags-8qns3012.js} +8 -4
- package/dist/{transform-postprocess-phase-xaw5c3xp.js → transform-postprocess-phase-3ydzxa62.js} +24 -24
- package/dist/v2/auto-search-worker.js +76 -63
- package/dist/v2/chunk-embedding-write-worker.js +11 -11
- package/dist/v2/{compaction-marker-candidates-1vqwr3s5.js → compaction-marker-candidates-ebx3388k.js} +2 -2
- package/dist/v2/compaction-marker-candidates-worker.js +2 -2
- package/dist/v2/{context-acw1nhv8.js → context-jn3zpeqh.js} +882 -393
- package/dist/v2/embedding-backfill-7c7yr69y.js +23 -0
- package/dist/v2/embedding-worker-process.js +1 -1
- package/dist/v2/embedding-worker.js +4 -4
- package/dist/v2/fold/native-replay.d.ts +11 -2
- package/dist/v2/fold/native-replay.d.ts.map +1 -1
- package/dist/v2/fold/policy.d.ts.map +1 -1
- package/dist/v2/fold/restore.d.ts.map +1 -1
- package/dist/v2/hooks/context.d.ts.map +1 -1
- package/dist/v2/hooks/hidden-child.d.ts +8 -0
- package/dist/v2/hooks/hidden-child.d.ts.map +1 -1
- package/dist/v2/hooks/types.d.ts +17 -0
- package/dist/v2/hooks/types.d.ts.map +1 -1
- package/dist/v2/{message-fts-rowid-map-8vf0v7cr.js → message-fts-rowid-map-wfx67gfd.js} +5 -3
- package/dist/v2/{message-index-bounded-dsrf49y7.js → message-index-bounded-hpejqyd8.js} +17 -17
- package/dist/v2/{message-index-e6qzw477.js → message-index-pxehjpzx.js} +13 -13
- package/dist/v2/{message-time-backfill-q5pgxf0d.js → message-time-backfill-04t0km1z.js} +1 -1
- package/dist/v2/migration-worker.js +8 -8
- package/dist/v2/{project-embedding-registry-rek75aqw.js → project-embedding-registry-gnkj56xp.js} +10 -10
- package/dist/v2/raw-ordinal-warmup-worker.js +10 -10
- package/dist/v2/{read-session-chunk-7bpygfv2.js → read-session-chunk-zdppn4bj.js} +7 -7
- package/dist/v2/{read-session-raw-pw2n1qgc.js → read-session-raw-yaegtjzh.js} +2 -2
- package/dist/v2/{recomp-orchestrator-hzpgg06e.js → recomp-orchestrator-cmqnfpp3.js} +24 -24
- package/dist/v2/{search-sf2vg5pk.js → search-66842dya.js} +20 -20
- package/dist/v2/{search-archive-fn4wy8sx.js → search-archive-gfh11vs0.js} +8 -8
- package/dist/v2/{send-session-notification-hmr7q0nt.js → send-session-notification-3pxn658x.js} +4 -4
- package/dist/v2/{server-785mb90s.js → server-1wy7b9de.js} +6 -3
- package/dist/v2/{server-g59aatsz.js → server-3rhpvy84.js} +956 -77
- package/dist/v2/{server-kqpawe1a.js → server-46neh5fa.js} +12 -6
- package/dist/v2/{server-rrqpvwqd.js → server-6tmj0s7j.js} +2 -2
- package/dist/v2/{server-kr2kc9dz.js → server-8by8qfec.js} +10 -7
- package/dist/v2/{server-vbe4se57.js → server-a9xqj88f.js} +1 -1
- package/dist/{index-wafzvyhg.js → v2/server-beht37jy.js} +8 -0
- package/dist/v2/{server-05xjtq6c.js → server-d04vrx0j.js} +1 -1
- package/dist/v2/{server-zyw55ygv.js → server-ec4ca92p.js} +5 -5
- package/dist/v2/{server-6fyp0v67.js → server-fw7wrk01.js} +145 -737
- package/dist/v2/{server-zs8d0s3b.js → server-g3qma5c0.js} +1 -1
- package/dist/v2/{server-00hx04yn.js → server-gpvay0xz.js} +2 -2
- package/dist/v2/{server-r9gjxcte.js → server-gtfhttbr.js} +7 -7
- package/dist/v2/{server-gha9x4qq.js → server-h1v0pyxb.js} +2 -2
- package/dist/v2/{server-hgg55hde.js → server-hy3d3vsx.js} +1 -1
- package/dist/v2/{server-1hcbw661.js → server-kh7dpa1a.js} +24 -16
- package/dist/v2/{server-vgpab6rd.js → server-my7k4eds.js} +4 -4
- package/dist/v2/{server-d8tj10db.js → server-n1prf1g6.js} +1 -1
- package/dist/v2/{server-n78avt2p.js → server-n37sebck.js} +1 -1
- package/dist/v2/{server-y5pznjt9.js → server-nj659894.js} +5 -5
- package/dist/v2/{server-e3ftpk7v.js → server-rmygf5pn.js} +32 -3
- package/dist/v2/{server-0ppsweh6.js → server-tgnbmwah.js} +22 -2
- package/dist/v2/{server-n5q841qn.js → server-vsw8tmm6.js} +31 -20
- package/dist/v2/{server-6714jebr.js → server-xj136kt8.js} +1 -1
- package/dist/v2/{server-0mzjjw3s.js → server-zyzawhdw.js} +25 -3
- package/dist/v2/{server-aavz8pm6.js → server-zzkj2fch.js} +3 -3
- package/dist/v2/server.js +4 -4
- package/dist/v2/{sqlite-4pqyynrs.js → sqlite-zf72c52d.js} +1 -1
- package/dist/v2/{storage-memory-j3v3hc83.js → storage-memory-y3qmy00r.js} +2 -2
- package/dist/v2/{storage-tags-hkwtbp3g.js → storage-tags-1h8k6ra9.js} +8 -4
- package/dist/v2/store-reader.d.ts +2 -0
- package/dist/v2/store-reader.d.ts.map +1 -1
- package/dist/v2/{wrapup-orchestrator-x4xj1782.js → wrapup-orchestrator-xs8redz9.js} +24 -24
- package/dist/wrapup-orchestrator-j7d7ry5b.js +48 -0
- package/package.json +1 -1
- package/src/config/latch-permanence-guard.test.ts +4 -0
- package/src/shared/historian-cache.test.ts +69 -0
- package/src/shared/historian-cache.ts +55 -0
- package/src/shared/model-suggestion-retry.ts +2 -0
- package/src/shared/rpc-discovery-cleanup.test.ts +57 -0
- package/src/shared/rpc-discovery-cleanup.ts +57 -0
- package/src/shared/rpc-server.ts +36 -13
- package/src/shared/search-text.test.ts +47 -0
- package/src/shared/search-text.ts +63 -0
- package/src/shared/sqlite.test.ts +56 -0
- package/src/shared/sqlite.ts +51 -2
- package/src/shared/storage-file-mutex-review.test.ts +22 -2
- package/src/shared/storage-file-mutex.ts +11 -1
- package/src/shared/subagent-runner.ts +2 -0
- package/src/shared/system-directive.ts +19 -1
- package/src/shared/tag-transcript.ts +12 -4
- package/dist/v2/embedding-backfill-jyd6492b.js +0 -23
- package/dist/wrapup-orchestrator-vj2tbp22.js +0 -48
|
@@ -14,10 +14,6 @@ import {
|
|
|
14
14
|
getUncoveredCompartmentEndsThrough,
|
|
15
15
|
providerResponseFailed,
|
|
16
16
|
isSuccessfulProviderCompletion,
|
|
17
|
-
gaDatabasePath,
|
|
18
|
-
RAW_MESSAGE_TYPES,
|
|
19
|
-
V2StoreReaderPool,
|
|
20
|
-
V2StoreReader,
|
|
21
17
|
getOrCreateSessionMeta,
|
|
22
18
|
updateSessionMeta,
|
|
23
19
|
markSessionCleanupPending,
|
|
@@ -58,7 +54,7 @@ import {
|
|
|
58
54
|
rebaseSessionCoordinatesAsync,
|
|
59
55
|
resolveOpenCodeProtectedTailBoundary,
|
|
60
56
|
getActiveCompartmentRun
|
|
61
|
-
} from "./index-
|
|
57
|
+
} from "./index-a7c4r5re.js";
|
|
62
58
|
import"./index-sd3egckz.js";
|
|
63
59
|
import {
|
|
64
60
|
getHarness2
|
|
@@ -147,7 +143,7 @@ import {
|
|
|
147
143
|
applyJsonSchemaParameterDescriptions,
|
|
148
144
|
MagicContextRpcServer,
|
|
149
145
|
subagentTemperature
|
|
150
|
-
} from "./index-
|
|
146
|
+
} from "./index-aabzay3h.js";
|
|
151
147
|
import {
|
|
152
148
|
resolveHistorianModel2
|
|
153
149
|
} from "./index-8cd2j99z.js";
|
|
@@ -162,12 +158,12 @@ import {
|
|
|
162
158
|
openDatabaseAsync,
|
|
163
159
|
isDatabasePersisted,
|
|
164
160
|
getDatabasePersistenceError
|
|
165
|
-
} from "./index-
|
|
161
|
+
} from "./index-fb2qxs2y.js";
|
|
166
162
|
import {
|
|
167
163
|
setHomeProjectPermission,
|
|
168
164
|
resolveProjectIdentityForSession,
|
|
169
165
|
scheduleAfterBootQuiet
|
|
170
|
-
} from "./index-
|
|
166
|
+
} from "./index-2vxtcb95.js";
|
|
171
167
|
import {
|
|
172
168
|
needsBlockedRead,
|
|
173
169
|
markHostUnservedRow,
|
|
@@ -178,6 +174,7 @@ import {
|
|
|
178
174
|
assertExecutableToolInput,
|
|
179
175
|
getProtectionWindowForSession,
|
|
180
176
|
clearCachedM0M1,
|
|
177
|
+
clearCachedM0,
|
|
181
178
|
getChannel2NudgeState,
|
|
182
179
|
claimChannel2NudgeState,
|
|
183
180
|
casChannel2NudgeClaim,
|
|
@@ -199,36 +196,40 @@ import {
|
|
|
199
196
|
cleanUserText2,
|
|
200
197
|
readRawSessionMessageIdOrdinalsForRange2,
|
|
201
198
|
readRawSessionMessageOrdinalById2
|
|
202
|
-
} from "./index-
|
|
199
|
+
} from "./index-p7m7j0cp.js";
|
|
203
200
|
import {
|
|
204
201
|
invalidateAutoEmbedSession,
|
|
205
202
|
clearEmbedSessionState
|
|
206
|
-
} from "./index-
|
|
203
|
+
} from "./index-ze7mvk54.js";
|
|
207
204
|
import {
|
|
208
205
|
hasMeaningfulUserText2,
|
|
209
206
|
preloadTokenizer,
|
|
210
207
|
estimateTokens
|
|
211
|
-
} from "./index-
|
|
212
|
-
import"./index-
|
|
208
|
+
} from "./index-c5pytzne.js";
|
|
209
|
+
import"./index-6x57ar45.js";
|
|
213
210
|
import {
|
|
214
211
|
inRootAsyncContext2,
|
|
215
212
|
withSqliteTransformPass2,
|
|
216
213
|
withoutSqliteTransformPass2,
|
|
217
214
|
isTransientSqliteError2,
|
|
218
215
|
withAsyncPrivilegedWriter2
|
|
219
|
-
} from "./index-
|
|
216
|
+
} from "./index-beht37jy.js";
|
|
220
217
|
import"./index-v0p37hm2.js";
|
|
221
|
-
import"./index-
|
|
222
|
-
import"./index-
|
|
218
|
+
import"./index-s734jcsr.js";
|
|
219
|
+
import"./index-a6mc0v4d.js";
|
|
223
220
|
import {
|
|
224
221
|
deleteChunkEmbedBackoffForSession
|
|
225
|
-
} from "./index-
|
|
222
|
+
} from "./index-b5vqckbw.js";
|
|
226
223
|
import"./index-nj7yykkx.js";
|
|
227
224
|
import {
|
|
228
225
|
BoundedSessionMap,
|
|
229
226
|
advanceSessionActivity,
|
|
230
|
-
backfillSessionActivity
|
|
231
|
-
|
|
227
|
+
backfillSessionActivity,
|
|
228
|
+
gaDatabasePath,
|
|
229
|
+
RAW_MESSAGE_TYPES,
|
|
230
|
+
V2StoreReaderPool,
|
|
231
|
+
V2StoreReader
|
|
232
|
+
} from "./index-cwzfcbtq.js";
|
|
232
233
|
import"./index-bp5083x2.js";
|
|
233
234
|
import"./index-1zx87sdm.js";
|
|
234
235
|
import {
|
|
@@ -237,20 +238,20 @@ import {
|
|
|
237
238
|
isDroppedToolOutput,
|
|
238
239
|
evaluateChannel2,
|
|
239
240
|
buildChannel2Reminder
|
|
240
|
-
} from "./index-
|
|
241
|
+
} from "./index-hqhm3wke.js";
|
|
241
242
|
import"./index-58e3y90n.js";
|
|
242
|
-
import"./index-
|
|
243
|
+
import"./index-kq82mtg0.js";
|
|
243
244
|
import {
|
|
244
245
|
getCurrentToolSetHash,
|
|
245
246
|
recordToolDefinition
|
|
246
|
-
} from "./index-
|
|
247
|
+
} from "./index-ke416mdc.js";
|
|
247
248
|
import"./index-fr0wbhdn.js";
|
|
248
|
-
import"./index-
|
|
249
|
+
import"./index-qn7xstt2.js";
|
|
249
250
|
import"./index-fb3zxn06.js";
|
|
250
251
|
import {
|
|
251
252
|
renderUserFacingFailure,
|
|
252
253
|
userFacingFailureCode
|
|
253
|
-
} from "./index-
|
|
254
|
+
} from "./index-v8awdgvd.js";
|
|
254
255
|
import {
|
|
255
256
|
createTagger,
|
|
256
257
|
cavemanWordRulesForLanguage,
|
|
@@ -259,29 +260,29 @@ import {
|
|
|
259
260
|
EmergencyFailClosedError,
|
|
260
261
|
DegradedPassRefusalError,
|
|
261
262
|
isSyntheticHeadMessage2
|
|
262
|
-
} from "./index-
|
|
263
|
-
import"./index-
|
|
263
|
+
} from "./index-4yt7dtf4.js";
|
|
264
|
+
import"./index-4s3t0nd0.js";
|
|
264
265
|
import"./index-qt1qqasc.js";
|
|
265
|
-
import"./index-
|
|
266
|
+
import"./index-rr2bb45z.js";
|
|
266
267
|
import"./index-4dhv7mqz.js";
|
|
267
|
-
import"./index-
|
|
268
|
-
import"./index-
|
|
269
|
-
import"./index-
|
|
268
|
+
import"./index-bjcnntmz.js";
|
|
269
|
+
import"./index-24fezq97.js";
|
|
270
|
+
import"./index-n37sebck.js";
|
|
270
271
|
import {
|
|
271
272
|
pushNotification2,
|
|
272
273
|
isTuiConnected2
|
|
273
274
|
} from "./index-x8a7jmkh.js";
|
|
274
275
|
import"./index-y9f76s3f.js";
|
|
275
|
-
import"./index-
|
|
276
|
-
import"./index-
|
|
277
|
-
import"./index-
|
|
276
|
+
import"./index-s74zqahq.js";
|
|
277
|
+
import"./index-vrzjhftj.js";
|
|
278
|
+
import"./index-nkpmm9q8.js";
|
|
278
279
|
import"./index-gp3kcpc4.js";
|
|
279
280
|
import {
|
|
280
281
|
detectConflicts
|
|
281
282
|
} from "./index-kee4kn5j.js";
|
|
282
283
|
import"./index-fmsr7v69.js";
|
|
283
284
|
import"./index-kaqs6h31.js";
|
|
284
|
-
import"./index-
|
|
285
|
+
import"./index-kmdj7dsq.js";
|
|
285
286
|
import {
|
|
286
287
|
isDreamerRunnable,
|
|
287
288
|
isSmartNoteSurfaceAvailable,
|
|
@@ -295,6 +296,9 @@ import {
|
|
|
295
296
|
} from "./index-y8v6yerm.js";
|
|
296
297
|
import"./index-k29z4aqh.js";
|
|
297
298
|
|
|
299
|
+
// src/v2/hooks/context.ts
|
|
300
|
+
import { setTimeout as delay } from "node:timers/promises";
|
|
301
|
+
|
|
298
302
|
// src/hooks/magic-context/history-boundary-repair.ts
|
|
299
303
|
function readBaseline(db, sessionId) {
|
|
300
304
|
const row = db.prepare("SELECT cached_m0_bytes IS NOT NULL AS hasM0, cached_m0_last_baseline_end_message_id AS boundary FROM session_meta WHERE session_id = ?").get(sessionId);
|
|
@@ -1631,24 +1635,31 @@ ${data.output?.output ?? ""}`
|
|
|
1631
1635
|
const sameModel = sameProvider && previousModel?.id === model.id;
|
|
1632
1636
|
const reuse = sameModel && data.error === undefined;
|
|
1633
1637
|
const metadata = (state) => state === undefined ? undefined : { [model.providerID]: state };
|
|
1638
|
+
const reasoningInterrupted = data.content?.some((part) => part.type === "reasoning" && part.time !== undefined && part.time.completed === undefined);
|
|
1634
1639
|
const content = [];
|
|
1635
1640
|
const results = [];
|
|
1636
1641
|
for (const part of data.content ?? []) {
|
|
1642
|
+
let native = "native" in part ? part.native : part.type === "tool" ? part.providerState : part.state;
|
|
1643
|
+
if (part.type === "tool" && part.providerResultState !== null && typeof part.providerResultState === "object" && !Array.isArray(part.providerResultState))
|
|
1644
|
+
native = {
|
|
1645
|
+
...native !== null && typeof native === "object" && !Array.isArray(native) ? native : {},
|
|
1646
|
+
...part.providerResultState
|
|
1647
|
+
};
|
|
1637
1648
|
if (part.type === "text") {
|
|
1638
1649
|
if (part.text !== "")
|
|
1639
1650
|
content.push({
|
|
1640
1651
|
type: "text",
|
|
1641
1652
|
text: part.text,
|
|
1642
|
-
providerMetadata: reuse ? metadata(
|
|
1653
|
+
providerMetadata: reuse ? metadata(native) : undefined
|
|
1643
1654
|
});
|
|
1644
1655
|
continue;
|
|
1645
1656
|
}
|
|
1646
1657
|
if (part.type === "reasoning") {
|
|
1647
|
-
if (part.text !== "" || reuse &&
|
|
1658
|
+
if (part.text !== "" || reuse && !reasoningInterrupted && native !== undefined)
|
|
1648
1659
|
content.push({
|
|
1649
|
-
type:
|
|
1660
|
+
type: data.error === undefined && !reasoningInterrupted ? "reasoning" : "text",
|
|
1650
1661
|
text: part.text,
|
|
1651
|
-
providerMetadata: reuse ? metadata(
|
|
1662
|
+
providerMetadata: reuse && !reasoningInterrupted ? metadata(native) : undefined
|
|
1652
1663
|
});
|
|
1653
1664
|
continue;
|
|
1654
1665
|
}
|
|
@@ -1667,7 +1678,7 @@ ${data.output?.output ?? ""}`
|
|
|
1667
1678
|
name: part.name,
|
|
1668
1679
|
input,
|
|
1669
1680
|
providerExecuted: part.executed,
|
|
1670
|
-
providerMetadata: toolReuse ? metadata(
|
|
1681
|
+
providerMetadata: toolReuse ? metadata(native) : undefined
|
|
1671
1682
|
});
|
|
1672
1683
|
if (!completed)
|
|
1673
1684
|
continue;
|
|
@@ -1678,7 +1689,7 @@ ${data.output?.output ?? ""}`
|
|
|
1678
1689
|
id: part.id,
|
|
1679
1690
|
name: part.name,
|
|
1680
1691
|
providerExecuted: part.executed,
|
|
1681
|
-
providerMetadata:
|
|
1692
|
+
providerMetadata: (part.executed === true ? sameProvider : reuse) ? metadata(native) : undefined,
|
|
1682
1693
|
result: state.status === "error" ? { error: state.error, content: toolContent } : single?.type === "text" ? { type: "text", value: single.text } : { type: "content", value: toolContent },
|
|
1683
1694
|
...state.status === "error" ? { resultType: "error" } : {}
|
|
1684
1695
|
};
|
|
@@ -1706,13 +1717,50 @@ function copyNativeInput(messages) {
|
|
|
1706
1717
|
return copies;
|
|
1707
1718
|
}
|
|
1708
1719
|
function isLocalCheckpoint(row) {
|
|
1709
|
-
return row.type === "compaction" && row.data.status === "completed" && row.data.providerContext === undefined;
|
|
1720
|
+
return row.type === "compaction" && row.data.status === "completed" && row.data.providerContext === undefined && row.data.native?.messages === undefined;
|
|
1721
|
+
}
|
|
1722
|
+
function isAdmittedLocalCheckpoint(storage, sessionID, cut) {
|
|
1723
|
+
if (!isLocalCheckpoint(cut) || cut.session_id !== sessionID)
|
|
1724
|
+
return false;
|
|
1725
|
+
const admission = storage.admission(sessionID, cut.id);
|
|
1726
|
+
if (!admission?.payload || admission.digest !== foldDigest(admission.payload))
|
|
1727
|
+
return false;
|
|
1728
|
+
try {
|
|
1729
|
+
const snapshot = JSON.parse(admission.payload);
|
|
1730
|
+
return snapshot.source === storage.sourceID && snapshot.sessionID === sessionID && snapshot.admissionID === cut.id && snapshot.summary === cut.data.summary;
|
|
1731
|
+
} catch {
|
|
1732
|
+
return false;
|
|
1733
|
+
}
|
|
1710
1734
|
}
|
|
1711
1735
|
var conversational = (row) => RAW_MESSAGE_TYPES.includes(row.type) || row.type === "location-switched";
|
|
1736
|
+
var historyDigest = (reader, sessionID, through) => foldDigest(JSON.stringify(reader.range(sessionID, -1, through).filter(conversational)));
|
|
1737
|
+
var admissionKey = (sessionID) => `native-fold/v2/${encodeURIComponent(sessionID)}`;
|
|
1738
|
+
async function forgetNativeFoldProvenance(storage, sessionID, legacyOnly = false) {
|
|
1739
|
+
const remove = async (key) => {
|
|
1740
|
+
if (storage.remove)
|
|
1741
|
+
await storage.remove(key);
|
|
1742
|
+
else
|
|
1743
|
+
await storage.set(key, null);
|
|
1744
|
+
};
|
|
1745
|
+
if (!legacyOnly)
|
|
1746
|
+
await remove(admissionKey(sessionID));
|
|
1747
|
+
if (!storage.scan)
|
|
1748
|
+
return;
|
|
1749
|
+
let after;
|
|
1750
|
+
do {
|
|
1751
|
+
const page = await storage.scan({ prefix: "native-fold/v1/", after, limit: 100 });
|
|
1752
|
+
for (const { key } of page.entries) {
|
|
1753
|
+
if (key.slice("native-fold/v1/".length).split("/").slice(1).join("/") === sessionID)
|
|
1754
|
+
await remove(key);
|
|
1755
|
+
}
|
|
1756
|
+
after = page.next;
|
|
1757
|
+
} while (after);
|
|
1758
|
+
}
|
|
1712
1759
|
|
|
1713
1760
|
class NativeFoldReplay {
|
|
1714
1761
|
storage;
|
|
1715
1762
|
openReader;
|
|
1763
|
+
admissions;
|
|
1716
1764
|
changed = new Set;
|
|
1717
1765
|
dirty = new Set;
|
|
1718
1766
|
unavailable = new Set;
|
|
@@ -1720,9 +1768,11 @@ class NativeFoldReplay {
|
|
|
1720
1768
|
metadataThrough = new Map;
|
|
1721
1769
|
loaded = new Map;
|
|
1722
1770
|
sources = new Map;
|
|
1723
|
-
|
|
1771
|
+
staleHeads = new Set;
|
|
1772
|
+
constructor(storage, openReader, admissions) {
|
|
1724
1773
|
this.storage = storage;
|
|
1725
1774
|
this.openReader = openReader;
|
|
1775
|
+
this.admissions = admissions;
|
|
1726
1776
|
storage.onEvict((sessionID) => this.clear(sessionID));
|
|
1727
1777
|
}
|
|
1728
1778
|
account(sessionID) {
|
|
@@ -1761,6 +1811,51 @@ class NativeFoldReplay {
|
|
|
1761
1811
|
async baseline(sessionID) {
|
|
1762
1812
|
return this.tail(sessionID)?.baseline;
|
|
1763
1813
|
}
|
|
1814
|
+
admissionKey(sessionID) {
|
|
1815
|
+
return admissionKey(sessionID);
|
|
1816
|
+
}
|
|
1817
|
+
async removeAdmission(key) {
|
|
1818
|
+
if (this.admissions?.remove)
|
|
1819
|
+
await this.admissions.remove(key);
|
|
1820
|
+
else
|
|
1821
|
+
await this.admissions?.set(key, null);
|
|
1822
|
+
}
|
|
1823
|
+
async removeLegacyAdmissions(sessionID) {
|
|
1824
|
+
if (this.admissions)
|
|
1825
|
+
await forgetNativeFoldProvenance(this.admissions, sessionID, true);
|
|
1826
|
+
}
|
|
1827
|
+
async admits(sessionID, cut, reader) {
|
|
1828
|
+
if (!isLocalCheckpoint(cut) || cut.session_id !== sessionID)
|
|
1829
|
+
return false;
|
|
1830
|
+
if (isAdmittedLocalCheckpoint(this.storage, sessionID, cut))
|
|
1831
|
+
return true;
|
|
1832
|
+
if (!this.admissions)
|
|
1833
|
+
return false;
|
|
1834
|
+
try {
|
|
1835
|
+
const source = reader.hostIdentity();
|
|
1836
|
+
const saved = await this.admissions.get(this.admissionKey(sessionID));
|
|
1837
|
+
if (!saved?.payload || saved.digest !== foldDigest(saved.payload))
|
|
1838
|
+
return false;
|
|
1839
|
+
const snapshot = JSON.parse(saved.payload);
|
|
1840
|
+
if (snapshot.sourceDigest !== foldDigest(source) || snapshot.sessionID !== sessionID || snapshot.admissionID !== cut.id || snapshot.summaryDigest !== foldDigest(cut.data.summary ?? ""))
|
|
1841
|
+
return false;
|
|
1842
|
+
if (snapshot.historyDigest !== historyDigest(reader, sessionID, cut.seq - 1)) {
|
|
1843
|
+
this.staleHeads.add(sessionID);
|
|
1844
|
+
this.invalidate(sessionID);
|
|
1845
|
+
await this.removeAdmission(this.admissionKey(sessionID));
|
|
1846
|
+
return false;
|
|
1847
|
+
}
|
|
1848
|
+
await this.storage.supply(sessionID, cut.id, JSON.stringify({
|
|
1849
|
+
source: this.storage.sourceID,
|
|
1850
|
+
sessionID,
|
|
1851
|
+
admissionID: cut.id,
|
|
1852
|
+
summary: cut.data.summary
|
|
1853
|
+
}));
|
|
1854
|
+
return true;
|
|
1855
|
+
} catch {
|
|
1856
|
+
return false;
|
|
1857
|
+
}
|
|
1858
|
+
}
|
|
1764
1859
|
rendered(row, model) {
|
|
1765
1860
|
return restoreRow(row, model, hostUsesMediaAssets() ? {
|
|
1766
1861
|
asset: hostMediaAsset,
|
|
@@ -1838,6 +1933,7 @@ class NativeFoldReplay {
|
|
|
1838
1933
|
this.loaded.set(draft.sessionID, through);
|
|
1839
1934
|
this.unavailable.delete(draft.sessionID);
|
|
1840
1935
|
this.changed.delete(draft.sessionID);
|
|
1936
|
+
this.staleHeads.delete(draft.sessionID);
|
|
1841
1937
|
} finally {
|
|
1842
1938
|
reader.close();
|
|
1843
1939
|
}
|
|
@@ -1864,7 +1960,8 @@ class NativeFoldReplay {
|
|
|
1864
1960
|
async supplyHeld(args) {
|
|
1865
1961
|
const { draft, reader, summary } = args;
|
|
1866
1962
|
const tail = this.tail(draft.sessionID);
|
|
1867
|
-
const
|
|
1963
|
+
const running = reader.latestRunningCompaction(draft.sessionID);
|
|
1964
|
+
const id = running?.id;
|
|
1868
1965
|
if (!id || !tail || tail.model !== `${draft.model.providerID}/${draft.model.id}`)
|
|
1869
1966
|
return false;
|
|
1870
1967
|
const through = reader.latestSequence(draft.sessionID);
|
|
@@ -1888,6 +1985,21 @@ class NativeFoldReplay {
|
|
|
1888
1985
|
summary
|
|
1889
1986
|
};
|
|
1890
1987
|
await this.storage.supply(draft.sessionID, id, JSON.stringify(snapshot));
|
|
1988
|
+
if (this.admissions) {
|
|
1989
|
+
const provenance = {
|
|
1990
|
+
sourceDigest: foldDigest(reader.hostIdentity()),
|
|
1991
|
+
sessionID: draft.sessionID,
|
|
1992
|
+
admissionID: id,
|
|
1993
|
+
summaryDigest: foldDigest(summary),
|
|
1994
|
+
historyDigest: historyDigest(reader, draft.sessionID, (running?.seq ?? through) - 1)
|
|
1995
|
+
};
|
|
1996
|
+
const payload = JSON.stringify(provenance);
|
|
1997
|
+
await this.admissions.set(this.admissionKey(draft.sessionID), {
|
|
1998
|
+
payload,
|
|
1999
|
+
digest: foldDigest(payload)
|
|
2000
|
+
});
|
|
2001
|
+
await this.removeLegacyAdmissions(draft.sessionID);
|
|
2002
|
+
}
|
|
1891
2003
|
return true;
|
|
1892
2004
|
}
|
|
1893
2005
|
async restore(sessionID, cut, model, options = {}) {
|
|
@@ -1972,6 +2084,9 @@ class NativeFoldReplay {
|
|
|
1972
2084
|
sourceChanged(sessionID) {
|
|
1973
2085
|
return this.changed.has(sessionID);
|
|
1974
2086
|
}
|
|
2087
|
+
needsHeadRebuild(sessionID) {
|
|
2088
|
+
return this.staleHeads.has(sessionID);
|
|
2089
|
+
}
|
|
1975
2090
|
clear(sessionID) {
|
|
1976
2091
|
this.sources.delete(sessionID);
|
|
1977
2092
|
this.metadata.delete(sessionID);
|
|
@@ -1980,8 +2095,11 @@ class NativeFoldReplay {
|
|
|
1980
2095
|
this.unavailable.delete(sessionID);
|
|
1981
2096
|
this.dirty.delete(sessionID);
|
|
1982
2097
|
this.changed.delete(sessionID);
|
|
2098
|
+
this.staleHeads.delete(sessionID);
|
|
1983
2099
|
}
|
|
1984
2100
|
async forget(sessionID) {
|
|
2101
|
+
if (this.admissions)
|
|
2102
|
+
await forgetNativeFoldProvenance(this.admissions, sessionID);
|
|
1985
2103
|
await this.storage.forget(sessionID);
|
|
1986
2104
|
}
|
|
1987
2105
|
}
|
|
@@ -1996,11 +2114,7 @@ class HostFoldPolicy {
|
|
|
1996
2114
|
this.deps = deps;
|
|
1997
2115
|
}
|
|
1998
2116
|
owned(sessionID, cut, id) {
|
|
1999
|
-
|
|
2000
|
-
if (!isLocalCheckpoint(cut) || cut.id !== id || !row?.payload || row.digest !== foldDigest(row.payload))
|
|
2001
|
-
return false;
|
|
2002
|
-
const snapshot = JSON.parse(row.payload);
|
|
2003
|
-
return snapshot.summary === cut.data.summary && snapshot.source === this.deps.storage.sourceID && snapshot.sessionID === sessionID && snapshot.admissionID === id;
|
|
2117
|
+
return cut.id === id && isAdmittedLocalCheckpoint(this.deps.storage, sessionID, cut);
|
|
2004
2118
|
}
|
|
2005
2119
|
async idle(sessionID) {
|
|
2006
2120
|
const { storage, session, threshold } = this.deps;
|
|
@@ -4677,7 +4791,7 @@ async function registerContext(context) {
|
|
|
4677
4791
|
}
|
|
4678
4792
|
const folds = new FoldOwner(context.storage);
|
|
4679
4793
|
const nativeFoldMemory = !compactionOff && process.env.MC_OC2_INVISIBLE_FOLD === "1" ? nativeFoldCache(() => storage.require()) : undefined;
|
|
4680
|
-
const nativeFoldReplay = nativeFoldMemory ? new NativeFoldReplay(nativeFoldMemory, () => openStoreReader()) : undefined;
|
|
4794
|
+
const nativeFoldReplay = nativeFoldMemory ? new NativeFoldReplay(nativeFoldMemory, () => openStoreReader(), context.storage) : undefined;
|
|
4681
4795
|
setOutputReserveConfig(config.output_reserve);
|
|
4682
4796
|
const queriedModels = new Set;
|
|
4683
4797
|
const rawLimits = new Map;
|
|
@@ -4729,6 +4843,7 @@ async function registerContext(context) {
|
|
|
4729
4843
|
memorySyncRequestedSessions: rustMemorySyncRequestedSessions
|
|
4730
4844
|
}) : undefined;
|
|
4731
4845
|
const hiddenChildHook = new HiddenChildHook;
|
|
4846
|
+
await context.session.hook("http.request", (draft) => hiddenChildHook.cacheRequest(draft));
|
|
4732
4847
|
const tools = db && isDatabasePersisted(db) ? await registerTools(context, db, config, moduleToolBackends?.backends, (id) => hiddenChildHook.owns(id)) : undefined;
|
|
4733
4848
|
const usage = new Map;
|
|
4734
4849
|
const generateReplay = new V2GenerateReplay;
|
|
@@ -5105,87 +5220,114 @@ async function registerContext(context) {
|
|
|
5105
5220
|
}) : undefined;
|
|
5106
5221
|
const usageController = new AbortController;
|
|
5107
5222
|
const usageDone = (async () => {
|
|
5108
|
-
|
|
5109
|
-
|
|
5110
|
-
|
|
5111
|
-
|
|
5112
|
-
const
|
|
5113
|
-
|
|
5114
|
-
|
|
5115
|
-
|
|
5116
|
-
|
|
5117
|
-
|
|
5118
|
-
|
|
5119
|
-
|
|
5120
|
-
|
|
5121
|
-
|
|
5122
|
-
|
|
5123
|
-
|
|
5124
|
-
|
|
5125
|
-
|
|
5126
|
-
|
|
5127
|
-
|
|
5128
|
-
|
|
5223
|
+
let retry = 0;
|
|
5224
|
+
while (!usageController.signal.aborted) {
|
|
5225
|
+
const subscribedAt = Date.now();
|
|
5226
|
+
try {
|
|
5227
|
+
for await (const value of context.event.subscribe({
|
|
5228
|
+
signal: usageController.signal
|
|
5229
|
+
})) {
|
|
5230
|
+
if (usageController.signal.aborted)
|
|
5231
|
+
break;
|
|
5232
|
+
const event = value;
|
|
5233
|
+
try {
|
|
5234
|
+
if (event.type === "provider.updated" || event.type === "model.updated") {
|
|
5235
|
+
queriedModels.clear();
|
|
5236
|
+
continue;
|
|
5237
|
+
}
|
|
5238
|
+
if (!event.data?.sessionID)
|
|
5239
|
+
continue;
|
|
5240
|
+
const sessionID = event.data.sessionID;
|
|
5241
|
+
if (event.type?.startsWith("session.revert.") || event.type === "session.message.content.updated") {
|
|
5242
|
+
nativeFoldReplay?.onEvent(event);
|
|
5243
|
+
restoredRows.forget(sessionID);
|
|
5244
|
+
}
|
|
5245
|
+
if (event.type === "session.error" || event.type === "session.execution.failed") {
|
|
5246
|
+
const error = hiddenTerminalError(event);
|
|
5247
|
+
if (error !== undefined)
|
|
5248
|
+
hiddenSessionErrors.set(sessionID, error);
|
|
5249
|
+
if (error !== undefined && db && !compactionOff) {
|
|
5250
|
+
const model = liveModels.get(sessionID);
|
|
5251
|
+
try {
|
|
5252
|
+
armLatestThinkingRecoveryFromError({
|
|
5253
|
+
db,
|
|
5254
|
+
sessionId: sessionID,
|
|
5255
|
+
error,
|
|
5256
|
+
providerID: model?.providerID,
|
|
5257
|
+
modelID: model?.modelID
|
|
5258
|
+
});
|
|
5259
|
+
} catch (armError) {
|
|
5260
|
+
log2("[magic-context] v2 latest-thinking recovery arm failed", armError);
|
|
5261
|
+
}
|
|
5262
|
+
}
|
|
5263
|
+
continue;
|
|
5264
|
+
}
|
|
5265
|
+
if (event.type === "session.deleted") {
|
|
5266
|
+
clearLkgMeasuredRequest(sessionID);
|
|
5267
|
+
deletedSessions.add(sessionID);
|
|
5268
|
+
transform?.clearSessionLogState(sessionID);
|
|
5269
|
+
if (db) {
|
|
5270
|
+
markSessionCleanupPending(db, sessionID);
|
|
5271
|
+
clearSession(db, sessionID);
|
|
5272
|
+
}
|
|
5273
|
+
rawProviders.get(sessionID)?.();
|
|
5274
|
+
rawProviders.delete(sessionID);
|
|
5275
|
+
usage.delete(sessionID);
|
|
5276
|
+
hiddenSessionErrors.delete(sessionID);
|
|
5277
|
+
storageNoticeBySession.delete(sessionID);
|
|
5278
|
+
liveModels.delete(sessionID);
|
|
5279
|
+
variants.delete(sessionID);
|
|
5280
|
+
agents.delete(sessionID);
|
|
5281
|
+
channel1.delete(sessionID);
|
|
5282
|
+
commitSeenLastPass.delete(sessionID);
|
|
5283
|
+
clearEmbedSessionState(sessionID);
|
|
5284
|
+
historyRefreshSessions.delete(sessionID);
|
|
5285
|
+
clearPendingMaterialization(pendingMaterializationSessions, sessionID);
|
|
5286
|
+
lastHeuristicsTurnId.delete(sessionID);
|
|
5287
|
+
restoredRows.forget(sessionID);
|
|
5288
|
+
if (nativeFoldReplay)
|
|
5289
|
+
await nativeFoldReplay.forget(sessionID);
|
|
5290
|
+
else
|
|
5291
|
+
await forgetNativeFoldProvenance(context.storage, sessionID);
|
|
5292
|
+
generateReplay.forget(sessionID);
|
|
5293
|
+
systemPromptRefreshSessions.delete(sessionID);
|
|
5294
|
+
systemPrompt?.clearSession(sessionID);
|
|
5295
|
+
tagger.cleanup(sessionID);
|
|
5296
|
+
continue;
|
|
5297
|
+
}
|
|
5298
|
+
if (event.type !== "session.execution.succeeded")
|
|
5299
|
+
continue;
|
|
5129
5300
|
const model = liveModels.get(sessionID);
|
|
5130
|
-
|
|
5131
|
-
|
|
5132
|
-
|
|
5133
|
-
|
|
5134
|
-
error,
|
|
5135
|
-
providerID: model?.providerID,
|
|
5136
|
-
modelID: model?.modelID
|
|
5301
|
+
if (model) {
|
|
5302
|
+
await recordUsage({
|
|
5303
|
+
sessionID,
|
|
5304
|
+
model: { providerID: model.providerID, id: model.modelID }
|
|
5137
5305
|
});
|
|
5138
|
-
|
|
5139
|
-
|
|
5306
|
+
if (!compactionOff && typeof await nativeFoldReplay?.baseline(sessionID) === "string")
|
|
5307
|
+
hostFolds?.idle(sessionID);
|
|
5140
5308
|
}
|
|
5309
|
+
} catch (error) {
|
|
5310
|
+
log2(`[magic-context] v2 event handler failed (type=${event.type ?? "unknown"}, session=${event.data?.sessionID ?? "none"})`, error);
|
|
5141
5311
|
}
|
|
5142
|
-
continue;
|
|
5143
|
-
}
|
|
5144
|
-
if (event.type === "session.deleted") {
|
|
5145
|
-
clearLkgMeasuredRequest(sessionID);
|
|
5146
|
-
deletedSessions.add(sessionID);
|
|
5147
|
-
transform?.clearSessionLogState(sessionID);
|
|
5148
|
-
if (db) {
|
|
5149
|
-
markSessionCleanupPending(db, sessionID);
|
|
5150
|
-
clearSession(db, sessionID);
|
|
5151
|
-
}
|
|
5152
|
-
rawProviders.get(sessionID)?.();
|
|
5153
|
-
rawProviders.delete(sessionID);
|
|
5154
|
-
usage.delete(sessionID);
|
|
5155
|
-
hiddenSessionErrors.delete(sessionID);
|
|
5156
|
-
storageNoticeBySession.delete(sessionID);
|
|
5157
|
-
liveModels.delete(sessionID);
|
|
5158
|
-
variants.delete(sessionID);
|
|
5159
|
-
agents.delete(sessionID);
|
|
5160
|
-
channel1.delete(sessionID);
|
|
5161
|
-
commitSeenLastPass.delete(sessionID);
|
|
5162
|
-
clearEmbedSessionState(sessionID);
|
|
5163
|
-
historyRefreshSessions.delete(sessionID);
|
|
5164
|
-
clearPendingMaterialization(pendingMaterializationSessions, sessionID);
|
|
5165
|
-
lastHeuristicsTurnId.delete(sessionID);
|
|
5166
|
-
restoredRows.forget(sessionID);
|
|
5167
|
-
await nativeFoldReplay?.forget(sessionID);
|
|
5168
|
-
generateReplay.forget(sessionID);
|
|
5169
|
-
systemPromptRefreshSessions.delete(sessionID);
|
|
5170
|
-
systemPrompt?.clearSession(sessionID);
|
|
5171
|
-
tagger.cleanup(sessionID);
|
|
5172
|
-
continue;
|
|
5173
|
-
}
|
|
5174
|
-
if (event.type !== "session.execution.succeeded")
|
|
5175
|
-
continue;
|
|
5176
|
-
const model = liveModels.get(sessionID);
|
|
5177
|
-
if (model) {
|
|
5178
|
-
await recordUsage({
|
|
5179
|
-
sessionID,
|
|
5180
|
-
model: { providerID: model.providerID, id: model.modelID }
|
|
5181
|
-
});
|
|
5182
|
-
if (!compactionOff && typeof await nativeFoldReplay?.baseline(sessionID) === "string")
|
|
5183
|
-
hostFolds?.idle(sessionID);
|
|
5184
5312
|
}
|
|
5313
|
+
} catch (error) {
|
|
5314
|
+
if (!usageController.signal.aborted)
|
|
5315
|
+
log2("[magic-context] v2 usage subscription failed", error);
|
|
5316
|
+
}
|
|
5317
|
+
if (usageController.signal.aborted)
|
|
5318
|
+
break;
|
|
5319
|
+
if (Date.now() - subscribedAt >= 30000)
|
|
5320
|
+
retry = 0;
|
|
5321
|
+
const ceiling = Math.min(30000, 250 * 2 ** retry);
|
|
5322
|
+
retry = Math.min(retry + 1, 7);
|
|
5323
|
+
try {
|
|
5324
|
+
await delay(ceiling * (0.5 + Math.random() * 0.5), undefined, {
|
|
5325
|
+
signal: usageController.signal
|
|
5326
|
+
});
|
|
5327
|
+
} catch (error) {
|
|
5328
|
+
if (!usageController.signal.aborted)
|
|
5329
|
+
throw error;
|
|
5185
5330
|
}
|
|
5186
|
-
} catch (error) {
|
|
5187
|
-
if (!usageController.signal.aborted)
|
|
5188
|
-
log2("[magic-context] v2 usage subscription failed", error);
|
|
5189
5331
|
}
|
|
5190
5332
|
})();
|
|
5191
5333
|
const materialize = (draft) => {
|
|
@@ -5458,6 +5600,7 @@ async function registerContext(context) {
|
|
|
5458
5600
|
compactionOff,
|
|
5459
5601
|
storeGeneration: "v2",
|
|
5460
5602
|
normalizeRestoredAssistantText: stripCopiedTagNotation,
|
|
5603
|
+
refreshSourceContents: (sessionID) => nativeFoldReplay?.needsHeadRebuild(sessionID) ?? false,
|
|
5461
5604
|
hostCleanupCompactionMarkers: () => ({
|
|
5462
5605
|
verified: true,
|
|
5463
5606
|
removedLineages: 0,
|
|
@@ -5546,12 +5689,13 @@ async function registerContext(context) {
|
|
|
5546
5689
|
historyRefreshSessions.add(draft.sessionID);
|
|
5547
5690
|
requestPendingMaterialization(pendingMaterializationSessions, draft.sessionID, "boundary_repair");
|
|
5548
5691
|
}
|
|
5549
|
-
const
|
|
5692
|
+
const localCut = cut && isLocalCheckpoint(cut) ? cut : undefined;
|
|
5693
|
+
const incoming = localCut && draft.messages.find((message) => message.id === localCut.id);
|
|
5550
5694
|
postFold = cut !== undefined;
|
|
5551
|
-
if (
|
|
5695
|
+
if (localCut && !incoming)
|
|
5552
5696
|
throw new Error("The host checkpoint disappeared from the context draft");
|
|
5553
5697
|
let nativeRestored;
|
|
5554
|
-
if (cut && nativeFoldReplay &&
|
|
5698
|
+
if (cut && nativeFoldReplay && await nativeFoldReplay.admits(draft.sessionID, cut, reader)) {
|
|
5555
5699
|
try {
|
|
5556
5700
|
nativeRestored = await nativeFoldReplay.restore(draft.sessionID, cut, `${draft.model.providerID}/${draft.model.id}`, { bounded: !rustModeModuleClient });
|
|
5557
5701
|
} catch (error) {
|
|
@@ -5560,7 +5704,11 @@ async function registerContext(context) {
|
|
|
5560
5704
|
nativeRestored = await nativeFoldReplay.restoreRead(draft.sessionID, cut, draft.model);
|
|
5561
5705
|
}
|
|
5562
5706
|
}
|
|
5563
|
-
if (
|
|
5707
|
+
if (cut && nativeFoldReplay?.sourceChanged(draft.sessionID)) {
|
|
5708
|
+
if (db && !rustModeModuleClient && nativeFoldReplay.needsHeadRebuild(draft.sessionID))
|
|
5709
|
+
clearCachedM0(db, draft.sessionID);
|
|
5710
|
+
if (nativeFoldReplay.needsHeadRebuild(draft.sessionID))
|
|
5711
|
+
restoredRows.forget(draft.sessionID);
|
|
5564
5712
|
historyRefreshSessions.add(draft.sessionID);
|
|
5565
5713
|
requestPendingMaterialization(pendingMaterializationSessions, draft.sessionID, "host_history_change");
|
|
5566
5714
|
}
|
|
@@ -5571,25 +5719,27 @@ async function registerContext(context) {
|
|
|
5571
5719
|
return !id || !present.has(id);
|
|
5572
5720
|
});
|
|
5573
5721
|
draft.messages.splice(0, draft.messages.length, ...hidden, ...draft.messages.filter((message) => message !== incoming));
|
|
5574
|
-
} else if (cut && incoming) {
|
|
5575
|
-
|
|
5576
|
-
|
|
5577
|
-
|
|
5578
|
-
|
|
5579
|
-
|
|
5580
|
-
|
|
5581
|
-
|
|
5582
|
-
|
|
5583
|
-
|
|
5584
|
-
|
|
5585
|
-
|
|
5586
|
-
|
|
5587
|
-
|
|
5722
|
+
} else if (localCut && cut && incoming) {
|
|
5723
|
+
if (!nativeFoldReplay) {
|
|
5724
|
+
const identity = await folds.observe({
|
|
5725
|
+
sessionID: draft.sessionID,
|
|
5726
|
+
cutSeq: cut.seq,
|
|
5727
|
+
summary: cut.data.summary ?? "",
|
|
5728
|
+
rendered: incoming,
|
|
5729
|
+
onHard: (reason) => {
|
|
5730
|
+
sessionLog2(draft.sessionID, `HARD reason=${reason}`);
|
|
5731
|
+
materialize(draft);
|
|
5732
|
+
requestPendingMaterialization(pendingMaterializationSessions, draft.sessionID, "host_compaction");
|
|
5733
|
+
}
|
|
5734
|
+
});
|
|
5735
|
+
checkpoint = structuredClone(identity.rendered ?? incoming);
|
|
5736
|
+
submitted = identity.rendered ? identity.renderedSummary ?? identity.submitted : cut.data.summary ?? "";
|
|
5737
|
+
}
|
|
5588
5738
|
const moduleBoundaryID = rustModeModuleClient ? getPersistedCompactionMarkerState(db, draft.sessionID)?.boundaryMessageId ?? null : null;
|
|
5589
5739
|
const moduleBoundarySeq = moduleBoundaryID ? reader.sequenceForId(draft.sessionID, moduleBoundaryID) : undefined;
|
|
5590
5740
|
const boundaryID = db.prepare("SELECT cached_m0_last_baseline_end_message_id AS id FROM session_meta WHERE session_id = ?").get(draft.sessionID)?.id ?? (boundaryRepair?.kind === "repaired" || boundaryRepair?.kind === "baseline-reset" ? boundaryRepair.anchorEndMessageId : null);
|
|
5591
5741
|
const servedBoundary = boundaryID ? servedBoundaryRow(reader, draft.sessionID, boundaryID) : null;
|
|
5592
|
-
const boundary = (moduleBoundarySeq !== undefined ? moduleBoundarySeq - 1 : undefined) ?? servedBoundary?.seq ?? reader.sequenceForId(draft.sessionID, boundaryID) ?? (reader.earliestSequence(draft.sessionID) ?? 0) - 1;
|
|
5742
|
+
const boundary = (nativeFoldReplay?.sourceChanged(draft.sessionID) && !rustModeModuleClient ? (reader.earliestSequence(draft.sessionID) ?? 0) - 1 : undefined) ?? (moduleBoundarySeq !== undefined ? moduleBoundarySeq - 1 : undefined) ?? servedBoundary?.seq ?? reader.sequenceForId(draft.sessionID, boundaryID) ?? (reader.earliestSequence(draft.sessionID) ?? 0) - 1;
|
|
5593
5743
|
if (moduleBoundarySeq !== undefined)
|
|
5594
5744
|
sessionLog2(draft.sessionID, `v2 restore: from the module boundary ${moduleBoundaryID} to the host checkpoint`);
|
|
5595
5745
|
const present = new Set(draft.messages.map((message) => message.id));
|
|
@@ -5840,13 +5990,13 @@ ${baseline}
|
|
|
5840
5990
|
}, 0));
|
|
5841
5991
|
return {
|
|
5842
5992
|
async dispose() {
|
|
5993
|
+
usageController.abort();
|
|
5843
5994
|
await hiddenCompletionExecutor?.dispose();
|
|
5995
|
+
await usageDone;
|
|
5844
5996
|
rpcStopped = true;
|
|
5845
5997
|
rpcServer.stop();
|
|
5846
5998
|
transform?.disposeRust();
|
|
5847
5999
|
tools?.dispose();
|
|
5848
|
-
usageController.abort();
|
|
5849
|
-
await usageDone;
|
|
5850
6000
|
deletedSessions.clear();
|
|
5851
6001
|
await dreamTrigger?.dispose();
|
|
5852
6002
|
await maintenanceTimer?.dispose();
|