@cortexkit/opencode-magic-context 0.49.15 → 0.49.16
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 +3 -3
- package/dist/chunk-embedding-write-worker.js +5 -3
- package/dist/config/schema/magic-context.d.ts +65 -65
- package/dist/config/schema/magic-context.d.ts.map +1 -1
- package/dist/{conflict-warning-hook-mgq17yr3.js → conflict-warning-hook-znry4j76.js} +5 -5
- package/dist/{context-0m46day0.js → context-3znk23va.js} +26 -20
- package/dist/{embedding-backfill-5e1t5wha.js → embedding-backfill-q4n8dend.js} +8 -6
- package/dist/embedding-worker.js +2 -2
- package/dist/features/magic-context/message-fts-rowid-map.d.ts +2 -2
- package/dist/features/magic-context/message-fts-rowid-map.d.ts.map +1 -1
- package/dist/features/magic-context/message-fts-session-filter.d.ts +2 -0
- package/dist/features/magic-context/message-fts-session-filter.d.ts.map +1 -1
- package/dist/features/magic-context/message-time-backfill.d.ts +2 -2
- package/dist/features/magic-context/message-time-backfill.d.ts.map +1 -1
- package/dist/features/magic-context/storage-db.d.ts +2 -1
- package/dist/features/magic-context/storage-db.d.ts.map +1 -1
- package/dist/hooks/magic-context/compartment-runner-historian.d.ts +2 -2
- package/dist/hooks/magic-context/compartment-runner-incremental.d.ts.map +1 -1
- package/dist/hooks/magic-context/compartment-runner-validation.d.ts.map +1 -1
- package/dist/hooks/magic-context/emergency-drop.d.ts.map +1 -1
- package/dist/hooks/magic-context/historian-host-runner.d.ts.map +1 -1
- package/dist/hooks/magic-context/historian-prompt-fit.d.ts +2 -1
- package/dist/hooks/magic-context/historian-prompt-fit.d.ts.map +1 -1
- package/dist/hooks/magic-context/raw-ordinal-warmup.d.ts +26 -0
- package/dist/hooks/magic-context/raw-ordinal-warmup.d.ts.map +1 -1
- package/dist/hooks/magic-context/recomp-orchestrator.d.ts +3 -3
- package/dist/hooks/magic-context/recomp-orchestrator.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.map +1 -1
- package/dist/{index-xn6q9pg6.js → index-4qfy7v57.js} +11 -62
- package/dist/{index-e4dsjj1p.js → index-5mwk1nek.js} +1 -1
- package/dist/index-6a6dq53h.js +96 -0
- package/dist/{index-e20m7284.js → index-7b2cfmaz.js} +1 -1
- package/dist/{index-mmfa86mt.js → index-7pa32z07.js} +169 -149
- package/dist/{index-3kdm78zp.js → index-9nkg2dzk.js} +3 -3
- package/dist/{index-snp5wbge.js → index-ayym1x7f.js} +25 -23
- package/dist/{index-dgs16axy.js → index-b17m64g9.js} +1 -1
- package/dist/{index-yxycg7fs.js → index-cj9g0j7a.js} +22 -14
- package/dist/{index-dyvbsvga.js → index-dqe8pq4x.js} +21 -10
- package/dist/{index-42vcjcwe.js → index-ek1yxvvz.js} +34 -76
- package/dist/{index-3kx0kg0f.js → index-hehkf6zm.js} +3 -3
- package/dist/{index-944w16m0.js → index-j6zw70pf.js} +4 -4
- package/dist/index-kaqs6h31.js +58 -0
- package/dist/{index-ts1hjk1h.js → index-kn4t1haw.js} +15 -12
- package/dist/{index-1d289pq2.js → index-mtw9e71a.js} +1 -1
- package/dist/{index-mht7bq0z.js → index-nd7m2a5a.js} +7 -5
- package/dist/{index-thvnpfsv.js → index-p4vde22c.js} +14 -14
- package/dist/{index-y1qysm3q.js → index-qrahzcqv.js} +3 -3
- package/dist/{index-1vc7jrkg.js → index-v63beg1z.js} +3 -3
- package/dist/{index-mc1cqza6.js → index-v9asb16b.js} +4 -4
- package/dist/{index-1sarmj9z.js → index-wgypt3cs.js} +6 -6
- package/dist/{index-bxdg2nbt.js → index-wv9n2zcq.js} +1 -1
- package/dist/index.js +38 -36
- package/dist/message-fts-rowid-map-yvx5a9jw.js +23 -0
- package/dist/{message-index-bounded-vtgpq6b4.js → message-index-bounded-6th8djy9.js} +8 -8
- package/dist/{message-index-a6gztaqx.js → message-index-t4pz7akd.js} +9 -9
- package/dist/{message-time-backfill-qjge9044.js → message-time-backfill-8egzkd3z.js} +4 -4
- package/dist/migration-worker.js +4 -2
- package/dist/plugin/hooks/create-session-hooks.d.ts.map +1 -1
- package/dist/{project-embedding-registry-x45bv3qr.js → project-embedding-registry-2dea0a77.js} +7 -5
- package/dist/raw-ordinal-warmup-worker.js +37 -7
- package/dist/{read-session-chunk-3ae3nfdn.js → read-session-chunk-4pwqxm5a.js} +6 -6
- package/dist/{read-session-raw-m56hc7v2.js → read-session-raw-5ar8se5v.js} +1 -1
- package/dist/{recomp-orchestrator-nwzcfhx4.js → recomp-orchestrator-tjcaj5x7.js} +17 -17
- package/dist/search-archive-02jws7hw.js +25 -0
- package/dist/{search-deajrd90.js → search-rb01n29x.js} +15 -14
- package/dist/{send-session-notification-24r4esbh.js → send-session-notification-2x9edkrp.js} +4 -4
- package/dist/shared/model-suggestion-retry.d.ts +2 -0
- package/dist/shared/model-suggestion-retry.d.ts.map +1 -1
- package/dist/shared/resolve-fallbacks.d.ts +3 -3
- package/dist/{storage-tags-s5bg1ahx.js → storage-tags-4z1w27xa.js} +1 -1
- package/dist/tools/ctx-expand/search-archive.d.ts +5 -1
- package/dist/tools/ctx-expand/search-archive.d.ts.map +1 -1
- package/dist/{transform-postprocess-phase-ne3z1zmt.js → transform-postprocess-phase-xaw5c3xp.js} +17 -17
- package/dist/v2/auto-search-worker.js +3 -3
- package/dist/v2/chunk-embedding-write-worker.js +8 -6
- package/dist/v2/{context-4qczzck7.js → context-acw1nhv8.js} +52 -86
- package/dist/v2/{embedding-backfill-jmaf8zrr.js → embedding-backfill-jyd6492b.js} +10 -8
- package/dist/v2/embedding-worker.js +2 -2
- package/dist/v2/hooks/context.d.ts.map +1 -1
- package/dist/v2/message-fts-rowid-map-8vf0v7cr.js +22 -0
- package/dist/v2/{message-index-bounded-rxxznd34.js → message-index-bounded-dsrf49y7.js} +7 -7
- package/dist/v2/{message-index-f947qtbz.js → message-index-e6qzw477.js} +8 -8
- package/dist/v2/{message-time-backfill-bsteyc4d.js → message-time-backfill-q5pgxf0d.js} +4 -4
- package/dist/v2/migration-worker.js +6 -4
- package/dist/v2/{project-embedding-registry-0msp56p8.js → project-embedding-registry-rek75aqw.js} +9 -7
- package/dist/v2/raw-ordinal-warmup-worker.js +37 -7
- package/dist/v2/{read-session-chunk-rq9nx1nn.js → read-session-chunk-7bpygfv2.js} +5 -5
- package/dist/v2/{read-session-raw-b3tf6ra1.js → read-session-raw-pw2n1qgc.js} +1 -1
- package/dist/v2/{recomp-orchestrator-5zhxtwha.js → recomp-orchestrator-hzpgg06e.js} +18 -18
- package/dist/v2/search-archive-fn4wy8sx.js +24 -0
- package/dist/v2/{search-n8wqxb1j.js → search-sf2vg5pk.js} +17 -16
- package/dist/v2/{send-session-notification-8ghn9tnv.js → send-session-notification-hmr7q0nt.js} +2 -2
- package/dist/v2/{server-k2bzedxk.js → server-00hx04yn.js} +1 -1
- package/dist/v2/{server-atbc19ab.js → server-0mzjjw3s.js} +7 -5
- package/dist/v2/{server-ehyava47.js → server-1hcbw661.js} +3 -3
- package/dist/v2/{server-th4y11y7.js → server-271qxsf5.js} +6 -6
- package/dist/v2/{server-prg55b7k.js → server-6714jebr.js} +22 -2
- package/dist/v2/{server-dd0tz6cn.js → server-6fyp0v67.js} +26 -24
- package/dist/v2/{server-yrvqaswb.js → server-785mb90s.js} +21 -10
- package/dist/v2/{server-ef89gdsx.js → server-aavz8pm6.js} +3 -3
- package/dist/v2/{server-gvkm8xaj.js → server-e3ftpk7v.js} +1 -1
- package/dist/v2/{server-e298hswg.js → server-g59aatsz.js} +14 -14
- package/dist/v2/{server-g10mdym6.js → server-gha9x4qq.js} +1 -1
- package/dist/v2/{server-4gn3z5an.js → server-hgg55hde.js} +1 -1
- package/dist/v2/server-kaqs6h31.js +58 -0
- package/dist/v2/{server-qhfvvfxj.js → server-kqpawe1a.js} +3 -3
- package/dist/v2/{server-hek6z3w6.js → server-kr2kc9dz.js} +5 -5
- package/dist/v2/{server-cfbr1s2x.js → server-n5q841qn.js} +12 -63
- package/dist/v2/{server-kmbarfmn.js → server-r9gjxcte.js} +24 -16
- package/dist/v2/{server-6cdy4rc0.js → server-vgpab6rd.js} +2 -2
- package/dist/v2/{server-zc3e54vy.js → server-y5pznjt9.js} +1 -1
- package/dist/v2/server-zyw55ygv.js +96 -0
- package/dist/v2/server.js +4 -4
- package/dist/v2/{storage-tags-hcc2adpf.js → storage-tags-hkwtbp3g.js} +1 -1
- package/dist/v2/{wrapup-orchestrator-65pwye0d.js → wrapup-orchestrator-x4xj1782.js} +18 -18
- package/dist/{wrapup-orchestrator-28xzsj5q.js → wrapup-orchestrator-vj2tbp22.js} +18 -18
- package/package.json +1 -1
- package/src/config/schema/magic-context.ts +14 -6
- package/src/shared/model-resolution.test.ts +22 -0
- package/src/shared/model-suggestion-retry.ts +9 -3
- package/src/shared/resolve-fallbacks.test.ts +2 -3
- package/src/shared/resolve-fallbacks.ts +3 -3
|
@@ -17,7 +17,7 @@ import {
|
|
|
17
17
|
cortexKitProjectConfigBasePath,
|
|
18
18
|
resolveLegacyConfigSourcesForHarness,
|
|
19
19
|
loadPluginConfigDetailed
|
|
20
|
-
} from "./server-
|
|
20
|
+
} from "./server-y5pznjt9.js";
|
|
21
21
|
import {
|
|
22
22
|
catalogOutputReserve,
|
|
23
23
|
getSdkContextLimit,
|
|
@@ -30,7 +30,7 @@ import {
|
|
|
30
30
|
resolvePromptSurface,
|
|
31
31
|
DEFAULT_HISTORIAN_TIMEOUT_MS,
|
|
32
32
|
LIVE_RELOAD_CONFIG_PATHS
|
|
33
|
-
} from "./server-
|
|
33
|
+
} from "./server-271qxsf5.js";
|
|
34
34
|
import {
|
|
35
35
|
invalidateAutoEmbedSession,
|
|
36
36
|
drainBackgroundBatches,
|
|
@@ -39,7 +39,7 @@ import {
|
|
|
39
39
|
getProjectChunkEmbeddingModelId2,
|
|
40
40
|
getProjectEmbeddingMaxInputTokens2,
|
|
41
41
|
embedItemsForProject2
|
|
42
|
-
} from "./server-
|
|
42
|
+
} from "./server-kr2kc9dz.js";
|
|
43
43
|
import {
|
|
44
44
|
hasMeaningfulUserText2,
|
|
45
45
|
estimateTokens,
|
|
@@ -53,6 +53,12 @@ import {
|
|
|
53
53
|
withoutSqliteTransformPass2,
|
|
54
54
|
beginSqliteWriterAsync2
|
|
55
55
|
} from "./server-wafzvyhg.js";
|
|
56
|
+
import {
|
|
57
|
+
isStrictGapHealingMessage2,
|
|
58
|
+
noteRawSessionSummaryRowWritten2,
|
|
59
|
+
RawOrdinalsNotReady2,
|
|
60
|
+
runSessionWarmupWorker
|
|
61
|
+
} from "./server-6714jebr.js";
|
|
56
62
|
import {
|
|
57
63
|
buildCanonicalChunkTextFromFts,
|
|
58
64
|
buildCompartmentSummaryFallbackText,
|
|
@@ -62,7 +68,7 @@ import {
|
|
|
62
68
|
replaceCompartmentChunkEmbeddings,
|
|
63
69
|
deleteChunkEmbedBackoffForSession,
|
|
64
70
|
chunkWindowSourceKey
|
|
65
|
-
} from "./server-
|
|
71
|
+
} from "./server-kqpawe1a.js";
|
|
66
72
|
import {
|
|
67
73
|
isPidAlive
|
|
68
74
|
} from "./server-da07v4xp.js";
|
|
@@ -80,7 +86,7 @@ import {
|
|
|
80
86
|
toMessageIndexSource2,
|
|
81
87
|
clearIndexedMessagesInTransaction2,
|
|
82
88
|
indexSourcesAfterOrdinal2
|
|
83
|
-
} from "./server-
|
|
89
|
+
} from "./server-g59aatsz.js";
|
|
84
90
|
import {
|
|
85
91
|
detectOverflow,
|
|
86
92
|
SESSION_META_SELECT_COLUMNS,
|
|
@@ -173,7 +179,7 @@ import {
|
|
|
173
179
|
getRawSessionTagKeysThrough2,
|
|
174
180
|
getLegacyProtectedTailStartOrdinal2,
|
|
175
181
|
readSessionChunk2
|
|
176
|
-
} from "./server-
|
|
182
|
+
} from "./server-1hcbw661.js";
|
|
177
183
|
import {
|
|
178
184
|
getTableColumnNames
|
|
179
185
|
} from "./server-pwv4ezb0.js";
|
|
@@ -183,7 +189,7 @@ import {
|
|
|
183
189
|
LATEST_SUPPORTED_VERSION,
|
|
184
190
|
getPersistedSchemaVersion,
|
|
185
191
|
openDatabase
|
|
186
|
-
} from "./server-
|
|
192
|
+
} from "./server-r9gjxcte.js";
|
|
187
193
|
import {
|
|
188
194
|
providerMass,
|
|
189
195
|
calibrationForModelKey,
|
|
@@ -201,13 +207,7 @@ import {
|
|
|
201
207
|
foldShrunkPartTags2,
|
|
202
208
|
getTagNumberByMessageId2,
|
|
203
209
|
getActiveTagsBySession2
|
|
204
|
-
} from "./server-
|
|
205
|
-
import {
|
|
206
|
-
isStrictGapHealingMessage2,
|
|
207
|
-
noteRawSessionSummaryRowWritten2,
|
|
208
|
-
RawOrdinalsNotReady2,
|
|
209
|
-
runSessionWarmupWorker
|
|
210
|
-
} from "./server-prg55b7k.js";
|
|
210
|
+
} from "./server-0mzjjw3s.js";
|
|
211
211
|
import {
|
|
212
212
|
resolveOpenCodeDbPath,
|
|
213
213
|
assertOpenCodeStoreGeneration,
|
|
@@ -237,11 +237,11 @@ import {
|
|
|
237
237
|
resolveStoredPathWorkspaceIdentity,
|
|
238
238
|
sourceNameForMemory,
|
|
239
239
|
computeWorkspaceEpochFingerprint
|
|
240
|
-
} from "./server-
|
|
240
|
+
} from "./server-00hx04yn.js";
|
|
241
241
|
import {
|
|
242
242
|
shouldSkipHomeProjectMemory,
|
|
243
243
|
resolveProjectIdentity
|
|
244
|
-
} from "./server-
|
|
244
|
+
} from "./server-e3ftpk7v.js";
|
|
245
245
|
import {
|
|
246
246
|
getSessionNotes,
|
|
247
247
|
getReadySmartNotes,
|
|
@@ -250,7 +250,7 @@ import {
|
|
|
250
250
|
userFacingFailureCode,
|
|
251
251
|
promoteSessionFactsDurable,
|
|
252
252
|
embedPromotedFacts
|
|
253
|
-
} from "./server-
|
|
253
|
+
} from "./server-vgpab6rd.js";
|
|
254
254
|
import {
|
|
255
255
|
isMarkerCandidateBasisCurrent2,
|
|
256
256
|
invalidateMarkerCandidateBasis2,
|
|
@@ -7262,14 +7262,14 @@ function throwWithPromptFailure(legacyError, failedAttempts, args, timeoutMs, tr
|
|
|
7262
7262
|
});
|
|
7263
7263
|
throw error;
|
|
7264
7264
|
}
|
|
7265
|
-
async function attemptOnce(client, args, timeoutMs, signal, callContext, label, transport) {
|
|
7265
|
+
async function attemptOnce(client, args, timeoutMs, signal, callContext, label, transport, allowModelSuggestions = true) {
|
|
7266
7266
|
const originalBody = { ...args.body };
|
|
7267
7267
|
const attemptArgs = copyPromptArgs(args, originalBody);
|
|
7268
7268
|
try {
|
|
7269
7269
|
await promptWithTimeout(client, attemptArgs, timeoutMs, signal, transport);
|
|
7270
7270
|
return;
|
|
7271
7271
|
} catch (error) {
|
|
7272
|
-
if (isNonRetryable(error, signal))
|
|
7272
|
+
if (isNonRetryable(error, signal) || !allowModelSuggestions)
|
|
7273
7273
|
throw error;
|
|
7274
7274
|
const suggestion = parseModelSuggestion(error);
|
|
7275
7275
|
if (!suggestion || !originalBody.model) {
|
|
@@ -7297,7 +7297,7 @@ async function promptSyncWithModelSuggestionRetry(client, args, options = {}) {
|
|
|
7297
7297
|
const explicitPrimaryLabel = baseBody.model?.providerID && baseBody.model.modelID ? `${baseBody.model.providerID}/${baseBody.model.modelID}` : "primary";
|
|
7298
7298
|
let lastError = null;
|
|
7299
7299
|
try {
|
|
7300
|
-
await attemptOnce(client, baseArgs, timeoutMs, options.signal, callContext, explicitPrimaryLabel, options.transport);
|
|
7300
|
+
await attemptOnce(client, baseArgs, timeoutMs, options.signal, callContext, explicitPrimaryLabel, options.transport, options.allowModelSuggestions);
|
|
7301
7301
|
return;
|
|
7302
7302
|
} catch (error) {
|
|
7303
7303
|
lastError = error;
|
|
@@ -7323,7 +7323,7 @@ async function promptSyncWithModelSuggestionRetry(client, args, options = {}) {
|
|
|
7323
7323
|
...fallback?.qualifier ? { variant: fallback.qualifier } : {}
|
|
7324
7324
|
});
|
|
7325
7325
|
try {
|
|
7326
|
-
await attemptOnce(client, attemptArgs, timeoutMs, options.signal, callContext, label, options.transport);
|
|
7326
|
+
await attemptOnce(client, attemptArgs, timeoutMs, options.signal, callContext, label, options.transport, options.allowModelSuggestions);
|
|
7327
7327
|
log2(`[${callContext}] fallback succeeded with ${label} (attempt ${i + 2}/${fallbacks.length + 1})`);
|
|
7328
7328
|
return;
|
|
7329
7329
|
} catch (error) {
|
|
@@ -7341,7 +7341,7 @@ async function promptSyncWithModelSuggestionRetry(client, args, options = {}) {
|
|
|
7341
7341
|
}
|
|
7342
7342
|
async function attemptAndValidate(client, args, timeoutMs, signal, callContext, attempt, options) {
|
|
7343
7343
|
try {
|
|
7344
|
-
await attemptOnce(client, args, timeoutMs, signal, callContext, attempt.label, options.transport);
|
|
7344
|
+
await attemptOnce(client, args, timeoutMs, signal, callContext, attempt.label, options.transport, options.allowModelSuggestions);
|
|
7345
7345
|
} catch (error) {
|
|
7346
7346
|
throw {
|
|
7347
7347
|
error,
|
|
@@ -9666,6 +9666,7 @@ function buildHistorianRepairPrompt(originalPrompt, previousOutput, validationEr
|
|
|
9666
9666
|
"Return a corrected full XML response for the same existing state and new messages.",
|
|
9667
9667
|
"Do not skip any displayed raw ordinal or displayed raw range, even if the message looks trivial.",
|
|
9668
9668
|
"Every displayed message range must belong to exactly one compartment unless it is intentionally left in one trailing suffix marked by <unprocessed_from>.",
|
|
9669
|
+
"If every message in the chunk is covered by a compartment, nothing is unprocessed: set `<unprocessed_from>` to the chunk's last message index + 1.",
|
|
9669
9670
|
"",
|
|
9670
9671
|
"Previous invalid XML:",
|
|
9671
9672
|
previousOutput
|
|
@@ -15982,6 +15983,7 @@ async function runHistorianPrompt(args) {
|
|
|
15982
15983
|
return executor.attempt(opened, request);
|
|
15983
15984
|
}, { childSessionId: opened.childSessionId }),
|
|
15984
15985
|
timeoutMs: timeoutMs ?? DEFAULT_HISTORIAN_TIMEOUT_MS,
|
|
15986
|
+
allowModelSuggestions: false,
|
|
15985
15987
|
fallbackModels: modelOverride ? undefined : fallbackModels,
|
|
15986
15988
|
callContext: agentId === HISTORIAN_EDITOR_AGENT ? "historian:editor" : "historian"
|
|
15987
15989
|
});
|
|
@@ -16066,7 +16068,7 @@ async function runFallbackHistorianPass(args) {
|
|
|
16066
16068
|
const primary = toModelEntry(args.model);
|
|
16067
16069
|
for (const candidateInput of [
|
|
16068
16070
|
...args.fallbackModels ?? [],
|
|
16069
|
-
|
|
16071
|
+
...!primary && args.fallbackModelId ? [{ model: args.fallbackModelId }] : []
|
|
16070
16072
|
]) {
|
|
16071
16073
|
const candidate = toModelEntry(candidateInput);
|
|
16072
16074
|
if (!candidate)
|
|
@@ -17648,7 +17650,7 @@ async function runCompartmentAgent(deps) {
|
|
|
17648
17650
|
const projectPath = resolveProjectIdentity(directory ?? process.cwd());
|
|
17649
17651
|
const fallbackWindows = [
|
|
17650
17652
|
...(deps.fallbackModels ?? []).map((entry) => toModelEntry(entry)?.model),
|
|
17651
|
-
deps.fallbackModelId
|
|
17653
|
+
...toModelEntry(deps.model) ? [] : [deps.fallbackModelId]
|
|
17652
17654
|
].filter((key) => typeof key === "string" && key !== producerModel).map((key) => resolveHistorianProducerWindow(key, deps.historianMaxOutputTokens));
|
|
17653
17655
|
const promptFit = fitHistorianPrompt({
|
|
17654
17656
|
window: producerWindow,
|
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
import {
|
|
2
|
+
getSqliteDatabasePath2,
|
|
2
3
|
withSqliteBackgroundWriter2,
|
|
3
4
|
withoutSqliteTransformPass2
|
|
4
5
|
} from "./server-wafzvyhg.js";
|
|
6
|
+
import {
|
|
7
|
+
runSessionWarmupWorker
|
|
8
|
+
} from "./server-6714jebr.js";
|
|
5
9
|
import {
|
|
6
10
|
logSlowWriteTransaction
|
|
7
11
|
} from "./server-6pmqg9m4.js";
|
|
@@ -41,7 +45,7 @@ function getBackfillState(db) {
|
|
|
41
45
|
completed: row?.completed === 1
|
|
42
46
|
};
|
|
43
47
|
}
|
|
44
|
-
function
|
|
48
|
+
function recordMessageFtsRowid2(db, sessionId, messageOrdinal, ftsRowid, messageTimeMs = null) {
|
|
45
49
|
const numericRowid = Number(ftsRowid);
|
|
46
50
|
if (!Number.isSafeInteger(numericRowid) || numericRowid <= 0) {
|
|
47
51
|
throw new Error(`invalid message FTS rowid: ${String(ftsRowid)}`);
|
|
@@ -49,7 +53,7 @@ function recordMessageFtsRowid(db, sessionId, messageOrdinal, ftsRowid, messageT
|
|
|
49
53
|
const normalizedTime = typeof messageTimeMs === "number" && Number.isSafeInteger(messageTimeMs) && messageTimeMs >= 0 ? messageTimeMs : null;
|
|
50
54
|
getUpsertMapStatement(db).run(sessionId, messageOrdinal, numericRowid, normalizedTime);
|
|
51
55
|
}
|
|
52
|
-
function
|
|
56
|
+
function recordIndexedMessageTime2(db, sessionId, messageOrdinal, messageTimeMs) {
|
|
53
57
|
if (typeof messageTimeMs !== "number" || !Number.isSafeInteger(messageTimeMs) || messageTimeMs < 0) {
|
|
54
58
|
return;
|
|
55
59
|
}
|
|
@@ -91,7 +95,7 @@ function backfillMessageFtsRowidMapBatch(db, batchSize = MESSAGE_FTS_ROWID_MAP_B
|
|
|
91
95
|
watermarkRowid = ftsRowid;
|
|
92
96
|
}
|
|
93
97
|
if (typeof row.sessionId === "string" && Number.isSafeInteger(messageOrdinal) && messageOrdinal >= 0 && Number.isSafeInteger(ftsRowid) && ftsRowid > 0) {
|
|
94
|
-
|
|
98
|
+
recordMessageFtsRowid2(db, row.sessionId, messageOrdinal, ftsRowid);
|
|
95
99
|
}
|
|
96
100
|
}
|
|
97
101
|
const completed = rows.length < boundedBatchSize;
|
|
@@ -107,26 +111,33 @@ function backfillMessageFtsRowidMapBatch(db, batchSize = MESSAGE_FTS_ROWID_MAP_B
|
|
|
107
111
|
logSlowWriteTransaction("message_fts_rowid_backfill", transactionStartedAt);
|
|
108
112
|
return progress;
|
|
109
113
|
}
|
|
110
|
-
async function
|
|
114
|
+
async function runMessageFtsRowidMapBackfill2(db, signal) {
|
|
111
115
|
await new Promise((resolve) => setTimeout(resolve, 0));
|
|
112
|
-
|
|
116
|
+
while (!signal?.aborted) {
|
|
113
117
|
const progress = backfillMessageFtsRowidMapBatch(db);
|
|
114
118
|
if (progress.completed)
|
|
115
119
|
return;
|
|
116
120
|
await new Promise((resolve) => setTimeout(resolve, 0));
|
|
117
121
|
}
|
|
118
122
|
}
|
|
119
|
-
function
|
|
123
|
+
function startMessageFtsRowidMapBackfill2(db, signal) {
|
|
120
124
|
const active = activeBackfills.get(db);
|
|
121
125
|
if (active)
|
|
122
126
|
return active;
|
|
123
|
-
const
|
|
127
|
+
const path = getSqliteDatabasePath2(db);
|
|
128
|
+
const run = (path ? runSessionWarmupWorker({ path, sessionId: "", ftsRowidBackfill: true }, { signal }).then((result) => {
|
|
129
|
+
if (signal?.aborted)
|
|
130
|
+
return;
|
|
131
|
+
if (!("ftsRowidBackfill" in result)) {
|
|
132
|
+
throw Object.assign(new Error(`FTS rowid backfill unavailable: ${"failure" in result ? result.detail : "unexpected reply"}`), "failure" in result ? { code: result.code, errcode: result.errcode } : {});
|
|
133
|
+
}
|
|
134
|
+
}) : withoutSqliteTransformPass2(() => withSqliteBackgroundWriter2(() => runMessageFtsRowidMapBackfill2(db, signal)))).finally(() => {
|
|
124
135
|
activeBackfills.delete(db);
|
|
125
136
|
});
|
|
126
137
|
activeBackfills.set(db, run);
|
|
127
138
|
return run;
|
|
128
139
|
}
|
|
129
|
-
function
|
|
140
|
+
function messageFtsOrdinalRangeIsMapped2(db, sessionId, startOrdinal, endOrdinal) {
|
|
130
141
|
if (endOrdinal < startOrdinal)
|
|
131
142
|
return true;
|
|
132
143
|
if (getBackfillState(db).completed)
|
|
@@ -157,7 +168,7 @@ function messageFtsOrdinalRangeIsMapped(db, sessionId, startOrdinal, endOrdinal)
|
|
|
157
168
|
const ordinalCount = endOrdinal - startOrdinal + 1;
|
|
158
169
|
return row?.sourceOrdinalCount === ordinalCount && row.expectedMapCount === row.mappedCount;
|
|
159
170
|
}
|
|
160
|
-
function
|
|
171
|
+
function deleteUnmappedMessageFtsRows2(db, sessionIds) {
|
|
161
172
|
if (sessionIds.length === 0)
|
|
162
173
|
return;
|
|
163
174
|
const state = getBackfillState(db);
|
|
@@ -168,4 +179,4 @@ function deleteUnmappedMessageFtsRows(db, sessionIds) {
|
|
|
168
179
|
WHERE rowid > ? AND session_id IN (${placeholders})`).run(state.watermarkRowid, ...sessionIds);
|
|
169
180
|
}
|
|
170
181
|
|
|
171
|
-
export {
|
|
182
|
+
export { recordMessageFtsRowid2, recordIndexedMessageTime2, runMessageFtsRowidMapBackfill2, startMessageFtsRowidMapBackfill2, messageFtsOrdinalRangeIsMapped2, deleteUnmappedMessageFtsRows2 };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
DEFAULT_LOCAL_EMBEDDING_MODEL
|
|
3
|
-
} from "./server-
|
|
3
|
+
} from "./server-271qxsf5.js";
|
|
4
4
|
import {
|
|
5
5
|
log2
|
|
6
6
|
} from "./server-f2xf5gcb.js";
|
|
@@ -10,12 +10,12 @@ import {
|
|
|
10
10
|
} from "./server-rrqpvwqd.js";
|
|
11
11
|
import {
|
|
12
12
|
LocalEmbeddingProvider
|
|
13
|
-
} from "./server-
|
|
13
|
+
} from "./server-gha9x4qq.js";
|
|
14
14
|
import {
|
|
15
15
|
OpenAICompatibleEmbeddingProvider,
|
|
16
16
|
getProjectEmbeddingSnapshot2,
|
|
17
17
|
embedBatchForProject2
|
|
18
|
-
} from "./server-
|
|
18
|
+
} from "./server-kr2kc9dz.js";
|
|
19
19
|
import {
|
|
20
20
|
isEmbeddingHostBusy2
|
|
21
21
|
} from "./server-qt1qqasc.js";
|
|
@@ -708,4 +708,4 @@ function setBootQuietPeriodForTests(startAtMs) {
|
|
|
708
708
|
bootQuietUntilMs = startAtMs === null ? 0 : startAtMs + BOOT_QUIET_MS;
|
|
709
709
|
}
|
|
710
710
|
|
|
711
|
-
export { setHomeProjectPermission, shouldSkipHomeProjectMemory, ProjectIdentityError, takeDubiousOwnershipProjectIdentityWarning, isUserHomeDirectory, resolveProjectIdentity, directoryHasGitMetadata, describeUnresolvedProjectIdentity, isUsableProjectIdentity, resolveProjectIdentityForSession, normalizeStoredProjectPath, storedPathBelongsToIdentity, beginBootQuietPeriod,
|
|
711
|
+
export { setHomeProjectPermission, shouldSkipHomeProjectMemory, ProjectIdentityError, takeDubiousOwnershipProjectIdentityWarning, isUserHomeDirectory, resolveProjectIdentity, directoryHasGitMetadata, describeUnresolvedProjectIdentity, isUsableProjectIdentity, resolveProjectIdentityForSession, normalizeStoredProjectPath, storedPathBelongsToIdentity, beginBootQuietPeriod, scheduleAfterBootQuiet, setBootQuietPeriodForTests };
|
|
@@ -23,20 +23,20 @@ import {
|
|
|
23
23
|
} from "./server-pwv4ezb0.js";
|
|
24
24
|
import {
|
|
25
25
|
cleanUserText2
|
|
26
|
-
} from "./server-
|
|
26
|
+
} from "./server-1hcbw661.js";
|
|
27
27
|
import {
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
} from "./server-
|
|
28
|
+
recordMessageFtsRowid2,
|
|
29
|
+
recordIndexedMessageTime2,
|
|
30
|
+
messageFtsOrdinalRangeIsMapped2,
|
|
31
|
+
deleteUnmappedMessageFtsRows2
|
|
32
|
+
} from "./server-785mb90s.js";
|
|
33
33
|
import {
|
|
34
34
|
isPidAlive,
|
|
35
35
|
readProcessStartTime
|
|
36
36
|
} from "./server-da07v4xp.js";
|
|
37
37
|
import {
|
|
38
38
|
deleteChunkEmbedBackoffForSession
|
|
39
|
-
} from "./server-
|
|
39
|
+
} from "./server-kqpawe1a.js";
|
|
40
40
|
import {
|
|
41
41
|
closeQuietly
|
|
42
42
|
} from "./server-8ajstryz.js";
|
|
@@ -649,7 +649,7 @@ function deleteSessionScopedRows(db, sessionIds, harness, options = {}) {
|
|
|
649
649
|
FROM message_fts_rowid_map
|
|
650
650
|
WHERE session_id IN (${placeholders})
|
|
651
651
|
)`).run(...deletableSessionIds);
|
|
652
|
-
|
|
652
|
+
deleteUnmappedMessageFtsRows2(db, deletableSessionIds);
|
|
653
653
|
continue;
|
|
654
654
|
}
|
|
655
655
|
const predicates = [`session_id IN (${placeholders})`];
|
|
@@ -896,7 +896,7 @@ function getDeleteMessageFtsMapStatement(db) {
|
|
|
896
896
|
}
|
|
897
897
|
function insertMessageFtsRow(db, sessionId, messageOrdinal, messageId, role, content, messageTimeMs) {
|
|
898
898
|
const result = getInsertMessageStatement(db).run(sessionId, messageOrdinal, messageId, role, content);
|
|
899
|
-
|
|
899
|
+
recordMessageFtsRowid2(db, sessionId, messageOrdinal, result.lastInsertRowid, messageTimeMs ?? null);
|
|
900
900
|
}
|
|
901
901
|
function normalizeSourceVersion(version) {
|
|
902
902
|
if (typeof version === "number")
|
|
@@ -996,7 +996,7 @@ function deleteIndexedMessage2(db, sessionId, messageId) {
|
|
|
996
996
|
function clearIndexedMessagesInTransaction2(db, sessionId) {
|
|
997
997
|
deleteMessageIndexSkips(db, sessionId);
|
|
998
998
|
getDeleteFtsStatement(db).run(sessionId);
|
|
999
|
-
|
|
999
|
+
deleteUnmappedMessageFtsRows2(db, [sessionId]);
|
|
1000
1000
|
getDeleteFtsMapStatement(db).run(sessionId);
|
|
1001
1001
|
getDeleteMessageSourceStatement(db).run(sessionId);
|
|
1002
1002
|
getDeleteIndexStatement(db).run(sessionId);
|
|
@@ -1027,10 +1027,10 @@ function indexSingleMessageInTransaction(db, sessionId, message, now, dirtyFloor
|
|
|
1027
1027
|
const dirtyFloor = getDirtyIndexFloor(db, sessionId);
|
|
1028
1028
|
if (message.ordinal <= currentWatermark) {
|
|
1029
1029
|
if (isIndexSourceCurrent(db, sessionId, source)) {
|
|
1030
|
-
|
|
1030
|
+
recordIndexedMessageTime2(db, sessionId, message.ordinal, message.createdAt);
|
|
1031
1031
|
return false;
|
|
1032
1032
|
}
|
|
1033
|
-
if (!
|
|
1033
|
+
if (!messageFtsOrdinalRangeIsMapped2(db, sessionId, message.ordinal, message.ordinal)) {
|
|
1034
1034
|
return false;
|
|
1035
1035
|
}
|
|
1036
1036
|
getDeleteMessageFtsStatement(db).run(sessionId, message.id);
|
|
@@ -1060,7 +1060,7 @@ function indexSingleMessage2(db, sessionId, message, shouldCommit = () => true,
|
|
|
1060
1060
|
const source = preparedSource ?? getMessageSourceSnapshot(message);
|
|
1061
1061
|
const currentWatermark = getLastIndexedOrdinal2(db, sessionId);
|
|
1062
1062
|
if (message.ordinal <= currentWatermark && isIndexSourceCurrent(db, sessionId, source)) {
|
|
1063
|
-
|
|
1063
|
+
recordIndexedMessageTime2(db, sessionId, message.ordinal, message.createdAt);
|
|
1064
1064
|
return false;
|
|
1065
1065
|
}
|
|
1066
1066
|
const dirtyFloorBeforeAttempt = getDirtyIndexFloor(db, sessionId);
|
|
@@ -1101,7 +1101,7 @@ function indexItemsAfterOrdinal(db, sessionId, items, finalWatermark, toSource)
|
|
|
1101
1101
|
const currentWatermark = getLastIndexedOrdinal2(db, sessionId);
|
|
1102
1102
|
const dirtyFloor = getDirtyIndexFloor(db, sessionId);
|
|
1103
1103
|
const effectiveWatermark = dirtyFloor === null ? currentWatermark : Math.min(currentWatermark, Math.max(0, dirtyFloor - 1));
|
|
1104
|
-
if (dirtyFloor !== null && dirtyFloor <= currentWatermark && !
|
|
1104
|
+
if (dirtyFloor !== null && dirtyFloor <= currentWatermark && !messageFtsOrdinalRangeIsMapped2(db, sessionId, dirtyFloor, Math.min(currentWatermark, finalWatermark))) {
|
|
1105
1105
|
db.exec("COMMIT");
|
|
1106
1106
|
committed = true;
|
|
1107
1107
|
logSlowWriteTransaction("message_index_reconcile", transactionStartedAt);
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
// src/features/magic-context/message-fts-session-filter.ts
|
|
2
|
+
var MESSAGE_FTS_SESSION_FILTER_SQL = `+message_history_fts.rowid IN (
|
|
3
|
+
SELECT fts_rowid FROM message_fts_rowid_map WHERE session_id = ?1
|
|
4
|
+
) AND `;
|
|
5
|
+
var coverageCaches = new WeakMap;
|
|
6
|
+
var coverageScansOnThisThread = 0;
|
|
7
|
+
function getCoverageCache(db) {
|
|
8
|
+
let cache = coverageCaches.get(db);
|
|
9
|
+
if (!cache) {
|
|
10
|
+
cache = {
|
|
11
|
+
pin: db.prepare("SELECT fts_rowid FROM message_fts_rowid_map LIMIT 1"),
|
|
12
|
+
stamp: db.prepare("SELECT total_changes() AS changes, data_version AS version FROM pragma_data_version"),
|
|
13
|
+
missing: db.prepare(`SELECT DISTINCT session_id AS sessionId
|
|
14
|
+
FROM message_history_fts WHERE rowid IN (
|
|
15
|
+
SELECT id FROM message_history_fts_docsize
|
|
16
|
+
EXCEPT SELECT fts_rowid FROM message_fts_rowid_map
|
|
17
|
+
)`)
|
|
18
|
+
};
|
|
19
|
+
coverageCaches.set(db, cache);
|
|
20
|
+
}
|
|
21
|
+
return cache;
|
|
22
|
+
}
|
|
23
|
+
function withMessageFtsSessionFilter(db, sessionId, read) {
|
|
24
|
+
let cacheable = false;
|
|
25
|
+
try {
|
|
26
|
+
const transaction = db;
|
|
27
|
+
cacheable = transaction.inTransaction === false || transaction.isTransaction === false;
|
|
28
|
+
if (!cacheable)
|
|
29
|
+
coverageCaches.delete(db);
|
|
30
|
+
} catch {
|
|
31
|
+
coverageCaches.delete(db);
|
|
32
|
+
}
|
|
33
|
+
return db.transaction(() => {
|
|
34
|
+
let sessionFirst = false;
|
|
35
|
+
try {
|
|
36
|
+
const cache = getCoverageCache(db);
|
|
37
|
+
cache.pin.get();
|
|
38
|
+
const stamp = cache.stamp.get();
|
|
39
|
+
let incomplete = cache.incompleteSessions;
|
|
40
|
+
if (!cacheable || !incomplete || cache.version !== stamp.version || cache.changes !== stamp.changes) {
|
|
41
|
+
coverageScansOnThisThread += 1;
|
|
42
|
+
const rows = cache.missing.all();
|
|
43
|
+
incomplete = new Set(rows.map((row) => row.sessionId));
|
|
44
|
+
if (cacheable) {
|
|
45
|
+
cache.version = stamp.version;
|
|
46
|
+
cache.changes = stamp.changes;
|
|
47
|
+
cache.incompleteSessions = incomplete;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
sessionFirst = !incomplete.has(sessionId);
|
|
51
|
+
} catch {
|
|
52
|
+
coverageCaches.delete(db);
|
|
53
|
+
}
|
|
54
|
+
return read(sessionFirst);
|
|
55
|
+
}).deferred();
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
export { MESSAGE_FTS_SESSION_FILTER_SQL, withMessageFtsSessionFilter };
|
|
@@ -12,8 +12,8 @@ import {
|
|
|
12
12
|
isSynapseEmbeddingTruncated
|
|
13
13
|
} from "./server-rrqpvwqd.js";
|
|
14
14
|
import {
|
|
15
|
-
|
|
16
|
-
} from "./server-
|
|
15
|
+
messageFtsOrdinalRangeIsMapped2
|
|
16
|
+
} from "./server-785mb90s.js";
|
|
17
17
|
|
|
18
18
|
// src/features/magic-context/compartment-chunk-embedding.ts
|
|
19
19
|
import { createHash } from "node:crypto";
|
|
@@ -514,7 +514,7 @@ function toFloat32Array(blob) {
|
|
|
514
514
|
function buildCanonicalChunkTextFromFts(db, sessionId, startOrdinal, endOrdinal) {
|
|
515
515
|
if (endOrdinal < startOrdinal)
|
|
516
516
|
return "";
|
|
517
|
-
if (!
|
|
517
|
+
if (!messageFtsOrdinalRangeIsMapped2(db, sessionId, startOrdinal, endOrdinal))
|
|
518
518
|
return null;
|
|
519
519
|
const rows = getLoadFtsRowsStatement(db).all(sessionId, startOrdinal, endOrdinal).map((row) => row);
|
|
520
520
|
const lines = [];
|
|
@@ -7,10 +7,10 @@ import {
|
|
|
7
7
|
} from "./server-wafzvyhg.js";
|
|
8
8
|
import {
|
|
9
9
|
DEFAULT_LOCAL_EMBEDDING_MODEL
|
|
10
|
-
} from "./server-
|
|
10
|
+
} from "./server-271qxsf5.js";
|
|
11
11
|
import {
|
|
12
12
|
setBootQuietPeriodForTests
|
|
13
|
-
} from "./server-
|
|
13
|
+
} from "./server-e3ftpk7v.js";
|
|
14
14
|
import {
|
|
15
15
|
isEmbeddingHostBusy2
|
|
16
16
|
} from "./server-qt1qqasc.js";
|
|
@@ -47,7 +47,7 @@ import {
|
|
|
47
47
|
countSessionCompartmentEmbedCoverage,
|
|
48
48
|
countSessionCompartmentEmbedCoveragePolite,
|
|
49
49
|
countUnembeddedSessionCompartmentsPolite
|
|
50
|
-
} from "./server-
|
|
50
|
+
} from "./server-kqpawe1a.js";
|
|
51
51
|
import {
|
|
52
52
|
acquireGitSweepLease,
|
|
53
53
|
renewGitSweepLease,
|
|
@@ -55,7 +55,7 @@ import {
|
|
|
55
55
|
findMisScopedCompartmentChunkEmbeddingIdsForProject,
|
|
56
56
|
recordSessionProjectIdentity,
|
|
57
57
|
repairMisScopedCompartmentChunkEmbeddingsForProject
|
|
58
|
-
} from "./server-
|
|
58
|
+
} from "./server-hgg55hde.js";
|
|
59
59
|
import {
|
|
60
60
|
saveEmbeddingIfHashMatches,
|
|
61
61
|
getMemoryEmbedCoverage,
|
|
@@ -67,7 +67,7 @@ import {
|
|
|
67
67
|
resolveEmbeddingTextPrefixes,
|
|
68
68
|
getEmbeddingProviderIdentity,
|
|
69
69
|
LocalEmbeddingProvider
|
|
70
|
-
} from "./server-
|
|
70
|
+
} from "./server-gha9x4qq.js";
|
|
71
71
|
import {
|
|
72
72
|
logSlowWriteTransaction
|
|
73
73
|
} from "./server-6pmqg9m4.js";
|
|
@@ -20,7 +20,7 @@ import {
|
|
|
20
20
|
import {
|
|
21
21
|
buildCanonicalChunkTextFromFts,
|
|
22
22
|
loadCompartmentChunkEmbeddingsForSearch
|
|
23
|
-
} from "./server-
|
|
23
|
+
} from "./server-kqpawe1a.js";
|
|
24
24
|
import {
|
|
25
25
|
recordEmbeddingMeasurement,
|
|
26
26
|
saveCommitEmbedding,
|
|
@@ -37,7 +37,7 @@ import {
|
|
|
37
37
|
enqueueShadowEmbeddingItems2,
|
|
38
38
|
getProjectEmbeddingSnapshot2,
|
|
39
39
|
embedItemsForProject2
|
|
40
|
-
} from "./server-
|
|
40
|
+
} from "./server-kr2kc9dz.js";
|
|
41
41
|
import {
|
|
42
42
|
getProjectEmbeddings2
|
|
43
43
|
} from "./server-4dhv7mqz.js";
|
|
@@ -46,7 +46,7 @@ import {
|
|
|
46
46
|
isEmbeddingEnabled,
|
|
47
47
|
embedText,
|
|
48
48
|
ensureMemoryEmbeddings2
|
|
49
|
-
} from "./server-
|
|
49
|
+
} from "./server-aavz8pm6.js";
|
|
50
50
|
import {
|
|
51
51
|
ModuleMemoryAuthorityError2,
|
|
52
52
|
getMemoriesByProject2,
|
|
@@ -61,20 +61,24 @@ import {
|
|
|
61
61
|
sanitizeFtsQuery,
|
|
62
62
|
searchMemoriesFTS,
|
|
63
63
|
searchMemoriesFTSUnion
|
|
64
|
-
} from "./server-
|
|
64
|
+
} from "./server-vgpab6rd.js";
|
|
65
|
+
import {
|
|
66
|
+
MESSAGE_FTS_SESSION_FILTER_SQL,
|
|
67
|
+
withMessageFtsSessionFilter
|
|
68
|
+
} from "./server-kaqs6h31.js";
|
|
65
69
|
import {
|
|
66
70
|
isRecord
|
|
67
|
-
} from "./server-
|
|
71
|
+
} from "./server-0mzjjw3s.js";
|
|
68
72
|
import {
|
|
69
73
|
getIndexedMessageCorpusSize2
|
|
70
|
-
} from "./server-
|
|
74
|
+
} from "./server-g59aatsz.js";
|
|
71
75
|
import {
|
|
72
76
|
resolveWorkspaceShareCategories,
|
|
73
77
|
resolveWorkspaceIdentitySet,
|
|
74
78
|
expandWorkspaceIdentitySetWithAliases,
|
|
75
79
|
resolveStoredPathWorkspaceIdentity,
|
|
76
80
|
sourceNameForMemory
|
|
77
|
-
} from "./server-
|
|
81
|
+
} from "./server-00hx04yn.js";
|
|
78
82
|
import {
|
|
79
83
|
isKnownAutocommit
|
|
80
84
|
} from "./server-8ajstryz.js";
|
|
@@ -1262,61 +1266,6 @@ function searchGitCommitsSync(db, projectPath, query, options) {
|
|
|
1262
1266
|
});
|
|
1263
1267
|
return results.slice(0, options.limit);
|
|
1264
1268
|
}
|
|
1265
|
-
// src/features/magic-context/message-fts-session-filter.ts
|
|
1266
|
-
var MESSAGE_FTS_SESSION_FILTER_SQL = `+message_history_fts.rowid IN (
|
|
1267
|
-
SELECT fts_rowid FROM message_fts_rowid_map WHERE session_id = ?1
|
|
1268
|
-
) AND `;
|
|
1269
|
-
var coverageCaches = new WeakMap;
|
|
1270
|
-
function getCoverageCache(db) {
|
|
1271
|
-
let cache = coverageCaches.get(db);
|
|
1272
|
-
if (!cache) {
|
|
1273
|
-
cache = {
|
|
1274
|
-
pin: db.prepare("SELECT fts_rowid FROM message_fts_rowid_map LIMIT 1"),
|
|
1275
|
-
stamp: db.prepare("SELECT total_changes() AS changes, data_version AS version FROM pragma_data_version"),
|
|
1276
|
-
missing: db.prepare(`SELECT DISTINCT session_id AS sessionId
|
|
1277
|
-
FROM message_history_fts WHERE rowid IN (
|
|
1278
|
-
SELECT id FROM message_history_fts_docsize
|
|
1279
|
-
EXCEPT SELECT fts_rowid FROM message_fts_rowid_map
|
|
1280
|
-
)`)
|
|
1281
|
-
};
|
|
1282
|
-
coverageCaches.set(db, cache);
|
|
1283
|
-
}
|
|
1284
|
-
return cache;
|
|
1285
|
-
}
|
|
1286
|
-
function withMessageFtsSessionFilter(db, sessionId, read) {
|
|
1287
|
-
let cacheable = false;
|
|
1288
|
-
try {
|
|
1289
|
-
const transaction = db;
|
|
1290
|
-
cacheable = transaction.inTransaction === false || transaction.isTransaction === false;
|
|
1291
|
-
if (!cacheable)
|
|
1292
|
-
coverageCaches.delete(db);
|
|
1293
|
-
} catch {
|
|
1294
|
-
coverageCaches.delete(db);
|
|
1295
|
-
}
|
|
1296
|
-
return db.transaction(() => {
|
|
1297
|
-
let sessionFirst = false;
|
|
1298
|
-
try {
|
|
1299
|
-
const cache = getCoverageCache(db);
|
|
1300
|
-
cache.pin.get();
|
|
1301
|
-
const stamp = cache.stamp.get();
|
|
1302
|
-
let incomplete = cache.incompleteSessions;
|
|
1303
|
-
if (!cacheable || !incomplete || cache.version !== stamp.version || cache.changes !== stamp.changes) {
|
|
1304
|
-
const rows = cache.missing.all();
|
|
1305
|
-
incomplete = new Set(rows.map((row) => row.sessionId));
|
|
1306
|
-
if (cacheable) {
|
|
1307
|
-
cache.version = stamp.version;
|
|
1308
|
-
cache.changes = stamp.changes;
|
|
1309
|
-
cache.incompleteSessions = incomplete;
|
|
1310
|
-
}
|
|
1311
|
-
}
|
|
1312
|
-
sessionFirst = !incomplete.has(sessionId);
|
|
1313
|
-
} catch {
|
|
1314
|
-
coverageCaches.delete(db);
|
|
1315
|
-
}
|
|
1316
|
-
return read(sessionFirst);
|
|
1317
|
-
}).deferred();
|
|
1318
|
-
}
|
|
1319
|
-
|
|
1320
1269
|
// src/features/magic-context/literal-probes.ts
|
|
1321
1270
|
var MAX_PROBES = 5;
|
|
1322
1271
|
var MIN_PROBE_LENGTH = 3;
|
|
@@ -3264,4 +3213,4 @@ ${bodyParts.join(`
|
|
|
3264
3213
|
`)}`;
|
|
3265
3214
|
}
|
|
3266
3215
|
|
|
3267
|
-
export { renderSingleStoreMigrationRequiredRefusal, SingleStoreMigrationRequiredError, singleStoreMigrationRequiredFailure, projectNeedsSingleStoreMigration, STORE_AHEAD_OF_BINARY_CODE, storeAheadOfBinaryFailure, TRANSFORM_PAGE_UPLOAD_TIMEOUT_MS, transformColdStartExecuteTimeoutMs, getDefaultSubcConnectionFile, isModuleTransportGenerationChangedResult, SubcModuleTransport, indexCommitsForProject, embedUnembeddedCommits,
|
|
3216
|
+
export { renderSingleStoreMigrationRequiredRefusal, SingleStoreMigrationRequiredError, singleStoreMigrationRequiredFailure, projectNeedsSingleStoreMigration, STORE_AHEAD_OF_BINARY_CODE, storeAheadOfBinaryFailure, TRANSFORM_PAGE_UPLOAD_TIMEOUT_MS, transformColdStartExecuteTimeoutMs, getDefaultSubcConnectionFile, isModuleTransportGenerationChangedResult, SubcModuleTransport, indexCommitsForProject, embedUnembeddedCommits, createUnifiedSearchDiagnostics2, searchMessageHistory2, parseIdShapedQuery2, resolveMemoriesByIdsForSearch2, unifiedSearch2, formatSearchResults2 };
|