@cortexkit/opencode-magic-context 0.48.0 → 0.49.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (203) hide show
  1. package/dist/auto-search-worker.js +3 -3
  2. package/dist/{conflict-warning-hook-w8cykrnf.js → conflict-warning-hook-kzx4dmk1.js} +7 -7
  3. package/dist/{context-m0cy262m.js → context-nj5f293n.js} +96 -43
  4. package/dist/{derive-budgets-sg0xsq7s.js → derive-budgets-qz5rrr08.js} +2 -2
  5. package/dist/embedding-backfill-aetxv1vt.js +21 -0
  6. package/dist/embedding-worker.js +4 -4
  7. package/dist/features/magic-context/git-commits/search-git-commits.d.ts +2 -0
  8. package/dist/features/magic-context/git-commits/search-git-commits.d.ts.map +1 -1
  9. package/dist/features/magic-context/message-index.d.ts.map +1 -1
  10. package/dist/features/magic-context/pi-content-decisions.d.ts +1 -1
  11. package/dist/features/magic-context/pi-content-decisions.d.ts.map +1 -1
  12. package/dist/features/magic-context/search-rerank.d.ts +35 -0
  13. package/dist/features/magic-context/search-rerank.d.ts.map +1 -0
  14. package/dist/features/magic-context/search.d.ts +11 -0
  15. package/dist/features/magic-context/search.d.ts.map +1 -1
  16. package/dist/features/magic-context/storage-meta-persisted.d.ts +13 -2
  17. package/dist/features/magic-context/storage-meta-persisted.d.ts.map +1 -1
  18. package/dist/features/magic-context/storage-meta-session.d.ts +1 -1
  19. package/dist/features/magic-context/storage-meta-session.d.ts.map +1 -1
  20. package/dist/features/magic-context/storage-meta.d.ts +1 -1
  21. package/dist/features/magic-context/storage-meta.d.ts.map +1 -1
  22. package/dist/features/magic-context/storage-session-tables.d.ts +2 -0
  23. package/dist/features/magic-context/storage-session-tables.d.ts.map +1 -1
  24. package/dist/features/magic-context/storage-tag-identity-revision.d.ts +29 -9
  25. package/dist/features/magic-context/storage-tag-identity-revision.d.ts.map +1 -1
  26. package/dist/features/magic-context/storage-tags.d.ts +9 -0
  27. package/dist/features/magic-context/storage-tags.d.ts.map +1 -1
  28. package/dist/features/magic-context/storage.d.ts +1 -1
  29. package/dist/features/magic-context/storage.d.ts.map +1 -1
  30. package/dist/features/magic-context/tagger.d.ts +2 -0
  31. package/dist/features/magic-context/tagger.d.ts.map +1 -1
  32. package/dist/features/magic-context/transform-decision-log.d.ts +3 -0
  33. package/dist/features/magic-context/transform-decision-log.d.ts.map +1 -1
  34. package/dist/hooks/magic-context/auto-search-deadline.d.ts.map +1 -1
  35. package/dist/hooks/magic-context/auto-search-replay.fixture.d.ts +24 -0
  36. package/dist/hooks/magic-context/auto-search-replay.fixture.d.ts.map +1 -0
  37. package/dist/hooks/magic-context/auto-search-runner.d.ts +1 -1
  38. package/dist/hooks/magic-context/auto-search-runner.d.ts.map +1 -1
  39. package/dist/hooks/magic-context/auto-search-worker-client.d.ts +2 -0
  40. package/dist/hooks/magic-context/auto-search-worker-client.d.ts.map +1 -1
  41. package/dist/hooks/magic-context/command-handler.d.ts +2 -0
  42. package/dist/hooks/magic-context/command-handler.d.ts.map +1 -1
  43. package/dist/hooks/magic-context/emergency-fail-closed.d.ts +28 -0
  44. package/dist/hooks/magic-context/emergency-fail-closed.d.ts.map +1 -1
  45. package/dist/hooks/magic-context/event-handler.d.ts.map +1 -1
  46. package/dist/hooks/magic-context/historian-host-runner.d.ts +8 -0
  47. package/dist/hooks/magic-context/historian-host-runner.d.ts.map +1 -1
  48. package/dist/hooks/magic-context/hook.d.ts +2 -1
  49. package/dist/hooks/magic-context/hook.d.ts.map +1 -1
  50. package/dist/hooks/magic-context/inject-compartments.d.ts.map +1 -1
  51. package/dist/hooks/magic-context/latest-thinking-recovery.d.ts +7 -0
  52. package/dist/hooks/magic-context/latest-thinking-recovery.d.ts.map +1 -1
  53. package/dist/hooks/magic-context/lkg-slot.d.ts.map +1 -1
  54. package/dist/hooks/magic-context/pass-outcome.d.ts +1 -0
  55. package/dist/hooks/magic-context/pass-outcome.d.ts.map +1 -1
  56. package/dist/hooks/magic-context/read-session-chunk.d.ts +7 -1
  57. package/dist/hooks/magic-context/read-session-chunk.d.ts.map +1 -1
  58. package/dist/hooks/magic-context/read-session-raw.d.ts +35 -0
  59. package/dist/hooks/magic-context/read-session-raw.d.ts.map +1 -1
  60. package/dist/hooks/magic-context/rust-mode-transform.d.ts +36 -0
  61. package/dist/hooks/magic-context/rust-mode-transform.d.ts.map +1 -1
  62. package/dist/hooks/magic-context/shared-compartment-boundaries.d.ts +8 -1
  63. package/dist/hooks/magic-context/shared-compartment-boundaries.d.ts.map +1 -1
  64. package/dist/hooks/magic-context/strict-thinking-prefix.d.ts +8 -0
  65. package/dist/hooks/magic-context/strict-thinking-prefix.d.ts.map +1 -0
  66. package/dist/hooks/magic-context/tag-messages.d.ts.map +1 -1
  67. package/dist/hooks/magic-context/transform-postprocess-phase.d.ts +13 -0
  68. package/dist/hooks/magic-context/transform-postprocess-phase.d.ts.map +1 -1
  69. package/dist/hooks/magic-context/transform.d.ts +1 -0
  70. package/dist/hooks/magic-context/transform.d.ts.map +1 -1
  71. package/dist/{index-db7zwa3v.js → index-1bt88epp.js} +93 -9
  72. package/dist/{index-f0h6xwqm.js → index-1g30axtz.js} +229 -67
  73. package/dist/{index-k1xb52kd.js → index-1r0k9js3.js} +5 -5
  74. package/dist/{index-692jzy0p.js → index-2jcbj7r1.js} +122 -371
  75. package/dist/{index-bdckkfw6.js → index-2jgwttpt.js} +16 -8
  76. package/dist/{index-2y0s2hep.js → index-4mjhqadz.js} +1 -1
  77. package/dist/{index-pdecwzrd.js → index-57mrqed8.js} +1 -1
  78. package/dist/{index-ty64eqcn.js → index-9qjqq45k.js} +3 -3
  79. package/dist/{index-yq8n9qcb.js → index-9rt53q79.js} +4 -4
  80. package/dist/{index-pg50n748.js → index-b7mv1jx3.js} +4 -4
  81. package/dist/{index-mmyh6d8f.js → index-ezmszwbd.js} +6 -4
  82. package/dist/{index-fbv1dn35.js → index-gzcmtmar.js} +1 -1
  83. package/dist/{index-0an7742d.js → index-h2py7207.js} +549 -973
  84. package/dist/{index-0qhce371.js → index-h2wc01qk.js} +2 -2
  85. package/dist/{index-dhwzyd54.js → index-h5zfkjyk.js} +160 -25
  86. package/dist/{index-q2tqeqde.js → index-ha87j7a8.js} +1229 -78
  87. package/dist/{index-14cjxt20.js → index-hj2q50k0.js} +45 -8
  88. package/dist/{index-cb7emxgj.js → index-kmpvemph.js} +336 -6
  89. package/dist/{index-c43kr12f.js → index-kp5qe690.js} +7 -7
  90. package/dist/{index-bhvjj0ys.js → index-kq57tdf0.js} +2 -2
  91. package/dist/{index-7mx8v0pw.js → index-nm6a8xpd.js} +4 -4
  92. package/dist/{index-8j7gqj40.js → index-nsjyysj0.js} +6 -2
  93. package/dist/{index-k9nnwad5.js → index-nydv6g8r.js} +44 -7
  94. package/dist/{index-5zygecde.js → index-peshmj6h.js} +4 -4
  95. package/dist/{index-knh4y330.js → index-pxwp2hjk.js} +7 -2
  96. package/dist/{index-1qb0z7wa.js → index-qx53vezw.js} +1 -1
  97. package/dist/{index-q7h7csab.js → index-s4j7t92z.js} +9 -9
  98. package/dist/{index-z8e0psj8.js → index-stbr4ce6.js} +3 -3
  99. package/dist/{index-jcbd3znx.js → index-tqf7yg27.js} +1 -1
  100. package/dist/{index-72nhv486.js → index-vkbqdnkj.js} +2 -2
  101. package/dist/{index-eeezr5zz.js → index-z1tjp257.js} +1 -1
  102. package/dist/index.d.ts.map +1 -1
  103. package/dist/index.js +61 -44
  104. package/dist/{logger-d3wex3dz.js → logger-ewak5q1s.js} +1 -1
  105. package/dist/{message-index-bounded-7ezbgddp.js → message-index-bounded-h0mrd4pr.js} +13 -13
  106. package/dist/{message-time-backfill-brbd63hv.js → message-time-backfill-8x06r9kx.js} +2 -2
  107. package/dist/migration-worker.js +9 -9
  108. package/dist/plugin/hooks/create-session-hooks.d.ts +2 -0
  109. package/dist/plugin/hooks/create-session-hooks.d.ts.map +1 -1
  110. package/dist/plugin/tool-registry.d.ts.map +1 -1
  111. package/dist/{project-embedding-registry-7qzptcw7.js → project-embedding-registry-rtt0djyb.js} +9 -9
  112. package/dist/raw-ordinal-warmup-worker.js +4 -4
  113. package/dist/{read-session-chunk-6k83m4fj.js → read-session-chunk-ty89v75e.js} +10 -8
  114. package/dist/{read-session-raw-3g9qy1xa.js → read-session-raw-8sjbc9h0.js} +5 -3
  115. package/dist/{recomp-orchestrator-d3fp1cy0.js → recomp-orchestrator-4f1yyd1q.js} +25 -25
  116. package/dist/{safe-notification-target-5ffqq32m.js → safe-notification-target-q0cyrx3x.js} +2 -2
  117. package/dist/{search-epax1ecv.js → search-pz4f4wge.js} +20 -20
  118. package/dist/{send-session-notification-erecz4y4.js → send-session-notification-38cd5dqt.js} +5 -5
  119. package/dist/shared/auto-search-lifecycle.d.ts +14 -0
  120. package/dist/shared/auto-search-lifecycle.d.ts.map +1 -1
  121. package/dist/shared/logger.d.ts.map +1 -1
  122. package/dist/shared/models-dev-temperature.d.ts +18 -0
  123. package/dist/shared/models-dev-temperature.d.ts.map +1 -0
  124. package/dist/shared/project-directory-key.d.ts +16 -0
  125. package/dist/shared/project-directory-key.d.ts.map +1 -1
  126. package/dist/shared/subagent-temperature.d.ts +46 -0
  127. package/dist/shared/subagent-temperature.d.ts.map +1 -0
  128. package/dist/{storage-tags-d3b0v2ss.js → storage-tags-k0pda32s.js} +6 -4
  129. package/dist/tools/ctx-reduce/tools.d.ts.map +1 -1
  130. package/dist/tools/ctx-search/tools.d.ts.map +1 -1
  131. package/dist/tools/ctx-search/types.d.ts +1 -0
  132. package/dist/tools/ctx-search/types.d.ts.map +1 -1
  133. package/dist/{transform-postprocess-phase-spcy2qre.js → transform-postprocess-phase-tck4g20s.js} +25 -25
  134. package/dist/v2/auto-search-worker.js +3 -3
  135. package/dist/v2/{context-sf98kstd.js → context-crbt6p1y.js} +809 -1052
  136. package/dist/v2/{derive-budgets-3vc0y84t.js → derive-budgets-fgej9j46.js} +3 -3
  137. package/dist/v2/embedding-backfill-ph1qfyn3.js +21 -0
  138. package/dist/v2/embedding-worker.js +4 -4
  139. package/dist/v2/hidden-child-native.d.ts.map +1 -1
  140. package/dist/v2/hidden-completion.d.ts +7 -0
  141. package/dist/v2/hidden-completion.d.ts.map +1 -1
  142. package/dist/v2/hooks/context.d.ts.map +1 -1
  143. package/dist/v2/hooks/dream-trigger.d.ts +4 -1
  144. package/dist/v2/hooks/dream-trigger.d.ts.map +1 -1
  145. package/dist/v2/hooks/generate.d.ts +9 -2
  146. package/dist/v2/hooks/generate.d.ts.map +1 -1
  147. package/dist/v2/{logger-mxd0ym09.js → logger-pj02s7sr.js} +1 -1
  148. package/dist/v2/{message-index-bounded-dy3s2k1e.js → message-index-bounded-xwqdywxg.js} +13 -13
  149. package/dist/v2/{message-time-backfill-gtx1pwk1.js → message-time-backfill-cje68egj.js} +2 -2
  150. package/dist/v2/migration-worker.js +9 -9
  151. package/dist/v2/{project-embedding-registry-1tgba5dv.js → project-embedding-registry-d6m7tyxr.js} +9 -9
  152. package/dist/v2/raw-ordinal-warmup-worker.js +4 -4
  153. package/dist/v2/{read-session-chunk-rh4khdkv.js → read-session-chunk-8p5mdryx.js} +10 -8
  154. package/dist/v2/{read-session-raw-bsbmf0vj.js → read-session-raw-j8dvp7f4.js} +5 -3
  155. package/dist/v2/{recomp-orchestrator-az61rfcg.js → recomp-orchestrator-ckfgt6wq.js} +26 -26
  156. package/dist/v2/{safe-notification-target-73ax1p5v.js → safe-notification-target-y3p1hce9.js} +2 -2
  157. package/dist/v2/{search-nzkwrc6n.js → search-ym8rehhz.js} +20 -20
  158. package/dist/v2/{send-session-notification-6km439kn.js → send-session-notification-5m0yapqx.js} +5 -5
  159. package/dist/v2/{server-x2g40a71.js → server-19zjmn02.js} +2 -2
  160. package/dist/v2/{server-sggvvzhb.js → server-1tk82krw.js} +45 -8
  161. package/dist/v2/{server-vqpf3167.js → server-2s6ayq3t.js} +2 -2
  162. package/dist/v2/{server-z2037m6z.js → server-2s9qz6n7.js} +2 -2
  163. package/dist/v2/{server-k228xhjg.js → server-3j4d00kf.js} +1 -1
  164. package/dist/v2/{server-aan4q8mx.js → server-3t0q2cqx.js} +1 -1
  165. package/dist/v2/{server-2fbhp79z.js → server-4ez8mntn.js} +16 -8
  166. package/dist/v2/{server-zxhgvsf9.js → server-676xw7at.js} +1 -1
  167. package/dist/v2/{server-52awr2mw.js → server-6byqfbqf.js} +93 -9
  168. package/dist/v2/{server-qye6ykf7.js → server-7ekna9zs.js} +2 -2
  169. package/dist/v2/{server-g5r0n3b6.js → server-7h861yms.js} +160 -25
  170. package/dist/v2/{server-v06jcv0w.js → server-8k2agx29.js} +1 -1
  171. package/dist/v2/{server-686jg6eb.js → server-c5rrgrcd.js} +44 -7
  172. package/dist/v2/{server-4k748ke6.js → server-hb6xhh9q.js} +2 -2
  173. package/dist/v2/{server-7wwc2nga.js → server-jvxzm1jy.js} +7 -7
  174. package/dist/v2/{server-1r6pmz4f.js → server-kzns2hbz.js} +1 -1
  175. package/dist/v2/{server-xdfwt6kh.js → server-pj4pjv02.js} +2 -2
  176. package/dist/v2/{server-psqc7e9n.js → server-q4ph9bwn.js} +1227 -78
  177. package/dist/v2/{server-8pyt7hev.js → server-sa8jvrfc.js} +9 -9
  178. package/dist/v2/{server-ezhze64f.js → server-ss95ky04.js} +4 -4
  179. package/dist/v2/{server-5m3dt5r1.js → server-t4k4qexw.js} +6 -2
  180. package/dist/v2/{server-e0vdaae2.js → server-v4mewb78.js} +4 -4
  181. package/dist/v2/{server-gjcr4w98.js → server-w32kmdez.js} +4 -4
  182. package/dist/v2/{server-k8x2rbxc.js → server-x4hscabv.js} +119 -365
  183. package/dist/v2/{server-yczc713m.js → server-xwz4dqh9.js} +7 -2
  184. package/dist/v2/{server-xxm59eww.js → server-ycw9qqcy.js} +4 -4
  185. package/dist/v2/{server-8tqanswc.js → server-zp53y8js.js} +331 -4
  186. package/dist/v2/server.js +4 -4
  187. package/dist/v2/{storage-tags-w4tv77sn.js → storage-tags-8vw924zn.js} +6 -4
  188. package/dist/v2/store-reader.d.ts +8 -2
  189. package/dist/v2/store-reader.d.ts.map +1 -1
  190. package/dist/v2/{wrapup-orchestrator-mz7efs7w.js → wrapup-orchestrator-a7efxaax.js} +26 -26
  191. package/dist/wrapup-orchestrator-barbc6h9.js +44 -0
  192. package/package.json +1 -1
  193. package/src/shared/auto-search-lifecycle.ts +43 -0
  194. package/src/shared/logger.test.ts +38 -0
  195. package/src/shared/logger.ts +10 -2
  196. package/src/shared/models-dev-temperature.ts +107 -0
  197. package/src/shared/project-directory-key.test.ts +59 -0
  198. package/src/shared/project-directory-key.ts +20 -0
  199. package/src/shared/subagent-temperature.test.ts +270 -0
  200. package/src/shared/subagent-temperature.ts +110 -0
  201. package/dist/embedding-backfill-9rcm1mfy.js +0 -21
  202. package/dist/v2/embedding-backfill-vn8g1nh1.js +0 -21
  203. package/dist/wrapup-orchestrator-amzta1t4.js +0 -44
