@cortexkit/opencode-magic-context 0.49.25 → 0.49.27

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 (124) hide show
  1. package/dist/auto-search-worker.js +4 -4
  2. package/dist/chunk-embedding-write-worker.js +7 -7
  3. package/dist/{compartment-chunk-embedding-eypvn607.js → compartment-chunk-embedding-qgp0tbf7.js} +3 -3
  4. package/dist/config/schema/magic-context.d.ts +393 -393
  5. package/dist/{conflict-warning-hook-a27bhggg.js → conflict-warning-hook-tgnw019g.js} +4 -4
  6. package/dist/{context-keb00be8.js → context-t2k97d6v.js} +116 -116
  7. package/dist/{embedding-backfill-vddgmem3.js → embedding-backfill-cwnyr4fj.js} +5 -5
  8. package/dist/features/magic-context/dreamer/verify.d.ts.map +1 -1
  9. package/dist/features/magic-context/message-index-async.d.ts +1 -4
  10. package/dist/features/magic-context/message-index-async.d.ts.map +1 -1
  11. package/dist/features/magic-context/message-index.d.ts +1 -28
  12. package/dist/features/magic-context/message-index.d.ts.map +1 -1
  13. package/dist/features/magic-context/session-retention.fixture.d.ts +4 -0
  14. package/dist/features/magic-context/session-retention.fixture.d.ts.map +1 -0
  15. package/dist/features/magic-context/storage-session-tables.d.ts +5 -12
  16. package/dist/features/magic-context/storage-session-tables.d.ts.map +1 -1
  17. package/dist/hooks/magic-context/caveman-cleanup.d.ts +14 -0
  18. package/dist/hooks/magic-context/caveman-cleanup.d.ts.map +1 -1
  19. package/dist/hooks/magic-context/compartment-runner-incremental.d.ts +11 -0
  20. package/dist/hooks/magic-context/compartment-runner-incremental.d.ts.map +1 -1
  21. package/dist/hooks/magic-context/compartment-trigger.d.ts.map +1 -1
  22. package/dist/hooks/magic-context/foreign-text-parts.d.ts +47 -0
  23. package/dist/hooks/magic-context/foreign-text-parts.d.ts.map +1 -0
  24. package/dist/hooks/magic-context/historian-history-wait.d.ts +10 -0
  25. package/dist/hooks/magic-context/historian-history-wait.d.ts.map +1 -0
  26. package/dist/hooks/magic-context/hook.d.ts.map +1 -1
  27. package/dist/hooks/magic-context/lkg-recovery-fence.d.ts +0 -5
  28. package/dist/hooks/magic-context/lkg-recovery-fence.d.ts.map +1 -1
  29. package/dist/hooks/magic-context/raw-ordinal-warmup.d.ts +0 -10
  30. package/dist/hooks/magic-context/raw-ordinal-warmup.d.ts.map +1 -1
  31. package/dist/hooks/magic-context/read-session-chunk.d.ts +21 -0
  32. package/dist/hooks/magic-context/read-session-chunk.d.ts.map +1 -1
  33. package/dist/hooks/magic-context/read-session-raw.d.ts +20 -0
  34. package/dist/hooks/magic-context/read-session-raw.d.ts.map +1 -1
  35. package/dist/hooks/magic-context/tag-messages.d.ts +15 -0
  36. package/dist/hooks/magic-context/tag-messages.d.ts.map +1 -1
  37. package/dist/hooks/magic-context/todo-view.d.ts +2 -2
  38. package/dist/hooks/magic-context/transform.d.ts +7 -0
  39. package/dist/hooks/magic-context/transform.d.ts.map +1 -1
  40. package/dist/{index-jcr6pe7z.js → index-077ht5cq.js} +1 -1
  41. package/dist/{index-ebsvmc5s.js → index-31y1mznz.js} +4 -4
  42. package/dist/{index-q7ywt6xt.js → index-4cpc59jv.js} +5 -5
  43. package/dist/{index-t6j3qxnd.js → index-4ypqzvhf.js} +1 -1
  44. package/dist/index-7gbcg8xv.js +559 -0
  45. package/dist/{index-9q1g3c5q.js → index-7kkphb6c.js} +1 -1
  46. package/dist/{index-bhyksfyy.js → index-89k1w6x2.js} +3 -3
  47. package/dist/{index-z05n7702.js → index-a2fz9hpa.js} +1 -1
  48. package/dist/{index-0s8454t2.js → index-dcqk0y27.js} +1560 -91
  49. package/dist/{index-n18sch77.js → index-dzfevacx.js} +9 -9
  50. package/dist/{index-axjgxeww.js → index-fq2p158w.js} +169 -13
  51. package/dist/{index-3d5wnkq7.js → index-mm93m7y6.js} +1 -1
  52. package/dist/{index-zzrzjnx5.js → index-n8qmmd7f.js} +3 -3
  53. package/dist/{index-whcgcfrv.js → index-np3rgfw4.js} +1 -1
  54. package/dist/{index-y6xpzjzr.js → index-qzbpbnqt.js} +585 -602
  55. package/dist/{index-7tdtpqrg.js → index-rverk2vz.js} +39 -8
  56. package/dist/{index-cfaet9cg.js → index-s1n8dd2n.js} +1 -1
  57. package/dist/{index-z928hmnp.js → index-t3rbb8wr.js} +2 -2
  58. package/dist/{index-2haxh8h3.js → index-tvzvjggy.js} +1 -1
  59. package/dist/{index-c9zrgcnt.js → index-v0dhhxsq.js} +1 -1
  60. package/dist/{index-szf8r0ba.js → index-v15ne3a3.js} +2 -5
  61. package/dist/{index-x9k3mqrf.js → index-xrnsygfq.js} +1 -1
  62. package/dist/{index-yrrsp47d.js → index-yzjhx10y.js} +20 -6
  63. package/dist/index.js +40 -38
  64. package/dist/{message-fts-rowid-map-9e1getgs.js → message-fts-rowid-map-va36knh4.js} +2 -4
  65. package/dist/{message-index-bounded-vaeqhp9w.js → message-index-bounded-7ayzb2ah.js} +22 -25
  66. package/dist/migration-worker.js +6 -6
  67. package/dist/plugin/dream-timer.d.ts.map +1 -1
  68. package/dist/plugin/hooks/create-session-hooks.d.ts.map +1 -1
  69. package/dist/{project-embedding-registry-rstzmb60.js → project-embedding-registry-94nncs5g.js} +4 -4
  70. package/dist/raw-ordinal-warmup-worker.js +7 -30
  71. package/dist/{read-session-chunk-z5gnc0zb.js → read-session-chunk-jzb6w9w5.js} +8 -6
  72. package/dist/{read-session-raw-s4amywnh.js → read-session-raw-b2sd67v4.js} +3 -1
  73. package/dist/{recomp-orchestrator-qwqeskhq.js → recomp-orchestrator-02sa2ngr.js} +17 -17
  74. package/dist/{search-archive-mfabzyn2.js → search-archive-q1vw7zg4.js} +7 -7
  75. package/dist/{search-84zfqeky.js → search-spq6nfyf.js} +14 -15
  76. package/dist/{send-session-notification-ygj4mja0.js → send-session-notification-afzzqy5b.js} +3 -3
  77. package/dist/{storage-tags-a77q4v77.js → storage-tags-6hvkk01c.js} +2 -2
  78. package/dist/tools/ctx-reduce/tools.d.ts.map +1 -1
  79. package/dist/{transform-postprocess-phase-hr1ntmjj.js → transform-postprocess-phase-6menyyxc.js} +17 -17
  80. package/dist/v2/auto-search-worker.js +4 -4
  81. package/dist/v2/chunk-embedding-write-worker.js +7 -7
  82. package/dist/v2/{compartment-chunk-embedding-tk6g4q80.js → compartment-chunk-embedding-63dzs31c.js} +3 -3
  83. package/dist/v2/{context-y7wfvdve.js → context-na0esngr.js} +342 -218
  84. package/dist/v2/{embedding-backfill-w5qp7t28.js → embedding-backfill-rh5dgsva.js} +5 -5
  85. package/dist/v2/hooks/context.d.ts.map +1 -1
  86. package/dist/v2/{message-fts-rowid-map-pqk3a55v.js → message-fts-rowid-map-78awh03v.js} +2 -4
  87. package/dist/v2/{message-index-bounded-te303atj.js → message-index-bounded-n09b74vr.js} +21 -24
  88. package/dist/v2/migration-worker.js +6 -6
  89. package/dist/v2/{project-embedding-registry-e7zftfvj.js → project-embedding-registry-6pak822h.js} +4 -4
  90. package/dist/v2/raw-ordinal-warmup-worker.js +7 -30
  91. package/dist/v2/{read-session-chunk-knvkq1hf.js → read-session-chunk-vpt69tw9.js} +7 -5
  92. package/dist/v2/{read-session-raw-ppjxnqk4.js → read-session-raw-5x088amc.js} +3 -1
  93. package/dist/v2/{recomp-orchestrator-e8a4jpvr.js → recomp-orchestrator-txsmbnvw.js} +14 -14
  94. package/dist/v2/{search-archive-vrwgxv6z.js → search-archive-t9bcz4ht.js} +6 -6
  95. package/dist/v2/{search-hav4dggf.js → search-dcy9b6gd.js} +13 -14
  96. package/dist/v2/{send-session-notification-f8scq6ae.js → send-session-notification-vdsgnf4c.js} +1 -1
  97. package/dist/v2/{server-pw21ypwb.js → server-4sn3at8p.js} +1 -1
  98. package/dist/v2/{server-8j2e7t31.js → server-6avtp9jp.js} +1 -1
  99. package/dist/v2/{server-wwaw5npa.js → server-6g98c227.js} +1 -1
  100. package/dist/v2/{server-swvhxhxz.js → server-6vd2n183.js} +39 -8
  101. package/dist/v2/{server-wxrdher8.js → server-awr8qa4c.js} +2 -5
  102. package/dist/v2/{server-7d6m1p2b.js → server-cqjvxyrp.js} +1 -1
  103. package/dist/v2/{server-e75vag9d.js → server-e3hc93wk.js} +5 -5
  104. package/dist/v2/{server-7weh65vd.js → server-jj9qye8y.js} +1520 -79
  105. package/dist/v2/{server-fa7vtp40.js → server-nxas8v1d.js} +1 -1
  106. package/dist/v2/{server-tfawsj08.js → server-txbc3czn.js} +9 -9
  107. package/dist/v2/{server-rqebawx1.js → server-v77xa5wj.js} +1 -1
  108. package/dist/v2/{server-5brp2rfn.js → server-xkvxss5g.js} +19 -5
  109. package/dist/v2/{server-q5z0gag0.js → server-yqek3s4k.js} +1 -1
  110. package/dist/v2/server-z2n2xaeh.js +538 -0
  111. package/dist/v2/{server-9xbbaekh.js → server-z3mk9jdc.js} +2 -2
  112. package/dist/v2/{server-m6yyn961.js → server-zmcrvpm3.js} +2 -2
  113. package/dist/v2/server.js +2 -2
  114. package/dist/v2/{storage-tags-q71rnr9f.js → storage-tags-18nbaanf.js} +2 -2
  115. package/dist/v2/store-reader.d.ts +0 -2
  116. package/dist/v2/store-reader.d.ts.map +1 -1
  117. package/dist/v2/{wrapup-orchestrator-ycs8y6n4.js → wrapup-orchestrator-gjkszser.js} +14 -14
  118. package/dist/{wrapup-orchestrator-f642w8n3.js → wrapup-orchestrator-n5h5sr1x.js} +18 -18
  119. package/package.json +1 -1
  120. package/src/shared/write-transaction-attribution.test.ts +1 -6
  121. package/dist/index-awcftgmx.js +0 -2251
  122. package/dist/message-index-3g966xn7.js +0 -61
  123. package/dist/v2/message-index-fz6b4jeh.js +0 -60
  124. package/dist/v2/server-6a8pxpxg.js +0 -2220
