@cortexkit/opencode-magic-context 0.49.25 → 0.49.26

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 (89) hide show
  1. package/dist/auto-search-worker.js +4 -4
  2. package/dist/chunk-embedding-write-worker.js +4 -4
  3. package/dist/{compartment-chunk-embedding-eypvn607.js → compartment-chunk-embedding-96ec8a7h.js} +3 -3
  4. package/dist/{conflict-warning-hook-a27bhggg.js → conflict-warning-hook-dv8fdc2w.js} +4 -4
  5. package/dist/{context-keb00be8.js → context-pjqa24nd.js} +17 -17
  6. package/dist/{embedding-backfill-vddgmem3.js → embedding-backfill-a91rvdf9.js} +5 -5
  7. package/dist/hooks/magic-context/caveman-cleanup.d.ts +14 -0
  8. package/dist/hooks/magic-context/caveman-cleanup.d.ts.map +1 -1
  9. package/dist/hooks/magic-context/compartment-runner-incremental.d.ts +11 -0
  10. package/dist/hooks/magic-context/compartment-runner-incremental.d.ts.map +1 -1
  11. package/dist/hooks/magic-context/foreign-text-parts.d.ts +47 -0
  12. package/dist/hooks/magic-context/foreign-text-parts.d.ts.map +1 -0
  13. package/dist/hooks/magic-context/hook.d.ts.map +1 -1
  14. package/dist/hooks/magic-context/read-session-chunk.d.ts +21 -0
  15. package/dist/hooks/magic-context/read-session-chunk.d.ts.map +1 -1
  16. package/dist/hooks/magic-context/read-session-raw.d.ts +20 -0
  17. package/dist/hooks/magic-context/read-session-raw.d.ts.map +1 -1
  18. package/dist/hooks/magic-context/tag-messages.d.ts +15 -0
  19. package/dist/hooks/magic-context/tag-messages.d.ts.map +1 -1
  20. package/dist/hooks/magic-context/transform.d.ts +7 -0
  21. package/dist/hooks/magic-context/transform.d.ts.map +1 -1
  22. package/dist/{index-2haxh8h3.js → index-064v90e8.js} +1 -1
  23. package/dist/{index-awcftgmx.js → index-40ma8m0c.js} +3 -3
  24. package/dist/{index-y6xpzjzr.js → index-56tfs78r.js} +37 -27
  25. package/dist/{index-q7ywt6xt.js → index-6g1zq1sk.js} +2 -2
  26. package/dist/{index-3d5wnkq7.js → index-6tmf87w0.js} +1 -1
  27. package/dist/{index-yrrsp47d.js → index-dn2ke3b9.js} +17 -3
  28. package/dist/{index-t6j3qxnd.js → index-e5b61ty6.js} +1 -1
  29. package/dist/{index-0s8454t2.js → index-hjnrp6vy.js} +61 -15
  30. package/dist/{index-c9zrgcnt.js → index-j43m40zd.js} +1 -1
  31. package/dist/{index-7tdtpqrg.js → index-m8va3mma.js} +39 -6
  32. package/dist/{index-z928hmnp.js → index-mphkpyap.js} +1 -1
  33. package/dist/{index-n18sch77.js → index-r3bteyev.js} +5 -5
  34. package/dist/{index-axjgxeww.js → index-rp78nqvr.js} +166 -10
  35. package/dist/{index-z05n7702.js → index-sgchhbvy.js} +1 -1
  36. package/dist/{index-zzrzjnx5.js → index-va2g2q57.js} +3 -3
  37. package/dist/{index-jcr6pe7z.js → index-w55zp7kf.js} +1 -1
  38. package/dist/{index-szf8r0ba.js → index-xbbgcwd2.js} +1 -1
  39. package/dist/{index-ebsvmc5s.js → index-xyx2ge2y.js} +4 -4
  40. package/dist/{index-bhyksfyy.js → index-zn2n24yr.js} +3 -3
  41. package/dist/index.js +30 -28
  42. package/dist/{message-fts-rowid-map-9e1getgs.js → message-fts-rowid-map-4ksatb6f.js} +2 -2
  43. package/dist/{message-index-bounded-vaeqhp9w.js → message-index-bounded-whh5wv4a.js} +6 -6
  44. package/dist/{message-index-3g966xn7.js → message-index-ywx53y30.js} +6 -6
  45. package/dist/migration-worker.js +3 -3
  46. package/dist/plugin/hooks/create-session-hooks.d.ts.map +1 -1
  47. package/dist/{project-embedding-registry-rstzmb60.js → project-embedding-registry-t9fx6jwh.js} +4 -4
  48. package/dist/raw-ordinal-warmup-worker.js +6 -6
  49. package/dist/{read-session-chunk-z5gnc0zb.js → read-session-chunk-mqmkgdx0.js} +5 -3
  50. package/dist/{read-session-raw-s4amywnh.js → read-session-raw-dy2xxafq.js} +3 -1
  51. package/dist/{recomp-orchestrator-qwqeskhq.js → recomp-orchestrator-qwcz86r1.js} +13 -13
  52. package/dist/{search-archive-mfabzyn2.js → search-archive-8md3twv2.js} +4 -4
  53. package/dist/{search-84zfqeky.js → search-y2t97tbb.js} +10 -10
  54. package/dist/{send-session-notification-ygj4mja0.js → send-session-notification-kzazs7fy.js} +3 -3
  55. package/dist/tools/ctx-reduce/tools.d.ts.map +1 -1
  56. package/dist/{transform-postprocess-phase-hr1ntmjj.js → transform-postprocess-phase-ppm1tfa7.js} +13 -13
  57. package/dist/v2/auto-search-worker.js +4 -4
  58. package/dist/v2/chunk-embedding-write-worker.js +4 -4
  59. package/dist/v2/{compartment-chunk-embedding-tk6g4q80.js → compartment-chunk-embedding-5rmrn09z.js} +3 -3
  60. package/dist/v2/{context-y7wfvdve.js → context-10pj3bwd.js} +176 -27
  61. package/dist/v2/{embedding-backfill-w5qp7t28.js → embedding-backfill-r9mzt2eg.js} +5 -5
  62. package/dist/v2/{message-fts-rowid-map-pqk3a55v.js → message-fts-rowid-map-2s3ta05x.js} +2 -2
  63. package/dist/v2/{message-index-bounded-te303atj.js → message-index-bounded-f4269d3a.js} +5 -5
  64. package/dist/v2/{message-index-fz6b4jeh.js → message-index-v6g8mgn7.js} +5 -5
  65. package/dist/v2/migration-worker.js +3 -3
  66. package/dist/v2/{project-embedding-registry-e7zftfvj.js → project-embedding-registry-tgtmart7.js} +4 -4
  67. package/dist/v2/raw-ordinal-warmup-worker.js +6 -6
  68. package/dist/v2/{read-session-chunk-knvkq1hf.js → read-session-chunk-ym5zvexn.js} +4 -2
  69. package/dist/v2/{read-session-raw-ppjxnqk4.js → read-session-raw-484g8kf2.js} +3 -1
  70. package/dist/v2/{recomp-orchestrator-e8a4jpvr.js → recomp-orchestrator-b44s2snm.js} +10 -10
  71. package/dist/v2/{search-hav4dggf.js → search-75tf953m.js} +9 -9
  72. package/dist/v2/{search-archive-vrwgxv6z.js → search-archive-pmf2c1kb.js} +3 -3
  73. package/dist/v2/{send-session-notification-f8scq6ae.js → send-session-notification-gd21f5rq.js} +1 -1
  74. package/dist/v2/{server-e75vag9d.js → server-317f3x9y.js} +2 -2
  75. package/dist/v2/{server-wxrdher8.js → server-4frtg2z1.js} +1 -1
  76. package/dist/v2/{server-pw21ypwb.js → server-7dpnt0ys.js} +1 -1
  77. package/dist/v2/{server-7weh65vd.js → server-9zh78t8y.js} +59 -13
  78. package/dist/v2/{server-swvhxhxz.js → server-erk2bvdf.js} +39 -6
  79. package/dist/v2/{server-q5z0gag0.js → server-hnmm8yzq.js} +1 -1
  80. package/dist/v2/{server-5brp2rfn.js → server-jcsw05aa.js} +16 -2
  81. package/dist/v2/{server-6a8pxpxg.js → server-k46ec388.js} +3 -3
  82. package/dist/v2/{server-9xbbaekh.js → server-nmwhe524.js} +1 -1
  83. package/dist/v2/{server-tfawsj08.js → server-vjer2jdn.js} +5 -5
  84. package/dist/v2/{server-m6yyn961.js → server-w7x9wgm0.js} +2 -2
  85. package/dist/v2/{server-8j2e7t31.js → server-wj8h2q21.js} +1 -1
  86. package/dist/v2/server.js +2 -2
  87. package/dist/v2/{wrapup-orchestrator-ycs8y6n4.js → wrapup-orchestrator-gwww44st.js} +10 -10
  88. package/dist/{wrapup-orchestrator-f642w8n3.js → wrapup-orchestrator-a9r8r4sk.js} +14 -14
  89. package/package.json +1 -1
