@cortexkit/pi-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/auto-search-worker.js +3 -3
- package/dist/embedding-backfill-b71dvfs8.js +20 -0
- package/dist/embedding-worker.js +4 -4
- package/dist/historian-calibration-extension.js +30 -5
- package/dist/{index-dkx0b1kt.js → index-041ex0cj.js} +7 -2
- package/dist/{index-fp37he9a.js → index-0vrkp1jq.js} +1 -1
- package/dist/{index-6pgq5ns2.js → index-1evzceyw.js} +2 -2
- package/dist/{index-419bndtm.js → index-21v1kfs7.js} +2 -2
- package/dist/{index-wrm4nbj7.js → index-290tzwp1.js} +1 -1
- package/dist/{index-72bdc1bd.js → index-3mgf68pn.js} +4 -4
- package/dist/{index-hrf13mn3.js → index-3rea6zd9.js} +16 -8
- package/dist/{index-0am8a7k1.js → index-904reqtg.js} +4 -4
- package/dist/{index-fm3ksh5e.js → index-bejpsj10.js} +4 -4
- package/dist/{index-98z1c1r0.js → index-ehybv5nr.js} +109 -35
- package/dist/{index-pvm4pd5d.js → index-hwqb3s7f.js} +811 -76
- package/dist/{index-5hd7h4rr.js → index-kjd1fj55.js} +39 -31
- package/dist/{index-8y5knskr.js → index-mcgehvgw.js} +93 -9
- package/dist/{index-603mt6nm.js → index-r024r8da.js} +1 -1
- package/dist/{index-9xb0axhc.js → index-r56xgha8.js} +1 -1
- package/dist/{index-r7xg4hvw.js → index-t7xfqtg6.js} +8 -8
- package/dist/{index-rt5jgzp1.js → index-vakawmbc.js} +160 -25
- package/dist/{index-f956htf3.js → index-x3dcnxh0.js} +6 -2
- package/dist/{index-544c0e0x.js → index-yarjn32j.js} +7 -7
- package/dist/{index-5jp1h0bz.js → index-yzcjxnt2.js} +48 -11
- package/dist/{index-zrr5t5a7.js → index-zh1jw8qp.js} +106 -1
- package/dist/index.js +1149 -680
- package/dist/{logger-v3dsxdnm.js → logger-j6tecd1h.js} +1 -1
- package/dist/{message-index-bounded-t7vvty76.js → message-index-bounded-qz5dz2se.js} +11 -11
- package/dist/{message-time-backfill-4ndf7hrq.js → message-time-backfill-05ppypkz.js} +2 -2
- package/dist/migration-worker.js +8 -8
- package/dist/{project-embedding-registry-jy2hmq28.js → project-embedding-registry-ky7wrkr1.js} +9 -9
- package/dist/raw-ordinal-warmup-worker.js +4 -4
- package/dist/{read-session-chunk-47pjn7fz.js → read-session-chunk-24sd89tf.js} +8 -6
- package/dist/{read-session-raw-yn8nawav.js → read-session-raw-npx3920c.js} +5 -3
- package/dist/{safe-notification-target-3c1ns931.js → safe-notification-target-vn9kpmv4.js} +2 -2
- package/dist/{search-42szfhwp.js → search-jbh28nwy.js} +17 -17
- package/dist/{storage-tags-jym5z6yk.js → storage-tags-kjnsqbdb.js} +6 -6
- package/dist/subagent-entry.js +20 -19
- package/package.json +1 -1
- package/dist/embedding-backfill-bnnytehy.js +0 -20
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import {
|
|
2
2
|
estimateTokens
|
|
3
|
-
} from "./index-
|
|
3
|
+
} from "./index-r56xgha8.js";
|
|
4
4
|
import {
|
|
5
5
|
getHarness2
|
|
6
6
|
} from "./index-0h2mkab2.js";
|
|
7
7
|
import {
|
|
8
8
|
sessionLog2
|
|
9
|
-
} from "./index-
|
|
9
|
+
} from "./index-x3dcnxh0.js";
|
|
10
10
|
import {
|
|
11
11
|
getTagIdentityWriteGeneration2,
|
|
12
12
|
getSqliteDatabasePath2
|
|
@@ -14,7 +14,7 @@ import {
|
|
|
14
14
|
import {
|
|
15
15
|
tagOrderConstraintIndex,
|
|
16
16
|
tagIdentityRevisionKey
|
|
17
|
-
} from "./index-
|
|
17
|
+
} from "./index-mcgehvgw.js";
|
|
18
18
|
import {
|
|
19
19
|
DEFAULT_PROTECTED_TOOLS,
|
|
20
20
|
normalizeProtectedToolName,
|
|
@@ -2021,6 +2021,15 @@ function readTagIdentityRevision(db, sessionId) {
|
|
|
2021
2021
|
const row = db.prepare("SELECT value FROM schema_migrations_meta WHERE key = ?").get(tagIdentityRevisionKey(sessionId));
|
|
2022
2022
|
return typeof row?.value === "string" ? row.value : null;
|
|
2023
2023
|
}
|
|
2024
|
+
function captureInitialTagOwnerRevision(db, sessionId, cached, appendedRows) {
|
|
2025
|
+
if (cached.identityRevision !== null || appendedRows === 0)
|
|
2026
|
+
return true;
|
|
2027
|
+
const revision = readTagIdentityRevision(db, sessionId);
|
|
2028
|
+
if (revision !== null && !/^[1-9]\d*:0$/.test(revision))
|
|
2029
|
+
return false;
|
|
2030
|
+
cached.identityRevision = revision;
|
|
2031
|
+
return true;
|
|
2032
|
+
}
|
|
2024
2033
|
function appendedSinceForeignCommit(db, sessionId, cached) {
|
|
2025
2034
|
tagOwnerShapeChecks += 1;
|
|
2026
2035
|
const rows = db.prepare(TAG_OWNER_APPENDED_WITH_SHAPE_SQL).all(cached.globalLastRowId, sessionId, tagIdentityRevisionKey(sessionId), sessionId);
|
|
@@ -2061,6 +2070,11 @@ function readTagOwnerSummary(db, sessionId, proseRatio, extraRatios = []) {
|
|
|
2061
2070
|
rows.push(...page);
|
|
2062
2071
|
}
|
|
2063
2072
|
}
|
|
2073
|
+
if (!captureInitialTagOwnerRevision(db, sessionId, cached, rows.length)) {
|
|
2074
|
+
if (offThreadOnly)
|
|
2075
|
+
throw new TagOwnerSummaryNotReady;
|
|
2076
|
+
rows = null;
|
|
2077
|
+
}
|
|
2064
2078
|
} else {
|
|
2065
2079
|
if (offThreadOnly)
|
|
2066
2080
|
db.exec("BEGIN");
|
|
@@ -2193,7 +2207,7 @@ function getTagNumberByMessageIdStatement(db) {
|
|
|
2193
2207
|
function getAssignableTagNumberByMessageIdStatement(db) {
|
|
2194
2208
|
let stmt = getAssignableTagNumberByMessageIdStatements.get(db);
|
|
2195
2209
|
if (!stmt) {
|
|
2196
|
-
stmt = db.prepare(`SELECT tag_number FROM tags
|
|
2210
|
+
stmt = db.prepare(`SELECT tag_number FROM tags INDEXED BY idx_tags_session_message_id
|
|
2197
2211
|
WHERE session_id = ?
|
|
2198
2212
|
AND message_id = ?
|
|
2199
2213
|
AND NOT (
|
|
@@ -2258,30 +2272,23 @@ function updateTagStatus2(db, sessionId, tagId, status) {
|
|
|
2258
2272
|
getUpdateTagStatusStatement(db).run(status, sessionId, tagId);
|
|
2259
2273
|
}
|
|
2260
2274
|
var inertWhitespaceStatements = new WeakMap;
|
|
2261
|
-
|
|
2262
|
-
|
|
2263
|
-
|
|
2264
|
-
|
|
2265
|
-
|
|
2266
|
-
|
|
2267
|
-
|
|
2268
|
-
|
|
2269
|
-
|
|
2270
|
-
|
|
2271
|
-
|
|
2272
|
-
|
|
2273
|
-
|
|
2274
|
-
|
|
2275
|
-
|
|
2276
|
-
|
|
2277
|
-
|
|
2278
|
-
}
|
|
2279
|
-
const rows = db.prepare(`SELECT tag_number AS tagNumber, entry_fingerprint AS entryFingerprint
|
|
2280
|
-
FROM tags
|
|
2281
|
-
WHERE session_id = ?
|
|
2282
|
-
AND type = 'message'
|
|
2283
|
-
AND status = 'compacted'
|
|
2284
|
-
AND entry_fingerprint LIKE ?`).all(sessionId, `${WHITESPACE_ASSISTANT_INERT_FINGERPRINT_PREFIX}%`);
|
|
2275
|
+
var inertWhitespaceByNumberStatements = new WeakMap;
|
|
2276
|
+
function getInertWhitespaceAssistantTagsByNumbers2(db, sessionId, tagNumbers) {
|
|
2277
|
+
if (tagNumbers.length === 0)
|
|
2278
|
+
return [];
|
|
2279
|
+
let statement = inertWhitespaceByNumberStatements.get(db);
|
|
2280
|
+
if (!statement) {
|
|
2281
|
+
statement = db.prepare(`SELECT tags.tag_number AS tagNumber, tags.entry_fingerprint AS entryFingerprint
|
|
2282
|
+
FROM json_each(?) AS wanted CROSS JOIN tags
|
|
2283
|
+
WHERE tags.session_id = ?
|
|
2284
|
+
AND tags.tag_number = wanted.value
|
|
2285
|
+
AND tags.type = 'message'
|
|
2286
|
+
AND tags.status = 'compacted'
|
|
2287
|
+
AND tags.entry_fingerprint LIKE ?
|
|
2288
|
+
ORDER BY tags.tag_number, tags.id`);
|
|
2289
|
+
inertWhitespaceByNumberStatements.set(db, statement);
|
|
2290
|
+
}
|
|
2291
|
+
const rows = statement.all(JSON.stringify([...new Set(tagNumbers)]), sessionId, `${WHITESPACE_ASSISTANT_INERT_FINGERPRINT_PREFIX}%`);
|
|
2285
2292
|
return rows.flatMap((row) => {
|
|
2286
2293
|
const contentId = row.entryFingerprint.slice(WHITESPACE_ASSISTANT_INERT_FINGERPRINT_PREFIX.length);
|
|
2287
2294
|
return contentId.length > 0 ? [{ tagNumber: row.tagNumber, contentId }] : [];
|
|
@@ -2727,7 +2734,8 @@ function markTagsCompactedByMessageIds2(db, sessionId, messageIds, eligibleTagNu
|
|
|
2727
2734
|
SELECT value AS source_id, lower(value) AS folded_id FROM json_each(?)
|
|
2728
2735
|
)
|
|
2729
2736
|
SELECT id, tag_number, message_id, tool_owner_message_id FROM tags INDEXED BY ${tagOrderConstraintIndex(db)}
|
|
2730
|
-
WHERE session_id = ? AND
|
|
2737
|
+
WHERE session_id = ? ${eligibleTagNumbers ? "AND tag_number IN (SELECT value FROM json_each(?))" : ""}
|
|
2738
|
+
AND status IN ('active', 'dropped') AND (
|
|
2731
2739
|
message_id IN (SELECT source_id FROM ids)
|
|
2732
2740
|
OR tool_owner_message_id IN (SELECT source_id FROM ids)
|
|
2733
2741
|
OR (instr(lower(message_id), ':p') > 0 AND
|
|
@@ -2736,7 +2744,7 @@ function markTagsCompactedByMessageIds2(db, sessionId, messageIds, eligibleTagNu
|
|
|
2736
2744
|
lower(substr(message_id, 1, instr(lower(message_id), ':file') - 1)) IN (SELECT folded_id FROM ids))
|
|
2737
2745
|
OR (? AND instr(message_id, ':') > 0)
|
|
2738
2746
|
OR ?
|
|
2739
|
-
)`).all(JSON.stringify(Array.from(ids)), sessionId, Array.from(ids).some((id) => id.includes(":")) ? 1 : 0, nulPrefixes.size > 0 ? 1 : 0);
|
|
2747
|
+
)`).all(JSON.stringify(Array.from(ids)), sessionId, ...eligibleTagNumbers ? [JSON.stringify([...eligibleTagNumbers])] : [], Array.from(ids).some((id) => id.includes(":")) ? 1 : 0, nulPrefixes.size > 0 ? 1 : 0);
|
|
2740
2748
|
const candidates = rows.filter((row) => (eligibleTagNumbers === undefined || eligibleTagNumbers.has(row.tag_number)) && matches(row.message_id, row.tool_owner_message_id));
|
|
2741
2749
|
if (candidates.length === 0)
|
|
2742
2750
|
return 0;
|
|
@@ -3095,4 +3103,4 @@ function deleteToolTagsByOwner(db, sessionId, ownerMsgId) {
|
|
|
3095
3103
|
return getDeleteToolTagsByOwnerStatement(db).all(sessionId, ownerMsgId).length;
|
|
3096
3104
|
}
|
|
3097
3105
|
|
|
3098
|
-
export { UNKNOWN_FIT_RATIO, resolveDecisionCalibration, hasMeasuredDecisionCalibration, providerMass, localBudget, calibrationForModelKey, historyLocalBudget, adoptedProtectedToolsPolicy, protectedToolTagNumbers, protectedToolTokenCount, stripWellFormedLeadingTagPrefix, stripPersistedAssistantText, byteSize, stripTagPrefix, peelLeadingMcTagNotation, prependTag, isRecord, TEXT_TAG_IDENTITY_MARKER, contentTagOwnerMessageId, estimateImageTokensFromDataUrl, providerVisiblePart, providerVisibleMessage, TODO_STATUSES, TODO_PRIORITIES, TITLE_DONE_STATUSES, normalizeTodoStateJson, buildSyntheticTodoPart, stripChannel1ReminderSpans, compareMeasuredTailPrefix, formatTailHygienePrefixMismatch, freezeTailHygieneMeasurement, effectiveTailHygiene, CHANNEL1_SENTINEL, CHANNEL1_FLOOR_TOKENS, decideChannel1, evaluateChannel2, reclaimableToolOutputCount, buildChannel2Reminder, buildChannel1Reminder, planEmergencyDrop, measureEmergencyTag, queuePendingOp, queuePendingDropForUnchangedTag, getPendingOps, getPendingOpsCount, clearPendingOps, removePendingOp, updateTagByteSize2, getRecentTagOwnerMessageIds2, getActiveTagTokenAggregate2, AGE_RECLAIM_MIN_TOKENS2, getOldestActiveUnprotectedToolTags2, getActiveToolTagsForAgeReclaim2, getTriggerTagTokenUpperBound2, getActiveTagTokenTotalsByMessage2, updateTagInputByteSize2, updateTagTokenCount2, getPersistedToolTagAccounting2, getAllStatusTagTokenTotalsFlat2, getReasoningTokenEstimatesByMessage2, tryGetReasoningTokenEstimatesByMessage2, getMaxTagNumberByOwnerMessage2, scanTagOwnerSummary2, scanTagOwnerDelta2, updateTagInputTokenCount2, tagTokenCountIsNull2, backfillTagTokenCounts2, insertTag2, updateTagStatus2,
|
|
3106
|
+
export { UNKNOWN_FIT_RATIO, resolveDecisionCalibration, hasMeasuredDecisionCalibration, providerMass, localBudget, calibrationForModelKey, historyLocalBudget, adoptedProtectedToolsPolicy, protectedToolTagNumbers, protectedToolTokenCount, stripWellFormedLeadingTagPrefix, stripPersistedAssistantText, byteSize, stripTagPrefix, peelLeadingMcTagNotation, prependTag, isRecord, TEXT_TAG_IDENTITY_MARKER, contentTagOwnerMessageId, estimateImageTokensFromDataUrl, providerVisiblePart, providerVisibleMessage, TODO_STATUSES, TODO_PRIORITIES, TITLE_DONE_STATUSES, normalizeTodoStateJson, buildSyntheticTodoPart, stripChannel1ReminderSpans, compareMeasuredTailPrefix, formatTailHygienePrefixMismatch, freezeTailHygieneMeasurement, effectiveTailHygiene, CHANNEL1_SENTINEL, CHANNEL1_FLOOR_TOKENS, decideChannel1, evaluateChannel2, reclaimableToolOutputCount, buildChannel2Reminder, buildChannel1Reminder, planEmergencyDrop, measureEmergencyTag, queuePendingOp, queuePendingDropForUnchangedTag, getPendingOps, getPendingOpsCount, clearPendingOps, removePendingOp, updateTagByteSize2, getRecentTagOwnerMessageIds2, getActiveTagTokenAggregate2, AGE_RECLAIM_MIN_TOKENS2, getOldestActiveUnprotectedToolTags2, getActiveToolTagsForAgeReclaim2, getTriggerTagTokenUpperBound2, getActiveTagTokenTotalsByMessage2, updateTagInputByteSize2, updateTagTokenCount2, getPersistedToolTagAccounting2, getAllStatusTagTokenTotalsFlat2, getReasoningTokenEstimatesByMessage2, tryGetReasoningTokenEstimatesByMessage2, getMaxTagNumberByOwnerMessage2, scanTagOwnerSummary2, scanTagOwnerDelta2, updateTagInputTokenCount2, tagTokenCountIsNull2, backfillTagTokenCounts2, insertTag2, updateTagStatus2, getInertWhitespaceAssistantTagsByNumbers2, updateTagDropMode2, updateCavemanDepth2, updateTagMessageId2, hasPiFallbackMessageTags2, findAdoptableFallbackTags2, adoptFallbackTagMessageId2, foldShrunkPartTags2, hasPiFallbackToolOwnerTags2, findPiFallbackToolOwnerTags2, PiTagIdentityConflictError2, getPiMessageTagCandidates2, findPiTagIdentityConflict2, adoptPiFallbackToolOwnerTag2, adoptPiFallbackMessageTag2, markTagsCompactedByMessageIds2, deleteTagsByMessageId2, getMaxTagNumberBySession2, getTagNumberByMessageId2, getAssignableTagNumberByMessageId2, getMinMessageTagNumberForRawId2, deriveTagLoadFloor2, TAG_SELECT_COLUMNS2, getTagsBySession2, getActiveTagsBySession2, getTagsForPendingOperations2, getTagsByNumbers2, getNewestToolTagNumbers2, getDroppedTagsByNumbers2, getMaxDroppedTagNumber2, getTagById2, getTopNBySize2, getToolTagNumberByOwner2, getNullOwnerToolTag2, adoptNullOwnerToolTag2, getCandidateToolOwners2, pickNearestPriorOwner2 };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
sessionLog2
|
|
3
|
-
} from "./index-
|
|
3
|
+
} from "./index-x3dcnxh0.js";
|
|
4
4
|
|
|
5
5
|
// ../plugin/src/shared/stable-json.ts
|
|
6
6
|
function stableStringify(value, seen = new WeakSet) {
|
|
@@ -415,12 +415,42 @@ function tagOrderConstraintIndex(db) {
|
|
|
415
415
|
|
|
416
416
|
// ../plugin/src/features/magic-context/storage-tag-identity-revision.ts
|
|
417
417
|
var TAG_IDENTITY_REVISION_PREFIX = "tag_identity_revision:";
|
|
418
|
+
var TAG_REVISION_PREFIX = "tag_revision:";
|
|
419
|
+
var TAG_TOMBSTONE_OWNER_PREFIX = "tag_revision_owner:";
|
|
420
|
+
var TAG_REVISION_INCARNATION_KEY = "tag_revision_incarnation";
|
|
421
|
+
var tagRevisionIncarnationSql = (value) => `CASE WHEN INSTR(${value}, ':') > 0 THEN SUBSTR(${value}, 1, INSTR(${value}, ':') - 1) ELSE '0' END`;
|
|
422
|
+
var tagRevisionCountSql = (value) => `CAST(CASE WHEN INSTR(${value}, ':') > 0 THEN SUBSTR(${value}, INSTR(${value}, ':') + 1) ELSE ${value} END AS INTEGER)`;
|
|
423
|
+
var ADVANCE = (delta = "1") => `CASE
|
|
424
|
+
WHEN ${tagRevisionCountSql("value")} <= 9223372036854775807 - ${delta}
|
|
425
|
+
THEN (${tagRevisionIncarnationSql("value")}) || ':' || CAST(${tagRevisionCountSql("value")} + ${delta} AS TEXT)
|
|
426
|
+
ELSE NULL END`;
|
|
427
|
+
function tagTombstoneOwnerRange(sessionId) {
|
|
428
|
+
const stem = `${TAG_TOMBSTONE_OWNER_PREFIX}${JSON.stringify(sessionId)}`;
|
|
429
|
+
return [`${stem}:`, `${stem};`];
|
|
430
|
+
}
|
|
431
|
+
function tagTombstoneOwnerKey(sessionId, harness) {
|
|
432
|
+
return `${tagTombstoneOwnerRange(sessionId)[0]}${harness}`;
|
|
433
|
+
}
|
|
434
|
+
function tagRevisionKey(sessionId) {
|
|
435
|
+
return `${TAG_REVISION_PREFIX}${sessionId}`;
|
|
436
|
+
}
|
|
418
437
|
function tagIdentityRevisionKey(sessionId) {
|
|
419
438
|
return `${TAG_IDENTITY_REVISION_PREFIX}${sessionId}`;
|
|
420
439
|
}
|
|
421
|
-
var BUMP = (session) => `INSERT INTO schema_migrations_meta (key, value)
|
|
422
|
-
VALUES ('${
|
|
423
|
-
ON CONFLICT(key) DO UPDATE SET value =
|
|
440
|
+
var BUMP = (session, prefix = TAG_IDENTITY_REVISION_PREFIX) => `INSERT INTO schema_migrations_meta (key, value)
|
|
441
|
+
VALUES ('${prefix}' || ${session}, '1')
|
|
442
|
+
ON CONFLICT(key) DO UPDATE SET value = ${ADVANCE()}`;
|
|
443
|
+
var TAG_INSERT_CONFLICT_ROWS = `SELECT id, session_id, tag_number FROM tags WHERE id = NEW.id
|
|
444
|
+
UNION SELECT id, session_id, tag_number FROM tags WHERE session_id = NEW.session_id AND tag_number = NEW.tag_number
|
|
445
|
+
UNION SELECT id, session_id, tag_number FROM tags
|
|
446
|
+
WHERE NEW.type = 'tool' AND NEW.tool_owner_message_id IS NOT NULL
|
|
447
|
+
AND type = 'tool' AND tool_owner_message_id IS NOT NULL
|
|
448
|
+
AND session_id = NEW.session_id AND message_id = NEW.message_id
|
|
449
|
+
AND tool_owner_message_id = NEW.tool_owner_message_id`;
|
|
450
|
+
var BUMP_INSERT_CONFLICTS = (prefix) => `INSERT INTO schema_migrations_meta (key, value)
|
|
451
|
+
SELECT '${prefix}' || session_id, CAST(COUNT(*) AS TEXT)
|
|
452
|
+
FROM (${TAG_INSERT_CONFLICT_ROWS}) GROUP BY session_id
|
|
453
|
+
ON CONFLICT(key) DO UPDATE SET value = ${ADVANCE("CAST(excluded.value AS INTEGER)")}`;
|
|
424
454
|
var TRIGGER_SQL = `CREATE TEMP TRIGGER IF NOT EXISTS mc_tag_identity_revision_au
|
|
425
455
|
AFTER UPDATE OF id, session_id, message_id, tag_number, type, tool_owner_message_id, reasoning_token_count
|
|
426
456
|
ON main.tags
|
|
@@ -429,15 +459,69 @@ var TRIGGER_SQL = `CREATE TEMP TRIGGER IF NOT EXISTS mc_tag_identity_revision_au
|
|
|
429
459
|
INSERT INTO schema_migrations_meta (key, value)
|
|
430
460
|
SELECT '${TAG_IDENTITY_REVISION_PREFIX}' || NEW.session_id, '1'
|
|
431
461
|
WHERE NEW.session_id IS NOT OLD.session_id
|
|
432
|
-
ON CONFLICT(key) DO UPDATE SET value =
|
|
462
|
+
ON CONFLICT(key) DO UPDATE SET value = ${ADVANCE()};
|
|
433
463
|
END`;
|
|
434
464
|
function installTagIdentityRevisionTrigger(db) {
|
|
465
|
+
db.exec(`DROP TRIGGER IF EXISTS temp.mc_tag_identity_revision_au;
|
|
466
|
+
DROP TRIGGER IF EXISTS temp.mc_tag_revision_bi;
|
|
467
|
+
DROP TRIGGER IF EXISTS temp.mc_tag_revision_ai;
|
|
468
|
+
DROP TRIGGER IF EXISTS temp.mc_tag_revision_au;
|
|
469
|
+
DROP TRIGGER IF EXISTS temp.mc_tag_revision_ad;
|
|
470
|
+
DROP TRIGGER IF EXISTS temp.mc_tag_revision_seed_ai;`);
|
|
471
|
+
db.exec(`CREATE TEMP TRIGGER mc_tag_revision_seed_ai AFTER INSERT ON main.schema_migrations_meta
|
|
472
|
+
WHEN INSTR(NEW.value, ':') = 0 AND (
|
|
473
|
+
SUBSTR(NEW.key, 1, ${TAG_REVISION_PREFIX.length}) = '${TAG_REVISION_PREFIX}'
|
|
474
|
+
OR SUBSTR(NEW.key, 1, ${TAG_IDENTITY_REVISION_PREFIX.length}) = '${TAG_IDENTITY_REVISION_PREFIX}')
|
|
475
|
+
BEGIN
|
|
476
|
+
INSERT INTO schema_migrations_meta (key, value) VALUES ('${TAG_REVISION_INCARNATION_KEY}', '1')
|
|
477
|
+
ON CONFLICT(key) DO UPDATE SET value = CAST(CASE
|
|
478
|
+
WHEN CAST(value AS INTEGER) < 9223372036854775807 THEN CAST(value AS INTEGER) + 1
|
|
479
|
+
ELSE NULL END AS TEXT);
|
|
480
|
+
UPDATE schema_migrations_meta SET value =
|
|
481
|
+
(SELECT value FROM schema_migrations_meta WHERE key = '${TAG_REVISION_INCARNATION_KEY}')
|
|
482
|
+
|| ':' || CAST(NEW.value AS TEXT) WHERE key = NEW.key;
|
|
483
|
+
INSERT INTO schema_migrations_meta (key, value)
|
|
484
|
+
SELECT '${TAG_REVISION_INCARNATION_KEY}', '1'
|
|
485
|
+
WHERE SUBSTR(NEW.key, 1, ${TAG_REVISION_PREFIX.length}) = '${TAG_REVISION_PREFIX}'
|
|
486
|
+
AND NOT EXISTS (SELECT 1 FROM schema_migrations_meta
|
|
487
|
+
WHERE key = '${TAG_IDENTITY_REVISION_PREFIX}' || SUBSTR(NEW.key, ${TAG_REVISION_PREFIX.length + 1}))
|
|
488
|
+
ON CONFLICT(key) DO UPDATE SET value = CAST(CASE
|
|
489
|
+
WHEN CAST(value AS INTEGER) < 9223372036854775807 THEN CAST(value AS INTEGER) + 1
|
|
490
|
+
ELSE NULL END AS TEXT);
|
|
491
|
+
INSERT INTO schema_migrations_meta (key, value)
|
|
492
|
+
SELECT '${TAG_IDENTITY_REVISION_PREFIX}' || SUBSTR(NEW.key, ${TAG_REVISION_PREFIX.length + 1}),
|
|
493
|
+
(SELECT value FROM schema_migrations_meta WHERE key = '${TAG_REVISION_INCARNATION_KEY}') || ':0'
|
|
494
|
+
WHERE SUBSTR(NEW.key, 1, ${TAG_REVISION_PREFIX.length}) = '${TAG_REVISION_PREFIX}'
|
|
495
|
+
AND NOT EXISTS (SELECT 1 FROM schema_migrations_meta
|
|
496
|
+
WHERE key = '${TAG_IDENTITY_REVISION_PREFIX}' || SUBSTR(NEW.key, ${TAG_REVISION_PREFIX.length + 1}));
|
|
497
|
+
END;`);
|
|
435
498
|
db.exec(TRIGGER_SQL);
|
|
499
|
+
db.exec(`CREATE TEMP TRIGGER IF NOT EXISTS mc_tag_revision_bi BEFORE INSERT ON main.tags BEGIN
|
|
500
|
+
${BUMP_INSERT_CONFLICTS(TAG_REVISION_PREFIX)};
|
|
501
|
+
${BUMP_INSERT_CONFLICTS(TAG_IDENTITY_REVISION_PREFIX)};
|
|
502
|
+
UPDATE session_meta SET tags_version = tags_version + 1
|
|
503
|
+
WHERE session_id IN (SELECT session_id FROM (${TAG_INSERT_CONFLICT_ROWS}));
|
|
504
|
+
END;`);
|
|
505
|
+
db.exec(`CREATE TEMP TRIGGER IF NOT EXISTS mc_tag_revision_ai AFTER INSERT ON main.tags BEGIN
|
|
506
|
+
${BUMP("NEW.session_id", TAG_REVISION_PREFIX)};
|
|
507
|
+
END;
|
|
508
|
+
CREATE TEMP TRIGGER IF NOT EXISTS mc_tag_revision_au AFTER UPDATE ON main.tags BEGIN
|
|
509
|
+
${BUMP("OLD.session_id", TAG_REVISION_PREFIX)};
|
|
510
|
+
INSERT INTO schema_migrations_meta (key, value)
|
|
511
|
+
SELECT '${TAG_REVISION_PREFIX}' || NEW.session_id, '1'
|
|
512
|
+
WHERE NEW.session_id IS NOT OLD.session_id
|
|
513
|
+
ON CONFLICT(key) DO UPDATE SET value = ${ADVANCE()};
|
|
514
|
+
END;
|
|
515
|
+
CREATE TEMP TRIGGER IF NOT EXISTS mc_tag_revision_ad AFTER DELETE ON main.tags BEGIN
|
|
516
|
+
${BUMP("OLD.session_id", TAG_REVISION_PREFIX)};
|
|
517
|
+
END;`);
|
|
436
518
|
}
|
|
437
519
|
function deleteTagIdentityRevisions(db, sessionIds) {
|
|
438
|
-
const statement = db.prepare(
|
|
439
|
-
|
|
440
|
-
|
|
520
|
+
const statement = db.prepare(`INSERT INTO schema_migrations_meta (key, value) VALUES (?, '1')
|
|
521
|
+
ON CONFLICT(key) DO UPDATE SET value = ${ADVANCE()}`);
|
|
522
|
+
for (const sessionId of sessionIds) {
|
|
523
|
+
statement.run(tagIdentityRevisionKey(sessionId));
|
|
524
|
+
}
|
|
441
525
|
}
|
|
442
526
|
|
|
443
|
-
export { stableStringify, closeQuietly, isKnownAutocommit, getTableColumnNames, ensureColumn, healAllNullColumns, observeTemporalDecisions, freezeTemporalDecisions, installV95PerfSchema, tagOrderConstraintIndex, tagIdentityRevisionKey, installTagIdentityRevisionTrigger, deleteTagIdentityRevisions };
|
|
527
|
+
export { stableStringify, closeQuietly, isKnownAutocommit, getTableColumnNames, ensureColumn, healAllNullColumns, observeTemporalDecisions, freezeTemporalDecisions, installV95PerfSchema, tagOrderConstraintIndex, TAG_TOMBSTONE_OWNER_PREFIX, tagRevisionIncarnationSql, tagRevisionCountSql, tagTombstoneOwnerRange, tagTombstoneOwnerKey, tagRevisionKey, tagIdentityRevisionKey, TAG_INSERT_CONFLICT_ROWS, installTagIdentityRevisionTrigger, deleteTagIdentityRevisions };
|
|
@@ -5,7 +5,7 @@ import {
|
|
|
5
5
|
importPluginModule,
|
|
6
6
|
writeForwardedLogLine2,
|
|
7
7
|
log2
|
|
8
|
-
} from "./index-
|
|
8
|
+
} from "./index-x3dcnxh0.js";
|
|
9
9
|
import {
|
|
10
10
|
harnessOwnsOpenCodeStore2
|
|
11
11
|
} from "./index-0h2mkab2.js";
|
|
@@ -24,7 +24,7 @@ import {
|
|
|
24
24
|
} from "./index-fapenpch.js";
|
|
25
25
|
import {
|
|
26
26
|
startMessageFtsRowidMapBackfill
|
|
27
|
-
} from "./index-
|
|
27
|
+
} from "./index-r024r8da.js";
|
|
28
28
|
import {
|
|
29
29
|
LKG_SLOT_CHUNKS_DDL,
|
|
30
30
|
SESSION_REPLAY_DECISIONS_DDL,
|
|
@@ -34,13 +34,13 @@ import {
|
|
|
34
34
|
hasPendingMigrations,
|
|
35
35
|
getMainThreadMigrationBodyCount,
|
|
36
36
|
runMigrations
|
|
37
|
-
} from "./index-
|
|
37
|
+
} from "./index-3mgf68pn.js";
|
|
38
38
|
import {
|
|
39
39
|
closeQuietly,
|
|
40
40
|
ensureColumn,
|
|
41
41
|
installV95PerfSchema,
|
|
42
42
|
installTagIdentityRevisionTrigger
|
|
43
|
-
} from "./index-
|
|
43
|
+
} from "./index-mcgehvgw.js";
|
|
44
44
|
import {
|
|
45
45
|
resolveOpenCodeDbPath,
|
|
46
46
|
hasV1MessageTables,
|
|
@@ -50,10 +50,10 @@ import {
|
|
|
50
50
|
import {
|
|
51
51
|
bootQuietRemainingMs,
|
|
52
52
|
scheduleAfterBootQuiet
|
|
53
|
-
} from "./index-
|
|
53
|
+
} from "./index-041ex0cj.js";
|
|
54
54
|
import {
|
|
55
55
|
logSlowWriteTransaction
|
|
56
|
-
} from "./index-
|
|
56
|
+
} from "./index-0vrkp1jq.js";
|
|
57
57
|
import {
|
|
58
58
|
shouldEnforcePrivateStoragePermissions,
|
|
59
59
|
ensureStorageDirectorySync,
|
|
@@ -1983,8 +1983,8 @@ function finishDatabaseOpen(db, dbPath, explicitDbPath, latestSupportedVersion)
|
|
|
1983
1983
|
startMessageFtsRowidMapBackfill(db).then(async () => {
|
|
1984
1984
|
if (!readsOpenCodeStore)
|
|
1985
1985
|
return;
|
|
1986
|
-
const { readRawSessionMessagePage, readRawSessionMessages } = await importPluginModule(() => import("./read-session-chunk-
|
|
1987
|
-
const { startMessageTimeBackfill } = await importPluginModule(() => import("./message-time-backfill-
|
|
1986
|
+
const { readRawSessionMessagePage, readRawSessionMessages } = await importPluginModule(() => import("./read-session-chunk-24sd89tf.js"));
|
|
1987
|
+
const { startMessageTimeBackfill } = await importPluginModule(() => import("./message-time-backfill-05ppypkz.js"));
|
|
1988
1988
|
await startMessageTimeBackfill(db, Object.assign(readRawSessionMessages, {
|
|
1989
1989
|
readPage: readRawSessionMessagePage
|
|
1990
1990
|
}));
|
|
@@ -4,7 +4,7 @@ import {
|
|
|
4
4
|
} from "./index-3cgbv47m.js";
|
|
5
5
|
import {
|
|
6
6
|
log2
|
|
7
|
-
} from "./index-
|
|
7
|
+
} from "./index-x3dcnxh0.js";
|
|
8
8
|
|
|
9
9
|
// ../plugin/src/hooks/magic-context/read-session-raw.ts
|
|
10
10
|
import { isMainThread } from "node:worker_threads";
|
|
@@ -312,30 +312,46 @@ function readRawMessagePageRows(db, sessionId, afterOrdinal, limit, finalWaterma
|
|
|
312
312
|
const pageSize = Math.min(Math.max(1, Math.floor(limit)), remaining);
|
|
313
313
|
if (pageSize === 0)
|
|
314
314
|
return [];
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
315
|
+
return withReadSnapshot(db, () => {
|
|
316
|
+
const ordinal = Math.max(0, Math.floor(afterOrdinal));
|
|
317
|
+
const points = currentOrdinalCheckpoints(db, sessionId)?.scan.checkpoints ?? [];
|
|
318
|
+
let low = 0;
|
|
319
|
+
let high = points.length;
|
|
320
|
+
while (low < high) {
|
|
321
|
+
const middle = Math.floor((low + high) / 2);
|
|
322
|
+
if (points[middle].ordinal <= ordinal)
|
|
323
|
+
low = middle + 1;
|
|
324
|
+
else
|
|
325
|
+
high = middle;
|
|
326
|
+
}
|
|
327
|
+
const floor = points[low - 1];
|
|
328
|
+
const useFloor = floor && (!after || compareOrdinalKeys(floor, after) > 0);
|
|
329
|
+
const anchor = useFloor ? floor : after;
|
|
330
|
+
const skip = anchor === after && after ? 0 : ordinal - (floor?.ordinal ?? 0);
|
|
331
|
+
if (skip > ORDINAL_LOOKUP_LIMIT) {
|
|
332
|
+
prewarmRawSessionOrdinalsForDb(db, sessionId);
|
|
333
|
+
throw new RawOrdinalsNotReady;
|
|
334
|
+
}
|
|
335
|
+
const rawLimit = skip + pageSize + ORDINAL_LOOKUP_LIMIT;
|
|
336
|
+
const rows = db.prepare(`SELECT id, data, time_created, time_updated, ${EXCLUDED_ROW_SQL} AS excluded
|
|
337
|
+
FROM message WHERE id IN (
|
|
338
|
+
SELECT id FROM message WHERE session_id = ?
|
|
339
|
+
${anchor ? "AND (time_created, id) > (?, ?)" : ""}
|
|
340
|
+
ORDER BY time_created, id LIMIT ?)
|
|
341
|
+
ORDER BY time_created, id`).all(sessionId, ...anchor ? [anchor.timeCreated, anchor.id] : [], rawLimit);
|
|
342
|
+
rawMessagePageRowsVisited += rows.length;
|
|
343
|
+
const eligible = rows.filter((row) => row.excluded !== 1);
|
|
344
|
+
if (eligible.length <= skip && rows.length === rawLimit) {
|
|
345
|
+
prewarmRawSessionOrdinalsForDb(db, sessionId);
|
|
346
|
+
throw new RawOrdinalsNotReady;
|
|
347
|
+
}
|
|
348
|
+
return eligible.slice(skip, skip + pageSize).filter(isRawMessageRow).map((row, index) => ({
|
|
349
|
+
...row,
|
|
350
|
+
ordinal: ordinal + index + 1
|
|
351
|
+
}));
|
|
352
|
+
});
|
|
338
353
|
}
|
|
354
|
+
var rawMessagePageRowsVisited = 0;
|
|
339
355
|
function assembleRawMessagePage(messageRows, partRows) {
|
|
340
356
|
const partsByMessageId = new Map;
|
|
341
357
|
for (const part of partRows) {
|
|
@@ -1123,5 +1139,124 @@ function readRawSeedTailFromDb2(db, sessionId, boundaryId) {
|
|
|
1123
1139
|
throw new Error("state_sync materialized boundary is missing from raw storage");
|
|
1124
1140
|
return messages;
|
|
1125
1141
|
}
|
|
1142
|
+
var BOUNDARY_ORDINAL_SQL = `
|
|
1143
|
+
SELECT id, ordinal FROM (
|
|
1144
|
+
SELECT id, ROW_NUMBER() OVER (ORDER BY time_created, id) AS ordinal
|
|
1145
|
+
FROM message
|
|
1146
|
+
WHERE session_id = ?
|
|
1147
|
+
AND typeof(id) = 'text' AND typeof(data) = 'text'
|
|
1148
|
+
AND CASE WHEN json_valid(data) THEN NOT (
|
|
1149
|
+
COALESCE(json_type(data, '$.summary'), '') = 'true'
|
|
1150
|
+
AND COALESCE(json_extract(data, '$.finish'), '') = 'stop'
|
|
1151
|
+
) ELSE 1 END
|
|
1152
|
+
)
|
|
1153
|
+
WHERE id IN (SELECT value FROM json_each(?))`;
|
|
1154
|
+
var BOUNDARY_MESSAGE_SQL = `
|
|
1155
|
+
SELECT id, data, time_created FROM message
|
|
1156
|
+
WHERE +session_id = ? AND id IN (SELECT value FROM json_each(?))`;
|
|
1157
|
+
var BOUNDARY_BLOCK_COUNT_SQL = `
|
|
1158
|
+
SELECT message_id AS id, SUM(
|
|
1159
|
+
CASE
|
|
1160
|
+
WHEN NOT json_valid(data) OR json_type(data) <> 'object' THEN 0
|
|
1161
|
+
ELSE CASE (CASE WHEN json_type(data, '$.type') = 'text'
|
|
1162
|
+
THEN json_extract(data, '$.type') ELSE 'unknown' END)
|
|
1163
|
+
WHEN 'text' THEN CASE WHEN json_type(data, '$.ignored') = 'true' THEN 0 ELSE 1 END
|
|
1164
|
+
WHEN 'reasoning' THEN 1
|
|
1165
|
+
WHEN 'thinking' THEN 1
|
|
1166
|
+
WHEN 'redacted_thinking' THEN 1
|
|
1167
|
+
WHEN 'tool' THEN 1 + CASE
|
|
1168
|
+
WHEN json_type(data, '$.state') = 'object'
|
|
1169
|
+
AND json_type(data, '$.state.status') = 'text'
|
|
1170
|
+
AND json_extract(data, '$.state.status') IN ('completed', 'error')
|
|
1171
|
+
THEN 1 ELSE 0 END
|
|
1172
|
+
WHEN 'compaction' THEN 0
|
|
1173
|
+
WHEN 'step-finish' THEN 0
|
|
1174
|
+
WHEN 'snapshot' THEN 0
|
|
1175
|
+
WHEN 'patch' THEN 0
|
|
1176
|
+
WHEN 'agent' THEN 0
|
|
1177
|
+
WHEN 'retry' THEN 0
|
|
1178
|
+
ELSE 1
|
|
1179
|
+
END
|
|
1180
|
+
END) AS blocks
|
|
1181
|
+
FROM part
|
|
1182
|
+
WHERE +session_id = ?
|
|
1183
|
+
AND message_id IN (SELECT value FROM json_each(?))
|
|
1184
|
+
AND typeof(message_id) = 'text' AND typeof(data) = 'text'
|
|
1185
|
+
GROUP BY message_id`;
|
|
1186
|
+
var boundaryEndpointCaches = new WeakMap;
|
|
1187
|
+
var BOUNDARY_ENDPOINT_CACHE_SESSIONS = 16;
|
|
1188
|
+
var boundaryEndpointRowsRead = 0;
|
|
1189
|
+
function readBoundaryEndpointRows(db, sessionId, ids, blockIds, into) {
|
|
1190
|
+
if (ids.length > 0) {
|
|
1191
|
+
boundaryEndpointRowsRead += ids.length;
|
|
1192
|
+
const wanted = JSON.stringify(ids);
|
|
1193
|
+
const ordinals = new Map;
|
|
1194
|
+
for (const row of db.prepare(BOUNDARY_ORDINAL_SQL).all(sessionId, wanted)) {
|
|
1195
|
+
ordinals.set(row.id, row.ordinal);
|
|
1196
|
+
}
|
|
1197
|
+
const rows = db.prepare(BOUNDARY_MESSAGE_SQL).all(sessionId, wanted);
|
|
1198
|
+
for (const id of ids)
|
|
1199
|
+
into.set(id, null);
|
|
1200
|
+
for (const row of rows) {
|
|
1201
|
+
if (!isRawMessageRow(row) || typeof row.time_created !== "number")
|
|
1202
|
+
continue;
|
|
1203
|
+
const info = parseJsonRecord(row.data);
|
|
1204
|
+
if (!info || isRawCompactionSummaryInfo(info))
|
|
1205
|
+
continue;
|
|
1206
|
+
into.set(row.id, {
|
|
1207
|
+
ordinal: ordinals.get(row.id) ?? null,
|
|
1208
|
+
createdAt: row.time_created
|
|
1209
|
+
});
|
|
1210
|
+
}
|
|
1211
|
+
}
|
|
1212
|
+
const servable = blockIds.filter((id) => {
|
|
1213
|
+
const endpoint = into.get(id);
|
|
1214
|
+
return endpoint && endpoint.lastBlockIndex === undefined;
|
|
1215
|
+
});
|
|
1216
|
+
if (servable.length === 0)
|
|
1217
|
+
return;
|
|
1218
|
+
const counts = new Map;
|
|
1219
|
+
for (const row of db.prepare(BOUNDARY_BLOCK_COUNT_SQL).all(sessionId, JSON.stringify(servable))) {
|
|
1220
|
+
counts.set(row.id, row.blocks);
|
|
1221
|
+
}
|
|
1222
|
+
for (const id of servable) {
|
|
1223
|
+
const endpoint = into.get(id);
|
|
1224
|
+
if (!endpoint)
|
|
1225
|
+
continue;
|
|
1226
|
+
const blocks = counts.get(id) ?? 0;
|
|
1227
|
+
into.set(id, { ...endpoint, lastBlockIndex: blocks > 0 ? blocks - 1 : 0 });
|
|
1228
|
+
}
|
|
1229
|
+
}
|
|
1230
|
+
function readRawSessionBoundaryEndpointsFromDb2(db, sessionId, ids, blockIds = []) {
|
|
1231
|
+
const wanted = [...new Set(ids)];
|
|
1232
|
+
const wantedBlocks = [...new Set(blockIds)];
|
|
1233
|
+
let sessions = boundaryEndpointCaches.get(db);
|
|
1234
|
+
if (!sessions) {
|
|
1235
|
+
sessions = new Map;
|
|
1236
|
+
boundaryEndpointCaches.set(db, sessions);
|
|
1237
|
+
}
|
|
1238
|
+
for (let attempt = 1;; attempt += 1) {
|
|
1239
|
+
const before = readStoreStamp(db);
|
|
1240
|
+
const cached = sessions.get(sessionId);
|
|
1241
|
+
const reuse = attempt === 1 && cached && sameStoreStamp(cached.stamp, before);
|
|
1242
|
+
const endpoints = new Map(reuse ? cached.endpoints : []);
|
|
1243
|
+
const missing = wanted.filter((id) => !endpoints.has(id));
|
|
1244
|
+
withReadSnapshot(db, () => readBoundaryEndpointRows(db, sessionId, missing, wantedBlocks, endpoints));
|
|
1245
|
+
const unchanged = before !== null && sameStoreStamp(before, readStoreStamp(db));
|
|
1246
|
+
if (unchanged) {
|
|
1247
|
+
sessions.delete(sessionId);
|
|
1248
|
+
sessions.set(sessionId, { stamp: before, endpoints });
|
|
1249
|
+
while (sessions.size > BOUNDARY_ENDPOINT_CACHE_SESSIONS) {
|
|
1250
|
+
const oldest = sessions.keys().next().value;
|
|
1251
|
+
if (oldest === undefined)
|
|
1252
|
+
break;
|
|
1253
|
+
sessions.delete(oldest);
|
|
1254
|
+
}
|
|
1255
|
+
} else if (reuse) {
|
|
1256
|
+
continue;
|
|
1257
|
+
}
|
|
1258
|
+
return new Map(wanted.map((id) => [id, endpoints.get(id) ?? null]));
|
|
1259
|
+
}
|
|
1260
|
+
}
|
|
1126
1261
|
|
|
1127
|
-
export { runSessionWarmupWorker, prewarmRawSessionOrdinalsForDb, isStrictGapHealingMessage2, readRawSessionMessagesFromDb2, readRawSessionMessagePageFromDb2, RAW_SUMMARY_TEXT_MAX_CHARS2, readRawSessionMessageSummaryPageFromDb2, countRawSessionMessageOrdinalsFromDb2, readRawSessionMessageIdOrdinalsForRangeFromDb2, readRawSessionMessageOrdinalPageFromDb2, countStoredRawSessionMessagesFromDb2, readRawSessionTailFromDb2, buildInMemoryTailRawMessages2, readRawSessionMessagePartsByIdFromDb2, forgetRawSessionOrdinalWatermark2, forgetRawSessionSummaryRows2, noteRawSessionSummaryRowWritten2, rawOrdinalSummarySeed2, scanRawSessionSummaryRows2, getRawSessionSummaryEpoch2, installRawSessionSummaryScan2, isRawSessionSummaryWarm2, readRawSessionMessageOrdinalByIdFromDb2, readRawSessionMessageByIdFromDb2, hasRawSessionMessageByIdFromDb2, readRawSeedTailFromDb2 };
|
|
1262
|
+
export { runSessionWarmupWorker, prewarmRawSessionOrdinalsForDb, isStrictGapHealingMessage2, readRawSessionMessagesFromDb2, readRawSessionMessagePageFromDb2, RAW_SUMMARY_TEXT_MAX_CHARS2, readRawSessionMessageSummaryPageFromDb2, countRawSessionMessageOrdinalsFromDb2, readRawSessionMessageIdOrdinalsForRangeFromDb2, readRawSessionMessageOrdinalPageFromDb2, countStoredRawSessionMessagesFromDb2, readRawSessionTailFromDb2, buildInMemoryTailRawMessages2, readRawSessionMessagePartsByIdFromDb2, forgetRawSessionOrdinalWatermark2, forgetRawSessionSummaryRows2, noteRawSessionSummaryRowWritten2, rawOrdinalSummarySeed2, scanRawSessionSummaryRows2, getRawSessionSummaryEpoch2, installRawSessionSummaryScan2, isRawSessionSummaryWarm2, readRawSessionMessageOrdinalByIdFromDb2, readRawSessionMessageByIdFromDb2, hasRawSessionMessageByIdFromDb2, readRawSeedTailFromDb2, readRawSessionBoundaryEndpointsFromDb2 };
|
|
@@ -552,8 +552,12 @@ function flush() {
|
|
|
552
552
|
let currentSize = getCurrentLogSize(logFile);
|
|
553
553
|
const dataSize = Buffer.byteLength(data);
|
|
554
554
|
if (currentSize > 0 && currentSize + dataSize > MAX_LOG_FILE_BYTES) {
|
|
555
|
-
|
|
556
|
-
currentSize =
|
|
555
|
+
flushesSinceSizeCheck = SIZE_CHECK_INTERVAL_FLUSHES;
|
|
556
|
+
currentSize = getCurrentLogSize(logFile);
|
|
557
|
+
if (currentSize > 0 && currentSize + dataSize > MAX_LOG_FILE_BYTES) {
|
|
558
|
+
rotateLogFile(logFile, currentSize);
|
|
559
|
+
currentSize = 0;
|
|
560
|
+
}
|
|
557
561
|
}
|
|
558
562
|
fs.appendFileSync(logFile, data, { encoding: "utf8", mode: 384 });
|
|
559
563
|
buffer = [];
|
|
@@ -4,20 +4,20 @@ import {
|
|
|
4
4
|
import {
|
|
5
5
|
sanitizeDiagnosticText,
|
|
6
6
|
log2
|
|
7
|
-
} from "./index-
|
|
7
|
+
} from "./index-x3dcnxh0.js";
|
|
8
8
|
import {
|
|
9
9
|
isUserHomeDirectory,
|
|
10
10
|
setBootQuietPeriodForTests
|
|
11
|
-
} from "./index-
|
|
11
|
+
} from "./index-041ex0cj.js";
|
|
12
12
|
import {
|
|
13
13
|
estimateTokens
|
|
14
|
-
} from "./index-
|
|
14
|
+
} from "./index-r56xgha8.js";
|
|
15
15
|
import {
|
|
16
16
|
SYNAPSE_DEFAULT_MODEL,
|
|
17
17
|
isSynapseEmbeddingTruncated,
|
|
18
18
|
getSynapseBatchRequestKey,
|
|
19
19
|
SynapseEmbeddingProvider
|
|
20
|
-
} from "./index-
|
|
20
|
+
} from "./index-21v1kfs7.js";
|
|
21
21
|
import {
|
|
22
22
|
withSqliteBackgroundWriter2,
|
|
23
23
|
withoutSqliteTransformPass2,
|
|
@@ -39,7 +39,7 @@ import {
|
|
|
39
39
|
countSessionCompartmentEmbedCoverage,
|
|
40
40
|
countSessionCompartmentEmbedCoveragePolite,
|
|
41
41
|
countUnembeddedSessionCompartmentsPolite
|
|
42
|
-
} from "./index-
|
|
42
|
+
} from "./index-bejpsj10.js";
|
|
43
43
|
import {
|
|
44
44
|
DEFAULT_LOCAL_EMBEDDING_MODEL,
|
|
45
45
|
embeddingModelsMatch,
|
|
@@ -47,7 +47,7 @@ import {
|
|
|
47
47
|
getEmbeddingProviderIdentity,
|
|
48
48
|
dominantEmbeddingFailure,
|
|
49
49
|
LocalEmbeddingProvider
|
|
50
|
-
} from "./index-
|
|
50
|
+
} from "./index-1evzceyw.js";
|
|
51
51
|
import {
|
|
52
52
|
isEmbeddingHostBusy2
|
|
53
53
|
} from "./index-9p40dgkm.js";
|
|
@@ -58,7 +58,7 @@ import {
|
|
|
58
58
|
} from "./index-yhzhdp3m.js";
|
|
59
59
|
import {
|
|
60
60
|
logSlowWriteTransaction
|
|
61
|
-
} from "./index-
|
|
61
|
+
} from "./index-0vrkp1jq.js";
|
|
62
62
|
|
|
63
63
|
// ../plugin/src/features/magic-context/session-project-storage.ts
|
|
64
64
|
var SESSION_CHUNK_REPAIR_BATCH_SIZE = 100;
|