@@ -566,6 +566,20 @@ function survivingAnchor(db, set) {
566
566
  }
567
567
  var ordinalCheckpoints = new WeakMap;
568
568
  var ordinalSummarySeeds = new WeakMap;
569
+ function hasLateCommitBehindCheckpoint(db, sessionId, scan) {
570
+ const tail = scan.checkpoints?.at(-1);
571
+ if (!tail || scan.maxRowid === undefined)
572
+ return false;
573
+ const row = db.prepare(`SELECT COUNT(*) AS count FROM message
574
+ WHERE rowid > ? AND +session_id = ?
575
+ AND (time_created, id) <= (?, ?)
576
+ AND NOT (${EXCLUDED_ROW_SQL})`).get(scan.maxRowid, sessionId, tail.timeCreated, tail.id);
577
+ return typeof row?.count === "number" && row.count > 0;
578
+ }
579
+ function discardRetainedOrdinalRanks(db, sessionId) {
580
+ ordinalCheckpoints.get(db)?.delete(sessionId);
581
+ ordinalSummarySeeds.get(db)?.delete(sessionId);
582
+ }
569
583
  var ORDINAL_LOOKUP_LIMIT = 512;
570
584
  function currentOrdinalCheckpoints(db, sessionId) {
571
585
  const cached = ordinalCheckpoints.get(db)?.get(sessionId);
@@ -596,10 +610,16 @@ function extendOrdinalCheckpoints(db, sessionId, scan, limit) {
596
610
  scan.sessionRows = points.at(-1)?.storedCount ?? 0;
597
611
  }
598
612
  const tail = points.at(-1);
599
- const rows = db.prepare(`SELECT id, time_created AS timeCreated, ${EXCLUDED_ROW_SQL} AS excluded FROM message
613
+ const rows = db.prepare(`SELECT id, time_created AS timeCreated, rowid AS rowid, ${EXCLUDED_ROW_SQL} AS excluded FROM message
600
614
  WHERE session_id=?${tail ? " AND (time_created,id) > (?,?)" : ""}
601
615
  ORDER BY time_created,id${limit === undefined ? "" : ` LIMIT ${limit + 1}`}`).all(sessionId, ...tail ? [tail.timeCreated, tail.id] : []);
602
616
  ordinalJsonRowsRead += rows.length;
617
+ if (hasLateCommitBehindCheckpoint(db, sessionId, scan)) {
618
+ discardRetainedOrdinalRanks(db, sessionId);
619
+ if (isMainThread)
620
+ forgetRawSessionSummaryRows2(sessionId);
621
+ return false;
622
+ }
603
623
  if (limit !== undefined && rows.length > limit)
604
624
  return false;
605
625
  let total = scan.total ?? 0;
@@ -616,6 +636,13 @@ function extendOrdinalCheckpoints(db, sessionId, scan, limit) {
616
636
  scan.checkpoints = points;
617
637
  scan.sessionRows += rows.length;
618
638
  scan.total = total;
639
+ if (rows.length > 0) {
640
+ let maxRowid = scan.maxRowid ?? -1;
641
+ for (const row of rows)
642
+ if (row.rowid > maxRowid)
643
+ maxRowid = row.rowid;
644
+ scan.maxRowid = maxRowid;
645
+ }
619
646
  return true;
620
647
  }
621
648
 
@@ -636,6 +663,10 @@ function rawOrdinalSummarySeed2(db, sessionId) {
636
663
  ids: [...new Set([...seed.scan.ids, ...writtenSummaryIds.get(sessionId) ?? []])]
637
664
  };
638
665
  }
666
+ function dropRawSessionOrdinalCheckpoints2(db, sessionId) {
667
+ discardRetainedOrdinalRanks(db, sessionId);
668
+ forgetRawSessionSummaryRows2(sessionId);
669
+ }
639
670
  function boundedOrdinalPrefix(db, sessionId, through) {
640
671
  const cached = currentOrdinalCheckpoints(db, sessionId);
641
672
  if (cached && through === null)
@@ -674,8 +705,7 @@ function boundedOrdinalPrefix(db, sessionId, through) {
674
705
  }
675
706
  function scanRawSessionSummaryRows2(db, sessionId, previous) {
676
707
  return withReadSnapshot(db, () => {
677
- if (previous?.checkpoints) {
678
- extendOrdinalCheckpoints(db, sessionId, previous);
708
+ if (previous?.checkpoints && extendOrdinalCheckpoints(db, sessionId, previous)) {
679
709
  return previous;
680
710
  }
681
711
  if (previous) {
@@ -707,12 +737,15 @@ function scanRawSessionSummaryRows2(db, sessionId, previous) {
707
737
  }
708
738
  anchors.sort((left, right) => right.rowid - left.rowid);
709
739
  anchors.length = Math.min(anchors.length, SUMMARY_ANCHOR_LIMIT);
710
- const keys = db.prepare(`SELECT id, time_created AS timeCreated, ${EXCLUDED_ROW_SQL} AS excluded FROM message WHERE session_id = ?
740
+ const keys = db.prepare(`SELECT id, time_created AS timeCreated, rowid AS rowid, ${EXCLUDED_ROW_SQL} AS excluded FROM message WHERE session_id = ?
711
741
  ORDER BY time_created, id`).all(sessionId);
712
742
  const checkpoints = [];
713
743
  let total = 0;
744
+ let maxRowid;
714
745
  for (let index = 0;index < keys.length; index++) {
715
746
  const key = keys[index];
747
+ if (typeof key.rowid === "number")
748
+ maxRowid = maxRowid === undefined ? key.rowid : Math.max(maxRowid, key.rowid);
716
749
  if (key.excluded !== 1)
717
750
  total++;
718
751
  if (index % 256 === 255 || index === keys.length - 1)
@@ -723,7 +756,7 @@ function scanRawSessionSummaryRows2(db, sessionId, previous) {
723
756
  storedCount: index + 1
724
757
  });
725
758
  }
726
- return { anchors, ids, sessionRows, checkpoints, total };
759
+ return { anchors, ids, sessionRows, checkpoints, total, maxRowid };
727
760
  });