@@ -286,7 +286,7 @@ import {
286
286
  startCompartmentAgent,
287
287
  setRecompStarting2,
288
288
  setRecompTerminal2
289
- } from "./server-7weh65vd.js";
289
+ } from "./server-9zh78t8y.js";
290
290
  import {
291
291
  resolveHistorianModel2
292
292
  } from "./server-5kym00ag.js";
@@ -311,7 +311,7 @@ import {
311
311
  openDatabaseAsync,
312
312
  isDatabasePersisted,
313
313
  getDatabasePersistenceError
314
- } from "./server-e75vag9d.js";
314
+ } from "./server-317f3x9y.js";
315
315
  import {
316
316
  pruneMissingProjectIdentities,
317
317
  setHomeProjectPermission,
@@ -361,7 +361,7 @@ import {
361
361
  clearIndexedMessages2,
362
362
  indexMessagesAfterOrdinal2,
363
363
  sweepOrphanedOpenCodeMessageIndexesCooperatively2
364
- } from "./server-6a8pxpxg.js";
364
+ } from "./server-k46ec388.js";
365
365
  import"./server-51779zs2.js";
366
366
  import {
367
367
  inRootAsyncContext2,
@@ -387,7 +387,7 @@ import {
387
387
  buildInMemoryTailRawMessages2,
388
388
  RawOrdinalsNotReady2,
389
389
  runSessionWarmupWorker
390
- } from "./server-swvhxhxz.js";
390
+ } from "./server-erk2bvdf.js";
391
391
  import {
392
392
  resolveOpenCodeDbPath,
393
393
  assertOpenCodeStoreGeneration,
@@ -716,14 +716,14 @@ import {
716
716
  readRawSessionMessageById2,
717
717
  readSessionChunk2,
718
718
  readRawSessionSeedTail2
719
- } from "./server-5brp2rfn.js";
719
+ } from "./server-jcsw05aa.js";
720
720
  import {
721
721
  BoundedSessionMap,
722
722
  recordToolDefinitionSet,
723
723
  getCurrentToolSetHash,
724
724
  getMeasuredToolDefinitionTokens
725
725
  } from "./server-7d6m1p2b.js";
