@retaw106/mmc-oc 2.2.1 → 2.3.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 (211) hide show
  1. package/dist/cli.js +2 -2
  2. package/dist/config/deprecated-config.d.ts +4 -0
  3. package/dist/config/deprecated-config.d.ts.map +1 -0
  4. package/dist/config/index.d.ts.map +1 -1
  5. package/dist/config/project-security.d.ts +2 -2
  6. package/dist/config/schema/magic-context.d.ts +3 -3
  7. package/dist/config/schema/magic-context.d.ts.map +1 -1
  8. package/dist/config-init.js +2 -2
  9. package/dist/{context-mrvm92n8.js → context-wt7g4f8k.js} +1641 -1543
  10. package/dist/{derive-budgets-rjjz5f7y.js → derive-budgets-s1p37t2g.js} +2 -2
  11. package/dist/features/magic-context/compaction-marker.d.ts.map +1 -1
  12. package/dist/features/magic-context/historian-failure-reason.d.ts +7 -0
  13. package/dist/features/magic-context/historian-failure-reason.d.ts.map +1 -0
  14. package/dist/features/magic-context/message-index-async.d.ts +21 -3
  15. package/dist/features/magic-context/message-index-async.d.ts.map +1 -1
  16. package/dist/features/magic-context/message-index.d.ts +7 -1
  17. package/dist/features/magic-context/message-index.d.ts.map +1 -1
  18. package/dist/features/magic-context/migrations.d.ts.map +1 -1
  19. package/dist/features/magic-context/pi-content-decisions.d.ts +7 -1
  20. package/dist/features/magic-context/pi-content-decisions.d.ts.map +1 -1
  21. package/dist/features/magic-context/search.d.ts +29 -0
  22. package/dist/features/magic-context/search.d.ts.map +1 -1
  23. package/dist/features/magic-context/storage-clone.d.ts +2 -0
  24. package/dist/features/magic-context/storage-clone.d.ts.map +1 -1
  25. package/dist/features/magic-context/storage-compartment-history-version.d.ts +4 -0
  26. package/dist/features/magic-context/storage-compartment-history-version.d.ts.map +1 -0
  27. package/dist/features/magic-context/storage-db.d.ts +1 -1
  28. package/dist/features/magic-context/storage-db.d.ts.map +1 -1
  29. package/dist/features/magic-context/storage-historian-runs.d.ts.map +1 -1
  30. package/dist/features/magic-context/storage-meta-persisted.d.ts +23 -5
  31. package/dist/features/magic-context/storage-meta-persisted.d.ts.map +1 -1
  32. package/dist/features/magic-context/storage-meta-session.d.ts +7 -1
  33. package/dist/features/magic-context/storage-meta-session.d.ts.map +1 -1
  34. package/dist/features/magic-context/storage-session-tables.d.ts +5 -1
  35. package/dist/features/magic-context/storage-session-tables.d.ts.map +1 -1
  36. package/dist/features/magic-context/storage-tag-identity-revision.d.ts +50 -0
  37. package/dist/features/magic-context/storage-tag-identity-revision.d.ts.map +1 -0
  38. package/dist/features/magic-context/storage-tags.d.ts +155 -5
  39. package/dist/features/magic-context/storage-tags.d.ts.map +1 -1
  40. package/dist/features/magic-context/tagger.d.ts +2 -0
  41. package/dist/features/magic-context/tagger.d.ts.map +1 -1
  42. package/dist/features/magic-context/transform-decision-log.d.ts +3 -0
  43. package/dist/features/magic-context/transform-decision-log.d.ts.map +1 -1
  44. package/dist/hooks/magic-context/active-anthropic-turn.d.ts +2 -0
  45. package/dist/hooks/magic-context/active-anthropic-turn.d.ts.map +1 -1
  46. package/dist/hooks/magic-context/apply-operations.d.ts +7 -0
  47. package/dist/hooks/magic-context/apply-operations.d.ts.map +1 -1
  48. package/dist/hooks/magic-context/auto-search-runner.d.ts +2 -2
  49. package/dist/hooks/magic-context/auto-search-runner.d.ts.map +1 -1
  50. package/dist/hooks/magic-context/heuristic-cleanup.d.ts.map +1 -1
  51. package/dist/hooks/magic-context/history-boundary-repair.d.ts +11 -2
  52. package/dist/hooks/magic-context/history-boundary-repair.d.ts.map +1 -1
  53. package/dist/hooks/magic-context/hook-handlers.d.ts.map +1 -1
  54. package/dist/hooks/magic-context/lkg-measured-request.d.ts +3 -1
  55. package/dist/hooks/magic-context/lkg-measured-request.d.ts.map +1 -1
  56. package/dist/hooks/magic-context/lkg-persist.d.ts +10 -13
  57. package/dist/hooks/magic-context/lkg-persist.d.ts.map +1 -1
  58. package/dist/hooks/magic-context/lkg-recovery-fence.d.ts +62 -0
  59. package/dist/hooks/magic-context/lkg-recovery-fence.d.ts.map +1 -0
  60. package/dist/hooks/magic-context/lkg-recovery-prefix.d.ts +38 -0
  61. package/dist/hooks/magic-context/lkg-recovery-prefix.d.ts.map +1 -0
  62. package/dist/hooks/magic-context/lkg-replay.d.ts +16 -9
  63. package/dist/hooks/magic-context/lkg-replay.d.ts.map +1 -1
  64. package/dist/hooks/magic-context/lkg-slot.d.ts +141 -2
  65. package/dist/hooks/magic-context/lkg-slot.d.ts.map +1 -1
  66. package/dist/hooks/magic-context/opaque-thinking.d.ts +12 -0
  67. package/dist/hooks/magic-context/opaque-thinking.d.ts.map +1 -0
  68. package/dist/hooks/magic-context/pass-outcome.d.ts +1 -0
  69. package/dist/hooks/magic-context/pass-outcome.d.ts.map +1 -1
  70. package/dist/hooks/magic-context/pending-materialization.d.ts +8 -0
  71. package/dist/hooks/magic-context/pending-materialization.d.ts.map +1 -0
  72. package/dist/hooks/magic-context/postprocess-read-cache.d.ts.map +1 -1
  73. package/dist/hooks/magic-context/provider-visible-parts.d.ts +45 -0
  74. package/dist/hooks/magic-context/provider-visible-parts.d.ts.map +1 -0
  75. package/dist/hooks/magic-context/read-session-chunk.d.ts +22 -1
  76. package/dist/hooks/magic-context/read-session-chunk.d.ts.map +1 -1
  77. package/dist/hooks/magic-context/read-session-db.d.ts +3 -0
  78. package/dist/hooks/magic-context/read-session-db.d.ts.map +1 -1
  79. package/dist/hooks/magic-context/read-session-formatting.d.ts +5 -0
  80. package/dist/hooks/magic-context/read-session-formatting.d.ts.map +1 -1
  81. package/dist/hooks/magic-context/read-session-raw.d.ts +123 -1
  82. package/dist/hooks/magic-context/read-session-raw.d.ts.map +1 -1
  83. package/dist/hooks/magic-context/read-session-true-raw-tokens.d.ts.map +1 -1
  84. package/dist/hooks/magic-context/reasoning-budget.d.ts.map +1 -1
  85. package/dist/hooks/magic-context/sentinel.d.ts +41 -1
  86. package/dist/hooks/magic-context/sentinel.d.ts.map +1 -1
  87. package/dist/hooks/magic-context/strict-thinking-prefix.d.ts +8 -0
  88. package/dist/hooks/magic-context/strict-thinking-prefix.d.ts.map +1 -0
  89. package/dist/hooks/magic-context/strip-content.d.ts +38 -24
  90. package/dist/hooks/magic-context/strip-content.d.ts.map +1 -1
  91. package/dist/hooks/magic-context/system-date-refresh.d.ts +29 -0
  92. package/dist/hooks/magic-context/system-date-refresh.d.ts.map +1 -0
  93. package/dist/hooks/magic-context/system-prompt-dates.d.ts +6 -0
  94. package/dist/hooks/magic-context/system-prompt-dates.d.ts.map +1 -0
  95. package/dist/hooks/magic-context/system-prompt-delivery.d.ts +47 -0
  96. package/dist/hooks/magic-context/system-prompt-delivery.d.ts.map +1 -0
  97. package/dist/hooks/magic-context/system-prompt-hash.d.ts +18 -5
  98. package/dist/hooks/magic-context/system-prompt-hash.d.ts.map +1 -1
  99. package/dist/hooks/magic-context/tag-messages.d.ts +19 -0
  100. package/dist/hooks/magic-context/tag-messages.d.ts.map +1 -1
  101. package/dist/hooks/magic-context/tag-owner-warmup.d.ts +14 -0
  102. package/dist/hooks/magic-context/tag-owner-warmup.d.ts.map +1 -0
  103. package/dist/hooks/magic-context/token-count-exact.d.ts +35 -0
  104. package/dist/hooks/magic-context/token-count-exact.d.ts.map +1 -0
  105. package/dist/hooks/magic-context/tool-drop-target.d.ts +2 -0
  106. package/dist/hooks/magic-context/tool-drop-target.d.ts.map +1 -1
  107. package/dist/hooks/magic-context/transform-postprocess-phase.d.ts +7 -0
  108. package/dist/hooks/magic-context/transform-postprocess-phase.d.ts.map +1 -1
  109. package/dist/hooks/magic-context/transform.d.ts +21 -4
  110. package/dist/hooks/magic-context/transform.d.ts.map +1 -1
  111. package/dist/index-18yrysyj.js +1477 -0
  112. package/dist/{index-g2z2k5m4.js → index-3gj1ak4c.js} +2 -2
  113. package/dist/{index-5cep2r9n.js → index-5ty9rnbx.js} +60 -258
  114. package/dist/{index-amycb7b1.js → index-a5mw0xp3.js} +3 -3
  115. package/dist/{index-1j34a56j.js → index-czba8tw3.js} +266 -32
  116. package/dist/{index-qbkzdkk0.js → index-k59af64t.js} +6 -2
  117. package/dist/{index-53g38ggt.js → index-kmbme1v1.js} +1 -1
  118. package/dist/{index-5b7x80ec.js → index-kw21z5pe.js} +6055 -3973
  119. package/dist/{index-33gprt9g.js → index-yjv8dpht.js} +1 -1
  120. package/dist/{index-btp5tdc8.js → index-z2w1eq3y.js} +840 -456
  121. package/dist/index.d.ts.map +1 -1
  122. package/dist/index.js +114 -2
  123. package/dist/{message-time-backfill-phrwp2fz.js → message-time-backfill-sykevdax.js} +3 -3
  124. package/dist/plugin/rpc-handlers.d.ts.map +1 -1
  125. package/dist/{read-session-chunk-2xm4sc4y.js → read-session-chunk-863d6c06.js} +6 -4
  126. package/dist/recomp-orchestrator-wrjy3qym.js +21 -0
  127. package/dist/{safe-notification-target-ph3xd1ve.js → safe-notification-target-1jkf0m82.js} +2 -2
  128. package/dist/{send-session-notification-rnc4nrsr.js → send-session-notification-cz6ev088.js} +5 -5
  129. package/dist/shared/auto-search-lifecycle.d.ts +14 -0
  130. package/dist/shared/auto-search-lifecycle.d.ts.map +1 -1
  131. package/dist/shared/logger.d.ts.map +1 -1
  132. package/dist/shared/models-dev-cache.d.ts.map +1 -1
  133. package/dist/shared/models-dev-temperature.d.ts +18 -0
  134. package/dist/shared/models-dev-temperature.d.ts.map +1 -0
  135. package/dist/shared/processed-image-eligibility.d.ts +22 -0
  136. package/dist/shared/processed-image-eligibility.d.ts.map +1 -0
  137. package/dist/shared/project-directory-key.d.ts +16 -0
  138. package/dist/shared/project-directory-key.d.ts.map +1 -1
  139. package/dist/shared/recovery-reasoning-prefix.d.ts +9 -0
  140. package/dist/shared/recovery-reasoning-prefix.d.ts.map +1 -0
  141. package/dist/shared/sqlite.d.ts +33 -1
  142. package/dist/shared/sqlite.d.ts.map +1 -1
  143. package/dist/shared/stable-json.d.ts.map +1 -1
  144. package/dist/shared/storage-file-mutex.d.ts +9 -0
  145. package/dist/shared/storage-file-mutex.d.ts.map +1 -0
  146. package/dist/shared/storage-permissions.d.ts +6 -0
  147. package/dist/shared/storage-permissions.d.ts.map +1 -1
  148. package/dist/shared/subagent-temperature.d.ts +46 -0
  149. package/dist/shared/subagent-temperature.d.ts.map +1 -0
  150. package/dist/shared/tag-owner-id.d.ts +1 -0
  151. package/dist/shared/tag-owner-id.d.ts.map +1 -1
  152. package/dist/shared/tag-transcript.d.ts +9 -0
  153. package/dist/shared/tag-transcript.d.ts.map +1 -1
  154. package/dist/shared/window-geometry.d.ts +9 -66
  155. package/dist/shared/window-geometry.d.ts.map +1 -1
  156. package/dist/standalone-plugin-marker.d.ts +8 -0
  157. package/dist/standalone-plugin-marker.d.ts.map +1 -0
  158. package/dist/tools/ctx-expand/search-archive.d.ts +4 -0
  159. package/dist/tools/ctx-expand/search-archive.d.ts.map +1 -0
  160. package/dist/tools/ctx-expand/tools.d.ts.map +1 -1
  161. package/dist/tools/ctx-reduce/constants.d.ts +1 -2
  162. package/dist/tools/ctx-reduce/constants.d.ts.map +1 -1
  163. package/dist/tools/ctx-reduce/tools.d.ts +1 -1
  164. package/dist/tools/ctx-reduce/tools.d.ts.map +1 -1
  165. package/dist/v2/hooks/context.d.ts +1 -1
  166. package/dist/v2/hooks/context.d.ts.map +1 -1
  167. package/dist/v2/hooks/copied-tag-notation.d.ts +19 -0
  168. package/dist/v2/hooks/copied-tag-notation.d.ts.map +1 -0
  169. package/dist/v2/hooks/generate.d.ts +9 -2
  170. package/dist/v2/hooks/generate.d.ts.map +1 -1
  171. package/dist/v2/hooks/payload.d.ts.map +1 -1
  172. package/dist/v2/hooks/system-prompt-response.d.ts +5 -0
  173. package/dist/v2/hooks/system-prompt-response.d.ts.map +1 -0
  174. package/dist/v2/server.d.ts.map +1 -1
  175. package/dist/v2/server.js +34550 -30855
  176. package/dist/web/main.js +373 -19
  177. package/dist/{wrapup-orchestrator-yknks3ad.js → wrapup-orchestrator-bmybc5p5.js} +10 -10
  178. package/package.json +1 -1
  179. package/src/config/deprecated-config.ts +18 -0
  180. package/src/config/index.test.ts +13 -37
  181. package/src/config/index.ts +2 -2
  182. package/src/config/project-security.ts +3 -3
  183. package/src/config/schema/magic-context.ts +10 -6
  184. package/src/shared/auto-search-lifecycle.ts +43 -0
  185. package/src/shared/logger.ts +10 -2
  186. package/src/shared/models-dev-cache.ts +1 -7
  187. package/src/shared/models-dev-temperature.ts +107 -0
  188. package/src/shared/processed-image-eligibility.test.ts +68 -0
  189. package/src/shared/processed-image-eligibility.ts +41 -0
  190. package/src/shared/processed-image-position-review.json +20 -0
  191. package/src/shared/processed-image-position-review.test.ts +19 -0
  192. package/src/shared/project-directory-key.ts +20 -0
  193. package/src/shared/recovery-reasoning-prefix.test.ts +34 -0
  194. package/src/shared/recovery-reasoning-prefix.ts +35 -0
  195. package/src/shared/sqlite-acquisition-routing.test.ts +4 -3
  196. package/src/shared/sqlite-foreground-wait.test.ts +68 -0
  197. package/src/shared/sqlite-pass-scope.test.ts +4 -4
  198. package/src/shared/sqlite-writer-diagnostics.test.ts +52 -12
  199. package/src/shared/sqlite.ts +380 -39
  200. package/src/shared/stable-json.ts +37 -7
  201. package/src/shared/storage-file-mutex.test.ts +50 -0
  202. package/src/shared/storage-file-mutex.ts +130 -0
  203. package/src/shared/storage-permissions.ts +46 -0
  204. package/src/shared/subagent-temperature.ts +110 -0
  205. package/src/shared/tag-owner-id.ts +13 -0
  206. package/src/shared/tag-transcript.ts +118 -0
  207. package/src/shared/window-geometry.test.ts +102 -236
  208. package/src/shared/window-geometry.ts +23 -413
  209. package/dist/index-ramz5kkm.js +0 -514
  210. package/dist/recomp-orchestrator-frmwj9hz.js +0 -21
  211. package/src/shared/__fixtures__/window-overlay.v1.json +0 -337
