@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.
Files changed (40) hide show
  1. package/dist/auto-search-worker.js +3 -3
  2. package/dist/embedding-backfill-b71dvfs8.js +20 -0
  3. package/dist/embedding-worker.js +4 -4
  4. package/dist/historian-calibration-extension.js +30 -5
  5. package/dist/{index-dkx0b1kt.js → index-041ex0cj.js} +7 -2
  6. package/dist/{index-fp37he9a.js → index-0vrkp1jq.js} +1 -1
  7. package/dist/{index-6pgq5ns2.js → index-1evzceyw.js} +2 -2
  8. package/dist/{index-419bndtm.js → index-21v1kfs7.js} +2 -2
  9. package/dist/{index-wrm4nbj7.js → index-290tzwp1.js} +1 -1
  10. package/dist/{index-72bdc1bd.js → index-3mgf68pn.js} +4 -4
  11. package/dist/{index-hrf13mn3.js → index-3rea6zd9.js} +16 -8
  12. package/dist/{index-0am8a7k1.js → index-904reqtg.js} +4 -4
  13. package/dist/{index-fm3ksh5e.js → index-bejpsj10.js} +4 -4
  14. package/dist/{index-98z1c1r0.js → index-ehybv5nr.js} +109 -35
  15. package/dist/{index-pvm4pd5d.js → index-hwqb3s7f.js} +811 -76
  16. package/dist/{index-5hd7h4rr.js → index-kjd1fj55.js} +39 -31
  17. package/dist/{index-8y5knskr.js → index-mcgehvgw.js} +93 -9
  18. package/dist/{index-603mt6nm.js → index-r024r8da.js} +1 -1
  19. package/dist/{index-9xb0axhc.js → index-r56xgha8.js} +1 -1
  20. package/dist/{index-r7xg4hvw.js → index-t7xfqtg6.js} +8 -8
  21. package/dist/{index-rt5jgzp1.js → index-vakawmbc.js} +160 -25
  22. package/dist/{index-f956htf3.js → index-x3dcnxh0.js} +6 -2
  23. package/dist/{index-544c0e0x.js → index-yarjn32j.js} +7 -7
  24. package/dist/{index-5jp1h0bz.js → index-yzcjxnt2.js} +48 -11
  25. package/dist/{index-zrr5t5a7.js → index-zh1jw8qp.js} +106 -1
  26. package/dist/index.js +1149 -680
  27. package/dist/{logger-v3dsxdnm.js → logger-j6tecd1h.js} +1 -1
  28. package/dist/{message-index-bounded-t7vvty76.js → message-index-bounded-qz5dz2se.js} +11 -11
  29. package/dist/{message-time-backfill-4ndf7hrq.js → message-time-backfill-05ppypkz.js} +2 -2
  30. package/dist/migration-worker.js +8 -8
  31. package/dist/{project-embedding-registry-jy2hmq28.js → project-embedding-registry-ky7wrkr1.js} +9 -9
  32. package/dist/raw-ordinal-warmup-worker.js +4 -4
  33. package/dist/{read-session-chunk-47pjn7fz.js → read-session-chunk-24sd89tf.js} +8 -6
  34. package/dist/{read-session-raw-yn8nawav.js → read-session-raw-npx3920c.js} +5 -3
  35. package/dist/{safe-notification-target-3c1ns931.js → safe-notification-target-vn9kpmv4.js} +2 -2
  36. package/dist/{search-42szfhwp.js → search-jbh28nwy.js} +17 -17
  37. package/dist/{storage-tags-jym5z6yk.js → storage-tags-kjnsqbdb.js} +6 -6
  38. package/dist/subagent-entry.js +20 -19
  39. package/package.json +1 -1
  40. package/dist/embedding-backfill-bnnytehy.js +0 -20
