@cortexkit/opencode-magic-context 0.36.1 → 0.38.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 (176) hide show
  1. package/README.md +2 -0
  2. package/dist/config/index.d.ts.map +1 -1
  3. package/dist/config/project-security.d.ts +2 -1
  4. package/dist/config/project-security.d.ts.map +1 -1
  5. package/dist/config/schema/magic-context.d.ts +10 -0
  6. package/dist/config/schema/magic-context.d.ts.map +1 -1
  7. package/dist/{conflict-warning-hook-mt0ttc4x.js → conflict-warning-hook-an4fxhwf.js} +3 -3
  8. package/dist/{derive-budgets-88mxk2w1.js → derive-budgets-da4yg3tz.js} +3 -2
  9. package/dist/features/magic-context/context-authority.d.ts.map +1 -1
  10. package/dist/features/magic-context/dreamer/classify-prompt.d.ts +5 -1
  11. package/dist/features/magic-context/dreamer/classify-prompt.d.ts.map +1 -1
  12. package/dist/features/magic-context/dreamer/classify.d.ts.map +1 -1
  13. package/dist/features/magic-context/dreamer/evaluate-smart-notes.d.ts.map +1 -1
  14. package/dist/features/magic-context/dreamer/manifest-parser.d.ts +8 -0
  15. package/dist/features/magic-context/dreamer/manifest-parser.d.ts.map +1 -1
  16. package/dist/features/magic-context/dreamer/map-memories-prompt.d.ts +7 -1
  17. package/dist/features/magic-context/dreamer/map-memories-prompt.d.ts.map +1 -1
  18. package/dist/features/magic-context/dreamer/map-memories.d.ts +18 -0
  19. package/dist/features/magic-context/dreamer/map-memories.d.ts.map +1 -1
  20. package/dist/features/magic-context/dreamer/storage-dream-runs.d.ts +5 -0
  21. package/dist/features/magic-context/dreamer/storage-dream-runs.d.ts.map +1 -1
  22. package/dist/features/magic-context/dreamer/task-executor.d.ts.map +1 -1
  23. package/dist/features/magic-context/dreamer/verify-prompt.d.ts +5 -1
  24. package/dist/features/magic-context/dreamer/verify-prompt.d.ts.map +1 -1
  25. package/dist/features/magic-context/dreamer/verify.d.ts.map +1 -1
  26. package/dist/features/magic-context/fail-closed-block.d.ts +6 -1
  27. package/dist/features/magic-context/fail-closed-block.d.ts.map +1 -1
  28. package/dist/features/magic-context/memory/embedding-openai.d.ts +3 -1
  29. package/dist/features/magic-context/memory/embedding-openai.d.ts.map +1 -1
  30. package/dist/features/magic-context/memory/project-identity.d.ts +6 -0
  31. package/dist/features/magic-context/memory/project-identity.d.ts.map +1 -1
  32. package/dist/features/magic-context/migrations.d.ts.map +1 -1
  33. package/dist/features/magic-context/overflow-detection.d.ts.map +1 -1
  34. package/dist/features/magic-context/reclaim-protection.d.ts +13 -0
  35. package/dist/features/magic-context/reclaim-protection.d.ts.map +1 -0
  36. package/dist/features/magic-context/smart-notes/runner.d.ts.map +1 -1
  37. package/dist/features/magic-context/smart-notes/wake-plane.d.ts +21 -0
  38. package/dist/features/magic-context/smart-notes/wake-plane.d.ts.map +1 -0
  39. package/dist/features/magic-context/storage-db.d.ts +19 -3
  40. package/dist/features/magic-context/storage-db.d.ts.map +1 -1
  41. package/dist/features/magic-context/storage-meta-persisted.d.ts +23 -0
  42. package/dist/features/magic-context/storage-meta-persisted.d.ts.map +1 -1
  43. package/dist/features/magic-context/storage-meta-session.d.ts.map +1 -1
  44. package/dist/features/magic-context/storage-meta-shared.d.ts.map +1 -1
  45. package/dist/features/magic-context/storage-primers.d.ts +11 -0
  46. package/dist/features/magic-context/storage-primers.d.ts.map +1 -1
  47. package/dist/features/magic-context/storage-schema-helpers.d.ts.map +1 -1
  48. package/dist/features/magic-context/storage-tags.d.ts +13 -5
  49. package/dist/features/magic-context/storage-tags.d.ts.map +1 -1
  50. package/dist/features/magic-context/user-memory/storage-user-memory.d.ts +7 -0
  51. package/dist/features/magic-context/user-memory/storage-user-memory.d.ts.map +1 -1
  52. package/dist/features/magic-context/window-report-ledger.d.ts +70 -0
  53. package/dist/features/magic-context/window-report-ledger.d.ts.map +1 -0
  54. package/dist/hooks/auto-update-checker/checker.d.ts +8 -1
  55. package/dist/hooks/auto-update-checker/checker.d.ts.map +1 -1
  56. package/dist/hooks/auto-update-checker/index.d.ts.map +1 -1
  57. package/dist/hooks/magic-context/channel2-cycle.d.ts +16 -0
  58. package/dist/hooks/magic-context/channel2-cycle.d.ts.map +1 -0
  59. package/dist/hooks/magic-context/channel2-delivery.d.ts +3 -9
  60. package/dist/hooks/magic-context/channel2-delivery.d.ts.map +1 -1
  61. package/dist/hooks/magic-context/command-handler.d.ts +2 -0
  62. package/dist/hooks/magic-context/command-handler.d.ts.map +1 -1
  63. package/dist/hooks/magic-context/ctx-reduce-nudge.d.ts +33 -103
  64. package/dist/hooks/magic-context/ctx-reduce-nudge.d.ts.map +1 -1
  65. package/dist/hooks/magic-context/emergency-drop.d.ts.map +1 -1
  66. package/dist/hooks/magic-context/event-handler.d.ts.map +1 -1
  67. package/dist/hooks/magic-context/event-resolvers.d.ts +4 -0
  68. package/dist/hooks/magic-context/event-resolvers.d.ts.map +1 -1
  69. package/dist/hooks/magic-context/execute-status.d.ts +3 -1
  70. package/dist/hooks/magic-context/execute-status.d.ts.map +1 -1
  71. package/dist/hooks/magic-context/fold-execution-gate.d.ts +2 -0
  72. package/dist/hooks/magic-context/fold-execution-gate.d.ts.map +1 -0
  73. package/dist/hooks/magic-context/hook-handlers.d.ts.map +1 -1
  74. package/dist/hooks/magic-context/hook.d.ts.map +1 -1
  75. package/dist/hooks/magic-context/inject-compartments.d.ts.map +1 -1
  76. package/dist/hooks/magic-context/live-session-state.d.ts +3 -0
  77. package/dist/hooks/magic-context/live-session-state.d.ts.map +1 -1
  78. package/dist/hooks/magic-context/lkg-replay.d.ts.map +1 -1
  79. package/dist/hooks/magic-context/lkg-slot.d.ts +20 -0
  80. package/dist/hooks/magic-context/lkg-slot.d.ts.map +1 -1
  81. package/dist/hooks/magic-context/module-state-sync.d.ts +8 -0
  82. package/dist/hooks/magic-context/module-state-sync.d.ts.map +1 -1
  83. package/dist/hooks/magic-context/module-transport.d.ts.map +1 -1
  84. package/dist/hooks/magic-context/module-wire.d.ts +6 -1
  85. package/dist/hooks/magic-context/module-wire.d.ts.map +1 -1
  86. package/dist/hooks/magic-context/rust-mode-transform.d.ts +21 -2
  87. package/dist/hooks/magic-context/rust-mode-transform.d.ts.map +1 -1
  88. package/dist/hooks/magic-context/strip-content.d.ts +27 -0
  89. package/dist/hooks/magic-context/strip-content.d.ts.map +1 -1
  90. package/dist/hooks/magic-context/supersession-reclaim.d.ts.map +1 -1
  91. package/dist/hooks/magic-context/system-prompt-hash.d.ts.map +1 -1
  92. package/dist/hooks/magic-context/tail-hygiene-walk.d.ts +78 -0
  93. package/dist/hooks/magic-context/tail-hygiene-walk.d.ts.map +1 -0
  94. package/dist/hooks/magic-context/tool-reclaim.d.ts.map +1 -1
  95. package/dist/hooks/magic-context/transform-postprocess-phase.d.ts +14 -3
  96. package/dist/hooks/magic-context/transform-postprocess-phase.d.ts.map +1 -1
  97. package/dist/hooks/magic-context/transform.d.ts +10 -0
  98. package/dist/hooks/magic-context/transform.d.ts.map +1 -1
  99. package/dist/hooks/magic-context/wrapup-orchestrator.d.ts.map +1 -1
  100. package/dist/{index-nsx2n9eg.js → index-4cz5nfxf.js} +3 -3
  101. package/dist/{index-f1tnb3vm.js → index-8pqfcghm.js} +21 -9
  102. package/dist/index-9zhhvr4w.js +733 -0
  103. package/dist/{index-zp6x6s6a.js → index-cae89eas.js} +25 -6
  104. package/dist/index-cgyfn1s2.js +53 -0
  105. package/dist/{index-3zqcdwqr.js → index-crke4z5j.js} +7 -4
  106. package/dist/{index-1skzp4dc.js → index-mmvhrqqb.js} +1991 -274
  107. package/dist/{index-tsgs7td8.js → index-pck9vadr.js} +1 -1
  108. package/dist/{index-3tnkymva.js → index-sw8gnq34.js} +1 -1
  109. package/dist/index.d.ts.map +1 -1
  110. package/dist/index.js +1714 -988
  111. package/dist/plugin/hooks/create-session-hooks.d.ts +3 -0
  112. package/dist/plugin/hooks/create-session-hooks.d.ts.map +1 -1
  113. package/dist/plugin/messages-transform.d.ts.map +1 -1
  114. package/dist/plugin/rpc-handlers.d.ts +2 -0
  115. package/dist/plugin/rpc-handlers.d.ts.map +1 -1
  116. package/dist/{recomp-orchestrator-a0g9b52q.js → recomp-orchestrator-jsde4ygw.js} +7 -6
  117. package/dist/{safe-notification-target-c11fdda2.js → safe-notification-target-b693f9x3.js} +2 -2
  118. package/dist/{send-session-notification-bgtf4853.js → send-session-notification-dxske5zm.js} +3 -3
  119. package/dist/shared/conflict-detector.d.ts +63 -0
  120. package/dist/shared/conflict-detector.d.ts.map +1 -1
  121. package/dist/shared/harness-provider-map.d.ts +8 -0
  122. package/dist/shared/harness-provider-map.d.ts.map +1 -1
  123. package/dist/shared/logger.d.ts +8 -0
  124. package/dist/shared/logger.d.ts.map +1 -1
  125. package/dist/shared/models-dev-cache.d.ts +7 -0
  126. package/dist/shared/models-dev-cache.d.ts.map +1 -1
  127. package/dist/shared/prompt-surface-runtime.d.ts.map +1 -1
  128. package/dist/shared/prompt-surface.d.ts +2 -0
  129. package/dist/shared/prompt-surface.d.ts.map +1 -1
  130. package/dist/shared/rpc-client.d.ts.map +1 -1
  131. package/dist/shared/rpc-server.d.ts.map +1 -1
  132. package/dist/shared/rpc-types.d.ts +29 -0
  133. package/dist/shared/rpc-types.d.ts.map +1 -1
  134. package/dist/shared/rpc-utils.d.ts +28 -9
  135. package/dist/shared/rpc-utils.d.ts.map +1 -1
  136. package/dist/shared/tail-hygiene-status.d.ts +15 -0
  137. package/dist/shared/tail-hygiene-status.d.ts.map +1 -0
  138. package/dist/shared/window-geometry.d.ts +90 -0
  139. package/dist/shared/window-geometry.d.ts.map +1 -0
  140. package/dist/{storage-meta-session-df9tstzr.js → storage-meta-session-mk4gsnke.js} +4 -3
  141. package/dist/tools/ctx-memory/tools.d.ts.map +1 -1
  142. package/dist/tools/ctx-note/tools.d.ts.map +1 -1
  143. package/dist/tui/data/context-db.d.ts.map +1 -1
  144. package/dist/tui-compiled/data/context-db.d.ts.map +1 -1
  145. package/package.json +3 -1
  146. package/src/config/index.ts +2 -0
  147. package/src/config/latch-permanence-guard.test.ts +218 -0
  148. package/src/config/project-security.ts +10 -1
  149. package/src/config/schema/magic-context.ts +12 -2
  150. package/src/shared/__fixtures__/window-overlay.v1.json +337 -0
  151. package/src/shared/conflict-detector.test.ts +176 -1
  152. package/src/shared/conflict-detector.ts +126 -3
  153. package/src/shared/harness-provider-map.test.ts +20 -0
  154. package/src/shared/harness-provider-map.ts +19 -0
  155. package/src/shared/logger.test.ts +119 -0
  156. package/src/shared/logger.ts +33 -15
  157. package/src/shared/models-dev-cache.test.ts +42 -0
  158. package/src/shared/models-dev-cache.ts +62 -9
  159. package/src/shared/prompt-surface-runtime.ts +5 -3
  160. package/src/shared/prompt-surface.test.ts +38 -0
  161. package/src/shared/prompt-surface.ts +15 -2
  162. package/src/shared/rpc-client.ts +4 -2
  163. package/src/shared/rpc-server.ts +1 -0
  164. package/src/shared/rpc-types.ts +30 -0
  165. package/src/shared/rpc-utils.test.ts +162 -13
  166. package/src/shared/rpc-utils.ts +224 -31
  167. package/src/shared/tail-hygiene-status.ts +57 -0
  168. package/src/shared/window-geometry.test.ts +342 -0
  169. package/src/shared/window-geometry.ts +626 -0
  170. package/src/tui/data/context-db.ts +5 -0
  171. package/src/tui/index.tsx +33 -1
  172. package/src/tui/slots/sidebar-content.tsx +17 -5
  173. package/src/tui-compiled/data/context-db.ts +5 -0
  174. package/src/tui-compiled/index.tsx +359 -273
  175. package/src/tui-compiled/slots/sidebar-content.tsx +316 -287
  176. package/dist/index-wgvxkqpx.js +0 -342