@@ -1,4 +1,4 @@
1
- import type { Database } from "../../shared/sqlite";
1
+ import { type Database } from "../../shared/sqlite";
2
2
  export interface RawMessageParts {
3
3
  id: string;
4
4
  role: string;
@@ -36,6 +36,10 @@ export declare function readRawSessionMessagesFromDb(db: Database, sessionId: st
36
36
  * cannot monopolize the event loop by hydrating an entire long session.
37
37
  */
38
38
  export declare function readRawSessionMessagePageFromDb(db: Database, sessionId: string, afterOrdinal: number, limit: number, finalWatermark?: number, after?: RawMessageOrdinalAnchor): RawMessage[];
39
+ /** @internal Message rows examined by raw page reads, including excluded rows. */
40
+ export declare function getRawMessagePageRowsVisitedForTest(): number;
41
+ /** @internal */
42
+ export declare function resetRawMessagePageRowsVisitedForTest(): void;
39
43
  /** Longest text a summary page keeps from one text part or one tool key argument. */
40
44
  export declare const RAW_SUMMARY_TEXT_MAX_CHARS = 8192;
41
45
  /**
@@ -46,6 +50,13 @@ export declare const RAW_SUMMARY_TEXT_MAX_CHARS = 8192;
46
50
  * of small projected parts, whatever the session or tool-output size.
47
51
  */
48
52
  export declare function readRawSessionMessageSummaryPageFromDb(db: Database, sessionId: string, afterOrdinal: number, limit: number, finalWatermark?: number, after?: RawMessageOrdinalAnchor): RawMessage[];
53
+ /**
54
+ * Number of ordinal-bearing messages in a session. Counted from the
55
+ * `(session_id, time_created, id)` index minus the session's finished
56
+ * compaction summaries (see {@link countCanonicalOrdinalsIndexed}); the
57
+ * statement below, which reads every message's JSON, is used only when that
58
+ * path is unavailable.
59
+ */
49
60
  export declare function countRawSessionMessageOrdinalsFromDb(db: Database, sessionId: string): number;
50
61
  /**
51
62
  * Read the canonical raw-message ordinal space without loading or parsing part rows.
@@ -150,6 +161,85 @@ export declare function buildInMemoryTailRawMessages(args: {
150
161
  anchorMessageId: string | null;
151
162
  }): InMemoryTailResult | null;
152
163
  export declare function readRawSessionMessagePartsByIdFromDb(db: Database, sessionId: string, messageId: string, onQuery?: () => void): RawMessageParts | null;
164
+ interface OrdinalKey {
165
+ timeCreated: number;
166
+ id: string;
167
+ }
168
+ /**
169
+ * Stop reusing every ordinal watermark of a session. The store stamp already
170
+ * catches every write; this lets a removal event drop the watermark early.
171
+ */
172
+ export declare function forgetRawSessionOrdinalWatermark(sessionId: string): void;
173
+ /** @internal Rows the canonical ordinal statements have visited since the last reset. */
174
+ export declare function getRawSessionOrdinalRowsVisitedForTest(): number;
175
+ /** @internal */
176
+ export declare function resetRawSessionOrdinalRowsVisitedForTest(): void;
177
+ /**
178
+ * Rebuild a session's summary candidates from a full scan on the next count.
179
+ * Needed only after an in-place edit that gave an existing ordinary row the
180
+ * `summary` flag; deletes, inserts, moved timestamps and summaries finishing
181
+ * are all seen without it.
182
+ */
183
+ export declare function forgetRawSessionSummaryRows(sessionId: string): void;
184
+ /**
185
+ * Record that this process wrote a compaction-summary row, so counts on every
186
+ * connection re-read it even when the write rewrote an existing row in place.
187
+ */
188
+ export declare function noteRawSessionSummaryRowWritten(sessionId: string, messageId: string): void;
189
+ /** @internal Message rows whose JSON the ordinal counts may have parsed since the last reset. */
190
+ export declare function getRawSessionOrdinalJsonRowsReadForTest(): number;
191
+ /** @internal Full summary scans of a session since the last reset. */
192
+ export declare function getRawSessionSummaryFullScansForTest(): number;
193
+ /** @internal */
194
+ export declare function resetRawSessionOrdinalJsonRowsReadForTest(): void;
195
+ /**
196
+ * A worker snapshot of summary candidates, global rowid anchors and exact ranks.
197
+ * Checkpoints are durable prefix ranks: new messages extend the last anchor,
198
+ * and a revert truncates to the newest surviving checkpoint. Message identities
199
+ * and ordering are immutable outside tail deletion in the OpenCode store.
200
+ */
201
+ export interface RawSessionSummaryScan {
202
+ anchors: Array<{
203
+ rowid: number;
204
+ id: string;
205
+ }>;
206
+ ids: string[];
207
+ /** Rows of the session whose JSON the scan read. */
208
+ sessionRows: number;
209
+ checkpoints?: Array<OrdinalKey & {
210
+ ordinal: number;
211
+ storedCount?: number;
212
+ }>;
213
+ total?: number;
214
+ }
215
+ /**
216
+ * Fork adaptation (A/B): upstream's off-thread warm-up replaced by a
217
+ * synchronous in-process scan. Builds the summary candidates and the prefix
218
+ * rank checkpoints on THIS connection (no worker exists in this fork), so
219
+ * bounded ordinal reads and page reads become cheap after the first call.
220
+ * Returns true when the connection is warm afterwards.
221
+ */
222
+ export declare function warmRawSessionOrdinalsForDb(db: Database, sessionId: string): boolean;
223
+ /** Retained ranks seed a worker when more than one bounded page was appended. */
224
+ export declare function rawOrdinalSummarySeed(db: Database, sessionId: string): RawSessionSummaryScan | undefined;
225
+ /** Discover summary candidates and build ranks on the worker's read snapshot. */
226
+ export declare function scanRawSessionSummaryRows(db: Database, sessionId: string, previous?: RawSessionSummaryScan): RawSessionSummaryScan;
227
+ /** The value to pass to {@link installRawSessionSummaryScan} for a scan started now. */
228
+ export declare function getRawSessionSummaryEpoch(sessionId: string): number;
229
+ /**
230
+ * Retain discovered candidates and prefix ranks for incremental extension.
231
+ * Tail removals during a cold scan are repaired against the serving snapshot
232
+ * before ranks become ready. A later revert retains the same surviving prefix.
233
+ */
234
+ export declare function installRawSessionSummaryScan(db: Database, sessionId: string, scan: RawSessionSummaryScan, epoch: number, workerPrepared?: boolean): boolean;
235
+ /**
236
+ * File-store reads need worker-built prefix ranks so host lookups read only a
237
+ * bounded suffix. Workers and memory stores can discover summary candidates
238
+ * directly, retaining them while their remembered rowid still names the same row.
239
+ */
240
+ export declare function isRawSessionSummaryWarm(db: Database, sessionId: string): boolean;
241
+ /** Message rows of a session, counted from the `(session_id, ...)` index alone. */
242
+ export declare function countStoredRawSessionRowsIndexed(db: Database, sessionId: string): number;
153
243
  /**
154
244
  * Resolve one message ID in the canonical raw-message ordinal space. Synthetic
155
245
  * compaction summaries are excluded so this count matches every module wire
@@ -161,4 +251,36 @@ export declare function readRawSessionMessageByIdFromDb(db: Database, sessionId:
161
251
  export declare function hasRawSessionMessageByIdFromDb(db: Database, sessionId: string, messageId: string): boolean;
162
252
  /** Read the canonical servable tail and its parts in one query, including its boundary row. */
163
253
  export declare function readRawSeedTailFromDb(db: Database, sessionId: string, boundaryId: string | null): Map<string, RawMessage>;
254
+ /**
255
+ * What compartment boundary resolution needs to know about one boundary
256
+ * message. `null` in the result map means the message is not servable (absent,
257
+ * unreadable, or a finished compaction summary), exactly the messages
258
+ * {@link readRawSessionMessagePartsByIdFromDb} returns null for.
259
+ */
260
+ export interface RawBoundaryEndpoint {
261
+ /** Ordinal as {@link readRawSessionMessageIdOrdinalsForRangeFromDb} numbers it; null when it has none. */
262
+ ordinal: number | null;
263
+ createdAt: number;
264
+ /**
265
+ * Index of the message's last module block, the value
266
+ * `moduleRawBlockMappings(parts).at(-1)?.blockIndex ?? 0` yields. Only
267
+ * present when the caller asked for it.
268
+ */
269
+ lastBlockIndex?: number;
270
+ }
271
+ /** @internal Boundary message ids read from the store since the last reset. */
272
+ export declare function getRawBoundaryEndpointRowsReadForTest(): number;
273
+ /** @internal */
274
+ export declare function resetRawBoundaryEndpointRowsReadForTest(): void;
275
+ /**
276
+ * For each id, its ordinal and creation time, or null when it is not
277
+ * servable (see RawBoundaryEndpoint). Ids in `blockIds` also get
278
+ * `lastBlockIndex`, the index of the message's last module block. Message rows
279
+ * are read in two statements over just the requested ids, and block counts in
280
+ * one more, so no message JSON other than theirs reaches JavaScript. While the
281
+ * store is unchanged since an earlier call, ids answered then are not read
282
+ * again.
283
+ */
284
+ export declare function readRawSessionBoundaryEndpointsFromDb(db: Database, sessionId: string, ids: readonly string[], blockIds?: readonly string[]): Map<string, RawBoundaryEndpoint | null>;
285
+ export {};
164
286
  //# sourceMappingURL=read-session-raw.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"read-session-raw.d.ts","sourceRoot":"","sources":["../../../src/hooks/magic-context/read-session-raw.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"read-session-raw.d.ts","sourceRoot":"","sources":["../../../src/hooks/magic-context/read-session-raw.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"read-session-true-raw-tokens.d.ts","sourceRoot":"","sources":["../../../src/hooks/magic-context/read-session-true-raw-tokens.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"read-session-true-raw-tokens.d.ts","sourceRoot":"","sources":["../../../src/hooks/magic-context/read-session-true-raw-tokens.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAErD,MAAM,WAAW,qBAAqB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,sBAAsB;IACnC,oBAAoB,EAAE,aAAa,GAAG,cAAc,CAAC;IACrD,mBAAmB,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,MAAM,CAAC;CACnD;AAED,MAAM,WAAW,iBAAiB;IAC9B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,oBAAoB,EAAE,MAAM,CAAC;IACtC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC;IACzC,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IACnD,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC;IACjD,WAAW,CAAC,cAAc,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM,CAAC;IAClE,wBAAwB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;IACjD,iBAAiB,CAAC,cAAc,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAAC;CAC9F;AAED,MAAM,WAAW,OAAO;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B;AAED,iGAAiG;AACjG,wBAAgB,+BAA+B,CAC3C,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,GACjB,OAAO,CAET;AAED,MAAM,WAAW,6BAA8B,SAAQ,sBAAsB;IACzE,cAAc,EAAE,MAAM,CAAC;IACvB,qFAAqF;IACrF,WAAW,CAAC,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC;IAC9E;;;;;;;;OAQG;IACH,qBAAqB,CAAC,EAAE,CAAC,OAAO,EAAE,UAAU,KAAK,MAAM,GAAG,IAAI,CAAC;IAC/D;;;;;;;;;;;;;OAaG;IACH,oBAAoB,CAAC,EAAE,MAAM,CAAC;CACjC;AAqWD,wBAAgB,4BAA4B,CACxC,OAAO,EAAE,UAAU,EACnB,OAAO,EAAE,sBAAsB,GAChC,qBAAqB,CAgCvB;AAED,wBAAgB,aAAa,CAAC,QAAQ,EAAE,SAAS,UAAU,EAAE,GAAG,OAAO,EAAE,CA0CxE;AAED,wBAAgB,iCAAiC,CAC7C,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,SAAS,OAAO,EAAE,EACxB,uBAAuB,EAAE,MAAM,EAC/B,gBAAgB,CAAC,EAAE,CAAC,IAAI,EAAE,aAAa,CAAC;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,KAAK,IAAI,GACzF,MAAM,CA+BR;AAED,wBAAgB,wBAAwB,CACpC,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,SAAS,OAAO,EAAE,EACxB,yBAAyB,EAAE,MAAM,EACjC,mBAAmB,EAAE,MAAM,GAC5B,MAAM,CAiCR;AAcD,wBAAgB,sBAAsB,CAClC,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,SAAS,UAAU,EAAE,EAC/B,OAAO,EAAE,6BAA6B,GACvC,iBAAiB,CA2HnB;AA2BD,wBAAgB,0BAA0B,CACtC,QAAQ,EAAE,SAAS,UAAU,EAAE,EAC/B,cAAc,EAAE,MAAM,EACtB,YAAY,EAAE,MAAM,GACrB,MAAM,CAQR;AAED,wBAAgB,2BAA2B,CAAC,IAAI,EAAE;IAC9C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,EACA,iBAAiB,GACjB,iBAAiB,GACjB,mBAAmB,GACnB,iBAAiB,GACjB,mBAAmB,GACnB,6BAA6B,GAC7B,uBAAuB,GACvB,kBAAkB,CAAC;CAC5B,GAAG,IAAI,CAYP;AAED,wBAAgB,4CAA4C,CACxD,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,SAAS,MAAM,EAAE,GAC1B,iBAAiB,CA2DnB"}
@@ -1 +1 @@
1
- {"version":3,"file":"reasoning-budget.d.ts","sourceRoot":"","sources":["../../../src/hooks/magic-context/reasoning-budget.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AAoB5E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAElD,gGAAgG;AAChG,wBAAgB,oCAAoC,CAChD,EAAE,EAAE,eAAe,EACnB,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,WAAW,EAAE,EACvB,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,GACnB,MAAM,CA6BR;AAED,eAAO,MAAM,6BAA6B,QAAS,CAAC;AACpD,eAAO,MAAM,6BAA6B,OAAQ,CAAC;AACnD,MAAM,MAAM,mBAAmB,GAAG,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAElE,wBAAgB,0BAA0B,CACtC,MAAM,EAAE,mBAAmB,GAAG,SAAS,EACvC,QAAQ,EAAE,MAAM,GAAG,SAAS,GAC7B,MAAM,CAWR;AAED,wBAAgB,iBAAiB,CAC7B,QAAQ,EAAE,MAAM,GAAG,SAAS,EAC5B,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE,OAAO,GAChB,MAAM,CAIR;AAED,MAAM,WAAW,mBAAmB;IAChC,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,GAAG,CAAC,MAAM,MAAM,CAAC,CAAC;IAC9B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,cAAc,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CACjC,KAAK,EAAE,SAAS,mBAAmB,EAAE,EACrC,MAAM,EAAE,MAAM,GACf,MAAM,CAwBR;AAED,qFAAqF;AACrF,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,SAAS,OAAO,EAAE,GAAG;IAC/D,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,OAAO,CAAC;IAChB,YAAY,EAAE,OAAO,CAAC;CACzB,CAsDA;AAED,wBAAgB,6BAA6B,CAAC,IAAI,EAAE;IAChD,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB,iBAAiB,EAAE,WAAW,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;IACpD,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACrC,QAAQ,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAC/B,uBAAuB,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,eAAe,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;CACzC,GAAG,MAAM,CA+CT"}
1
+ {"version":3,"file":"reasoning-budget.d.ts","sourceRoot":"","sources":["../../../src/hooks/magic-context/reasoning-budget.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AAmB5E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAElD,gGAAgG;AAChG,wBAAgB,oCAAoC,CAChD,EAAE,EAAE,eAAe,EACnB,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,WAAW,EAAE,EACvB,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,GACnB,MAAM,CA8BR;AAED,eAAO,MAAM,6BAA6B,QAAS,CAAC;AACpD,eAAO,MAAM,6BAA6B,OAAQ,CAAC;AACnD,MAAM,MAAM,mBAAmB,GAAG,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAElE,wBAAgB,0BAA0B,CACtC,MAAM,EAAE,mBAAmB,GAAG,SAAS,EACvC,QAAQ,EAAE,MAAM,GAAG,SAAS,GAC7B,MAAM,CAWR;AAED,wBAAgB,iBAAiB,CAC7B,QAAQ,EAAE,MAAM,GAAG,SAAS,EAC5B,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE,OAAO,GAChB,MAAM,CAIR;AAED,MAAM,WAAW,mBAAmB;IAChC,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,GAAG,CAAC,MAAM,MAAM,CAAC,CAAC;IAC9B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,cAAc,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CACjC,KAAK,EAAE,SAAS,mBAAmB,EAAE,EACrC,MAAM,EAAE,MAAM,GACf,MAAM,CAwBR;AAED,qFAAqF;AACrF,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,SAAS,OAAO,EAAE,GAAG;IAC/D,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,OAAO,CAAC;IAChB,YAAY,EAAE,OAAO,CAAC;CACzB,CAsDA;AAED,wBAAgB,6BAA6B,CAAC,IAAI,EAAE;IAChD,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB,iBAAiB,EAAE,WAAW,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;IACpD,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACrC,QAAQ,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAC/B,uBAAuB,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,eAAe,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;CACzC,GAAG,MAAM,CA+DT"}
@@ -120,6 +120,43 @@ export declare function makeWholeMessageSentinel(providerID?: string): {
120
120
  type: "text";
121
121
  text: string;
122
122
  } & Record<string, unknown>;
123
+ /**
124
+ * True when neutralizing this whole message must leave it with no parts at all
125
+ * instead of a sentinel part.
126
+ *
127
+ * OpenCode 2 hands host system updates (instruction changes, other plugins'
128
+ * reminders) to the transform as `system` rows; OpenCode 1 and Pi never do.
129
+ * OpenCode 2's Anthropic adapter drops empty text in user and assistant
130
+ * messages, but sends a `system` row as an in-conversation system message
131
+ * (Claude models with native system updates: Opus 4.8 and every Claude 5)
132
+ * with its text blocks as they are, and Anthropic rejects an empty text block
133
+ * with HTTP 400 `text content blocks must be non-empty`. On older Claude
134
+ * models the host instead appends the row to the user turn as a
135
+ * `<system-update>` text block; with the row removed, that block goes too.
136
+ *
137
+ * A message left with no parts is omitted when the payload goes back to the
138
+ * host (`adaptPayload().commit()` in v2/hooks/payload.ts), the same rule the
139
+ * Rust module applies to a rendered message with no content. Other providers
140
+ * keep the `[dropped]` row: it is valid there and already served.
141
+ */
142
+ export declare function wholeMessageNeutralizationRemoves(message: {
143
+ info: {
144
+ role?: unknown;
145
+ };
146
+ }, providerID?: string): boolean;
147
+ /**
148
+ * Neutralize a whole message in place: replace its parts with one
149
+ * `makeWholeMessageSentinel` part, or with no parts at all when
150
+ * `wholeMessageNeutralizationRemoves` says the row must leave the request.
151
+ * The message object stays in the array either way, so index-addressed lanes
152
+ * later in the pass still line up.
153
+ */
154
+ export declare function neutralizeWholeMessage(message: {
155
+ info: {
156
+ role?: unknown;
157
+ };
158
+ parts: unknown[];
159
+ }, providerID?: string): void;
123
160
  /**
124
161
  * Detect whether a part is already a sentinel produced by `makeSentinel`
125
162
  * or `makeWholeMessageSentinel`. Used by strip functions to stay
@@ -132,13 +169,16 @@ export declare function makeWholeMessageSentinel(providerID?: string): {
132
169
  export declare function isSentinel(part: unknown): boolean;
133
170
  /**
134
171
  * Replay persisted whole-message decisions onto a fresh host projection.
135
- * Canonical Anthropic keeps empty sentinels because its adapter filters them.
172
+ * Canonical Anthropic keeps empty sentinels because its adapter filters them,
173
+ * except on OpenCode 2 `system` rows, which are left with no parts (see
174
+ * `wholeMessageNeutralizationRemoves`).
136
175
  * For non-empty-sentinel providers, hidden seam rows are removed instead: they
137
176
  * were absent on the fold pass, so removal is the only byte-identical replay.
138
177
  */
139
178
  export declare function replaySentinelByMessageIds(messages: Array<{
140
179
  info: {
141
180
  id?: string;
181
+ role?: unknown;
142
182
  };
143
183
  parts: unknown[];
144
184
  }>, ids: Set<string>, providerID?: string, hiddenSeamIds?: ReadonlySet<string>): {
@@ -1 +1 @@
1
- {"version":3,"file":"sentinel.d.ts","sourceRoot":"","sources":["../../../src/hooks/magic-context/sentinel.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,8BAA8B,cAAc,CAAC;AAE1D;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,wBAAwB,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAErE;AAED;;;;;;;;;GASG;AACH,wBAAgB,sBAAsB,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAMrF;AAMD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,8BAA8B,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CAiBlE;AAED;;;;GAIG;AACH,wBAAgB,+BAA+B,CAAC,IAAI,EAAE,OAAO,EAAE,aAAa,EAAE,OAAO,GAAG,OAAO,CAa9F;AAED,qEAAqE;AACrE,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAIjE;AAED,8EAA8E;AAC9E,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAEjE;AA4BD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,+BAA+B,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAW9F;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,YAAY,CAAC,YAAY,EAAE,OAAO,GAAG;IACjD,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CAChB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAc1B;AAED;;;;;;;;;GASG;AACH,wBAAgB,wBAAwB,CACpC,UAAU,CAAC,EAAE,MAAM,GACpB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAK1D;AAED;;;;;;;;GAQG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAKjD;AAED;;;;;GAKG;AACH,wBAAgB,0BAA0B,CACtC,QAAQ,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE;QAAE,EAAE,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAAC,KAAK,EAAE,OAAO,EAAE,CAAA;CAAE,CAAC,EAC5D,GAAG,EAAE,GAAG,CAAC,MAAM,CAAC,EAChB,UAAU,CAAC,EAAE,MAAM,EACnB,aAAa,GAAE,WAAW,CAAC,MAAM,CAAa,GAC/C;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,EAAE,CAAA;CAAE,CAsB5C"}
1
+ {"version":3,"file":"sentinel.d.ts","sourceRoot":"","sources":["../../../src/hooks/magic-context/sentinel.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,8BAA8B,cAAc,CAAC;AAE1D;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,wBAAwB,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAErE;AAED;;;;;;;;;GASG;AACH,wBAAgB,sBAAsB,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAMrF;AAMD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,8BAA8B,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CAiBlE;AAED;;;;GAIG;AACH,wBAAgB,+BAA+B,CAAC,IAAI,EAAE,OAAO,EAAE,aAAa,EAAE,OAAO,GAAG,OAAO,CAa9F;AAED,qEAAqE;AACrE,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAIjE;AAED,8EAA8E;AAC9E,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAEjE;AA4BD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,+BAA+B,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAW9F;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,YAAY,CAAC,YAAY,EAAE,OAAO,GAAG;IACjD,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CAChB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAc1B;AAED;;;;;;;;;GASG;AACH,wBAAgB,wBAAwB,CACpC,UAAU,CAAC,EAAE,MAAM,GACpB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAK1D;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,iCAAiC,CAC7C,OAAO,EAAE;IAAE,IAAI,EAAE;QAAE,IAAI,CAAC,EAAE,OAAO,CAAA;KAAE,CAAA;CAAE,EACrC,UAAU,CAAC,EAAE,MAAM,GACpB,OAAO,CAET;AAED;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CAClC,OAAO,EAAE;IAAE,IAAI,EAAE;QAAE,IAAI,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC;IAAC,KAAK,EAAE,OAAO,EAAE,CAAA;CAAE,EACvD,UAAU,CAAC,EAAE,MAAM,GACpB,IAAI,CAKN;AAED;;;;;;;;GAQG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAKjD;AAED;;;;;;;GAOG;AACH,wBAAgB,0BAA0B,CACtC,QAAQ,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE;QAAE,EAAE,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC;IAAC,KAAK,EAAE,OAAO,EAAE,CAAA;CAAE,CAAC,EAC5E,GAAG,EAAE,GAAG,CAAC,MAAM,CAAC,EAChB,UAAU,CAAC,EAAE,MAAM,EACnB,aAAa,GAAE,WAAW,CAAC,MAAM,CAAa,GAC/C;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,EAAE,CAAA;CAAE,CAsB5C"}
@@ -0,0 +1,8 @@
1
+ /** Compare m[0]/m[1] text and muralDataUrl image with the two knowledge messages last served. */
2
+ export declare function servedPrefixMatches(args: {
3
+ messages: readonly unknown[] | null | undefined;
4
+ m0Text: string | null | undefined;
5
+ m1Text: string | null | undefined;
6
+ muralDataUrl?: string | null;
7
+ }): boolean;
8
+ //# sourceMappingURL=strict-thinking-prefix.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"strict-thinking-prefix.d.ts","sourceRoot":"","sources":["../../../src/hooks/magic-context/strict-thinking-prefix.ts"],"names":[],"mappings":"AAEA,iGAAiG;AACjG,wBAAgB,mBAAmB,CAAC,IAAI,EAAE;IACtC,QAAQ,EAAE,SAAS,OAAO,EAAE,GAAG,IAAI,GAAG,SAAS,CAAC;IAChD,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IAClC,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IAClC,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAChC,GAAG,OAAO,CAgCV"}
@@ -1,3 +1,4 @@
1
+ import { type FrozenReasoningPart } from "../../features/magic-context/merged-reasoning-decisions";
1
2
  import type { MessageLike, ThinkingLikePart } from "./tag-messages";
2
3
  export declare function isMarkerOnlyText(text: string): boolean;
3
4
  /**
@@ -17,7 +18,9 @@ export declare function isMarkerOnlyText(text: string): boolean;
17
18
  * length so proxy providers that hash message-array structure see a stable
18
19
  * prefix. For Anthropic/Bedrock, the provider's upstream filter drops
19
20
  * empty-content messages on the wire anyway — same effective behavior, no
20
- * mid-pipeline array mutation.
21
+ * mid-pipeline array mutation. An OpenCode 2 `system` row on canonical
22
+ * Anthropic is left with no parts instead and omitted when the payload goes
23
+ * back to the host (see `wholeMessageNeutralizationRemoves`).
21
24
  */
22
25
  export declare function stripSystemInjectedMessages(messages: MessageLike[], protectedTailStart: number, providerID?: string, onFirstApplication?: (message: MessageLike, partIndex: number) => void): {
23
26
  stripped: number;
@@ -47,7 +50,8 @@ export declare function stripSystemInjectedMessages(messages: MessageLike[], pro
47
50
  * length so proxy providers that hash message-array structure see a stable
48
51
  * prefix. For Anthropic/Bedrock, OpenCode's upstream filter drops empty
49
52
  * content messages on the wire — same effective behavior, no mid-pipeline
50
- * array mutation.
53
+ * array mutation. An OpenCode 2 `system` row on canonical Anthropic is left
54
+ * with no parts instead (see `wholeMessageNeutralizationRemoves`).
51
55
  *
52
56
  * Returns both count and sentineled IDs so callers can persist-and-replay.
53
57
  */
@@ -181,6 +185,14 @@ export declare function findMergedReasoningStripDecisions(messages: MessageLike[
181
185
  export declare function stripReasoningFromMergedAssistants(messages: MessageLike[], providerID?: string, options?: {
182
186
  mutationExemptMessage?: MessageLike;
183
187
  frozenMessageIds?: ReadonlySet<string>;
188
+ /**
189
+ * `readFrozenMergedReasoningParts(frozenMessageIds)` and its key set,
190
+ * when the caller already decoded them. A caller that strips one message
191
+ * at a time passes these so each call does not decode every frozen
192
+ * decision again. They must describe the same `frozenMessageIds`.
193
+ */
194
+ frozenParts?: ReadonlyMap<string, readonly FrozenReasoningPart[]>;
195
+ frozenPartMessageIds?: ReadonlySet<string>;
184
196
  protectedMessages?: ReadonlySet<MessageLike>;
185
197
  restoreMessages?: ReadonlySet<MessageLike>;
186
198
  }): number;
@@ -188,34 +200,36 @@ export interface StripProcessedImagesResult {
188
200
  stripped: number;
189
201
  newlyStrippedIds: string[];
190
202
  }
203
+ export declare function getEmptyImageParts(messages: readonly MessageLike[]): ReadonlyMap<string, ReadonlySet<number>>;
191
204
  /**
192
- * Neutralize large image-data-URL file parts on already-processed user
193
- * messages, replacing them in place with empty-text sentinels (which the
194
- * Anthropic adapter then filters off the wire entirely).
195
- *
196
- * REPLAY/DETECT split — mirrors `dropStaleReduceCalls`, and for the same
197
- * reason. The empty sentinel is filtered for Anthropic, so the FIRST time a
198
- * message is sentinelized its image blocks VANISH from the wire — a real byte
199
- * change. The earlier "strip every pass when `maxTag <= watermark`" version
200
- * keyed that first-strip on the live watermark, which advances with tail
201
- * growth: a DEFER pass could newly cross an older image message and strip it
202
- * mid-prefix, busting the Anthropic cache on a pass that must replay
203
- * byte-identically (observed live — a processed-screenshot message lost its
204
- * images on a defer pass and collapsed the cached prefix). Freezing the id set
205
- * on cache-busting passes and replaying it everywhere removes the moving
206
- * boundary: DETECT (cache-busting passes only) finds newly-aged processed image
207
- * messages, strips them, and returns their ids to persist; REPLAY (every pass,
208
- * incl. defer) re-strips only already-frozen ids, byte-identical regardless of
209
- * how the live array grew.
210
- *
211
- * Caller contract: run only when `modelAcceptsEmptyContent(providerID)` is
212
- * true, because non-Anthropic adapters can forward the empty text replacement
213
- * to the wire.
205
+ * Remove answered inline images older than content already dropped from the
206
+ * transcript. Tags number transcript content in order; the watermark is the
207
+ * largest tag number marked dropped. First replacements require permission to
208
+ * rewrite the cached conversation prefix, since removing image bytes invalidates
209
+ * that cache. Persist ids and marker text before applying any replacement.
210
+ * Later passes replay those decisions without consulting the moving age boundary or
211
+ * current provider, so growing history cannot silently change cached bytes.
212
+ *
213
+ * User images prefer empty text on Anthropic and `[image stripped]` elsewhere.
214
+ * New empty forms retain a non-empty separator if omitting the row would join
215
+ * same-role neighbors or disturb a tool arc. Historical forms replay unchanged.
216
+ * Tool attachments always put non-empty markers in the result's text output,
217
+ * because the attachment array admits files only and a result must not be empty.
214
218
  */
215
219
  export declare function stripProcessedImages(messages: MessageLike[], frozenIds: Set<string>, options: {
216
220
  detect: boolean;
217
221
  watermark: number;
218
222
  messageTagNumbers: Map<MessageLike, number>;
223
+ protectedCutoff?: number | null;
224
+ contextPercentage?: number;
225
+ /** Marker for newly discovered ids only; legacy frozen ids keep empty sentinels. */
226
+ replacementText?: "" | "[image stripped]";
227
+ /** Stored text takes precedence if another process already persisted the same id. */
228
+ frozenMarkers?: ReadonlyMap<string, "" | "[image stripped]">;
229
+ /** Per-tool result exemptions still block stripping when emergency cleanup waives recency protection. */
230
+ protectedMessageIds?: ReadonlySet<string>;
231
+ /** Commit new replay IDs before changing bytes; false leaves new images intact. */
232
+ persistNewIds?: (ids: readonly string[], markers: ReadonlyMap<string, "" | "[image stripped]">) => boolean;
219
233
  /** Reports only first strips, never restoring an already frozen image. */
220
234
  onFirstApplication?: (message: MessageLike, partIndex: number) => void;
221
235
  }): StripProcessedImagesResult;
@@ -1 +1 @@
1
- {"version":3,"file":"strip-content.d.ts","sourceRoot":"","sources":["../../../src/hooks/magic-context/strip-content.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"strip-content.d.ts","sourceRoot":"","sources":["../../../src/hooks/magic-context/strip-content.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ export type SystemDateRequestIdentity = object | string;
2
+ export interface SystemDateRequest {
3
+ readonly sessionId: string;
4
+ readonly identity: SystemDateRequestIdentity;
5
+ }
6
+ /** Use the last real-user message ID that anchors thinking recovery, including
7
+ * its exclusions for synthetic messages and tool-result carriers. */
8
+ export declare function systemDateTurnId(messages: readonly unknown[]): string | undefined;
9
+ /** Keep OpenCode 2's per-request draft identity on the adapted messages output
10
+ * so both hook stages address the same request. */
11
+ export declare function bindSystemDateRequestIdentity(output: object, identity: SystemDateRequestIdentity): void;
12
+ export declare function systemDateRequestIdentity(output: object): SystemDateRequestIdentity | undefined;
13
+ export declare function bindSystemDateRequest(output: object, request: SystemDateRequest | undefined): void;
14
+ export declare function systemDateRequestForOutput(history: Set<string>, output: object): SystemDateRequest | undefined;
15
+ /** Reapply deferred host dates after the host copied the system prompt strings. */
16
+ export declare function bindSystemDateOutput(system: string[], update: () => void): void;
17
+ export declare function publishSystemDateOutput(system: string[]): void;
18
+ export declare function registerSystemDateRefresh(history: Set<string>): void;
19
+ export declare function hasSystemDateRefresh(history: Set<string>): boolean;
20
+ /** Each pass owns a unique handle. Without a host request identity, opposite
21
+ * stages may pair only on an unambiguous real-user turn. Overlapping unidentified
22
+ * requests in that turn stay frozen rather than borrowing another pass's grant. */
23
+ export declare function beginSystemDateRequest(history: Set<string>, sessionId: string, stage: "system" | "system-after-messages" | "messages", turnId: string | undefined, identity?: SystemDateRequestIdentity): SystemDateRequest | undefined;
24
+ export declare function systemDateRefreshPermission(history: Set<string>, request: SystemDateRequest | undefined): boolean | undefined;
25
+ export declare function waitForSystemDateRefresh(history: Set<string>, request: SystemDateRequest | undefined, apply: (permitted: boolean) => void): boolean;
26
+ export declare function finishSystemDateRefresh(history: Set<string>, request: SystemDateRequest | undefined, permitted: boolean): void;
27
+ export declare function finishSystemDateHook(history: Set<string>, request: SystemDateRequest | undefined): void;
28
+ export declare function clearSystemDateRefresh(history: Set<string>, sessionId: string): void;
29
+ //# sourceMappingURL=system-date-refresh.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"system-date-refresh.d.ts","sourceRoot":"","sources":["../../../src/hooks/magic-context/system-date-refresh.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,yBAAyB,GAAG,MAAM,GAAG,MAAM,CAAC;AACxD,MAAM,WAAW,iBAAiB;IAC9B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,QAAQ,EAAE,yBAAyB,CAAC;CAChD;AAiBD;qEACqE;AACrE,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,SAAS,OAAO,EAAE,GAAG,MAAM,GAAG,SAAS,CAMjF;AAED;mDACmD;AACnD,wBAAgB,6BAA6B,CACzC,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,yBAAyB,GACpC,IAAI,CAEN;AACD,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,MAAM,GAAG,yBAAyB,GAAG,SAAS,CAE/F;AACD,wBAAgB,qBAAqB,CACjC,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,iBAAiB,GAAG,SAAS,GACvC,IAAI,CAEN;AACD,wBAAgB,0BAA0B,CACtC,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,EACpB,MAAM,EAAE,MAAM,GACf,iBAAiB,GAAG,SAAS,CAG/B;AAED,mFAAmF;AACnF,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,IAAI,GAAG,IAAI,CAE/E;AACD,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAG9D;AACD,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,IAAI,CAEpE;AACD,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,OAAO,CAElE;AAED;;mFAEmF;AACnF,wBAAgB,sBAAsB,CAClC,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,EACpB,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,QAAQ,GAAG,uBAAuB,GAAG,UAAU,EACtD,MAAM,EAAE,MAAM,GAAG,SAAS,EAC1B,QAAQ,CAAC,EAAE,yBAAyB,GACrC,iBAAiB,GAAG,SAAS,CAyD/B;AASD,wBAAgB,2BAA2B,CACvC,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,EACpB,OAAO,EAAE,iBAAiB,GAAG,SAAS,GACvC,OAAO,GAAG,SAAS,CAGrB;AACD,wBAAgB,wBAAwB,CACpC,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,EACpB,OAAO,EAAE,iBAAiB,GAAG,SAAS,EACtC,KAAK,EAAE,CAAC,SAAS,EAAE,OAAO,KAAK,IAAI,GACpC,OAAO,CAKT;AAcD,wBAAgB,uBAAuB,CACnC,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,EACpB,OAAO,EAAE,iBAAiB,GAAG,SAAS,EACtC,SAAS,EAAE,OAAO,GACnB,IAAI,CAQN;AACD,wBAAgB,oBAAoB,CAChC,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,EACpB,OAAO,EAAE,iBAAiB,GAAG,SAAS,GACvC,IAAI,CAKN;AACD,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,CAEpF"}
@@ -0,0 +1,6 @@
1
+ /** Capture each host date field so separate system prompt elements keep their own fixed dates. */
2
+ export declare function systemPromptDates(prompt: string, sticky?: string): {
3
+ live: string | undefined;
4
+ stable: string;
5
+ };
6
+ //# sourceMappingURL=system-prompt-dates.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"system-prompt-dates.d.ts","sourceRoot":"","sources":["../../../src/hooks/magic-context/system-prompt-dates.ts"],"names":[],"mappings":"AAYA,kGAAkG;AAClG,wBAAgB,iBAAiB,CAC7B,MAAM,EAAE,MAAM,EACd,MAAM,CAAC,EAAE,MAAM,GAChB;IACC,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;IACzB,MAAM,EAAE,MAAM,CAAC;CAClB,CAUA"}
@@ -0,0 +1,47 @@
1
+ import type { ContextDatabase } from "../../features/magic-context/storage";
2
+ import type { LkgRequestIdentity } from "./lkg-measured-request";
3
+ export declare function recordSystemRefreshOwnership(sessionId: string, hash: string, ownsHistoryRefresh: boolean, history?: Set<string>, materialization?: Set<string>): void;
4
+ /** Save the producer's final hash, not a later session-wide observation. Either
5
+ * hook order is supported by pairing it with the provider request identity. */
6
+ export declare function recordSystemPromptForRequest(sessionId: string, request: LkgRequestIdentity | undefined, hash: string, db: ContextDatabase, ownsHistoryRefresh?: boolean, history?: Set<string>, materialization?: Set<string>): void;
7
+ export declare function recordHeldHeadForRequest(sessionId: string, request: LkgRequestIdentity | undefined, deferRefresh?: (ownsHistoryRefresh: boolean) => void): void;
8
+ /** The host must first identify the assistant row created for the prepared call,
9
+ * or the exact SDK message appended after its saved input entry. A later reply
10
+ * with the same model and a newer timestamp cannot establish that link itself. */
11
+ export declare function bindSystemPromptResponse(sessionId: string, request: LkgRequestIdentity | undefined, response: {
12
+ responseId: string;
13
+ createdAt: number;
14
+ modelKey?: string;
15
+ }): void;
16
+ export declare function isHeldHeadForRequest(sessionId: string, request: LkgRequestIdentity | undefined): boolean;
17
+ /** Signed thinking can require the synthetic m[0]/m[1] messages to stay unchanged
18
+ * even when a request sends new system instructions. A successful response for
19
+ * that exact request proves the provider received those instructions. Record
20
+ * their hash so the next pass does not misread it as another cache eviction;
21
+ * do not change the frozen messages or authorize pending edits to them. */
22
+ export declare function acknowledgeSystemPromptDelivery(args: {
23
+ sessionId: string;
24
+ request: LkgRequestIdentity | undefined;
25
+ responseId?: string;
26
+ modelKey?: string;
27
+ completedAt?: number;
28
+ finish?: string;
29
+ error?: unknown;
30
+ v2?: boolean;
31
+ createdAt?: number;
32
+ }): void;
33
+ /** Already-delivered system instructions do not authorize a second cache rewrite.
34
+ * Keep the associated history/materialization work in deferred queues, which
35
+ * run only when another cause permits rebuilding. Preserve explicit flushes
36
+ * and refresh requests that were pending for other reasons. */
37
+ export declare function deferDeliveredSystemRefresh(deps: {
38
+ historyRefreshSessions: Set<string>;
39
+ pendingMaterializationSessions: Set<string>;
40
+ deferredHistoryRefreshSessions?: Set<string>;
41
+ deferredMaterializationSessions?: Set<string>;
42
+ }, sessionId: string, ownsHistoryRefresh: boolean): void;
43
+ export declare function clearSystemPromptDelivery(sessionId: string): void;
44
+ /** A replay sends older instructions; keep its queued refresh work, but discard
45
+ * the prepared hash and prevent late callbacks from reviving that preparation. */
46
+ export declare function retirePendingSystemPromptDelivery(sessionId: string): void;
47
+ //# sourceMappingURL=system-prompt-delivery.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"system-prompt-delivery.d.ts","sourceRoot":"","sources":["../../../src/hooks/magic-context/system-prompt-delivery.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AAQ5E,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAwBjE,wBAAgB,4BAA4B,CACxC,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,EACZ,kBAAkB,EAAE,OAAO,EAC3B,OAAO,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,EACrB,eAAe,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,GAC9B,IAAI,CAaN;AAWD;+EAC+E;AAC/E,wBAAgB,4BAA4B,CACxC,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,kBAAkB,GAAG,SAAS,EACvC,IAAI,EAAE,MAAM,EACZ,EAAE,EAAE,eAAe,EACnB,kBAAkB,CAAC,EAAE,OAAO,EAC5B,OAAO,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,EACrB,eAAe,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,GAC9B,IAAI,CAiBN;AAED,wBAAgB,wBAAwB,CACpC,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,kBAAkB,GAAG,SAAS,EACvC,YAAY,CAAC,EAAE,CAAC,kBAAkB,EAAE,OAAO,KAAK,IAAI,GACrD,IAAI,CAMN;AAED;;kFAEkF;AAClF,wBAAgB,wBAAwB,CACpC,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,kBAAkB,GAAG,SAAS,EACvC,QAAQ,EAAE;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,GACvE,IAAI,CAeN;AAED,wBAAgB,oBAAoB,CAChC,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,kBAAkB,GAAG,SAAS,GACxC,OAAO,CAMT;AAED;;;;2EAI2E;AAC3E,wBAAgB,+BAA+B,CAAC,IAAI,EAAE;IAClD,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,kBAAkB,GAAG,SAAS,CAAC;IACxC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,EAAE,CAAC,EAAE,OAAO,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB,GAAG,IAAI,CAsCP;AAED;;;+DAG+D;AAC/D,wBAAgB,2BAA2B,CACvC,IAAI,EAAE;IACF,sBAAsB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACpC,8BAA8B,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC5C,8BAA8B,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC7C,+BAA+B,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CACjD,EACD,SAAS,EAAE,MAAM,EACjB,kBAAkB,EAAE,OAAO,GAC5B,IAAI,CAON;AAED,wBAAgB,yBAAyB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAGjE;AAED;kFACkF;AAClF,wBAAgB,iCAAiC,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAIzE"}
@@ -4,7 +4,7 @@ import type { PromptSurfaceConfig } from "../../shared/prompt-surface";
4
4
  import type { PromptSurfaceRuntime } from "../../shared/prompt-surface-runtime";
5
5
  /**
6
6
  * Clear all per-session cache entries the system-prompt handler maintains,
7
- * including the module-scope key-files maps and the per-handler
7
+ * including the module-scope user-profile/key-files maps and the per-handler
8
8
  * sticky-date/cached-docs maps (the latter passed in via the cleanup handle).
9
9
  * Called from the session-deleted event path.
10
10
  */
@@ -42,8 +42,8 @@ export declare function isMagicContextInternalAgent(systemPromptContent: string)
42
42
  export declare function createSystemPromptHashHandler(deps: {
43
43
  db: ContextDatabase;
44
44
  /** When false (`memory.enabled: false`), the `<project-memory>` block is
45
- * never injected, so mmc_memory guidance is dropped from the prompt and the
46
- * mmc_memory tool is not registered. mmc_search guidance stays (it still
45
+ * never injected, so ctx_memory guidance is dropped from the prompt and the
46
+ * ctx_memory tool is not registered. ctx_search guidance stays (it still
47
47
  * recalls conversation + git commits). Default true. */
48
48
  memoryEnabled?: boolean;
49
49
  /** Optional language from user config for the main agent's generated text. */
@@ -84,7 +84,7 @@ export declare function createSystemPromptHashHandler(deps: {
84
84
  * Issue #53: per-agent opt-out. If the agent's system prompt contains
85
85
  * any of these substrings, skip ALL injection for this call. Lets users
86
86
  * mark specific custom agents (e.g. read-only QA agents that deny our
87
- * `mmc_*` tools) as no-injection without having to disable injection
87
+ * `ctx_*` tools) as no-injection without having to disable injection
88
88
  * globally.
89
89
  */
90
90
  injectionSkipSignatures?: string[];
@@ -97,6 +97,8 @@ export declare function createSystemPromptHashHandler(deps: {
97
97
  * detection below (which is the pass-1 timing-independent suspenders).
98
98
  */
99
99
  internalChildSessions?: Set<string>;
100
+ /** @deprecated user memories now render in m[0]/m[1], not system prompt. */
101
+ experimentalUserMemories?: boolean;
100
102
  /** @deprecated key files now render in m[1], not system prompt. */
101
103
  experimentalPinKeyFiles?: boolean;
102
104
  /** @deprecated key files now render in m[1], not system prompt. */
@@ -105,7 +107,7 @@ export declare function createSystemPromptHashHandler(deps: {
105
107
  experimentalTemporalAwareness?: boolean;
106
108
  /**
107
109
  * OpenCode SDK client used to read the agent and session permissions for
108
- * mmc_reduce before the verdict freezes. OpenCode can run this hook before
110
+ * ctx_reduce before the verdict freezes. OpenCode can run this hook before
109
111
  * the messages transform, so this hook may be the one that freezes it.
110
112
  * Absent (tests, hosts without the SDK): the verdict freezes from the
111
113
  * tools map alone, as before permissions were considered.
@@ -114,9 +116,19 @@ export declare function createSystemPromptHashHandler(deps: {
114
116
  /** When true, inject a "BEWARE: history compression is on" warning so the
115
117
  * agent doesn't mimic its own caveman-compressed past output. */
116
118
  experimentalCavemanTextCompression?: boolean;
119
+ /**
120
+ * True when the messages transform for this same request already ran (the
121
+ * host calls the system hook after it). Consumes that per-request signal.
122
+ * Absent (tests, hosts without the signal): a system change is assumed to be
123
+ * seen before the messages transform, as on a system-first host.
124
+ */
125
+ consumeMessagesPrepared?: (sessionId: string) => boolean;
126
+ /** Without a request token, pair hooks using the ID of the last real user whose turn contains the thinking. */
127
+ resolveDateTurnId?: (sessionId: string) => string | undefined;
117
128
  }): {
118
129
  handler: (input: {
119
130
  sessionID?: string;
131
+ dateRefreshRequest?: SystemDateRequestIdentity;
120
132
  model?: {
121
133
  providerID?: string;
122
134
  modelID?: string;
@@ -126,4 +138,5 @@ export declare function createSystemPromptHashHandler(deps: {
126
138
  }) => Promise<void>;
127
139
  clearSession: (sessionId: string) => void;
128
140
  };
141
+ import { type SystemDateRequestIdentity } from "./system-date-refresh";
129
142
  //# sourceMappingURL=system-prompt-hash.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"system-prompt-hash.d.ts","sourceRoot":"","sources":["../../../src/hooks/magic-context/system-prompt-hash.ts"],"names":[],"mappings":"AAGA,OAAO,EACH,KAAK,eAAe,EAGvB,MAAM,sCAAsC,CAAC;AAC9C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAGxD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AACvE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAqBhF;;;;;GAKG;AACH,wBAAgB,4BAA4B,CACxC,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE;IACR,mBAAmB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACzC,mBAAmB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC,CAAC;CACnD,GACF,IAAI,CAGN;AA8CD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,2BAA2B,CAAC,mBAAmB,EAAE,MAAM,GAAG,OAAO,CAOhF;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,6BAA6B,CAAC,IAAI,EAAE;IAChD,EAAE,EAAE,eAAe,CAAC;IACpB;;;6DAGyD;IACzD,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,8EAA8E;IAC9E,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,mBAAmB,CAAC;IACpC,oBAAoB,CAAC,EAAE,oBAAoB,CAAC;IAC5C,4EAA4E;IAC5E,YAAY,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,GAAG,SAAS,CAAC;IAC1F;;;;;;OAMG;IACH,2BAA2B,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACzC;;;;;;;OAOG;IACH,sBAAsB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACpC,8BAA8B,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC5C,oBAAoB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC1C;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B;;;;;;OAMG;IACH,uBAAuB,CAAC,EAAE,MAAM,EAAE,CAAC;IACnC;;;;;;;OAOG;IACH,qBAAqB,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACpC,mEAAmE;IACnE,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAClC,mEAAmE;IACnE,kCAAkC,CAAC,EAAE,MAAM,CAAC;IAC5C,yFAAyF;IACzF,6BAA6B,CAAC,EAAE,OAAO,CAAC;IACxC;;;;;;OAMG;IACH,MAAM,CAAC,EAAE,aAAa,CAAC,QAAQ,CAAC,CAAC;IACjC;sEACkE;IAClE,kCAAkC,CAAC,EAAE,OAAO,CAAC;CAChD,GAAG;IACA,OAAO,EAAE,CACL,KAAK,EAAE;QACH,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,KAAK,CAAC,EAAE;YAAE,UAAU,CAAC,EAAE,MAAM,CAAC;YAAC,OAAO,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC;KACrD,EACD,MAAM,EAAE;QAAE,MAAM,EAAE,MAAM,EAAE,CAAA;KAAE,KAC3B,OAAO,CAAC,IAAI,CAAC,CAAC;IACnB,YAAY,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;CAC7C,CAsYA"}
1
+ {"version":3,"file":"system-prompt-hash.d.ts","sourceRoot":"","sources":["../../../src/hooks/magic-context/system-prompt-hash.ts"],"names":[],"mappings":"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"}