@cortexkit/opencode-magic-context 0.49.20 → 0.49.22
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 +6 -6
- package/dist/chunk-embedding-write-worker.js +9 -9
- package/dist/{compaction-marker-candidates-b2q30cft.js → compaction-marker-candidates-31h86ph0.js} +2 -2
- package/dist/compaction-marker-candidates-worker.js +2 -2
- package/dist/{compartment-chunk-embedding-va090as0.js → compartment-chunk-embedding-he60aaa2.js} +5 -5
- package/dist/config/project-security.d.ts.map +1 -1
- package/dist/config/schema/magic-context.d.ts +37 -3
- package/dist/config/schema/magic-context.d.ts.map +1 -1
- package/dist/{conflict-warning-hook-frp3z2wk.js → conflict-warning-hook-2r32hyx6.js} +5 -5
- package/dist/{context-mkece1db.js → context-j7hp43a0.js} +153 -83
- package/dist/{embedding-backfill-gy3p78py.js → embedding-backfill-dtke6tck.js} +11 -11
- package/dist/embedding-worker-process.js +1 -1
- package/dist/embedding-worker.js +4 -4
- package/dist/features/magic-context/dreamer/docs-proposals.d.ts +1 -0
- package/dist/features/magic-context/dreamer/docs-proposals.d.ts.map +1 -1
- package/dist/features/magic-context/dreamer/task-executor.d.ts.map +1 -1
- package/dist/features/magic-context/memory/embedding-synapse.d.ts.map +1 -1
- package/dist/features/magic-context/memory/embedding-worker-client.d.ts +7 -1
- package/dist/features/magic-context/memory/embedding-worker-client.d.ts.map +1 -1
- package/dist/features/magic-context/message-index-async.d.ts +7 -2
- package/dist/features/magic-context/message-index-async.d.ts.map +1 -1
- package/dist/features/magic-context/project-embedding-registry.d.ts +2 -0
- package/dist/features/magic-context/project-embedding-registry.d.ts.map +1 -1
- package/dist/features/magic-context/search-rerank.d.ts +9 -2
- package/dist/features/magic-context/search-rerank.d.ts.map +1 -1
- package/dist/features/magic-context/search.d.ts +2 -0
- package/dist/features/magic-context/search.d.ts.map +1 -1
- package/dist/features/magic-context/storage-db.d.ts +2 -0
- package/dist/features/magic-context/storage-db.d.ts.map +1 -1
- package/dist/features/magic-context/storage-meta-persisted.d.ts +1 -0
- package/dist/features/magic-context/storage-meta-persisted.d.ts.map +1 -1
- package/dist/hooks/magic-context/auto-search-worker-client.d.ts.map +1 -1
- package/dist/hooks/magic-context/cache-busting-signals.d.ts +1 -0
- package/dist/hooks/magic-context/cache-busting-signals.d.ts.map +1 -1
- package/dist/hooks/magic-context/hook.d.ts.map +1 -1
- package/dist/hooks/magic-context/served-shape-repair.d.ts +19 -0
- package/dist/hooks/magic-context/served-shape-repair.d.ts.map +1 -0
- package/dist/hooks/magic-context/strip-content.d.ts +4 -2
- package/dist/hooks/magic-context/strip-content.d.ts.map +1 -1
- package/dist/hooks/magic-context/tag-content-primitives.d.ts +1 -1
- package/dist/hooks/magic-context/tag-content-primitives.d.ts.map +1 -1
- package/dist/hooks/magic-context/tag-messages.d.ts +2 -1
- package/dist/hooks/magic-context/tag-messages.d.ts.map +1 -1
- package/dist/hooks/magic-context/text-complete.d.ts +1 -1
- package/dist/hooks/magic-context/text-complete.d.ts.map +1 -1
- package/dist/hooks/magic-context/transform-postprocess-phase.d.ts.map +1 -1
- package/dist/hooks/magic-context/transform.d.ts +2 -2
- package/dist/hooks/magic-context/transform.d.ts.map +1 -1
- package/dist/{index-t7hx3qcb.js → index-11gzxvf4.js} +101 -46
- package/dist/{index-neb2jaed.js → index-1gtfne2c.js} +1 -1
- package/dist/{index-67nyj0gy.js → index-1kbznkft.js} +48 -24
- package/dist/{index-1pefp8ar.js → index-3svaejkh.js} +4 -4
- package/dist/{index-0wthn7fp.js → index-51rdvtkz.js} +35 -4
- package/dist/{index-kc9pn495.js → index-66eby7hx.js} +1 -1
- package/dist/{index-pnjwa6qa.js → index-9q1g3c5q.js} +2 -2
- package/dist/{index-rmd0069m.js → index-a9zvn5fe.js} +24 -10
- package/dist/{index-jfh3cktr.js → index-ffzhwfzy.js} +3 -3
- package/dist/{v2/server-1zx2pa5d.js → index-gzy5w8ya.js} +193 -4
- package/dist/{index-d6rp4dxh.js → index-j32jj2t8.js} +4 -4
- package/dist/{index-35qc6606.js → index-jfem3dgz.js} +1 -1
- package/dist/{index-y4a3nhtk.js → index-jjvbk92s.js} +1 -1
- package/dist/{index-4n7w9rad.js → index-jmq8kfe7.js} +5 -5
- package/dist/{index-c4b76d4t.js → index-kfyb3k6n.js} +1 -1
- package/dist/{index-vkc1ca9p.js → index-kq5w68dp.js} +1 -1
- package/dist/{index-11zf2wwc.js → index-ksq50rg0.js} +2 -2
- package/dist/{index-153r2q6z.js → index-m32esgmj.js} +2 -2
- package/dist/{index-x4k3f4mf.js → index-mnhcdfxg.js} +148 -8
- package/dist/{index-48stjd56.js → index-mnnkgq0q.js} +10 -4
- package/dist/{index-wgypt3cs.js → index-nxrsns5x.js} +2466 -1290
- package/dist/{index-616rsjrv.js → index-qgh1qwjj.js} +1 -1
- package/dist/{index-jr5na10t.js → index-rxqr723x.js} +4 -4
- package/dist/{index-dc8hy95c.js → index-syaazvy2.js} +123 -40
- package/dist/{index-adk2z5d8.js → index-wfybj1dw.js} +2 -4
- package/dist/{index-305y133n.js → index-whcgcfrv.js} +6 -3
- package/dist/{index-jmycsey7.js → index-x6cbrv9h.js} +2 -2
- package/dist/{index-v7r4td4c.js → index-y76rhsnr.js} +28 -17
- package/dist/{index-2yhtnfcf.js → index-zy67whjr.js} +26 -8
- package/dist/index.js +43 -42
- package/dist/{message-fts-rowid-map-22tevnnj.js → message-fts-rowid-map-e79b7b6x.js} +3 -3
- package/dist/{message-index-5qxcz6h7.js → message-index-4q8ek2fc.js} +10 -10
- package/dist/{message-index-bounded-n0m0t7tv.js → message-index-bounded-rydsg9r5.js} +10 -10
- package/dist/{message-time-backfill-0myx7fz3.js → message-time-backfill-4qva0b4f.js} +1 -1
- package/dist/migration-worker.js +6 -6
- package/dist/plugin/embedding-bootstrap.d.ts +1 -0
- package/dist/plugin/embedding-bootstrap.d.ts.map +1 -1
- package/dist/plugin/hooks/create-session-hooks.d.ts +1 -0
- package/dist/plugin/hooks/create-session-hooks.d.ts.map +1 -1
- package/dist/plugin/tool-registry.d.ts.map +1 -1
- package/dist/{project-embedding-registry-s2pqgec9.js → project-embedding-registry-hn529988.js} +12 -10
- package/dist/raw-ordinal-warmup-worker.js +8 -8
- package/dist/{read-session-chunk-0a8vdyqp.js → read-session-chunk-t039f0m5.js} +6 -6
- package/dist/{read-session-raw-y5cszf0b.js → read-session-raw-aw6jgvwg.js} +2 -2
- package/dist/{recomp-orchestrator-61vyha9j.js → recomp-orchestrator-hbm53jj5.js} +23 -23
- package/dist/{search-archive-8q9s49p5.js → search-archive-weh164mh.js} +7 -7
- package/dist/{search-v1y9ejws.js → search-hea079d7.js} +19 -19
- package/dist/{send-session-notification-0k6qzydk.js → send-session-notification-gqzkz7da.js} +4 -4
- package/dist/shared/sqlite.d.ts +5 -0
- package/dist/shared/sqlite.d.ts.map +1 -1
- package/dist/shared/tag-transcript.d.ts +2 -0
- package/dist/shared/tag-transcript.d.ts.map +1 -1
- package/dist/{sqlite-1rpvw2rj.js → sqlite-zdgm52sv.js} +5 -1
- package/dist/{storage-memory-nm7v82mj.js → storage-memory-e6a7mb0k.js} +2 -2
- package/dist/{storage-tags-r6nk29n4.js → storage-tags-a77q4v77.js} +2 -2
- package/dist/tools/ctx-search/tools.d.ts.map +1 -1
- package/dist/tools/ctx-search/types.d.ts +1 -0
- package/dist/tools/ctx-search/types.d.ts.map +1 -1
- package/dist/{transform-postprocess-phase-vtrgb7m6.js → transform-postprocess-phase-0b04tm1p.js} +23 -23
- package/dist/v2/auto-search-worker.js +6 -6
- package/dist/v2/chunk-embedding-write-worker.js +11 -11
- package/dist/v2/{compaction-marker-candidates-cfab70cs.js → compaction-marker-candidates-m4vmye3w.js} +2 -2
- package/dist/v2/compaction-marker-candidates-worker.js +2 -2
- package/dist/v2/{compartment-chunk-embedding-nbdqx1td.js → compartment-chunk-embedding-8jjmcgeg.js} +5 -5
- package/dist/v2/{context-cc33tv2z.js → context-ea3x7smm.js} +652 -468
- package/dist/v2/{embedding-backfill-yxv2h5mc.js → embedding-backfill-5e74ae0m.js} +11 -11
- package/dist/v2/embedding-worker-process.js +1 -1
- package/dist/v2/embedding-worker.js +4 -4
- package/dist/v2/hooks/context.d.ts.map +1 -1
- package/dist/v2/hooks/copied-tag-notation.d.ts +1 -1
- package/dist/v2/hooks/copied-tag-notation.d.ts.map +1 -1
- package/dist/v2/hooks/dream-timer.d.ts +2 -0
- package/dist/v2/hooks/dream-timer.d.ts.map +1 -1
- package/dist/v2/hooks/embedding-lifecycle.d.ts +7 -0
- package/dist/v2/hooks/embedding-lifecycle.d.ts.map +1 -0
- package/dist/v2/hooks/payload.d.ts.map +1 -1
- package/dist/v2/hooks/store.d.ts +2 -0
- package/dist/v2/hooks/store.d.ts.map +1 -1
- package/dist/v2/hooks/tools.d.ts +2 -1
- package/dist/v2/hooks/tools.d.ts.map +1 -1
- package/dist/v2/hooks/transform-features.d.ts +2 -2
- package/dist/v2/hooks/transform-features.d.ts.map +1 -1
- package/dist/v2/{message-fts-rowid-map-dg12wymk.js → message-fts-rowid-map-n8fdg2ja.js} +3 -3
- package/dist/v2/{message-index-bounded-f4e01xk0.js → message-index-bounded-8rcd7qq9.js} +12 -12
- package/dist/v2/{message-index-ydzrp6y6.js → message-index-qz9wdp82.js} +12 -12
- package/dist/v2/{message-time-backfill-ddh8n9gy.js → message-time-backfill-zvthw6xb.js} +1 -1
- package/dist/v2/migration-worker.js +8 -8
- package/dist/v2/{project-embedding-registry-deza9ksw.js → project-embedding-registry-v38q4xd5.js} +12 -10
- package/dist/v2/raw-ordinal-warmup-worker.js +8 -8
- package/dist/v2/{read-session-chunk-8cxfagky.js → read-session-chunk-wazfyxcg.js} +8 -8
- package/dist/v2/{read-session-raw-1nrrecvx.js → read-session-raw-b70cpwzj.js} +2 -2
- package/dist/v2/{recomp-orchestrator-47m4hv5g.js → recomp-orchestrator-b12zaptj.js} +25 -25
- package/dist/v2/{search-archive-e80cvc09.js → search-archive-x64rtz1z.js} +9 -9
- package/dist/v2/{search-fjz746zr.js → search-hza9x72a.js} +21 -21
- package/dist/v2/{send-session-notification-nwvrv34d.js → send-session-notification-8eqe259v.js} +4 -4
- package/dist/v2/{server-4sxjs6hn.js → server-132h8twc.js} +4 -4
- package/dist/v2/{server-271qxsf5.js → server-24g8r2d0.js} +2466 -1290
- package/dist/v2/{server-m91f9m5s.js → server-33nqbqkw.js} +123 -40
- package/dist/v2/{server-brj8j2gk.js → server-3vhxy2k5.js} +1 -1
- package/dist/v2/{server-55rgxfrw.js → server-4kjmrjn4.js} +1 -1
- package/dist/v2/{server-wyawsa88.js → server-62g58aaz.js} +2 -2
- package/dist/v2/{server-230fnbws.js → server-6v3cdzsx.js} +1 -1
- package/dist/v2/{server-ygtykank.js → server-806rzhs6.js} +1 -1
- package/dist/v2/{server-5arr9ecn.js → server-94wk1ey3.js} +12 -1
- package/dist/v2/{server-af2pght7.js → server-ab1g0wn9.js} +2 -4
- package/dist/v2/{server-0epqaxhd.js → server-ad18djzs.js} +26 -8
- package/dist/v2/{server-4nw4fqhr.js → server-bsgd4dk1.js} +1 -1
- package/dist/v2/{server-dj7tz4ph.js → server-d1dzgvwd.js} +1 -1
- package/dist/v2/{server-vn2nwcv6.js → server-d48x3m4x.js} +4 -4
- package/dist/v2/{server-br1x0tev.js → server-dtp8hcjh.js} +2 -2
- package/dist/v2/{server-a3dwxfgd.js → server-fa7vtp40.js} +7 -4
- package/dist/{index-1zx2pa5d.js → v2/server-gzy5w8ya.js} +193 -4
- package/dist/v2/{server-hqzyq8n4.js → server-j8h7bsca.js} +26 -12
- package/dist/v2/{server-y4a3nhtk.js → server-jjvbk92s.js} +1 -1
- package/dist/v2/{server-ej96a39v.js → server-m4bfaevz.js} +1186 -1046
- package/dist/v2/{server-63fqdghs.js → server-ppcd1qxh.js} +92 -86
- package/dist/v2/{server-ne8arh8t.js → server-qjvk4a9t.js} +1 -1
- package/dist/v2/{server-xsryvyf6.js → server-qteg2kt9.js} +4 -4
- package/dist/v2/{server-168pb207.js → server-rqebawx1.js} +1 -1
- package/dist/v2/{server-j4jnp9b5.js → server-vr4szghm.js} +35 -4
- package/dist/v2/{server-9x0kmta4.js → server-wwaw5npa.js} +3 -3
- package/dist/v2/{server-c7dxxsj7.js → server-zg5y109h.js} +33 -33
- package/dist/v2/server.js +6 -6
- package/dist/v2/{sqlite-1rpvw2rj.js → sqlite-zdgm52sv.js} +5 -1
- package/dist/v2/{storage-memory-nm7v82mj.js → storage-memory-e6a7mb0k.js} +2 -2
- package/dist/v2/{storage-tags-ss08kj5r.js → storage-tags-q71rnr9f.js} +3 -3
- package/dist/v2/store-reader.d.ts +2 -0
- package/dist/v2/store-reader.d.ts.map +1 -1
- package/dist/v2/{wrapup-orchestrator-639whfhq.js → wrapup-orchestrator-3ssd5yy1.js} +25 -25
- package/dist/wrapup-orchestrator-5vpcd1zx.js +49 -0
- package/package.json +2 -2
- package/src/config/index.test.ts +44 -0
- package/src/config/project-security.ts +15 -0
- package/src/config/rerank.test.ts +60 -0
- package/src/config/schema/magic-context.ts +57 -0
- package/src/shared/model-suggestion-retry.ts +1 -1
- package/src/shared/sqlite-turn-deadline.test.ts +270 -0
- package/src/shared/sqlite.ts +235 -7
- package/src/shared/tag-transcript.ts +9 -1
- package/dist/wrapup-orchestrator-mnvt2g8m.js +0 -49
|
@@ -6,7 +6,7 @@ import {
|
|
|
6
6
|
resolveLegacyConfigSources,
|
|
7
7
|
getProtectedTokensTierOverrides,
|
|
8
8
|
loadPluginConfigDetailed
|
|
9
|
-
} from "./server-
|
|
9
|
+
} from "./server-94wk1ey3.js";
|
|
10
10
|
import {
|
|
11
11
|
getHarness2,
|
|
12
12
|
harnessOwnsOpenCodeStore2
|
|
@@ -46,7 +46,7 @@ import {
|
|
|
46
46
|
DEFAULT_HISTORIAN_TIMEOUT_MS,
|
|
47
47
|
DEFAULT_LOCAL_EMBEDDING_MODEL,
|
|
48
48
|
DREAM_TASK_PROMOTION_DEFAULTS
|
|
49
|
-
} from "./server-
|
|
49
|
+
} from "./server-24g8r2d0.js";
|
|
50
50
|
import {
|
|
51
51
|
CANONICAL_DREAM_TASKS,
|
|
52
52
|
DREAM_TASK_CAPABILITIES,
|
|
@@ -286,7 +286,7 @@ import {
|
|
|
286
286
|
startCompartmentAgent,
|
|
287
287
|
setRecompStarting2,
|
|
288
288
|
setRecompTerminal2
|
|
289
|
-
} from "./server-
|
|
289
|
+
} from "./server-zg5y109h.js";
|
|
290
290
|
import {
|
|
291
291
|
resolveHistorianModel2
|
|
292
292
|
} from "./server-5kym00ag.js";
|
|
@@ -311,7 +311,7 @@ import {
|
|
|
311
311
|
openDatabaseAsync,
|
|
312
312
|
isDatabasePersisted,
|
|
313
313
|
getDatabasePersistenceError
|
|
314
|
-
} from "./server-
|
|
314
|
+
} from "./server-j8h7bsca.js";
|
|
315
315
|
import {
|
|
316
316
|
pruneMissingProjectIdentities,
|
|
317
317
|
setHomeProjectPermission,
|
|
@@ -328,14 +328,197 @@ import {
|
|
|
328
328
|
storedPathBelongsToIdentity,
|
|
329
329
|
beginBootQuietPeriod,
|
|
330
330
|
scheduleAfterBootQuiet
|
|
331
|
-
} from "./server-
|
|
331
|
+
} from "./server-qjvk4a9t.js";
|
|
332
|
+
import {
|
|
333
|
+
registerOwnRpcServerInstance,
|
|
334
|
+
rpcPortDir,
|
|
335
|
+
rpcPortFilePath,
|
|
336
|
+
parseRpcPortFile,
|
|
337
|
+
inspectProcessesAsync
|
|
338
|
+
} from "./server-k3t06fxr.js";
|
|
339
|
+
import {
|
|
340
|
+
BoundedSessionMap,
|
|
341
|
+
LkgRecoveryFenceError,
|
|
342
|
+
lkgServedArrayDigest,
|
|
343
|
+
takeLkgRecoveryLockSweepPage,
|
|
344
|
+
hasCleanLkgRecoveryFence,
|
|
345
|
+
dirtyLkgRecoveryRevision,
|
|
346
|
+
ownsLkgDirtyFence,
|
|
347
|
+
invalidateCleanLkgRecoveryFence,
|
|
348
|
+
prepareLkgCaptureFence,
|
|
349
|
+
certifyCommittedLkgCapture,
|
|
350
|
+
markLkgRecoveryDirty,
|
|
351
|
+
gaDatabasePath,
|
|
352
|
+
RAW_MESSAGE_TYPES,
|
|
353
|
+
V2StoreReaderPool,
|
|
354
|
+
V2StoreReader,
|
|
355
|
+
cleanSearchText,
|
|
356
|
+
matchedSearchSnippet,
|
|
357
|
+
advanceSessionActivity,
|
|
358
|
+
backfillSessionActivity,
|
|
359
|
+
getLastIndexedOrdinal2,
|
|
360
|
+
getMessageIndexReconciliationStartOrdinal2,
|
|
361
|
+
isMessageIndexReconciledThrough2,
|
|
362
|
+
clearIndexedMessages2,
|
|
363
|
+
indexMessagesAfterOrdinal2,
|
|
364
|
+
sweepOrphanedOpenCodeMessageIndexesCooperatively2
|
|
365
|
+
} from "./server-ppcd1qxh.js";
|
|
366
|
+
import"./server-51779zs2.js";
|
|
367
|
+
import {
|
|
368
|
+
inRootAsyncContext2,
|
|
369
|
+
getTagIdentityWriteGeneration2,
|
|
370
|
+
Database2,
|
|
371
|
+
getSqliteDatabasePath2,
|
|
372
|
+
getSqliteMemoryStats2,
|
|
373
|
+
withSqliteBackgroundWriter2,
|
|
374
|
+
withSqliteTransformPass2,
|
|
375
|
+
withoutSqliteTransformPass2,
|
|
376
|
+
assertTransformWrite2,
|
|
377
|
+
isTransientSqliteError2,
|
|
378
|
+
SqliteAcquisitionBusyError2,
|
|
379
|
+
withAsyncPrivilegedWriter2
|
|
380
|
+
} from "./server-gzy5w8ya.js";
|
|
381
|
+
import {
|
|
382
|
+
createWorkerShutdown
|
|
383
|
+
} from "./server-cpjk5jd2.js";
|
|
384
|
+
import {
|
|
385
|
+
isRawCompactionSummaryInfo2,
|
|
386
|
+
extractInMemoryMessageViews2,
|
|
387
|
+
buildInMemoryTailRawMessages2,
|
|
388
|
+
RawOrdinalsNotReady2,
|
|
389
|
+
runSessionWarmupWorker
|
|
390
|
+
} from "./server-4kjmrjn4.js";
|
|
391
|
+
import {
|
|
392
|
+
resolveOpenCodeDbPath,
|
|
393
|
+
assertOpenCodeStoreGeneration,
|
|
394
|
+
openCodeDbPathExists,
|
|
395
|
+
recordOpenCodeDbReadFailure,
|
|
396
|
+
clearOpenCodeDbReadFailure,
|
|
397
|
+
claimOpenCodeDbDiagnosticOnce
|
|
398
|
+
} from "./server-2ra6pwf3.js";
|
|
399
|
+
import {
|
|
400
|
+
resolveModelCalibration,
|
|
401
|
+
calibrateBuckets,
|
|
402
|
+
resolveDecisionCalibration
|
|
403
|
+
} from "./server-1zx87sdm.js";
|
|
404
|
+
import {
|
|
405
|
+
protectedToolTagNumbers,
|
|
406
|
+
protectedToolTokenCount,
|
|
407
|
+
stripPersistedAssistantText,
|
|
408
|
+
byteSize,
|
|
409
|
+
stripTagPrefix,
|
|
410
|
+
peelLeadingMcTagNotation,
|
|
411
|
+
prependTag,
|
|
412
|
+
isThinkingPart,
|
|
413
|
+
currentReclaimableToolOutputCount,
|
|
414
|
+
isRecord,
|
|
415
|
+
contentTagOwnerMessageId,
|
|
416
|
+
estimateImageTokensFromDataUrl,
|
|
417
|
+
estimateToolAttachmentImageTokens,
|
|
418
|
+
providerVisiblePart,
|
|
419
|
+
normalizeTodoStateJson,
|
|
420
|
+
buildSyntheticTodoPart,
|
|
421
|
+
computeSyntheticCallId,
|
|
422
|
+
isSyntheticTodoPart,
|
|
423
|
+
countRealUserMessages,
|
|
424
|
+
tailHygieneStructuralSignature,
|
|
425
|
+
sameTailHygieneStructuralSignature,
|
|
426
|
+
formatTailHygienePrefixMismatch,
|
|
427
|
+
refreshTailHygieneBaseline,
|
|
428
|
+
effectiveTailHygiene,
|
|
429
|
+
assertTailHygieneContentUnchangedIfEnabled,
|
|
430
|
+
CHANNEL1_SENTINEL,
|
|
431
|
+
CHANNEL1_FLOOR_TOKENS,
|
|
432
|
+
isDroppedToolOutput,
|
|
433
|
+
toolOutputTokens,
|
|
434
|
+
decideChannel1,
|
|
435
|
+
evaluateChannel2,
|
|
436
|
+
formatChannel1Evaluation,
|
|
437
|
+
formatChannel2Evaluation,
|
|
438
|
+
buildChannel2Reminder,
|
|
439
|
+
buildChannel1Reminder,
|
|
440
|
+
estimateEmergencyDropReclaimTokens,
|
|
441
|
+
planEmergencyDrop,
|
|
442
|
+
measureEmergencyTag,
|
|
443
|
+
queuePendingOp,
|
|
444
|
+
getPendingOps,
|
|
445
|
+
hasPendingDropOps,
|
|
446
|
+
getPendingOpsCount,
|
|
447
|
+
clearPendingOps,
|
|
448
|
+
removePendingOp,
|
|
449
|
+
updateTagByteSize2,
|
|
450
|
+
getRecentTagOwnerMessageIds2,
|
|
451
|
+
AGE_RECLAIM_MIN_TOKENS2,
|
|
452
|
+
getOldestActiveUnprotectedToolTags2,
|
|
453
|
+
getActiveToolTagsForAgeReclaim2,
|
|
454
|
+
getTriggerTagTokenUpperBound2,
|
|
455
|
+
getActiveTagTokenTotalsByMessage2,
|
|
456
|
+
updateTagTokenCount2,
|
|
457
|
+
tryGetReasoningTokenEstimatesByMessage2,
|
|
458
|
+
cachedTagOwnerRatios2,
|
|
459
|
+
tagOwnerWarmupState2,
|
|
460
|
+
installTagOwnerDelta2,
|
|
461
|
+
installTagOwnerSummary2,
|
|
462
|
+
isTagOwnerSummaryReady2,
|
|
463
|
+
tagTokenCountIsNull2,
|
|
464
|
+
backfillTagTokenCounts2,
|
|
465
|
+
insertTag2,
|
|
466
|
+
updateTagStatus2,
|
|
467
|
+
markTagDropped2,
|
|
468
|
+
markWhitespaceAssistantTagInert2,
|
|
469
|
+
getInertWhitespaceAssistantTags2,
|
|
470
|
+
getInertWhitespaceAssistantTagsByNumbers2,
|
|
471
|
+
updateTagDropMode2,
|
|
472
|
+
updateCavemanDepth2,
|
|
473
|
+
updateTagMessageId2,
|
|
474
|
+
markTagsCompactedByMessageIds2,
|
|
475
|
+
getMaxTagNumberBySession2,
|
|
476
|
+
getTagNumberByMessageId2,
|
|
477
|
+
getAssignableTagNumberByMessageId2,
|
|
478
|
+
deriveTagLoadFloor2,
|
|
479
|
+
getTagsBySession2,
|
|
480
|
+
getActiveTagsBySession2,
|
|
481
|
+
getTailHygieneTags2,
|
|
482
|
+
getDroppedTagsBySession2,
|
|
483
|
+
getTagsByNumbers2,
|
|
484
|
+
getNewestToolTagNumbers2,
|
|
485
|
+
getDroppedTagsByNumbers2,
|
|
486
|
+
getMaxDroppedTagNumber2,
|
|
487
|
+
getTagById2,
|
|
488
|
+
getToolTagNumberByOwner2,
|
|
489
|
+
getNullOwnerToolTag2,
|
|
490
|
+
adoptNullOwnerToolTag2,
|
|
491
|
+
getCandidateToolOwners2,
|
|
492
|
+
pickNearestPriorOwner2
|
|
493
|
+
} from "./server-fa7vtp40.js";
|
|
494
|
+
import {
|
|
495
|
+
textMentionsRecentCommit,
|
|
496
|
+
hasMeaningfulUserText2,
|
|
497
|
+
extractTexts2,
|
|
498
|
+
extractToolCallSummaries,
|
|
499
|
+
getTokenizerNativeMemoryStats,
|
|
500
|
+
preloadTokenizer,
|
|
501
|
+
estimateTokens,
|
|
502
|
+
estimateFixedPromptTokens,
|
|
503
|
+
normalizeText
|
|
504
|
+
} from "./server-3mz2qh5a.js";
|
|
505
|
+
import {
|
|
506
|
+
stableStringify,
|
|
507
|
+
getTemporalDecisions,
|
|
508
|
+
observeTemporalDecisions,
|
|
509
|
+
freezeTemporalDecisions,
|
|
510
|
+
tagRevisionKey,
|
|
511
|
+
tagIdentityRevisionKey
|
|
512
|
+
} from "./server-rqebawx1.js";
|
|
513
|
+
import {
|
|
514
|
+
openCodeDbExists,
|
|
515
|
+
withReadOnlySessionDb,
|
|
516
|
+
latestPersistedMessageForRecovery,
|
|
517
|
+
latestRealUserTurnIdFromOpenCodeDb,
|
|
518
|
+
getMessageTimesFromOpenCodeDb,
|
|
519
|
+
findLastAssistantModelFromOpenCodeDb
|
|
520
|
+
} from "./server-3vhxy2k5.js";
|
|
332
521
|
import {
|
|
333
|
-
detectLatestTurnThinkingMismatch,
|
|
334
|
-
isPrefixBoundThinkingModel,
|
|
335
|
-
detectOverflow,
|
|
336
|
-
ensureSessionMetaRow,
|
|
337
|
-
clearCachedM0M1,
|
|
338
|
-
clearCachedM0,
|
|
339
522
|
expandToolPart,
|
|
340
523
|
markHostUnservedRow,
|
|
341
524
|
markCoveredInstructionRow,
|
|
@@ -363,6 +546,9 @@ import {
|
|
|
363
546
|
transitionSessionHygieneUnits,
|
|
364
547
|
readEpochFloorSnapshot,
|
|
365
548
|
getProtectionWindowForSession,
|
|
549
|
+
ensureSessionMetaRow,
|
|
550
|
+
clearCachedM0M1,
|
|
551
|
+
clearCachedM0,
|
|
366
552
|
withReplayEnvelopeSnapshot,
|
|
367
553
|
invalidateReplayEnvelopeSnapshot,
|
|
368
554
|
isRustMarkerAdmissionFenced,
|
|
@@ -453,6 +639,9 @@ import {
|
|
|
453
639
|
getReasoningRemovalState,
|
|
454
640
|
addRemovedReasoningIds,
|
|
455
641
|
markDropLeavesReasoning,
|
|
642
|
+
detectLatestTurnThinkingMismatch,
|
|
643
|
+
isPrefixBoundThinkingModel,
|
|
644
|
+
detectOverflow,
|
|
456
645
|
modelAcceptsEmptyContent,
|
|
457
646
|
isAnthropicFamilyRoute,
|
|
458
647
|
neutralizeDroppedReasoningPart,
|
|
@@ -466,12 +655,15 @@ import {
|
|
|
466
655
|
isInActiveAnthropicTurn,
|
|
467
656
|
activeAnthropicTurnStart,
|
|
468
657
|
hasAnthropicReasoning,
|
|
658
|
+
markServedShapeRepair,
|
|
659
|
+
prepareServedShapeRepair,
|
|
469
660
|
stripSystemInjectedMessages,
|
|
470
661
|
stripDroppedPlaceholderMessages,
|
|
471
662
|
replayClearedReasoning,
|
|
472
663
|
replayStrippedInlineThinking,
|
|
473
664
|
clearOldReasoning,
|
|
474
665
|
stripClearedReasoning,
|
|
666
|
+
captureInlineThinkingRepairs,
|
|
475
667
|
stripInlineThinking,
|
|
476
668
|
findReasoningBearingAssistantIds,
|
|
477
669
|
findLatestAssistantReasoningMutationExemptMessage,
|
|
@@ -523,7 +715,24 @@ import {
|
|
|
523
715
|
readRawSessionMessageById2,
|
|
524
716
|
readSessionChunk2,
|
|
525
717
|
readRawSessionSeedTail2
|
|
526
|
-
} from "./server-
|
|
718
|
+
} from "./server-m4bfaevz.js";
|
|
719
|
+
import {
|
|
720
|
+
getCurrentToolSetHash,
|
|
721
|
+
recordToolDefinition,
|
|
722
|
+
getMeasuredToolDefinitionTokens
|
|
723
|
+
} from "./server-d1dzgvwd.js";
|
|
724
|
+
import"./server-dtp8hcjh.js";
|
|
725
|
+
import {
|
|
726
|
+
SubcClient,
|
|
727
|
+
connectionFileExists,
|
|
728
|
+
SYNAPSE_DEFAULT_MODEL,
|
|
729
|
+
toSynapseLaneDescriptor,
|
|
730
|
+
formatSynapseLaneDescriptor,
|
|
731
|
+
SynapseEmbeddingProvider
|
|
732
|
+
} from "./server-ab1g0wn9.js";
|
|
733
|
+
import {
|
|
734
|
+
deleteChunkEmbedBackoffForSession2
|
|
735
|
+
} from "./server-62g58aaz.js";
|
|
527
736
|
import {
|
|
528
737
|
embedPauseBySession,
|
|
529
738
|
embedRunStateBySession,
|
|
@@ -535,6 +744,7 @@ import {
|
|
|
535
744
|
getEmbedDrainUiStatus,
|
|
536
745
|
clearEmbedSessionState,
|
|
537
746
|
describeShadowBackfillWriteRefusal2,
|
|
747
|
+
retainProjectEmbedding2,
|
|
538
748
|
markProjectLoadUntrusted2,
|
|
539
749
|
drainProjectEmbeddingIdentityMaintenance2,
|
|
540
750
|
drainStaleEmbeddingIdentitiesForProject2,
|
|
@@ -552,212 +762,7 @@ import {
|
|
|
552
762
|
embedSessionCompartmentChunks2,
|
|
553
763
|
getEmbeddingCoverageStatus2,
|
|
554
764
|
getAutoEmbeddingSessionCoverage2
|
|
555
|
-
} from "./server-
|
|
556
|
-
import {
|
|
557
|
-
textMentionsRecentCommit,
|
|
558
|
-
hasMeaningfulUserText2,
|
|
559
|
-
extractTexts2,
|
|
560
|
-
extractToolCallSummaries,
|
|
561
|
-
getTokenizerNativeMemoryStats,
|
|
562
|
-
preloadTokenizer,
|
|
563
|
-
estimateTokens,
|
|
564
|
-
estimateFixedPromptTokens,
|
|
565
|
-
normalizeText
|
|
566
|
-
} from "./server-3mz2qh5a.js";
|
|
567
|
-
import {
|
|
568
|
-
SubcClient,
|
|
569
|
-
connectionFileExists,
|
|
570
|
-
SYNAPSE_DEFAULT_MODEL,
|
|
571
|
-
toSynapseLaneDescriptor,
|
|
572
|
-
formatSynapseLaneDescriptor,
|
|
573
|
-
SynapseEmbeddingProvider
|
|
574
|
-
} from "./server-af2pght7.js";
|
|
575
|
-
import {
|
|
576
|
-
inRootAsyncContext2,
|
|
577
|
-
getTagIdentityWriteGeneration2,
|
|
578
|
-
Database2,
|
|
579
|
-
getSqliteDatabasePath2,
|
|
580
|
-
getSqliteMemoryStats2,
|
|
581
|
-
withSqliteBackgroundWriter2,
|
|
582
|
-
withSqliteTransformPass2,
|
|
583
|
-
withoutSqliteTransformPass2,
|
|
584
|
-
assertTransformWrite2,
|
|
585
|
-
isTransientSqliteError2,
|
|
586
|
-
SqliteAcquisitionBusyError2,
|
|
587
|
-
withAsyncPrivilegedWriter2
|
|
588
|
-
} from "./server-1zx2pa5d.js";
|
|
589
|
-
import"./server-51779zs2.js";
|
|
590
|
-
import {
|
|
591
|
-
createWorkerShutdown
|
|
592
|
-
} from "./server-cpjk5jd2.js";
|
|
593
|
-
import {
|
|
594
|
-
isRawCompactionSummaryInfo2,
|
|
595
|
-
extractInMemoryMessageViews2,
|
|
596
|
-
buildInMemoryTailRawMessages2,
|
|
597
|
-
RawOrdinalsNotReady2,
|
|
598
|
-
runSessionWarmupWorker
|
|
599
|
-
} from "./server-55rgxfrw.js";
|
|
600
|
-
import"./server-br1x0tev.js";
|
|
601
|
-
import {
|
|
602
|
-
deleteChunkEmbedBackoffForSession2
|
|
603
|
-
} from "./server-wyawsa88.js";
|
|
604
|
-
import {
|
|
605
|
-
registerOwnRpcServerInstance,
|
|
606
|
-
rpcPortDir,
|
|
607
|
-
rpcPortFilePath,
|
|
608
|
-
parseRpcPortFile,
|
|
609
|
-
inspectProcessesAsync
|
|
610
|
-
} from "./server-k3t06fxr.js";
|
|
611
|
-
import {
|
|
612
|
-
BoundedSessionMap,
|
|
613
|
-
LkgRecoveryFenceError,
|
|
614
|
-
lkgServedArrayDigest,
|
|
615
|
-
takeLkgRecoveryLockSweepPage,
|
|
616
|
-
hasCleanLkgRecoveryFence,
|
|
617
|
-
dirtyLkgRecoveryRevision,
|
|
618
|
-
ownsLkgDirtyFence,
|
|
619
|
-
invalidateCleanLkgRecoveryFence,
|
|
620
|
-
prepareLkgCaptureFence,
|
|
621
|
-
certifyCommittedLkgCapture,
|
|
622
|
-
markLkgRecoveryDirty,
|
|
623
|
-
cleanSearchText,
|
|
624
|
-
matchedSearchSnippet,
|
|
625
|
-
gaDatabasePath,
|
|
626
|
-
RAW_MESSAGE_TYPES,
|
|
627
|
-
V2StoreReaderPool,
|
|
628
|
-
V2StoreReader,
|
|
629
|
-
advanceSessionActivity,
|
|
630
|
-
backfillSessionActivity,
|
|
631
|
-
getLastIndexedOrdinal2,
|
|
632
|
-
getMessageIndexReconciliationStartOrdinal2,
|
|
633
|
-
isMessageIndexReconciledThrough2,
|
|
634
|
-
indexMessagesAfterOrdinal2,
|
|
635
|
-
sweepOrphanedOpenCodeMessageIndexesCooperatively2
|
|
636
|
-
} from "./server-63fqdghs.js";
|
|
637
|
-
import {
|
|
638
|
-
stableStringify,
|
|
639
|
-
getTemporalDecisions,
|
|
640
|
-
observeTemporalDecisions,
|
|
641
|
-
freezeTemporalDecisions,
|
|
642
|
-
tagRevisionKey,
|
|
643
|
-
tagIdentityRevisionKey
|
|
644
|
-
} from "./server-168pb207.js";
|
|
645
|
-
import {
|
|
646
|
-
resolveModelCalibration,
|
|
647
|
-
calibrateBuckets,
|
|
648
|
-
resolveDecisionCalibration
|
|
649
|
-
} from "./server-1zx87sdm.js";
|
|
650
|
-
import {
|
|
651
|
-
protectedToolTagNumbers,
|
|
652
|
-
protectedToolTokenCount,
|
|
653
|
-
stripPersistedAssistantText,
|
|
654
|
-
byteSize,
|
|
655
|
-
stripTagPrefix,
|
|
656
|
-
peelLeadingMcTagNotation,
|
|
657
|
-
prependTag,
|
|
658
|
-
isThinkingPart,
|
|
659
|
-
currentReclaimableToolOutputCount,
|
|
660
|
-
isRecord,
|
|
661
|
-
contentTagOwnerMessageId,
|
|
662
|
-
estimateImageTokensFromDataUrl,
|
|
663
|
-
estimateToolAttachmentImageTokens,
|
|
664
|
-
providerVisiblePart,
|
|
665
|
-
normalizeTodoStateJson,
|
|
666
|
-
buildSyntheticTodoPart,
|
|
667
|
-
computeSyntheticCallId,
|
|
668
|
-
isSyntheticTodoPart,
|
|
669
|
-
countRealUserMessages,
|
|
670
|
-
tailHygieneStructuralSignature,
|
|
671
|
-
sameTailHygieneStructuralSignature,
|
|
672
|
-
formatTailHygienePrefixMismatch,
|
|
673
|
-
refreshTailHygieneBaseline,
|
|
674
|
-
effectiveTailHygiene,
|
|
675
|
-
assertTailHygieneContentUnchangedIfEnabled,
|
|
676
|
-
CHANNEL1_SENTINEL,
|
|
677
|
-
CHANNEL1_FLOOR_TOKENS,
|
|
678
|
-
isDroppedToolOutput,
|
|
679
|
-
toolOutputTokens,
|
|
680
|
-
decideChannel1,
|
|
681
|
-
evaluateChannel2,
|
|
682
|
-
formatChannel1Evaluation,
|
|
683
|
-
formatChannel2Evaluation,
|
|
684
|
-
buildChannel2Reminder,
|
|
685
|
-
buildChannel1Reminder,
|
|
686
|
-
estimateEmergencyDropReclaimTokens,
|
|
687
|
-
planEmergencyDrop,
|
|
688
|
-
measureEmergencyTag,
|
|
689
|
-
queuePendingOp,
|
|
690
|
-
getPendingOps,
|
|
691
|
-
hasPendingDropOps,
|
|
692
|
-
getPendingOpsCount,
|
|
693
|
-
clearPendingOps,
|
|
694
|
-
removePendingOp,
|
|
695
|
-
updateTagByteSize2,
|
|
696
|
-
getRecentTagOwnerMessageIds2,
|
|
697
|
-
AGE_RECLAIM_MIN_TOKENS2,
|
|
698
|
-
getOldestActiveUnprotectedToolTags2,
|
|
699
|
-
getActiveToolTagsForAgeReclaim2,
|
|
700
|
-
getTriggerTagTokenUpperBound2,
|
|
701
|
-
getActiveTagTokenTotalsByMessage2,
|
|
702
|
-
updateTagTokenCount2,
|
|
703
|
-
tryGetReasoningTokenEstimatesByMessage2,
|
|
704
|
-
cachedTagOwnerRatios2,
|
|
705
|
-
tagOwnerWarmupState2,
|
|
706
|
-
installTagOwnerDelta2,
|
|
707
|
-
installTagOwnerSummary2,
|
|
708
|
-
isTagOwnerSummaryReady2,
|
|
709
|
-
tagTokenCountIsNull2,
|
|
710
|
-
backfillTagTokenCounts2,
|
|
711
|
-
insertTag2,
|
|
712
|
-
updateTagStatus2,
|
|
713
|
-
markTagDropped2,
|
|
714
|
-
markWhitespaceAssistantTagInert2,
|
|
715
|
-
getInertWhitespaceAssistantTags2,
|
|
716
|
-
getInertWhitespaceAssistantTagsByNumbers2,
|
|
717
|
-
updateTagDropMode2,
|
|
718
|
-
updateCavemanDepth2,
|
|
719
|
-
updateTagMessageId2,
|
|
720
|
-
markTagsCompactedByMessageIds2,
|
|
721
|
-
getMaxTagNumberBySession2,
|
|
722
|
-
getTagNumberByMessageId2,
|
|
723
|
-
getAssignableTagNumberByMessageId2,
|
|
724
|
-
deriveTagLoadFloor2,
|
|
725
|
-
getTagsBySession2,
|
|
726
|
-
getActiveTagsBySession2,
|
|
727
|
-
getTailHygieneTags2,
|
|
728
|
-
getDroppedTagsBySession2,
|
|
729
|
-
getTagsByNumbers2,
|
|
730
|
-
getNewestToolTagNumbers2,
|
|
731
|
-
getDroppedTagsByNumbers2,
|
|
732
|
-
getMaxDroppedTagNumber2,
|
|
733
|
-
getTagById2,
|
|
734
|
-
getToolTagNumberByOwner2,
|
|
735
|
-
getNullOwnerToolTag2,
|
|
736
|
-
adoptNullOwnerToolTag2,
|
|
737
|
-
getCandidateToolOwners2,
|
|
738
|
-
pickNearestPriorOwner2
|
|
739
|
-
} from "./server-a3dwxfgd.js";
|
|
740
|
-
import {
|
|
741
|
-
resolveOpenCodeDbPath,
|
|
742
|
-
assertOpenCodeStoreGeneration,
|
|
743
|
-
openCodeDbPathExists,
|
|
744
|
-
recordOpenCodeDbReadFailure,
|
|
745
|
-
clearOpenCodeDbReadFailure,
|
|
746
|
-
claimOpenCodeDbDiagnosticOnce
|
|
747
|
-
} from "./server-2ra6pwf3.js";
|
|
748
|
-
import {
|
|
749
|
-
openCodeDbExists,
|
|
750
|
-
withReadOnlySessionDb,
|
|
751
|
-
latestPersistedMessageForRecovery,
|
|
752
|
-
latestRealUserTurnIdFromOpenCodeDb,
|
|
753
|
-
getMessageTimesFromOpenCodeDb,
|
|
754
|
-
findLastAssistantModelFromOpenCodeDb
|
|
755
|
-
} from "./server-brj8j2gk.js";
|
|
756
|
-
import {
|
|
757
|
-
getCurrentToolSetHash,
|
|
758
|
-
recordToolDefinition,
|
|
759
|
-
getMeasuredToolDefinitionTokens
|
|
760
|
-
} from "./server-dj7tz4ph.js";
|
|
765
|
+
} from "./server-ad18djzs.js";
|
|
761
766
|
import {
|
|
762
767
|
V2_MEMORY_CATEGORIES,
|
|
763
768
|
CATEGORY_PRIORITY
|
|
@@ -770,7 +775,7 @@ import {
|
|
|
770
775
|
resolveStoredPathWorkspaceIdentity,
|
|
771
776
|
storedPathBelongsToWorkspace,
|
|
772
777
|
computeWorkspaceEpochFingerprint
|
|
773
|
-
} from "./server-
|
|
778
|
+
} from "./server-wwaw5npa.js";
|
|
774
779
|
import {
|
|
775
780
|
configureContextDatabasePragmas2
|
|
776
781
|
} from "./server-fb3zxn06.js";
|
|
@@ -816,7 +821,7 @@ import {
|
|
|
816
821
|
readGitFileChangeTimesSince,
|
|
817
822
|
verificationFileExists,
|
|
818
823
|
normalizeVerificationFiles
|
|
819
|
-
} from "./server-
|
|
824
|
+
} from "./server-d48x3m4x.js";
|
|
820
825
|
import {
|
|
821
826
|
deriveTriggerBudget2,
|
|
822
827
|
deriveHistorianChunkTokens2,
|
|
@@ -824,7 +829,7 @@ import {
|
|
|
824
829
|
resolveHistorianProducerLimits2,
|
|
825
830
|
resolveHistorianContextLimit2
|
|
826
831
|
} from "./server-53eh1r8r.js";
|
|
827
|
-
import"./server-
|
|
832
|
+
import"./server-806rzhs6.js";
|
|
828
833
|
import {
|
|
829
834
|
isEmbeddingHostBusy2
|
|
830
835
|
} from "./server-qt1qqasc.js";
|
|
@@ -837,7 +842,7 @@ import {
|
|
|
837
842
|
releaseGitSweepLease,
|
|
838
843
|
recordSessionProjectIdentity,
|
|
839
844
|
hasRecordedSessionProjectIdentity
|
|
840
|
-
} from "./server-
|
|
845
|
+
} from "./server-bsgd4dk1.js";
|
|
841
846
|
import {
|
|
842
847
|
saveEmbeddingIfHashMatches,
|
|
843
848
|
invalidateProject2,
|
|
@@ -847,10 +852,10 @@ import {
|
|
|
847
852
|
getCachedLocalEmbeddingPooling,
|
|
848
853
|
preflightLocalEmbeddingPooling,
|
|
849
854
|
getLocalEmbeddingNativeMemoryStats
|
|
850
|
-
} from "./server-
|
|
855
|
+
} from "./server-vr4szghm.js";
|
|
851
856
|
import {
|
|
852
857
|
cosineSimilarity
|
|
853
|
-
} from "./server-
|
|
858
|
+
} from "./server-qteg2kt9.js";
|
|
854
859
|
import {
|
|
855
860
|
computeCueContentHash,
|
|
856
861
|
hasMuralCueColumns,
|
|
@@ -875,7 +880,7 @@ import {
|
|
|
875
880
|
mergeMemoryStats2,
|
|
876
881
|
archiveMemory2,
|
|
877
882
|
getMemoryCountsByStatus2
|
|
878
|
-
} from "./server-
|
|
883
|
+
} from "./server-jjvbk92s.js";
|
|
879
884
|
import {
|
|
880
885
|
registerNotificationSink2,
|
|
881
886
|
pushNotification2,
|
|
@@ -887,7 +892,7 @@ import"./server-1bw1wcbp.js";
|
|
|
887
892
|
import {
|
|
888
893
|
flushIgnoredMessages2,
|
|
889
894
|
sendStatusNotification2
|
|
890
|
-
} from "./server-
|
|
895
|
+
} from "./server-6v3cdzsx.js";
|
|
891
896
|
import {
|
|
892
897
|
renderSingleStoreMigrationRequiredRefusal,
|
|
893
898
|
SingleStoreMigrationRequiredError,
|
|
@@ -907,14 +912,14 @@ import {
|
|
|
907
912
|
resolveMemoriesByIdsForSearch2,
|
|
908
913
|
unifiedSearch2,
|
|
909
914
|
formatSearchResults2
|
|
910
|
-
} from "./server-
|
|
915
|
+
} from "./server-33nqbqkw.js";
|
|
911
916
|
import {
|
|
912
917
|
resolvePromptContext2
|
|
913
918
|
} from "./server-fmsr7v69.js";
|
|
914
919
|
import"./server-kaqs6h31.js";
|
|
915
920
|
import {
|
|
916
921
|
renderSearchArchiveOffThread2
|
|
917
|
-
} from "./server-
|
|
922
|
+
} from "./server-132h8twc.js";
|
|
918
923
|
import {
|
|
919
924
|
compareSemverCore
|
|
920
925
|
} from "./server-84w6rvvf.js";
|
|
@@ -1730,6 +1735,270 @@ function summarizeManualDream(summary) {
|
|
|
1730
1735
|
`);
|
|
1731
1736
|
}
|
|
1732
1737
|
|
|
1738
|
+
// src/features/magic-context/message-index-async.ts
|
|
1739
|
+
var indexCancellations = new Map;
|
|
1740
|
+
var sessionEpochs = new Map;
|
|
1741
|
+
var workerMeasurements = new WeakMap;
|
|
1742
|
+
function isDatabaseLockedError(error) {
|
|
1743
|
+
if (!error || typeof error !== "object")
|
|
1744
|
+
return false;
|
|
1745
|
+
const e = error;
|
|
1746
|
+
if (typeof e.code === "string") {
|
|
1747
|
+
if (e.code === "SQLITE_BUSY" || e.code === "SQLITE_LOCKED")
|
|
1748
|
+
return true;
|
|
1749
|
+
}
|
|
1750
|
+
if (typeof e.message === "string") {
|
|
1751
|
+
if (/database is locked/i.test(e.message))
|
|
1752
|
+
return true;
|
|
1753
|
+
if (/sqlite_(busy|locked)/i.test(e.message))
|
|
1754
|
+
return true;
|
|
1755
|
+
}
|
|
1756
|
+
return false;
|
|
1757
|
+
}
|
|
1758
|
+
var RECONCILIATION_BATCH_SIZE = 100;
|
|
1759
|
+
|
|
1760
|
+
class MagicContextMessageIndexHeapHolder {
|
|
1761
|
+
reconciledSessions = new Set;
|
|
1762
|
+
reconciledSnapshots = new Map;
|
|
1763
|
+
stalledSessions = new Set;
|
|
1764
|
+
reconciliationScheduledSessions = new Set;
|
|
1765
|
+
clearAndReindexScheduledSessions = new Map;
|
|
1766
|
+
sessionLocks = new Map;
|
|
1767
|
+
incrementalTimers = new Map;
|
|
1768
|
+
pendingIncrementalKeys = new Set;
|
|
1769
|
+
completedIncrementalKeys = new Set;
|
|
1770
|
+
activeReconcilerBuffers = new Map;
|
|
1771
|
+
}
|
|
1772
|
+
var heapHolder = new MagicContextMessageIndexHeapHolder;
|
|
1773
|
+
function clearCompletedIncrementalKeys(sessionId) {
|
|
1774
|
+
const prefix = `${sessionId}\x00`;
|
|
1775
|
+
for (const key of heapHolder.completedIncrementalKeys) {
|
|
1776
|
+
if (key.startsWith(prefix))
|
|
1777
|
+
heapHolder.completedIncrementalKeys.delete(key);
|
|
1778
|
+
}
|
|
1779
|
+
}
|
|
1780
|
+
var PREPARE_RETRY_MS = 60000;
|
|
1781
|
+
async function sourceReady(source, sessionId) {
|
|
1782
|
+
const prepare = source?.prepare;
|
|
1783
|
+
return typeof prepare === "function" ? prepare(sessionId) : true;
|
|
1784
|
+
}
|
|
1785
|
+
function defer(fn) {
|
|
1786
|
+
const immediate = globalThis.setImmediate;
|
|
1787
|
+
if (typeof immediate === "function") {
|
|
1788
|
+
inRootAsyncContext2(() => immediate(fn));
|
|
1789
|
+
return;
|
|
1790
|
+
}
|
|
1791
|
+
inRootAsyncContext2(() => setTimeout(fn, 0));
|
|
1792
|
+
}
|
|
1793
|
+
function yieldToEventLoop() {
|
|
1794
|
+
return new Promise((resolve) => defer(resolve));
|
|
1795
|
+
}
|
|
1796
|
+
function runWithSessionLock(sessionId, operation) {
|
|
1797
|
+
const previous = heapHolder.sessionLocks.get(sessionId) ?? Promise.resolve();
|
|
1798
|
+
const run = previous.catch(() => {
|
|
1799
|
+
return;
|
|
1800
|
+
}).then(async () => {
|
|
1801
|
+
await operation();
|
|
1802
|
+
});
|
|
1803
|
+
heapHolder.sessionLocks.set(sessionId, run);
|
|
1804
|
+
run.finally(() => {
|
|
1805
|
+
if (heapHolder.sessionLocks.get(sessionId) === run) {
|
|
1806
|
+
heapHolder.sessionLocks.delete(sessionId);
|
|
1807
|
+
}
|
|
1808
|
+
}).catch(() => {
|
|
1809
|
+
return;
|
|
1810
|
+
});
|
|
1811
|
+
return run;
|
|
1812
|
+
}
|
|
1813
|
+
function logIndexingError(sessionId, action, error) {
|
|
1814
|
+
if (isDatabaseLockedError(error)) {
|
|
1815
|
+
sessionLog2(sessionId, `message FTS async ${action} skipped (database busy; will retry on next reconciliation)`);
|
|
1816
|
+
return;
|
|
1817
|
+
}
|
|
1818
|
+
sessionLog2(sessionId, `message FTS async ${action} failed: ${error instanceof Error ? error.message : String(error)}`);
|
|
1819
|
+
log2(`[message-index-async] ${action} failed for ${sessionId}:`, error);
|
|
1820
|
+
}
|
|
1821
|
+
function serializedMessageBytes(messages) {
|
|
1822
|
+
try {
|
|
1823
|
+
return Buffer.byteLength(JSON.stringify(messages));
|
|
1824
|
+
} catch {
|
|
1825
|
+
return 0;
|
|
1826
|
+
}
|
|
1827
|
+
}
|
|
1828
|
+
function logReconciliationStall(sessionId, reason) {
|
|
1829
|
+
if (heapHolder.stalledSessions.has(sessionId))
|
|
1830
|
+
return;
|
|
1831
|
+
heapHolder.stalledSessions.add(sessionId);
|
|
1832
|
+
sessionLog2(sessionId, `message FTS reconciliation stalled: ${reason}; will retry`);
|
|
1833
|
+
}
|
|
1834
|
+
async function reconcileSessionIndex(db, sessionId, readMessages) {
|
|
1835
|
+
if (!await sourceReady(readMessages, sessionId)) {
|
|
1836
|
+
logReconciliationStall(sessionId, "raw message reader is not ready");
|
|
1837
|
+
return false;
|
|
1838
|
+
}
|
|
1839
|
+
await runWithSessionLock(sessionId, async () => {
|
|
1840
|
+
if (!readMessages.getRevision && heapHolder.reconciledSessions.has(sessionId))
|
|
1841
|
+
return;
|
|
1842
|
+
let fallbackSnapshot = null;
|
|
1843
|
+
try {
|
|
1844
|
+
const fullReader = typeof readMessages === "function" ? readMessages : null;
|
|
1845
|
+
const revision = readMessages.getRevision?.(sessionId);
|
|
1846
|
+
const previous = heapHolder.reconciledSnapshots.get(sessionId);
|
|
1847
|
+
const finalWatermark = previous && revision === previous.revision ? previous.count : revision !== undefined && readMessages.getCountAfterRevision ? previous && revision > previous.revision ? previous.count + readMessages.getCountAfterRevision(sessionId, previous.revision, revision) : readMessages.getCountAfterRevision(sessionId, -1, revision) : readMessages.getCount ? readMessages.getCount(sessionId) : (fallbackSnapshot = fullReader?.(sessionId) ?? []).length;
|
|
1848
|
+
let cursor = getMessageIndexReconciliationStartOrdinal2(db, sessionId);
|
|
1849
|
+
let after = cursor === previous?.count ? previous.after : undefined;
|
|
1850
|
+
while (cursor < finalWatermark) {
|
|
1851
|
+
const pageEnd = Math.min(finalWatermark, cursor + RECONCILIATION_BATCH_SIZE);
|
|
1852
|
+
const messages = readMessages.readPage ? readMessages.readPage(sessionId, cursor, RECONCILIATION_BATCH_SIZE, finalWatermark, after) : (fallbackSnapshot ?? []).filter((message) => message.ordinal > cursor && message.ordinal <= pageEnd);
|
|
1853
|
+
const retainedMessages = fallbackSnapshot ?? messages;
|
|
1854
|
+
heapHolder.activeReconcilerBuffers.set(sessionId, retainedMessages);
|
|
1855
|
+
withSqliteBackgroundWriter2(() => indexMessagesAfterOrdinal2(db, sessionId, messages, cursor, pageEnd));
|
|
1856
|
+
const nextCursor = getMessageIndexReconciliationStartOrdinal2(db, sessionId);
|
|
1857
|
+
if (nextCursor <= cursor)
|
|
1858
|
+
break;
|
|
1859
|
+
cursor = nextCursor;
|
|
1860
|
+
const last = messages.at(-1);
|
|
1861
|
+
after = last?.ordinal === cursor && typeof last.createdAt === "number" ? { timeCreated: last.createdAt, id: last.id } : undefined;
|
|
1862
|
+
if (cursor < finalWatermark) {
|
|
1863
|
+
await yieldToEventLoop();
|
|
1864
|
+
}
|
|
1865
|
+
}
|
|
1866
|
+
if (isMessageIndexReconciledThrough2(db, sessionId, finalWatermark)) {
|
|
1867
|
+
heapHolder.reconciledSessions.add(sessionId);
|
|
1868
|
+
if (revision !== undefined) {
|
|
1869
|
+
if (!after && finalWatermark > 0 && readMessages.readPage) {
|
|
1870
|
+
const last = readMessages.readPage(sessionId, finalWatermark - 1, 1, finalWatermark).at(-1);
|
|
1871
|
+
if (last?.ordinal === finalWatermark && typeof last.createdAt === "number")
|
|
1872
|
+
after = { timeCreated: last.createdAt, id: last.id };
|
|
1873
|
+
}
|
|
1874
|
+
heapHolder.reconciledSnapshots.set(sessionId, {
|
|
1875
|
+
revision,
|
|
1876
|
+
count: finalWatermark,
|
|
1877
|
+
after
|
|
1878
|
+
});
|
|
1879
|
+
}
|
|
1880
|
+
} else {
|
|
1881
|
+
logReconciliationStall(sessionId, `gap after ordinal ${cursor} (store count ${finalWatermark})`);
|
|
1882
|
+
}
|
|
1883
|
+
} finally {
|
|
1884
|
+
heapHolder.activeReconcilerBuffers.delete(sessionId);
|
|
1885
|
+
}
|
|
1886
|
+
});
|
|
1887
|
+
return true;
|
|
1888
|
+
}
|
|
1889
|
+
function scheduleReconciliation(db, sessionId, readMessages) {
|
|
1890
|
+
if (!readMessages.getRevision && heapHolder.reconciledSessions.has(sessionId) || heapHolder.reconciliationScheduledSessions.has(sessionId)) {
|
|
1891
|
+
return;
|
|
1892
|
+
}
|
|
1893
|
+
heapHolder.reconciliationScheduledSessions.add(sessionId);
|
|
1894
|
+
scheduleAfterBootQuiet(() => {
|
|
1895
|
+
defer(() => {
|
|
1896
|
+
let appendedDuringReconciliation = false;
|
|
1897
|
+
const previousSnapshot = heapHolder.reconciledSnapshots.get(sessionId);
|
|
1898
|
+
reconcileSessionIndex(db, sessionId, readMessages).then((ran) => {
|
|
1899
|
+
if (ran) {
|
|
1900
|
+
const snapshot = heapHolder.reconciledSnapshots.get(sessionId);
|
|
1901
|
+
appendedDuringReconciliation = snapshot !== undefined && snapshot !== previousSnapshot && readMessages.getRevision !== undefined && readMessages.getRevision(sessionId) !== snapshot.revision;
|
|
1902
|
+
return;
|
|
1903
|
+
}
|
|
1904
|
+
inRootAsyncContext2(() => setTimeout(() => {
|
|
1905
|
+
heapHolder.reconciliationScheduledSessions.delete(sessionId);
|
|
1906
|
+
scheduleReconciliation(db, sessionId, readMessages);
|
|
1907
|
+
}, PREPARE_RETRY_MS)).unref?.();
|
|
1908
|
+
}).catch((error) => {
|
|
1909
|
+
logReconciliationStall(sessionId, error instanceof Error ? error.message : String(error));
|
|
1910
|
+
if (isDatabaseLockedError(error))
|
|
1911
|
+
inRootAsyncContext2(() => setTimeout(() => scheduleReconciliation(db, sessionId, readMessages), 1000)).unref();
|
|
1912
|
+
}).finally(() => {
|
|
1913
|
+
heapHolder.reconciliationScheduledSessions.delete(sessionId);
|
|
1914
|
+
if (appendedDuringReconciliation)
|
|
1915
|
+
scheduleReconciliation(db, sessionId, readMessages);
|
|
1916
|
+
});
|
|
1917
|
+
});
|
|
1918
|
+
});
|
|
1919
|
+
}
|
|
1920
|
+
async function sweepOrphanedOpenCodeMessageIndexesOffThread(db, openSource, options = {}) {
|
|
1921
|
+
if (getHarness2() === "opencode" || getHarness2() === "opencode2")
|
|
1922
|
+
options = {
|
|
1923
|
+
...options,
|
|
1924
|
+
fenceLockNames: options.fenceLockNames ?? takeLkgRecoveryLockSweepPage()
|
|
1925
|
+
};
|
|
1926
|
+
if (getHarness2() === "opencode2")
|
|
1927
|
+
openSource = () => new Database2(gaDatabasePath(getDataDir(), process.env.OPENCODE_CHANNEL ?? "latest"), {
|
|
1928
|
+
readonly: true,
|
|
1929
|
+
fileMustExist: true
|
|
1930
|
+
});
|
|
1931
|
+
const path = getSqliteDatabasePath2(db);
|
|
1932
|
+
if (!path || getHarness2() !== "opencode" && getHarness2() !== "opencode2")
|
|
1933
|
+
return sweepOrphanedOpenCodeMessageIndexesCooperatively2(db, openSource, options);
|
|
1934
|
+
let source = null;
|
|
1935
|
+
let sourcePath = null;
|
|
1936
|
+
try {
|
|
1937
|
+
source = openSource();
|
|
1938
|
+
if (source)
|
|
1939
|
+
sourcePath = getSqliteDatabasePath2(source);
|
|
1940
|
+
} catch {} finally {
|
|
1941
|
+
if (sourcePath)
|
|
1942
|
+
source?.close();
|
|
1943
|
+
}
|
|
1944
|
+
if (!sourcePath)
|
|
1945
|
+
return sweepOrphanedOpenCodeMessageIndexesCooperatively2(db, () => source, options);
|
|
1946
|
+
const reply = await runSessionWarmupWorker({
|
|
1947
|
+
path,
|
|
1948
|
+
sessionId: "",
|
|
1949
|
+
harness: getHarness2(),
|
|
1950
|
+
orphanSweep: { sourcePath, options }
|
|
1951
|
+
}, {});
|
|
1952
|
+
if (!("orphanSweep" in reply))
|
|
1953
|
+
throw new Error("message history orphan sweep worker failed");
|
|
1954
|
+
return reply.orphanSweep;
|
|
1955
|
+
}
|
|
1956
|
+
function scheduleClearAndReindex(db, sessionId, readMessages) {
|
|
1957
|
+
heapHolder.reconciledSessions.delete(sessionId);
|
|
1958
|
+
heapHolder.reconciledSnapshots.delete(sessionId);
|
|
1959
|
+
heapHolder.reconciliationScheduledSessions.delete(sessionId);
|
|
1960
|
+
clearCompletedIncrementalKeys(sessionId);
|
|
1961
|
+
const existing = heapHolder.clearAndReindexScheduledSessions.get(sessionId);
|
|
1962
|
+
if (existing) {
|
|
1963
|
+
existing.source = readMessages;
|
|
1964
|
+
return;
|
|
1965
|
+
}
|
|
1966
|
+
const pending = { source: readMessages };
|
|
1967
|
+
heapHolder.clearAndReindexScheduledSessions.set(sessionId, pending);
|
|
1968
|
+
scheduleAfterBootQuiet(() => {
|
|
1969
|
+
defer(() => {
|
|
1970
|
+
let cleared = false;
|
|
1971
|
+
runWithSessionLock(sessionId, () => {
|
|
1972
|
+
if (heapHolder.clearAndReindexScheduledSessions.get(sessionId) !== pending)
|
|
1973
|
+
return;
|
|
1974
|
+
heapHolder.clearAndReindexScheduledSessions.delete(sessionId);
|
|
1975
|
+
heapHolder.reconciledSessions.delete(sessionId);
|
|
1976
|
+
heapHolder.reconciledSnapshots.delete(sessionId);
|
|
1977
|
+
clearCompletedIncrementalKeys(sessionId);
|
|
1978
|
+
clearIndexedMessages2(db, sessionId);
|
|
1979
|
+
cleared = true;
|
|
1980
|
+
}).then(() => cleared ? reconcileSessionIndex(db, sessionId, pending.source) : undefined).catch((error) => {
|
|
1981
|
+
heapHolder.reconciledSessions.delete(sessionId);
|
|
1982
|
+
if (heapHolder.clearAndReindexScheduledSessions.get(sessionId) === pending)
|
|
1983
|
+
heapHolder.clearAndReindexScheduledSessions.delete(sessionId);
|
|
1984
|
+
logIndexingError(sessionId, "clear and reindex", error);
|
|
1985
|
+
});
|
|
1986
|
+
});
|
|
1987
|
+
});
|
|
1988
|
+
}
|
|
1989
|
+
function getMessageIndexQueueHeapStats() {
|
|
1990
|
+
return {
|
|
1991
|
+
queueLength: heapHolder.reconciliationScheduledSessions.size + heapHolder.incrementalTimers.size + heapHolder.pendingIncrementalKeys.size,
|
|
1992
|
+
reconciliationScheduled: heapHolder.reconciliationScheduledSessions.size,
|
|
1993
|
+
incrementalTimers: heapHolder.incrementalTimers.size,
|
|
1994
|
+
pendingIncremental: heapHolder.pendingIncrementalKeys.size,
|
|
1995
|
+
activeSessionLocks: heapHolder.sessionLocks.size,
|
|
1996
|
+
completedIncrementalKeys: heapHolder.completedIncrementalKeys.size,
|
|
1997
|
+
activeBufferMessages: [...heapHolder.activeReconcilerBuffers.values()].reduce((sum, messages) => sum + messages.length, 0),
|
|
1998
|
+
activeBufferBytes: [...heapHolder.activeReconcilerBuffers.values()].reduce((sum, messages) => sum + serializedMessageBytes(messages), 0)
|
|
1999
|
+
};
|
|
2000
|
+
}
|
|
2001
|
+
|
|
1733
2002
|
// src/shared/model-cache-ttl.ts
|
|
1734
2003
|
var MODEL_CACHE_LIFETIMES = [
|
|
1735
2004
|
{
|
|
@@ -3308,197 +3577,6 @@ function capDreamerReadOutput(input, output) {
|
|
|
3308
3577
|
return true;
|
|
3309
3578
|
}
|
|
3310
3579
|
|
|
3311
|
-
// src/features/magic-context/message-index-async.ts
|
|
3312
|
-
var indexCancellations = new Map;
|
|
3313
|
-
var sessionEpochs = new Map;
|
|
3314
|
-
var workerMeasurements = new WeakMap;
|
|
3315
|
-
function isDatabaseLockedError(error) {
|
|
3316
|
-
if (!error || typeof error !== "object")
|
|
3317
|
-
return false;
|
|
3318
|
-
const e = error;
|
|
3319
|
-
if (typeof e.code === "string") {
|
|
3320
|
-
if (e.code === "SQLITE_BUSY" || e.code === "SQLITE_LOCKED")
|
|
3321
|
-
return true;
|
|
3322
|
-
}
|
|
3323
|
-
if (typeof e.message === "string") {
|
|
3324
|
-
if (/database is locked/i.test(e.message))
|
|
3325
|
-
return true;
|
|
3326
|
-
if (/sqlite_(busy|locked)/i.test(e.message))
|
|
3327
|
-
return true;
|
|
3328
|
-
}
|
|
3329
|
-
return false;
|
|
3330
|
-
}
|
|
3331
|
-
var RECONCILIATION_BATCH_SIZE = 100;
|
|
3332
|
-
|
|
3333
|
-
class MagicContextMessageIndexHeapHolder {
|
|
3334
|
-
reconciledSessions = new Set;
|
|
3335
|
-
reconciliationScheduledSessions = new Set;
|
|
3336
|
-
clearAndReindexScheduledSessions = new Map;
|
|
3337
|
-
sessionLocks = new Map;
|
|
3338
|
-
incrementalTimers = new Map;
|
|
3339
|
-
pendingIncrementalKeys = new Set;
|
|
3340
|
-
completedIncrementalKeys = new Set;
|
|
3341
|
-
activeReconcilerBuffers = new Map;
|
|
3342
|
-
}
|
|
3343
|
-
var heapHolder = new MagicContextMessageIndexHeapHolder;
|
|
3344
|
-
var PREPARE_RETRY_MS = 60000;
|
|
3345
|
-
async function sourceReady(source, sessionId) {
|
|
3346
|
-
const prepare = source?.prepare;
|
|
3347
|
-
return typeof prepare === "function" ? prepare(sessionId) : true;
|
|
3348
|
-
}
|
|
3349
|
-
function defer(fn) {
|
|
3350
|
-
const immediate = globalThis.setImmediate;
|
|
3351
|
-
if (typeof immediate === "function") {
|
|
3352
|
-
inRootAsyncContext2(() => immediate(fn));
|
|
3353
|
-
return;
|
|
3354
|
-
}
|
|
3355
|
-
inRootAsyncContext2(() => setTimeout(fn, 0));
|
|
3356
|
-
}
|
|
3357
|
-
function yieldToEventLoop() {
|
|
3358
|
-
return new Promise((resolve) => defer(resolve));
|
|
3359
|
-
}
|
|
3360
|
-
function runWithSessionLock(sessionId, operation) {
|
|
3361
|
-
const previous = heapHolder.sessionLocks.get(sessionId) ?? Promise.resolve();
|
|
3362
|
-
const run = previous.catch(() => {
|
|
3363
|
-
return;
|
|
3364
|
-
}).then(async () => {
|
|
3365
|
-
await operation();
|
|
3366
|
-
});
|
|
3367
|
-
heapHolder.sessionLocks.set(sessionId, run);
|
|
3368
|
-
run.finally(() => {
|
|
3369
|
-
if (heapHolder.sessionLocks.get(sessionId) === run) {
|
|
3370
|
-
heapHolder.sessionLocks.delete(sessionId);
|
|
3371
|
-
}
|
|
3372
|
-
}).catch(() => {
|
|
3373
|
-
return;
|
|
3374
|
-
});
|
|
3375
|
-
return run;
|
|
3376
|
-
}
|
|
3377
|
-
function logIndexingError(sessionId, action, error) {
|
|
3378
|
-
if (isDatabaseLockedError(error)) {
|
|
3379
|
-
sessionLog2(sessionId, `message FTS async ${action} skipped (database busy; will retry on next reconciliation)`);
|
|
3380
|
-
return;
|
|
3381
|
-
}
|
|
3382
|
-
sessionLog2(sessionId, `message FTS async ${action} failed: ${error instanceof Error ? error.message : String(error)}`);
|
|
3383
|
-
log2(`[message-index-async] ${action} failed for ${sessionId}:`, error);
|
|
3384
|
-
}
|
|
3385
|
-
function serializedMessageBytes(messages) {
|
|
3386
|
-
try {
|
|
3387
|
-
return Buffer.byteLength(JSON.stringify(messages));
|
|
3388
|
-
} catch {
|
|
3389
|
-
return 0;
|
|
3390
|
-
}
|
|
3391
|
-
}
|
|
3392
|
-
async function reconcileSessionIndex(db, sessionId, readMessages) {
|
|
3393
|
-
if (!await sourceReady(readMessages, sessionId))
|
|
3394
|
-
return false;
|
|
3395
|
-
await runWithSessionLock(sessionId, async () => {
|
|
3396
|
-
if (heapHolder.reconciledSessions.has(sessionId))
|
|
3397
|
-
return;
|
|
3398
|
-
let fallbackSnapshot = null;
|
|
3399
|
-
try {
|
|
3400
|
-
const fullReader = typeof readMessages === "function" ? readMessages : null;
|
|
3401
|
-
const finalWatermark = readMessages.getCount ? readMessages.getCount(sessionId) : (fallbackSnapshot = fullReader?.(sessionId) ?? []).length;
|
|
3402
|
-
let cursor = getMessageIndexReconciliationStartOrdinal2(db, sessionId);
|
|
3403
|
-
let after;
|
|
3404
|
-
while (cursor < finalWatermark) {
|
|
3405
|
-
const pageEnd = Math.min(finalWatermark, cursor + RECONCILIATION_BATCH_SIZE);
|
|
3406
|
-
const messages = readMessages.readPage ? readMessages.readPage(sessionId, cursor, RECONCILIATION_BATCH_SIZE, finalWatermark, after) : (fallbackSnapshot ?? []).filter((message) => message.ordinal > cursor && message.ordinal <= pageEnd);
|
|
3407
|
-
const retainedMessages = fallbackSnapshot ?? messages;
|
|
3408
|
-
heapHolder.activeReconcilerBuffers.set(sessionId, retainedMessages);
|
|
3409
|
-
withSqliteBackgroundWriter2(() => indexMessagesAfterOrdinal2(db, sessionId, messages, cursor, pageEnd));
|
|
3410
|
-
const nextCursor = getMessageIndexReconciliationStartOrdinal2(db, sessionId);
|
|
3411
|
-
if (nextCursor <= cursor)
|
|
3412
|
-
break;
|
|
3413
|
-
cursor = nextCursor;
|
|
3414
|
-
const last = messages.at(-1);
|
|
3415
|
-
after = last?.ordinal === cursor && typeof last.createdAt === "number" ? { timeCreated: last.createdAt, id: last.id } : undefined;
|
|
3416
|
-
if (cursor < finalWatermark) {
|
|
3417
|
-
await yieldToEventLoop();
|
|
3418
|
-
}
|
|
3419
|
-
}
|
|
3420
|
-
if (isMessageIndexReconciledThrough2(db, sessionId, finalWatermark)) {
|
|
3421
|
-
heapHolder.reconciledSessions.add(sessionId);
|
|
3422
|
-
}
|
|
3423
|
-
} finally {
|
|
3424
|
-
heapHolder.activeReconcilerBuffers.delete(sessionId);
|
|
3425
|
-
}
|
|
3426
|
-
});
|
|
3427
|
-
return true;
|
|
3428
|
-
}
|
|
3429
|
-
function scheduleReconciliation(db, sessionId, readMessages) {
|
|
3430
|
-
if (heapHolder.reconciledSessions.has(sessionId) || heapHolder.reconciliationScheduledSessions.has(sessionId)) {
|
|
3431
|
-
return;
|
|
3432
|
-
}
|
|
3433
|
-
heapHolder.reconciliationScheduledSessions.add(sessionId);
|
|
3434
|
-
scheduleAfterBootQuiet(() => {
|
|
3435
|
-
defer(() => {
|
|
3436
|
-
reconcileSessionIndex(db, sessionId, readMessages).then((ran) => {
|
|
3437
|
-
if (ran)
|
|
3438
|
-
return;
|
|
3439
|
-
inRootAsyncContext2(() => setTimeout(() => {
|
|
3440
|
-
heapHolder.reconciliationScheduledSessions.delete(sessionId);
|
|
3441
|
-
scheduleReconciliation(db, sessionId, readMessages);
|
|
3442
|
-
}, PREPARE_RETRY_MS)).unref?.();
|
|
3443
|
-
}).catch((error) => {
|
|
3444
|
-
logIndexingError(sessionId, "reconciliation", error);
|
|
3445
|
-
if (isDatabaseLockedError(error))
|
|
3446
|
-
inRootAsyncContext2(() => setTimeout(() => scheduleReconciliation(db, sessionId, readMessages), 1000)).unref();
|
|
3447
|
-
}).finally(() => {
|
|
3448
|
-
heapHolder.reconciliationScheduledSessions.delete(sessionId);
|
|
3449
|
-
});
|
|
3450
|
-
});
|
|
3451
|
-
});
|
|
3452
|
-
}
|
|
3453
|
-
async function sweepOrphanedOpenCodeMessageIndexesOffThread(db, openSource, options = {}) {
|
|
3454
|
-
if (getHarness2() === "opencode" || getHarness2() === "opencode2")
|
|
3455
|
-
options = {
|
|
3456
|
-
...options,
|
|
3457
|
-
fenceLockNames: options.fenceLockNames ?? takeLkgRecoveryLockSweepPage()
|
|
3458
|
-
};
|
|
3459
|
-
if (getHarness2() === "opencode2")
|
|
3460
|
-
openSource = () => new Database2(gaDatabasePath(getDataDir(), process.env.OPENCODE_CHANNEL ?? "latest"), {
|
|
3461
|
-
readonly: true,
|
|
3462
|
-
fileMustExist: true
|
|
3463
|
-
});
|
|
3464
|
-
const path = getSqliteDatabasePath2(db);
|
|
3465
|
-
if (!path || getHarness2() !== "opencode" && getHarness2() !== "opencode2")
|
|
3466
|
-
return sweepOrphanedOpenCodeMessageIndexesCooperatively2(db, openSource, options);
|
|
3467
|
-
let source = null;
|
|
3468
|
-
let sourcePath = null;
|
|
3469
|
-
try {
|
|
3470
|
-
source = openSource();
|
|
3471
|
-
if (source)
|
|
3472
|
-
sourcePath = getSqliteDatabasePath2(source);
|
|
3473
|
-
} catch {} finally {
|
|
3474
|
-
if (sourcePath)
|
|
3475
|
-
source?.close();
|
|
3476
|
-
}
|
|
3477
|
-
if (!sourcePath)
|
|
3478
|
-
return sweepOrphanedOpenCodeMessageIndexesCooperatively2(db, () => source, options);
|
|
3479
|
-
const reply = await runSessionWarmupWorker({
|
|
3480
|
-
path,
|
|
3481
|
-
sessionId: "",
|
|
3482
|
-
harness: getHarness2(),
|
|
3483
|
-
orphanSweep: { sourcePath, options }
|
|
3484
|
-
}, {});
|
|
3485
|
-
if (!("orphanSweep" in reply))
|
|
3486
|
-
throw new Error("message history orphan sweep worker failed");
|
|
3487
|
-
return reply.orphanSweep;
|
|
3488
|
-
}
|
|
3489
|
-
function getMessageIndexQueueHeapStats() {
|
|
3490
|
-
return {
|
|
3491
|
-
queueLength: heapHolder.reconciliationScheduledSessions.size + heapHolder.incrementalTimers.size + heapHolder.pendingIncrementalKeys.size,
|
|
3492
|
-
reconciliationScheduled: heapHolder.reconciliationScheduledSessions.size,
|
|
3493
|
-
incrementalTimers: heapHolder.incrementalTimers.size,
|
|
3494
|
-
pendingIncremental: heapHolder.pendingIncrementalKeys.size,
|
|
3495
|
-
activeSessionLocks: heapHolder.sessionLocks.size,
|
|
3496
|
-
completedIncrementalKeys: heapHolder.completedIncrementalKeys.size,
|
|
3497
|
-
activeBufferMessages: [...heapHolder.activeReconcilerBuffers.values()].reduce((sum, messages) => sum + messages.length, 0),
|
|
3498
|
-
activeBufferBytes: [...heapHolder.activeReconcilerBuffers.values()].reduce((sum, messages) => sum + serializedMessageBytes(messages), 0)
|
|
3499
|
-
};
|
|
3500
|
-
}
|
|
3501
|
-
|
|
3502
3580
|
// src/plugin/sidebar-snapshot-cache.ts
|
|
3503
3581
|
var MAX_CACHED_SESSIONS = 100;
|
|
3504
3582
|
var STALE_SNAPSHOT_AGE_MS = 5 * 60 * 1000;
|
|
@@ -4262,7 +4340,15 @@ class AutoSearchBusyError extends Error {
|
|
|
4262
4340
|
}
|
|
4263
4341
|
}
|
|
4264
4342
|
async function searchAutoHint(db, sessionId, projectPath, query, options, entry = new URL(new URL(import.meta.url).pathname.endsWith(".ts") ? "./auto-search-worker.ts" : "./auto-search-worker.js", import.meta.url)) {
|
|
4265
|
-
|
|
4343
|
+
const {
|
|
4344
|
+
rerankConfig: _rerankConfig,
|
|
4345
|
+
rerankClient: _rerankClient,
|
|
4346
|
+
rerankConnectionFile: _rerankConnectionFile,
|
|
4347
|
+
onRerankSkipped: _onRerankSkipped,
|
|
4348
|
+
captureRerankLanes: _captureRerankLanes,
|
|
4349
|
+
...hintOptions
|
|
4350
|
+
} = options;
|
|
4351
|
+
return executeAutoSearchWorker(db, sessionId, projectPath, query, { ...hintOptions, explicitSearch: false, rerank: false }, entry, "search");
|
|
4266
4352
|
}
|
|
4267
4353
|
var pendingBackfills = new WeakMap;
|
|
4268
4354
|
var searchWorkers = new WeakMap;
|
|
@@ -5950,7 +6036,7 @@ function canConsumeDeferredOnThisPass(args) {
|
|
|
5950
6036
|
return args.schedulerDecision === "execute" || args.contextPercentage >= (args.forceMaterializationPercentage ?? escalationBands(65).forceMaterializationPercentage);
|
|
5951
6037
|
}
|
|
5952
6038
|
function hasReclaimRide(signals) {
|
|
5953
|
-
return signals.hardFold || signals.force || signals.explicitFlush || signals.publishedHistory || signals.subagentExecute === true || signals.executeReclaim === true;
|
|
6039
|
+
return signals.hardFold || signals.force || signals.explicitFlush || signals.publishedHistory || signals.subagentExecute === true || signals.executeReclaim === true || signals.servedShapeRepair === true;
|
|
5954
6040
|
}
|
|
5955
6041
|
function prefixMutationPermitted(gate) {
|
|
5956
6042
|
return !gate.signedThinkingHold || gate.firstRender || gate.idleExpiry || gate.emergency;
|
|
@@ -5964,7 +6050,8 @@ var RECLAIM_RIDE_NAMES = [
|
|
|
5964
6050
|
"explicitFlush",
|
|
5965
6051
|
"publishedHistory",
|
|
5966
6052
|
"subagentExecute",
|
|
5967
|
-
"executeReclaim"
|
|
6053
|
+
"executeReclaim",
|
|
6054
|
+
"servedShapeRepair"
|
|
5968
6055
|
];
|
|
5969
6056
|
function reclaimRideLabel(signals) {
|
|
5970
6057
|
const active = RECLAIM_RIDE_NAMES.filter((name) => signals[name]);
|
|
@@ -9319,7 +9406,7 @@ function tagMessages(sessionId, messages, tagger, db, options = {}) {
|
|
|
9319
9406
|
const textPart = part;
|
|
9320
9407
|
const thinkingParts = messageThinkingParts;
|
|
9321
9408
|
const contentId = `${messageId}:p${partIndex}`;
|
|
9322
|
-
const whitespaceOnlyAssistant = message.info.role === "assistant" && stripTagPrefix(textPart.text).trim().length === 0;
|
|
9409
|
+
const whitespaceOnlyAssistant = message.info.role === "assistant" && (stripTagPrefix(textPart.text).trim().length === 0 || textPart.text.includes("§") && stripPersistedAssistantText(textPart.text).length === 0);
|
|
9323
9410
|
let existingTagId;
|
|
9324
9411
|
if (whitespaceOnlyAssistant) {
|
|
9325
9412
|
const persistedWhitespaceTag = getTagNumberByMessageId2(db, sessionId, contentId);
|
|
@@ -9371,7 +9458,7 @@ function tagMessages(sessionId, messages, tagger, db, options = {}) {
|
|
|
9371
9458
|
accAssignTag += performance.now() - _tAssignText;
|
|
9372
9459
|
const persistedSource = sourceContents.get(tagId);
|
|
9373
9460
|
if (persistedSource !== undefined && !options.refreshSourceContents) {
|
|
9374
|
-
textPart.text = options.normalizeRestoredAssistantText && message.info.role === "assistant" ? options.normalizeRestoredAssistantText(persistedSource) : persistedSource;
|
|
9461
|
+
textPart.text = options.normalizeRestoredAssistantText && message.info.role === "assistant" ? options.normalizeRestoredAssistantText(persistedSource, message.info.providerID) : persistedSource;
|
|
9375
9462
|
} else {
|
|
9376
9463
|
const sourceContent = stripTagPrefix(textPart.text);
|
|
9377
9464
|
if (sourceContent.trim().length > 0 || options.refreshSourceContents) {
|
|
@@ -10254,6 +10341,9 @@ async function runPostTransformPhase(args) {
|
|
|
10254
10341
|
}
|
|
10255
10342
|
};
|
|
10256
10343
|
const trailingBlankSourceDecisions = args.trailingBlankSourceDecisions ?? snapshotTrailingBlankSourceDecisions(args.messages);
|
|
10344
|
+
if (!modelAcceptsEmptyContent(args.resolvedProviderID) && !compactionOff)
|
|
10345
|
+
captureInlineThinkingRepairs(args.messages, args.messageTagNumbers, args.sessionMeta?.clearedReasoningThroughTag ?? 0);
|
|
10346
|
+
const servedShapeRepair = prepareServedShapeRepair(args.db, args.sessionId, args.messages, args.readLastServedMessages, compactionOff ? undefined : postprocessReplaySnapshot(args.db, args.sessionId));
|
|
10257
10347
|
let trailingBlankNewestAssistant;
|
|
10258
10348
|
for (let index = args.messages.length - 1;index >= 0; index -= 1) {
|
|
10259
10349
|
const message = args.messages[index];
|
|
@@ -10283,8 +10373,8 @@ async function runPostTransformPhase(args) {
|
|
|
10283
10373
|
}
|
|
10284
10374
|
const activeCompartmentRun = args.canRunCompartments ? getActiveCompartmentRun(args.sessionId) : undefined;
|
|
10285
10375
|
const compartmentRunning = args.canRunCompartments && !args.awaitedCompartmentRun && activeCompartmentRun !== undefined;
|
|
10286
|
-
let deferredMaterialize = args.canConsumeDeferredLate && deferredMaterializationWasPending;
|
|
10287
|
-
let materializationRequested = isExplicitFlush || deferredMaterialize;
|
|
10376
|
+
let deferredMaterialize = (args.canConsumeDeferredLate || servedShapeRepair.needsRebuild) && deferredMaterializationWasPending;
|
|
10377
|
+
let materializationRequested = isExplicitFlush || deferredMaterialize || servedShapeRepair.needsRebuild;
|
|
10288
10378
|
const m0M1EnabledForFold = args.m0M1 !== undefined && (!!args.m0M1.projectPath || !!args.m0M1.projectDirectory) && (args.fullFeatureMode || compactionOff);
|
|
10289
10379
|
const frozenThinking = new Set(args.activeThinkingTurn || compactionOff ? getMergedReasoningStrippedIds(args.db, args.sessionId) : []);
|
|
10290
10380
|
const compactionOffFrozenThinking = compactionOff ? compactionOffFrozenThinkingIds(frozenThinking) : new Set;
|
|
@@ -10338,6 +10428,8 @@ async function runPostTransformPhase(args) {
|
|
|
10338
10428
|
rewritingSignedPrefix = true;
|
|
10339
10429
|
thinkingReleasedForFit ||= forFit;
|
|
10340
10430
|
};
|
|
10431
|
+
if (servedShapeRepair.needsRebuild && activeThinkingTurn)
|
|
10432
|
+
releaseThinkingForRewrite(false, true);
|
|
10341
10433
|
if (args.forceSignedRebuildForFit && (activeThinkingPrefixHold || activeThinkingTurn && args.thinkingBindingRecoveryEnabledForModel === true)) {
|
|
10342
10434
|
releaseThinkingForRewrite(true);
|
|
10343
10435
|
}
|
|
@@ -10369,7 +10461,7 @@ async function runPostTransformPhase(args) {
|
|
|
10369
10461
|
let foldBustsServedPrefixThisPass = false;
|
|
10370
10462
|
let publishedM1RefreshedThisPass = false;
|
|
10371
10463
|
let prefixPreflightFailed = false;
|
|
10372
|
-
const softRefreshOpportunity = !freezeM0M1 && (args.schedulerDecision === "execute" || deferredMaterialize);
|
|
10464
|
+
const softRefreshOpportunity = !freezeM0M1 && (args.schedulerDecision === "execute" || deferredMaterialize || servedShapeRepair.needsRebuild);
|
|
10373
10465
|
let m0RematerializedThisPass = false;
|
|
10374
10466
|
const m0CoverageBeforeFold = args.sessionMeta.cachedM0Bytes === null ? -1 : args.sessionMeta.cachedM0MaxCompartmentSeq;
|
|
10375
10467
|
let m0MaterializeReason = null;
|
|
@@ -10498,6 +10590,7 @@ async function runPostTransformPhase(args) {
|
|
|
10498
10590
|
const heldIdleExpiryRebuild = activeThinkingPrefixHold && args.m0M1?.hardSignals?.cacheExpired === true;
|
|
10499
10591
|
const idleExpiryRebuild = (!freezeM0M1 || activeThinkingPrefixHold) && args.m0M1?.hardSignals?.cacheExpired === true;
|
|
10500
10592
|
const rideSignals = {
|
|
10593
|
+
servedShapeRepair: servedShapeRepair.needsRebuild,
|
|
10501
10594
|
executeReclaim: false,
|
|
10502
10595
|
subagentExecute: !args.fullFeatureMode && args.schedulerDecision === "execute",
|
|
10503
10596
|
hardFold: rewritingSignedPrefix || foldBustsServedPrefixThisPass || firstRenderBust || idleExpiryRebuild,
|
|
@@ -10522,15 +10615,18 @@ async function runPostTransformPhase(args) {
|
|
|
10522
10615
|
}),
|
|
10523
10616
|
usableWindow: args.usableWindow
|
|
10524
10617
|
});
|
|
10525
|
-
const publishedWorkDrainAllowed = !compactionOff && reclaimRidePermitted(rideSignals, {
|
|
10618
|
+
const publishedWorkDrainAllowed = (!compactionOff || servedShapeRepair.needsRebuild) && reclaimRidePermitted(rideSignals, {
|
|
10526
10619
|
signedThinkingHold: activeThinkingPrefixHold,
|
|
10527
10620
|
firstRender: firstRenderBust,
|
|
10528
10621
|
idleExpiry: idleExpiryRebuild,
|
|
10529
10622
|
emergency: emergencyDropEligible
|
|
10530
10623
|
});
|
|
10531
|
-
const shouldApplyPendingOps = publishedWorkDrainAllowed;
|
|
10532
|
-
const shouldRunHeuristics = publishedWorkDrainAllowed && (rideSignals.publishedHistory || rideSignals.executeReclaim || materializationRequested || forceMaterialization || foldBustsServedPrefixThisPass || firstRenderBust || heldIdleExpiryRebuild || emergencyDropEligible || args.schedulerDecision === "execute" && (!alreadyRanThisTurn || !args.fullFeatureMode));
|
|
10624
|
+
const shouldApplyPendingOps = !compactionOff && publishedWorkDrainAllowed;
|
|
10625
|
+
const shouldRunHeuristics = !compactionOff && publishedWorkDrainAllowed && (rideSignals.publishedHistory || rideSignals.executeReclaim || rideSignals.servedShapeRepair || materializationRequested || forceMaterialization || foldBustsServedPrefixThisPass || firstRenderBust || heldIdleExpiryRebuild || emergencyDropEligible || args.schedulerDecision === "execute" && (!alreadyRanThisTurn || !args.fullFeatureMode));
|
|
10533
10626
|
const isCacheBustingPass = publishedWorkDrainAllowed;
|
|
10627
|
+
if (servedShapeRepair.needsRebuild && !isCacheBustingPass)
|
|
10628
|
+
throw new Error("Served-shape repair requires a rebuilding pass");
|
|
10629
|
+
servedShapeRepair.apply(isCacheBustingPass);
|
|
10534
10630
|
let unheldSignedTurnBust = false;
|
|
10535
10631
|
if (isCacheBustingPass && !activeThinkingPrefixHold && activeThinkingTurn && args.thinkingBindingRecoveryEnabledForModel === true) {
|
|
10536
10632
|
if (foldBustsServedPrefixThisPass || firstRenderBust || publishedM1RefreshedThisPass)
|
|
@@ -10658,6 +10754,8 @@ async function runPostTransformPhase(args) {
|
|
|
10658
10754
|
};
|
|
10659
10755
|
if (temporalFirstApplication)
|
|
10660
10756
|
recordFirstApplicationWireEdit(true);
|
|
10757
|
+
if (servedShapeRepair.needsRebuild)
|
|
10758
|
+
recordFirstApplicationWireEdit(true);
|
|
10661
10759
|
const firstApplicationLocations = new Map;
|
|
10662
10760
|
const recordFirstApplicationAt = (message, partIndex) => {
|
|
10663
10761
|
recordFirstApplicationWireEdit(false);
|
|
@@ -10800,11 +10898,12 @@ async function runPostTransformPhase(args) {
|
|
|
10800
10898
|
if (routineCleanupApplied && canUseEmptySentinels) {
|
|
10801
10899
|
stripClearedReasoning(args.messages);
|
|
10802
10900
|
}
|
|
10803
|
-
const strippedInline = routineCleanupApplied && ageLaneAllowed ? stripInlineThinking(args.messages, args.messageTagNumbers, budgetCutoff) : 0;
|
|
10901
|
+
const strippedInline = routineCleanupApplied && ageLaneAllowed ? stripInlineThinking(args.messages, args.messageTagNumbers, budgetCutoff, !canUseEmptySentinels) : 0;
|
|
10804
10902
|
const persistedInlineWatermark = args.sessionMeta?.clearedReasoningThroughTag ?? 0;
|
|
10805
10903
|
if (routineCleanupApplied && persistedInlineWatermark > 0 && !compactionOff) {
|
|
10806
|
-
replayStrippedInlineThinking(args.messages, args.messageTagNumbers, persistedInlineWatermark);
|
|
10904
|
+
replayStrippedInlineThinking(args.messages, args.messageTagNumbers, persistedInlineWatermark, !canUseEmptySentinels);
|
|
10807
10905
|
}
|
|
10906
|
+
servedShapeRepair.apply(isCacheBustingPass);
|
|
10808
10907
|
let removedReasoningMessages = 0;
|
|
10809
10908
|
if (routineCleanupApplied && !prefixBoundModel && reasoningRemovalSelectable && reasoningRemovalReadable) {
|
|
10810
10909
|
const newIds = selectReasoningRemovals({
|
|
@@ -11131,7 +11230,7 @@ async function runPostTransformPhase(args) {
|
|
|
11131
11230
|
}
|
|
11132
11231
|
}
|
|
11133
11232
|
if (isCacheBustingPass) {
|
|
11134
|
-
const droppedResult = stripDroppedPlaceholderMessages(args.messages, args.resolvedProviderID, recordFirstApplicationAt);
|
|
11233
|
+
const droppedResult = stripDroppedPlaceholderMessages(args.messages.filter((message) => !servedShapeRepair.messageIDs.has(message.info.id ?? "")), args.resolvedProviderID, recordFirstApplicationAt);
|
|
11135
11234
|
const protectedTailStart = Math.max(0, args.messages.length - SYSTEM_INJECTION_ACTIONABLE_TAIL_MESSAGES);
|
|
11136
11235
|
const systemInjectedResult = stripSystemInjectedMessages(args.messages, protectedTailStart, args.resolvedProviderID, recordFirstApplicationAt);
|
|
11137
11236
|
const hiddenMessages = args.hiddenMessagesAtCompactionSeam ?? [];
|
|
@@ -19094,7 +19193,7 @@ function createTransform(deps) {
|
|
|
19094
19193
|
failPass("store-generation-rebase-failure", error);
|
|
19095
19194
|
}
|
|
19096
19195
|
}
|
|
19097
|
-
if (deps.client !== undefined) {
|
|
19196
|
+
if (deps.client !== undefined || deps.hostMessageReconciliationSource !== undefined) {
|
|
19098
19197
|
withoutSqliteTransformPass2(() => scheduleReconciliation(db, sessionId, host.hostMessageReconciliationSource));
|
|
19099
19198
|
}
|
|
19100
19199
|
const tUserMsg = performance.now();
|
|
@@ -19794,7 +19893,7 @@ Historian previously failed ${historianFailureState.failureCount} time(s), so Ma
|
|
|
19794
19893
|
if (persistedReasoningWatermark > 0 && !compactionOff) {
|
|
19795
19894
|
const tReplay = performance.now();
|
|
19796
19895
|
const replayed = canUseEmptySentinels ? replayClearedReasoning(messages, reasoningByMessage, messageTagNumbers, persistedReasoningWatermark) : 0;
|
|
19797
|
-
const replayedInline = replayStrippedInlineThinking(messages, messageTagNumbers, persistedReasoningWatermark);
|
|
19896
|
+
const replayedInline = replayStrippedInlineThinking(messages, messageTagNumbers, persistedReasoningWatermark, !canUseEmptySentinels);
|
|
19798
19897
|
if (replayed > 0 || replayedInline > 0) {
|
|
19799
19898
|
sessionLog2(sessionId, `reasoning replay: cleared=${replayed} inlineStripped=${replayedInline} (watermark=${persistedReasoningWatermark})`);
|
|
19800
19899
|
}
|
|
@@ -22419,6 +22518,7 @@ async function ensureProjectRegisteredFromOpenCodeDirectory(directory, db, optio
|
|
|
22419
22518
|
} else {
|
|
22420
22519
|
unregisterProjectShadowEmbedding2(projectIdentity);
|
|
22421
22520
|
}
|
|
22521
|
+
options.onRegistered?.(projectIdentity);
|
|
22422
22522
|
}
|
|
22423
22523
|
|
|
22424
22524
|
// src/hooks/magic-context/format-embed-failure.ts
|
|
@@ -23679,8 +23779,8 @@ function registerRpcHandlers(rpcServer, args) {
|
|
|
23679
23779
|
const db = readDatabase();
|
|
23680
23780
|
if (!db)
|
|
23681
23781
|
return { ok: false, error: "db unavailable" };
|
|
23682
|
-
const { runManagedRecomp } = await importPluginModule(() => import("./recomp-orchestrator-
|
|
23683
|
-
const { sendIgnoredMessage } = await importPluginModule(() => import("./send-session-notification-
|
|
23782
|
+
const { runManagedRecomp } = await importPluginModule(() => import("./recomp-orchestrator-b12zaptj.js"));
|
|
23783
|
+
const { sendIgnoredMessage } = await importPluginModule(() => import("./send-session-notification-8eqe259v.js"));
|
|
23684
23784
|
log2(`[rpc] recomp requested for session ${sessionId}`);
|
|
23685
23785
|
if (!args.client && !args.hiddenCompletionExecutor) {
|
|
23686
23786
|
return {
|
|
@@ -23764,7 +23864,7 @@ function registerRpcHandlers(rpcServer, args) {
|
|
|
23764
23864
|
const db = readDatabase();
|
|
23765
23865
|
if (!db)
|
|
23766
23866
|
return { ok: false, error: "db unavailable" };
|
|
23767
|
-
const { runManagedWrapup } = await importPluginModule(() => import("./wrapup-orchestrator-
|
|
23867
|
+
const { runManagedWrapup } = await importPluginModule(() => import("./wrapup-orchestrator-3ssd5yy1.js"));
|
|
23768
23868
|
const model = liveSessionState.liveModelBySession.get(sessionId);
|
|
23769
23869
|
const contextLimit = model ? resolveContextLimit(model.providerID, model.modelID, { db, sessionID: sessionId }) : 128000;
|
|
23770
23870
|
const ctx = {
|
|
@@ -25140,8 +25240,8 @@ function toolStateContent(state) {
|
|
|
25140
25240
|
}
|
|
25141
25241
|
|
|
25142
25242
|
// src/v2/hooks/copied-tag-notation.ts
|
|
25143
|
-
function stripCopiedTagNotation(text) {
|
|
25144
|
-
return text.includes("§") ? stripPersistedAssistantText(text) : text;
|
|
25243
|
+
function stripCopiedTagNotation(text, acceptsEmpty = true) {
|
|
25244
|
+
return text.includes("§") ? stripPersistedAssistantText(text, acceptsEmpty) : text;
|
|
25145
25245
|
}
|
|
25146
25246
|
|
|
25147
25247
|
// src/v2/hooks/payload.ts
|
|
@@ -25396,12 +25496,16 @@ function adaptPayload(draft, admittedIDs = new Set, messageTimes = new Map, hidd
|
|
|
25396
25496
|
const messages = [];
|
|
25397
25497
|
for (const message of source) {
|
|
25398
25498
|
const parts = [];
|
|
25499
|
+
const copiedTagOnly = [];
|
|
25399
25500
|
for (const content of message.content) {
|
|
25400
25501
|
if (paired.has(content))
|
|
25401
25502
|
continue;
|
|
25402
25503
|
const part = callParts.get(content) ?? (content.type === "tool-result" ? nativeTool(undefined, { part: content, message }) : clonePreservingInstances(content));
|
|
25403
|
-
if (message.role === "assistant" && part.type === "text" && typeof part.text === "string")
|
|
25404
|
-
part.text
|
|
25504
|
+
if (message.role === "assistant" && part.type === "text" && typeof part.text === "string") {
|
|
25505
|
+
if (!modelAcceptsEmptyContent(draft.model.providerID) && part.text.trim().length > 0 && stripCopiedTagNotation(part.text).trim().length === 0)
|
|
25506
|
+
copiedTagOnly.push({ index: parts.length, text: part.text });
|
|
25507
|
+
part.text = stripCopiedTagNotation(part.text, modelAcceptsEmptyContent(draft.model.providerID));
|
|
25508
|
+
}
|
|
25405
25509
|
if (message.id && admittedIDs.has(message.id))
|
|
25406
25510
|
part.synthetic = true;
|
|
25407
25511
|
parts.push(part);
|
|
@@ -25443,6 +25547,7 @@ function adaptPayload(draft, admittedIDs = new Set, messageTimes = new Map, hidd
|
|
|
25443
25547
|
});
|
|
25444
25548
|
}
|
|
25445
25549
|
originals.set(mapped, message);
|
|
25550
|
+
markServedShapeRepair(mapped.info, copiedTagOnly);
|
|
25446
25551
|
if (isCoveredInstructionRow(message))
|
|
25447
25552
|
markCoveredInstructionRow(mapped.info);
|
|
25448
25553
|
if (typeof message.id !== "string")
|
|
@@ -30085,28 +30190,35 @@ function diff(name, before, after) {
|
|
|
30085
30190
|
rmSync2(dir, { recursive: true, force: true });
|
|
30086
30191
|
}
|
|
30087
30192
|
}
|
|
30088
|
-
function
|
|
30089
|
-
if (Object.entries(expected).some(([name, value]) => docsBaseHashes(projectDir)[name] !== value))
|
|
30090
|
-
throw new Error("base drifted");
|
|
30193
|
+
function parseDocsProposalOutput(output) {
|
|
30091
30194
|
const match = output.match(/```json\s*([\s\S]*?)```/);
|
|
30092
30195
|
const parsed = JSON.parse(match?.[1] ?? output);
|
|
30093
30196
|
if (!Array.isArray(parsed))
|
|
30094
30197
|
throw new Error("proposal must be a JSON array");
|
|
30095
30198
|
const changes = parsed;
|
|
30096
|
-
if (!changes.length)
|
|
30097
|
-
throw new Error("empty proposal");
|
|
30098
30199
|
if (changes.some((item) => !item || !FILES.includes(item.file)))
|
|
30099
30200
|
throw new Error("unknown proposal file");
|
|
30201
|
+
const seen = new Set;
|
|
30202
|
+
for (const change of changes) {
|
|
30203
|
+
const key = `${change.file}:${change.heading}`;
|
|
30204
|
+
if (!["replace", "add", "remove"].includes(change.action) || typeof change.heading !== "string" || !/^#{1,6} [^\r\n]+$/.test(change.heading) || typeof change.text !== "string" || typeof change.reason !== "string" || !change.reason.trim() || /[\r\n]/.test(change.reason) || seen.has(key))
|
|
30205
|
+
throw new Error(`invalid section change in ${change.file}`);
|
|
30206
|
+
seen.add(key);
|
|
30207
|
+
}
|
|
30208
|
+
return changes;
|
|
30209
|
+
}
|
|
30210
|
+
function validateDocsProposal(projectDir, output, budget, expected) {
|
|
30211
|
+
if (Object.entries(expected).some(([name, value]) => docsBaseHashes(projectDir)[name] !== value))
|
|
30212
|
+
throw new Error("base drifted");
|
|
30213
|
+
const changes = parseDocsProposalOutput(output);
|
|
30214
|
+
if (!changes.length)
|
|
30215
|
+
throw new Error("empty proposal");
|
|
30100
30216
|
let tokens = 0;
|
|
30101
30217
|
let diffs = "";
|
|
30102
30218
|
for (const file of FILES) {
|
|
30103
30219
|
const before = existsSync4(join8(projectDir, file)) ? readFileSync6(join8(projectDir, file), "utf8") : "";
|
|
30104
30220
|
let after = before;
|
|
30105
|
-
const seen = new Set;
|
|
30106
30221
|
for (const change of changes.filter((item) => item.file === file)) {
|
|
30107
|
-
if (!["replace", "add", "remove"].includes(change.action) || typeof change.heading !== "string" || !/^#{1,6} [^\r\n]+$/.test(change.heading) || typeof change.text !== "string" || typeof change.reason !== "string" || !change.reason.trim() || /[\r\n]/.test(change.reason) || seen.has(change.heading))
|
|
30108
|
-
throw new Error(`invalid section change in ${file}`);
|
|
30109
|
-
seen.add(change.heading);
|
|
30110
30222
|
const section = sections(after).find((item) => item.heading === change.heading);
|
|
30111
30223
|
if (change.action === "add") {
|
|
30112
30224
|
if (section || !change.text.startsWith(`${change.heading}
|
|
@@ -35725,6 +35837,8 @@ async function runAgenticTask(config, ctx, helpers) {
|
|
|
35725
35837
|
timeoutMs: Math.min(Math.max(0, deadline - Date.now()), config.timeoutMinutes * 60 * 1000),
|
|
35726
35838
|
signal: abortController.signal,
|
|
35727
35839
|
parse: (text, completion) => {
|
|
35840
|
+
if (task === "maintain-docs")
|
|
35841
|
+
parseDocsProposalOutput(text);
|
|
35728
35842
|
if (task !== "curate")
|
|
35729
35843
|
return text;
|
|
35730
35844
|
const memoryOperations = inspectCurateMemoryOperations(completion.messages);
|
|
@@ -35788,6 +35902,8 @@ async function runAgenticTask(config, ctx, helpers) {
|
|
|
35788
35902
|
if (task !== "curate") {
|
|
35789
35903
|
if (!text)
|
|
35790
35904
|
throw new Error("Dreamer returned no assistant output.");
|
|
35905
|
+
if (task === "maintain-docs")
|
|
35906
|
+
parseDocsProposalOutput(text);
|
|
35791
35907
|
return text;
|
|
35792
35908
|
}
|
|
35793
35909
|
const memoryOperations = inspectCurateMemoryOperations(messages);
|
|
@@ -35837,7 +35953,7 @@ async function runAgenticTask(config, ctx, helpers) {
|
|
|
35837
35953
|
recordInvocation("completed", run.output);
|
|
35838
35954
|
if (task === "maintain-docs" && docsHashes && changes) {
|
|
35839
35955
|
try {
|
|
35840
|
-
if (run.validated ===
|
|
35956
|
+
if (parseDocsProposalOutput(String(run.validated)).length === 0) {
|
|
35841
35957
|
helpers.recordRun("completed", null, { progress: "no corrections proposed" });
|
|
35842
35958
|
return {
|
|
35843
35959
|
status: "completed",
|
|
@@ -37046,7 +37162,7 @@ function registerV2DreamScheduleTimer(args) {
|
|
|
37046
37162
|
since_days: gitCommitIndexing.since_days,
|
|
37047
37163
|
max_commits: gitCommitIndexing.max_commits
|
|
37048
37164
|
} : undefined,
|
|
37049
|
-
ensureRegistered: ensureProjectRegisteredFromOpenCodeDirectory
|
|
37165
|
+
ensureRegistered: args.ensureRegistered ?? ensureProjectRegisteredFromOpenCodeDirectory
|
|
37050
37166
|
}).catch((error) => {
|
|
37051
37167
|
log2(`[magic-context] v2 dream timer registration failed (continuing without it): ${error}`);
|
|
37052
37168
|
return;
|
|
@@ -37141,6 +37257,41 @@ function startDreamTrigger(context, args) {
|
|
|
37141
37257
|
};
|
|
37142
37258
|
}
|
|
37143
37259
|
|
|
37260
|
+
// src/v2/hooks/embedding-lifecycle.ts
|
|
37261
|
+
function createV2EmbeddingScope(initialProject) {
|
|
37262
|
+
const releases = new Map;
|
|
37263
|
+
const pending = new Set;
|
|
37264
|
+
let disposed = false;
|
|
37265
|
+
let disposal;
|
|
37266
|
+
const claim = (project) => {
|
|
37267
|
+
if (!releases.has(project))
|
|
37268
|
+
releases.set(project, retainProjectEmbedding2(project));
|
|
37269
|
+
};
|
|
37270
|
+
if (initialProject)
|
|
37271
|
+
claim(initialProject);
|
|
37272
|
+
return {
|
|
37273
|
+
ensureRegistered(directory, db) {
|
|
37274
|
+
if (disposed)
|
|
37275
|
+
return Promise.resolve();
|
|
37276
|
+
const registration = ensureProjectRegisteredFromOpenCodeDirectory(directory, db, {
|
|
37277
|
+
onRegistered: claim
|
|
37278
|
+
});
|
|
37279
|
+
pending.add(registration);
|
|
37280
|
+
return registration.finally(() => pending.delete(registration));
|
|
37281
|
+
},
|
|
37282
|
+
dispose() {
|
|
37283
|
+
disposed = true;
|
|
37284
|
+
disposal ??= (async () => {
|
|
37285
|
+
await Promise.allSettled([...pending]);
|
|
37286
|
+
for (const release of releases.values())
|
|
37287
|
+
release();
|
|
37288
|
+
releases.clear();
|
|
37289
|
+
})();
|
|
37290
|
+
return disposal;
|
|
37291
|
+
}
|
|
37292
|
+
};
|
|
37293
|
+
}
|
|
37294
|
+
|
|
37144
37295
|
// src/v2/hooks/generate.ts
|
|
37145
37296
|
function generateReplayAnchor(messages) {
|
|
37146
37297
|
let index = messages.length - 1;
|
|
@@ -38179,6 +38330,22 @@ function* readV2RawMessagePagesForConversion(openReader, sessionID, pageRows = C
|
|
|
38179
38330
|
function createV2RawMessageReader(openReader) {
|
|
38180
38331
|
const servedBoundaryCache = new Map;
|
|
38181
38332
|
return {
|
|
38333
|
+
getRevision: (sessionID) => {
|
|
38334
|
+
const reader = openReader();
|
|
38335
|
+
try {
|
|
38336
|
+
return reader.latestSequence(sessionID);
|
|
38337
|
+
} finally {
|
|
38338
|
+
reader.close();
|
|
38339
|
+
}
|
|
38340
|
+
},
|
|
38341
|
+
getCountAfterRevision: (sessionID, after, through) => {
|
|
38342
|
+
const reader = openReader();
|
|
38343
|
+
try {
|
|
38344
|
+
return reader.messageCountAfterSequence(sessionID, after, through);
|
|
38345
|
+
} finally {
|
|
38346
|
+
reader.close();
|
|
38347
|
+
}
|
|
38348
|
+
},
|
|
38182
38349
|
readPage: (sessionID, afterOrdinal, limit, finalWatermark, after) => {
|
|
38183
38350
|
const reader = openReader();
|
|
38184
38351
|
try {
|
|
@@ -52189,6 +52356,7 @@ function createCtxSearchTool(deps) {
|
|
|
52189
52356
|
return formatSearchResults2(query, idResults ?? [], toolContext.sessionID, diagnostics);
|
|
52190
52357
|
}
|
|
52191
52358
|
}
|
|
52359
|
+
let rerankSkipped = "";
|
|
52192
52360
|
const results = await unifiedSearch2(deps.db, toolContext.sessionID, projectPath, query, {
|
|
52193
52361
|
limit: normalizeLimit2(args.limit),
|
|
52194
52362
|
memoryEnabled,
|
|
@@ -52207,11 +52375,16 @@ function createCtxSearchTool(deps) {
|
|
|
52207
52375
|
gitRepositoryAvailable: typeof toolContext.directory === "string" ? directoryHasGitMetadata(toolContext.directory) : undefined,
|
|
52208
52376
|
explicitSearch: true,
|
|
52209
52377
|
rerankConnectionFile: deps.rerankConnectionFile,
|
|
52378
|
+
rerankConfig: deps.rerankConfig,
|
|
52379
|
+
onRerankSkipped: (line) => {
|
|
52380
|
+
rerankSkipped = line;
|
|
52381
|
+
},
|
|
52210
52382
|
searchMessageHistory: (request) => searchMessageHistoryOffThread(deps.db, request),
|
|
52211
52383
|
signal: toolContext.abort,
|
|
52212
52384
|
...dateRange
|
|
52213
52385
|
});
|
|
52214
|
-
return formatSearchResults2(query, results, toolContext.sessionID, diagnostics)
|
|
52386
|
+
return formatSearchResults2(query, results, toolContext.sessionID, diagnostics) + (rerankSkipped ? `
|
|
52387
|
+
${rerankSkipped}` : "");
|
|
52215
52388
|
}
|
|
52216
52389
|
});
|
|
52217
52390
|
}
|
|
@@ -52221,13 +52394,13 @@ function createCtxSearchTools(deps) {
|
|
|
52221
52394
|
};
|
|
52222
52395
|
}
|
|
52223
52396
|
// src/v2/hooks/tools.ts
|
|
52224
|
-
async function registerTools(context, db, config, rustToolBackends, isInternalChild) {
|
|
52397
|
+
async function registerTools(context, db, config, rustToolBackends, isInternalChild, ensureProjectRegistered = ensureProjectRegisteredFromOpenCodeDirectory) {
|
|
52225
52398
|
const compaction = isCompactionEnabled(config);
|
|
52226
52399
|
setCtxReduceRegisteredGlobally(compaction);
|
|
52227
52400
|
const project = {
|
|
52228
52401
|
db,
|
|
52229
52402
|
resolveProjectPath: (directory) => resolveProjectIdentityForSession(directory, config.allow_home_project),
|
|
52230
|
-
ensureProjectRegistered
|
|
52403
|
+
ensureProjectRegistered
|
|
52231
52404
|
};
|
|
52232
52405
|
const definitions = {
|
|
52233
52406
|
...compaction ? createCtxReduceTools({
|
|
@@ -52247,7 +52420,11 @@ async function registerTools(context, db, config, rustToolBackends, isInternalCh
|
|
|
52247
52420
|
smartNotesEnabled: config.smart_notes.enabled,
|
|
52248
52421
|
...rustToolBackends ? { rustToolBackends } : {}
|
|
52249
52422
|
}),
|
|
52250
|
-
...createCtxSearchTools({
|
|
52423
|
+
...createCtxSearchTools({
|
|
52424
|
+
...project,
|
|
52425
|
+
rerankConnectionFile: config.subc?.connection_file,
|
|
52426
|
+
rerankConfig: config.rerank
|
|
52427
|
+
}),
|
|
52251
52428
|
...config.memory.enabled ? {
|
|
52252
52429
|
...createCtxMemoryTools({
|
|
52253
52430
|
...project,
|
|
@@ -52421,7 +52598,7 @@ function maybeAutoEmbedSessionBackfill(deps, sessionId) {
|
|
|
52421
52598
|
}
|
|
52422
52599
|
|
|
52423
52600
|
// src/v2/hooks/transform-features.ts
|
|
52424
|
-
function createV2TransformFeatureDeps(config, compactionOff, directory) {
|
|
52601
|
+
function createV2TransformFeatureDeps(config, compactionOff, directory, ensureProjectRegistered = ensureProjectRegisteredFromOpenCodeDirectory) {
|
|
52425
52602
|
return {
|
|
52426
52603
|
protectedTools: config.protected_tools,
|
|
52427
52604
|
commitClusterTrigger: config.commit_cluster_trigger,
|
|
@@ -52432,7 +52609,7 @@ function createV2TransformFeatureDeps(config, compactionOff, directory) {
|
|
|
52432
52609
|
injectionBudgetTokens: config.memory.injection_budget_tokens,
|
|
52433
52610
|
autoPromote: config.memory.auto_promote
|
|
52434
52611
|
},
|
|
52435
|
-
ensureProjectRegistered
|
|
52612
|
+
ensureProjectRegistered,
|
|
52436
52613
|
historyBudgetPercentage: config.history_budget_percentage,
|
|
52437
52614
|
experimentalUserMemories: userObservationCollectionEnabled2(config.dreamer),
|
|
52438
52615
|
userObservationsRequested: userObservationsRequested2(config.dreamer),
|
|
@@ -52443,7 +52620,7 @@ function createV2TransformFeatureDeps(config, compactionOff, directory) {
|
|
|
52443
52620
|
scoreThreshold: config.memory.auto_search?.score_threshold ?? 0.6,
|
|
52444
52621
|
minPromptChars: config.memory.auto_search?.min_prompt_chars ?? 20,
|
|
52445
52622
|
directory,
|
|
52446
|
-
ensureProjectRegistered
|
|
52623
|
+
ensureProjectRegistered,
|
|
52447
52624
|
wordRules: cavemanWordRulesForLanguage(config.language)
|
|
52448
52625
|
},
|
|
52449
52626
|
cavemanTextCompression: compactionOff ? undefined : config.caveman_text_compression?.enabled === true ? {
|
|
@@ -52453,7 +52630,7 @@ function createV2TransformFeatureDeps(config, compactionOff, directory) {
|
|
|
52453
52630
|
} : undefined
|
|
52454
52631
|
};
|
|
52455
52632
|
}
|
|
52456
|
-
function createV2AutoEmbedSession(deps) {
|
|
52633
|
+
function createV2AutoEmbedSession(deps, ensureProjectRegistered = ensureProjectRegisteredFromOpenCodeDirectory) {
|
|
52457
52634
|
return (sessionId) => {
|
|
52458
52635
|
const directory = deps.resolveDirectory(sessionId);
|
|
52459
52636
|
const projectIdentity = resolveProjectIdentityForSession(directory, deps.allowHomeProject);
|
|
@@ -52463,7 +52640,7 @@ function createV2AutoEmbedSession(deps) {
|
|
|
52463
52640
|
db: deps.db,
|
|
52464
52641
|
projectIdentity,
|
|
52465
52642
|
ensureRegistered: async () => {
|
|
52466
|
-
await
|
|
52643
|
+
await ensureProjectRegistered(directory, deps.db);
|
|
52467
52644
|
deps.onDirectoryResolved?.(sessionId, directory);
|
|
52468
52645
|
}
|
|
52469
52646
|
}, sessionId);
|
|
@@ -52797,6 +52974,7 @@ async function registerContext(context) {
|
|
|
52797
52974
|
console.warn(`[magic-context] v2 setup disabled by conflicting context hooks: ${conflicts.reasons.join("; ")}`);
|
|
52798
52975
|
return;
|
|
52799
52976
|
}
|
|
52977
|
+
const embeddings = createV2EmbeddingScope(resolveProjectIdentityForSession(directory, config.allow_home_project));
|
|
52800
52978
|
const folds = new FoldOwner(context.storage);
|
|
52801
52979
|
const nativeFoldMemory = !compactionOff && process.env.MC_OC2_INVISIBLE_FOLD === "1" ? nativeFoldCache(() => storage.require()) : undefined;
|
|
52802
52980
|
const nativeFoldReplay = nativeFoldMemory ? new NativeFoldReplay(nativeFoldMemory, () => openStoreReader(), context.storage) : undefined;
|
|
@@ -52853,7 +53031,7 @@ async function registerContext(context) {
|
|
|
52853
53031
|
}) : undefined;
|
|
52854
53032
|
const hiddenChildHook = new HiddenChildHook;
|
|
52855
53033
|
await context.session.hook("http.request", (draft) => hiddenChildHook.cacheRequest(draft));
|
|
52856
|
-
const tools = db && isDatabasePersisted(db) ? await registerTools(context, db, config, moduleToolBackends?.backends, (id) => hiddenChildHook.owns(id)) : undefined;
|
|
53034
|
+
const tools = db && isDatabasePersisted(db) ? await registerTools(context, db, config, moduleToolBackends?.backends, (id) => hiddenChildHook.owns(id), embeddings.ensureRegistered) : undefined;
|
|
52857
53035
|
const usage = new Map;
|
|
52858
53036
|
const generateReplay = new V2GenerateReplay;
|
|
52859
53037
|
await context.session.hook("http.response", async (draft) => {
|
|
@@ -52975,7 +53153,8 @@ async function registerContext(context) {
|
|
|
52975
53153
|
liveConfig: () => liveConfigReader.poll().effective,
|
|
52976
53154
|
executor: withLiveDreamerOutputCap(lateHiddenExecutor, config, () => liveConfigReader.poll().effective),
|
|
52977
53155
|
openReader: openStoreReader,
|
|
52978
|
-
rustModeModuleClient
|
|
53156
|
+
rustModeModuleClient,
|
|
53157
|
+
ensureRegistered: embeddings.ensureRegistered
|
|
52979
53158
|
});
|
|
52980
53159
|
};
|
|
52981
53160
|
if (db && isDatabasePersisted(db))
|
|
@@ -53249,6 +53428,10 @@ async function registerContext(context) {
|
|
|
53249
53428
|
if (!event.data?.sessionID)
|
|
53250
53429
|
continue;
|
|
53251
53430
|
const sessionID = event.data.sessionID;
|
|
53431
|
+
if (db && event.type === "session.revert.committed") {
|
|
53432
|
+
const indexDb = db;
|
|
53433
|
+
withoutSqliteTransformPass2(() => scheduleClearAndReindex(indexDb, sessionID, pagedRead));
|
|
53434
|
+
}
|
|
53252
53435
|
if (event.type?.startsWith("session.revert.") || event.type === "session.message.content.updated") {
|
|
53253
53436
|
nativeFoldReplay?.onEvent(event);
|
|
53254
53437
|
restoredRows.forget(sessionID);
|
|
@@ -53364,7 +53547,7 @@ async function registerContext(context) {
|
|
|
53364
53547
|
}) || draft.model.limit?.context || (state.lastObservedModelKey === modelKey ? state.lastUsageContextLimit : undefined);
|
|
53365
53548
|
return materializeM0({
|
|
53366
53549
|
...createM0RenderOptions({
|
|
53367
|
-
...createV2TransformFeatureDeps(config, compactionOff, directory),
|
|
53550
|
+
...createV2TransformFeatureDeps(config, compactionOff, directory, embeddings.ensureRegistered),
|
|
53368
53551
|
...createV2ThresholdDeps(config)
|
|
53369
53552
|
}, usage.get(draft.sessionID)?.usage ?? { percentage: 0, inputTokens: 0 }, modelKey, contextLimit, resolveProjectIdentityForSession(directory, config.allow_home_project)),
|
|
53370
53553
|
db,
|
|
@@ -53736,7 +53919,7 @@ async function registerContext(context) {
|
|
|
53736
53919
|
await cacheV2SessionDirectory(context.session, draft.sessionID, sessionDirectories);
|
|
53737
53920
|
prepareHistorySession(draft.sessionID);
|
|
53738
53921
|
transform ??= createTransform({
|
|
53739
|
-
...createV2TransformFeatureDeps(config, compactionOff, directory),
|
|
53922
|
+
...createV2TransformFeatureDeps(config, compactionOff, directory, embeddings.ensureRegistered),
|
|
53740
53923
|
cacheTtlConfig: config.cache_ttl,
|
|
53741
53924
|
cacheTtlConfigured: config.cacheTtlConfigured,
|
|
53742
53925
|
sampleCacheTtlConfig: () => liveConfigReader.poll().effective,
|
|
@@ -53746,7 +53929,7 @@ async function registerContext(context) {
|
|
|
53746
53929
|
contextUsageMap: usage,
|
|
53747
53930
|
compactionOff,
|
|
53748
53931
|
storeGeneration: "v2",
|
|
53749
|
-
normalizeRestoredAssistantText: stripCopiedTagNotation,
|
|
53932
|
+
normalizeRestoredAssistantText: (text, providerID) => stripCopiedTagNotation(text, providerID === "anthropic"),
|
|
53750
53933
|
refreshSourceContents: (sessionID) => nativeFoldReplay?.needsHeadRebuild(sessionID) ?? false,
|
|
53751
53934
|
hostCleanupCompactionMarkers: () => ({
|
|
53752
53935
|
verified: true,
|
|
@@ -53783,7 +53966,7 @@ async function registerContext(context) {
|
|
|
53783
53966
|
resolveDirectory: (sessionID) => sessionDirectories.get(sessionID) ?? directory,
|
|
53784
53967
|
allowHomeProject: config.allow_home_project,
|
|
53785
53968
|
recompProgressBySession: new Map
|
|
53786
|
-
}),
|
|
53969
|
+
}, embeddings.ensureRegistered),
|
|
53787
53970
|
hiddenCompletionExecutor,
|
|
53788
53971
|
historianRunnable: !compactionOff && hiddenCompletionExecutor !== undefined && config.historian?.disable !== true,
|
|
53789
53972
|
historianModel: historianModels.primary,
|
|
@@ -54133,6 +54316,7 @@ async function registerContext(context) {
|
|
|
54133
54316
|
deletedSessions.clear();
|
|
54134
54317
|
await dreamTrigger?.dispose();
|
|
54135
54318
|
await maintenanceTimer?.dispose();
|
|
54319
|
+
await embeddings.dispose();
|
|
54136
54320
|
for (const release of rawProviders.values())
|
|
54137
54321
|
release();
|
|
54138
54322
|
rawProviders.clear();
|