@@ -11,7 +11,7 @@ import {
11
11
  sanitizeDiagnosticText,
12
12
  log2,
13
13
  sessionLog2
14
- } from "./index-8j7gqj40.js";
14
+ } from "./index-nsjyysj0.js";
15
15
  import {
16
16
  createScanner,
17
17
  parseTree,
@@ -35,7 +35,7 @@ import {
35
35
  deriveTriggerBudget2,
36
36
  resolveHistorianProducerLimits2,
37
37
  producerSourceLocalBudget2
38
- } from "./index-pdecwzrd.js";
38
+ } from "./index-57mrqed8.js";
39
39
  import {
40
40
  withContentLanguageDirective,
41
41
  buildPrimaryLanguageDirective,
@@ -49,7 +49,7 @@ import {
49
49
  MagicContextConfigSchema,
50
50
  LIVE_RELOAD_CONFIG_PATHS,
51
51
  deriveDefaultProtectedTokens
52
- } from "./index-bhvjj0ys.js";
52
+ } from "./index-kq57tdf0.js";
53
53
  import {
54
54
  resolveDecisionCalibration,
55
55
  providerMass,
@@ -60,7 +60,7 @@ import {
60
60
  hasMeaningfulUserText2,
61
61
  estimateTokens,
62
62
  estimateFixedPromptTokens
63
- } from "./index-1qb0z7wa.js";
63
+ } from "./index-qx53vezw.js";
64
64
  import {
65
65
  FAIL_CLOSED_DOCTOR_COMMAND,
66
66
  isPidAlive,
@@ -68,7 +68,7 @@ import {
68
68
  LATEST_SUPPORTED_VERSION,
69
69
  getPersistedSchemaVersion,
70
70
  openDatabase
71
- } from "./index-q7h7csab.js";
71
+ } from "./index-s4j7t92z.js";
72
72
  import {
73
73
  Database2,
74
74
  prepareCachedStatement2,
@@ -84,11 +84,11 @@ import {
84
84
  resolveStoredPathWorkspaceIdentity,
85
85
  sourceNameForMemory,
86
86
  computeWorkspaceEpochFingerprint
87
- } from "./index-7mx8v0pw.js";
87
+ } from "./index-nm6a8xpd.js";
88
88
  import {
89
89
  getTableColumnNames,
90
90
  stableStringify
91
- } from "./index-db7zwa3v.js";
91
+ } from "./index-1bt88epp.js";
92
92
  import {
93
93
  V2_MEMORY_CATEGORIES,
94
94
  CATEGORY_PRIORITY,
@@ -101,12 +101,13 @@ import {
101
101
  claimOpenCodeDbDiagnosticOnce
102
102
  } from "./index-58e3y90n.js";
103
103
  import {
104
+ sameProjectDirectory,
104
105
  shouldSkipHomeProjectMemory,
105
106
  resolveProjectIdentity
106
- } from "./index-knh4y330.js";
107
+ } from "./index-pxwp2hjk.js";
107
108
  import {
108
109
  getMeasuredToolDefinitionTokens
109
- } from "./index-0qhce371.js";
110
+ } from "./index-h2wc01qk.js";
110
111
  import {
111
112
  buildCanonicalChunkTextFromFts,
112
113
  buildCompartmentSummaryFallbackText,
@@ -116,7 +117,7 @@ import {
116
117
  replaceCompartmentChunkEmbeddings,
117
118
  deleteChunkEmbedBackoffForSession,
118
119
  chunkWindowSourceKey
119
- } from "./index-pg50n748.js";
120
+ } from "./index-b7mv1jx3.js";
120
121
  import {
121
122
  clearCompressionDepth,
122
123
  clearCompressionDepthRange,
@@ -124,7 +125,7 @@ import {
124
125
  toMessageIndexSource,
125
126
  clearIndexedMessagesInTransaction,
126
127
  indexSourcesAfterOrdinal
127
- } from "./index-14cjxt20.js";
128
+ } from "./index-hj2q50k0.js";
128
129
  import {
129
130
  stripWellFormedLeadingTagPrefix,
130
131
  stripTagPrefix,
@@ -138,15 +139,15 @@ import {
138
139
  getTagNumberByMessageId2,
139
140
  TAG_SELECT_COLUMNS2,
140
141
  getActiveTagsBySession2
141
- } from "./index-k9nnwad5.js";
142
+ } from "./index-nydv6g8r.js";
142
143
  import {
143
144
  isStrictGapHealingMessage2,
144
145
  noteRawSessionSummaryRowWritten2
145
- } from "./index-dhwzyd54.js";
146
+ } from "./index-h5zfkjyk.js";
146
147
  import {
147
148
  withReadOnlySessionDb,
148
149
  getMessageTimesFromOpenCodeDb
149
- } from "./index-ty64eqcn.js";
150
+ } from "./index-9qjqq45k.js";
150
151
  import {
151
152
  retreatPastHostUnservedRows,
152
153
  snapTerminalCompartmentToServedRow,
@@ -179,21 +180,23 @@ import {
179
180
  getRawSessionTagKeysThrough2,
180
181
  getLegacyProtectedTailStartOrdinal2,
181
182
  readSessionChunk2
182
- } from "./index-bdckkfw6.js";
183
+ } from "./index-2jgwttpt.js";
183
184
  import {
184
185
  contentSha2562,
185
186
  enqueueShadowEmbeddingItems2,
186
187
  getProjectChunkEmbeddingModelId2,
187
188
  getProjectEmbeddingMaxInputTokens2,
188
189
  embedItemsForProject2
189
- } from "./index-c43kr12f.js";
190
+ } from "./index-kp5qe690.js";
190
191
  import {
192
+ renderUserFacingFailure,
193
+ userFacingFailureCode,
191
194
  getSessionNotes,
192
195
  getReadySmartNotes,
193
196
  insertPrimerCandidates,
194
197
  promoteSessionFactsDurable,
195
198
  embedPromotedFacts
196
- } from "./index-cb7emxgj.js";
199
+ } from "./index-kmpvemph.js";
197
200
  import {
198
201
  pushNotification2
199
202
  } from "./index-x8a7jmkh.js";