@@ -14,6 +14,8 @@ import packageJson from "../../package.json";
14
14
  import { closeRpc, dismissUpgradeReminder, getAnnouncement, getCompartmentCount, getRpcGeneration, initRpcClient, loadEmbedDetail, loadStatusDetail, loadToastDurationMs, markAnnounced, requestRecomp, requestUpgrade } from "./data/context-db";
15
15
  import { startNotificationSocket, stopNotificationSocket } from "./data/notification-socket";
16
16
  import { formatThresholdPercent } from "../shared/format-threshold";
17
+ import { formatTailHygiene } from "../shared/tail-hygiene-status";
18
+ import { formatWindowDerivationLine } from "../shared/window-geometry";
17
19
  import { compactionOffSidebarRows, nativeCompactionContextLabel } from "./compaction-off";
18
20
  import { isCompactionEnabled } from "../config/agent-disable";
19
21
  import { loadPluginConfig } from "../config";
@@ -196,7 +198,7 @@ const StatusDialog = props => {
196
198
  color: COLORS.profile
197
199
  });
198
200
  if (d.conversationTokens > 0) segs.push({
199
- label: "Conversation",
201
+ label: "Conversation*",
200
202
  tokens: d.conversationTokens,
201
203
  color: COLORS.conversation
202
204
  });
