@cortexkit/magic-context 0.48.0 → 0.49.0
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/index.js +240 -34
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -2212,8 +2212,12 @@ function flush() {
|
|
|
2212
2212
|
let currentSize = getCurrentLogSize(logFile);
|
|
2213
2213
|
const dataSize = Buffer.byteLength(data);
|
|
2214
2214
|
if (currentSize > 0 && currentSize + dataSize > MAX_LOG_FILE_BYTES) {
|
|
2215
|
-
|
|
2216
|
-
currentSize =
|
|
2215
|
+
flushesSinceSizeCheck = SIZE_CHECK_INTERVAL_FLUSHES;
|
|
2216
|
+
currentSize = getCurrentLogSize(logFile);
|
|
2217
|
+
if (currentSize > 0 && currentSize + dataSize > MAX_LOG_FILE_BYTES) {
|
|
2218
|
+
rotateLogFile(logFile, currentSize);
|
|
2219
|
+
currentSize = 0;
|
|
2220
|
+
}
|
|
2217
2221
|
}
|
|
2218
2222
|
fs.appendFileSync(logFile, data, { encoding: "utf8", mode: 384 });
|
|
2219
2223
|
buffer = [];
|
|
@@ -28995,11 +28999,75 @@ var init_migrations = __esm(async () => {
|
|
|
28995
28999
|
|
|
28996
29000
|
// ../plugin/src/features/magic-context/storage-tag-identity-revision.ts
|
|
28997
29001
|
function installTagIdentityRevisionTrigger(db) {
|
|
29002
|
+
db.exec(`DROP TRIGGER IF EXISTS temp.mc_tag_identity_revision_au;
|
|
29003
|
+
DROP TRIGGER IF EXISTS temp.mc_tag_revision_bi;
|
|
29004
|
+
DROP TRIGGER IF EXISTS temp.mc_tag_revision_ai;
|
|
29005
|
+
DROP TRIGGER IF EXISTS temp.mc_tag_revision_au;
|
|
29006
|
+
DROP TRIGGER IF EXISTS temp.mc_tag_revision_ad;
|
|
29007
|
+
DROP TRIGGER IF EXISTS temp.mc_tag_revision_seed_ai;`);
|
|
29008
|
+
db.exec(`CREATE TEMP TRIGGER mc_tag_revision_seed_ai AFTER INSERT ON main.schema_migrations_meta
|
|
29009
|
+
WHEN INSTR(NEW.value, ':') = 0 AND (
|
|
29010
|
+
SUBSTR(NEW.key, 1, ${TAG_REVISION_PREFIX.length}) = '${TAG_REVISION_PREFIX}'
|
|
29011
|
+
OR SUBSTR(NEW.key, 1, ${TAG_IDENTITY_REVISION_PREFIX.length}) = '${TAG_IDENTITY_REVISION_PREFIX}')
|
|
29012
|
+
BEGIN
|
|
29013
|
+
INSERT INTO schema_migrations_meta (key, value) VALUES ('${TAG_REVISION_INCARNATION_KEY}', '1')
|
|
29014
|
+
ON CONFLICT(key) DO UPDATE SET value = CAST(CASE
|
|
29015
|
+
WHEN CAST(value AS INTEGER) < 9223372036854775807 THEN CAST(value AS INTEGER) + 1
|
|
29016
|
+
ELSE NULL END AS TEXT);
|
|
29017
|
+
UPDATE schema_migrations_meta SET value =
|
|
29018
|
+
(SELECT value FROM schema_migrations_meta WHERE key = '${TAG_REVISION_INCARNATION_KEY}')
|
|
29019
|
+
|| ':' || CAST(NEW.value AS TEXT) WHERE key = NEW.key;
|
|
29020
|
+
INSERT INTO schema_migrations_meta (key, value)
|
|
29021
|
+
SELECT '${TAG_REVISION_INCARNATION_KEY}', '1'
|
|
29022
|
+
WHERE SUBSTR(NEW.key, 1, ${TAG_REVISION_PREFIX.length}) = '${TAG_REVISION_PREFIX}'
|
|
29023
|
+
AND NOT EXISTS (SELECT 1 FROM schema_migrations_meta
|
|
29024
|
+
WHERE key = '${TAG_IDENTITY_REVISION_PREFIX}' || SUBSTR(NEW.key, ${TAG_REVISION_PREFIX.length + 1}))
|
|
29025
|
+
ON CONFLICT(key) DO UPDATE SET value = CAST(CASE
|
|
29026
|
+
WHEN CAST(value AS INTEGER) < 9223372036854775807 THEN CAST(value AS INTEGER) + 1
|
|
29027
|
+
ELSE NULL END AS TEXT);
|
|
29028
|
+
INSERT INTO schema_migrations_meta (key, value)
|
|
29029
|
+
SELECT '${TAG_IDENTITY_REVISION_PREFIX}' || SUBSTR(NEW.key, ${TAG_REVISION_PREFIX.length + 1}),
|
|
29030
|
+
(SELECT value FROM schema_migrations_meta WHERE key = '${TAG_REVISION_INCARNATION_KEY}') || ':0'
|
|
29031
|
+
WHERE SUBSTR(NEW.key, 1, ${TAG_REVISION_PREFIX.length}) = '${TAG_REVISION_PREFIX}'
|
|
29032
|
+
AND NOT EXISTS (SELECT 1 FROM schema_migrations_meta
|
|
29033
|
+
WHERE key = '${TAG_IDENTITY_REVISION_PREFIX}' || SUBSTR(NEW.key, ${TAG_REVISION_PREFIX.length + 1}));
|
|
29034
|
+
END;`);
|
|
28998
29035
|
db.exec(TRIGGER_SQL);
|
|
28999
|
-
|
|
29000
|
-
|
|
29001
|
-
|
|
29002
|
-
|
|
29036
|
+
db.exec(`CREATE TEMP TRIGGER IF NOT EXISTS mc_tag_revision_bi BEFORE INSERT ON main.tags BEGIN
|
|
29037
|
+
${BUMP_INSERT_CONFLICTS(TAG_REVISION_PREFIX)};
|
|
29038
|
+
${BUMP_INSERT_CONFLICTS(TAG_IDENTITY_REVISION_PREFIX)};
|
|
29039
|
+
UPDATE session_meta SET tags_version = tags_version + 1
|
|
29040
|
+
WHERE session_id IN (SELECT session_id FROM (${TAG_INSERT_CONFLICT_ROWS}));
|
|
29041
|
+
END;`);
|
|
29042
|
+
db.exec(`CREATE TEMP TRIGGER IF NOT EXISTS mc_tag_revision_ai AFTER INSERT ON main.tags BEGIN
|
|
29043
|
+
${BUMP("NEW.session_id", TAG_REVISION_PREFIX)};
|
|
29044
|
+
END;
|
|
29045
|
+
CREATE TEMP TRIGGER IF NOT EXISTS mc_tag_revision_au AFTER UPDATE ON main.tags BEGIN
|
|
29046
|
+
${BUMP("OLD.session_id", TAG_REVISION_PREFIX)};
|
|
29047
|
+
INSERT INTO schema_migrations_meta (key, value)
|
|
29048
|
+
SELECT '${TAG_REVISION_PREFIX}' || NEW.session_id, '1'
|
|
29049
|
+
WHERE NEW.session_id IS NOT OLD.session_id
|
|
29050
|
+
ON CONFLICT(key) DO UPDATE SET value = ${ADVANCE()};
|
|
29051
|
+
END;
|
|
29052
|
+
CREATE TEMP TRIGGER IF NOT EXISTS mc_tag_revision_ad AFTER DELETE ON main.tags BEGIN
|
|
29053
|
+
${BUMP("OLD.session_id", TAG_REVISION_PREFIX)};
|
|
29054
|
+
END;`);
|
|
29055
|
+
}
|
|
29056
|
+
var TAG_IDENTITY_REVISION_PREFIX = "tag_identity_revision:", TAG_REVISION_PREFIX = "tag_revision:", TAG_REVISION_INCARNATION_KEY = "tag_revision_incarnation", tagRevisionIncarnationSql = (value) => `CASE WHEN INSTR(${value}, ':') > 0 THEN SUBSTR(${value}, 1, INSTR(${value}, ':') - 1) ELSE '0' END`, tagRevisionCountSql = (value) => `CAST(CASE WHEN INSTR(${value}, ':') > 0 THEN SUBSTR(${value}, INSTR(${value}, ':') + 1) ELSE ${value} END AS INTEGER)`, ADVANCE = (delta = "1") => `CASE
|
|
29057
|
+
WHEN ${tagRevisionCountSql("value")} <= 9223372036854775807 - ${delta}
|
|
29058
|
+
THEN (${tagRevisionIncarnationSql("value")}) || ':' || CAST(${tagRevisionCountSql("value")} + ${delta} AS TEXT)
|
|
29059
|
+
ELSE NULL END`, BUMP = (session, prefix = TAG_IDENTITY_REVISION_PREFIX) => `INSERT INTO schema_migrations_meta (key, value)
|
|
29060
|
+
VALUES ('${prefix}' || ${session}, '1')
|
|
29061
|
+
ON CONFLICT(key) DO UPDATE SET value = ${ADVANCE()}`, TAG_INSERT_CONFLICT_ROWS = `SELECT id, session_id, tag_number FROM tags WHERE id = NEW.id
|
|
29062
|
+
UNION SELECT id, session_id, tag_number FROM tags WHERE session_id = NEW.session_id AND tag_number = NEW.tag_number
|
|
29063
|
+
UNION SELECT id, session_id, tag_number FROM tags
|
|
29064
|
+
WHERE NEW.type = 'tool' AND NEW.tool_owner_message_id IS NOT NULL
|
|
29065
|
+
AND type = 'tool' AND tool_owner_message_id IS NOT NULL
|
|
29066
|
+
AND session_id = NEW.session_id AND message_id = NEW.message_id
|
|
29067
|
+
AND tool_owner_message_id = NEW.tool_owner_message_id`, BUMP_INSERT_CONFLICTS = (prefix) => `INSERT INTO schema_migrations_meta (key, value)
|
|
29068
|
+
SELECT '${prefix}' || session_id, CAST(COUNT(*) AS TEXT)
|
|
29069
|
+
FROM (${TAG_INSERT_CONFLICT_ROWS}) GROUP BY session_id
|
|
29070
|
+
ON CONFLICT(key) DO UPDATE SET value = ${ADVANCE("CAST(excluded.value AS INTEGER)")}`, TRIGGER_SQL;
|
|
29003
29071
|
var init_storage_tag_identity_revision = __esm(() => {
|
|
29004
29072
|
TRIGGER_SQL = `CREATE TEMP TRIGGER IF NOT EXISTS mc_tag_identity_revision_au
|
|
29005
29073
|
AFTER UPDATE OF id, session_id, message_id, tag_number, type, tool_owner_message_id, reasoning_token_count
|
|
@@ -29009,7 +29077,7 @@ var init_storage_tag_identity_revision = __esm(() => {
|
|
|
29009
29077
|
INSERT INTO schema_migrations_meta (key, value)
|
|
29010
29078
|
SELECT '${TAG_IDENTITY_REVISION_PREFIX}' || NEW.session_id, '1'
|
|
29011
29079
|
WHERE NEW.session_id IS NOT OLD.session_id
|
|
29012
|
-
ON CONFLICT(key) DO UPDATE SET value =
|
|
29080
|
+
ON CONFLICT(key) DO UPDATE SET value = ${ADVANCE()};
|
|
29013
29081
|
END`;
|
|
29014
29082
|
});
|
|
29015
29083
|
|
|
@@ -30381,7 +30449,7 @@ function pickNearestPriorOwner(candidates, currentMessageId, times) {
|
|
|
30381
30449
|
}
|
|
30382
30450
|
return best?.id ?? null;
|
|
30383
30451
|
}
|
|
30384
|
-
var insertTagStatements, updateTagStatusStatements, updateTagDropModeStatements, updateTagMessageIdStatements, getTagNumbersByMessageIdStatements, deleteTagsByMessageIdStatements, getMaxTagNumberBySessionStatements, getTagNumberByMessageIdStatements, getAssignableTagNumberByMessageIdStatements, hasPiFallbackMessageTagStatements, updateTagByteSizeStatements, updateTagInputByteSizeStatements, recentTagOwnerStatements, RECLAIM_HINT_EXCLUDED_TOOLS, getActiveToolTagsForAgeReclaimStatements, scopedActiveTokenTotalStatements, updateTagTokenCountStatements, updateTagInputTokenCountStatements, tagOwnerSummaries, TAG_OWNER_COLUMNS = "id, type, message_id, tool_owner_message_id, tag_number, reasoning_token_count", TAG_OWNER_APPENDED_WITH_SHAPE_SQL, inertWhitespaceStatements, foldStatements, getOwnerScopedToolTagNumbersStatements, getMinMessageTagNumberForRawIdStatements, getActiveTagsBySessionStatements, getNullOwnerToolTagsBySessionStatements, getDroppedTagsBySessionStatements, getMaxDroppedTagNumberStatements, newestToolTagNumberStatements, droppedNumberStatements, tagByIdStatements, getToolTagNumberByOwnerStatements, getNullOwnerToolTagStatements, adoptNullOwnerToolTagStatements, getToolOwnerByTagIdStatements, deleteToolTagsByOwnerStatements;
|
|
30452
|
+
var insertTagStatements, updateTagStatusStatements, updateTagDropModeStatements, updateTagMessageIdStatements, getTagNumbersByMessageIdStatements, deleteTagsByMessageIdStatements, getMaxTagNumberBySessionStatements, getTagNumberByMessageIdStatements, getAssignableTagNumberByMessageIdStatements, hasPiFallbackMessageTagStatements, updateTagByteSizeStatements, updateTagInputByteSizeStatements, recentTagOwnerStatements, RECLAIM_HINT_EXCLUDED_TOOLS, getActiveToolTagsForAgeReclaimStatements, scopedActiveTokenTotalStatements, updateTagTokenCountStatements, updateTagInputTokenCountStatements, tagOwnerSummaries, TAG_OWNER_COLUMNS = "id, type, message_id, tool_owner_message_id, tag_number, reasoning_token_count", TAG_OWNER_APPENDED_WITH_SHAPE_SQL, inertWhitespaceStatements, inertWhitespaceByNumberStatements, foldStatements, getOwnerScopedToolTagNumbersStatements, getMinMessageTagNumberForRawIdStatements, getActiveTagsBySessionStatements, getNullOwnerToolTagsBySessionStatements, getDroppedTagsBySessionStatements, getMaxDroppedTagNumberStatements, newestToolTagNumberStatements, droppedNumberStatements, tagByIdStatements, getToolTagNumberByOwnerStatements, getNullOwnerToolTagStatements, adoptNullOwnerToolTagStatements, getToolOwnerByTagIdStatements, deleteToolTagsByOwnerStatements;
|
|
30385
30453
|
var init_storage_tags = __esm(async () => {
|
|
30386
30454
|
init_emergency_drop();
|
|
30387
30455
|
init_tag_owner_id();
|
|
@@ -30423,6 +30491,7 @@ var init_storage_tags = __esm(async () => {
|
|
|
30423
30491
|
SELECT NULL, NULL, NULL, NULL, NULL, NULL, 1, COUNT(*), MAX(id), (SELECT value FROM schema_migrations_meta WHERE key = ?)
|
|
30424
30492
|
FROM tags WHERE session_id = ?`;
|
|
30425
30493
|
inertWhitespaceStatements = new WeakMap;
|
|
30494
|
+
inertWhitespaceByNumberStatements = new WeakMap;
|
|
30426
30495
|
foldStatements = new WeakMap;
|
|
30427
30496
|
getOwnerScopedToolTagNumbersStatements = new WeakMap;
|
|
30428
30497
|
getMinMessageTagNumberForRawIdStatements = new WeakMap;
|
|
@@ -30665,29 +30734,44 @@ function readRawMessagePageRows(db, sessionId, afterOrdinal, limit, finalWaterma
|
|
|
30665
30734
|
const pageSize = Math.min(Math.max(1, Math.floor(limit)), remaining);
|
|
30666
30735
|
if (pageSize === 0)
|
|
30667
30736
|
return [];
|
|
30668
|
-
|
|
30669
|
-
|
|
30670
|
-
|
|
30671
|
-
|
|
30672
|
-
|
|
30673
|
-
|
|
30674
|
-
|
|
30675
|
-
|
|
30676
|
-
|
|
30677
|
-
|
|
30678
|
-
|
|
30679
|
-
|
|
30680
|
-
|
|
30681
|
-
|
|
30682
|
-
|
|
30683
|
-
|
|
30684
|
-
|
|
30685
|
-
|
|
30686
|
-
|
|
30687
|
-
|
|
30688
|
-
|
|
30689
|
-
|
|
30690
|
-
|
|
30737
|
+
return withReadSnapshot(db, () => {
|
|
30738
|
+
const ordinal = Math.max(0, Math.floor(afterOrdinal));
|
|
30739
|
+
const points = currentOrdinalCheckpoints(db, sessionId)?.scan.checkpoints ?? [];
|
|
30740
|
+
let low = 0;
|
|
30741
|
+
let high = points.length;
|
|
30742
|
+
while (low < high) {
|
|
30743
|
+
const middle = Math.floor((low + high) / 2);
|
|
30744
|
+
if (points[middle].ordinal <= ordinal)
|
|
30745
|
+
low = middle + 1;
|
|
30746
|
+
else
|
|
30747
|
+
high = middle;
|
|
30748
|
+
}
|
|
30749
|
+
const floor = points[low - 1];
|
|
30750
|
+
const useFloor = floor && (!after || compareOrdinalKeys(floor, after) > 0);
|
|
30751
|
+
const anchor = useFloor ? floor : after;
|
|
30752
|
+
const skip = anchor === after && after ? 0 : ordinal - (floor?.ordinal ?? 0);
|
|
30753
|
+
if (skip > ORDINAL_LOOKUP_LIMIT) {
|
|
30754
|
+
prewarmRawSessionOrdinalsForDb(db, sessionId);
|
|
30755
|
+
throw new RawOrdinalsNotReady;
|
|
30756
|
+
}
|
|
30757
|
+
const rawLimit = skip + pageSize + ORDINAL_LOOKUP_LIMIT;
|
|
30758
|
+
const rows = db.prepare(`SELECT id, data, time_created, time_updated, ${EXCLUDED_ROW_SQL} AS excluded
|
|
30759
|
+
FROM message WHERE id IN (
|
|
30760
|
+
SELECT id FROM message WHERE session_id = ?
|
|
30761
|
+
${anchor ? "AND (time_created, id) > (?, ?)" : ""}
|
|
30762
|
+
ORDER BY time_created, id LIMIT ?)
|
|
30763
|
+
ORDER BY time_created, id`).all(sessionId, ...anchor ? [anchor.timeCreated, anchor.id] : [], rawLimit);
|
|
30764
|
+
rawMessagePageRowsVisited += rows.length;
|
|
30765
|
+
const eligible = rows.filter((row) => row.excluded !== 1);
|
|
30766
|
+
if (eligible.length <= skip && rows.length === rawLimit) {
|
|
30767
|
+
prewarmRawSessionOrdinalsForDb(db, sessionId);
|
|
30768
|
+
throw new RawOrdinalsNotReady;
|
|
30769
|
+
}
|
|
30770
|
+
return eligible.slice(skip, skip + pageSize).filter(isRawMessageRow).map((row, index) => ({
|
|
30771
|
+
...row,
|
|
30772
|
+
ordinal: ordinal + index + 1
|
|
30773
|
+
}));
|
|
30774
|
+
});
|
|
30691
30775
|
}
|
|
30692
30776
|
function assembleRawMessagePage(messageRows, partRows) {
|
|
30693
30777
|
const partsByMessageId = new Map;
|
|
@@ -31349,11 +31433,124 @@ function readRawSeedTailFromDb(db, sessionId, boundaryId) {
|
|
|
31349
31433
|
throw new Error("state_sync materialized boundary is missing from raw storage");
|
|
31350
31434
|
return messages;
|
|
31351
31435
|
}
|
|
31352
|
-
|
|
31436
|
+
function readBoundaryEndpointRows(db, sessionId, ids, blockIds, into) {
|
|
31437
|
+
if (ids.length > 0) {
|
|
31438
|
+
boundaryEndpointRowsRead += ids.length;
|
|
31439
|
+
const wanted = JSON.stringify(ids);
|
|
31440
|
+
const ordinals = new Map;
|
|
31441
|
+
for (const row of db.prepare(BOUNDARY_ORDINAL_SQL).all(sessionId, wanted)) {
|
|
31442
|
+
ordinals.set(row.id, row.ordinal);
|
|
31443
|
+
}
|
|
31444
|
+
const rows = db.prepare(BOUNDARY_MESSAGE_SQL).all(sessionId, wanted);
|
|
31445
|
+
for (const id of ids)
|
|
31446
|
+
into.set(id, null);
|
|
31447
|
+
for (const row of rows) {
|
|
31448
|
+
if (!isRawMessageRow(row) || typeof row.time_created !== "number")
|
|
31449
|
+
continue;
|
|
31450
|
+
const info = parseJsonRecord(row.data);
|
|
31451
|
+
if (!info || isRawCompactionSummaryInfo(info))
|
|
31452
|
+
continue;
|
|
31453
|
+
into.set(row.id, {
|
|
31454
|
+
ordinal: ordinals.get(row.id) ?? null,
|
|
31455
|
+
createdAt: row.time_created
|
|
31456
|
+
});
|
|
31457
|
+
}
|
|
31458
|
+
}
|
|
31459
|
+
const servable = blockIds.filter((id) => {
|
|
31460
|
+
const endpoint = into.get(id);
|
|
31461
|
+
return endpoint && endpoint.lastBlockIndex === undefined;
|
|
31462
|
+
});
|
|
31463
|
+
if (servable.length === 0)
|
|
31464
|
+
return;
|
|
31465
|
+
const counts = new Map;
|
|
31466
|
+
for (const row of db.prepare(BOUNDARY_BLOCK_COUNT_SQL).all(sessionId, JSON.stringify(servable))) {
|
|
31467
|
+
counts.set(row.id, row.blocks);
|
|
31468
|
+
}
|
|
31469
|
+
for (const id of servable) {
|
|
31470
|
+
const endpoint = into.get(id);
|
|
31471
|
+
if (!endpoint)
|
|
31472
|
+
continue;
|
|
31473
|
+
const blocks = counts.get(id) ?? 0;
|
|
31474
|
+
into.set(id, { ...endpoint, lastBlockIndex: blocks > 0 ? blocks - 1 : 0 });
|
|
31475
|
+
}
|
|
31476
|
+
}
|
|
31477
|
+
function readRawSessionBoundaryEndpointsFromDb(db, sessionId, ids, blockIds = []) {
|
|
31478
|
+
const wanted = [...new Set(ids)];
|
|
31479
|
+
const wantedBlocks = [...new Set(blockIds)];
|
|
31480
|
+
let sessions = boundaryEndpointCaches.get(db);
|
|
31481
|
+
if (!sessions) {
|
|
31482
|
+
sessions = new Map;
|
|
31483
|
+
boundaryEndpointCaches.set(db, sessions);
|
|
31484
|
+
}
|
|
31485
|
+
for (let attempt = 1;; attempt += 1) {
|
|
31486
|
+
const before = readStoreStamp(db);
|
|
31487
|
+
const cached = sessions.get(sessionId);
|
|
31488
|
+
const reuse = attempt === 1 && cached && sameStoreStamp(cached.stamp, before);
|
|
31489
|
+
const endpoints = new Map(reuse ? cached.endpoints : []);
|
|
31490
|
+
const missing = wanted.filter((id) => !endpoints.has(id));
|
|
31491
|
+
withReadSnapshot(db, () => readBoundaryEndpointRows(db, sessionId, missing, wantedBlocks, endpoints));
|
|
31492
|
+
const unchanged = before !== null && sameStoreStamp(before, readStoreStamp(db));
|
|
31493
|
+
if (unchanged) {
|
|
31494
|
+
sessions.delete(sessionId);
|
|
31495
|
+
sessions.set(sessionId, { stamp: before, endpoints });
|
|
31496
|
+
while (sessions.size > BOUNDARY_ENDPOINT_CACHE_SESSIONS) {
|
|
31497
|
+
const oldest = sessions.keys().next().value;
|
|
31498
|
+
if (oldest === undefined)
|
|
31499
|
+
break;
|
|
31500
|
+
sessions.delete(oldest);
|
|
31501
|
+
}
|
|
31502
|
+
} else if (reuse) {
|
|
31503
|
+
continue;
|
|
31504
|
+
}
|
|
31505
|
+
return new Map(wanted.map((id) => [id, endpoints.get(id) ?? null]));
|
|
31506
|
+
}
|
|
31507
|
+
}
|
|
31508
|
+
var RAW_MESSAGE_PARTS_BY_ID_SQL = "SELECT message_id, data, time_updated FROM part WHERE +session_id = ? AND likelihood(message_id = ?, 0.000001) ORDER BY time_created ASC, id ASC", RAW_METADATA_KEEP_CHARS = 16384, RAW_METADATA_KEPT_KEYS, RAW_PART_DATA_SQL, rawMessagePageRowsVisited = 0, RAW_SUMMARY_TEXT_MAX_CHARS = 8192, RAW_SUMMARY_ARG_MAX_CHARS = 512, RAW_SUMMARY_TOOL_INPUT_KEYS, RAW_SUMMARY_PART_DATA_SQL, ORDINAL_SUMMARY_FLAG_SQL = `(CASE WHEN json_valid(data) = 1
|
|
31353
31509
|
THEN COALESCE(json_extract(data, '$.summary'), 0)
|
|
31354
31510
|
ELSE 0 END = 1)`, ORDINAL_STOP_FLAG_SQL = `(CASE WHEN json_valid(data) = 1
|
|
31355
31511
|
THEN COALESCE(json_extract(data, '$.finish'), '')
|
|
31356
|
-
ELSE '' END = 'stop')`, ORDINAL_RANGE_FROM_START_SQL, ORDINAL_RANGE_BETWEEN_SQL, ordinalWatermarks, ordinalWatermarkEpochs, ordinalRowsVisited = 0, STABLE_STORE_ATTEMPTS = 3, EXCLUDED_ROW_SQL, SUMMARY_ANCHOR_SPAN = 256, SUMMARY_ANCHOR_LIMIT = 64, summaryCandidateSets, summaryCandidateEpochs, writtenSummaryIds, indexedCountUnsupported, ordinalJsonRowsRead = 0, summaryFullScans = 0, ANCHOR_ROWS_SQL, SUMMARY_FULL_SCAN_SQL, SUMMARY_SCAN_AFTER_SQL, ANCHOR_CHECK_SQL = "SELECT rowid AS rid, id FROM message WHERE rowid IN (SELECT value FROM json_each(?))", ordinalCheckpoints, ordinalSummarySeeds, ORDINAL_LOOKUP_LIMIT = 512, RawOrdinalsNotReady, CANONICAL_COUNT_SQL
|
|
31512
|
+
ELSE '' END = 'stop')`, ORDINAL_RANGE_FROM_START_SQL, ORDINAL_RANGE_BETWEEN_SQL, ordinalWatermarks, ordinalWatermarkEpochs, ordinalRowsVisited = 0, STABLE_STORE_ATTEMPTS = 3, EXCLUDED_ROW_SQL, SUMMARY_ANCHOR_SPAN = 256, SUMMARY_ANCHOR_LIMIT = 64, summaryCandidateSets, summaryCandidateEpochs, writtenSummaryIds, indexedCountUnsupported, ordinalJsonRowsRead = 0, summaryFullScans = 0, ANCHOR_ROWS_SQL, SUMMARY_FULL_SCAN_SQL, SUMMARY_SCAN_AFTER_SQL, ANCHOR_CHECK_SQL = "SELECT rowid AS rid, id FROM message WHERE rowid IN (SELECT value FROM json_each(?))", ordinalCheckpoints, ordinalSummarySeeds, ORDINAL_LOOKUP_LIMIT = 512, RawOrdinalsNotReady, CANONICAL_COUNT_SQL, BOUNDARY_ORDINAL_SQL = `
|
|
31513
|
+
SELECT id, ordinal FROM (
|
|
31514
|
+
SELECT id, ROW_NUMBER() OVER (ORDER BY time_created, id) AS ordinal
|
|
31515
|
+
FROM message
|
|
31516
|
+
WHERE session_id = ?
|
|
31517
|
+
AND typeof(id) = 'text' AND typeof(data) = 'text'
|
|
31518
|
+
AND CASE WHEN json_valid(data) THEN NOT (
|
|
31519
|
+
COALESCE(json_type(data, '$.summary'), '') = 'true'
|
|
31520
|
+
AND COALESCE(json_extract(data, '$.finish'), '') = 'stop'
|
|
31521
|
+
) ELSE 1 END
|
|
31522
|
+
)
|
|
31523
|
+
WHERE id IN (SELECT value FROM json_each(?))`, BOUNDARY_MESSAGE_SQL = `
|
|
31524
|
+
SELECT id, data, time_created FROM message
|
|
31525
|
+
WHERE +session_id = ? AND id IN (SELECT value FROM json_each(?))`, BOUNDARY_BLOCK_COUNT_SQL = `
|
|
31526
|
+
SELECT message_id AS id, SUM(
|
|
31527
|
+
CASE
|
|
31528
|
+
WHEN NOT json_valid(data) OR json_type(data) <> 'object' THEN 0
|
|
31529
|
+
ELSE CASE (CASE WHEN json_type(data, '$.type') = 'text'
|
|
31530
|
+
THEN json_extract(data, '$.type') ELSE 'unknown' END)
|
|
31531
|
+
WHEN 'text' THEN CASE WHEN json_type(data, '$.ignored') = 'true' THEN 0 ELSE 1 END
|
|
31532
|
+
WHEN 'reasoning' THEN 1
|
|
31533
|
+
WHEN 'thinking' THEN 1
|
|
31534
|
+
WHEN 'redacted_thinking' THEN 1
|
|
31535
|
+
WHEN 'tool' THEN 1 + CASE
|
|
31536
|
+
WHEN json_type(data, '$.state') = 'object'
|
|
31537
|
+
AND json_type(data, '$.state.status') = 'text'
|
|
31538
|
+
AND json_extract(data, '$.state.status') IN ('completed', 'error')
|
|
31539
|
+
THEN 1 ELSE 0 END
|
|
31540
|
+
WHEN 'compaction' THEN 0
|
|
31541
|
+
WHEN 'step-finish' THEN 0
|
|
31542
|
+
WHEN 'snapshot' THEN 0
|
|
31543
|
+
WHEN 'patch' THEN 0
|
|
31544
|
+
WHEN 'agent' THEN 0
|
|
31545
|
+
WHEN 'retry' THEN 0
|
|
31546
|
+
ELSE 1
|
|
31547
|
+
END
|
|
31548
|
+
END) AS blocks
|
|
31549
|
+
FROM part
|
|
31550
|
+
WHERE +session_id = ?
|
|
31551
|
+
AND message_id IN (SELECT value FROM json_each(?))
|
|
31552
|
+
AND typeof(message_id) = 'text' AND typeof(data) = 'text'
|
|
31553
|
+
GROUP BY message_id`, boundaryEndpointCaches, BOUNDARY_ENDPOINT_CACHE_SESSIONS = 16, boundaryEndpointRowsRead = 0;
|
|
31357
31554
|
var init_read_session_raw = __esm(async () => {
|
|
31358
31555
|
await __promiseAll([
|
|
31359
31556
|
init_sqlite(),
|
|
@@ -31429,6 +31626,7 @@ END`;
|
|
|
31429
31626
|
}
|
|
31430
31627
|
};
|
|
31431
31628
|
CANONICAL_COUNT_SQL = new Map;
|
|
31629
|
+
boundaryEndpointCaches = new WeakMap;
|
|
31432
31630
|
});
|
|
31433
31631
|
|
|
31434
31632
|
// ../plugin/src/hooks/magic-context/raw-ordinal-warmup.ts
|
|
@@ -31641,7 +31839,7 @@ function getMessageTimesFromOpenCodeDb(sessionId, messageIds) {
|
|
|
31641
31839
|
try {
|
|
31642
31840
|
withReadOnlySessionDb((db) => {
|
|
31643
31841
|
const placeholders = messageIds.map(() => "?").join(",");
|
|
31644
|
-
const rows = db.prepare(`SELECT id, time_created FROM message WHERE session_id = ? AND id IN (${placeholders})`).all(sessionId, ...messageIds);
|
|
31842
|
+
const rows = db.prepare(`SELECT id, time_created FROM message WHERE +session_id = ? AND id IN (${placeholders})`).all(sessionId, ...messageIds);
|
|
31645
31843
|
for (const row of rows) {
|
|
31646
31844
|
if (typeof row.id === "string" && typeof row.time_created === "number") {
|
|
31647
31845
|
result.set(row.id, row.time_created);
|
|
@@ -31978,6 +32176,7 @@ __export(exports_read_session_chunk, {
|
|
|
31978
32176
|
prepareRawSessionOrdinals: () => prepareRawSessionOrdinals,
|
|
31979
32177
|
primeInMemoryTailRawMessageCache: () => primeInMemoryTailRawMessageCache,
|
|
31980
32178
|
primeTailRawMessageCache: () => primeTailRawMessageCache,
|
|
32179
|
+
readRawSessionBoundaryEndpoints: () => readRawSessionBoundaryEndpoints,
|
|
31981
32180
|
readRawSessionMessageById: () => readRawSessionMessageById,
|
|
31982
32181
|
readRawSessionMessageIdOrdinals: () => readRawSessionMessageIdOrdinals,
|
|
31983
32182
|
readRawSessionMessageIdOrdinalsForRange: () => readRawSessionMessageIdOrdinalsForRange,
|
|
@@ -32390,6 +32589,13 @@ function readRawSessionMessagePartsById(sessionId, messageId, onQuery) {
|
|
|
32390
32589
|
return null;
|
|
32391
32590
|
return withReadOnlySessionDb((db) => readRawSessionMessagePartsByIdFromDb(db, sessionId, messageId, onQuery));
|
|
32392
32591
|
}
|
|
32592
|
+
function readRawSessionBoundaryEndpoints(sessionId, ids, blockIds) {
|
|
32593
|
+
if (sessionProviders.get(sessionId)?.provider)
|
|
32594
|
+
return null;
|
|
32595
|
+
if (!openCodeDbExists())
|
|
32596
|
+
return new Map(ids.map((id) => [id, null]));
|
|
32597
|
+
return withReadOnlySessionDb((db) => readRawSessionBoundaryEndpointsFromDb(db, sessionId, ids, blockIds));
|
|
32598
|
+
}
|
|
32393
32599
|
function hasRawSessionMessageById(sessionId, messageId) {
|
|
32394
32600
|
const provider = sessionProviders.get(sessionId)?.provider;
|
|
32395
32601
|
if (provider?.hasMessageById)
|