@cortexkit/opencode-magic-context 0.49.16 → 0.49.18
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-m897gfp9.js} +304 -145
- 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-host-instruction-retention.d.ts +11 -0
- package/dist/features/magic-context/storage-host-instruction-retention.d.ts.map +1 -0
- 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/cache-busting-signals.d.ts +22 -1
- package/dist/hooks/magic-context/cache-busting-signals.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/compartment-trigger.d.ts +4 -2
- package/dist/hooks/magic-context/compartment-trigger.d.ts.map +1 -1
- package/dist/hooks/magic-context/file-token-coverage.d.ts +11 -0
- package/dist/hooks/magic-context/file-token-coverage.d.ts.map +1 -0
- package/dist/hooks/magic-context/final-wire-token-estimate.d.ts +9 -0
- package/dist/hooks/magic-context/final-wire-token-estimate.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/host-served-rows.d.ts +25 -0
- package/dist/hooks/magic-context/host-served-rows.d.ts.map +1 -1
- package/dist/hooks/magic-context/inject-compartments.d.ts +7 -1
- package/dist/hooks/magic-context/inject-compartments.d.ts.map +1 -1
- package/dist/hooks/magic-context/lkg-recovery-fence.d.ts.map +1 -1
- package/dist/hooks/magic-context/lkg-replay.d.ts.map +1 -1
- package/dist/hooks/magic-context/lkg-slot.d.ts +1 -1
- package/dist/hooks/magic-context/lkg-slot.d.ts.map +1 -1
- package/dist/hooks/magic-context/pass-outcome.d.ts +2 -0
- package/dist/hooks/magic-context/pass-outcome.d.ts.map +1 -1
- package/dist/hooks/magic-context/protected-tail-boundary.d.ts +2 -1
- package/dist/hooks/magic-context/protected-tail-boundary.d.ts.map +1 -1
- package/dist/hooks/magic-context/read-session-chunk.d.ts.map +1 -1
- package/dist/hooks/magic-context/signed-thinking-hold.d.ts +59 -0
- package/dist/hooks/magic-context/signed-thinking-hold.d.ts.map +1 -0
- 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-content-primitives.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-compartment-phase.d.ts +6 -0
- package/dist/hooks/magic-context/transform-compartment-phase.d.ts.map +1 -1
- package/dist/hooks/magic-context/transform-context-state.d.ts +19 -0
- package/dist/hooks/magic-context/transform-context-state.d.ts.map +1 -1
- package/dist/hooks/magic-context/transform-postprocess-phase.d.ts +19 -0
- 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-9nkg2dzk.js → index-24fezq97.js} +3 -3
- package/dist/{index-v9asb16b.js → index-24jbw52d.js} +5 -5
- package/dist/{index-a8bvhwqs.js → index-2vxtcb95.js} +32 -3
- package/dist/{index-f71thw8j.js → index-4s3t0nd0.js} +1 -1
- package/dist/{index-6a6dq53h.js → index-6s5941tm.js} +5 -5
- package/dist/{index-fkx2qnvw.js → index-6x57ar45.js} +2 -2
- package/dist/{index-ek1yxvvz.js → index-936py2wm.js} +361 -70
- package/dist/{index-dqe8pq4x.js → index-a6mc0v4d.js} +6 -3
- 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-nd7m2a5a.js → index-cf74k5ak.js} +27 -5
- package/dist/{index-kn4t1haw.js → index-e4xv8890.js} +531 -253
- package/dist/{index-cj9g0j7a.js → index-fgncb0ng.js} +7 -7
- package/dist/{index-5mwk1nek.js → index-jn12fvvh.js} +1 -1
- package/dist/{index-n6m03s3n.js → index-ke416mdc.js} +1 -1
- package/dist/{index-mtw9e71a.js → index-kq82mtg0.js} +2 -2
- package/dist/{index-n78avt2p.js → index-n37sebck.js} +1 -1
- package/dist/{index-wk0n1cgt.js → index-qn7xstt2.js} +2 -2
- package/dist/{index-v63beg1z.js → index-r4nkrs05.js} +3 -3
- package/dist/{index-j6zw70pf.js → index-rmwykbbb.js} +60 -21
- package/dist/{index-saews2s3.js → index-rr2bb45z.js} +1 -1
- package/dist/{index-ayym1x7f.js → index-s1ex9y6p.js} +195 -748
- package/dist/{index-7pa32z07.js → index-s734jcsr.js} +1 -1
- package/dist/{index-b17m64g9.js → index-s74zqahq.js} +1 -1
- package/dist/{index-4qfy7v57.js → index-s7j8tvhv.js} +31 -20
- package/dist/{index-wv9n2zcq.js → index-v8awdgvd.js} +4 -4
- package/dist/{index-p4vde22c.js → index-x4njr8df.js} +965 -77
- 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-t4pz7akd.js → message-index-66jv6fh4.js} +13 -13
- package/dist/{message-index-bounded-6th8djy9.js → message-index-bounded-n1frdn85.js} +17 -17
- 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-v06g3vka.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-ghpk2dtq.js} +24 -24
- package/dist/{search-archive-02jws7hw.js → search-archive-4d53y23e.js} +8 -8
- package/dist/{search-rb01n29x.js → search-nkf271d4.js} +20 -20
- 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-r7k9tjcv.js} +8 -4
- package/dist/{transform-postprocess-phase-xaw5c3xp.js → transform-postprocess-phase-zpgav0h7.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-f2xh7ba4.js} +1171 -448
- 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/payload.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-e6qzw477.js → message-index-48f7hw7a.js} +13 -13
- package/dist/v2/{message-index-bounded-dsrf49y7.js → message-index-bounded-w3hfm29z.js} +17 -17
- 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-zpgmxwte.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-4vfxej9t.js} +24 -24
- package/dist/v2/{search-archive-fn4wy8sx.js → search-archive-vv48s2aa.js} +8 -8
- package/dist/v2/{search-sf2vg5pk.js → search-kza414f0.js} +20 -20
- package/dist/v2/{send-session-notification-hmr7q0nt.js → send-session-notification-3pxn658x.js} +4 -4
- package/dist/v2/{server-n5q841qn.js → server-1nyybqan.js} +31 -20
- package/dist/v2/{server-785mb90s.js → server-1wy7b9de.js} +6 -3
- package/dist/v2/{server-0mzjjw3s.js → server-27gq4mfz.js} +27 -5
- package/dist/v2/{server-g59aatsz.js → server-2ehj0bw7.js} +965 -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-r9gjxcte.js → server-a2eqhkxr.js} +7 -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-6fyp0v67.js → server-bfpda1tb.js} +195 -749
- package/dist/v2/{server-05xjtq6c.js → server-d04vrx0j.js} +1 -1
- 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-gha9x4qq.js → server-h1v0pyxb.js} +2 -2
- package/dist/v2/{server-hgg55hde.js → server-hy3d3vsx.js} +1 -1
- 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-zyw55ygv.js → server-qv7f0hhe.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-1hcbw661.js → server-xhab8jx8.js} +60 -21
- package/dist/v2/{server-6714jebr.js → server-xj136kt8.js} +1 -1
- 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-3wdb8zph.js} +8 -4
- package/dist/v2/store-reader.d.ts +8 -0
- package/dist/v2/store-reader.d.ts.map +1 -1
- package/dist/v2/{wrapup-orchestrator-x4xj1782.js → wrapup-orchestrator-psqz7yh0.js} +24 -24
- package/dist/wrapup-orchestrator-s9zc5b00.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-s1ex9y6p.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-936py2wm.js";
|
|
151
147
|
import {
|
|
152
148
|
resolveHistorianModel2
|
|
153
149
|
} from "./index-8cd2j99z.js";
|
|
@@ -162,15 +158,17 @@ import {
|
|
|
162
158
|
openDatabaseAsync,
|
|
163
159
|
isDatabasePersisted,
|
|
164
160
|
getDatabasePersistenceError
|
|
165
|
-
} from "./index-
|
|
161
|
+
} from "./index-fgncb0ng.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,
|
|
170
|
+
markCoveredInstructionRow,
|
|
171
|
+
isCoveredInstructionRow,
|
|
174
172
|
DreamTokenBudgetExceeded,
|
|
175
173
|
createDreamTokenBudget,
|
|
176
174
|
recordToolParameters,
|
|
@@ -178,6 +176,7 @@ import {
|
|
|
178
176
|
assertExecutableToolInput,
|
|
179
177
|
getProtectionWindowForSession,
|
|
180
178
|
clearCachedM0M1,
|
|
179
|
+
clearCachedM0,
|
|
181
180
|
getChannel2NudgeState,
|
|
182
181
|
claimChannel2NudgeState,
|
|
183
182
|
casChannel2NudgeClaim,
|
|
@@ -199,36 +198,40 @@ import {
|
|
|
199
198
|
cleanUserText2,
|
|
200
199
|
readRawSessionMessageIdOrdinalsForRange2,
|
|
201
200
|
readRawSessionMessageOrdinalById2
|
|
202
|
-
} from "./index-
|
|
201
|
+
} from "./index-rmwykbbb.js";
|
|
203
202
|
import {
|
|
204
203
|
invalidateAutoEmbedSession,
|
|
205
204
|
clearEmbedSessionState
|
|
206
|
-
} from "./index-
|
|
205
|
+
} from "./index-ze7mvk54.js";
|
|
207
206
|
import {
|
|
208
207
|
hasMeaningfulUserText2,
|
|
209
208
|
preloadTokenizer,
|
|
210
209
|
estimateTokens
|
|
211
|
-
} from "./index-
|
|
212
|
-
import"./index-
|
|
210
|
+
} from "./index-c5pytzne.js";
|
|
211
|
+
import"./index-6x57ar45.js";
|
|
213
212
|
import {
|
|
214
213
|
inRootAsyncContext2,
|
|
215
214
|
withSqliteTransformPass2,
|
|
216
215
|
withoutSqliteTransformPass2,
|
|
217
216
|
isTransientSqliteError2,
|
|
218
217
|
withAsyncPrivilegedWriter2
|
|
219
|
-
} from "./index-
|
|
218
|
+
} from "./index-beht37jy.js";
|
|
220
219
|
import"./index-v0p37hm2.js";
|
|
221
|
-
import"./index-
|
|
222
|
-
import"./index-
|
|
220
|
+
import"./index-s734jcsr.js";
|
|
221
|
+
import"./index-a6mc0v4d.js";
|
|
223
222
|
import {
|
|
224
223
|
deleteChunkEmbedBackoffForSession
|
|
225
|
-
} from "./index-
|
|
224
|
+
} from "./index-b5vqckbw.js";
|
|
226
225
|
import"./index-nj7yykkx.js";
|
|
227
226
|
import {
|
|
228
227
|
BoundedSessionMap,
|
|
229
228
|
advanceSessionActivity,
|
|
230
|
-
backfillSessionActivity
|
|
231
|
-
|
|
229
|
+
backfillSessionActivity,
|
|
230
|
+
gaDatabasePath,
|
|
231
|
+
RAW_MESSAGE_TYPES,
|
|
232
|
+
V2StoreReaderPool,
|
|
233
|
+
V2StoreReader
|
|
234
|
+
} from "./index-x4njr8df.js";
|
|
232
235
|
import"./index-bp5083x2.js";
|
|
233
236
|
import"./index-1zx87sdm.js";
|
|
234
237
|
import {
|
|
@@ -237,20 +240,20 @@ import {
|
|
|
237
240
|
isDroppedToolOutput,
|
|
238
241
|
evaluateChannel2,
|
|
239
242
|
buildChannel2Reminder
|
|
240
|
-
} from "./index-
|
|
243
|
+
} from "./index-cf74k5ak.js";
|
|
241
244
|
import"./index-58e3y90n.js";
|
|
242
|
-
import"./index-
|
|
245
|
+
import"./index-kq82mtg0.js";
|
|
243
246
|
import {
|
|
244
247
|
getCurrentToolSetHash,
|
|
245
248
|
recordToolDefinition
|
|
246
|
-
} from "./index-
|
|
249
|
+
} from "./index-ke416mdc.js";
|
|
247
250
|
import"./index-fr0wbhdn.js";
|
|
248
|
-
import"./index-
|
|
251
|
+
import"./index-qn7xstt2.js";
|
|
249
252
|
import"./index-fb3zxn06.js";
|
|
250
253
|
import {
|
|
251
254
|
renderUserFacingFailure,
|
|
252
255
|
userFacingFailureCode
|
|
253
|
-
} from "./index-
|
|
256
|
+
} from "./index-v8awdgvd.js";
|
|
254
257
|
import {
|
|
255
258
|
createTagger,
|
|
256
259
|
cavemanWordRulesForLanguage,
|
|
@@ -259,29 +262,29 @@ import {
|
|
|
259
262
|
EmergencyFailClosedError,
|
|
260
263
|
DegradedPassRefusalError,
|
|
261
264
|
isSyntheticHeadMessage2
|
|
262
|
-
} from "./index-
|
|
263
|
-
import"./index-
|
|
265
|
+
} from "./index-e4xv8890.js";
|
|
266
|
+
import"./index-4s3t0nd0.js";
|
|
264
267
|
import"./index-qt1qqasc.js";
|
|
265
|
-
import"./index-
|
|
268
|
+
import"./index-rr2bb45z.js";
|
|
266
269
|
import"./index-4dhv7mqz.js";
|
|
267
|
-
import"./index-
|
|
268
|
-
import"./index-
|
|
269
|
-
import"./index-
|
|
270
|
+
import"./index-bjcnntmz.js";
|
|
271
|
+
import"./index-24fezq97.js";
|
|
272
|
+
import"./index-n37sebck.js";
|
|
270
273
|
import {
|
|
271
274
|
pushNotification2,
|
|
272
275
|
isTuiConnected2
|
|
273
276
|
} from "./index-x8a7jmkh.js";
|
|
274
277
|
import"./index-y9f76s3f.js";
|
|
275
|
-
import"./index-
|
|
276
|
-
import"./index-
|
|
277
|
-
import"./index-
|
|
278
|
+
import"./index-s74zqahq.js";
|
|
279
|
+
import"./index-s7j8tvhv.js";
|
|
280
|
+
import"./index-r4nkrs05.js";
|
|
278
281
|
import"./index-gp3kcpc4.js";
|
|
279
282
|
import {
|
|
280
283
|
detectConflicts
|
|
281
284
|
} from "./index-kee4kn5j.js";
|
|
282
285
|
import"./index-fmsr7v69.js";
|
|
283
286
|
import"./index-kaqs6h31.js";
|
|
284
|
-
import"./index-
|
|
287
|
+
import"./index-6s5941tm.js";
|
|
285
288
|
import {
|
|
286
289
|
isDreamerRunnable,
|
|
287
290
|
isSmartNoteSurfaceAvailable,
|
|
@@ -295,6 +298,9 @@ import {
|
|
|
295
298
|
} from "./index-y8v6yerm.js";
|
|
296
299
|
import"./index-k29z4aqh.js";
|
|
297
300
|
|
|
301
|
+
// src/v2/hooks/context.ts
|
|
302
|
+
import { setTimeout as delay } from "node:timers/promises";
|
|
303
|
+
|
|
298
304
|
// src/hooks/magic-context/history-boundary-repair.ts
|
|
299
305
|
function readBaseline(db, sessionId) {
|
|
300
306
|
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);
|
|
@@ -1275,6 +1281,8 @@ function adaptPayload(draft, admittedIDs = new Set, messageTimes = new Map) {
|
|
|
1275
1281
|
parts
|
|
1276
1282
|
};
|
|
1277
1283
|
originals.set(mapped, message);
|
|
1284
|
+
if (isCoveredInstructionRow(message))
|
|
1285
|
+
markCoveredInstructionRow(mapped.info);
|
|
1278
1286
|
if (typeof message.id !== "string")
|
|
1279
1287
|
bridgesByCarrier.set(mapped, byCallID);
|
|
1280
1288
|
messages.push(mapped);
|
|
@@ -1631,24 +1639,31 @@ ${data.output?.output ?? ""}`
|
|
|
1631
1639
|
const sameModel = sameProvider && previousModel?.id === model.id;
|
|
1632
1640
|
const reuse = sameModel && data.error === undefined;
|
|
1633
1641
|
const metadata = (state) => state === undefined ? undefined : { [model.providerID]: state };
|
|
1642
|
+
const reasoningInterrupted = data.content?.some((part) => part.type === "reasoning" && part.time !== undefined && part.time.completed === undefined);
|
|
1634
1643
|
const content = [];
|
|
1635
1644
|
const results = [];
|
|
1636
1645
|
for (const part of data.content ?? []) {
|
|
1646
|
+
let native = "native" in part ? part.native : part.type === "tool" ? part.providerState : part.state;
|
|
1647
|
+
if (part.type === "tool" && part.providerResultState !== null && typeof part.providerResultState === "object" && !Array.isArray(part.providerResultState))
|
|
1648
|
+
native = {
|
|
1649
|
+
...native !== null && typeof native === "object" && !Array.isArray(native) ? native : {},
|
|
1650
|
+
...part.providerResultState
|
|
1651
|
+
};
|
|
1637
1652
|
if (part.type === "text") {
|
|
1638
1653
|
if (part.text !== "")
|
|
1639
1654
|
content.push({
|
|
1640
1655
|
type: "text",
|
|
1641
1656
|
text: part.text,
|
|
1642
|
-
providerMetadata: reuse ? metadata(
|
|
1657
|
+
providerMetadata: reuse ? metadata(native) : undefined
|
|
1643
1658
|
});
|
|
1644
1659
|
continue;
|
|
1645
1660
|
}
|
|
1646
1661
|
if (part.type === "reasoning") {
|
|
1647
|
-
if (part.text !== "" || reuse &&
|
|
1662
|
+
if (part.text !== "" || reuse && !reasoningInterrupted && native !== undefined)
|
|
1648
1663
|
content.push({
|
|
1649
|
-
type:
|
|
1664
|
+
type: data.error === undefined && !reasoningInterrupted ? "reasoning" : "text",
|
|
1650
1665
|
text: part.text,
|
|
1651
|
-
providerMetadata: reuse ? metadata(
|
|
1666
|
+
providerMetadata: reuse && !reasoningInterrupted ? metadata(native) : undefined
|
|
1652
1667
|
});
|
|
1653
1668
|
continue;
|
|
1654
1669
|
}
|
|
@@ -1667,7 +1682,7 @@ ${data.output?.output ?? ""}`
|
|
|
1667
1682
|
name: part.name,
|
|
1668
1683
|
input,
|
|
1669
1684
|
providerExecuted: part.executed,
|
|
1670
|
-
providerMetadata: toolReuse ? metadata(
|
|
1685
|
+
providerMetadata: toolReuse ? metadata(native) : undefined
|
|
1671
1686
|
});
|
|
1672
1687
|
if (!completed)
|
|
1673
1688
|
continue;
|
|
@@ -1678,7 +1693,7 @@ ${data.output?.output ?? ""}`
|
|
|
1678
1693
|
id: part.id,
|
|
1679
1694
|
name: part.name,
|
|
1680
1695
|
providerExecuted: part.executed,
|
|
1681
|
-
providerMetadata:
|
|
1696
|
+
providerMetadata: (part.executed === true ? sameProvider : reuse) ? metadata(native) : undefined,
|
|
1682
1697
|
result: state.status === "error" ? { error: state.error, content: toolContent } : single?.type === "text" ? { type: "text", value: single.text } : { type: "content", value: toolContent },
|
|
1683
1698
|
...state.status === "error" ? { resultType: "error" } : {}
|
|
1684
1699
|
};
|
|
@@ -1706,13 +1721,50 @@ function copyNativeInput(messages) {
|
|
|
1706
1721
|
return copies;
|
|
1707
1722
|
}
|
|
1708
1723
|
function isLocalCheckpoint(row) {
|
|
1709
|
-
return row.type === "compaction" && row.data.status === "completed" && row.data.providerContext === undefined;
|
|
1724
|
+
return row.type === "compaction" && row.data.status === "completed" && row.data.providerContext === undefined && row.data.native?.messages === undefined;
|
|
1725
|
+
}
|
|
1726
|
+
function isAdmittedLocalCheckpoint(storage, sessionID, cut) {
|
|
1727
|
+
if (!isLocalCheckpoint(cut) || cut.session_id !== sessionID)
|
|
1728
|
+
return false;
|
|
1729
|
+
const admission = storage.admission(sessionID, cut.id);
|
|
1730
|
+
if (!admission?.payload || admission.digest !== foldDigest(admission.payload))
|
|
1731
|
+
return false;
|
|
1732
|
+
try {
|
|
1733
|
+
const snapshot = JSON.parse(admission.payload);
|
|
1734
|
+
return snapshot.source === storage.sourceID && snapshot.sessionID === sessionID && snapshot.admissionID === cut.id && snapshot.summary === cut.data.summary;
|
|
1735
|
+
} catch {
|
|
1736
|
+
return false;
|
|
1737
|
+
}
|
|
1710
1738
|
}
|
|
1711
1739
|
var conversational = (row) => RAW_MESSAGE_TYPES.includes(row.type) || row.type === "location-switched";
|
|
1740
|
+
var historyDigest = (reader, sessionID, through) => foldDigest(JSON.stringify(reader.range(sessionID, -1, through).filter(conversational)));
|
|
1741
|
+
var admissionKey = (sessionID) => `native-fold/v2/${encodeURIComponent(sessionID)}`;
|
|
1742
|
+
async function forgetNativeFoldProvenance(storage, sessionID, legacyOnly = false) {
|
|
1743
|
+
const remove = async (key) => {
|
|
1744
|
+
if (storage.remove)
|
|
1745
|
+
await storage.remove(key);
|
|
1746
|
+
else
|
|
1747
|
+
await storage.set(key, null);
|
|
1748
|
+
};
|
|
1749
|
+
if (!legacyOnly)
|
|
1750
|
+
await remove(admissionKey(sessionID));
|
|
1751
|
+
if (!storage.scan)
|
|
1752
|
+
return;
|
|
1753
|
+
let after;
|
|
1754
|
+
do {
|
|
1755
|
+
const page = await storage.scan({ prefix: "native-fold/v1/", after, limit: 100 });
|
|
1756
|
+
for (const { key } of page.entries) {
|
|
1757
|
+
if (key.slice("native-fold/v1/".length).split("/").slice(1).join("/") === sessionID)
|
|
1758
|
+
await remove(key);
|
|
1759
|
+
}
|
|
1760
|
+
after = page.next;
|
|
1761
|
+
} while (after);
|
|
1762
|
+
}
|
|
1712
1763
|
|
|
1713
1764
|
class NativeFoldReplay {
|
|
1714
1765
|
storage;
|
|
1715
1766
|
openReader;
|
|
1767
|
+
admissions;
|
|
1716
1768
|
changed = new Set;
|
|
1717
1769
|
dirty = new Set;
|
|
1718
1770
|
unavailable = new Set;
|
|
@@ -1720,9 +1772,11 @@ class NativeFoldReplay {
|
|
|
1720
1772
|
metadataThrough = new Map;
|
|
1721
1773
|
loaded = new Map;
|
|
1722
1774
|
sources = new Map;
|
|
1723
|
-
|
|
1775
|
+
staleHeads = new Set;
|
|
1776
|
+
constructor(storage, openReader, admissions) {
|
|
1724
1777
|
this.storage = storage;
|
|
1725
1778
|
this.openReader = openReader;
|
|
1779
|
+
this.admissions = admissions;
|
|
1726
1780
|
storage.onEvict((sessionID) => this.clear(sessionID));
|
|
1727
1781
|
}
|
|
1728
1782
|
account(sessionID) {
|
|
@@ -1761,6 +1815,51 @@ class NativeFoldReplay {
|
|
|
1761
1815
|
async baseline(sessionID) {
|
|
1762
1816
|
return this.tail(sessionID)?.baseline;
|
|
1763
1817
|
}
|
|
1818
|
+
admissionKey(sessionID) {
|
|
1819
|
+
return admissionKey(sessionID);
|
|
1820
|
+
}
|
|
1821
|
+
async removeAdmission(key) {
|
|
1822
|
+
if (this.admissions?.remove)
|
|
1823
|
+
await this.admissions.remove(key);
|
|
1824
|
+
else
|
|
1825
|
+
await this.admissions?.set(key, null);
|
|
1826
|
+
}
|
|
1827
|
+
async removeLegacyAdmissions(sessionID) {
|
|
1828
|
+
if (this.admissions)
|
|
1829
|
+
await forgetNativeFoldProvenance(this.admissions, sessionID, true);
|
|
1830
|
+
}
|
|
1831
|
+
async admits(sessionID, cut, reader) {
|
|
1832
|
+
if (!isLocalCheckpoint(cut) || cut.session_id !== sessionID)
|
|
1833
|
+
return false;
|
|
1834
|
+
if (isAdmittedLocalCheckpoint(this.storage, sessionID, cut))
|
|
1835
|
+
return true;
|
|
1836
|
+
if (!this.admissions)
|
|
1837
|
+
return false;
|
|
1838
|
+
try {
|
|
1839
|
+
const source = reader.hostIdentity();
|
|
1840
|
+
const saved = await this.admissions.get(this.admissionKey(sessionID));
|
|
1841
|
+
if (!saved?.payload || saved.digest !== foldDigest(saved.payload))
|
|
1842
|
+
return false;
|
|
1843
|
+
const snapshot = JSON.parse(saved.payload);
|
|
1844
|
+
if (snapshot.sourceDigest !== foldDigest(source) || snapshot.sessionID !== sessionID || snapshot.admissionID !== cut.id || snapshot.summaryDigest !== foldDigest(cut.data.summary ?? ""))
|
|
1845
|
+
return false;
|
|
1846
|
+
if (snapshot.historyDigest !== historyDigest(reader, sessionID, cut.seq - 1)) {
|
|
1847
|
+
this.staleHeads.add(sessionID);
|
|
1848
|
+
this.invalidate(sessionID);
|
|
1849
|
+
await this.removeAdmission(this.admissionKey(sessionID));
|
|
1850
|
+
return false;
|
|
1851
|
+
}
|
|
1852
|
+
await this.storage.supply(sessionID, cut.id, JSON.stringify({
|
|
1853
|
+
source: this.storage.sourceID,
|
|
1854
|
+
sessionID,
|
|
1855
|
+
admissionID: cut.id,
|
|
1856
|
+
summary: cut.data.summary
|
|
1857
|
+
}));
|
|
1858
|
+
return true;
|
|
1859
|
+
} catch {
|
|
1860
|
+
return false;
|
|
1861
|
+
}
|
|
1862
|
+
}
|
|
1764
1863
|
rendered(row, model) {
|
|
1765
1864
|
return restoreRow(row, model, hostUsesMediaAssets() ? {
|
|
1766
1865
|
asset: hostMediaAsset,
|
|
@@ -1838,6 +1937,7 @@ class NativeFoldReplay {
|
|
|
1838
1937
|
this.loaded.set(draft.sessionID, through);
|
|
1839
1938
|
this.unavailable.delete(draft.sessionID);
|
|
1840
1939
|
this.changed.delete(draft.sessionID);
|
|
1940
|
+
this.staleHeads.delete(draft.sessionID);
|
|
1841
1941
|
} finally {
|
|
1842
1942
|
reader.close();
|
|
1843
1943
|
}
|
|
@@ -1864,7 +1964,8 @@ class NativeFoldReplay {
|
|
|
1864
1964
|
async supplyHeld(args) {
|
|
1865
1965
|
const { draft, reader, summary } = args;
|
|
1866
1966
|
const tail = this.tail(draft.sessionID);
|
|
1867
|
-
const
|
|
1967
|
+
const running = reader.latestRunningCompaction(draft.sessionID);
|
|
1968
|
+
const id = running?.id;
|
|
1868
1969
|
if (!id || !tail || tail.model !== `${draft.model.providerID}/${draft.model.id}`)
|
|
1869
1970
|
return false;
|
|
1870
1971
|
const through = reader.latestSequence(draft.sessionID);
|
|
@@ -1888,6 +1989,21 @@ class NativeFoldReplay {
|
|
|
1888
1989
|
summary
|
|
1889
1990
|
};
|
|
1890
1991
|
await this.storage.supply(draft.sessionID, id, JSON.stringify(snapshot));
|
|
1992
|
+
if (this.admissions) {
|
|
1993
|
+
const provenance = {
|
|
1994
|
+
sourceDigest: foldDigest(reader.hostIdentity()),
|
|
1995
|
+
sessionID: draft.sessionID,
|
|
1996
|
+
admissionID: id,
|
|
1997
|
+
summaryDigest: foldDigest(summary),
|
|
1998
|
+
historyDigest: historyDigest(reader, draft.sessionID, (running?.seq ?? through) - 1)
|
|
1999
|
+
};
|
|
2000
|
+
const payload = JSON.stringify(provenance);
|
|
2001
|
+
await this.admissions.set(this.admissionKey(draft.sessionID), {
|
|
2002
|
+
payload,
|
|
2003
|
+
digest: foldDigest(payload)
|
|
2004
|
+
});
|
|
2005
|
+
await this.removeLegacyAdmissions(draft.sessionID);
|
|
2006
|
+
}
|
|
1891
2007
|
return true;
|
|
1892
2008
|
}
|
|
1893
2009
|
async restore(sessionID, cut, model, options = {}) {
|
|
@@ -1972,6 +2088,9 @@ class NativeFoldReplay {
|
|
|
1972
2088
|
sourceChanged(sessionID) {
|
|
1973
2089
|
return this.changed.has(sessionID);
|
|
1974
2090
|
}
|
|
2091
|
+
needsHeadRebuild(sessionID) {
|
|
2092
|
+
return this.staleHeads.has(sessionID);
|
|
2093
|
+
}
|
|
1975
2094
|
clear(sessionID) {
|
|
1976
2095
|
this.sources.delete(sessionID);
|
|
1977
2096
|
this.metadata.delete(sessionID);
|
|
@@ -1980,8 +2099,11 @@ class NativeFoldReplay {
|
|
|
1980
2099
|
this.unavailable.delete(sessionID);
|
|
1981
2100
|
this.dirty.delete(sessionID);
|
|
1982
2101
|
this.changed.delete(sessionID);
|
|
2102
|
+
this.staleHeads.delete(sessionID);
|
|
1983
2103
|
}
|
|
1984
2104
|
async forget(sessionID) {
|
|
2105
|
+
if (this.admissions)
|
|
2106
|
+
await forgetNativeFoldProvenance(this.admissions, sessionID);
|
|
1985
2107
|
await this.storage.forget(sessionID);
|
|
1986
2108
|
}
|
|
1987
2109
|
}
|
|
@@ -1996,11 +2118,7 @@ class HostFoldPolicy {
|
|
|
1996
2118
|
this.deps = deps;
|
|
1997
2119
|
}
|
|
1998
2120
|
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;
|
|
2121
|
+
return cut.id === id && isAdmittedLocalCheckpoint(this.deps.storage, sessionID, cut);
|
|
2004
2122
|
}
|
|
2005
2123
|
async idle(sessionID) {
|
|
2006
2124
|
const { storage, session, threshold } = this.deps;
|
|
@@ -4638,6 +4756,11 @@ async function applyV2SystemPrompt(systemPrompt, draft) {
|
|
|
4638
4756
|
text
|
|
4639
4757
|
})));
|
|
4640
4758
|
}
|
|
4759
|
+
function coveredInstructionRows(reader, sessionID, throughSeq, model) {
|
|
4760
|
+
if (throughSeq < 0)
|
|
4761
|
+
return [];
|
|
4762
|
+
return reader.instructionRowsThrough(sessionID, throughSeq).flatMap((row) => restoreRow(row, model)).map((message) => markCoveredInstructionRow(message));
|
|
4763
|
+
}
|
|
4641
4764
|
async function registerContext(context) {
|
|
4642
4765
|
const directory = context.location.directory;
|
|
4643
4766
|
const config = loadPluginConfigDetailed(directory).config;
|
|
@@ -4677,7 +4800,7 @@ async function registerContext(context) {
|
|
|
4677
4800
|
}
|
|
4678
4801
|
const folds = new FoldOwner(context.storage);
|
|
4679
4802
|
const nativeFoldMemory = !compactionOff && process.env.MC_OC2_INVISIBLE_FOLD === "1" ? nativeFoldCache(() => storage.require()) : undefined;
|
|
4680
|
-
const nativeFoldReplay = nativeFoldMemory ? new NativeFoldReplay(nativeFoldMemory, () => openStoreReader()) : undefined;
|
|
4803
|
+
const nativeFoldReplay = nativeFoldMemory ? new NativeFoldReplay(nativeFoldMemory, () => openStoreReader(), context.storage) : undefined;
|
|
4681
4804
|
setOutputReserveConfig(config.output_reserve);
|
|
4682
4805
|
const queriedModels = new Set;
|
|
4683
4806
|
const rawLimits = new Map;
|
|
@@ -4729,6 +4852,7 @@ async function registerContext(context) {
|
|
|
4729
4852
|
memorySyncRequestedSessions: rustMemorySyncRequestedSessions
|
|
4730
4853
|
}) : undefined;
|
|
4731
4854
|
const hiddenChildHook = new HiddenChildHook;
|
|
4855
|
+
await context.session.hook("http.request", (draft) => hiddenChildHook.cacheRequest(draft));
|
|
4732
4856
|
const tools = db && isDatabasePersisted(db) ? await registerTools(context, db, config, moduleToolBackends?.backends, (id) => hiddenChildHook.owns(id)) : undefined;
|
|
4733
4857
|
const usage = new Map;
|
|
4734
4858
|
const generateReplay = new V2GenerateReplay;
|
|
@@ -5105,87 +5229,114 @@ async function registerContext(context) {
|
|
|
5105
5229
|
}) : undefined;
|
|
5106
5230
|
const usageController = new AbortController;
|
|
5107
5231
|
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
|
-
|
|
5232
|
+
let retry = 0;
|
|
5233
|
+
while (!usageController.signal.aborted) {
|
|
5234
|
+
const subscribedAt = Date.now();
|
|
5235
|
+
try {
|
|
5236
|
+
for await (const value of context.event.subscribe({
|
|
5237
|
+
signal: usageController.signal
|
|
5238
|
+
})) {
|
|
5239
|
+
if (usageController.signal.aborted)
|
|
5240
|
+
break;
|
|
5241
|
+
const event = value;
|
|
5242
|
+
try {
|
|
5243
|
+
if (event.type === "provider.updated" || event.type === "model.updated") {
|
|
5244
|
+
queriedModels.clear();
|
|
5245
|
+
continue;
|
|
5246
|
+
}
|
|
5247
|
+
if (!event.data?.sessionID)
|
|
5248
|
+
continue;
|
|
5249
|
+
const sessionID = event.data.sessionID;
|
|
5250
|
+
if (event.type?.startsWith("session.revert.") || event.type === "session.message.content.updated") {
|
|
5251
|
+
nativeFoldReplay?.onEvent(event);
|
|
5252
|
+
restoredRows.forget(sessionID);
|
|
5253
|
+
}
|
|
5254
|
+
if (event.type === "session.error" || event.type === "session.execution.failed") {
|
|
5255
|
+
const error = hiddenTerminalError(event);
|
|
5256
|
+
if (error !== undefined)
|
|
5257
|
+
hiddenSessionErrors.set(sessionID, error);
|
|
5258
|
+
if (error !== undefined && db && !compactionOff) {
|
|
5259
|
+
const model = liveModels.get(sessionID);
|
|
5260
|
+
try {
|
|
5261
|
+
armLatestThinkingRecoveryFromError({
|
|
5262
|
+
db,
|
|
5263
|
+
sessionId: sessionID,
|
|
5264
|
+
error,
|
|
5265
|
+
providerID: model?.providerID,
|
|
5266
|
+
modelID: model?.modelID
|
|
5267
|
+
});
|
|
5268
|
+
} catch (armError) {
|
|
5269
|
+
log2("[magic-context] v2 latest-thinking recovery arm failed", armError);
|
|
5270
|
+
}
|
|
5271
|
+
}
|
|
5272
|
+
continue;
|
|
5273
|
+
}
|
|
5274
|
+
if (event.type === "session.deleted") {
|
|
5275
|
+
clearLkgMeasuredRequest(sessionID);
|
|
5276
|
+
deletedSessions.add(sessionID);
|
|
5277
|
+
transform?.clearSessionLogState(sessionID);
|
|
5278
|
+
if (db) {
|
|
5279
|
+
markSessionCleanupPending(db, sessionID);
|
|
5280
|
+
clearSession(db, sessionID);
|
|
5281
|
+
}
|
|
5282
|
+
rawProviders.get(sessionID)?.();
|
|
5283
|
+
rawProviders.delete(sessionID);
|
|
5284
|
+
usage.delete(sessionID);
|
|
5285
|
+
hiddenSessionErrors.delete(sessionID);
|
|
5286
|
+
storageNoticeBySession.delete(sessionID);
|
|
5287
|
+
liveModels.delete(sessionID);
|
|
5288
|
+
variants.delete(sessionID);
|
|
5289
|
+
agents.delete(sessionID);
|
|
5290
|
+
channel1.delete(sessionID);
|
|
5291
|
+
commitSeenLastPass.delete(sessionID);
|
|
5292
|
+
clearEmbedSessionState(sessionID);
|
|
5293
|
+
historyRefreshSessions.delete(sessionID);
|
|
5294
|
+
clearPendingMaterialization(pendingMaterializationSessions, sessionID);
|
|
5295
|
+
lastHeuristicsTurnId.delete(sessionID);
|
|
5296
|
+
restoredRows.forget(sessionID);
|
|
5297
|
+
if (nativeFoldReplay)
|
|
5298
|
+
await nativeFoldReplay.forget(sessionID);
|
|
5299
|
+
else
|
|
5300
|
+
await forgetNativeFoldProvenance(context.storage, sessionID);
|
|
5301
|
+
generateReplay.forget(sessionID);
|
|
5302
|
+
systemPromptRefreshSessions.delete(sessionID);
|
|
5303
|
+
systemPrompt?.clearSession(sessionID);
|
|
5304
|
+
tagger.cleanup(sessionID);
|
|
5305
|
+
continue;
|
|
5306
|
+
}
|
|
5307
|
+
if (event.type !== "session.execution.succeeded")
|
|
5308
|
+
continue;
|
|
5129
5309
|
const model = liveModels.get(sessionID);
|
|
5130
|
-
|
|
5131
|
-
|
|
5132
|
-
|
|
5133
|
-
|
|
5134
|
-
error,
|
|
5135
|
-
providerID: model?.providerID,
|
|
5136
|
-
modelID: model?.modelID
|
|
5310
|
+
if (model) {
|
|
5311
|
+
await recordUsage({
|
|
5312
|
+
sessionID,
|
|
5313
|
+
model: { providerID: model.providerID, id: model.modelID }
|
|
5137
5314
|
});
|
|
5138
|
-
|
|
5139
|
-
|
|
5315
|
+
if (!compactionOff && typeof await nativeFoldReplay?.baseline(sessionID) === "string")
|
|
5316
|
+
hostFolds?.idle(sessionID);
|
|
5140
5317
|
}
|
|
5318
|
+
} catch (error) {
|
|
5319
|
+
log2(`[magic-context] v2 event handler failed (type=${event.type ?? "unknown"}, session=${event.data?.sessionID ?? "none"})`, error);
|
|
5141
5320
|
}
|
|
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
5321
|
}
|
|
5322
|
+
} catch (error) {
|
|
5323
|
+
if (!usageController.signal.aborted)
|
|
5324
|
+
log2("[magic-context] v2 usage subscription failed", error);
|
|
5325
|
+
}
|
|
5326
|
+
if (usageController.signal.aborted)
|
|
5327
|
+
break;
|
|
5328
|
+
if (Date.now() - subscribedAt >= 30000)
|
|
5329
|
+
retry = 0;
|
|
5330
|
+
const ceiling = Math.min(30000, 250 * 2 ** retry);
|
|
5331
|
+
retry = Math.min(retry + 1, 7);
|
|
5332
|
+
try {
|
|
5333
|
+
await delay(ceiling * (0.5 + Math.random() * 0.5), undefined, {
|
|
5334
|
+
signal: usageController.signal
|
|
5335
|
+
});
|
|
5336
|
+
} catch (error) {
|
|
5337
|
+
if (!usageController.signal.aborted)
|
|
5338
|
+
throw error;
|
|
5185
5339
|
}
|
|
5186
|
-
} catch (error) {
|
|
5187
|
-
if (!usageController.signal.aborted)
|
|
5188
|
-
log2("[magic-context] v2 usage subscription failed", error);
|
|
5189
5340
|
}
|
|
5190
5341
|
})();
|
|
5191
5342
|
const materialize = (draft) => {
|
|
@@ -5458,6 +5609,7 @@ async function registerContext(context) {
|
|
|
5458
5609
|
compactionOff,
|
|
5459
5610
|
storeGeneration: "v2",
|
|
5460
5611
|
normalizeRestoredAssistantText: stripCopiedTagNotation,
|
|
5612
|
+
refreshSourceContents: (sessionID) => nativeFoldReplay?.needsHeadRebuild(sessionID) ?? false,
|
|
5461
5613
|
hostCleanupCompactionMarkers: () => ({
|
|
5462
5614
|
verified: true,
|
|
5463
5615
|
removedLineages: 0,
|
|
@@ -5546,12 +5698,13 @@ async function registerContext(context) {
|
|
|
5546
5698
|
historyRefreshSessions.add(draft.sessionID);
|
|
5547
5699
|
requestPendingMaterialization(pendingMaterializationSessions, draft.sessionID, "boundary_repair");
|
|
5548
5700
|
}
|
|
5549
|
-
const
|
|
5701
|
+
const localCut = cut && isLocalCheckpoint(cut) ? cut : undefined;
|
|
5702
|
+
const incoming = localCut && draft.messages.find((message) => message.id === localCut.id);
|
|
5550
5703
|
postFold = cut !== undefined;
|
|
5551
|
-
if (
|
|
5704
|
+
if (localCut && !incoming)
|
|
5552
5705
|
throw new Error("The host checkpoint disappeared from the context draft");
|
|
5553
5706
|
let nativeRestored;
|
|
5554
|
-
if (cut && nativeFoldReplay &&
|
|
5707
|
+
if (cut && nativeFoldReplay && await nativeFoldReplay.admits(draft.sessionID, cut, reader)) {
|
|
5555
5708
|
try {
|
|
5556
5709
|
nativeRestored = await nativeFoldReplay.restore(draft.sessionID, cut, `${draft.model.providerID}/${draft.model.id}`, { bounded: !rustModeModuleClient });
|
|
5557
5710
|
} catch (error) {
|
|
@@ -5560,7 +5713,11 @@ async function registerContext(context) {
|
|
|
5560
5713
|
nativeRestored = await nativeFoldReplay.restoreRead(draft.sessionID, cut, draft.model);
|
|
5561
5714
|
}
|
|
5562
5715
|
}
|
|
5563
|
-
if (
|
|
5716
|
+
if (cut && nativeFoldReplay?.sourceChanged(draft.sessionID)) {
|
|
5717
|
+
if (db && !rustModeModuleClient && nativeFoldReplay.needsHeadRebuild(draft.sessionID))
|
|
5718
|
+
clearCachedM0(db, draft.sessionID);
|
|
5719
|
+
if (nativeFoldReplay.needsHeadRebuild(draft.sessionID))
|
|
5720
|
+
restoredRows.forget(draft.sessionID);
|
|
5564
5721
|
historyRefreshSessions.add(draft.sessionID);
|
|
5565
5722
|
requestPendingMaterialization(pendingMaterializationSessions, draft.sessionID, "host_history_change");
|
|
5566
5723
|
}
|
|
@@ -5571,25 +5728,27 @@ async function registerContext(context) {
|
|
|
5571
5728
|
return !id || !present.has(id);
|
|
5572
5729
|
});
|
|
5573
5730
|
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
|
-
|
|
5731
|
+
} else if (localCut && cut && incoming) {
|
|
5732
|
+
if (!nativeFoldReplay) {
|
|
5733
|
+
const identity = await folds.observe({
|
|
5734
|
+
sessionID: draft.sessionID,
|
|
5735
|
+
cutSeq: cut.seq,
|
|
5736
|
+
summary: cut.data.summary ?? "",
|
|
5737
|
+
rendered: incoming,
|
|
5738
|
+
onHard: (reason) => {
|
|
5739
|
+
sessionLog2(draft.sessionID, `HARD reason=${reason}`);
|
|
5740
|
+
materialize(draft);
|
|
5741
|
+
requestPendingMaterialization(pendingMaterializationSessions, draft.sessionID, "host_compaction");
|
|
5742
|
+
}
|
|
5743
|
+
});
|
|
5744
|
+
checkpoint = structuredClone(identity.rendered ?? incoming);
|
|
5745
|
+
submitted = identity.rendered ? identity.renderedSummary ?? identity.submitted : cut.data.summary ?? "";
|
|
5746
|
+
}
|
|
5588
5747
|
const moduleBoundaryID = rustModeModuleClient ? getPersistedCompactionMarkerState(db, draft.sessionID)?.boundaryMessageId ?? null : null;
|
|
5589
5748
|
const moduleBoundarySeq = moduleBoundaryID ? reader.sequenceForId(draft.sessionID, moduleBoundaryID) : undefined;
|
|
5590
5749
|
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
5750
|
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;
|
|
5751
|
+
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
5752
|
if (moduleBoundarySeq !== undefined)
|
|
5594
5753
|
sessionLog2(draft.sessionID, `v2 restore: from the module boundary ${moduleBoundaryID} to the host checkpoint`);
|
|
5595
5754
|
const present = new Set(draft.messages.map((message) => message.id));
|
|
@@ -5597,7 +5756,7 @@ async function registerContext(context) {
|
|
|
5597
5756
|
asset: hostMediaAsset,
|
|
5598
5757
|
unavailable: (detail) => sessionLog2(draft.sessionID, `v2 restore: attachment replaced by a note row=${detail.rowID} name=${JSON.stringify(detail.name ?? null)} mediaType=${detail.mediaType} reason=${JSON.stringify(detail.reason)}`)
|
|
5599
5758
|
} : undefined));
|
|
5600
|
-
draft.messages.splice(0, draft.messages.length, ...restored, ...draft.messages.filter((message) => message !== incoming));
|
|
5759
|
+
draft.messages.splice(0, draft.messages.length, ...rustModeModuleClient ? [] : coveredInstructionRows(reader, draft.sessionID, Math.min(boundary, cut.seq), draft.model), ...restored, ...draft.messages.filter((message) => message !== incoming));
|
|
5601
5760
|
}
|
|
5602
5761
|
if (config.temporal_awareness === true)
|
|
5603
5762
|
messageTimes = reader.messageTimes(draft.sessionID, draft.messages.flatMap((message) => message.id ? [message.id] : []));
|
|
@@ -5840,13 +5999,13 @@ ${baseline}
|
|
|
5840
5999
|
}, 0));
|
|
5841
6000
|
return {
|
|
5842
6001
|
async dispose() {
|
|
6002
|
+
usageController.abort();
|
|
5843
6003
|
await hiddenCompletionExecutor?.dispose();
|
|
6004
|
+
await usageDone;
|
|
5844
6005
|
rpcStopped = true;
|
|
5845
6006
|
rpcServer.stop();
|
|
5846
6007
|
transform?.disposeRust();
|
|
5847
6008
|
tools?.dispose();
|
|
5848
|
-
usageController.abort();
|
|
5849
|
-
await usageDone;
|
|
5850
6009
|
deletedSessions.clear();
|
|
5851
6010
|
await dreamTrigger?.dispose();
|
|
5852
6011
|
await maintenanceTimer?.dispose();
|