@@ -235,15 +237,20 @@ const StatusDialog = props => {
235
237
  _el$12 = _$createTextNode(` tokens`),
236
238
  _el$13 = _$createElement("box"),
237
239
  _el$14 = _$createElement("box"),
238
- _el$15 = _$createElement("box"),
239
- _el$16 = _$createElement("box"),
240
- _el$17 = _$createElement("text");
240
+ _el$15 = _$createElement("text"),
241
+ _el$17 = _$createElement("box"),
242
+ _el$18 = _$createElement("box"),
243
+ _el$19 = _$createElement("text"),
244
+ _el$20 = _$createElement("b"),
245
+ _el$22 = _$createElement("box"),
246
+ _el$23 = _$createElement("text");
241
247
  _$insertNode(_el$4, _el$5);
242
248
  _$insertNode(_el$4, _el$1);
243
249
  _$insertNode(_el$4, _el$13);
244
250
  _$insertNode(_el$4, _el$14);
245
- _$insertNode(_el$4, _el$15);
246
- _$insertNode(_el$4, _el$16);
251
+ _$insertNode(_el$4, _el$17);
252
+ _$insertNode(_el$4, _el$18);
253
+ _$insertNode(_el$4, _el$22);
247
254
  _$setProp(_el$4, "flexDirection", "column");
248
255
  _$setProp(_el$4, "width", "100%");
249
256
  _$setProp(_el$4, "paddingLeft", 2);
@@ -268,27 +275,27 @@ const StatusDialog = props => {
268
275
  _$insert(_el$1, (() => {
269
276
  var _c$ = _$memo(() => !!compactionOff());
270
277
  return () => _c$() ? (() => {
271
- var _el$19 = _$createElement("text"),
272
- _el$20 = _$createElement("b");
273
- _$insertNode(_el$19, _el$20);
274
- _$insert(_el$20, () => nativeCompactionContextLabel(s()));
275
- _$effect(_$p => _$setProp(_el$19, "fg", t().accent, _$p));
276
- return _el$19;
278
+ var _el$25 = _$createElement("text"),
279
+ _el$26 = _$createElement("b");
280
+ _$insertNode(_el$25, _el$26);
281
+ _$insert(_el$26, () => nativeCompactionContextLabel(s()));
282
+ _$effect(_$p => _$setProp(_el$25, "fg", t().accent, _$p));
283
+ return _el$25;
277
284
  })() : (() => {
278
- var _el$21 = _$createElement("text"),
279
- _el$22 = _$createElement("b"),
280
- _el$23 = _$createTextNode(`%`),
281
- _el$24 = _$createTextNode(` / `),
282
- _el$25 = _$createTextNode(`%`);
283
- _$insertNode(_el$21, _el$22);
284
- _$insertNode(_el$21, _el$24);
285
- _$insertNode(_el$21, _el$25);
286
- _$insertNode(_el$22, _el$23);
287
- _$insert(_el$22, () => s().usagePercentage.toFixed(1), _el$23);
288
- _$insert(_el$21, () => formatThresholdPercent(s().executeThreshold), _el$25);
289
- _$insert(_el$21, () => s().executeThresholdClamped ? "*" : "", null);
290
- _$effect(_$p => _$setProp(_el$21, "fg", s().usagePercentage >= 80 ? t().error : s().usagePercentage >= 65 ? t().warning : t().accent, _$p));
291
- return _el$21;
285
+ var _el$27 = _$createElement("text"),
286
+ _el$28 = _$createElement("b"),
287
+ _el$29 = _$createTextNode(`%`),
288
+ _el$30 = _$createTextNode(` / `),
289
+ _el$31 = _$createTextNode(`%`);
290
+ _$insertNode(_el$27, _el$28);
291
+ _$insertNode(_el$27, _el$30);
292
+ _$insertNode(_el$27, _el$31);
293
+ _$insertNode(_el$28, _el$29);
294
+ _$insert(_el$28, () => s().usagePercentage.toFixed(1), _el$29);
295
+ _$insert(_el$27, () => formatThresholdPercent(s().executeThreshold), _el$31);
296
+ _$insert(_el$27, () => s().executeThresholdClamped ? "*" : "", null);
297
+ _$effect(_$p => _$setProp(_el$27, "fg", s().usagePercentage >= 80 ? t().error : s().usagePercentage >= 65 ? t().warning : t().accent, _$p));
298
+ return _el$27;
292
299
  })();
293
300
  })(), _el$10);
294
301
  _$insertNode(_el$10, _el$11);
@@ -298,84 +305,110 @@ const StatusDialog = props => {
298
305
  var _c$2 = _$memo(() => contextLimit() > 0);
299
306
  return () => _c$2() ? fmt(contextLimit()) : "?";
300
307
  })(), _el$12);
308
+ _$insert(_el$4, (() => {
309
+ var _c$3 = _$memo(() => !!s().windowGeometry);
310
+ return () => _c$3() && (() => {
311
+ var _el$32 = _$createElement("text");
312
+ _$insert(_el$32, () => formatWindowDerivationLine(s().inputTokens, s().windowGeometry));
313
+ _$effect(_$p => _$setProp(_el$32, "fg", t().textMuted, _$p));
314
+ return _el$32;
315
+ })();
316
+ })(), _el$13);
301
317
  _$setProp(_el$13, "width", "100%");
302
318
  _$setProp(_el$13, "flexDirection", "row");
303
319
  _$setProp(_el$13, "height", 1);
304
320
  _$insert(_el$13, () => barSegments().map(seg => (() => {
305
- var _el$26 = _$createElement("box");
306
- _$setProp(_el$26, "flexBasis", 0);
307
- _$setProp(_el$26, "height", 1);
321
+ var _el$33 = _$createElement("box");
322
+ _$setProp(_el$33, "flexBasis", 0);
323
+ _$setProp(_el$33, "height", 1);
308
324
  _$effect(_p$ => {
309
- var _v$7 = seg.label,
310
- _v$8 = Math.max(1, seg.tokens),
311
- _v$9 = seg.color;
312
- _v$7 !== _p$.e && (_p$.e = _$setProp(_el$26, "key", _v$7, _p$.e));
313
- _v$8 !== _p$.t && (_p$.t = _$setProp(_el$26, "flexGrow", _v$8, _p$.t));
314
- _v$9 !== _p$.a && (_p$.a = _$setProp(_el$26, "backgroundColor", _v$9, _p$.a));
325
+ var _v$9 = seg.label,
326
+ _v$0 = Math.max(1, seg.tokens),
327
+ _v$1 = seg.color;
328
+ _v$9 !== _p$.e && (_p$.e = _$setProp(_el$33, "key", _v$9, _p$.e));
329
+ _v$0 !== _p$.t && (_p$.t = _$setProp(_el$33, "flexGrow", _v$0, _p$.t));
330
+ _v$1 !== _p$.a && (_p$.a = _$setProp(_el$33, "backgroundColor", _v$1, _p$.a));
315
331
  return _p$;
316
332
  }, {
317
333
  e: undefined,
318
334
  t: undefined,
319
335
  a: undefined
320
336
  });
321
- return _el$26;
337
+ return _el$33;
322
338
  })()));
339
+ _$insertNode(_el$14, _el$15);
323
340
  _$setProp(_el$14, "flexDirection", "column");