726
- import"./server-wxrdher8.js";
726
+ import"./server-4frtg2z1.js";
727
727
  import {
728
728
  SubcClient,
729
729
  connectionFileExists,
@@ -734,7 +734,7 @@ import {
734
734
  } from "./server-ab1g0wn9.js";
735
735
  import {
736
736
  deleteChunkEmbedBackoffForSession2
737
- } from "./server-pw21ypwb.js";
737
+ } from "./server-7dpnt0ys.js";
738
738
  import {
739
739
  embedPauseBySession,
740
740
  embedRunStateBySession,
@@ -764,7 +764,7 @@ import {
764
764
  embedSessionCompartmentChunks2,
765
765
  getEmbeddingCoverageStatus2,
766
766
  getAutoEmbeddingSessionCoverage2
767
- } from "./server-q5z0gag0.js";
767
+ } from "./server-hnmm8yzq.js";
768
768
  import {
769
769
  V2_MEMORY_CATEGORIES,
770
770
  CATEGORY_PRIORITY
@@ -823,7 +823,7 @@ import {
823
823
  readGitFileChangeTimesSince,
824
824
  verificationFileExists,
825
825
  normalizeVerificationFiles
826
- } from "./server-9xbbaekh.js";
826
+ } from "./server-nmwhe524.js";
827
827
  import {
828
828
  deriveTriggerBudget2,
829
829
  deriveHistorianChunkTokens2,
@@ -857,7 +857,7 @@ import {
857
857
  } from "./server-vr4szghm.js";
858
858
  import {
859
859
  cosineSimilarity
860
- } from "./server-8j2e7t31.js";
860
+ } from "./server-wj8h2q21.js";
861
861
  import {
862
862
  computeCueContentHash,
863
863
  hasMuralCueColumns,
@@ -914,14 +914,14 @@ import {
914
914
  resolveMemoriesByIdsForSearch2,
915
915
  unifiedSearch2,
916
916
  formatSearchResults2
917
- } from "./server-tfawsj08.js";
917
+ } from "./server-vjer2jdn.js";
918
918
  import {
919
919
  resolvePromptContext2
920
920
  } from "./server-fmsr7v69.js";
921
921
  import"./server-kaqs6h31.js";
922
922
  import {
923
923
  renderSearchArchiveOffThread2
924
- } from "./server-m6yyn961.js";
924
+ } from "./server-w7x9wgm0.js";
925
925
  import {
926
926
  compareSemverCore
927
927
  } from "./server-84w6rvvf.js";
@@ -8289,6 +8289,23 @@ function applyCompressedText(target, tagNumber, originalText, depth, state) {
8289
8289
  target.setContent(`${target.textPrefix ?? ""}${compressed}`, { keepReasoning: true });
8290
8290
  return target.getContent ? target.getContent() !== before : true;
8291
8291
  }
8292
+ function cavemanReplayText(tagNumber, originalText, depth, state, textPrefix) {
8293
+ const level = DEPTH_TO_LEVEL[depth];
8294
+ if (!level)
8295
+ return null;
8296
+ let served = null;
8297
+ if (!state.currentRules || state.legacyReasoningTags.has(tagNumber)) {
8298
+ const legacy = cavemanCompress(originalText, level, "ascii-v1");
8299
+ if (legacy.length > 0)
8300
+ served = { text: legacy, dropsReasoning: true };
8301
+ if (!state.currentRules)
8302
+ return served;
8303
+ }
8304
+ const compressed = cavemanCompress(originalText, level, CURRENT_CAVEMAN_RULES, wordRulesFor(state));
8305
+ if (compressed.length === 0)
8306
+ return served;
8307
+ return { text: `${textPrefix}${compressed}`, dropsReasoning: served?.dropsReasoning ?? false };
8308
+ }
8292
8309
  function replayCavemanCompression(sessionId, db, targets, tags) {
8293
8310
  const compressedTags = tags.filter((tag) => tag.type === "message" && tag.status === "active" && tag.cavemanDepth > 0 && targets.has(tag.tagNumber));
8294
8311
  if (compressedTags.length === 0)
@@ -8997,6 +9014,42 @@ function stripStructuralNoise(messages) {
8997
9014
  }
8998
9015
  return strippedParts;
8999
9016
  }
9017
+ // src/hooks/magic-context/foreign-text-parts.ts
9018
+ function hasStringId(part) {
9019
+ return part !== null && typeof part === "object" && typeof part.id === "string";
9020
+ }
9021
+ function lastStoredPartIndex(parts) {
9022
+ for (let index = parts.length - 1;index >= 0; index -= 1) {
9023
+ if (hasStringId(parts[index]))
9024
+ return index;
9025
+ }
9026
+ return -1;
9027
+ }
9028
+ var legacyForeignTextTags = new Map;
9029
+ function rememberLegacyForeignTextTags(sessionId, tagNumbers) {
9030
+ for (const tagNumber of tagNumbers) {
9031
+ let known = legacyForeignTextTags.get(sessionId);
9032
+ if (!known) {
9033
+ known = new Set;
9034
+ legacyForeignTextTags.set(sessionId, known);
9035
+ }
9036
+ known.add(tagNumber);
9037
+ }
9038
+ }
9039
+ function isLegacyForeignTextTag(sessionId, tagNumber) {
9040
+ return legacyForeignTextTags.get(sessionId)?.has(tagNumber) ?? false;
9041
+ }
9042
+ var pendingOpForTagStatements = new WeakMap;
9043
+ function discardPendingOpForForeignTag(db, sessionId, tagNumber) {
9044
+ let statement = pendingOpForTagStatements.get(db);
9045
+ if (!statement) {
9046
+ statement = db.prepare("SELECT 1 AS present FROM pending_ops WHERE session_id = ? AND tag_id = ? LIMIT 1");
9047
+ pendingOpForTagStatements.set(db, statement);
9048
+ }
9049
+ if (statement.get(sessionId, tagNumber))
9050
+ removePendingOp(db, sessionId, tagNumber);
9051
+ }
9052
+
9000
9053
  // src/hooks/magic-context/tag-id-fallback.ts