728
761
  }
729
762
  function getRawSessionSummaryEpoch2(sessionId) {
@@ -1220,8 +1253,6 @@ function runSessionWarmupWorker(input, options) {
1220
1253
  finish({ delta: reply.delta });
1221
1254
  else if (reply.kind === "indexed")
1222
1255
  finish({ inserted: reply.inserted, measurements: reply.measurements });
1223
- else if (reply.kind === "orphan-sweep")
1224
- finish({ orphanSweep: reply.result });
1225
1256
  else if (reply.kind === "exact-ordinal-ids")
1226
1257
  finish({ exactOrdinalIds: reply.ids });
1227
1258
  else if (reply.kind === "search-archive")
@@ -1297,4 +1328,4 @@ function recordFailure(key, sessionId, failure, detail) {
1297
1328
  log2(`[magic-context] WARN canonical ordinal warm-up failed for ${sessionId} (${failure}: ${detail}); counts remain bounded and callers must defer or retry`);
1298
1329
  }
1299
1330
 
1300
- export { areRustHistorianSyntheticParts2, isStrictGapHealingMessage2, isRawCompactionSummaryInfo2, readRawSessionMessagesFromDb2, readRawSessionMessagePageFromDb2, readRawSessionMessageSummaryPageFromDb2, countRawSessionMessageOrdinalsFromDb2, readRawSessionMessageIdOrdinalsForRangeFromDb2, readRawSessionMessageIdsAtOrdinalsFromDb2, readRawSessionMessageOrdinalPageFromDb2, countStoredRawSessionMessagesFromDb2, readRawSessionTailFromDb2, extractInMemoryMessageViews2, buildInMemoryTailRawMessages2, readRawSessionMessagePartsByIdFromDb2, forgetRawSessionOrdinalWatermark2, forgetRawSessionSummaryRows2, noteRawSessionSummaryRowWritten2, RawOrdinalsNotReady2, rawOrdinalSummarySeed2, scanRawSessionSummaryRows2, getRawSessionSummaryEpoch2, installRawSessionSummaryScan2, isRawSessionSummaryWarm2, readRawSessionMessageOrdinalByIdFromDb2, readRawSessionMessageByIdFromDb2, hasRawSessionMessageByIdFromDb2, readRawSeedTailFromDb2, readRawSessionBoundaryEndpointsFromDb2, runSessionWarmupWorker, prewarmRawSessionOrdinalsForDb };
1331
+ export { areRustHistorianSyntheticParts2, isStrictGapHealingMessage2, isRawCompactionSummaryInfo2, readRawSessionMessagesFromDb2, readRawSessionMessagePageFromDb2, readRawSessionMessageSummaryPageFromDb2, countRawSessionMessageOrdinalsFromDb2, readRawSessionMessageIdOrdinalsForRangeFromDb2, readRawSessionMessageIdsAtOrdinalsFromDb2, readRawSessionMessageOrdinalPageFromDb2, countStoredRawSessionMessagesFromDb2, readRawSessionTailFromDb2, extractInMemoryMessageViews2, buildInMemoryTailRawMessages2, readRawSessionMessagePartsByIdFromDb2, forgetRawSessionOrdinalWatermark2, forgetRawSessionSummaryRows2, noteRawSessionSummaryRowWritten2, RawOrdinalsNotReady2, rawOrdinalSummarySeed2, dropRawSessionOrdinalCheckpoints2, scanRawSessionSummaryRows2, getRawSessionSummaryEpoch2, installRawSessionSummaryScan2, isRawSessionSummaryWarm2, readRawSessionMessageOrdinalByIdFromDb2, readRawSessionMessageByIdFromDb2, hasRawSessionMessageByIdFromDb2, readRawSeedTailFromDb2, readRawSessionBoundaryEndpointsFromDb2, runSessionWarmupWorker, prewarmRawSessionOrdinalsForDb };
@@ -3,7 +3,7 @@ import {
3
3
  } from "./index-b88dwwrh.js";
4
4
  import {
5
5
  stableStringify
6
- } from "./index-x9k3mqrf.js";
6
+ } from "./index-xrnsygfq.js";
7
7
 
8
8
  // src/shared/bounded-session-map.ts
9
9
  class BoundedSessionMap {
@@ -14,10 +14,10 @@ import {
14
14
  } from "./index-fr0wbhdn.js";
15
15
  import {
16
16
  managedAuthorityNoteRow
17
- } from "./index-9q1g3c5q.js";
17
+ } from "./index-7kkphb6c.js";
18
18
  import {
19
19
  embedTextForProject2
20
- } from "./index-z05n7702.js";
20
+ } from "./index-a2fz9hpa.js";
21
21
  import {
22
22
  saveEmbeddingIfHashMatches
23
23
  } from "./index-4dhv7mqz.js";
@@ -4,7 +4,7 @@ import {
4
4
  } from "./index-h7tgn49j.js";
5
5
  import {
6
6
  sendStatusNotification2
7
- } from "./index-jcr6pe7z.js";
7
+ } from "./index-077ht5cq.js";
8
8
  import {
9
9
  formatConflictShort
10
10
  } from "./index-4pnsgvfk.js";
@@ -19,7 +19,7 @@ import {
19
19
  import {
20
20
  forgetRawSessionOrdinalWatermark2,
21
21
  forgetRawSessionSummaryRows2
22
- } from "./index-7tdtpqrg.js";
22
+ } from "./index-rverk2vz.js";
23
23
  import {
24
24
  closeQuietly
25
25
  } from "./index-8ajstryz.js";
@@ -5,7 +5,7 @@ import {
5
5
  } from "./index-gzy5w8ya.js";
6
6
  import {
7
7
  runSessionWarmupWorker
8
- } from "./index-7tdtpqrg.js";
8
+ } from "./index-rverk2vz.js";
9
9
  import {
10
10
  logSlowWriteTransaction
11
11
  } from "./index-t5pck3ss.js";
@@ -168,9 +168,6 @@ function messageFtsOrdinalRangeIsMapped2(db, sessionId, startOrdinal, endOrdinal
168
168
  const ordinalCount = endOrdinal - startOrdinal + 1;
169
169
  return row?.sourceOrdinalCount === ordinalCount && row.expectedMapCount === row.mappedCount;
170
170
  }