@@ -1,12 +1,12 @@
1
1
  import {
2
2
  estimateTokens
3
- } from "./index-9xb0axhc.js";
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-f956htf3.js";
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-8y5knskr.js";
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
- function getInertWhitespaceAssistantTags2(db, sessionId, messageIds) {
2262
- if (messageIds) {
2263
- let statement = inertWhitespaceStatements.get(db);
2264
- if (!statement) {
2265
- statement = db.prepare(`SELECT tag_number AS tagNumber, entry_fingerprint AS entryFingerprint
2266
- FROM json_each(?) AS owners CROSS JOIN tags
2267
- WHERE tags.session_id = ? AND tags.type = 'message' AND tags.status = 'compacted'
2268
- AND entry_fingerprint >= ? || owners.value || ':p'
2269
- AND entry_fingerprint < ? || owners.value || ':q'
2270
- ORDER BY CAST(owners.key AS INTEGER), entry_fingerprint, tags.id`);
2271
- inertWhitespaceStatements.set(db, statement);
2272
- }
2273
- const rows = statement.all(JSON.stringify([...new Set(messageIds)]), sessionId, WHITESPACE_ASSISTANT_INERT_FINGERPRINT_PREFIX, WHITESPACE_ASSISTANT_INERT_FINGERPRINT_PREFIX);
2274
- return rows.map((row) => ({
2275
- tagNumber: row.tagNumber,
2276
- contentId: row.entryFingerprint.slice(WHITESPACE_ASSISTANT_INERT_FINGERPRINT_PREFIX.length)
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 status IN ('active', 'dropped') 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, getInertWhitespaceAssistantTags2, 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 };
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-f956htf3.js";
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 ('${TAG_IDENTITY_REVISION_PREFIX}' || ${session}, '1')
423
- ON CONFLICT(key) DO UPDATE SET value = CAST(CAST(value AS INTEGER) + 1 AS TEXT)`;
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 = CAST(CAST(value AS INTEGER) + 1 AS TEXT);
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("DELETE FROM schema_migrations_meta WHERE key = ? AND NOT EXISTS (SELECT 1 FROM tags WHERE session_id = ?)");
439
- for (const sessionId of sessionIds)
440
- statement.run(tagIdentityRevisionKey(sessionId), sessionId);
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 };
@@ -4,7 +4,7 @@ import {
4
4
  } from "./index-3cgbv47m.js";
5
5
  import {
6
6
  logSlowWriteTransaction
7
- } from "./index-fp37he9a.js";
7
+ } from "./index-0vrkp1jq.js";
8
8
 
9
9
  // ../plugin/src/features/magic-context/message-fts-rowid-map.ts
10
10
  import { createHash } from "node:crypto";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  log2
3
- } from "./index-f956htf3.js";
3
+ } from "./index-x3dcnxh0.js";
4
4
 
5
5
  // ../plugin/src/hooks/magic-context/read-session-formatting.ts
6
6
  import { existsSync, readFileSync, realpathSync, statSync } from "node:fs";
@@ -5,7 +5,7 @@ import {
5
5
  importPluginModule,
6
6
  writeForwardedLogLine2,
7
7
  log2
8
- } from "./index-f956htf3.js";
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-603mt6nm.js";
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-72bdc1bd.js";
37
+ } from "./index-3mgf68pn.js";
38
38
  import {
39
39
  closeQuietly,
40
40
  ensureColumn,
41
41
  installV95PerfSchema,
42
42
  installTagIdentityRevisionTrigger
43
- } from "./index-8y5knskr.js";
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-dkx0b1kt.js";
53
+ } from "./index-041ex0cj.js";
54
54
  import {
55
55
  logSlowWriteTransaction
56
- } from "./index-fp37he9a.js";
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-47pjn7fz.js"));
1987
- const { startMessageTimeBackfill } = await importPluginModule(() => import("./message-time-backfill-4ndf7hrq.js"));
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-f956htf3.js";
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
- const parameters = [sessionId];
316
- if (after)
317
- parameters.push(after.timeCreated, after.timeCreated, after.timeCreated, after.id);
318
- parameters.push(pageSize);
319
- if (!after)
320
- parameters.push(Math.max(0, Math.floor(afterOrdinal)));
321
- return db.prepare(`SELECT id, data, time_created, time_updated
322
- FROM message
323
- WHERE session_id = ?
324
- ${after ? "AND time_created >= ? AND (time_created > ? OR (time_created = ? AND id > ?))" : ""}
325
- AND NOT (
326
- CASE WHEN json_valid(data) = 1
327
- THEN COALESCE(json_extract(data, '$.summary'), 0)
328
- ELSE 0 END = 1
329
- AND CASE WHEN json_valid(data) = 1
330
- THEN COALESCE(json_extract(data, '$.finish'), '')
331
- ELSE '' END = 'stop'
332
- )
333
- ORDER BY time_created ASC, id ASC
334
- LIMIT ? ${after ? "" : "OFFSET ?"}`).all(...parameters).filter(isRawMessageRow).map((row, index) => ({
335
- ...row,
336
- ordinal: Math.floor(afterOrdinal) + index + 1
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
- rotateLogFile(logFile, currentSize);
556
- currentSize = 0;
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-f956htf3.js";
7
+ } from "./index-x3dcnxh0.js";
8
8
  import {
9
9
  isUserHomeDirectory,
10
10
  setBootQuietPeriodForTests
11
- } from "./index-dkx0b1kt.js";
11
+ } from "./index-041ex0cj.js";
12
12
  import {
13
13
  estimateTokens
14
- } from "./index-9xb0axhc.js";
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-419bndtm.js";
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-fm3ksh5e.js";
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-6pgq5ns2.js";
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-fp37he9a.js";
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;