9001
9054
  function parseScopedContentId(contentId) {
9002
9055
  const match = /^(.*):(p|file)(\d+)$/.exec(contentId);
@@ -9188,6 +9241,62 @@ function deriveToolOwnerMessageId(sessionId, db, message, obs, unpaired, cache,
9188
9241
  }
9189
9242
  return obs.callId;
9190
9243
  }
9244
+ function serveLegacyForeignText(legacy, current, options) {
9245
+ const prefixed = options.skipPrefixInjection ? current : prependTag(legacy.tagNumber, current);
9246
+ if (options.pastPartialEnd)
9247
+ return { text: prefixed, dropsReasoning: false };
9248
+ if (legacy.status === "dropped") {
9249
+ return { text: buildReplacementContent(legacy.tagNumber), dropsReasoning: true };
9250
+ }
9251
+ const unchanged = legacy.savedText !== undefined && stripTagPrefix(current) === legacy.savedText;
9252
+ if (legacy.status === "active" && legacy.cavemanDepth > 0 && options.caveman && unchanged && legacy.savedText) {
9253
+ const replayed = cavemanReplayText(legacy.tagNumber, legacy.savedText, legacy.cavemanDepth, options.caveman, options.skipPrefixInjection ? "" : prependTag(legacy.tagNumber, ""));
9254
+ if (replayed)
9255
+ return replayed;
9256
+ }
9257
+ return { text: prefixed, dropsReasoning: false };
9258
+ }
9259
+ function findLegacyForeignTextTags(sessionId, messages, assignments, db, isForeignTextPart, inertWhitespaceTagNumbers) {
9260
+ const legacy = new Map;
9261
+ for (const message of messages) {
9262
+ const messageId = typeof message.info.id === "string" ? message.info.id : null;
9263
+ if (!messageId)
9264
+ continue;
9265
+ const firstTrailingIndex = lastStoredPartIndex(message.parts) + 1;
9266
+ for (let partIndex = firstTrailingIndex;partIndex < message.parts.length; partIndex += 1) {
9267
+ const part = message.parts[partIndex];
9268
+ if (!isTextPart(part) || !isForeignTextPart(part))
9269
+ continue;
9270
+ const contentId = `${messageId}:p${partIndex}`;
9271
+ const tagNumber = assignments.get(contentId) ?? getTagNumberByMessageId2(db, sessionId, contentId);
9272
+ if (tagNumber === null || tagNumber === undefined)
9273
+ continue;
9274
+ if (inertWhitespaceTagNumbers.has(tagNumber))
9275
+ continue;
9276
+ const tag = getTagById2(db, sessionId, tagNumber);
9277
+ if (tag?.type !== "message")
9278
+ continue;
9279
+ legacy.set(part, {
9280
+ tagNumber,
9281
+ status: tag.status,
9282
+ cavemanDepth: tag.cavemanDepth
9283
+ });
9284
+ }
9285
+ }
9286
+ if (legacy.size > 0) {
9287
+ const tagNumbers = [...legacy.values()].map((entry) => entry.tagNumber);
9288
+ rememberLegacyForeignTextTags(sessionId, tagNumbers);
9289
+ for (const tagNumber of tagNumbers)
9290
+ discardPendingOpForForeignTag(db, sessionId, tagNumber);
9291
+ const compressed = [...legacy.values()].filter((entry) => entry.status === "active" && entry.cavemanDepth > 0);
9292
+ if (compressed.length > 0) {
9293
+ const saved = getSourceContents(db, sessionId, compressed.map((entry) => entry.tagNumber));
9294
+ for (const entry of compressed)
9295
+ entry.savedText = saved.get(entry.tagNumber);
9296
+ }
9297
+ }
9298
+ return legacy;
9299
+ }
9191
9300
  function collectRelevantSourceTagIds(messages, assignments) {
9192
9301
  const currentMessageIds = new Set(messages.flatMap((message) => typeof message.info.id === "string" ? [message.info.id] : []));
9193
9302
  const relevantTagIds = new Set;
@@ -9310,8 +9419,17 @@ function tagMessages(sessionId, messages, tagger, db, options = {}) {
9310
9419
  logTransformTiming(sessionId, "tag.inertWhitespace", tInertWhitespace);
9311
9420
  const assignments = tagger.getAssignments(sessionId);
9312
9421
  const resolver = createExistingTagResolver(sessionId, tagger, db);
9422
+ const foreignTextParts = options.foreignTextParts;
9423
+ const isForeignTextPart = (part) => foreignTextParts !== undefined && part !== null && typeof part === "object" && foreignTextParts.has(part);
9424
+ const legacyForeignTags = findLegacyForeignTextTags(sessionId, messages, assignments, db, isForeignTextPart, inertWhitespaceTagNumbers);
9425
+ const legacyForeignTagNumbers = new Set([...legacyForeignTags.values()].map((legacy) => legacy.tagNumber));
9426
+ let cavemanState;
9427
+ const legacyCavemanState = () => {
9428
+ cavemanState ??= options.replaysCaveman ? getCavemanReplayState(db, sessionId) : null;
9429
+ return cavemanState;
9430
+ };
9313
9431
  const tGetSourceContents = performance.now();
9314
- const sourceContents = getSourceContents(db, sessionId, collectRelevantSourceTagIds(messages, assignments));
9432
+ const sourceContents = getSourceContents(db, sessionId, collectRelevantSourceTagIds(messages, assignments).filter((tagNumber) => !legacyForeignTagNumbers.has(tagNumber)));
9315
9433
  logTransformTiming(sessionId, "tag.getSourceContents", tGetSourceContents);
9316
9434
  let partialEndsCache;
9317
9435
  const loadPartialEnds = () => {
@@ -9405,6 +9523,28 @@ function tagMessages(sessionId, messages, tagger, db, options = {}) {
9405
9523
  }
9406
9524
  ownerByPartKey.set(part, { ownerMsgId, callId: toolObservation.callId });
9407
9525
  }
9526
+ if (messageId && isTextPart(part) && isForeignTextPart(part)) {
9527
+ const legacy = legacyForeignTags.get(part);
9528
+ if (legacy) {
9529
+ const partialEnd = getPartialEnds().get(messageId);
9530
+ const served = serveLegacyForeignText(legacy, part.text, {
9531
+ skipPrefixInjection,
9532
+ pastPartialEnd: partialEnd !== undefined && partIndex > partialEnd,
9533
+ caveman: legacy.cavemanDepth > 0 ? legacyCavemanState() : null
9534
+ });
9535
+ part.text = served.text;
9536
+ if (served.dropsReasoning) {
9537
+ for (const thinkingPart of messageThinkingParts) {
9538
+ if (protectedThinkingParts.has(thinkingPart))
9539
+ continue;
9540
+ if (partialEnd !== undefined && message.parts.indexOf(thinkingPart) > partialEnd)
9541
+ continue;
9542
+ neutralizeDroppedReasoningPart(thinkingPart);
9543
+ }
9544
+ }
9545
+ }
9546
+ continue;
9547
+ }
9408
9548
  if (messageId && isTextPart(part)) {
9409
9549
  const textPart = part;
9410
9550
  const thinkingParts = messageThinkingParts;
@@ -9446,7 +9586,7 @@ function tagMessages(sessionId, messages, tagger, db, options = {}) {
9446
9586
  }
9447
9587
  } else {
9448
9588
  existingTagId = resolver.resolve(messageId, "message", contentId, textOrdinal, {
9449
- accept: (tagNumber) => !inertWhitespaceTagNumbers.has(tagNumber)
9589
+ accept: (tagNumber) => !inertWhitespaceTagNumbers.has(tagNumber) && !legacyForeignTagNumbers.has(tagNumber)
9450
9590
  });
9451
9591
  if (existingTagId === undefined && inertWhitespaceTagNumbers.has(tagger.getTag(sessionId, contentId, "message") ?? -1)) {
9452
9592
  tagger.unbindTag(sessionId, contentId);
@@ -19158,6 +19298,7 @@ function createTransform(deps) {
19158
19298
  const startTime = performance.now();
19159
19299
  const historianRun = deps.resolveHistorianRun?.();
19160
19300
  const messages = output.messages;
19301
+ const foreignTextParts = deps.transformMode === "rust" ? undefined : deps.collectForeignTextParts?.(messages);
19161
19302
  const entryOrderForThinkingFit = messages.slice();
19162
19303
  const coveredHostInstructions = takeCoveredInstructionRows(messages);
19163
19304
  const passOutcome = createPassOutcome();
@@ -19822,6 +19963,7 @@ Historian previously failed ${historianFailureState.failureCount} time(s), so Ma
19822
19963
  }
19823
19964
  logTransformTiming(sessionId, "injectTemporalMarkers", tTemporal);
19824
19965
  }
19966
+ const replaysCaveman = !reducedMode && !compactionOff && deps.cavemanTextCompression?.enabled === true;
19825
19967
  let taggingSucceeded = false;
19826
19968
  let recoveryBatch = null;
19827
19969
  let recoveryNormalized = false;
@@ -19834,7 +19976,9 @@ Historian previously failed ${historianFailureState.failureCount} time(s), so Ma
19834
19976
  skipPrefixInjection: !ctxReduceCallable,
19835
19977
  servedMessages: messages,
19836
19978
  normalizeRestoredAssistantText: deps.normalizeRestoredAssistantText,
19837
- refreshSourceContents: deps.refreshSourceContents?.(sessionId)
19979
+ refreshSourceContents: deps.refreshSourceContents?.(sessionId),
19980
+ foreignTextParts,
19981
+ replaysCaveman
19838
19982
  });
19839
19983
  for (const [number, target] of tagged.targets)
19840
19984
  targets.set(number, target);
@@ -19860,7 +20004,9 @@ Historian previously failed ${historianFailureState.failureCount} time(s), so Ma
19860
20004
  scopedToolSweep,
19861
20005
  servedMessages: messages,
19862
20006
  normalizeRestoredAssistantText: deps.normalizeRestoredAssistantText,
19863
- refreshSourceContents: deps.refreshSourceContents?.(sessionId)
20007
+ refreshSourceContents: deps.refreshSourceContents?.(sessionId),
20008
+ foreignTextParts,
20009
+ replaysCaveman
19864
20010
  });