@@ -207,7 +210,7 @@ import {
207
210
  } from "./index-7jzrrxap.js";
208
211
  import {
209
212
  sendStatusNotification2
210
- } from "./index-yq8n9qcb.js";
213
+ } from "./index-9rt53q79.js";
211
214
  import {
212
215
  getErrorMessage,
213
216
  describeError
@@ -225,7 +228,7 @@ import {
225
228
  import {
226
229
  logSlowWriteTransaction,
227
230
  WriteTransactionSteps
228
- } from "./index-2y0s2hep.js";
231
+ } from "./index-4mjhqadz.js";
229
232
 
230
233
  // src/agents/permissions.ts
231
234
  function buildAllowOnlyPermission(allowedTools, agentLabel) {
@@ -4238,335 +4241,6 @@ Memory is disabled for this project: do NOT emit a <facts> block. Produce compar
4238
4241
  `);
4239
4242
  }
4240
4243
 
4241
- // src/shared/user-facing-codes.ts
4242
- var USER_FACING_FAILURES = {
4243
- historian_unavailable: {
4244
- code: "MC-H01",
4245
- sentence: "History compression could not finish this turn.",
4246
- action: "It will retry automatically."
4247
- },
4248
- historian_saved_history_misaligned: {
4249
- code: "MC-H03",
4250
- sentence: "History compression is paused because this session's saved summaries no longer line up with its messages.",
4251
- action: "Run /ctx-recomp to rebuild them."
4252
- },
4253
- history_boundary_unresolved: {
4254
- code: "MC-H04",
4255
- sentence: "This request was not sent: the message that marks where this session's history summary ends is missing from the OpenCode store, and without it the request is larger than the model's context window.",
4256
- action: "Run /ctx-recomp to rebuild the history summary."
4257
- },
4258
- history_over_window_unmanaged: {
4259
- code: "MC-H06",
4260
- sentence: "This request was not sent: this session's history is larger than the model's context window, and Magic Context does not have a summary of it yet to send in its place.",
4261
- action: "Send your message again once history compression has caught up, or switch to a model with a larger context window."
4262
- },
4263
- frozen_history_over_window: {
4264
- code: "MC-H07",
4265
- sentence: "This request was not sent: the conversation is larger than the context window the provider reported, and the compressed history Magic Context has ready does not fit either.",
4266
- action: "Run /ctx-flush to compress it now, then send your message again."
4267
- },
4268
- historian_window_too_small: {
4269
- code: "MC-H05",
4270
- sentence: "History compression is paused because the history model's context window is too small for its instructions.",
4271
- action: "Set historian.model in magic-context.jsonc to a model with a larger context window."
4272
- },
4273
- recomp_unavailable: {
4274
- code: "MC-R01",
4275
- sentence: "History compression could not be rebuilt.",
4276
- action: "Run /ctx-recomp again."
4277
- },
4278
- dream_provider_timeout: {
4279
- code: "MC-D01",
4280
- sentence: "Memory maintenance took too long to respond.",
4281
- action: "Run /ctx-dream again."
4282
- },
4283
- dream_provider_error: {
4284
- code: "MC-D02",
4285
- sentence: "Memory maintenance could not reach its model.",
4286
- action: "Check the model connection, then run /ctx-dream again."
4287
- },
4288
- dream_local_refusal: {
4289
- code: "MC-D12",
4290
- sentence: "Memory maintenance was refused before reaching the model.",
4291
- action: "Check the hidden-request diagnostic in the Magic Context log before retrying."
4292
- },
4293
- dream_step_limit: {
4294
- code: "MC-D10",
4295
- sentence: "Memory maintenance stopped at its hidden agent step limit.",
4296
- action: "This task needs less work per run; changing the model connection will not help."
4297
- },
4298
- dream_token_budget: {
4299
- code: "MC-D11",
4300
- sentence: "Memory maintenance reached its prompt-token budget.",
4301
- action: "The unfinished items will be retried on the next run."
4302
- },
4303
- dream_empty_completion: {
4304
- code: "MC-D03",
4305
- sentence: "Memory maintenance received no usable response.",
4306
- action: "Run /ctx-dream again."
4307
- },
4308
- dream_no_models: {
4309
- code: "MC-D04",
4310
- sentence: "Memory maintenance has no model available.",
4311
- action: "Check the model settings, then run /ctx-dream again."
4312
- },
4313
- dream_child_aborted: {
4314
- code: "MC-D05",
4315
- sentence: "Memory maintenance was interrupted.",
4316
- action: "Run /ctx-dream again."
4317
- },
4318
- dream_parse_failed: {
4319
- code: "MC-D06",
4320
- sentence: "Memory maintenance could not use the model response.",
4321
- action: "Run /ctx-dream again."
4322
- },
4323
- dream_unknown: {
4324
- code: "MC-D07",
4325
- sentence: "Memory maintenance could not finish.",
4326
- action: "Run /ctx-dream again."
4327
- },
4328
- dreamer_tick_blocked: {
4329
- code: "MC-D09",
4330
- sentence: "Background maintenance is not running: its last pass stopped before it reached the scheduled tasks.",
4331
- action: "It is retried automatically; if it keeps happening, check the Magic Context log for the stage that stopped and run `npx @cortexkit/magic-context doctor`."
4332
- },
4333
- dream_task_needs_tool_loop: {
4334
- code: "MC-D08",
4335
- sentence: "Some memory maintenance tasks need a tool loop this host does not provide.",
4336
- action: "The remaining tasks still run; the listed ones are skipped on this host."
4337
- },
4338
- embedding_substitution_rejected: {
4339
- code: "MC-E01",
4340
- sentence: "Search indexing could not use the selected model.",
4341
- action: "Check the embedding model setting, then run /ctx-embed start again."
4342
- },
4343
- embedding_http_error: {
4344
- code: "MC-E02",
4345
- sentence: "The search indexing provider refused the request.",
4346
- action: "Check the provider connection and credentials, then run /ctx-embed start again."
4347
- },
4348
- embedding_transport_error: {
4349
- code: "MC-E03",
4350
- sentence: "Search indexing could not reach its provider.",
4351
- action: "Check the connection, then run /ctx-embed start again."
4352
- },
4353
- embedding_invalid_envelope: {
4354
- code: "MC-E04",
4355
- sentence: "Search indexing received an unsupported response.",
4356
- action: "Check the embedding endpoint, then run /ctx-embed start again."
4357
- },
4358
- embedding_empty_result: {
4359
- code: "MC-E05",
4360
- sentence: "Search indexing received no usable result.",
4361
- action: "Run /ctx-embed start again."
4362
- },
4363
- embedding_certification_refusal: {
4364
- code: "MC-E06",
4365
- sentence: "Search indexing is not ready for this provider.",
4366
- action: "Finish the provider setup, or set a fallback provider in the embedding settings, then run /ctx-embed start again."
4367
- },
4368
- embedding_credential_required: {
4369
- code: "MC-E07",
4370
- sentence: "Search indexing needs provider credentials.",
4371
- action: "Sign in to the provider, then run /ctx-embed start again."
4372
- },
4373
- embedding_local_binding_missing: {
4374
- code: "MC-E08",
4375
- sentence: "Local search indexing is unavailable on this system.",
4376
- action: "Run `npx @cortexkit/magic-context doctor`, then retry."
4377
- },
4378
- embedding_local_fs_unavailable: {
4379
- code: "MC-E09",
4380
- sentence: "Local search indexing cannot save its model files.",
4381
- action: "Update or reinstall Magic Context, then retry."
4382
- },
4383
- embedding_local_download_failure: {
4384
- code: "MC-E10",
4385
- sentence: "Local search indexing could not download its model.",
4386
- action: "Check the network connection, then retry."
4387
- },
4388
- embedding_local_runtime_error: {
4389
- code: "MC-E11",
4390
- sentence: "Local search indexing could not start.",
4391
- action: "Run `npx @cortexkit/magic-context doctor`, then retry."
4392
- },
4393
- embedding_unavailable: {
4394
- code: "MC-E12",
4395
- sentence: "Search indexing could not finish.",
4396
- action: "Run /ctx-embed start again."
4397
- },
4398
- status_unavailable: {
4399
- code: "MC-S01",
4400
- sentence: "Magic Context status is temporarily unavailable.",
4401
- action: "Retry /ctx-status in a moment."
4402
- },
4403
- transform_update_failed: {
4404
- code: "MC-S02",
4405
- sentence: "The last context update did not finish.",
4406
- action: "Send another message to retry."
4407
- },
4408
- transform_pass_degraded: {
4409
- code: "MC-S06",
4410
- sentence: "This request was not sent: Magic Context could not finish preparing it, and without that preparation it could be far larger than the previous request.",
4411
- action: "Send your message again."
4412
- },
4413
- configuration_warning: {
4414
- code: "MC-S03",
4415
- sentence: "Some configuration settings could not be applied.",
4416
- action: "Fix the configuration warning shown in /ctx-status, then restart."
4417
- },
4418
- status_log_unavailable: {
4419
- code: "MC-S04",
4420
- sentence: "Some diagnostic details could not be saved.",
4421
- action: "Retry /ctx-status in a moment."
4422
- },
4423
- memory_writes_paused: {
4424
- code: "MC-C01",
4425
- sentence: "Memory writes are paused while the engine syncs.",
4426
- action: "Retry in a moment."
4427
- },
4428
- memory_access_unavailable: {
4429
- code: "MC-C02",
4430
- sentence: "Memory access is temporarily unavailable.",
4431
- action: "Retry in a moment."
4432
- },
4433
- note_changes_paused: {
4434
- code: "MC-C03",
4435
- sentence: "Note changes are paused while the engine syncs.",
4436
- action: "Retry in a moment."
4437
- },
4438
- note_access_unavailable: {
4439
- code: "MC-C04",
4440
- sentence: "Notes are temporarily unavailable.",
4441
- action: "Retry in a moment."
4442
- },
4443
- context_cleanup_paused: {
4444
- code: "MC-C05",
4445
- sentence: "Context cleanup is paused while the engine syncs.",
4446
- action: "Retry in a moment."
4447
- },
4448
- partial_history_unavailable: {
4449
- code: "MC-C06",
4450
- sentence: "Partial history compression is not available in the current mode.",
4451
- action: "Run /ctx-recomp without a range."
4452
- },
4453
- smart_note_conditions_unavailable: {
4454
- code: "MC-C08",
4455
- sentence: "Conditional notes are not available in the current mode.",
4456
- action: "Save a regular note without a condition."
4457
- },
4458
- history_compression_paused: {
4459
- code: "MC-C09",
4460
- sentence: "History compression is paused while the engine syncs.",
4461
- action: "Retry in a moment."
4462
- },
4463
- history_compression_needs_message: {
4464
- code: "MC-C12",
4465
- sentence: "History compression has not seen this session since Magic Context reconnected.",
4466
- action: "Send a message in this session first, then run /ctx-wrapup again."
4467
- },
4468
- context_service_unavailable: {
4469
- code: "MC-C10",
4470
- sentence: "Magic Context is temporarily unavailable.",
4471
- action: "Retry in a moment."
4472
- },
4473
- context_db_missing: {
4474
- code: "MC-C15",
4475
- sentence: "Magic Context has no context.db.",
4476
- action: "Run `npx @cortexkit/magic-context doctor store init`, then restart ck-mc."
4477
- },
4478
- single_store_migration_required: {
4479
- code: "MC-C14",
4480
- sentence: "Magic Context's Rust mode needs a one-time migration of its store.",
4481
- action: "Quit OpenCode and every ck-mc process, then run `magic-context doctor single-store migrate`."
4482
- },
4483
- store_ahead_of_binary: {
4484
- code: "MC-C13",
4485
- sentence: "Magic Context refused to start: its store (store.db) was migrated by a newer ck-mc build than the one running.",
4486
- action: "Update ck-mc, or roll back by restoring ck-mc together with context.db and store.db from the same backup."
4487
- },
4488
- compaction_marker_missing: {
4489
- code: "MC-C11",
4490
- sentence: "The history boundary marker is missing from the OpenCode store, so requests carry the full session.",
4491
- action: "It is retried on every message; if this persists, run `/ctx-flush`."
4492
- },
4493
- memory_mirror_stalled: {
4494
- code: "MC-M01",
4495
- sentence: "Memory synchronization stopped before the host mirror caught up.",
4496
- action: "Send another message to resume it, or run `ck doctor drain-authority`."
4497
- },
4498
- memory_authority_mismatch: {
4499
- code: "MC-M02",
4500
- sentence: "Memory authority is inconsistent between the host and module.",
4501
- action: "Run `ck doctor drain-authority` before changing Rust mode."
4502
- },
4503
- dreamer_task_failing: {
4504
- code: "MC-S05",
4505
- sentence: "A background maintenance task keeps failing on its schedule.",
4506
- action: "Check the Magic Context log for the failing task and its error."
4507
- }
4508
- };
4509
- function renderUserFacingFailure(key, style = "markdown") {
4510
- const failure = USER_FACING_FAILURES[key];
4511
- const action = style === "plain" ? failure.action.replaceAll("`", "") : failure.action;
4512
- return `${failure.sentence} ${action} (${failure.code})`;
4513
- }
4514
- function userFacingFailureCode(key) {
4515
- return USER_FACING_FAILURES[key].code;
4516
- }
4517
- var CAPABILITY_FAILURES = {
4518
- memory_write: "memory_writes_paused",
4519
- memory_access: "memory_access_unavailable",
4520
- note_change: "note_changes_paused",
4521
- note_access: "note_access_unavailable",
4522
- context_cleanup: "context_cleanup_paused",
4523
- partial_history: "partial_history_unavailable",
4524
- smart_note_condition: "smart_note_conditions_unavailable",
4525
- history_compression: "history_compression_paused",
4526
- context_service: "context_service_unavailable"
4527
- };
4528
- function renderCapabilityRefusal(capability) {
4529
- return renderUserFacingFailure(CAPABILITY_FAILURES[capability]);
4530
- }
4531
- function capabilityRefusalCode(capability) {
4532
- return userFacingFailureCode(CAPABILITY_FAILURES[capability]);
4533
- }
4534
- var DREAM_FAILURE_KEYS = {
4535
- provider_timeout: "dream_provider_timeout",
4536
- provider_error: "dream_provider_error",
4537
- local_refusal: "dream_local_refusal",
4538
- step_limit: "dream_step_limit",
4539
- token_budget: "dream_token_budget",
4540
- empty_completion: "dream_empty_completion",
4541
- no_models: "dream_no_models",
4542
- child_aborted: "dream_child_aborted",
4543
- parse_failed: "dream_parse_failed",
4544
- unknown: "dream_unknown"
4545
- };
4546
- var EMBEDDING_FAILURE_KEYS = {
4547
- substitution_rejected: "embedding_substitution_rejected",
4548
- http_error: "embedding_http_error",
4549
- transport_error: "embedding_transport_error",
4550
- invalid_envelope: "embedding_invalid_envelope",
4551
- empty_result: "embedding_empty_result",
4552
- certification_refusal: "embedding_certification_refusal",
4553
- credential_required: "embedding_credential_required",
4554
- local_binding_missing: "embedding_local_binding_missing",
4555
- local_fs_unavailable: "embedding_local_fs_unavailable",
4556
- local_download_failure: "embedding_local_download_failure",
4557
- local_runtime_error: "embedding_local_runtime_error"
4558
- };
4559
- function renderDreamFailure(failureClass, style = "markdown", refusalReason) {
4560
- const rendered = renderUserFacingFailure(DREAM_FAILURE_KEYS[failureClass], style);
4561
- return failureClass === "local_refusal" && refusalReason ? `${rendered} Reason: ${sanitizeDiagnosticText(refusalReason).slice(0, 500)}` : rendered;
4562
- }
4563
- function dreamFailureCode(failureClass) {
4564
- return userFacingFailureCode(DREAM_FAILURE_KEYS[failureClass]);
4565
- }
4566
- function renderEmbeddingFailure(failureClass, style = "markdown") {
4567
- return renderUserFacingFailure(EMBEDDING_FAILURE_KEYS[failureClass], style);
4568
- }
4569
-
4570
4244
  // src/hooks/magic-context/producer-window-guard.ts
4571
4245
  var PRODUCER_WINDOW_REFUSAL_MARGIN = 0.03;
4572
4246
  var HISTORIAN_TRUNCATION_MARKER = "[… tokens truncated by Magic Context to fit the historian window …]";
@@ -7232,15 +6906,6 @@ function pruneNoteNudgeAnchors(db, sessionId, visibleMessageIds) {
7232
6906
  });
