@cortexkit/pi-magic-context 0.49.19 → 0.49.21
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 +48 -9
- package/dist/chunk-embedding-write-worker.js +29 -22
- package/dist/{compaction-marker-candidates-wjzqbspm.js → compaction-marker-candidates-p1kqkqhq.js} +3 -3
- package/dist/compaction-marker-candidates-worker.js +2 -2
- package/dist/compartment-chunk-embedding-y01m95c2.js +64 -0
- package/dist/embedding-backfill-2vh6m3bg.js +24 -0
- package/dist/embedding-worker-process.js +2 -2
- package/dist/embedding-worker.js +6 -6
- package/dist/historian-calibration-extension.js +1 -1
- package/dist/{index-e1rza8gp.js → index-29nw7n1r.js} +1 -1
- package/dist/{index-rrwv9y2k.js → index-2qtx0q6h.js} +214 -5
- package/dist/{index-msqrs4nf.js → index-3c3ztwgc.js} +5 -5
- package/dist/index-54wmg4rj.js +82 -0
- package/dist/{index-yygsh681.js → index-579m1751.js} +3 -3
- package/dist/{index-rc1dez8m.js → index-5j6vwg4z.js} +154 -13
- package/dist/{index-qpq6w67c.js → index-6wdwv3a6.js} +2 -2
- package/dist/{index-vktahpdj.js → index-at6py2k3.js} +9 -3
- package/dist/{index-bxmf4dhr.js → index-ccanzg8p.js} +2367 -1243
- package/dist/{index-sqt2haap.js → index-dbgg6hsf.js} +28 -14
- package/dist/{index-7bqrfyny.js → index-fgs78jyd.js} +12 -15
- package/dist/{index-58mj0dzc.js → index-ftvm2acc.js} +181 -46
- package/dist/{index-wveb51es.js → index-gqjxy2p7.js} +74 -9
- package/dist/{index-d8gc0112.js → index-gwxaz0z5.js} +4 -6
- package/dist/{index-d4dt19md.js → index-hqw0rt9k.js} +1 -1
- package/dist/{index-g7p75667.js → index-hxp6q5f8.js} +2 -2
- package/dist/{index-svgkv4g2.js → index-j3pz3a1b.js} +2 -2
- package/dist/{index-f18ec69t.js → index-jn44h81p.js} +1 -1
- package/dist/{index-1kcfwk9c.js → index-my0dn413.js} +1 -1
- package/dist/{index-apgwdby5.js → index-n4wyxcgr.js} +1 -1
- package/dist/{index-rhprywn6.js → index-n8e5e9fp.js} +28 -7
- package/dist/{index-z2rkv0mb.js → index-pe5gz5c4.js} +5 -5
- package/dist/{index-dtp1efvf.js → index-st4gwt64.js} +2 -2
- package/dist/{index-xnch62s6.js → index-vx6f7wff.js} +314 -127
- package/dist/{index-jrap43gc.js → index-w1avzkdt.js} +1 -1
- package/dist/{index-vmcgew7x.js → index-w1twp2kp.js} +78 -58
- package/dist/{index-ek9zvs4f.js → index-w6r3ggnp.js} +57 -27
- package/dist/{index-ym6nh2gk.js → index-wgmhk91m.js} +113 -20
- package/dist/{index-2mmy81qt.js → index-wqpjhx1p.js} +501 -20
- package/dist/index.js +1178 -417
- package/dist/{logger-dygt96rn.js → logger-shetp43v.js} +1 -1
- package/dist/{message-fts-rowid-map-cvpy2dmb.js → message-fts-rowid-map-59y476bk.js} +6 -5
- package/dist/{message-index-rc2x41k4.js → message-index-3snxf11x.js} +15 -14
- package/dist/{message-index-bounded-66saeq5j.js → message-index-bounded-4ngt600v.js} +15 -14
- package/dist/{message-time-backfill-ssshbdy8.js → message-time-backfill-e3r8ddh1.js} +3 -3
- package/dist/migration-worker.js +12 -11
- package/dist/{project-embedding-registry-vf1ncptn.js → project-embedding-registry-hfyzs654.js} +14 -13
- package/dist/raw-ordinal-warmup-worker.js +136 -101
- package/dist/{read-session-chunk-h5bzj91r.js → read-session-chunk-5dmc77q2.js} +10 -9
- package/dist/{read-session-raw-9s3xn7fc.js → read-session-raw-yxv2fv34.js} +4 -3
- package/dist/{safe-notification-target-2rkvkmw8.js → safe-notification-target-zcpchea6.js} +2 -2
- package/dist/search-archive-3daj5ttc.js +21 -0
- package/dist/{search-wh7b9zht.js → search-jhfh3tsj.js} +23 -22
- package/dist/{sqlite-fsp0sf3r.js → sqlite-v89bj0yy.js} +7 -1
- package/dist/{storage-memory-yxxc5v4n.js → storage-memory-0ndn65fm.js} +2 -2
- package/dist/{storage-tags-1kets0q8.js → storage-tags-r48vxthe.js} +7 -5
- package/dist/subagent-entry.js +28 -26
- package/dist/tag-snapshot-worker-pi.js +22 -14
- package/package.json +5 -2
- package/dist/embedding-backfill-vwag34t0.js +0 -23
- package/dist/search-archive-4817pqev.js +0 -20
|
@@ -3,11 +3,11 @@ import {
|
|
|
3
3
|
} from "./index-0h2mkab2.js";
|
|
4
4
|
import {
|
|
5
5
|
getMagicContextStorageDir
|
|
6
|
-
} from "./index-
|
|
6
|
+
} from "./index-fgs78jyd.js";
|
|
7
7
|
import {
|
|
8
8
|
isPidAlive,
|
|
9
9
|
readProcessStartTime
|
|
10
|
-
} from "./index-
|
|
10
|
+
} from "./index-n4wyxcgr.js";
|
|
11
11
|
import {
|
|
12
12
|
resolveOpenCodeDbPath,
|
|
13
13
|
assertOpenCodeStoreGeneration
|
|
@@ -18,23 +18,23 @@ import {
|
|
|
18
18
|
prepareCachedStatement2,
|
|
19
19
|
withSqliteBackgroundWriter2,
|
|
20
20
|
withoutSqliteTransformPass2
|
|
21
|
-
} from "./index-
|
|
21
|
+
} from "./index-2qtx0q6h.js";
|
|
22
22
|
import {
|
|
23
23
|
removeSystemReminders,
|
|
24
24
|
removeNestedBlocks,
|
|
25
25
|
hasMeaningfulUserText2,
|
|
26
26
|
extractTexts2
|
|
27
|
-
} from "./index-
|
|
27
|
+
} from "./index-my0dn413.js";
|
|
28
28
|
import {
|
|
29
29
|
recordMessageFtsRowid2,
|
|
30
30
|
recordIndexedMessageTime2,
|
|
31
31
|
messageFtsOrdinalRangeIsMapped2,
|
|
32
32
|
getMessageFtsRowidMapBackfillProgress2,
|
|
33
33
|
deleteUnmappedMessageFtsRows2
|
|
34
|
-
} from "./index-
|
|
34
|
+
} from "./index-579m1751.js";
|
|
35
35
|
import {
|
|
36
|
-
|
|
37
|
-
} from "./index-
|
|
36
|
+
deleteChunkEmbedBackoffForSession2
|
|
37
|
+
} from "./index-vx6f7wff.js";
|
|
38
38
|
import {
|
|
39
39
|
closeQuietly,
|
|
40
40
|
TAG_TOMBSTONE_OWNER_PREFIX,
|
|
@@ -43,16 +43,16 @@ import {
|
|
|
43
43
|
tagRevisionKey,
|
|
44
44
|
tagIdentityRevisionKey,
|
|
45
45
|
deleteTagIdentityRevisions
|
|
46
|
-
} from "./index-
|
|
46
|
+
} from "./index-w1avzkdt.js";
|
|
47
47
|
import {
|
|
48
48
|
cleanUserText2
|
|
49
|
-
} from "./index-
|
|
49
|
+
} from "./index-gqjxy2p7.js";
|
|
50
50
|
import {
|
|
51
51
|
sameProjectDirectory
|
|
52
52
|
} from "./index-wrr9rp9a.js";
|
|
53
53
|
import {
|
|
54
54
|
logSlowWriteTransaction
|
|
55
|
-
} from "./index-
|
|
55
|
+
} from "./index-hqw0rt9k.js";
|
|
56
56
|
import {
|
|
57
57
|
ensurePrivateStorageDirectorySync,
|
|
58
58
|
writeStorageFileSync,
|
|
@@ -63,7 +63,14 @@ import {
|
|
|
63
63
|
|
|
64
64
|
// ../plugin/src/hooks/magic-context/lkg-recovery-fence.ts
|
|
65
65
|
import { createHash as createHash2, randomUUID as randomUUID2 } from "node:crypto";
|
|
66
|
-
import {
|
|
66
|
+
import {
|
|
67
|
+
lstatSync,
|
|
68
|
+
opendirSync,
|
|
69
|
+
readdirSync as readdirSync2,
|
|
70
|
+
readFileSync as readFileSync2,
|
|
71
|
+
rmdirSync,
|
|
72
|
+
rmSync as rmSync2
|
|
73
|
+
} from "node:fs";
|
|
67
74
|
import { basename, dirname, join as join2 } from "node:path";
|
|
68
75
|
|
|
69
76
|
// ../plugin/src/shared/bounded-session-map.ts
|
|
@@ -250,6 +257,58 @@ var hash = (value) => createHash2("sha256").update(value).digest("hex");
|
|
|
250
257
|
function lkgRecoveryFencePath(sessionId) {
|
|
251
258
|
return join2(getMagicContextStorageDir(), "lkg-recovery-fences", `${hash(sessionId)}.json`);
|
|
252
259
|
}
|
|
260
|
+
var lockSweepDirectory;
|
|
261
|
+
function closeLkgLockSweepDirectory() {
|
|
262
|
+
lockSweepDirectory?.dir.closeSync();
|
|
263
|
+
lockSweepDirectory = undefined;
|
|
264
|
+
}
|
|
265
|
+
function takeLkgRecoveryLockSweepPage(maxEntries = 200) {
|
|
266
|
+
const path = join2(getMagicContextStorageDir(), "lkg-recovery-fences");
|
|
267
|
+
if (lockSweepDirectory?.path !== path)
|
|
268
|
+
closeLkgLockSweepDirectory();
|
|
269
|
+
const names = [];
|
|
270
|
+
try {
|
|
271
|
+
lockSweepDirectory ??= { path, dir: opendirSync(path) };
|
|
272
|
+
for (let i = 0;i < Math.min(200, Math.max(1, maxEntries)); i++) {
|
|
273
|
+
const entry = lockSweepDirectory.dir.readSync();
|
|
274
|
+
if (!entry) {
|
|
275
|
+
closeLkgLockSweepDirectory();
|
|
276
|
+
break;
|
|
277
|
+
}
|
|
278
|
+
if (entry.isDirectory() && /^[a-f0-9]{64}\.json\.locks$/.test(entry.name))
|
|
279
|
+
names.push(entry.name);
|
|
280
|
+
}
|
|
281
|
+
} catch {
|
|
282
|
+
closeLkgLockSweepDirectory();
|
|
283
|
+
}
|
|
284
|
+
return names;
|
|
285
|
+
}
|
|
286
|
+
function sweepEmptyLkgRecoveryLockDirectories(names, retainedSessionIds) {
|
|
287
|
+
if (!durableFencesSupported())
|
|
288
|
+
return 0;
|
|
289
|
+
const retainedHashes = new Set(Array.from(retainedSessionIds, hash));
|
|
290
|
+
const root = join2(getMagicContextStorageDir(), "lkg-recovery-fences");
|
|
291
|
+
let removed = 0;
|
|
292
|
+
for (const name of names.slice(0, 200)) {
|
|
293
|
+
if (!/^[a-f0-9]{64}\.json\.locks$/.test(name) || retainedHashes.has(name.slice(0, 64)))
|
|
294
|
+
continue;
|
|
295
|
+
const path = join2(root, name);
|
|
296
|
+
try {
|
|
297
|
+
try {
|
|
298
|
+
lstatSync(path.slice(0, -".locks".length));
|
|
299
|
+
continue;
|
|
300
|
+
} catch (error) {
|
|
301
|
+
if (error.code !== "ENOENT")
|
|
302
|
+
continue;
|
|
303
|
+
}
|
|
304
|
+
if (!lstatSync(path).isDirectory())
|
|
305
|
+
continue;
|
|
306
|
+
rmdirSync(path);
|
|
307
|
+
removed++;
|
|
308
|
+
} catch {}
|
|
309
|
+
}
|
|
310
|
+
return removed;
|
|
311
|
+
}
|
|
253
312
|
function metadata(slot) {
|
|
254
313
|
return [
|
|
255
314
|
slot.inputIdSeq,
|
|
@@ -631,6 +690,12 @@ function closeConnection(connection) {
|
|
|
631
690
|
counters.readersClosed += 1;
|
|
632
691
|
}
|
|
633
692
|
}
|
|
693
|
+
function messageTimesQuery(count) {
|
|
694
|
+
return `SELECT id, COALESCE(time_created, json_extract(data, '$.time.created')) AS created,
|
|
695
|
+
json_extract(data, '$.time.completed') AS completed
|
|
696
|
+
FROM session_message WHERE +session_id = ? AND id IN (${Array.from({ length: count }, () => "?").join(",")})`;
|
|
697
|
+
}
|
|
698
|
+
|
|
634
699
|
class V2StoreReader {
|
|
635
700
|
path;
|
|
636
701
|
pool;
|
|
@@ -726,6 +791,12 @@ class V2StoreReader {
|
|
|
726
791
|
return typeof row?.count === "number" ? row.count : 0;
|
|
727
792
|
});
|
|
728
793
|
}
|
|
794
|
+
messageCountAfterSequence(sessionID, after, through) {
|
|
795
|
+
const rawTypes = RAW_MESSAGE_TYPES.map(() => "?").join(", ");
|
|
796
|
+
const row = this.prepare(`SELECT COUNT(*) AS count FROM session_message
|
|
797
|
+
WHERE session_id = ? AND seq > ? AND seq <= ? AND type IN (${rawTypes})`).get(sessionID, after, through, ...RAW_MESSAGE_TYPES);
|
|
798
|
+
return typeof row?.count === "number" ? row.count : 0;
|
|
799
|
+
}
|
|
729
800
|
sessionDirectoryPage(afterSessionID, limit) {
|
|
730
801
|
const rows = this.prepare(`SELECT id, COALESCE(directory, '') AS directory FROM session_v2
|
|
731
802
|
WHERE id > ? ORDER BY id ASC LIMIT ?`).all(afterSessionID ?? "", limit);
|
|
@@ -853,9 +924,7 @@ class V2StoreReader {
|
|
|
853
924
|
const times = new Map;
|
|
854
925
|
for (let offset = 0;offset < ids.length; offset += 500) {
|
|
855
926
|
const batch = ids.slice(offset, offset + 500);
|
|
856
|
-
const rows = this.prepare(
|
|
857
|
-
json_extract(data, '$.time.completed') AS completed
|
|
858
|
-
FROM session_message WHERE session_id = ? AND id IN (${batch.map(() => "?").join(",")})`).all(sessionID, ...batch);
|
|
927
|
+
const rows = this.prepare(messageTimesQuery(batch.length)).all(sessionID, ...batch);
|
|
859
928
|
for (const row of rows)
|
|
860
929
|
times.set(row.id, {
|
|
861
930
|
created: typeof row.created === "number" ? row.created : undefined,
|
|
@@ -1248,7 +1317,7 @@ function deleteSessionScopedRows(db, sessionIds, harness, options = {}) {
|
|
|
1248
1317
|
fallback.run(tagTombstoneOwnerKey(id, getHarness2()), getHarness2(), ...tagTombstoneOwnerRange(id));
|
|
1249
1318
|
}
|
|
1250
1319
|
for (const sessionId of deletableSessionIds)
|
|
1251
|
-
|
|
1320
|
+
deleteChunkEmbedBackoffForSession2(db, sessionId);
|
|
1252
1321
|
for (const definition of SESSION_SCOPED_TABLES) {
|
|
1253
1322
|
if (definition.table === "message_history_fts") {
|
|
1254
1323
|
cleanupStatement(db, `DELETE FROM message_history_fts
|
|
@@ -1299,7 +1368,7 @@ function deleteSessionScopedRowsSlice(db, sessionId, harness) {
|
|
|
1299
1368
|
cleanupStatement(db, "INSERT OR IGNORE INTO schema_migrations_meta(key,value) VALUES (?,?)").run(tagTombstoneOwnerKey(sessionId, harness), harness);
|
|
1300
1369
|
let remaining = SESSION_CLEANUP_SLICE_ROWS;
|
|
1301
1370
|
const started = performance.now();
|
|
1302
|
-
remaining -=
|
|
1371
|
+
remaining -= deleteChunkEmbedBackoffForSession2(db, sessionId, remaining);
|
|
1303
1372
|
if (remaining <= 0)
|
|
1304
1373
|
return { complete: false, deleted: 0 };
|
|
1305
1374
|
for (const definition of SESSION_SCOPED_TABLES) {
|
|
@@ -1884,14 +1953,20 @@ function harnessSupportsOpenCodeOrphanSweep(harness) {
|
|
|
1884
1953
|
return harness === "opencode" || harness === "opencode2";
|
|
1885
1954
|
}
|
|
1886
1955
|
function getMessageHistoryOrphanSweepState(db, harness) {
|
|
1887
|
-
|
|
1956
|
+
const state = db.prepare("SELECT cursor_session_id, last_swept_at FROM message_history_orphan_sweep WHERE harness = ?").get(harness) ?? {};
|
|
1957
|
+
if (harness === "opencode2") {
|
|
1958
|
+
if (!state.cursor_session_id?.startsWith("session_v2:"))
|
|
1959
|
+
return {};
|
|
1960
|
+
return { ...state, cursor_session_id: state.cursor_session_id.slice("session_v2:".length) };
|
|
1961
|
+
}
|
|
1962
|
+
return state;
|
|
1888
1963
|
}
|
|
1889
1964
|
function persistMessageHistoryOrphanSweepState(db, cursor, lastSweptAt, harness) {
|
|
1890
1965
|
db.prepare(`INSERT INTO message_history_orphan_sweep (harness, cursor_session_id, last_swept_at)
|
|
1891
1966
|
VALUES (?, ?, ?)
|
|
1892
1967
|
ON CONFLICT(harness) DO UPDATE SET
|
|
1893
1968
|
cursor_session_id = excluded.cursor_session_id,
|
|
1894
|
-
last_swept_at = excluded.last_swept_at`).run(harness, cursor, lastSweptAt);
|
|
1969
|
+
last_swept_at = excluded.last_swept_at`).run(harness, harness === "opencode2" ? `session_v2:${cursor}` : cursor, lastSweptAt);
|
|
1895
1970
|
}
|
|
1896
1971
|
function getOpenCodeSessionScopedCandidateSourceSql(harness) {
|
|
1897
1972
|
const sources = SESSION_SCOPED_TABLES.filter((definition) => definition.harnessScoped === true).map((definition) => {
|
|
@@ -1939,13 +2014,14 @@ function* sweepOrphanedOpenCodeMessageIndexesInBackground(db, openReadableOpenCo
|
|
|
1939
2014
|
let v2Reader;
|
|
1940
2015
|
try {
|
|
1941
2016
|
let sessionExists;
|
|
2017
|
+
let liveIds;
|
|
1942
2018
|
if (harness === "opencode2") {
|
|
1943
2019
|
try {
|
|
1944
2020
|
const path = getSqliteDatabasePath2(openCodeDb);
|
|
1945
2021
|
if (!path)
|
|
1946
2022
|
throw new Error("OpenCode 2 source has no durable path");
|
|
1947
2023
|
v2Reader = new V2StoreReader(path);
|
|
1948
|
-
|
|
2024
|
+
liveIds = new Set(v2Reader.sessionIds());
|
|
1949
2025
|
if (liveIds.size === 0)
|
|
1950
2026
|
throw new Error("OpenCode 2 source has no sessions");
|
|
1951
2027
|
sessionExists = (id) => liveIds.has(id);
|
|
@@ -1954,9 +2030,26 @@ function* sweepOrphanedOpenCodeMessageIndexesInBackground(db, openReadableOpenCo
|
|
|
1954
2030
|
return { status: "source_unavailable", scanned: 0, deleted: 0, cursor };
|
|
1955
2031
|
}
|
|
1956
2032
|
} else {
|
|
2033
|
+
liveIds = new Set(openCodeDb.prepare("SELECT id FROM session").all().map((row) => row.id));
|
|
1957
2034
|
const query = openCodeDb.prepare("SELECT 1 FROM session WHERE id = ? LIMIT 1");
|
|
1958
2035
|
sessionExists = (id) => !!query.get(id);
|
|
1959
2036
|
}
|
|
2037
|
+
if (options.fenceLockNames?.length) {
|
|
2038
|
+
const retainedIds = new Set(liveIds);
|
|
2039
|
+
const sources = SESSION_SCOPED_TABLES.map((def) => `SELECT session_id FROM ${def.table}${def.extraPredicate ? ` WHERE ${def.extraPredicate}` : ""}`);
|
|
2040
|
+
for (const row of db.prepare(sources.join(" UNION ")).all()) {
|
|
2041
|
+
if (typeof row.session_id === "string")
|
|
2042
|
+
retainedIds.add(row.session_id);
|
|
2043
|
+
}
|
|
2044
|
+
for (const row of db.prepare("SELECT key FROM schema_migrations_meta WHERE key >= ? AND key < ?").all(TAG_TOMBSTONE_OWNER_PREFIX, "tag_revision_owner;")) {
|
|
2045
|
+
try {
|
|
2046
|
+
const id = JSON.parse(row.key.slice(TAG_TOMBSTONE_OWNER_PREFIX.length, row.key.lastIndexOf(":")));
|
|
2047
|
+
if (typeof id === "string")
|
|
2048
|
+
retainedIds.add(id);
|
|
2049
|
+
} catch {}
|
|
2050
|
+
}
|
|
2051
|
+
sweepEmptyLkgRecoveryLockDirectories(options.fenceLockNames, retainedIds);
|
|
2052
|
+
}
|
|
1960
2053
|
const cutoff = now - safetyAgeMs;
|
|
1961
2054
|
const candidateSourceSql = getOpenCodeSessionScopedCandidateSourceSql(harness);
|
|
1962
2055
|
const candidates = db.prepare(`SELECT session_id
|
|
@@ -2048,4 +2141,4 @@ async function sweepOrphanedOpenCodeMessageIndexesCooperatively2(db, openSource,
|
|
|
2048
2141
|
}));
|
|
2049
2142
|
}
|
|
2050
2143
|
|
|
2051
|
-
export { BoundedSessionMap, LkgRecoveryFenceError, clearLkgFenceProcessState, lkgFenceRequiresRebuild, lkgRecoveryFenceUnclean, ownsLkgDirtyFence, invalidateCleanLkgRecoveryFence, markLkgRecoveryDirty, commitLkgWithRecoveryFence, clearLkgRecoveryFence, gaDatabasePath, V2StoreReader, readSessionActivity, observeSessionActivity, backfillSessionActivity, deleteSessionScopedRows, clearCompressionDepth, clearCompressionDepthRange, cleanSearchText, keywordRelevance, matchedSearchSnippet, MESSAGE_INDEX_MAX_FTS_BYTES2, messageIndexSkipKey2, toMessageIndexSource2, getMessageIndexSourceIdentity2, isMessageIndexSourceCurrent2, getLastIndexedOrdinal2, getIndexedMessageCorpusSize2, markMessageIndexDirty2, getMessageIndexReconciliationStartOrdinal2, isMessageIndexReconciledThrough2, deleteIndexedMessage2, clearIndexedMessagesInTransaction2, clearIndexedMessages2, getIndexableContent2, indexSingleMessage2, indexMessagesAfterOrdinal2, indexSourcesAfterOrdinal2, sweepOrphanedOpenCodeMessageIndexesCooperatively2 };
|
|
2144
|
+
export { BoundedSessionMap, LkgRecoveryFenceError, clearLkgFenceProcessState, takeLkgRecoveryLockSweepPage, lkgFenceRequiresRebuild, lkgRecoveryFenceUnclean, ownsLkgDirtyFence, invalidateCleanLkgRecoveryFence, markLkgRecoveryDirty, commitLkgWithRecoveryFence, clearLkgRecoveryFence, gaDatabasePath, V2StoreReader, readSessionActivity, observeSessionActivity, backfillSessionActivity, deleteSessionScopedRows, clearCompressionDepth, clearCompressionDepthRange, cleanSearchText, keywordRelevance, matchedSearchSnippet, MESSAGE_INDEX_MAX_FTS_BYTES2, messageIndexSkipKey2, toMessageIndexSource2, getMessageIndexSourceIdentity2, isMessageIndexSourceCurrent2, getLastIndexedOrdinal2, getIndexedMessageCorpusSize2, markMessageIndexDirty2, getMessageIndexReconciliationStartOrdinal2, isMessageIndexReconciledThrough2, deleteIndexedMessage2, clearIndexedMessagesInTransaction2, clearIndexedMessages2, getIndexableContent2, indexSingleMessage2, indexMessagesAfterOrdinal2, indexSourcesAfterOrdinal2, sweepOrphanedOpenCodeMessageIndexesCooperatively2 };
|