19865
20011
  targets = result.targets;
19866
20012
  if (thinkingRecovery.restore)
@@ -19916,7 +20062,7 @@ Historian previously failed ${historianFailureState.failureCount} time(s), so Ma
19916
20062
  const t3 = performance.now();
19917
20063
  const strippedStructuralNoise = canUseEmptySentinels && !compactionOff ? stripStructuralNoise(messages) : 0;
19918
20064
  logTransformTiming(sessionId, "stripStructuralNoise", t3, `strippedParts=${strippedStructuralNoise}`);
19919
- if (!reducedMode && !compactionOff && deps.cavemanTextCompression?.enabled) {
20065
+ if (replaysCaveman) {
19920
20066
  const tCavemanReplay = performance.now();
19921
20067
  const replayedCaveman = replayCavemanCompression(sessionId, db, targets, activeTags);
19922
20068
  if (replayedCaveman > 0) {
@@ -23825,8 +23971,8 @@ function registerRpcHandlers(rpcServer, args) {
23825
23971
  const db = readDatabase();
23826
23972
  if (!db)
23827
23973
  return { ok: false, error: "db unavailable" };
23828
- const { runManagedRecomp } = await importPluginModule(() => import("./recomp-orchestrator-e8a4jpvr.js"));
23829
- const { sendIgnoredMessage } = await importPluginModule(() => import("./send-session-notification-f8scq6ae.js"));
23974
+ const { runManagedRecomp } = await importPluginModule(() => import("./recomp-orchestrator-b44s2snm.js"));
23975
+ const { sendIgnoredMessage } = await importPluginModule(() => import("./send-session-notification-gd21f5rq.js"));
23830
23976
  log2(`[rpc] recomp requested for session ${sessionId}`);
23831
23977
  if (!args.client && !args.hiddenCompletionExecutor) {
23832
23978
  return {
@@ -23910,7 +24056,7 @@ function registerRpcHandlers(rpcServer, args) {
23910
24056
  const db = readDatabase();
23911
24057
  if (!db)
23912
24058
  return { ok: false, error: "db unavailable" };
23913
- const { runManagedWrapup } = await importPluginModule(() => import("./wrapup-orchestrator-ycs8y6n4.js"));
24059
+ const { runManagedWrapup } = await importPluginModule(() => import("./wrapup-orchestrator-gwww44st.js"));
23914
24060
  const model = liveSessionState.liveModelBySession.get(sessionId);
23915
24061
  const contextLimit = model ? resolveContextLimit(model.providerID, model.modelID, { db, sessionID: sessionId }) : 128000;
23916
24062
  const ctx = {
@@ -52200,23 +52346,26 @@ function createCtxReduceTool(deps) {
52200
52346
  dropIds = dropIds.filter((id) => !ctxReduceSelfStampIds.has(id));
52201
52347
  const tagStatusMap = new Map(allTags.map((tag) => [tag.tagNumber, tag.status]));
52202
52348
  const inertWhitespaceTagNumbers = new Set(getInertWhitespaceAssistantTagsByNumbers2(deps.db, sessionId, dropIds).map((tag) => tag.tagNumber));
52203
- const inertDropIds = [
52204
- ...new Set(dropIds.filter((id) => inertWhitespaceTagNumbers.has(id)))
52205
- ];
52206
- const inertNote = inertDropIds.length > 0 ? `Skipped: ${inertDropIds.map((id) => `§${id}§ is provider framing, nothing to reclaim`).join("; ")}.` : "";
52349
+ const foreignTextTagNumbers = new Set(dropIds.filter((id) => isLegacyForeignTextTag(sessionId, id)));
52350
+ const skippedTagNumbers = new Set([
52351
+ ...inertWhitespaceTagNumbers,
52352
+ ...foreignTextTagNumbers
52353
+ ]);
52354
+ const skippedDropIds = [...new Set(dropIds.filter((id) => skippedTagNumbers.has(id)))];
52355
+ const inertNote = skippedDropIds.length > 0 ? `Skipped: ${skippedDropIds.map((id) => inertWhitespaceTagNumbers.has(id) ? `§${id}§ is provider framing, nothing to reclaim` : `§${id}§ is another plugin's text, nothing to reclaim`).join("; ")}.` : "";
52207
52356
  const pendingOps = getPendingOps(deps.db, sessionId);
52208
52357
  const pendingMap = new Map(pendingOps.map((op) => [op.tagId, op.operation]));
52209
52358
  const conflicts = [];
52210
52359
  for (const id of dropIds) {
52211
- if (tagStatusMap.get(id) === "compacted" && !inertWhitespaceTagNumbers.has(id)) {
52360
+ if (tagStatusMap.get(id) === "compacted" && !skippedTagNumbers.has(id)) {
52212
52361
  conflicts.push(`§${id}§ is from before compaction`);
52213
52362
  }
52214
52363
  }
52215
52364
  if (conflicts.length > 0) {
52216
52365
  return `Error: Conflicting operations — ${conflicts.join("; ")}.`;
52217
52366
  }
52218
- const stampedCount = new Set(dropIds.filter((id) => !inertWhitespaceTagNumbers.has(id))).size;
52219
- dropIds = dropIds.filter((id) => !inertWhitespaceTagNumbers.has(id) && tagStatusMap.get(id) !== "dropped" && pendingMap.get(id) !== "drop");
52367
+ const stampedCount = new Set(dropIds.filter((id) => !skippedTagNumbers.has(id))).size;
52368
+ dropIds = dropIds.filter((id) => !skippedTagNumbers.has(id) && tagStatusMap.get(id) !== "dropped" && pendingMap.get(id) !== "drop");
52220
52369
  if (dropIds.length === 0) {
52221
52370
  const reply = formatCtxReduceReply(stampedCount, ctxReduceSelfStampCount);
52222
52371
  if (reply)
@@ -1,17 +1,17 @@
1
1
  import {
2
2
  ensureMemoryEmbeddings2
3
- } from "./server-8j2e7t31.js";
4
- import"./server-q5z0gag0.js";
3
+ } from "./server-wj8h2q21.js";
4
+ import"./server-hnmm8yzq.js";
5
5
  import"./server-4dhv7mqz.js";
6
6
  import"./server-qt1qqasc.js";
7
7
  import"./server-vr4szghm.js";
8
8
  import"./server-24g8r2d0.js";
9
9
  import"./server-bsgd4dk1.js";
10
- import"./server-pw21ypwb.js";
10
+ import"./server-7dpnt0ys.js";
11
11
  import"./server-ab1g0wn9.js";
12
12
  import"./server-qjvk4a9t.js";
13
- import"./server-wxrdher8.js";
14
- import"./server-swvhxhxz.js";
13
+ import"./server-4frtg2z1.js";
14
+ import"./server-erk2bvdf.js";
15
15
  import"./server-51779zs2.js";
16
16
  import"./server-gyy4k6mf.js";
17
17
  import"./server-3mz2qh5a.js";
@@ -6,8 +6,8 @@ import {
6
6
  messageFtsOrdinalRangeIsMapped2,
7
7
  getMessageFtsRowidMapBackfillProgress2,
8
8
  deleteUnmappedMessageFtsRows2
9
- } from "./server-wxrdher8.js";
10
- import"./server-swvhxhxz.js";
9
+ } from "./server-4frtg2z1.js";
10
+ import"./server-erk2bvdf.js";
11
11
  import"./server-51779zs2.js";
12
12
  import"./server-gyy4k6mf.js";
13
13
  import"./server-gzy5w8ya.js";
@@ -13,7 +13,7 @@ import {
13
13
  markMessageIndexDirty2,
14
14
  getIndexableContent2,
15
15
  indexSingleMessage2
16
- } from "./server-6a8pxpxg.js";
16
+ } from "./server-k46ec388.js";
17
17
  import"./server-1zx87sdm.js";
18
18
  import"./server-fa7vtp40.js";
19
19
  import"./server-3mz2qh5a.js";
@@ -21,14 +21,14 @@ import"./server-rqebawx1.js";
21
21
  import"./server-24g8r2d0.js";
22
22
  import"./server-51779zs2.js";
23
23
  import"./server-cpjk5jd2.js";
24
- import"./server-swvhxhxz.js";
24
+ import"./server-erk2bvdf.js";
25
25
  import"./server-2ra6pwf3.js";
26
26
  import"./server-3vhxy2k5.js";
27
- import"./server-5brp2rfn.js";
27
+ import"./server-jcsw05aa.js";
28
28
  import"./server-7d6m1p2b.js";
29
- import"./server-wxrdher8.js";
29
+ import"./server-4frtg2z1.js";
30
30
  import"./server-ab1g0wn9.js";
31
- import"./server-pw21ypwb.js";
31
+ import"./server-7dpnt0ys.js";
32
32
  import"./server-gyy4k6mf.js";
33
33
 
34
34
  // src/features/magic-context/message-index-bounded.ts
@@ -17,20 +17,20 @@ import {
17
17
  indexMessagesAfterOrdinal2,
18
18
  indexSourcesAfterOrdinal2,
19
19
  sweepOrphanedOpenCodeMessageIndexesCooperatively2
20
- } from "./server-6a8pxpxg.js";
21
- import"./server-5brp2rfn.js";
20
+ } from "./server-k46ec388.js";
21
+ import"./server-jcsw05aa.js";
22
22
  import"./server-fa7vtp40.js";
23
23
  import"./server-1zx87sdm.js";
24
24
  import"./server-3vhxy2k5.js";
25
25
  import"./server-24g8r2d0.js";
26
- import"./server-pw21ypwb.js";
26
+ import"./server-7dpnt0ys.js";
27
27
  import"./server-ab1g0wn9.js";
28
- import"./server-wxrdher8.js";
28
+ import"./server-4frtg2z1.js";
29
29
  import"./server-k3t06fxr.js";
30
30
  import"./server-7d6m1p2b.js";
31
31
  import"./server-rqebawx1.js";
32
32
  import"./server-2ra6pwf3.js";
33
- import"./server-swvhxhxz.js";
33
+ import"./server-erk2bvdf.js";
34
34
  import"./server-51779zs2.js";
35
35
  import"./server-gyy4k6mf.js";
36
36
  import"./server-3mz2qh5a.js";
@@ -18,11 +18,11 @@ import"./server-fb3zxn06.js";
18
18
  import {
19
19
  setSqlitePragmaConfig,
20
20
  initializeDatabase
21
- } from "./server-e75vag9d.js";
21
+ } from "./server-317f3x9y.js";
22
22
  import"./server-51779zs2.js";
23
23
  import"./server-cpjk5jd2.js";
24
- import"./server-swvhxhxz.js";
25
- import"./server-wxrdher8.js";
24
+ import"./server-erk2bvdf.js";
25
+ import"./server-4frtg2z1.js";
26
26
  import"./server-3mz2qh5a.js";
27
27
  import"./server-7d6m1p2b.js";
28
28
  import {
@@ -35,17 +35,17 @@ import {
35
35
  sweepAllRegisteredProjects2,
36
36
  _setTestProviderFactoryForProject2,
37
37
  _resetProjectEmbeddingRegistryForTests2
38
- } from "./server-q5z0gag0.js";
38
+ } from "./server-hnmm8yzq.js";
39
39
  import"./server-4dhv7mqz.js";
40
40
  import"./server-qt1qqasc.js";
41
41
  import"./server-vr4szghm.js";
42
42
  import"./server-24g8r2d0.js";
43
43
  import"./server-bsgd4dk1.js";
44
- import"./server-pw21ypwb.js";
44
+ import"./server-7dpnt0ys.js";
45
45
  import"./server-ab1g0wn9.js";
46
46
  import"./server-qjvk4a9t.js";
47
- import"./server-wxrdher8.js";
48
- import"./server-swvhxhxz.js";
47
+ import"./server-4frtg2z1.js";
48
+ import"./server-erk2bvdf.js";
49
49
  import"./server-51779zs2.js";
50
50
  import"./server-gyy4k6mf.js";
51
51
  import"./server-3mz2qh5a.js";
@@ -30,7 +30,7 @@ async function main() {
30
30
  { log }
31
31
  ] = await Promise.all([
32
32
  import("./sqlite-zdgm52sv.js"),
33
- import("./read-session-raw-ppjxnqk4.js"),
33
+ import("./read-session-raw-484g8kf2.js"),
34
34
  import("./harness-e4avh192.js"),
35
35
  import("./logger-p34mjtja.js")
36
36
  ]);
@@ -46,13 +46,13 @@ async function main() {
46
46
  openConnections.add(db);
47
47
  db.exec("PRAGMA busy_timeout = 250");
48
48
  if (input.ftsRowidBackfill) {
49
- const { runMessageFtsRowidMapBackfill } = await import("./message-fts-rowid-map-pqk3a55v.js");
49
+ const { runMessageFtsRowidMapBackfill } = await import("./message-fts-rowid-map-2s3ta05x.js");
50
50
  db.exec("PRAGMA busy_timeout = 0");
51
51
  await runMessageFtsRowidMapBackfill(db);
52
52
  reply = { kind: "fts-rowid-backfill" };
53
53
  } else if (input.searchArchive) {
54
- const { renderSearchArchive } = await import("./search-archive-vrwgxv6z.js");
55
- const { readRawSessionMessageIdOrdinalsForRangeFromDb } = await import("./read-session-raw-ppjxnqk4.js");
54
+ const { renderSearchArchive } = await import("./search-archive-pmf2c1kb.js");
55
+ const { readRawSessionMessageIdOrdinalsForRangeFromDb } = await import("./read-session-raw-484g8kf2.js");
56
56
  const archive = input.searchArchive;
57
57
  let raw;
58
58
  try {
@@ -84,7 +84,7 @@ async function main() {
84
84
  { configureContextDatabasePragmas }
85
85
  ] = await Promise.all([
86
86
  import("./harness-e4avh192.js"),
87
- import("./message-index-fz6b4jeh.js"),
87
+ import("./message-index-v6g8mgn7.js"),
88
88
  import("./sqlite-context-pragmas-mv9jqwjh.js")
89
89
  ]);
90
90
  setHarness(input.harness ?? "opencode");
@@ -104,7 +104,7 @@ async function main() {
104
104
  const { setHarness } = await import("./harness-e4avh192.js");
105
105
  setHarness(input.harness ?? "opencode");
106
106
  const [{ indexMessageInShortChunks }, { configureContextDatabasePragmas }] = await Promise.all([
107
- import("./message-index-bounded-te303atj.js"),
107
+ import("./message-index-bounded-f4269d3a.js"),
108
108
  import("./sqlite-context-pragmas-mv9jqwjh.js")
109
109
  ]);
110
110
  configureContextDatabasePragmas(db);
@@ -25,6 +25,7 @@ import {
25
25
  readRawSessionBoundaryEndpoints2,
26
26
  hasRawSessionMessageById2,
27
27
  readRawSessionMessageOrdinalById2,
28
+ resolveHistorianChunkStart2,
28
29
  compareRawSessionMessageOrder2,
29
30
  readRawSessionMessageById2,
30
31
  getRawSessionMessageCount2,
@@ -35,7 +36,7 @@ import {
35
36
  readSessionChunk2,
36
37
  getRawSessionMessageIdsThrough2,
37
38
  readRawSessionSeedTail2
38
- } from "./server-5brp2rfn.js";
39
+ } from "./server-jcsw05aa.js";
39
40
  import"./server-fa7vtp40.js";
40
41
  import"./server-1zx87sdm.js";
41
42
  import"./server-3vhxy2k5.js";
@@ -43,7 +44,7 @@ import"./server-24g8r2d0.js";
43
44
  import"./server-7d6m1p2b.js";
44
45
  import"./server-rqebawx1.js";
45
46
  import"./server-2ra6pwf3.js";
46
- import"./server-swvhxhxz.js";
47
+ import"./server-erk2bvdf.js";
47
48
  import"./server-51779zs2.js";
48
49
  import"./server-gyy4k6mf.js";
49
50
  import {
@@ -86,6 +87,7 @@ export {
86
87
  readRawSessionMessages2 as readRawSessionMessages,
87
88
  readRawSessionSeedTail2 as readRawSessionSeedTail,
88
89
  readSessionChunk2 as readSessionChunk,
90
+ resolveHistorianChunkStart2 as resolveHistorianChunkStart,
89
91
  resolveHostServedBoundaryId2 as resolveHostServedBoundaryId,
90
92
  setBoundedRawMessageProvider2 as setBoundedRawMessageProvider,
91
93
  setRawMessageProvider2 as setRawMessageProvider,
@@ -19,6 +19,7 @@ import {
19
19
  noteRawSessionSummaryRowWritten2,
20
20
  RawOrdinalsNotReady2,
21
21
  rawOrdinalSummarySeed2,
22
+ dropRawSessionOrdinalCheckpoints2,
22
23
  scanRawSessionSummaryRows2,
23
24
  getRawSessionSummaryEpoch2,
24
25
  installRawSessionSummaryScan2,
@@ -28,7 +29,7 @@ import {
28
29
  hasRawSessionMessageByIdFromDb2,
29
30
  readRawSeedTailFromDb2,
30
31
  readRawSessionBoundaryEndpointsFromDb2
31
- } from "./server-swvhxhxz.js";
32
+ } from "./server-erk2bvdf.js";
32
33
  import"./server-51779zs2.js";
33
34
  import"./server-gzy5w8ya.js";
34
35
  import"./server-6495nmn9.js";
@@ -40,6 +41,7 @@ export {
40
41
  buildInMemoryTailRawMessages2 as buildInMemoryTailRawMessages,
41
42
  countRawSessionMessageOrdinalsFromDb2 as countRawSessionMessageOrdinalsFromDb,
42
43
  countStoredRawSessionMessagesFromDb2 as countStoredRawSessionMessagesFromDb,
44
+ dropRawSessionOrdinalCheckpoints2 as dropRawSessionOrdinalCheckpoints,
43
45
  extractInMemoryMessageViews2 as extractInMemoryMessageViews,
44
46
  forgetRawSessionOrdinalWatermark2 as forgetRawSessionOrdinalWatermark,
45
47
  forgetRawSessionSummaryRows2 as forgetRawSessionSummaryRows,