7233
6907
  return pruned;
7234
6908
  }
7235
- function pruneAutoSearchHintDecisions(db, sessionId, visibleMessageIds) {
7236
- let pruned = 0;
7237
- casUpdateJsonArrayColumn(db, sessionId, "auto_search_hint_decisions", isValidAutoSearchHintDecision, (current) => {
7238
- const next = current.filter((decision) => visibleMessageIds.has(decision.messageId));
7239
- pruned = current.length - next.length;
7240
- return pruned > 0 ? next : null;
7241
- });
7242
- return pruned;
7243
- }
7244
6909
  function removeNoteNudgeAnchorByMessageId(db, sessionId, messageId) {
7245
6910
  let removed = false;
7246
6911
  const ok = casUpdateJsonArrayColumn(db, sessionId, "note_nudge_anchors", isValidNoteNudgeAnchor, (current) => {
@@ -7250,6 +6915,51 @@ function removeNoteNudgeAnchorByMessageId(db, sessionId, messageId) {
7250
6915
  }, { ensureRow: false });
7251
6916
  return ok && removed;
7252
6917
  }
6918
+ var pendingAutoSearchRetirements = new WeakMap;
6919
+ var AUTO_SEARCH_DECISION_SOFT_LIMIT = 2000;
6920
+ function queueAutoSearchHintDecisionRetirement(db, sessionId, messageIds) {
6921
+ if (messageIds.size === 0)
6922
+ return;
6923
+ let sessions = pendingAutoSearchRetirements.get(db);
6924
+ if (!sessions) {
6925
+ sessions = new Map;
6926
+ pendingAutoSearchRetirements.set(db, sessions);
6927
+ }
6928
+ let retired = sessions.get(sessionId);
6929
+ if (!retired) {
6930
+ retired = new Set;
6931
+ sessions.set(sessionId, retired);
6932
+ }
6933
+ for (const id of messageIds)
6934
+ retired.add(id);
6935
+ }
6936
+ function flushAutoSearchHintDecisionRetirement(db, sessionId, visibleMessageIds) {
6937
+ const sessions = pendingAutoSearchRetirements.get(db);
6938
+ const retired = sessions?.get(sessionId) ?? new Set;
6939
+ const outcome = updateAutoSearchHintRetirement(db, sessionId, retired, visibleMessageIds);
6940
+ if (outcome.ok)
6941
+ sessions?.delete(sessionId);
6942
+ return outcome.pruned;
6943
+ }
6944
+ function updateAutoSearchHintRetirement(db, sessionId, retiredMessageIds, visibleMessageIds) {
6945
+ let pruned = 0;
6946
+ const ok = casUpdateJsonArrayColumn(db, sessionId, "auto_search_hint_decisions", isValidAutoSearchHintDecision, (current) => {
6947
+ let next = current.filter((decision) => !retiredMessageIds.has(decision.messageId) || visibleMessageIds?.has(decision.messageId));
6948
+ let excess = next.length - AUTO_SEARCH_DECISION_SOFT_LIMIT;
6949
+ if (visibleMessageIds && excess > 0) {
6950
+ next = next.filter((decision) => {
6951
+ if (excess > 0 && decision.decision === "no-hint" && !visibleMessageIds.has(decision.messageId)) {
6952
+ excess--;
6953
+ return false;
6954
+ }
6955
+ return true;
6956
+ });
6957
+ }
6958
+ pruned = current.length - next.length;
6959
+ return pruned > 0 ? next : null;
6960
+ }, { ensureRow: false });
6961
+ return { ok, pruned: ok ? pruned : 0 };
6962
+ }
7253
6963
  function removeAutoSearchHintDecisionByMessageId(db, sessionId, messageId) {
7254
6964
  let removed = false;
7255
6965
  const ok = casUpdateJsonArrayColumn(db, sessionId, "auto_search_hint_decisions", isValidAutoSearchHintDecision, (current) => {
@@ -8058,8 +7768,8 @@ function clearCapturedLkgMeasurement(sessionId) {
8058
7768
  }
8059
7769
 
8060
7770
  // src/hooks/magic-context/lkg-slot.ts
8061
- var LKG_TOTAL_BYTES = 64 * 1024 * 1024;
8062
- var LKG_SINGLE_SLOT_BYTES = 24 * 1024 * 1024;
7771
+ var LKG_SINGLE_SLOT_BYTES = 72 * 1024 * 1024;
7772
+ var LKG_TOTAL_BYTES = 160 * 1024 * 1024;
8063
7773
  var LKG_METADATA_BYTES = 256;
8064
7774
 
8065
7775
  class MagicContextLkgHeapHolder {
@@ -8904,7 +8614,7 @@ function decodePiContentDecision(value) {
8904
8614
  return null;
8905
8615
  try {
8906
8616
  const pair = JSON.parse(value.slice(PREFIX.length));
8907
- if (Array.isArray(pair) && pair.length === 2 && (pair[0] === "reminder-strip" || pair[0] === "seam-temporal-strip" || pair[0] === "tag-identity-repair-once" || pair[0] === "tag-identity-repair-pending" || pair[0] === "tag-identity-recurring") && typeof pair[1] === "string" && pair[1].length > 0)
8617
+ if (Array.isArray(pair) && pair.length === 2 && (pair[0] === "reminder-strip" || pair[0] === "seam-temporal-strip" || pair[0] === "tag-identity-repair-once" || pair[0] === "tag-identity-repair-pending" || pair[0] === "tag-identity-rebuild-failed" || pair[0] === "tag-identity-recurring") && typeof pair[1] === "string" && pair[1].length > 0)
8908
8618
  return [pair[0], pair[1]];
8909
8619
  } catch {}
8910
8620
  return null;
@@ -9578,6 +9288,31 @@ import { Buffer as Buffer3 } from "node:buffer";
9578
9288
 
9579
9289
  // src/shared/auto-search-lifecycle.ts
9580
9290
  var pending = new Map;
9291
+ var unpublishedNoHints = new Map;
9292
+ function rememberUnpublishedAutoSearchNoHint(sessionId, messageId, reason) {
9293
+ let messages = unpublishedNoHints.get(sessionId);
9294
+ if (!messages) {
9295
+ messages = new Map;
9296
+ unpublishedNoHints.set(sessionId, messages);
9297
+ }
9298
+ if (!messages.has(messageId))
9299
+ messages.set(messageId, reason);
9300
+ }
9301
+ function getUnpublishedAutoSearchNoHint(sessionId, messageId) {
9302
+ return unpublishedNoHints.get(sessionId)?.get(messageId);
9303
+ }
9304
+ function forgetUnpublishedAutoSearchNoHint(sessionId, messageId) {
9305
+ const messages = unpublishedNoHints.get(sessionId);
9306
+ messages?.delete(messageId);
9307
+ if (messages?.size === 0)
9308
+ unpublishedNoHints.delete(sessionId);
9309
+ }
9310
+ function clearUnpublishedAutoSearchNoHints(sessionId) {
9311
+ if (sessionId === undefined)
9312
+ unpublishedNoHints.clear();
9313
+ else
9314
+ unpublishedNoHints.delete(sessionId);
9315
+ }
9581
9316
  function registerAutoSearchWork(sessionId) {
9582
9317
  const controller = new AbortController;
9583
9318
  const work = pending.get(sessionId) ?? new Set;
@@ -9917,11 +9652,19 @@ class V2StoreReader {
9917
9652
  const columns = new Set(this.prepare("PRAGMA table_info(session_v2)").all().map((column) => column.name));
9918
9653
  const archived = columns.has("time_archived") ? " AND time_archived IS NULL" : "";
9919
9654
  const order = columns.has("time_updated") ? "time_updated DESC, id DESC" : "id DESC";
9920
- const row = this.prepare(`SELECT id FROM session_v2
9921
- WHERE directory = ? AND parent_id IS NULL${archived}
9655
+ const page = this.prepare(`SELECT id, COALESCE(directory, '') AS directory FROM session_v2
9656
+ WHERE parent_id IS NULL${archived}
9922
9657
  AND COALESCE(json_extract(metadata, '$.magic_context'), '') <> 'hidden-run'
9923
- ORDER BY ${order} LIMIT 1`).get(directory);
9924
- return row?.id;
9658
+ ORDER BY ${order} LIMIT ? OFFSET ?`);
9659
+ const pageSize = 500;
9660
+ for (let offset = 0;; offset += pageSize) {
9661
+ const rows = page.all(pageSize, offset);
9662
+ const match = rows.find((row) => sameProjectDirectory(row.directory, directory));
9663
+ if (match)
9664
+ return match.id;
9665
+ if (rows.length < pageSize)
9666
+ return;
9667
+ }
9925
9668
  }
9926
9669
  rootSessionActivity(sessionIDs) {
9927
9670
  const roots = new Map;
@@ -10355,7 +10098,7 @@ function retryPendingSessionCleanups(db, limit = 200) {
10355
10098
  try {
10356
10099
  withoutSqliteTransformPass2(() => withSqliteBackgroundWriter2(() => {
10357
10100
  db.prepare("UPDATE pending_session_cleanup SET last_attempt_at = ? WHERE session_id = ?").run(Date.now(), row.session_id);
10358
- clearSession(db, row.session_id);
10101
+ clearSession(db, row.session_id, false, true);
10359
10102
  }));
10360
10103
  cleared += 1;
10361
10104
  } catch {
@@ -10381,7 +10124,7 @@ async function retryPendingRustSessionCleanupsForProject(db, projectPath, delete
10381
10124
  try {
10382
10125
  withoutSqliteTransformPass2(() => withSqliteBackgroundWriter2(() => db.prepare("UPDATE pending_session_cleanup SET last_attempt_at = ? WHERE session_id = ?").run(Date.now(), row.session_id)));
10383
10126
  await deleteSession(row.session_id);
10384
- clearSession(db, row.session_id, true);
10127
+ clearSession(db, row.session_id, true, true);
10385
10128
  cleared += 1;
10386
10129
  } catch {
10387
10130
  failedSessionIds.push(row.session_id);
@@ -10389,15 +10132,17 @@ async function retryPendingRustSessionCleanupsForProject(db, projectPath, delete
10389
10132
  }
10390
10133
  return { attempted: rows.length, cleared, failedSessionIds };
10391
10134
  }
10392
- function clearSession(db, sessionId, rustModuleCleanupAcknowledged = false) {
10135
+ function clearSession(db, sessionId, rustModuleCleanupAcknowledged = false, permanentlyDeleted = false) {
10393
10136
  cancelAutoSearchWork(sessionId);
10394
10137
  let transactionStartedAt = 0;
10395
10138
  withoutSqliteTransformPass2(() => withSqliteBackgroundWriter2(() => db.transaction(() => {
10396
10139
  transactionStartedAt = performance.now();
10397
10140
  deleteSessionScopedRows(db, [sessionId], undefined, {
10398
- rustModuleCleanupAcknowledged
10141
+ rustModuleCleanupAcknowledged,
10142
+ preserveTagRevisionTombstones: !permanentlyDeleted
10399
10143
  });
10400
10144
  }).immediate()));
10145
+ clearUnpublishedAutoSearchNoHints(sessionId);
10401
10146
  logSlowWriteTransaction("clear-session", transactionStartedAt);
10402
10147
  }
10403
10148
  // src/features/magic-context/storage-project-state.ts
@@ -17242,7 +16987,7 @@ function withCompartmentDates(db, sessionId, compartments, temporalAwareness) {
17242
16987
  const indexedRows = db.prepare(`SELECT message_ordinal AS ordinal, message_time_ms AS time
17243
16988
  FROM message_fts_rowid_map
17244
16989
  WHERE session_id = ?
17245
- AND message_time_ms IS NOT NULL
16990
+ AND +message_time_ms IS NOT NULL
17246
16991
  AND message_ordinal IN (SELECT value FROM json_each(?))`).all(sessionId, JSON.stringify([...ordinals]));
17247
16992
  const indexedTimes = new Map(indexedRows.map((row) => [row.ordinal, row.time]));
17248
16993
  const fallbackIds = new Set;
@@ -18232,6 +17977,9 @@ function trimToPreparedPrefix(options, prepared) {
18232
17977
  const boundary = prepared.preparedTrimBoundaryId;
18233
17978
  let status = "not-required";
18234
17979
  if (boundary) {
17980
+ const retireDecisions = (messageIds) => {
17981
+ queueAutoSearchHintDecisionRetirement(options.db, options.sessionId, new Set(messageIds));
17982
+ };
18235
17983
  const sourceOrder = options.prefixTrimSourceOrder;
18236
17984
  if (sourceOrder) {
18237
17985
  const refuse = (reason) => {
@@ -18284,6 +18032,8 @@ function trimToPreparedPrefix(options, prepared) {
18284
18032
  status = refuse(liveOrderError);
18285
18033
  else {
18286
18034
  options.messages.splice(0, options.messages.length, ...retained);
18035
+ const preserveBoundary = isPartialCompartmentEnd(options.db, options.sessionId, boundary);
18036
+ retireDecisions(sourceOrder.messageIds.slice(0, boundaryPosition + (preserveBoundary ? 0 : 1)));
18287
18037
  status = "applied";
18288
18038
  }
18289
18039
  }
@@ -18291,7 +18041,8 @@ function trimToPreparedPrefix(options, prepared) {
18291
18041
  } else {
18292
18042
  const index = findBoundaryIndex(options.sessionId, options.messages, boundary);
18293
18043
  if (index >= 0) {
18294
- options.messages.splice(0, index + (isPartialCompartmentEnd(options.db, options.sessionId, boundary) ? 0 : 1));
18044
+ const removed = options.messages.splice(0, index + (isPartialCompartmentEnd(options.db, options.sessionId, boundary) ? 0 : 1));
18045
+ retireDecisions(removed.map((message) => message.info.id).filter((id) => typeof id === "string"));
18295
18046
  resetPrefixTrimFallbackState(options.sessionId);
18296
18047
  status = "applied";
18297
18048
  } else {
@@ -23228,4 +22979,4 @@ async function executeContextRecomp(deps, options = {}) {
23228
22979
  return (await executeContextRecompWithResult(deps, options)).message;
23229
22980
  }
23230
22981
 
23231
- export { denyTaskRoutingToCallerAgents, buildHiddenAgentRegistrations, buildHiddenAgentConfig, getMagicContextBuiltinCommands, formatConfigParseStatusLine, claimConfigParseFailuresOnce, COMPACTION_ENABLED_PATH, isDreamerRunnable, isHistorianRunnable, isCompactionEnabled, cortexKitUserConfigBasePath, cortexKitProjectConfigBasePath, resolveLegacyConfigSources, migrateMagicContextConfigLocations, getProtectedTokensTierOverrides, loadPluginConfigDetailed, BoundedSessionMap, historianRunConfig, dreamerRunConfig, pluginConfigReader, currentPluginConfigReader, withLiveDreamerOutputCap, createDreamerOutputCapSampler, COMPARTMENT_AGENT_SYSTEM_PROMPT, HISTORIAN_EDITOR_SYSTEM_PROMPT, COMPARTMENT_STRUCTURAL_SYSTEM_PROMPT, USER_FACING_FAILURES, renderUserFacingFailure, userFacingFailureCode, renderCapabilityRefusal, capabilityRefusalCode, renderDreamFailure, dreamFailureCode, renderEmbeddingFailure, clampProducerAtomChars, producerInputTokenLimit, historianProducerReserve, producerPromptFailureReason, DREAMER_AGENT, DREAMER_RETROSPECTIVE_AGENT, DREAMER_PRIMER_INVESTIGATOR_AGENT, DREAMER_MEMORY_MAPPER_AGENT, DREAMER_CLASSIFIER_AGENT, DREAMER_DOCS_AGENT, DREAMER_REVIEWER_AGENT, embedPauseBySession, embedRunStateBySession, autoEmbedAttemptedBySession, autoEmbedIdentityBySession, invalidateAutoEmbedSession, getEmbedDrainUiStatus, clearEmbedSessionState, COMPARTMENT_LEASE_RENEWAL_MS, acquireCompartmentLease, renewCompartmentLease, releaseCompartmentLeaseBestEffort, isCompartmentLeaseHeld, queueM0Mutation, getMaxM0MutationId, ensureSessionMetaRow, clearCachedM0M1, getCompartments, getLastCompartmentEndMessage, getLastCompartmentEndMessageId, getUncoveredCompartmentEndsThrough, MAX_EXECUTE_THRESHOLD, escalationBands, MERGED_REASONING_PARTS_PREFIX, decodeMergedReasoningParts, readFrozenMergedReasoningParts, HYGIENE_PROVIDER_UNITS_VERSION, sessionDecisionCalibration, transitionSessionHygieneUnits, getProtectionWindowForSession, isRustMarkerAdmissionFenced, setRustMarkerAdmissionFence, ReplayDocumentError, readReplayEnvelope, updateReplayDocument, isEmergencyRecoveryArmed, isProviderOverflowReconfirmed, isProviderOverflowFailClosedProven, getEmergencyRecoveryArmedAt, loadPersistedUsage, loadProtectedTailMeta, resetProtectedTailNoEligibleHead, getWrapupInProgressState, acquireWrapupInProgress, updateWrapupInProgress, releaseWrapupInProgress, resolveCompactionModeRecord, getCompactionModeRecord, setCompactionModeRecord, getProtectedTailDrainBudgetSkip, getPersistedReasoningWatermark, setPersistedReasoningWatermark, clearPersistedReasoningWatermark, getEmergencyInputSample, setEmergencyDropSample, clearEmergencyDropSample, getLastNudgeUndropped, setLastNudgeUndropped, getChannel1NudgeState, setChannel1NudgeState, markChannel1PostReduceGracePending, captureChannel1PostReduceGraceBaseline, getChannel2NudgeState, getChannel2NudgeClaim, setChannel2NudgeState, casChannel2NudgeState, claimChannel2NudgeState, casChannel2NudgeClaim, getPersistedNoteNudge, setPersistedNoteNudgeTrigger, getNoteNudgeAnchors, getAutoSearchHintDecisions, appendAutoSearchHintDecision, pruneNoteNudgeAnchors, pruneAutoSearchHintDecisions, removeNoteNudgeAnchorByMessageId, removeAutoSearchHintDecisionByMessageId, getPersistedTodoPermissionDenied, setPersistedTodoPermissionDenied, getPersistedTodoSyntheticAnchor, setPersistedTodoSyntheticAnchor, clearPersistedTodoSyntheticAnchor, setNoteLastReadAt, getHistorianFailureState, clearHistorianFailureState, getOverflowState, loadTransformPassStateSnapshot, recordOverflowDetected, recordDetectedContextLimit, clearEmergencyRecovery, clearDetectedContextLimit, getPersistedCompactionMarkerState, setPersistedCompactionMarkerState, getDeferredClearedCompactionMarkerState, retireDeferredClearedCompactionMarkerState, getStrippedPlaceholderIds, applyStrippedPlaceholderDelta, removeStrippedPlaceholderId, THINKING_BINDING_RECOVERY_FROZEN_PREFIX, thinkingBindingRecoveryFrozenId, getThinkingBindingRecoveryTarget, armThinkingBindingRecovery, clearThinkingBindingRecoveryIf, getMergedReasoningStrippedIds, addMergedReasoningStrippedIds, getTrailingBlankDecisions, addTrailingBlankDecisions, demoteTrailingBlankKeepDecisions, getStaleReduceStrippedIds, addStaleReduceStrippedIds, getProcessedImageStrippedIds, addProcessedImageStrippedIds, getPendingCompactionMarkerState, getCompactionMarkerHealth, loadPostprocessReplaySnapshot, setPendingCompactionMarkerState, replacePendingCompactionMarkerStateIf, clearPendingCompactionMarkerStateIf, getSessionsWithPendingMarker, setSessionWorkMetrics, getObservedEpochFloor, resolveEpochFloorForPass, providerResponseFailed, isSuccessfulProviderCompletion, lkgProviderInputTotal, beginV2LkgRequest, claimLkgRequestIdentity, noteCapturedLkgRequest, noteLkgProviderResponse, measuredLkgPrefix, registerLkgPersistence, beginLkgPass, visitMessageContentFields, contentSnapshotValue, messageContentFields, signatureForFields, isLegacyLkgDigest, exactReusablePrefix, incrementalLkgContentDigests, lkgContentDigest, lkgSlotRejection, captureSlot, getInMemorySlot, getSlot, forgetInMemorySlot, dropSlot, noteEntry, LkgEntryDigestCache, sharedLkgEntryDigests, getLkgSlotHeapStats, TOOL_SWEEP_SCOPED_MARKER, useScopedToolSweep, createPreAdoptionToolSweepResolver, copySessionStateForClone, queueMemoryMutation, getMaxMemoryMutationIdForProjects, registerAutoSearchWork, cancelAutoSearchWork, gaDatabasePath, RAW_MESSAGE_TYPES, V2StoreReaderPool, V2StoreReader, getOrCreateSessionMeta, updateSessionMeta, advanceToolReclaimWatermark, markSessionCleanupPending, retryPendingSessionCleanups, retryPendingRustSessionCleanupsForProject, clearSession, GLOBAL_USER_PROFILE_PROJECT_PATH, getProjectState, bumpProjectUserProfileVersion, saveSourceContent, replaceSourceContent, getSourceContents, createChildSessionWithFence, HiddenCompletionRefusal, DreamerProviderOutputFailureError, withDreamerModelCooldown, providerOutputFailureFromInvalidManifest, HIDDEN_HISTORIAN_AGENT, HIDDEN_DREAMER_AGENT, HIDDEN_CURATE_AGENT, hiddenAgentFor, hiddenToolLoop, hiddenChildPermissions, registerHiddenChildAgents, hiddenToolCallRefusal, HiddenAgentStepLimit, HiddenChildHook, extractLatestAssistantText, hasLengthCappedOutput, parseProviderModel, modelBodyField, toModelEntry, isPromptTimeoutError, getPromptFailureDetail, promptSyncWithValidatedOutputRetry, normalizeSDKResponse, failedInvocationStatus, recordChildInvocation, recordPromptSessionError, createPromptAsyncTransport, CTX_NOTE_LIGHT_DESCRIPTION, ACTIVE_TOOL_IDS, promptSurfaceHashMaterial, createPromptSurfaceRuntime, createPromptSurfaceGuidanceEpochCache, setKeepSubagents, teardownChildSession, getCompartmentEvents, runTokenLog, formatRunTokenLog, resolveHiddenCompletionExecutor, createV1HiddenCompletionExecutor, USER_MEMORY_CANDIDATE_TTL_MS, insertUserMemoryCandidates, getUserMemoryCandidates, deleteUserMemoryCandidates, pruneExpiredUserMemoryCandidates, insertUserMemory, getActiveUserMemories, updateUserMemoryContent, dismissUserMemory, getMuralIdentity, getMural, readCoordinateGeneration, readCoordinateRebaseNotice, formatCoordinateRebaseNotice, rebaseSessionCoordinatesAsync, getOpenCodeDbPath, compareOpenCodeMessagesByCanonicalOrder, removeMcOwnedCompactionMarkers, MARKER_SUMMARY_TEXT, markerUpdateDefinitelyDidNotCut, applyDeferredCompactionMarker, removeCompactionMarkerForSession, checkCompactionMarkerConsistency, buildMagicContextSection, modelKeyAcceptsImages, resolveMuralWire, extractM0Block, formatDate, TEMPORAL_MARKER_REPLAY_PATTERN, collectTemporalCandidates, injectTemporalMarkers, clearInjectionCache, getVisibleMemoryIds, selectHiddenMessagesAtCompactionSeam, prepareCompartmentInjection, renderCompartmentInjection, MaterializeContentionError, mustMaterialize, trimMemoriesToBudgetV2, renderMemoryBlockV2, materializeM0, hydrateCachedM0Mural, resetPrefixTrimFallbackState, findHostCompactionWindow, capturePrefixTrimSourceOrder, prepareCachedM0M1Replay, hasCompleteCachedM0M1, injectM0M1, EMPTY_READ_REPLY, noteTouchedAt, renderGlance, renderNotesById, formatWriteReply, observeNoteNudgeServe, onNoteTrigger, peekNoteNudgeText, markNoteNudgeDelivered, clearNoteNudgeTriggerAndCooldown, resetNoteNudgeCooldownOnly, clearNoteNudgeTriggerOnly, describeBoundaryDiagnostics, RECOVERY_NO_HEAD_LIMIT, deriveProtectedTailTokenTarget, selectPerRunCap, resolveOpenCodeProtectedTailBoundary, resolveWrapupProtectedTailBoundary, getRawHistoryEligibility, hasRunnableCompartmentWindow, recordHighPressureNoEligibleHead, runCompartmentAgent, snapRangeToCompartments, getActiveCompartmentRun, markActiveCompartmentRunPublished, registerActiveCompartmentRun, startCompartmentAgent, executeContextRecomp };
22982
+ export { denyTaskRoutingToCallerAgents, buildHiddenAgentRegistrations, buildHiddenAgentConfig, getMagicContextBuiltinCommands, formatConfigParseStatusLine, claimConfigParseFailuresOnce, COMPACTION_ENABLED_PATH, isDreamerRunnable, isHistorianRunnable, isCompactionEnabled, cortexKitUserConfigBasePath, cortexKitProjectConfigBasePath, resolveLegacyConfigSources, migrateMagicContextConfigLocations, getProtectedTokensTierOverrides, loadPluginConfigDetailed, BoundedSessionMap, historianRunConfig, dreamerRunConfig, pluginConfigReader, currentPluginConfigReader, withLiveDreamerOutputCap, createDreamerOutputCapSampler, COMPARTMENT_AGENT_SYSTEM_PROMPT, HISTORIAN_EDITOR_SYSTEM_PROMPT, COMPARTMENT_STRUCTURAL_SYSTEM_PROMPT, clampProducerAtomChars, producerInputTokenLimit, historianProducerReserve, producerPromptFailureReason, DREAMER_AGENT, DREAMER_RETROSPECTIVE_AGENT, DREAMER_PRIMER_INVESTIGATOR_AGENT, DREAMER_MEMORY_MAPPER_AGENT, DREAMER_CLASSIFIER_AGENT, DREAMER_DOCS_AGENT, DREAMER_REVIEWER_AGENT, embedPauseBySession, embedRunStateBySession, autoEmbedAttemptedBySession, autoEmbedIdentityBySession, invalidateAutoEmbedSession, getEmbedDrainUiStatus, clearEmbedSessionState, COMPARTMENT_LEASE_RENEWAL_MS, acquireCompartmentLease, renewCompartmentLease, releaseCompartmentLeaseBestEffort, isCompartmentLeaseHeld, queueM0Mutation, getMaxM0MutationId, ensureSessionMetaRow, clearCachedM0M1, getCompartments, getLastCompartmentEndMessage, getLastCompartmentEndMessageId, getUncoveredCompartmentEndsThrough, MAX_EXECUTE_THRESHOLD, escalationBands, MERGED_REASONING_PARTS_PREFIX, decodeMergedReasoningParts, readFrozenMergedReasoningParts, HYGIENE_PROVIDER_UNITS_VERSION, sessionDecisionCalibration, transitionSessionHygieneUnits, getProtectionWindowForSession, isRustMarkerAdmissionFenced, setRustMarkerAdmissionFence, ReplayDocumentError, readReplayEnvelope, updateReplayDocument, isEmergencyRecoveryArmed, isProviderOverflowReconfirmed, isProviderOverflowFailClosedProven, getEmergencyRecoveryArmedAt, loadPersistedUsage, loadProtectedTailMeta, resetProtectedTailNoEligibleHead, getWrapupInProgressState, acquireWrapupInProgress, updateWrapupInProgress, releaseWrapupInProgress, resolveCompactionModeRecord, getCompactionModeRecord, setCompactionModeRecord, getProtectedTailDrainBudgetSkip, getPersistedReasoningWatermark, setPersistedReasoningWatermark, clearPersistedReasoningWatermark, getEmergencyInputSample, setEmergencyDropSample, clearEmergencyDropSample, getLastNudgeUndropped, setLastNudgeUndropped, getChannel1NudgeState, setChannel1NudgeState, markChannel1PostReduceGracePending, captureChannel1PostReduceGraceBaseline, getChannel2NudgeState, getChannel2NudgeClaim, setChannel2NudgeState, casChannel2NudgeState, claimChannel2NudgeState, casChannel2NudgeClaim, getPersistedNoteNudge, setPersistedNoteNudgeTrigger, getNoteNudgeAnchors, getAutoSearchHintDecisions, appendAutoSearchHintDecision, pruneNoteNudgeAnchors, removeNoteNudgeAnchorByMessageId, flushAutoSearchHintDecisionRetirement, removeAutoSearchHintDecisionByMessageId, getPersistedTodoPermissionDenied, setPersistedTodoPermissionDenied, getPersistedTodoSyntheticAnchor, setPersistedTodoSyntheticAnchor, clearPersistedTodoSyntheticAnchor, setNoteLastReadAt, getHistorianFailureState, clearHistorianFailureState, getOverflowState, loadTransformPassStateSnapshot, recordOverflowDetected, recordDetectedContextLimit, clearEmergencyRecovery, clearDetectedContextLimit, getPersistedCompactionMarkerState, setPersistedCompactionMarkerState, getDeferredClearedCompactionMarkerState, retireDeferredClearedCompactionMarkerState, getStrippedPlaceholderIds, applyStrippedPlaceholderDelta, removeStrippedPlaceholderId, THINKING_BINDING_RECOVERY_FROZEN_PREFIX, thinkingBindingRecoveryFrozenId, getThinkingBindingRecoveryTarget, armThinkingBindingRecovery, clearThinkingBindingRecoveryIf, getMergedReasoningStrippedIds, addMergedReasoningStrippedIds, getTrailingBlankDecisions, addTrailingBlankDecisions, demoteTrailingBlankKeepDecisions, getStaleReduceStrippedIds, addStaleReduceStrippedIds, getProcessedImageStrippedIds, addProcessedImageStrippedIds, getPendingCompactionMarkerState, getCompactionMarkerHealth, loadPostprocessReplaySnapshot, setPendingCompactionMarkerState, replacePendingCompactionMarkerStateIf, clearPendingCompactionMarkerStateIf, getSessionsWithPendingMarker, setSessionWorkMetrics, getObservedEpochFloor, resolveEpochFloorForPass, providerResponseFailed, isSuccessfulProviderCompletion, lkgProviderInputTotal, beginV2LkgRequest, claimLkgRequestIdentity, noteCapturedLkgRequest, noteLkgProviderResponse, measuredLkgPrefix, registerLkgPersistence, beginLkgPass, visitMessageContentFields, contentSnapshotValue, messageContentFields, signatureForFields, isLegacyLkgDigest, exactReusablePrefix, incrementalLkgContentDigests, lkgContentDigest, lkgSlotRejection, captureSlot, getInMemorySlot, getSlot, forgetInMemorySlot, dropSlot, noteEntry, LkgEntryDigestCache, sharedLkgEntryDigests, getLkgSlotHeapStats, TOOL_SWEEP_SCOPED_MARKER, useScopedToolSweep, createPreAdoptionToolSweepResolver, copySessionStateForClone, queueMemoryMutation, getMaxMemoryMutationIdForProjects, rememberUnpublishedAutoSearchNoHint, getUnpublishedAutoSearchNoHint, forgetUnpublishedAutoSearchNoHint, registerAutoSearchWork, cancelAutoSearchWork, gaDatabasePath, RAW_MESSAGE_TYPES, V2StoreReaderPool, V2StoreReader, getOrCreateSessionMeta, updateSessionMeta, advanceToolReclaimWatermark, markSessionCleanupPending, retryPendingSessionCleanups, retryPendingRustSessionCleanupsForProject, clearSession, GLOBAL_USER_PROFILE_PROJECT_PATH, getProjectState, bumpProjectUserProfileVersion, saveSourceContent, replaceSourceContent, getSourceContents, createChildSessionWithFence, HiddenCompletionRefusal, DreamerProviderOutputFailureError, withDreamerModelCooldown, providerOutputFailureFromInvalidManifest, HIDDEN_HISTORIAN_AGENT, HIDDEN_DREAMER_AGENT, HIDDEN_CURATE_AGENT, hiddenAgentFor, hiddenToolLoop, hiddenChildPermissions, registerHiddenChildAgents, hiddenToolCallRefusal, HiddenAgentStepLimit, HiddenChildHook, extractLatestAssistantText, hasLengthCappedOutput, parseProviderModel, modelBodyField, toModelEntry, isPromptTimeoutError, getPromptFailureDetail, promptSyncWithValidatedOutputRetry, normalizeSDKResponse, failedInvocationStatus, recordChildInvocation, recordPromptSessionError, createPromptAsyncTransport, CTX_NOTE_LIGHT_DESCRIPTION, ACTIVE_TOOL_IDS, promptSurfaceHashMaterial, createPromptSurfaceRuntime, createPromptSurfaceGuidanceEpochCache, setKeepSubagents, teardownChildSession, getCompartmentEvents, runTokenLog, formatRunTokenLog, resolveHiddenCompletionExecutor, createV1HiddenCompletionExecutor, USER_MEMORY_CANDIDATE_TTL_MS, insertUserMemoryCandidates, getUserMemoryCandidates, deleteUserMemoryCandidates, pruneExpiredUserMemoryCandidates, insertUserMemory, getActiveUserMemories, updateUserMemoryContent, dismissUserMemory, getMuralIdentity, getMural, readCoordinateGeneration, readCoordinateRebaseNotice, formatCoordinateRebaseNotice, rebaseSessionCoordinatesAsync, getOpenCodeDbPath, compareOpenCodeMessagesByCanonicalOrder, removeMcOwnedCompactionMarkers, MARKER_SUMMARY_TEXT, markerUpdateDefinitelyDidNotCut, applyDeferredCompactionMarker, removeCompactionMarkerForSession, checkCompactionMarkerConsistency, buildMagicContextSection, modelKeyAcceptsImages, resolveMuralWire, extractM0Block, formatDate, TEMPORAL_MARKER_REPLAY_PATTERN, collectTemporalCandidates, injectTemporalMarkers, clearInjectionCache, getVisibleMemoryIds, selectHiddenMessagesAtCompactionSeam, prepareCompartmentInjection, renderCompartmentInjection, MaterializeContentionError, mustMaterialize, trimMemoriesToBudgetV2, renderMemoryBlockV2, materializeM0, hydrateCachedM0Mural, resetPrefixTrimFallbackState, findHostCompactionWindow, capturePrefixTrimSourceOrder, prepareCachedM0M1Replay, hasCompleteCachedM0M1, injectM0M1, EMPTY_READ_REPLY, noteTouchedAt, renderGlance, renderNotesById, formatWriteReply, observeNoteNudgeServe, onNoteTrigger, peekNoteNudgeText, markNoteNudgeDelivered, clearNoteNudgeTriggerAndCooldown, resetNoteNudgeCooldownOnly, clearNoteNudgeTriggerOnly, describeBoundaryDiagnostics, RECOVERY_NO_HEAD_LIMIT, deriveProtectedTailTokenTarget, selectPerRunCap, resolveOpenCodeProtectedTailBoundary, resolveWrapupProtectedTailBoundary, getRawHistoryEligibility, hasRunnableCompartmentWindow, recordHighPressureNoEligibleHead, runCompartmentAgent, snapRangeToCompartments, getActiveCompartmentRun, markActiveCompartmentRunPublished, registerActiveCompartmentRun, startCompartmentAgent, executeContextRecomp };