324
341
  _$insert(_el$14, () => breakdownSegments().segs.map(seg => {
325
342
  const pct = (seg.tokens / breakdownSegments().total * 100).toFixed(1);
326
343
  return (() => {
327
- var _el$27 = _$createElement("box"),
328
- _el$28 = _$createElement("text"),
329
- _el$29 = _$createTextNode(` `),
330
- _el$30 = _$createElement("text"),
331
- _el$31 = _$createTextNode(` (`),
332
- _el$32 = _$createTextNode(`%)`);
333
- _$insertNode(_el$27, _el$28);
334
- _$insertNode(_el$27, _el$30);
335
- _$setProp(_el$27, "width", "100%");
336
- _$setProp(_el$27, "flexDirection", "row");
337
- _$setProp(_el$27, "justifyContent", "space-between");
338
- _$insertNode(_el$28, _el$29);
339
- _$insert(_el$28, () => seg.label, _el$29);
340
- _$insert(_el$28, () => seg.detail ?? "", null);
341
- _$insertNode(_el$30, _el$31);
342
- _$insertNode(_el$30, _el$32);
343
- _$insert(_el$30, () => fmt(seg.tokens), _el$31);
344
- _$insert(_el$30, pct, _el$32);
344
+ var _el$34 = _$createElement("box"),
345
+ _el$35 = _$createElement("text"),
346
+ _el$36 = _$createTextNode(` `),
347
+ _el$37 = _$createElement("text"),
348
+ _el$38 = _$createTextNode(` (`),
349
+ _el$39 = _$createTextNode(`%)`);
350
+ _$insertNode(_el$34, _el$35);
351
+ _$insertNode(_el$34, _el$37);
352
+ _$setProp(_el$34, "width", "100%");
353
+ _$setProp(_el$34, "flexDirection", "row");
354
+ _$setProp(_el$34, "justifyContent", "space-between");
355
+ _$insertNode(_el$35, _el$36);
356
+ _$insert(_el$35, () => seg.label, _el$36);
357
+ _$insert(_el$35, () => seg.detail ?? "", null);
358
+ _$insertNode(_el$37, _el$38);
359
+ _$insertNode(_el$37, _el$39);
360
+ _$insert(_el$37, () => fmt(seg.tokens), _el$38);
361
+ _$insert(_el$37, pct, _el$39);
345
362
  _$effect(_p$ => {
346
- var _v$0 = seg.label,
347
- _v$1 = seg.color,
348
- _v$10 = t().textMuted;
349
- _v$0 !== _p$.e && (_p$.e = _$setProp(_el$27, "key", _v$0, _p$.e));
350
- _v$1 !== _p$.t && (_p$.t = _$setProp(_el$28, "fg", _v$1, _p$.t));
351
- _v$10 !== _p$.a && (_p$.a = _$setProp(_el$30, "fg", _v$10, _p$.a));
363
+ var _v$10 = seg.label,
364
+ _v$11 = seg.color,
365
+ _v$12 = t().textMuted;
366
+ _v$10 !== _p$.e && (_p$.e = _$setProp(_el$34, "key", _v$10, _p$.e));
367
+ _v$11 !== _p$.t && (_p$.t = _$setProp(_el$35, "fg", _v$11, _p$.t));
368
+ _v$12 !== _p$.a && (_p$.a = _$setProp(_el$37, "fg", _v$12, _p$.a));
352
369
  return _p$;
353
370
  }, {
354
371
  e: undefined,
355
372
  t: undefined,
356
373
  a: undefined
357
374
  });
358
- return _el$27;
375
+ return _el$34;
359
376
  })();
360
- }));
377
+ }), _el$15);
378
+ _$insertNode(_el$15, _$createTextNode(`* Conversation includes Reasoning; hygiene excludes it`));
379
+ _$insert(_el$14, (() => {
380
+ var _c$4 = _$memo(() => s().tailHygiene !== undefined);
381
+ return () => _c$4() && _$createComponent(R, {
382
+ get t() {
383
+ return t();
384
+ },
385
+ l: "Hygiene",
386
+ get v() {
387
+ return formatTailHygiene(s().tailHygiene);
388
+ },
389
+ get fg() {
390
+ return _$memo(() => !!s().tailHygiene.evaluable)() ? t().accent : t().warning;
391
+ }
392
+ });
393
+ })(), null);
361
394
  _$insert(_el$4, (() => {
362
- var _c$3 = _$memo(() => !!(!compactionOff() && s().recompProgress));
363
- return () => _c$3() && (() => {
395
+ var _c$5 = _$memo(() => !!(!compactionOff() && s().recompProgress));
396
+ return () => _c$5() && (() => {
364
397
  const p = s().recompProgress;
365
398
  // Label follows the flow that started the run, so a plain
366
399
  // /ctx-recomp never reads as an "Upgrade" (dogfood 2026-06-04).
367
400
  const verb = p.kind === "upgrade" ? "Upgrade" : p.kind === "embed" ? "Embed" : "Recomp";
368
401
  return (() => {
369
- var _el$33 = _$createElement("box"),
370
- _el$34 = _$createElement("text"),
371
- _el$35 = _$createElement("b");
372
- _$insertNode(_el$33, _el$34);
373
- _$setProp(_el$33, "marginTop", 1);
374
- _$setProp(_el$33, "width", "100%");
375
- _$setProp(_el$33, "flexDirection", "column");
376
- _$insertNode(_el$34, _el$35);
377
- _$insert(_el$35, verb);
378
- _$insert(_el$33, () => {
402
+ var _el$40 = _$createElement("box"),
403
+ _el$41 = _$createElement("text"),
404
+ _el$42 = _$createElement("b");
405
+ _$insertNode(_el$40, _el$41);
406
+ _$setProp(_el$40, "marginTop", 1);
407
+ _$setProp(_el$40, "width", "100%");
408
+ _$setProp(_el$40, "flexDirection", "column");
409
+ _$insertNode(_el$41, _el$42);
410
+ _$insert(_el$42, verb);
411
+ _$insert(_el$40, () => {
379
412
  if (p.phase === "recomp") {
380
413
  const frac = p.totalMessages > 0 ? p.processedMessages / p.totalMessages : 0;
381
414
  const width = 24;
@@ -475,28 +508,28 @@ const StatusDialog = props => {
475
508
  }
476
509
  });
477
510
  }, null);
478
- _$effect(_$p => _$setProp(_el$34, "fg", t().text, _$p));
479
- return _el$33;
511
+ _$effect(_$p => _$setProp(_el$41, "fg", t().text, _$p));
512
+ return _el$40;
480
513
  })();
481
514
  })();
482
- })(), _el$15);
483
- _$setProp(_el$15, "flexDirection", "row");
484
- _$setProp(_el$15, "width", "100%");
485
- _$setProp(_el$15, "marginTop", 1);
486
- _$setProp(_el$15, "gap", 4);
487
- _$insert(_el$15, (() => {
488
- var _c$4 = _$memo(() => !!compactionOff());
489
- return () => _c$4() ? (() => {
490
- var _el$36 = _$createElement("box"),
491
- _el$37 = _$createElement("text"),
492
- _el$38 = _$createElement("b");
493
- _$insertNode(_el$36, _el$37);
494
- _$setProp(_el$36, "flexDirection", "column");
495
- _$setProp(_el$36, "flexGrow", 1);
496
- _$setProp(_el$36, "flexBasis", 0);
497
- _$insertNode(_el$37, _el$38);
498
- _$insertNode(_el$38, _$createTextNode(`Knowledge`));
499
- _$insert(_el$36, () => compactionOffSidebarRows(s()).map(row => _$createComponent(R, {
515
+ })(), _el$17);
516
+ _$setProp(_el$17, "flexDirection", "row");
517
+ _$setProp(_el$17, "width", "100%");
518
+ _$setProp(_el$17, "marginTop", 1);
519
+ _$setProp(_el$17, "gap", 4);
520
+ _$insert(_el$17, (() => {
521
+ var _c$6 = _$memo(() => !!compactionOff());
522
+ return () => _c$6() ? (() => {
523
+ var _el$43 = _$createElement("box"),
524
+ _el$44 = _$createElement("text"),
525
+ _el$45 = _$createElement("b");
526
+ _$insertNode(_el$43, _el$44);
527
+ _$setProp(_el$43, "flexDirection", "column");
528
+ _$setProp(_el$43, "flexGrow", 1);
529
+ _$setProp(_el$43, "flexBasis", 0);
530
+ _$insertNode(_el$44, _el$45);
531
+ _$insertNode(_el$45, _$createTextNode(`Knowledge`));
532
+ _$insert(_el$43, () => compactionOffSidebarRows(s()).map(row => _$createComponent(R, {
500
533
  get t() {
501
534
  return t();
502
535
  },
@@ -510,9 +543,9 @@ const StatusDialog = props => {
510
543
  return _$memo(() => row.label === "Memories")() ? t().accent : t().textMuted;
511
544
  }
512
545
  })), null);
513
- _$insert(_el$36, (() => {
514
- var _c$6 = _$memo(() => s().readySmartNoteCount > 0);
515
- return () => _c$6() && _$createComponent(R, {
546
+ _$insert(_el$43, (() => {
547
+ var _c$0 = _$memo(() => s().readySmartNoteCount > 0);
548
+ return () => _c$0() && _$createComponent(R, {
516
549
  get t() {
517
550
  return t();
518
551
  },
@@ -525,9 +558,9 @@ const StatusDialog = props => {
525
558
  }
526
559
  });
527
560
  })(), null);
528
- _$insert(_el$36, (() => {
529
- var _c$7 = _$memo(() => !!s().lastDreamerRunAt);
530
- return () => _c$7() && _$createComponent(R, {
561
+ _$insert(_el$43, (() => {
562
+ var _c$1 = _$memo(() => !!s().lastDreamerRunAt);
563
+ return () => _c$1() && _$createComponent(R, {
531
564
  get t() {
532
565
  return t();
533
566
  },
@@ -540,31 +573,31 @@ const StatusDialog = props => {
540
573
  }
541
574
  });
542
575
  })(), null);
543
- _$effect(_$p => _$setProp(_el$37, "fg", t().text, _$p));
544
- return _el$36;
576
+ _$effect(_$p => _$setProp(_el$44, "fg", t().text, _$p));
577
+ return _el$43;
545
578
  })() : [(() => {
546
- var _el$40 = _$createElement("box"),
547
- _el$41 = _$createElement("text"),
548
- _el$42 = _$createElement("b"),
549
- _el$44 = _$createElement("box"),
550
- _el$45 = _$createElement("text"),
551
- _el$46 = _$createElement("b"),
552
- _el$48 = _$createElement("box"),
553
- _el$49 = _$createElement("text"),
554
- _el$50 = _$createElement("b"),
555
- _el$52 = _$createElement("box"),
556
- _el$53 = _$createElement("text"),
557
- _el$54 = _$createElement("b");
558
- _$insertNode(_el$40, _el$41);
559
- _$insertNode(_el$40, _el$44);
560
- _$insertNode(_el$40, _el$48);
561
- _$insertNode(_el$40, _el$52);
562
- _$setProp(_el$40, "flexDirection", "column");
563
- _$setProp(_el$40, "flexGrow", 1);
564
- _$setProp(_el$40, "flexBasis", 0);
565
- _$insertNode(_el$41, _el$42);
566
- _$insertNode(_el$42, _$createTextNode(`Tags`));
567
- _$insert(_el$40, _$createComponent(R, {
579
+ var _el$47 = _$createElement("box"),
580
+ _el$48 = _$createElement("text"),
581
+ _el$49 = _$createElement("b"),
582
+ _el$51 = _$createElement("box"),
583
+ _el$52 = _$createElement("text"),
584
+ _el$53 = _$createElement("b"),
585
+ _el$55 = _$createElement("box"),
586
+ _el$56 = _$createElement("text"),
587
+ _el$57 = _$createElement("b"),
588
+ _el$59 = _$createElement("box"),
589
+ _el$60 = _$createElement("text"),
590
+ _el$61 = _$createElement("b");
591
+ _$insertNode(_el$47, _el$48);
592
+ _$insertNode(_el$47, _el$51);
593
+ _$insertNode(_el$47, _el$55);
594
+ _$insertNode(_el$47, _el$59);
595
+ _$setProp(_el$47, "flexDirection", "column");
596
+ _$setProp(_el$47, "flexGrow", 1);
597
+ _$setProp(_el$47, "flexBasis", 0);
598
+ _$insertNode(_el$48, _el$49);
599
+ _$insertNode(_el$49, _$createTextNode(`Tags`));
600
+ _$insert(_el$47, _$createComponent(R, {
568
601
  get t() {
569
602
  return t();
570
603
  },
@@ -572,8 +605,8 @@ const StatusDialog = props => {
572
605
  get v() {
573
606
  return `${s().activeTags} (~${fmtBytes(s().activeBytes)})`;
574
607
  }
575
- }), _el$44);
576
- _$insert(_el$40, _$createComponent(R, {
608
+ }), _el$51);
609
+ _$insert(_el$47, _$createComponent(R, {
577
610
  get t() {
578
611
  return t();
579
612
  },
@@ -581,8 +614,8 @@ const StatusDialog = props => {
581
614
  get v() {
582
615
  return String(s().droppedTags);
583
616
  }
584
- }), _el$44);
585
- _$insert(_el$40, _$createComponent(R, {
617
+ }), _el$51);
618
+ _$insert(_el$47, _$createComponent(R, {
586
619
  get t() {
587
620
  return t();
588
621
  },
@@ -593,12 +626,12 @@ const StatusDialog = props => {
593
626
  get fg() {
594
627
  return t().textMuted;
595
628
  }
596
- }), _el$44);
597
- _$insertNode(_el$44, _el$45);
598
- _$setProp(_el$44, "marginTop", 1);
599
- _$insertNode(_el$45, _el$46);
600
- _$insertNode(_el$46, _$createTextNode(`Pending Queue`));
601
- _$insert(_el$40, _$createComponent(R, {
629
+ }), _el$51);
630
+ _$insertNode(_el$51, _el$52);
631
+ _$setProp(_el$51, "marginTop", 1);
632
+ _$insertNode(_el$52, _el$53);
633
+ _$insertNode(_el$53, _$createTextNode(`Pending Queue`));
634
+ _$insert(_el$47, _$createComponent(R, {
602
635
  get t() {
603
636
  return t();
604
637
  },
@@ -609,12 +642,12 @@ const StatusDialog = props => {
609
642
  get fg() {
610
643
  return _$memo(() => s().pendingOpsCount > 0)() ? t().warning : t().textMuted;
611
644
  }
612
- }), _el$48);
613
- _$insertNode(_el$48, _el$49);
614
- _$setProp(_el$48, "marginTop", 1);
615
- _$insertNode(_el$49, _el$50);
616
- _$insertNode(_el$50, _$createTextNode(`Cache TTL`));
617
- _$insert(_el$40, _$createComponent(R, {
645
+ }), _el$55);
646
+ _$insertNode(_el$55, _el$56);
647
+ _$setProp(_el$55, "marginTop", 1);
648
+ _$insertNode(_el$56, _el$57);
649
+ _$insertNode(_el$57, _$createTextNode(`Cache TTL`));
650
+ _$insert(_el$47, _$createComponent(R, {
618
651
  get t() {
619
652
  return t();
620
653
  },
@@ -622,8 +655,8 @@ const StatusDialog = props => {
622
655
  get v() {
623
656
  return s().cacheTtl;
624
657
  }
625
- }), _el$52);
626
- _$insert(_el$40, _$createComponent(R, {
658
+ }), _el$59);
659
+ _$insert(_el$47, _$createComponent(R, {
627
660
  get t() {
628
661
  return t();
629
662
  },
@@ -631,8 +664,8 @@ const StatusDialog = props => {
631
664
  get v() {
632
665
  return _$memo(() => s().lastResponseTime > 0)() ? `${Math.round(elapsed() / 1000)}s ago` : "never";
633
666
  }
634
- }), _el$52);
635
- _$insert(_el$40, _$createComponent(R, {
667
+ }), _el$59);
668
+ _$insert(_el$47, _$createComponent(R, {
636
669
  get t() {
637
670
  return t();
638
671
  },
@@ -643,8 +676,8 @@ const StatusDialog = props => {
643
676
  get fg() {
644
677
  return _$memo(() => !!s().cacheExpired)() ? t().warning : t().textMuted;
645
678
  }
646
- }), _el$52);
647
- _$insert(_el$40, _$createComponent(R, {
679
+ }), _el$59);
680
+ _$insert(_el$47, _$createComponent(R, {
648
681
  get t() {
649
682
  return t();
650
683
  },
@@ -655,12 +688,12 @@ const StatusDialog = props => {
655
688
  get fg() {
656
689
  return t().textMuted;
657
690
  }
658
- }), _el$52);
659
- _$insertNode(_el$52, _el$53);
660
- _$setProp(_el$52, "marginTop", 1);
661
- _$insertNode(_el$53, _el$54);
662
- _$insertNode(_el$54, _$createTextNode(`Memory`));
663
- _$insert(_el$40, _$createComponent(R, {
691
+ }), _el$59);
692
+ _$insertNode(_el$59, _el$60);
693
+ _$setProp(_el$59, "marginTop", 1);
694
+ _$insertNode(_el$60, _el$61);
695
+ _$insertNode(_el$61, _$createTextNode(`Memory`));
696
+ _$insert(_el$47, _$createComponent(R, {
664
697
  get t() {
665
698
  return t();
666
699
  },
@@ -672,7 +705,7 @@ const StatusDialog = props => {
672
705
  return t().accent;
673
706
  }
674
707
  }), null);
675
- _$insert(_el$40, _$createComponent(R, {
708
+ _$insert(_el$47, _$createComponent(R, {
676
709
  get t() {
677
710
  return t();
678
711
  },
@@ -685,14 +718,14 @@ const StatusDialog = props => {
685
718
  }
686
719
  }), null);
687
720
  _$effect(_p$ => {
688
- var _v$11 = t().text,
689
- _v$12 = t().text,
690
- _v$13 = t().text,
691
- _v$14 = t().text;
692
- _v$11 !== _p$.e && (_p$.e = _$setProp(_el$41, "fg", _v$11, _p$.e));
693
- _v$12 !== _p$.t && (_p$.t = _$setProp(_el$45, "fg", _v$12, _p$.t));
694
- _v$13 !== _p$.a && (_p$.a = _$setProp(_el$49, "fg", _v$13, _p$.a));
695
- _v$14 !== _p$.o && (_p$.o = _$setProp(_el$53, "fg", _v$14, _p$.o));
721
+ var _v$13 = t().text,
722
+ _v$14 = t().text,
723
+ _v$15 = t().text,
724
+ _v$16 = t().text;
725
+ _v$13 !== _p$.e && (_p$.e = _$setProp(_el$48, "fg", _v$13, _p$.e));
726
+ _v$14 !== _p$.t && (_p$.t = _$setProp(_el$52, "fg", _v$14, _p$.t));
727
+ _v$15 !== _p$.a && (_p$.a = _$setProp(_el$56, "fg", _v$15, _p$.a));
728
+ _v$16 !== _p$.o && (_p$.o = _$setProp(_el$60, "fg", _v$16, _p$.o));
696
729
  return _p$;
697
730
  }, {
698
731
  e: undefined,
@@ -700,26 +733,26 @@ const StatusDialog = props => {
700
733
  a: undefined,
701
734
  o: undefined
702
735
  });
703
- return _el$40;
736
+ return _el$47;
704
737
  })(), (() => {
705
- var _el$56 = _$createElement("box"),
706
- _el$57 = _$createElement("text"),
707
- _el$58 = _$createElement("b"),
708
- _el$60 = _$createElement("box"),
709
- _el$61 = _$createElement("text"),
710
- _el$62 = _$createElement("b"),
711
- _el$64 = _$createElement("box"),
712
- _el$65 = _$createElement("text"),
713
- _el$66 = _$createElement("b");
714
- _$insertNode(_el$56, _el$57);
715
- _$insertNode(_el$56, _el$60);
716
- _$insertNode(_el$56, _el$64);
717
- _$setProp(_el$56, "flexDirection", "column");
718
- _$setProp(_el$56, "flexGrow", 1);
719
- _$setProp(_el$56, "flexBasis", 0);
720
- _$insertNode(_el$57, _el$58);
721
- _$insertNode(_el$58, _$createTextNode(`Reductions`));
722
- _$insert(_el$56, _$createComponent(R, {
738
+ var _el$63 = _$createElement("box"),
739
+ _el$64 = _$createElement("text"),
740
+ _el$65 = _$createElement("b"),
741
+ _el$67 = _$createElement("box"),
742
+ _el$68 = _$createElement("text"),
743
+ _el$69 = _$createElement("b"),
744
+ _el$71 = _$createElement("box"),
745
+ _el$72 = _$createElement("text"),
746
+ _el$73 = _$createElement("b");
747
+ _$insertNode(_el$63, _el$64);
748
+ _$insertNode(_el$63, _el$67);
749
+ _$insertNode(_el$63, _el$71);
750
+ _$setProp(_el$63, "flexDirection", "column");
751
+ _$setProp(_el$63, "flexGrow", 1);
752
+ _$setProp(_el$63, "flexBasis", 0);
753
+ _$insertNode(_el$64, _el$65);
754
+ _$insertNode(_el$65, _$createTextNode(`Reductions`));
755
+ _$insert(_el$63, _$createComponent(R, {
723
756
  get t() {
724
757
  return t();
725
758
  },
@@ -727,8 +760,8 @@ const StatusDialog = props => {
727
760
  get v() {
728
761
  return `${formatThresholdPercent(s().executeThreshold)}%${s().executeThresholdClamped ? "*" : ""}`;
729
762
  }
730
- }), _el$60);
731
- _$insert(_el$56, _$createComponent(R, {
763
+ }), _el$67);
764
+ _$insert(_el$63, _$createComponent(R, {
732
765
  get t() {
733
766
  return t();
734
767
  },
@@ -736,12 +769,12 @@ const StatusDialog = props => {
736
769
  get v() {
737
770
  return `${fmt(s().lastNudgeTokens)} tok`;
738
771
  }
739
- }), _el$60);
740
- _$insertNode(_el$60, _el$61);
741
- _$setProp(_el$60, "marginTop", 1);
742
- _$insertNode(_el$61, _el$62);
743
- _$insertNode(_el$62, _$createTextNode(`Context Details`));
744
- _$insert(_el$56, _$createComponent(R, {
772
+ }), _el$67);
773
+ _$insertNode(_el$67, _el$68);
774
+ _$setProp(_el$67, "marginTop", 1);
775
+ _$insertNode(_el$68, _el$69);
776
+ _$insertNode(_el$69, _$createTextNode(`Context Details`));
777
+ _$insert(_el$63, _$createComponent(R, {
745
778
  get t() {
746
779
  return t();
747
780
  },
@@ -752,8 +785,8 @@ const StatusDialog = props => {
752
785
  get fg() {
753
786
  return t().textMuted;
754
787
  }
755
- }), _el$64);
756
- _$insert(_el$56, _$createComponent(R, {
788
+ }), _el$71);
789
+ _$insert(_el$63, _$createComponent(R, {
757
790
  get t() {
758
791
  return t();
759
792
  },
@@ -764,14 +797,14 @@ const StatusDialog = props => {
764
797
  get fg() {
765
798
  return t().textMuted;
766
799
  }
767
- }), _el$64);
768
- _$insertNode(_el$64, _el$65);
769
- _$setProp(_el$64, "marginTop", 1);
770
- _$insertNode(_el$65, _el$66);
771
- _$insertNode(_el$66, _$createTextNode(`History Compression`));
772
- _$insert(_el$56, (() => {
773
- var _c$8 = _$memo(() => typeof s().boundaryPresent === "boolean");
774
- return () => _c$8() && _$createComponent(R, {
800
+ }), _el$71);
801
+ _$insertNode(_el$71, _el$72);
802
+ _$setProp(_el$71, "marginTop", 1);
803
+ _$insertNode(_el$72, _el$73);
804
+ _$insertNode(_el$73, _$createTextNode(`History Compression`));
805
+ _$insert(_el$63, (() => {
806
+ var _c$10 = _$memo(() => typeof s().boundaryPresent === "boolean");
807
+ return () => _c$10() && _$createComponent(R, {
775
808
  get t() {
776
809
  return t();
777
810
  },
@@ -781,9 +814,9 @@ const StatusDialog = props => {
781
814
  }
782
815
  });
783
816
  })(), null);
784
- _$insert(_el$56, (() => {
785
- var _c$9 = _$memo(() => s().coverageOrdinal !== undefined);
786
- return () => _c$9() && _$createComponent(R, {
817
+ _$insert(_el$63, (() => {
818
+ var _c$11 = _$memo(() => s().coverageOrdinal !== undefined);
819
+ return () => _c$11() && _$createComponent(R, {
787
820
  get t() {
788
821
  return t();
789
822
  },
@@ -793,9 +826,9 @@ const StatusDialog = props => {
793
826
  }
794
827
  });
795
828
  })(), null);
796
- _$insert(_el$56, (() => {
797
- var _c$0 = _$memo(() => typeof s().boundaryPresent === "boolean");
798
- return () => _c$0() && _$createComponent(R, {
829
+ _$insert(_el$63, (() => {
830
+ var _c$12 = _$memo(() => typeof s().boundaryPresent === "boolean");
831
+ return () => _c$12() && _$createComponent(R, {
799
832
  get t() {
800
833
  return t();
801
834
  },
@@ -805,7 +838,7 @@ const StatusDialog = props => {
805
838
  }
806
839
  });
807
840
  })(), null);
808
- _$insert(_el$56, _$createComponent(R, {
841
+ _$insert(_el$63, _$createComponent(R, {
809
842
  get t() {
810
843
  return t();
811
844
  },
@@ -814,9 +847,9 @@ const StatusDialog = props => {
814
847
  return `~${fmt(s().historyBlockTokens)} tok`;
815
848
  }
816
849
  }), null);
817
- _$insert(_el$56, (() => {
818
- var _c$1 = _$memo(() => s().compressionBudget != null);
819
- return () => _c$1() && _$createComponent(R, {
850
+ _$insert(_el$63, (() => {
851
+ var _c$13 = _$memo(() => s().compressionBudget != null);
852
+ return () => _c$13() && _$createComponent(R, {
820
853
  get t() {
821
854
  return t();
822
855
  },
@@ -826,9 +859,9 @@ const StatusDialog = props => {
826
859
  }
827
860
  });
828
861
  })(), null);
829
- _$insert(_el$56, (() => {
830
- var _c$10 = _$memo(() => !!s().lastDreamerRunAt);
831
- return () => _c$10() && _$createComponent(R, {
862
+ _$insert(_el$63, (() => {
863
+ var _c$14 = _$memo(() => !!s().lastDreamerRunAt);
864
+ return () => _c$14() && _$createComponent(R, {
832
865
  get t() {
833
866
  return t();
834
867
  },
@@ -842,56 +875,109 @@ const StatusDialog = props => {
842
875
  });
843
876
  })(), null);
844
877
  _$effect(_p$ => {
845
- var _v$15 = t().text,
846
- _v$16 = t().text,
847
- _v$17 = t().text;
848
- _v$15 !== _p$.e && (_p$.e = _$setProp(_el$57, "fg", _v$15, _p$.e));
849
- _v$16 !== _p$.t && (_p$.t = _$setProp(_el$61, "fg", _v$16, _p$.t));
850
- _v$17 !== _p$.a && (_p$.a = _$setProp(_el$65, "fg", _v$17, _p$.a));
878
+ var _v$17 = t().text,
879
+ _v$18 = t().text,
880
+ _v$19 = t().text;
881
+ _v$17 !== _p$.e && (_p$.e = _$setProp(_el$64, "fg", _v$17, _p$.e));
882
+ _v$18 !== _p$.t && (_p$.t = _$setProp(_el$68, "fg", _v$18, _p$.t));
883
+ _v$19 !== _p$.a && (_p$.a = _$setProp(_el$72, "fg", _v$19, _p$.a));
851
884
  return _p$;
852
885
  }, {
853
886
  e: undefined,
854
887
  t: undefined,
855
888
  a: undefined
856
889
  });
857
- return _el$56;
890
+ return _el$63;
858
891
  })()];
859
892
  })());
860
893
  _$insert(_el$4, (() => {
861
- var _c$5 = _$memo(() => !!s().lastTransformError);
862
- return () => _c$5() && (() => {
863
- var _el$68 = _$createElement("box"),
864
- _el$69 = _$createElement("text"),
865
- _el$70 = _$createTextNode(`⚠ `);
866
- _$insertNode(_el$68, _el$69);
867
- _$setProp(_el$68, "marginTop", 1);
868
- _$setProp(_el$68, "width", "100%");
869
- _$insertNode(_el$69, _el$70);
870
- _$insert(_el$69, () => s().lastTransformError, null);
871
- _$effect(_$p => _$setProp(_el$69, "fg", t().error, _$p));
872
- return _el$68;
894
+ var _c$7 = _$memo(() => !!s().lastTransformError);
895
+ return () => _c$7() && (() => {
896
+ var _el$75 = _$createElement("box"),
897
+ _el$76 = _$createElement("text"),
898
+ _el$77 = _$createTextNode(`⚠ `);
899
+ _$insertNode(_el$75, _el$76);
900
+ _$setProp(_el$75, "marginTop", 1);
901
+ _$setProp(_el$75, "width", "100%");
902
+ _$insertNode(_el$76, _el$77);
903
+ _$insert(_el$76, () => s().lastTransformError, null);
904
+ _$effect(_$p => _$setProp(_el$76, "fg", t().error, _$p));
905
+ return _el$75;
873
906
  })();
874
- })(), _el$16);
875
- _$insertNode(_el$16, _el$17);
876
- _$setProp(_el$16, "marginTop", 1);
877
- _$setProp(_el$16, "justifyContent", "flex-end");
878
- _$setProp(_el$16, "width", "100%");
879
- _$insertNode(_el$17, _$createTextNode(`Esc to close`));
907
+ })(), _el$18);
908
+ _$insertNode(_el$18, _el$19);
909
+ _$setProp(_el$18, "marginTop", 1);
910
+ _$setProp(_el$18, "width", "100%");
911
+ _$insertNode(_el$19, _el$20);
912
+ _$insertNode(_el$20, _$createTextNode(`Logger`));
913
+ _$insert(_el$18, _$createComponent(R, {
914
+ get t() {
915
+ return t();
916
+ },
917
+ l: "Swallowed writes",
918
+ get v() {
919
+ return String(s().loggerDiagnostics?.swallowedWriteCount ?? 0);
920
+ },
921
+ get fg() {
922
+ return _$memo(() => (s().loggerDiagnostics?.swallowedWriteCount ?? 0) > 0)() ? t().error : t().textMuted;
923
+ }
924
+ }), null);
925
+ _$insert(_el$18, (() => {
926
+ var _c$8 = _$memo(() => !!s().loggerDiagnostics?.lastErrorMessage);
927
+ return () => _c$8() && _$createComponent(R, {
928
+ get t() {
929
+ return t();
930
+ },
931
+ l: "Last error",
932
+ get v() {
933
+ return s().loggerDiagnostics.lastErrorMessage;
934
+ },
935
+ get fg() {
936
+ return t().error;
937
+ }
938
+ });
939
+ })(), null);
940
+ _$insert(_el$18, (() => {
941
+ var _c$9 = _$memo(() => !!s().loggerDiagnostics?.lastErrorTime);
942
+ return () => _c$9() && _$createComponent(R, {
943
+ get t() {
944
+ return t();
945
+ },
946
+ l: "Last error time",
947
+ get v() {
948
+ return s().loggerDiagnostics.lastErrorTime;
949
+ },
950
+ get fg() {
951
+ return t().textMuted;
952
+ }
953
+ });
954
+ })(), null);
955
+ _$insertNode(_el$22, _el$23);
956
+ _$setProp(_el$22, "marginTop", 1);
957
+ _$setProp(_el$22, "justifyContent", "flex-end");
958
+ _$setProp(_el$22, "width", "100%");
959
+ _$insertNode(_el$23, _$createTextNode(`Esc to close`));
880
960
  _$effect(_p$ => {
881
961
  var _v$3 = t().accent,
882
962
  _v$4 = t().textMuted,
883
963
  _v$5 = compactionOff() ? t().accent : s().usagePercentage >= 80 ? t().error : s().usagePercentage >= 65 ? t().warning : t().accent,
884
- _v$6 = t().textMuted;
964
+ _v$6 = t().textMuted,
965
+ _v$7 = t().text,
966
+ _v$8 = t().textMuted;
885
967
  _v$3 !== _p$.e && (_p$.e = _$setProp(_el$6, "fg", _v$3, _p$.e));
886
968
  _v$4 !== _p$.t && (_p$.t = _$setProp(_el$9, "fg", _v$4, _p$.t));
887
969
  _v$5 !== _p$.a && (_p$.a = _$setProp(_el$10, "fg", _v$5, _p$.a));
888
- _v$6 !== _p$.o && (_p$.o = _$setProp(_el$17, "fg", _v$6, _p$.o));
970
+ _v$6 !== _p$.o && (_p$.o = _$setProp(_el$15, "fg", _v$6, _p$.o));
971
+ _v$7 !== _p$.i && (_p$.i = _$setProp(_el$19, "fg", _v$7, _p$.i));
972
+ _v$8 !== _p$.n && (_p$.n = _$setProp(_el$23, "fg", _v$8, _p$.n));
889
973
  return _p$;
890
974
  }, {
891
975
  e: undefined,
892
976
  t: undefined,
893
977
  a: undefined,
894
- o: undefined
978
+ o: undefined,
979
+ i: undefined,
980
+ n: undefined
895
981
  });
896
982
  return _el$4;
897
983
  })();
@@ -1041,31 +1127,31 @@ const EmbedDialog = props => {
1041
1127
  const t = () => theme();
1042
1128
  const lines = () => props.detail.statusText.split("\n");
1043
1129
  return (() => {
1044
- var _el$71 = _$createElement("box"),
1045
- _el$72 = _$createElement("box"),
1046
- _el$73 = _$createElement("text"),
1047
- _el$74 = _$createElement("b");
1048
- _$insertNode(_el$71, _el$72);
1049
- _$setProp(_el$71, "flexDirection", "column");
1050
- _$setProp(_el$71, "width", "100%");
1051
- _$setProp(_el$71, "paddingLeft", 2);
1052
- _$setProp(_el$71, "paddingRight", 2);
1053
- _$setProp(_el$71, "paddingTop", 1);
1054
- _$setProp(_el$71, "paddingBottom", 1);
1055
- _$insertNode(_el$72, _el$73);
1056
- _$setProp(_el$72, "justifyContent", "center");
1057
- _$setProp(_el$72, "width", "100%");
1058
- _$setProp(_el$72, "marginBottom", 1);
1059
- _$insertNode(_el$73, _el$74);
1060
- _$insertNode(_el$74, _$createTextNode(`Embedding`));
1061
- _$insert(_el$71, () => lines().map(line => (() => {
1062
- var _el$76 = _$createElement("text");
1063
- _$insert(_el$76, line);
1064
- _$effect(_$p => _$setProp(_el$76, "fg", t().text, _$p));
1065
- return _el$76;
1130
+ var _el$78 = _$createElement("box"),
1131
+ _el$79 = _$createElement("box"),
1132
+ _el$80 = _$createElement("text"),
1133
+ _el$81 = _$createElement("b");
1134
+ _$insertNode(_el$78, _el$79);
1135
+ _$setProp(_el$78, "flexDirection", "column");
1136
+ _$setProp(_el$78, "width", "100%");
1137
+ _$setProp(_el$78, "paddingLeft", 2);
1138
+ _$setProp(_el$78, "paddingRight", 2);
1139
+ _$setProp(_el$78, "paddingTop", 1);
1140
+ _$setProp(_el$78, "paddingBottom", 1);
1141
+ _$insertNode(_el$79, _el$80);
1142
+ _$setProp(_el$79, "justifyContent", "center");
1143
+ _$setProp(_el$79, "width", "100%");
1144
+ _$setProp(_el$79, "marginBottom", 1);
1145
+ _$insertNode(_el$80, _el$81);
1146
+ _$insertNode(_el$81, _$createTextNode(`Embedding`));
1147
+ _$insert(_el$78, () => lines().map(line => (() => {
1148
+ var _el$83 = _$createElement("text");
1149
+ _$insert(_el$83, line);
1150
+ _$effect(_$p => _$setProp(_el$83, "fg", t().text, _$p));
1151
+ return _el$83;
1066
1152
  })()), null);
1067
- _$effect(_$p => _$setProp(_el$73, "fg", t().accent, _$p));
1068
- return _el$71;
1153
+ _$effect(_$p => _$setProp(_el$80, "fg", t().accent, _$p));
1154
+ return _el$78;
1069
1155
  })();
1070
1156
  };
1071
1157
  async function showEmbedDialog(api, targetSessionId = getSessionId(api)) {
@@ -1131,11 +1217,11 @@ function renderTuiProbeCustomArm(api, result) {
1131
1217
  api.ui.dialog.replace(() => {
1132
1218
  try {
1133
1219
  return (() => {
1134
- var _el$77 = _$createElement("box"),
1135
- _el$78 = _$createElement("text");
1136
- _$insertNode(_el$77, _el$78);
1137
- _$insertNode(_el$78, _$createTextNode(`probe`));
1138
- return _el$77;
1220
+ var _el$84 = _$createElement("box"),
1221
+ _el$85 = _$createElement("text");
1222
+ _$insertNode(_el$84, _el$85);
1223
+ _$insertNode(_el$85, _$createTextNode(`probe`));
1224
+ return _el$84;
1139
1225
  })();
1140
1226
  } catch (error) {
1141
1227
  result.customThrew = probeErrorMessage(error);
@@ -1208,11 +1294,11 @@ function reportTuiProbe(api, result) {
1208
1294
  if (result.customThrew === null) {
1209
1295
  try {
1210
1296
  api.ui.dialog.replace(() => (() => {
1211
- var _el$80 = _$createElement("box"),
1212
- _el$81 = _$createElement("text");
1213
- _$insertNode(_el$80, _el$81);
1214
- _$insert(_el$81, summary);
1215
- return _el$80;
1297
+ var _el$87 = _$createElement("box"),
1298
+ _el$88 = _$createElement("text");
1299
+ _$insertNode(_el$87, _el$88);
1300
+ _$insert(_el$88, summary);
1301
+ return _el$87;
1216
1302
  })());
1217
1303
  return;
1218
1304
  } catch (error) {