171
- function getMessageFtsRowidMapBackfillProgress2(db) {
172
- return getBackfillState(db);
173
- }
174
171
  function deleteUnmappedMessageFtsRows2(db, sessionIds) {
175
172
  if (sessionIds.length === 0)
176
173
  return;
@@ -182,4 +179,4 @@ function deleteUnmappedMessageFtsRows2(db, sessionIds) {
182
179
  WHERE rowid > ? AND session_id IN (${placeholders})`).run(state.watermarkRowid, ...sessionIds);
183
180
  }
184
181
 
185
- export { recordMessageFtsRowid2, recordIndexedMessageTime2, runMessageFtsRowidMapBackfill2, startMessageFtsRowidMapBackfill2, messageFtsOrdinalRangeIsMapped2, getMessageFtsRowidMapBackfillProgress2, deleteUnmappedMessageFtsRows2 };
182
+ export { recordMessageFtsRowid2, recordIndexedMessageTime2, runMessageFtsRowidMapBackfill2, startMessageFtsRowidMapBackfill2, messageFtsOrdinalRangeIsMapped2, deleteUnmappedMessageFtsRows2 };
@@ -533,4 +533,4 @@ function jsonHashSink(prefix = "") {
533
533
  return { write, digest: () => (hash >>> 0).toString(16).padStart(8, "0") };
534
534
  }
535
535
 
536
- export { TAG_TOMBSTONE_OWNER_PREFIX, tagTombstoneOwnerRange, tagTombstoneOwnerKey, tagRevisionKey, tagIdentityRevisionKey, installTagIdentityRevisionTrigger, deleteTagIdentityRevisions, getTableColumnNames, ensureColumn, healAllNullColumns, getTemporalDecisions, observeTemporalDecisions, freezeTemporalDecisions, deleteTemporalDecision, installV95PerfSchema, tagOrderConstraintIndex, stableStringify, stableStringifyHash };
536
+ export { tagTombstoneOwnerRange, tagTombstoneOwnerKey, tagRevisionKey, tagIdentityRevisionKey, installTagIdentityRevisionTrigger, deleteTagIdentityRevisions, getTableColumnNames, ensureColumn, healAllNullColumns, getTemporalDecisions, observeTemporalDecisions, freezeTemporalDecisions, deleteTemporalDecision, installV95PerfSchema, tagOrderConstraintIndex, stableStringify, stableStringifyHash };
@@ -24,7 +24,7 @@ import {
24
24
  TAG_SELECT_COLUMNS2,
25
25
  getCandidateToolOwners2,
26
26
  pickNearestPriorOwner2
27
- } from "./index-whcgcfrv.js";
27
+ } from "./index-np3rgfw4.js";
28
28
  import {
29
29
  OMO_INTERNAL_INITIATOR_MARKER,
30
30
  isSystemDirective,
@@ -48,7 +48,7 @@ import {
48
48
  } from "./index-gzy5w8ya.js";
49
49
  import {
50
50
  stableStringify
51
- } from "./index-x9k3mqrf.js";
51
+ } from "./index-xrnsygfq.js";
52
52
  import {
53
53
  renderToolTemplate,
54
54
  resolveModelConfigValue,
@@ -70,18 +70,18 @@ import {
70
70
  readRawSeedTailFromDb2,
71
71
  readRawSessionBoundaryEndpointsFromDb2,
72
72
  prewarmRawSessionOrdinalsForDb
73
- } from "./index-7tdtpqrg.js";
73
+ } from "./index-rverk2vz.js";
74
74
  import {
75
75
  openCodeDbExists,
76
76
  withReadOnlySessionDb,
77
77
  getRawSessionMessageCountFromDb,
78
78
  getMessageTimesFromOpenCodeDb
79
- } from "./index-c9zrgcnt.js";
79
+ } from "./index-v0dhhxsq.js";
80
80
  import {
81
81
  getToolDefinitionMeasurementSignature,
82
82
  getMeasuredToolDefinitionTokens,
83
83
  getSessionToolDefinitionTokens
84
- } from "./index-cfaet9cg.js";
84
+ } from "./index-s1n8dd2n.js";
85
85
  import {
86
86
  canonicalModelIdentity,
87
87
  piModelRefToCanonical
@@ -7068,6 +7068,20 @@ function readRawSessionMessageOrdinalById2(sessionId, messageId) {
7068
7068
  return null;
7069
7069
  return withReadOnlySessionDb((db) => readRawSessionMessageOrdinalByIdFromDb2(db, sessionId, messageId));
7070
7070
  }
7071
+ function resolveHistorianChunkStart2(sessionId, newest) {
7072
+ if (!newest)
7073
+ return 1;
7074
+ const fallback = newest.endMessage + 1;
7075
+ if (hasRawMessageProvider2(sessionId))
7076
+ return fallback;
7077
+ const endId = newest.endMessageId;
7078
+ if (typeof endId !== "string" || endId.length === 0)
7079
+ return fallback;
7080
+ const ordinal = readRawSessionMessageOrdinalById2(sessionId, endId);
7081
+ if (typeof ordinal !== "number" || !Number.isFinite(ordinal) || ordinal < 1)
7082
+ return fallback;
7083
+ return ordinal + 1;
7084
+ }
7071
7085
  function readRawSessionMessageOrderPosition(sessionId, messageId) {
7072
7086
  const provider = sessionProviders.get(sessionId)?.provider;
7073
7087
  if (provider) {
@@ -7568,4 +7582,4 @@ function readRawSessionSeedTail2(sessionId, boundaryId, onQuery) {
7568
7582
  });
7569
7583
  }
7570
7584
 
7571
- export { isToolFreeHiddenAgent, TOOL_USE_DISABLED, ZEN_READ_AGENT_SUFFIX, needsBlockedRead, withBlockedReadInstruction, rememberV1HiddenRun, shapeV1HiddenMessage, expandToolPart, askAnswerLines, markHostUnservedRow, retreatPastHostUnservedRows, snapTerminalCompartmentToServedRow, isHostRenderedSystemMessage, markCoveredInstructionRow, isCoveredInstructionRow, takeCoveredInstructionRows, cloneKeepingCoveredInstructionMarks, completedToolArcCrossesBoundary, estimateTrueRawMessageTokens, buildToolArcs, fenceBoundaryForCompletedToolArcs, fenceBoundaryForToolArcs, buildTrueRawTokenIndex, computeRawRangeFingerprint, invalidateTrueRawTokenCache, stripSystemInjection, isTextPart, isToolPartWithOutput, isFilePart, toolPartHasUserAnswer, DreamTokenBudgetExceeded, TOKEN_BUDGET_FINALIZE_MESSAGE, registerBudgetFinalizeChild, releaseBudgetFinalizeChild, createDreamTokenBudget, recordToolParameters, createDroppedInputGuard, assertExecutableToolInput, createDroppedInputToolExecuteBeforeHook, isEditTool, MERGED_REASONING_PARTS_PREFIX, decodeMergedReasoningParts, MAX_EXECUTE_THRESHOLD, escalationBands, HYGIENE_PROVIDER_UNITS_VERSION, sessionDecisionCalibration, transitionSessionHygieneUnits, readEpochFloorSnapshot, getProtectionWindowForSession, SESSION_META_SELECT_COLUMNS, META_COLUMNS, BOOLEAN_META_KEYS, NULL_BIND_META_KEYS, isSessionMetaRow, getDefaultSessionMeta, ensureSessionMetaRow, toSessionMeta, persistCachedM0, clearCachedM0M1, clearCachedM0, withReplayEnvelopeSnapshot, invalidateReplayEnvelopeSnapshot, isRustMarkerAdmissionFenced, setRustMarkerAdmissionFence, ReplayDocumentError, readReplayEnvelope, readReplayDocument, updateReplayDocument, writeReplayDocument, isEmergencyRecoveryArmed, isProviderOverflowReconfirmed, isProviderOverflowFailClosedProven, getEmergencyRecoveryArmedAt, describeProtectedTailDrainBudgetSkip, loadPersistedUsage, loadProtectedTailMeta, markProtectedTailPolicyV3Seeded, recordProtectedTailPublicationFloor, recordProtectedTailNoEligibleHead, resetProtectedTailNoEligibleHead, getWrapupInProgressState, isWrapupInProgress, acquireWrapupInProgress, updateWrapupInProgress, releaseWrapupInProgress, resolveCompactionModeRecord, getCompactionModeRecord, setCompactionModeRecord, getProtectedTailDrainBudgetSkip, reserveProtectedTailDrainTokens, clearEmergencyDrainLatch, recordHistorianDrainFailure, clearHistorianDrainFailure, rollbackProtectedTailDrainReservation, getPersistedReasoningWatermark, setPersistedReasoningWatermark, clearPersistedReasoningWatermark, getEmergencyInputSample, setEmergencyDropSample, clearEmergencyDropSample, getLastNudgeUndropped, setLastNudgeUndropped, getChannel1NudgeState, setChannel1NudgeState, markChannel1PostReduceGracePending, captureChannel1PostReduceGraceBaseline, getChannel2NudgeState, getChannel2NudgeClaim, setChannel2NudgeState, casChannel2NudgeState, claimChannel2NudgeState, casChannel2NudgeClaim, getPersistedNoteNudge, setPersistedNoteNudgeTrigger, setPersistedNoteNudgeTriggerMessageId, getNoteNudgeAnchors, getAutoSearchHintDecisions, deliverNoteNudgeAtomic, appendAutoSearchHintDecision, pruneNoteNudgeAnchors, removeNoteNudgeAnchorByMessageId, queueAutoSearchHintDecisionRetirement, flushAutoSearchHintDecisionRetirement, removeAutoSearchHintDecisionByMessageId, getPersistedTodoPermissionDenied, setPersistedTodoPermissionDenied, getPersistedTodoSyntheticAnchor, setPersistedTodoSyntheticAnchor, clearPersistedTodoSyntheticAnchor, getNoteLastReadAt, setNoteLastReadAt, getHistorianFailureState, incrementHistorianFailure, clearHistorianFailureState, getOverflowState, loadTransformPassStateSnapshot, recordOverflowDetected, recordDetectedContextLimit, clearEmergencyRecovery, clearDetectedContextLimit, getPersistedCompactionMarkerState, setPersistedCompactionMarkerState, getDeferredClearedCompactionMarkerState, retireDeferredClearedCompactionMarkerState, parseStrippedPlaceholderState, serializeStrippedPlaceholderState, getStrippedPlaceholderIds, applyStrippedPlaceholderDelta, removeStrippedPlaceholderId, THINKING_BINDING_RECOVERY_FROZEN_PREFIX, THINKING_BINDING_STRIP_ORDER_END_MARKER, thinkingBindingRecoveryFrozenId, COMPACTION_OFF_THINKING_FROZEN_PREFIX, compactionOffThinkingFrozenId, compactionOffFrozenThinkingIds, getThinkingBindingRecoveryTarget, armThinkingBindingRecovery, clearThinkingBindingRecoveryIf, getMergedReasoningStrippedIds, addMergedReasoningStrippedIds, getTrailingBlankDecisions, addTrailingBlankDecisions, demoteTrailingBlankKeepDecisions, getStaleReduceStrippedIds, addStaleReduceStrippedIds, getProcessedImageStrippedIds, parseProcessedImageMarkers, serializeProcessedImageMarkers, getProcessedImageMarkers, addProcessedImageStrippedIds, getPendingCompactionMarkerState, getCompactionMarkerHealth, loadPostprocessReplaySnapshot, setPendingCompactionMarkerState, replacePendingCompactionMarkerStateIf, clearPendingCompactionMarkerStateIf, getPendingPiCompactionMarkerState, clearPendingPiCompactionMarkerStateIf, logPiCompactionMarkerClear, getSessionsWithPendingMarker, setSessionWorkMetrics, getObservedEpochFloor, resolveEpochFloorForPass, getReasoningRemovalState, addRemovedReasoningIds, markDropLeavesReasoning, detectThinkingBindingMismatch, detectLatestTurnThinkingMismatch, isPrefixBoundThinkingModel, detectOverflow, modelAcceptsEmptyContent, isAnthropicFamilyRoute, neutralizeDroppedReasoningPart, restoreNeutralizedReasoningPart, isNeutralizedReasoningPart, variantChangeBustsProviderCache, makeSentinel, makeWholeMessageSentinel, isSentinel, replaySentinelByMessageIds, isInActiveAnthropicTurn, activeAnthropicTurnStart, hasAnthropicReasoning, markServedShapeRepair, prepareServedShapeRepair, stripSystemInjectedMessages, stripDroppedPlaceholderMessages, replayClearedReasoning, replayStrippedInlineThinking, clearOldReasoning, stripClearedReasoning, captureInlineThinkingRepairs, stripInlineThinking, findReasoningBearingAssistantIds, findLatestAssistantReasoningMutationExemptMessage, snapshotTrailingBlankSourceDecisions, findTrailingBlankDecisionCandidates, applyFrozenTrailingBlankDecisions, stripReasoningFromAssistantIds, findMergedReasoningStripDecisions, stripReasoningFromMergedAssistants, getEmptyImageParts, stripProcessedImages, projectOpencodeReasoningBudgetCutoff, DEFAULT_KEEP_REASONING_TOKENS, resolveKeepReasoningTokens, reasoningStepCost, reasoningBudgetCutoff, reasoningTextAndOpaque, opencodeReasoningBudgetCutoff, describeFinalWireTail, estimatePartImageTokens, estimateMessageTokens, wireContentBytes, createFinalWireUsageTracker, estimateFinalWireInputTokens, estimateAppendedWireTokens, SKELETON_REAL_INPUT_MAX_BYTES, partHasCompletedResult, extractToolCallObservation, ToolMutationBatch, createToolDropTarget, resolveHostServedBoundaryId2, hasRawMessageProvider2, setRawMessageProvider2, setBoundedRawMessageProvider2, withRawMessageProvider2, cleanUserText2, withRawSessionMessageCache2, readRawSessionMessages2, readRawSessionMessagePage2, getRawSessionMessageOrdinalCount2, RAW_MESSAGE_VISIT_PAGE_SIZE2, visitRawSessionMessages2, visitRawSessionMessagesAsync2, readRawSessionMessageRange2, prepareRawSessionOrdinals2, primeTailRawMessageCache2, getCachedAbsoluteMessageCount2, primeInMemoryTailRawMessageCache2, readRawSessionMessageOrdinalPage2, getRawSessionStoredMessageCount2, readRawSessionMessageIdOrdinalsForRange2, readRawSessionMessageIdOrdinals2, readRawSessionMessagePartsById2, readRawSessionBoundaryEndpoints2, hasRawSessionMessageById2, readRawSessionMessageOrdinalById2, compareRawSessionMessageOrder2, readRawSessionMessageById2, getRawSessionMessageCount2, RAW_SESSION_TAG_KEY_PAGE_SIZE2, getRawSessionTagKeysThrough2, getLegacyProtectedTailStartOrdinal2, getProtectedTailStartOrdinal2, readSessionChunk2, getRawSessionMessageIdsThrough2, readRawSessionSeedTail2 };
7585
+ export { isToolFreeHiddenAgent, TOOL_USE_DISABLED, ZEN_READ_AGENT_SUFFIX, needsBlockedRead, withBlockedReadInstruction, rememberV1HiddenRun, shapeV1HiddenMessage, expandToolPart, askAnswerLines, markHostUnservedRow, retreatPastHostUnservedRows, snapTerminalCompartmentToServedRow, isHostRenderedSystemMessage, markCoveredInstructionRow, isCoveredInstructionRow, takeCoveredInstructionRows, cloneKeepingCoveredInstructionMarks, completedToolArcCrossesBoundary, estimateTrueRawMessageTokens, buildToolArcs, fenceBoundaryForCompletedToolArcs, fenceBoundaryForToolArcs, buildTrueRawTokenIndex, computeRawRangeFingerprint, invalidateTrueRawTokenCache, stripSystemInjection, isTextPart, isToolPartWithOutput, isFilePart, toolPartHasUserAnswer, DreamTokenBudgetExceeded, TOKEN_BUDGET_FINALIZE_MESSAGE, registerBudgetFinalizeChild, releaseBudgetFinalizeChild, createDreamTokenBudget, recordToolParameters, createDroppedInputGuard, assertExecutableToolInput, createDroppedInputToolExecuteBeforeHook, isEditTool, MERGED_REASONING_PARTS_PREFIX, decodeMergedReasoningParts, MAX_EXECUTE_THRESHOLD, escalationBands, HYGIENE_PROVIDER_UNITS_VERSION, sessionDecisionCalibration, transitionSessionHygieneUnits, readEpochFloorSnapshot, getProtectionWindowForSession, SESSION_META_SELECT_COLUMNS, META_COLUMNS, BOOLEAN_META_KEYS, NULL_BIND_META_KEYS, isSessionMetaRow, getDefaultSessionMeta, ensureSessionMetaRow, toSessionMeta, persistCachedM0, clearCachedM0M1, clearCachedM0, withReplayEnvelopeSnapshot, invalidateReplayEnvelopeSnapshot, isRustMarkerAdmissionFenced, setRustMarkerAdmissionFence, ReplayDocumentError, readReplayEnvelope, readReplayDocument, updateReplayDocument, writeReplayDocument, isEmergencyRecoveryArmed, isProviderOverflowReconfirmed, isProviderOverflowFailClosedProven, getEmergencyRecoveryArmedAt, describeProtectedTailDrainBudgetSkip, loadPersistedUsage, loadProtectedTailMeta, markProtectedTailPolicyV3Seeded, recordProtectedTailPublicationFloor, recordProtectedTailNoEligibleHead, resetProtectedTailNoEligibleHead, getWrapupInProgressState, isWrapupInProgress, acquireWrapupInProgress, updateWrapupInProgress, releaseWrapupInProgress, resolveCompactionModeRecord, getCompactionModeRecord, setCompactionModeRecord, getProtectedTailDrainBudgetSkip, reserveProtectedTailDrainTokens, clearEmergencyDrainLatch, recordHistorianDrainFailure, clearHistorianDrainFailure, rollbackProtectedTailDrainReservation, getPersistedReasoningWatermark, setPersistedReasoningWatermark, clearPersistedReasoningWatermark, getEmergencyInputSample, setEmergencyDropSample, clearEmergencyDropSample, getLastNudgeUndropped, setLastNudgeUndropped, getChannel1NudgeState, setChannel1NudgeState, markChannel1PostReduceGracePending, captureChannel1PostReduceGraceBaseline, getChannel2NudgeState, getChannel2NudgeClaim, setChannel2NudgeState, casChannel2NudgeState, claimChannel2NudgeState, casChannel2NudgeClaim, getPersistedNoteNudge, setPersistedNoteNudgeTrigger, setPersistedNoteNudgeTriggerMessageId, getNoteNudgeAnchors, getAutoSearchHintDecisions, deliverNoteNudgeAtomic, appendAutoSearchHintDecision, pruneNoteNudgeAnchors, removeNoteNudgeAnchorByMessageId, queueAutoSearchHintDecisionRetirement, flushAutoSearchHintDecisionRetirement, removeAutoSearchHintDecisionByMessageId, getPersistedTodoPermissionDenied, setPersistedTodoPermissionDenied, getPersistedTodoSyntheticAnchor, setPersistedTodoSyntheticAnchor, clearPersistedTodoSyntheticAnchor, getNoteLastReadAt, setNoteLastReadAt, getHistorianFailureState, incrementHistorianFailure, clearHistorianFailureState, getOverflowState, loadTransformPassStateSnapshot, recordOverflowDetected, recordDetectedContextLimit, clearEmergencyRecovery, clearDetectedContextLimit, getPersistedCompactionMarkerState, setPersistedCompactionMarkerState, getDeferredClearedCompactionMarkerState, retireDeferredClearedCompactionMarkerState, parseStrippedPlaceholderState, serializeStrippedPlaceholderState, getStrippedPlaceholderIds, applyStrippedPlaceholderDelta, removeStrippedPlaceholderId, THINKING_BINDING_RECOVERY_FROZEN_PREFIX, THINKING_BINDING_STRIP_ORDER_END_MARKER, thinkingBindingRecoveryFrozenId, COMPACTION_OFF_THINKING_FROZEN_PREFIX, compactionOffThinkingFrozenId, compactionOffFrozenThinkingIds, getThinkingBindingRecoveryTarget, armThinkingBindingRecovery, clearThinkingBindingRecoveryIf, getMergedReasoningStrippedIds, addMergedReasoningStrippedIds, getTrailingBlankDecisions, addTrailingBlankDecisions, demoteTrailingBlankKeepDecisions, getStaleReduceStrippedIds, addStaleReduceStrippedIds, getProcessedImageStrippedIds, parseProcessedImageMarkers, serializeProcessedImageMarkers, getProcessedImageMarkers, addProcessedImageStrippedIds, getPendingCompactionMarkerState, getCompactionMarkerHealth, loadPostprocessReplaySnapshot, setPendingCompactionMarkerState, replacePendingCompactionMarkerStateIf, clearPendingCompactionMarkerStateIf, getPendingPiCompactionMarkerState, clearPendingPiCompactionMarkerStateIf, logPiCompactionMarkerClear, getSessionsWithPendingMarker, setSessionWorkMetrics, getObservedEpochFloor, resolveEpochFloorForPass, getReasoningRemovalState, addRemovedReasoningIds, markDropLeavesReasoning, detectThinkingBindingMismatch, detectLatestTurnThinkingMismatch, isPrefixBoundThinkingModel, detectOverflow, modelAcceptsEmptyContent, isAnthropicFamilyRoute, neutralizeDroppedReasoningPart, restoreNeutralizedReasoningPart, isNeutralizedReasoningPart, variantChangeBustsProviderCache, makeSentinel, makeWholeMessageSentinel, isSentinel, replaySentinelByMessageIds, isInActiveAnthropicTurn, activeAnthropicTurnStart, hasAnthropicReasoning, markServedShapeRepair, prepareServedShapeRepair, stripSystemInjectedMessages, stripDroppedPlaceholderMessages, replayClearedReasoning, replayStrippedInlineThinking, clearOldReasoning, stripClearedReasoning, captureInlineThinkingRepairs, stripInlineThinking, findReasoningBearingAssistantIds, findLatestAssistantReasoningMutationExemptMessage, snapshotTrailingBlankSourceDecisions, findTrailingBlankDecisionCandidates, applyFrozenTrailingBlankDecisions, stripReasoningFromAssistantIds, findMergedReasoningStripDecisions, stripReasoningFromMergedAssistants, getEmptyImageParts, stripProcessedImages, projectOpencodeReasoningBudgetCutoff, DEFAULT_KEEP_REASONING_TOKENS, resolveKeepReasoningTokens, reasoningStepCost, reasoningBudgetCutoff, reasoningTextAndOpaque, opencodeReasoningBudgetCutoff, describeFinalWireTail, estimatePartImageTokens, estimateMessageTokens, wireContentBytes, createFinalWireUsageTracker, estimateFinalWireInputTokens, estimateAppendedWireTokens, SKELETON_REAL_INPUT_MAX_BYTES, partHasCompletedResult, extractToolCallObservation, ToolMutationBatch, createToolDropTarget, resolveHostServedBoundaryId2, hasRawMessageProvider2, setRawMessageProvider2, setBoundedRawMessageProvider2, withRawMessageProvider2, cleanUserText2, withRawSessionMessageCache2, readRawSessionMessages2, readRawSessionMessagePage2, getRawSessionMessageOrdinalCount2, RAW_MESSAGE_VISIT_PAGE_SIZE2, visitRawSessionMessages2, visitRawSessionMessagesAsync2, readRawSessionMessageRange2, prepareRawSessionOrdinals2, primeTailRawMessageCache2, getCachedAbsoluteMessageCount2, primeInMemoryTailRawMessageCache2, readRawSessionMessageOrdinalPage2, getRawSessionStoredMessageCount2, readRawSessionMessageIdOrdinalsForRange2, readRawSessionMessageIdOrdinals2, readRawSessionMessagePartsById2, readRawSessionBoundaryEndpoints2, hasRawSessionMessageById2, readRawSessionMessageOrdinalById2, resolveHistorianChunkStart2, compareRawSessionMessageOrder2, readRawSessionMessageById2, getRawSessionMessageCount2, RAW_SESSION_TAG_KEY_PAGE_SIZE2, getRawSessionTagKeysThrough2, getLegacyProtectedTailStartOrdinal2, getProtectedTailStartOrdinal2, readSessionChunk2, getRawSessionMessageIdsThrough2, readRawSessionSeedTail2 };
package/dist/index.js CHANGED
@@ -28,7 +28,7 @@ import {
28
28
  detectOverflow,
29
29
  isAnthropicFamilyRoute,
30
30
  readRawSessionMessages2
31
- } from "./index-yrrsp47d.js";
31
+ } from "./index-yzjhx10y.js";
32
32
  import {
33
33
  setHarness2
34
34
  } from "./index-pavzsdc6.js";
@@ -72,6 +72,8 @@ import {
72
72
  dreamerRunConfig,
73
73
  pluginConfigReader,
74
74
  createDreamerOutputCapSampler,
75
+ observeSessionActivity,
76
+ backfillSessionActivity,
75
77
  COMPARTMENT_AGENT_SYSTEM_PROMPT,
76
78
  HISTORIAN_EDITOR_SYSTEM_PROMPT,
77
79
  COMPARTMENT_STRUCTURAL_SYSTEM_PROMPT,
@@ -97,7 +99,7 @@ import {
97
99
  checkCompactionMarkerConsistency,
98
100
  clearInjectionCache,
99
101
  clearNoteNudgeTriggerOnly
100
- } from "./index-0s8454t2.js";
102
+ } from "./index-dcqk0y27.js";
101
103
  import"./index-sd3egckz.js";
102
104
  import {
103
105
  hasTrustedAbsoluteWall,
@@ -125,7 +127,6 @@ import {
125
127
  createDreamTaskExecutor,
126
128
  runManualDream,
127
129
  runDueTasksForProject,
128
- scheduleClearAndReindex,
129
130
  startDreamScheduleTimer,
130
131
  createDreamTimerModuleClient,
131
132
  ensureProjectRegisteredFromOpenCodeDirectory,
@@ -138,6 +139,7 @@ import {
138
139
  resolveSessionId,
139
140
  createScheduler,
140
141
  describeStorageUnavailability,
142
+ scheduleClearAndReindex,
141
143
  resolveSessionCacheTtl,
142
144
  runEmbedHistoryDrain,
143
145
  pauseEmbedHistoryDrain,
@@ -185,7 +187,7 @@ import {
185
187
  parameterDescriptionsFor,
186
188
  MagicContextRpcServer,
187
189
  applyHiddenSubagentTemperature
188
- } from "./index-y6xpzjzr.js";
190
+ } from "./index-qzbpbnqt.js";
189
191
  import {
190
192
  resolveOpenCodeDbPath,
191
193
  openCodeDbPathExists,
@@ -209,7 +211,7 @@ import {
209
211
  openDatabaseAsync,
210
212
  isDatabasePersisted,
211
213
  getDatabasePersistenceError
212
- } from "./index-q7ywt6xt.js";
214
+ } from "./index-4cpc59jv.js";
213
215
  import {
214
216
  setHomeProjectPermission,
215
217
  ProjectIdentityError,
@@ -223,12 +225,7 @@ import {
223
225
  } from "./index-kq5w68dp.js";
224
226
  import {
225
227
  deleteTemporalDecision
226
- } from "./index-x9k3mqrf.js";
227
- import {
228
- observeSessionActivity,
229
- backfillSessionActivity,
230
- deleteIndexedMessage2
231
- } from "./index-awcftgmx.js";
228
+ } from "./index-xrnsygfq.js";
232
229
  import {
233
230
  recordSessionProjectIdentity
234
231
  } from "./index-kfyb3k6n.js";
@@ -241,9 +238,9 @@ import {
241
238
  import"./index-cpjk5jd2.js";
242
239
  import {
243
240
  forgetRawSessionOrdinalWatermark2
244
- } from "./index-7tdtpqrg.js";
245
- import"./index-szf8r0ba.js";
246
- import"./index-9q1g3c5q.js";
241
+ } from "./index-rverk2vz.js";
242
+ import"./index-v15ne3a3.js";
243
+ import"./index-7kkphb6c.js";
247
244
  import"./index-fr0wbhdn.js";
248
245
  import {
249
246
  preloadTokenizer
@@ -252,23 +249,23 @@ import {
252
249
  BoundedSessionMap,
253
250
  recordToolDefinition,
254
251
  getCurrentToolSetHash
255
- } from "./index-cfaet9cg.js";
252
+ } from "./index-s1n8dd2n.js";
256
253
  import"./index-wfybj1dw.js";
257
254
  import {
258
255
  getDefaultSubcConnectionFile,
259
256
  SubcModuleTransport
260
- } from "./index-n18sch77.js";
257
+ } from "./index-dzfevacx.js";
261
258
  import"./index-qt1qqasc.js";
262
259
  import"./index-rrv26qjz.js";
263
260
  import {
264
261
  observeOpenCodeTurnEvent,
265
262
  clearTrackedOpenCodeSession,
266
263
  findLastAssistantModelFromOpenCodeDb
267
- } from "./index-c9zrgcnt.js";
264
+ } from "./index-v0dhhxsq.js";
268
265
  import {
269
266
  sendCommandResult2,
270
267
  sendStatusNotification2
271
- } from "./index-jcr6pe7z.js";
268
+ } from "./index-077ht5cq.js";
272
269
  import {
273
270
  detectConflicts,
274
271
  resolveCompactionForBoot
@@ -276,13 +273,13 @@ import {
276
273
  import {
277
274
  sendConflictWarning2,
278
275
  cleanupConflictWarnings2
279
- } from "./index-2haxh8h3.js";
276
+ } from "./index-tvzvjggy.js";
280
277
  import"./index-1zx87sdm.js";
281
278
  import {
282
279
  stripPersistedAssistantText,
283
280
  deleteTagsByMessageId2,
284
281
  getMaxTagNumberBySession2
285
- } from "./index-whcgcfrv.js";
282
+ } from "./index-np3rgfw4.js";
286
283
  import {
287
284
  resolveHistorianModel2,
288
285
  resolveOpenCodeAgentOverrides2,
@@ -292,15 +289,18 @@ import {
292
289
  getEmbedDrainUiStatus,
293
290
  clearEmbedSessionState,
294
291
  getEmbeddingCoverageStatus2
295
- } from "./index-z05n7702.js";
296
- import"./index-3d5wnkq7.js";
297
- import"./index-z928hmnp.js";
292
+ } from "./index-a2fz9hpa.js";
293
+ import"./index-mm93m7y6.js";
294
+ import {
295
+ deleteIndexedMessage
296
+ } from "./index-7gbcg8xv.js";
297
+ import"./index-t3rbb8wr.js";
298
298
  import {
299
299
  pushNotification2
300
300
  } from "./index-x8a7jmkh.js";
301
301
  import"./index-51rdvtkz.js";
302
302
  import"./index-4dhv7mqz.js";
303
- import"./index-t6j3qxnd.js";
303
+ import"./index-4ypqzvhf.js";
304
304
  import"./index-jjvbk92s.js";
305
305
  import"./index-qgh1qwjj.js";
306
306
  import {
@@ -308,11 +308,12 @@ import {
308
308
  cavemanWordRulesForLanguage,
309
309
  setCtxReduceRegisteredGlobally,
310
310
  clearToolPermissionDenied,
311
+ collectForeignTextParts,
311
312
  resetDegradedCacheCount2
312
- } from "./index-axjgxeww.js";
313
+ } from "./index-fq2p158w.js";
313
314
  import {
314
315
  runManagedRecomp2
315
- } from "./index-zzrzjnx5.js";
316
+ } from "./index-n8qmmd7f.js";
316
317
  import {
317
318
  isValidSemver,
318
319
  compareSemverCore
@@ -320,9 +321,9 @@ import {
320
321
  import"./index-fmsr7v69.js";
321
322
  import {
322
323
  runManagedWrapup2
323
- } from "./index-ebsvmc5s.js";
324
+ } from "./index-31y1mznz.js";
324
325
  import"./index-kaqs6h31.js";
325
- import"./index-bhyksfyy.js";
326
+ import"./index-89k1w6x2.js";
326
327
  import {
327
328
  isDreamerRunnable,
328
329
  isSmartNoteSurfaceAvailable,
@@ -8190,7 +8191,7 @@ var require_src2 = __commonJS(function(exports, module) {
8190
8191
  // package.json
8191
8192
  var package_default = {
8192
8193
  name: "@cortexkit/opencode-magic-context",
8193
- version: "0.49.25",
8194
+ version: "0.49.27",
8194
8195
  type: "module",
8195
8196
  description: "OpenCode plugin for Magic Context — cross-session memory and context management",
8196
8197
  main: "dist/index.js",
@@ -9663,7 +9664,7 @@ function cleanupRemovedMessageState(deps, sessionId, messageId) {
9663
9664
  } else {
9664
9665
  sessionLog2(sessionId, `event message.removed: reasoning watermark unchanged at ${currentWatermark} (max tag ${maxRemainingTag})`);
9665
9666
  }
9666
- const removedIndexedMessages = deleteIndexedMessage2(deps.db, sessionId, messageId);
9667
+ const removedIndexedMessages = deleteIndexedMessage(deps.db, sessionId, messageId);
9667
9668
  sessionLog2(sessionId, `event message.removed: deleted ${removedIndexedMessages} indexed message row(s) for ${messageId}`);
9668
9669
  return {
9669
9670
  clearedNoteNudge
@@ -10493,6 +10494,7 @@ function createMagicContextHook(deps) {
10493
10494
  cacheTtlConfigured: deps.config.cacheTtlConfigured,
10494
10495
  sampleCacheTtlConfig: () => deps.sampleHistorianConfig?.() ?? deps.config,
10495
10496
  tagger: deps.tagger,
10497
+ collectForeignTextParts,
10496
10498
  scheduler: deps.scheduler,
10497
10499
  contextUsageMap,
10498
10500
  db,
@@ -12043,7 +12045,7 @@ async function setup(context) {
12043
12045
  if (claimStorageBackupWarningCheck() && isMagicContextStorageOutsideEngram(storageDir)) {
12044
12046
  log2(`[magic-context] Magic Context storage is at ${storageDir}, outside the folder Engram backs up (~/.local/share/cortexkit/magic-context). It is not included in CortexKit backups.`);
12045
12047
  }
12046
- const { registerContext } = await import("./context-keb00be8.js");
12048
+ const { registerContext } = await import("./context-t2k97d6v.js");
12047
12049
  setHarness2("opencode2");
12048
12050
  bindStaleBuildNotice({}, import.meta.url, "opencode2");
12049
12051
  const duties = await registerContext(context);
@@ -12122,7 +12124,7 @@ var server = async (ctx) => {
12122
12124
  if (hasBannerEntries)
12123
12125
  setTimeout(async () => {
12124
12126
  try {
12125
- const { sendStatusNotification } = await importPluginModule(() => import("./send-session-notification-ygj4mja0.js"));
12127
+ const { sendStatusNotification } = await importPluginModule(() => import("./send-session-notification-afzzqy5b.js"));
12126
12128
  const clientWithSessions = ctx.client;
12127
12129
  const sessions = await Promise.resolve(clientWithSessions.session?.list?.()).catch(() => null);
12128
12130
  const sessionList = Array.isArray(sessions) ? sessions : sessions?.data;
@@ -12140,7 +12142,7 @@ var server = async (ctx) => {
12140
12142
  log2(`[magic-context] opencode_db_missing path=${openCodeDbResolution.path} source=${openCodeDbResolution.source}`);
12141
12143
  setTimeout(async () => {
12142
12144
  try {
12143
- const { sendStatusNotification } = await importPluginModule(() => import("./send-session-notification-ygj4mja0.js"));
12145
+ const { sendStatusNotification } = await importPluginModule(() => import("./send-session-notification-afzzqy5b.js"));
12144
12146
  const clientWithSessions = ctx.client;
12145
12147
  const sessions = await Promise.resolve(clientWithSessions.session?.list?.()).catch(() => null);
12146
12148
  const sessionList = Array.isArray(sessions) ? sessions : sessions?.data;
@@ -12417,12 +12419,12 @@ var server = async (ctx) => {
12417
12419
  {
12418
12420
  const fence = getSchemaFenceRejection();
12419
12421
  if (fence) {
12420
- importPluginModule(() => import("./conflict-warning-hook-a27bhggg.js")).then(({ sendSchemaFenceWarning }) => sendSchemaFenceWarning(ctx.client, ctx.directory, fence)).catch((error) => log2("[magic-context] schema-fence warning unavailable:", error));
12422
+ importPluginModule(() => import("./conflict-warning-hook-tgnw019g.js")).then(({ sendSchemaFenceWarning }) => sendSchemaFenceWarning(ctx.client, ctx.directory, fence)).catch((error) => log2("[magic-context] schema-fence warning unavailable:", error));
12421
12423
  }
12422
12424
  }
12423
12425
  const serverUrl = ctx.serverUrl;
12424
12426
  const serverUrlStr = serverUrl instanceof URL ? serverUrl.toString().replace(/\/$/, "") : typeof serverUrl === "string" ? serverUrl.replace(/\/$/, "") : undefined;
12425
- importPluginModule(() => import("./send-session-notification-ygj4mja0.js")).then(({ setNotificationServerUrl }) => {
12427
+ importPluginModule(() => import("./send-session-notification-afzzqy5b.js")).then(({ setNotificationServerUrl }) => {
12426
12428
  setNotificationServerUrl(serverUrlStr);
12427
12429
  }).catch((error) => log2("[magic-context] notification transport unavailable:", error));
12428
12430
  if (conflictResult?.hasConflict) {
@@ -12445,7 +12447,7 @@ var server = async (ctx) => {
12445
12447
  }) => {
12446
12448
  if (!shouldShowAnnouncement())
12447
12449
  return;
12448
- return importPluginModule(() => import("./conflict-warning-hook-a27bhggg.js")).then(({ sendStartupAnnouncement }) => sendStartupAnnouncement(ctx.client, ctx.directory, ANNOUNCEMENT_VERSION, ANNOUNCEMENT_FEATURES, ANNOUNCEMENT_FOOTER, markAnnouncementSeen));
12450
+ return importPluginModule(() => import("./conflict-warning-hook-tgnw019g.js")).then(({ sendStartupAnnouncement }) => sendStartupAnnouncement(ctx.client, ctx.directory, ANNOUNCEMENT_VERSION, ANNOUNCEMENT_FEATURES, ANNOUNCEMENT_FOOTER, markAnnouncementSeen));
12449
12451
  }).catch(() => {});
12450
12452
  }, 8000);
12451
12453
  }
@@ -12519,8 +12521,8 @@ var server = async (ctx) => {
12519
12521
  tryReopenStorage,
12520
12522
  rustReplayParticipant: () => magicContextRuntime.magicContext?.getRustReplayParticipant?.() ?? null,
12521
12523
  onStorageBusyRefusal: async (sessionId, message) => {
12522
- const { sendStatusNotification } = await importPluginModule(() => import("./send-session-notification-ygj4mja0.js"));
12523
- const { abortSessionFailClosed } = await importPluginModule(() => import("./transform-postprocess-phase-hr1ntmjj.js"));
12524
+ const { sendStatusNotification } = await importPluginModule(() => import("./send-session-notification-afzzqy5b.js"));
12525
+ const { abortSessionFailClosed } = await importPluginModule(() => import("./transform-postprocess-phase-6menyyxc.js"));
12524
12526
  await sendStatusNotification(ctx.client, sessionId, message, {
12525
12527
  toastDurationMs: 15000
12526
12528
  });
@@ -4,10 +4,9 @@ import {
4
4
  runMessageFtsRowidMapBackfill2,
5
5
  startMessageFtsRowidMapBackfill2,
6
6
  messageFtsOrdinalRangeIsMapped2,
7
- getMessageFtsRowidMapBackfillProgress2,
8
7
  deleteUnmappedMessageFtsRows2
9
- } from "./index-szf8r0ba.js";
10
- import"./index-7tdtpqrg.js";
8
+ } from "./index-v15ne3a3.js";
9
+ import"./index-rverk2vz.js";
11
10
  import"./index-v0p37hm2.js";
12
11
  import"./index-t5pck3ss.js";
13
12
  import"./index-gzy5w8ya.js";
@@ -17,7 +16,6 @@ import"./index-pavzsdc6.js";
17
16
  import"./index-cpjk5jd2.js";
18
17
  export {
19
18
  deleteUnmappedMessageFtsRows2 as deleteUnmappedMessageFtsRows,
20
- getMessageFtsRowidMapBackfillProgress2 as getMessageFtsRowidMapBackfillProgress,
21
19
  messageFtsOrdinalRangeIsMapped2 as messageFtsOrdinalRangeIsMapped,
22
20
  recordIndexedMessageTime2 as recordIndexedMessageTime,
23
21
  recordMessageFtsRowid2 as recordMessageFtsRowid,
@@ -3,33 +3,30 @@ import {
3
3
  withIndexChunk2,
4
4
  yieldIndexChunk2
5
5
  } from "./index-gzy5w8ya.js";
6
+ import"./index-1zx87sdm.js";
7
+ import"./index-np3rgfw4.js";
8
+ import"./index-b88dwwrh.js";
6
9
  import"./index-pavzsdc6.js";
7
10
  import"./index-g2q4htwp.js";
8
11
  import"./index-h7tgn49j.js";
9
- import"./index-c7phnbvk.js";
10
- import {
11
- MESSAGE_INDEX_MAX_FTS_BYTES2,
12
- messageIndexSkipKey2,
13
- getLastIndexedOrdinal2,
14
- markMessageIndexDirty2,
15
- getIndexableContent2,
16
- indexSingleMessage2
17
- } from "./index-awcftgmx.js";
18
- import"./index-1zx87sdm.js";
19
- import"./index-whcgcfrv.js";
20
- import"./index-b88dwwrh.js";
21
- import"./index-x9k3mqrf.js";
12
+ import"./index-xrnsygfq.js";
22
13
  import"./index-nxrsns5x.js";
23
14
  import"./index-v0p37hm2.js";
24
15
  import"./index-cpjk5jd2.js";
25
- import"./index-7tdtpqrg.js";
16
+ import"./index-rverk2vz.js";
26
17
  import"./index-58e3y90n.js";
27
- import"./index-c9zrgcnt.js";
28
- import"./index-yrrsp47d.js";
29
- import"./index-cfaet9cg.js";
30
- import"./index-szf8r0ba.js";
31
- import"./index-wfybj1dw.js";
32
- import"./index-3d5wnkq7.js";
18
+ import"./index-v0dhhxsq.js";
19
+ import"./index-yzjhx10y.js";
20
+ import"./index-s1n8dd2n.js";
21
+ import {
22
+ MESSAGE_INDEX_MAX_FTS_BYTES,
23
+ messageIndexSkipKey,
24
+ getLastIndexedOrdinal,
25
+ markMessageIndexDirty,
26
+ getIndexableContent,
27
+ indexSingleMessage
28
+ } from "./index-7gbcg8xv.js";
29
+ import"./index-v15ne3a3.js";
33
30
  import"./index-t5pck3ss.js";
34
31
 
35
32
  // src/features/magic-context/message-index-bounded.ts
@@ -80,13 +77,13 @@ async function indexMessageInShortChunks(db, sessionId, message, coordination, i
80
77
  try {
81
78
  if (!isCurrent())
82
79
  return { inserted: false, measurements };
83
- const content = getIndexableContent2(message.role, message.parts);
80
+ const content = getIndexableContent(message.role, message.parts);
84
81
  measurements.sourceBytes = Buffer.byteLength(content);
85
82
  const hash = createHash("sha256");
86
- const oversized = measurements.sourceBytes > MESSAGE_INDEX_MAX_FTS_BYTES2;
83
+ const oversized = measurements.sourceBytes > MESSAGE_INDEX_MAX_FTS_BYTES;
87
84
  measurements.skipped = oversized;
88
85
  if (oversized) {
89
- await transaction(() => markMessageIndexDirty2(db, sessionId, Math.min(message.ordinal, getLastIndexedOrdinal2(db, sessionId) + 1)));
86
+ await transaction(() => markMessageIndexDirty(db, sessionId, Math.min(message.ordinal, getLastIndexedOrdinal(db, sessionId) + 1)));
90
87
  const encoded = Buffer.from(content);
91
88
  const progress = db.prepare("INSERT INTO schema_migrations_meta(key,value) VALUES (?,?) ON CONFLICT(key) DO UPDATE SET value=excluded.value");
92
89
  for (let offset = 0;offset < encoded.length; offset += IDENTITY_CHUNK_BYTES) {
@@ -94,7 +91,7 @@ async function indexMessageInShortChunks(db, sessionId, message, coordination, i
94
91
  return { inserted: false, measurements };
95
92
  const end = Math.min(encoded.length, offset + IDENTITY_CHUNK_BYTES);
96
93
  hash.update(encoded.subarray(offset, end));
97
- await transaction(() => progress.run(messageIndexSkipKey2(sessionId, message.id), JSON.stringify({
94
+ await transaction(() => progress.run(messageIndexSkipKey(sessionId, message.id), JSON.stringify({
98
95
  reason: "oversized",
99
96
  bytes: measurements.sourceBytes,
100
97
  processedBytes: end,
@@ -116,7 +113,7 @@ async function indexMessageInShortChunks(db, sessionId, message, coordination, i
116
113
  content: oversized ? "" : content,
117
114
  ...oversized ? { ftsSkippedBytes: measurements.sourceBytes } : {}
118
115
  };
119
- const inserted = await withIndexChunk2(coordination, () => withSqliteBackgroundWriter2(() => indexSingleMessage2(db, sessionId, message, isCurrent, source)));
116
+ const inserted = await withIndexChunk2(coordination, () => withSqliteBackgroundWriter2(() => indexSingleMessage(db, sessionId, message, isCurrent, source)));
120
117
  return { inserted, measurements };
121
118
  } finally {
122
119
  db.exec = execute;