@cortexkit/opencode-magic-context 0.49.15 → 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 +12 -10
- 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 +343 -343
- package/dist/config/schema/magic-context.d.ts.map +1 -1
- package/dist/{conflict-warning-hook-mgq17yr3.js → conflict-warning-hook-4pmz879v.js} +6 -6
- package/dist/{context-0m46day0.js → context-yhetp0kn.js} +297 -141
- package/dist/embedding-backfill-fmz50tsy.js +24 -0
- package/dist/embedding-worker-process.js +1 -1
- package/dist/embedding-worker.js +5 -5
- 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-fts-rowid-map.d.ts +2 -2
- package/dist/features/magic-context/message-fts-rowid-map.d.ts.map +1 -1
- package/dist/features/magic-context/message-fts-session-filter.d.ts +2 -0
- package/dist/features/magic-context/message-fts-session-filter.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/message-time-backfill.d.ts +2 -2
- package/dist/features/magic-context/message-time-backfill.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-db.d.ts +2 -1
- package/dist/features/magic-context/storage-db.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 +4 -2
- package/dist/hooks/magic-context/compartment-runner-historian.d.ts.map +1 -1
- package/dist/hooks/magic-context/compartment-runner-incremental.d.ts.map +1 -1
- package/dist/hooks/magic-context/compartment-runner-validation.d.ts.map +1 -1
- package/dist/hooks/magic-context/emergency-drop.d.ts.map +1 -1
- package/dist/hooks/magic-context/historian-host-runner.d.ts.map +1 -1
- package/dist/hooks/magic-context/historian-prompt-fit.d.ts +2 -1
- package/dist/hooks/magic-context/historian-prompt-fit.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/raw-ordinal-warmup.d.ts +26 -0
- package/dist/hooks/magic-context/raw-ordinal-warmup.d.ts.map +1 -1
- package/dist/hooks/magic-context/read-session-chunk.d.ts.map +1 -1
- package/dist/hooks/magic-context/recomp-orchestrator.d.ts +3 -3
- package/dist/hooks/magic-context/recomp-orchestrator.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-postprocess-phase.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-3kdm78zp.js → index-24fezq97.js} +4 -4
- package/dist/{index-a8bvhwqs.js → index-2vxtcb95.js} +32 -3
- package/dist/{index-f71thw8j.js → index-4s3t0nd0.js} +1 -1
- package/dist/{index-ts1hjk1h.js → index-4yt7dtf4.js} +453 -227
- package/dist/{index-mc1cqza6.js → index-5a1ex6x8.js} +5 -5
- package/dist/{index-fkx2qnvw.js → index-6x57ar45.js} +2 -2
- package/dist/{index-dyvbsvga.js → index-a6mc0v4d.js} +25 -11
- package/dist/{index-snp5wbge.js → index-a7c4r5re.js} +160 -749
- package/dist/{index-42vcjcwe.js → index-aabzay3h.js} +180 -103
- package/dist/{index-3kx0kg0f.js → index-b5vqckbw.js} +14 -8
- package/dist/{v2/server-wafzvyhg.js → index-beht37jy.js} +8 -0
- package/dist/{index-e20m7284.js → index-bjcnntmz.js} +3 -3
- package/dist/{index-hqkczed7.js → index-c5pytzne.js} +22 -2
- package/dist/{index-thvnpfsv.js → index-cwzfcbtq.js} +967 -88
- package/dist/{index-yxycg7fs.js → index-fb2qxs2y.js} +26 -18
- package/dist/{index-mht7bq0z.js → index-hqhm3wke.js} +32 -8
- package/dist/{index-e4dsjj1p.js → index-jn12fvvh.js} +1 -1
- package/dist/index-kaqs6h31.js +58 -0
- package/dist/{index-n6m03s3n.js → index-ke416mdc.js} +1 -1
- package/dist/index-kmdj7dsq.js +96 -0
- package/dist/{index-1d289pq2.js → index-kq82mtg0.js} +2 -2
- package/dist/{index-n78avt2p.js → index-n37sebck.js} +1 -1
- package/dist/{index-1vc7jrkg.js → index-nkpmm9q8.js} +3 -3
- package/dist/{index-944w16m0.js → index-p7m7j0cp.js} +25 -17
- package/dist/{index-wk0n1cgt.js → index-qn7xstt2.js} +2 -2
- package/dist/{index-saews2s3.js → index-rr2bb45z.js} +1 -1
- package/dist/{index-mmfa86mt.js → index-s734jcsr.js} +169 -149
- package/dist/{index-dgs16axy.js → index-s74zqahq.js} +1 -1
- package/dist/{index-bxdg2nbt.js → index-v8awdgvd.js} +4 -4
- package/dist/{index-xn6q9pg6.js → index-vrzjhftj.js} +36 -76
- package/dist/{index-1sarmj9z.js → index-wgypt3cs.js} +6 -6
- package/dist/{index-y1qysm3q.js → index-ze7mvk54.js} +11 -8
- package/dist/index.js +47 -45
- package/dist/message-fts-rowid-map-17s0dfn4.js +25 -0
- package/dist/{message-index-bounded-vtgpq6b4.js → message-index-bounded-1633vc7f.js} +17 -17
- package/dist/{message-index-a6gztaqx.js → message-index-dprebmtt.js} +15 -15
- package/dist/{message-time-backfill-qjge9044.js → message-time-backfill-73mmm76q.js} +5 -5
- package/dist/migration-worker.js +9 -7
- 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-x45bv3qr.js → project-embedding-registry-z74mhqkf.js} +12 -10
- package/dist/raw-ordinal-warmup-worker.js +40 -10
- package/dist/{read-session-chunk-3ae3nfdn.js → read-session-chunk-4zp09ejb.js} +9 -9
- package/dist/{read-session-raw-m56hc7v2.js → read-session-raw-rsc8c7qy.js} +2 -2
- package/dist/{recomp-orchestrator-nwzcfhx4.js → recomp-orchestrator-z3ecszx6.js} +26 -26
- package/dist/{search-deajrd90.js → search-6mee3vty.js} +23 -22
- package/dist/search-archive-znyy44ve.js +25 -0
- package/dist/{send-session-notification-24r4esbh.js → send-session-notification-6ve0e8p4.js} +5 -5
- 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 +4 -0
- package/dist/shared/model-suggestion-retry.d.ts.map +1 -1
- package/dist/shared/resolve-fallbacks.d.ts +3 -3
- 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-s5bg1ahx.js → storage-tags-8qns3012.js} +8 -4
- package/dist/tools/ctx-expand/search-archive.d.ts +5 -1
- package/dist/tools/ctx-expand/search-archive.d.ts.map +1 -1
- package/dist/{transform-postprocess-phase-ne3z1zmt.js → transform-postprocess-phase-3ydzxa62.js} +26 -26
- package/dist/v2/auto-search-worker.js +76 -63
- package/dist/v2/chunk-embedding-write-worker.js +12 -10
- 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-4qczzck7.js → context-jn3zpeqh.js} +909 -454
- package/dist/v2/embedding-backfill-7c7yr69y.js +23 -0
- package/dist/v2/embedding-worker-process.js +1 -1
- package/dist/v2/embedding-worker.js +5 -5
- 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-wfx67gfd.js +24 -0
- package/dist/v2/{message-index-bounded-rxxznd34.js → message-index-bounded-hpejqyd8.js} +17 -17
- package/dist/v2/{message-index-f947qtbz.js → message-index-pxehjpzx.js} +15 -15
- package/dist/v2/{message-time-backfill-bsteyc4d.js → message-time-backfill-04t0km1z.js} +5 -5
- package/dist/v2/migration-worker.js +9 -7
- package/dist/v2/{project-embedding-registry-0msp56p8.js → project-embedding-registry-gnkj56xp.js} +12 -10
- package/dist/v2/raw-ordinal-warmup-worker.js +40 -10
- package/dist/v2/{read-session-chunk-rq9nx1nn.js → read-session-chunk-zdppn4bj.js} +9 -9
- package/dist/v2/{read-session-raw-b3tf6ra1.js → read-session-raw-yaegtjzh.js} +2 -2
- package/dist/v2/{recomp-orchestrator-5zhxtwha.js → recomp-orchestrator-cmqnfpp3.js} +26 -26
- package/dist/v2/{search-n8wqxb1j.js → search-66842dya.js} +23 -22
- package/dist/v2/search-archive-gfh11vs0.js +24 -0
- package/dist/v2/{send-session-notification-8ghn9tnv.js → send-session-notification-3pxn658x.js} +5 -5
- package/dist/v2/{server-yrvqaswb.js → server-1wy7b9de.js} +25 -11
- package/dist/v2/{server-th4y11y7.js → server-271qxsf5.js} +6 -6
- package/dist/v2/{server-e298hswg.js → server-3rhpvy84.js} +967 -88
- package/dist/v2/{server-qhfvvfxj.js → server-46neh5fa.js} +14 -8
- package/dist/v2/{server-rrqpvwqd.js → server-6tmj0s7j.js} +2 -2
- package/dist/v2/{server-hek6z3w6.js → server-8by8qfec.js} +11 -8
- 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-ec4ca92p.js +96 -0
- package/dist/v2/{server-dd0tz6cn.js → server-fw7wrk01.js} +160 -750
- package/dist/v2/{server-zs8d0s3b.js → server-g3qma5c0.js} +1 -1
- package/dist/v2/{server-k2bzedxk.js → server-gpvay0xz.js} +2 -2
- package/dist/v2/{server-kmbarfmn.js → server-gtfhttbr.js} +26 -18
- package/dist/v2/{server-g10mdym6.js → server-h1v0pyxb.js} +3 -3
- package/dist/v2/{server-4gn3z5an.js → server-hy3d3vsx.js} +1 -1
- package/dist/v2/server-kaqs6h31.js +58 -0
- package/dist/v2/{server-ehyava47.js → server-kh7dpa1a.js} +25 -17
- package/dist/v2/{server-6cdy4rc0.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-zc3e54vy.js → server-nj659894.js} +6 -6
- package/dist/v2/{server-gvkm8xaj.js → server-rmygf5pn.js} +32 -3
- package/dist/v2/{server-0ppsweh6.js → server-tgnbmwah.js} +22 -2
- package/dist/v2/{server-cfbr1s2x.js → server-vsw8tmm6.js} +36 -76
- package/dist/v2/{server-prg55b7k.js → server-xj136kt8.js} +23 -3
- package/dist/v2/{server-atbc19ab.js → server-zyzawhdw.js} +32 -8
- package/dist/v2/{server-ef89gdsx.js → server-zzkj2fch.js} +4 -4
- package/dist/v2/server.js +5 -5
- 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-hcc2adpf.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-65pwye0d.js → wrapup-orchestrator-xs8redz9.js} +26 -26
- 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/config/schema/magic-context.ts +14 -6
- package/src/shared/historian-cache.test.ts +69 -0
- package/src/shared/historian-cache.ts +55 -0
- package/src/shared/model-resolution.test.ts +22 -0
- package/src/shared/model-suggestion-retry.ts +11 -3
- package/src/shared/resolve-fallbacks.test.ts +2 -3
- package/src/shared/resolve-fallbacks.ts +3 -3
- 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/embedding-backfill-5e1t5wha.js +0 -22
- package/dist/v2/embedding-backfill-jmaf8zrr.js +0 -21
- package/dist/wrapup-orchestrator-28xzsj5q.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
|
|
@@ -81,7 +77,7 @@ import {
|
|
|
81
77
|
resolveKnownHistorianContextLimit2,
|
|
82
78
|
resolveHistorianContextLimit2
|
|
83
79
|
} from "./index-v10f1rjv.js";
|
|
84
|
-
import"./index-
|
|
80
|
+
import"./index-wgypt3cs.js";
|
|
85
81
|
import {
|
|
86
82
|
CANONICAL_DREAM_TASKS,
|
|
87
83
|
DREAM_TASK_CAPABILITIES,
|
|
@@ -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,34 +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-
|
|
220
|
-
import"./index-
|
|
216
|
+
} from "./index-beht37jy.js";
|
|
217
|
+
import"./index-v0p37hm2.js";
|
|
218
|
+
import"./index-s734jcsr.js";
|
|
219
|
+
import"./index-a6mc0v4d.js";
|
|
221
220
|
import {
|
|
222
221
|
deleteChunkEmbedBackoffForSession
|
|
223
|
-
} from "./index-
|
|
222
|
+
} from "./index-b5vqckbw.js";
|
|
224
223
|
import"./index-nj7yykkx.js";
|
|
225
224
|
import {
|
|
226
225
|
BoundedSessionMap,
|
|
227
226
|
advanceSessionActivity,
|
|
228
|
-
backfillSessionActivity
|
|
229
|
-
|
|
227
|
+
backfillSessionActivity,
|
|
228
|
+
gaDatabasePath,
|
|
229
|
+
RAW_MESSAGE_TYPES,
|
|
230
|
+
V2StoreReaderPool,
|
|
231
|
+
V2StoreReader
|
|
232
|
+
} from "./index-cwzfcbtq.js";
|
|
230
233
|
import"./index-bp5083x2.js";
|
|
231
234
|
import"./index-1zx87sdm.js";
|
|
232
235
|
import {
|
|
@@ -235,22 +238,20 @@ import {
|
|
|
235
238
|
isDroppedToolOutput,
|
|
236
239
|
evaluateChannel2,
|
|
237
240
|
buildChannel2Reminder
|
|
238
|
-
} from "./index-
|
|
239
|
-
import"./index-v0p37hm2.js";
|
|
240
|
-
import"./index-mmfa86mt.js";
|
|
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,27 +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";
|
|
284
|
+
import"./index-kaqs6h31.js";
|
|
285
|
+
import"./index-kmdj7dsq.js";
|
|
283
286
|
import {
|
|
284
287
|
isDreamerRunnable,
|
|
285
288
|
isSmartNoteSurfaceAvailable,
|
|
@@ -293,6 +296,9 @@ import {
|
|
|
293
296
|
} from "./index-y8v6yerm.js";
|
|
294
297
|
import"./index-k29z4aqh.js";
|
|
295
298
|
|
|
299
|
+
// src/v2/hooks/context.ts
|
|
300
|
+
import { setTimeout as delay } from "node:timers/promises";
|
|
301
|
+
|
|
296
302
|
// src/hooks/magic-context/history-boundary-repair.ts
|
|
297
303
|
function readBaseline(db, sessionId) {
|
|
298
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);
|
|
@@ -1629,24 +1635,31 @@ ${data.output?.output ?? ""}`
|
|
|
1629
1635
|
const sameModel = sameProvider && previousModel?.id === model.id;
|
|
1630
1636
|
const reuse = sameModel && data.error === undefined;
|
|
1631
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);
|
|
1632
1639
|
const content = [];
|
|
1633
1640
|
const results = [];
|
|
1634
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
|
+
};
|
|
1635
1648
|
if (part.type === "text") {
|
|
1636
1649
|
if (part.text !== "")
|
|
1637
1650
|
content.push({
|
|
1638
1651
|
type: "text",
|
|
1639
1652
|
text: part.text,
|
|
1640
|
-
providerMetadata: reuse ? metadata(
|
|
1653
|
+
providerMetadata: reuse ? metadata(native) : undefined
|
|
1641
1654
|
});
|
|
1642
1655
|
continue;
|
|
1643
1656
|
}
|
|
1644
1657
|
if (part.type === "reasoning") {
|
|
1645
|
-
if (part.text !== "" || reuse &&
|
|
1658
|
+
if (part.text !== "" || reuse && !reasoningInterrupted && native !== undefined)
|
|
1646
1659
|
content.push({
|
|
1647
|
-
type:
|
|
1660
|
+
type: data.error === undefined && !reasoningInterrupted ? "reasoning" : "text",
|
|
1648
1661
|
text: part.text,
|
|
1649
|
-
providerMetadata: reuse ? metadata(
|
|
1662
|
+
providerMetadata: reuse && !reasoningInterrupted ? metadata(native) : undefined
|
|
1650
1663
|
});
|
|
1651
1664
|
continue;
|
|
1652
1665
|
}
|
|
@@ -1665,7 +1678,7 @@ ${data.output?.output ?? ""}`
|
|
|
1665
1678
|
name: part.name,
|
|
1666
1679
|
input,
|
|
1667
1680
|
providerExecuted: part.executed,
|
|
1668
|
-
providerMetadata: toolReuse ? metadata(
|
|
1681
|
+
providerMetadata: toolReuse ? metadata(native) : undefined
|
|
1669
1682
|
});
|
|
1670
1683
|
if (!completed)
|
|
1671
1684
|
continue;
|
|
@@ -1676,7 +1689,7 @@ ${data.output?.output ?? ""}`
|
|
|
1676
1689
|
id: part.id,
|
|
1677
1690
|
name: part.name,
|
|
1678
1691
|
providerExecuted: part.executed,
|
|
1679
|
-
providerMetadata:
|
|
1692
|
+
providerMetadata: (part.executed === true ? sameProvider : reuse) ? metadata(native) : undefined,
|
|
1680
1693
|
result: state.status === "error" ? { error: state.error, content: toolContent } : single?.type === "text" ? { type: "text", value: single.text } : { type: "content", value: toolContent },
|
|
1681
1694
|
...state.status === "error" ? { resultType: "error" } : {}
|
|
1682
1695
|
};
|
|
@@ -1704,13 +1717,50 @@ function copyNativeInput(messages) {
|
|
|
1704
1717
|
return copies;
|
|
1705
1718
|
}
|
|
1706
1719
|
function isLocalCheckpoint(row) {
|
|
1707
|
-
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
|
+
}
|
|
1708
1734
|
}
|
|
1709
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
|
+
}
|
|
1710
1759
|
|
|
1711
1760
|
class NativeFoldReplay {
|
|
1712
1761
|
storage;
|
|
1713
1762
|
openReader;
|
|
1763
|
+
admissions;
|
|
1714
1764
|
changed = new Set;
|
|
1715
1765
|
dirty = new Set;
|
|
1716
1766
|
unavailable = new Set;
|
|
@@ -1718,9 +1768,11 @@ class NativeFoldReplay {
|
|
|
1718
1768
|
metadataThrough = new Map;
|
|
1719
1769
|
loaded = new Map;
|
|
1720
1770
|
sources = new Map;
|
|
1721
|
-
|
|
1771
|
+
staleHeads = new Set;
|
|
1772
|
+
constructor(storage, openReader, admissions) {
|
|
1722
1773
|
this.storage = storage;
|
|
1723
1774
|
this.openReader = openReader;
|
|
1775
|
+
this.admissions = admissions;
|
|
1724
1776
|
storage.onEvict((sessionID) => this.clear(sessionID));
|
|
1725
1777
|
}
|
|
1726
1778
|
account(sessionID) {
|
|
@@ -1759,6 +1811,51 @@ class NativeFoldReplay {
|
|
|
1759
1811
|
async baseline(sessionID) {
|
|
1760
1812
|
return this.tail(sessionID)?.baseline;
|
|
1761
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
|
+
}
|
|
1762
1859
|
rendered(row, model) {
|
|
1763
1860
|
return restoreRow(row, model, hostUsesMediaAssets() ? {
|
|
1764
1861
|
asset: hostMediaAsset,
|
|
@@ -1836,6 +1933,7 @@ class NativeFoldReplay {
|
|
|
1836
1933
|
this.loaded.set(draft.sessionID, through);
|
|
1837
1934
|
this.unavailable.delete(draft.sessionID);
|
|
1838
1935
|
this.changed.delete(draft.sessionID);
|
|
1936
|
+
this.staleHeads.delete(draft.sessionID);
|
|
1839
1937
|
} finally {
|
|
1840
1938
|
reader.close();
|
|
1841
1939
|
}
|
|
@@ -1862,7 +1960,8 @@ class NativeFoldReplay {
|
|
|
1862
1960
|
async supplyHeld(args) {
|
|
1863
1961
|
const { draft, reader, summary } = args;
|
|
1864
1962
|
const tail = this.tail(draft.sessionID);
|
|
1865
|
-
const
|
|
1963
|
+
const running = reader.latestRunningCompaction(draft.sessionID);
|
|
1964
|
+
const id = running?.id;
|
|
1866
1965
|
if (!id || !tail || tail.model !== `${draft.model.providerID}/${draft.model.id}`)
|
|
1867
1966
|
return false;
|
|
1868
1967
|
const through = reader.latestSequence(draft.sessionID);
|
|
@@ -1886,6 +1985,21 @@ class NativeFoldReplay {
|
|
|
1886
1985
|
summary
|
|
1887
1986
|
};
|
|
1888
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
|
+
}
|
|
1889
2003
|
return true;
|
|
1890
2004
|
}
|
|
1891
2005
|
async restore(sessionID, cut, model, options = {}) {
|
|
@@ -1970,6 +2084,9 @@ class NativeFoldReplay {
|
|
|
1970
2084
|
sourceChanged(sessionID) {
|
|
1971
2085
|
return this.changed.has(sessionID);
|
|
1972
2086
|
}
|
|
2087
|
+
needsHeadRebuild(sessionID) {
|
|
2088
|
+
return this.staleHeads.has(sessionID);
|
|
2089
|
+
}
|
|
1973
2090
|
clear(sessionID) {
|
|
1974
2091
|
this.sources.delete(sessionID);
|
|
1975
2092
|
this.metadata.delete(sessionID);
|
|
@@ -1978,8 +2095,11 @@ class NativeFoldReplay {
|
|
|
1978
2095
|
this.unavailable.delete(sessionID);
|
|
1979
2096
|
this.dirty.delete(sessionID);
|
|
1980
2097
|
this.changed.delete(sessionID);
|
|
2098
|
+
this.staleHeads.delete(sessionID);
|
|
1981
2099
|
}
|
|
1982
2100
|
async forget(sessionID) {
|
|
2101
|
+
if (this.admissions)
|
|
2102
|
+
await forgetNativeFoldProvenance(this.admissions, sessionID);
|
|
1983
2103
|
await this.storage.forget(sessionID);
|
|
1984
2104
|
}
|
|
1985
2105
|
}
|
|
@@ -1994,11 +2114,7 @@ class HostFoldPolicy {
|
|
|
1994
2114
|
this.deps = deps;
|
|
1995
2115
|
}
|
|
1996
2116
|
owned(sessionID, cut, id) {
|
|
1997
|
-
|
|
1998
|
-
if (!isLocalCheckpoint(cut) || cut.id !== id || !row?.payload || row.digest !== foldDigest(row.payload))
|
|
1999
|
-
return false;
|
|
2000
|
-
const snapshot = JSON.parse(row.payload);
|
|
2001
|
-
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);
|
|
2002
2118
|
}
|
|
2003
2119
|
async idle(sessionID) {
|
|
2004
2120
|
const { storage, session, threshold } = this.deps;
|
|
@@ -4675,7 +4791,7 @@ async function registerContext(context) {
|
|
|
4675
4791
|
}
|
|
4676
4792
|
const folds = new FoldOwner(context.storage);
|
|
4677
4793
|
const nativeFoldMemory = !compactionOff && process.env.MC_OC2_INVISIBLE_FOLD === "1" ? nativeFoldCache(() => storage.require()) : undefined;
|
|
4678
|
-
const nativeFoldReplay = nativeFoldMemory ? new NativeFoldReplay(nativeFoldMemory, () => openStoreReader()) : undefined;
|
|
4794
|
+
const nativeFoldReplay = nativeFoldMemory ? new NativeFoldReplay(nativeFoldMemory, () => openStoreReader(), context.storage) : undefined;
|
|
4679
4795
|
setOutputReserveConfig(config.output_reserve);
|
|
4680
4796
|
const queriedModels = new Set;
|
|
4681
4797
|
const rawLimits = new Map;
|
|
@@ -4727,6 +4843,7 @@ async function registerContext(context) {
|
|
|
4727
4843
|
memorySyncRequestedSessions: rustMemorySyncRequestedSessions
|
|
4728
4844
|
}) : undefined;
|
|
4729
4845
|
const hiddenChildHook = new HiddenChildHook;
|
|
4846
|
+
await context.session.hook("http.request", (draft) => hiddenChildHook.cacheRequest(draft));
|
|
4730
4847
|
const tools = db && isDatabasePersisted(db) ? await registerTools(context, db, config, moduleToolBackends?.backends, (id) => hiddenChildHook.owns(id)) : undefined;
|
|
4731
4848
|
const usage = new Map;
|
|
4732
4849
|
const generateReplay = new V2GenerateReplay;
|
|
@@ -5103,83 +5220,114 @@ async function registerContext(context) {
|
|
|
5103
5220
|
}) : undefined;
|
|
5104
5221
|
const usageController = new AbortController;
|
|
5105
5222
|
const usageDone = (async () => {
|
|
5106
|
-
|
|
5107
|
-
|
|
5108
|
-
|
|
5109
|
-
|
|
5110
|
-
const
|
|
5111
|
-
|
|
5112
|
-
|
|
5113
|
-
|
|
5114
|
-
|
|
5115
|
-
|
|
5116
|
-
|
|
5117
|
-
|
|
5118
|
-
|
|
5119
|
-
|
|
5120
|
-
|
|
5121
|
-
|
|
5122
|
-
|
|
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;
|
|
5123
5300
|
const model = liveModels.get(sessionID);
|
|
5124
|
-
|
|
5125
|
-
|
|
5126
|
-
|
|
5127
|
-
|
|
5128
|
-
error,
|
|
5129
|
-
providerID: model?.providerID,
|
|
5130
|
-
modelID: model?.modelID
|
|
5301
|
+
if (model) {
|
|
5302
|
+
await recordUsage({
|
|
5303
|
+
sessionID,
|
|
5304
|
+
model: { providerID: model.providerID, id: model.modelID }
|
|
5131
5305
|
});
|
|
5132
|
-
|
|
5133
|
-
|
|
5306
|
+
if (!compactionOff && typeof await nativeFoldReplay?.baseline(sessionID) === "string")
|
|
5307
|
+
hostFolds?.idle(sessionID);
|
|
5134
5308
|
}
|
|
5309
|
+
} catch (error) {
|
|
5310
|
+
log2(`[magic-context] v2 event handler failed (type=${event.type ?? "unknown"}, session=${event.data?.sessionID ?? "none"})`, error);
|
|
5135
5311
|
}
|
|
5136
|
-
continue;
|
|
5137
|
-
}
|
|
5138
|
-
if (event.type === "session.deleted") {
|
|
5139
|
-
clearLkgMeasuredRequest(sessionID);
|
|
5140
|
-
deletedSessions.add(sessionID);
|
|
5141
|
-
transform?.clearSessionLogState(sessionID);
|
|
5142
|
-
if (db) {
|
|
5143
|
-
markSessionCleanupPending(db, sessionID);
|
|
5144
|
-
clearSession(db, sessionID);
|
|
5145
|
-
}
|
|
5146
|
-
rawProviders.get(sessionID)?.();
|
|
5147
|
-
rawProviders.delete(sessionID);
|
|
5148
|
-
usage.delete(sessionID);
|
|
5149
|
-
hiddenSessionErrors.delete(sessionID);
|
|
5150
|
-
storageNoticeBySession.delete(sessionID);
|
|
5151
|
-
liveModels.delete(sessionID);
|
|
5152
|
-
variants.delete(sessionID);
|
|
5153
|
-
agents.delete(sessionID);
|
|
5154
|
-
channel1.delete(sessionID);
|
|
5155
|
-
commitSeenLastPass.delete(sessionID);
|
|
5156
|
-
clearEmbedSessionState(sessionID);
|
|
5157
|
-
historyRefreshSessions.delete(sessionID);
|
|
5158
|
-
clearPendingMaterialization(pendingMaterializationSessions, sessionID);
|
|
5159
|
-
lastHeuristicsTurnId.delete(sessionID);
|
|
5160
|
-
restoredRows.forget(sessionID);
|
|
5161
|
-
await nativeFoldReplay?.forget(sessionID);
|
|
5162
|
-
generateReplay.forget(sessionID);
|
|
5163
|
-
systemPromptRefreshSessions.delete(sessionID);
|
|
5164
|
-
systemPrompt?.clearSession(sessionID);
|
|
5165
|
-
tagger.cleanup(sessionID);
|
|
5166
|
-
continue;
|
|
5167
|
-
}
|
|
5168
|
-
if (event.type !== "session.execution.succeeded")
|
|
5169
|
-
continue;
|
|
5170
|
-
const model = liveModels.get(sessionID);
|
|
5171
|
-
if (model) {
|
|
5172
|
-
await recordUsage({
|
|
5173
|
-
sessionID,
|
|
5174
|
-
model: { providerID: model.providerID, id: model.modelID }
|
|
5175
|
-
});
|
|
5176
|
-
if (!compactionOff && typeof await nativeFoldReplay?.baseline(sessionID) === "string")
|
|
5177
|
-
hostFolds?.idle(sessionID);
|
|
5178
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;
|
|
5179
5330
|
}
|
|
5180
|
-
} catch (error) {
|
|
5181
|
-
if (!usageController.signal.aborted)
|
|
5182
|
-
log2("[magic-context] v2 usage subscription failed", error);
|
|
5183
5331
|
}
|
|
5184
5332
|
})();
|
|
5185
5333
|
const materialize = (draft) => {
|
|
@@ -5452,6 +5600,7 @@ async function registerContext(context) {
|
|
|
5452
5600
|
compactionOff,
|
|
5453
5601
|
storeGeneration: "v2",
|
|
5454
5602
|
normalizeRestoredAssistantText: stripCopiedTagNotation,
|
|
5603
|
+
refreshSourceContents: (sessionID) => nativeFoldReplay?.needsHeadRebuild(sessionID) ?? false,
|
|
5455
5604
|
hostCleanupCompactionMarkers: () => ({
|
|
5456
5605
|
verified: true,
|
|
5457
5606
|
removedLineages: 0,
|
|
@@ -5540,12 +5689,13 @@ async function registerContext(context) {
|
|
|
5540
5689
|
historyRefreshSessions.add(draft.sessionID);
|
|
5541
5690
|
requestPendingMaterialization(pendingMaterializationSessions, draft.sessionID, "boundary_repair");
|
|
5542
5691
|
}
|
|
5543
|
-
const
|
|
5692
|
+
const localCut = cut && isLocalCheckpoint(cut) ? cut : undefined;
|
|
5693
|
+
const incoming = localCut && draft.messages.find((message) => message.id === localCut.id);
|
|
5544
5694
|
postFold = cut !== undefined;
|
|
5545
|
-
if (
|
|
5695
|
+
if (localCut && !incoming)
|
|
5546
5696
|
throw new Error("The host checkpoint disappeared from the context draft");
|
|
5547
5697
|
let nativeRestored;
|
|
5548
|
-
if (cut && nativeFoldReplay &&
|
|
5698
|
+
if (cut && nativeFoldReplay && await nativeFoldReplay.admits(draft.sessionID, cut, reader)) {
|
|
5549
5699
|
try {
|
|
5550
5700
|
nativeRestored = await nativeFoldReplay.restore(draft.sessionID, cut, `${draft.model.providerID}/${draft.model.id}`, { bounded: !rustModeModuleClient });
|
|
5551
5701
|
} catch (error) {
|
|
@@ -5554,7 +5704,11 @@ async function registerContext(context) {
|
|
|
5554
5704
|
nativeRestored = await nativeFoldReplay.restoreRead(draft.sessionID, cut, draft.model);
|
|
5555
5705
|
}
|
|
5556
5706
|
}
|
|
5557
|
-
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);
|
|
5558
5712
|
historyRefreshSessions.add(draft.sessionID);
|
|
5559
5713
|
requestPendingMaterialization(pendingMaterializationSessions, draft.sessionID, "host_history_change");
|
|
5560
5714
|
}
|
|
@@ -5565,25 +5719,27 @@ async function registerContext(context) {
|
|
|
5565
5719
|
return !id || !present.has(id);
|
|
5566
5720
|
});
|
|
5567
5721
|
draft.messages.splice(0, draft.messages.length, ...hidden, ...draft.messages.filter((message) => message !== incoming));
|
|
5568
|
-
} else if (cut && incoming) {
|
|
5569
|
-
|
|
5570
|
-
|
|
5571
|
-
|
|
5572
|
-
|
|
5573
|
-
|
|
5574
|
-
|
|
5575
|
-
|
|
5576
|
-
|
|
5577
|
-
|
|
5578
|
-
|
|
5579
|
-
|
|
5580
|
-
|
|
5581
|
-
|
|
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
|
+
}
|
|
5582
5738
|
const moduleBoundaryID = rustModeModuleClient ? getPersistedCompactionMarkerState(db, draft.sessionID)?.boundaryMessageId ?? null : null;
|
|
5583
5739
|
const moduleBoundarySeq = moduleBoundaryID ? reader.sequenceForId(draft.sessionID, moduleBoundaryID) : undefined;
|
|
5584
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);
|
|
5585
5741
|
const servedBoundary = boundaryID ? servedBoundaryRow(reader, draft.sessionID, boundaryID) : null;
|
|
5586
|
-
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;
|
|
5587
5743
|
if (moduleBoundarySeq !== undefined)
|
|
5588
5744
|
sessionLog2(draft.sessionID, `v2 restore: from the module boundary ${moduleBoundaryID} to the host checkpoint`);
|
|
5589
5745
|
const present = new Set(draft.messages.map((message) => message.id));
|
|
@@ -5834,13 +5990,13 @@ ${baseline}
|
|
|
5834
5990
|
}, 0));
|
|
5835
5991
|
return {
|
|
5836
5992
|
async dispose() {
|
|
5993
|
+
usageController.abort();
|
|
5837
5994
|
await hiddenCompletionExecutor?.dispose();
|
|
5995
|
+
await usageDone;
|
|
5838
5996
|
rpcStopped = true;
|
|
5839
5997
|
rpcServer.stop();
|
|
5840
5998
|
transform?.disposeRust();
|
|
5841
5999
|
tools?.dispose();
|
|
5842
|
-
usageController.abort();
|
|
5843
|
-
await usageDone;
|
|
5844
6000
|
deletedSessions.clear();
|
|
5845
6001
|
await dreamTrigger?.dispose();
|
|
5846
6002
|
await maintenanceTimer?.dispose();
|