@cortexkit/opencode-magic-context 0.37.0 → 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 (94) hide show
  1. package/README.md +2 -0
  2. package/dist/{derive-budgets-0f8xpyw2.js → derive-budgets-da4yg3tz.js} +1 -1
  3. package/dist/features/magic-context/dreamer/classify-prompt.d.ts +5 -1
  4. package/dist/features/magic-context/dreamer/classify-prompt.d.ts.map +1 -1
  5. package/dist/features/magic-context/dreamer/classify.d.ts.map +1 -1
  6. package/dist/features/magic-context/dreamer/manifest-parser.d.ts +8 -0
  7. package/dist/features/magic-context/dreamer/manifest-parser.d.ts.map +1 -1
  8. package/dist/features/magic-context/dreamer/map-memories-prompt.d.ts +7 -1
  9. package/dist/features/magic-context/dreamer/map-memories-prompt.d.ts.map +1 -1
  10. package/dist/features/magic-context/dreamer/map-memories.d.ts +18 -0
  11. package/dist/features/magic-context/dreamer/map-memories.d.ts.map +1 -1
  12. package/dist/features/magic-context/dreamer/storage-dream-runs.d.ts +5 -0
  13. package/dist/features/magic-context/dreamer/storage-dream-runs.d.ts.map +1 -1
  14. package/dist/features/magic-context/dreamer/task-executor.d.ts.map +1 -1
  15. package/dist/features/magic-context/dreamer/verify-prompt.d.ts +5 -1
  16. package/dist/features/magic-context/dreamer/verify-prompt.d.ts.map +1 -1
  17. package/dist/features/magic-context/dreamer/verify.d.ts.map +1 -1
  18. package/dist/features/magic-context/fail-closed-block.d.ts +6 -1
  19. package/dist/features/magic-context/fail-closed-block.d.ts.map +1 -1
  20. package/dist/features/magic-context/reclaim-protection.d.ts +13 -0
  21. package/dist/features/magic-context/reclaim-protection.d.ts.map +1 -0
  22. package/dist/features/magic-context/storage-db.d.ts +6 -1
  23. package/dist/features/magic-context/storage-db.d.ts.map +1 -1
  24. package/dist/features/magic-context/storage-meta-persisted.d.ts +7 -6
  25. package/dist/features/magic-context/storage-meta-persisted.d.ts.map +1 -1
  26. package/dist/features/magic-context/storage-tags.d.ts +13 -5
  27. package/dist/features/magic-context/storage-tags.d.ts.map +1 -1
  28. package/dist/hooks/auto-update-checker/checker.d.ts +8 -1
  29. package/dist/hooks/auto-update-checker/checker.d.ts.map +1 -1
  30. package/dist/hooks/auto-update-checker/index.d.ts.map +1 -1
  31. package/dist/hooks/magic-context/channel2-cycle.d.ts +16 -0
  32. package/dist/hooks/magic-context/channel2-cycle.d.ts.map +1 -0
  33. package/dist/hooks/magic-context/channel2-delivery.d.ts +3 -9
  34. package/dist/hooks/magic-context/channel2-delivery.d.ts.map +1 -1
  35. package/dist/hooks/magic-context/command-handler.d.ts +2 -0
  36. package/dist/hooks/magic-context/command-handler.d.ts.map +1 -1
  37. package/dist/hooks/magic-context/ctx-reduce-nudge.d.ts +33 -103
  38. package/dist/hooks/magic-context/ctx-reduce-nudge.d.ts.map +1 -1
  39. package/dist/hooks/magic-context/emergency-drop.d.ts.map +1 -1
  40. package/dist/hooks/magic-context/event-handler.d.ts.map +1 -1
  41. package/dist/hooks/magic-context/execute-status.d.ts +2 -1
  42. package/dist/hooks/magic-context/execute-status.d.ts.map +1 -1
  43. package/dist/hooks/magic-context/fold-execution-gate.d.ts +2 -0
  44. package/dist/hooks/magic-context/fold-execution-gate.d.ts.map +1 -0
  45. package/dist/hooks/magic-context/hook-handlers.d.ts.map +1 -1
  46. package/dist/hooks/magic-context/hook.d.ts.map +1 -1
  47. package/dist/hooks/magic-context/live-session-state.d.ts +3 -0
  48. package/dist/hooks/magic-context/live-session-state.d.ts.map +1 -1
  49. package/dist/hooks/magic-context/rust-mode-transform.d.ts +4 -2
  50. package/dist/hooks/magic-context/rust-mode-transform.d.ts.map +1 -1
  51. package/dist/hooks/magic-context/strip-content.d.ts +10 -8
  52. package/dist/hooks/magic-context/strip-content.d.ts.map +1 -1
  53. package/dist/hooks/magic-context/supersession-reclaim.d.ts.map +1 -1
  54. package/dist/hooks/magic-context/system-prompt-hash.d.ts.map +1 -1
  55. package/dist/hooks/magic-context/tail-hygiene-walk.d.ts +78 -0
  56. package/dist/hooks/magic-context/tail-hygiene-walk.d.ts.map +1 -0
  57. package/dist/hooks/magic-context/tool-reclaim.d.ts.map +1 -1
  58. package/dist/hooks/magic-context/transform-postprocess-phase.d.ts +3 -0
  59. package/dist/hooks/magic-context/transform-postprocess-phase.d.ts.map +1 -1
  60. package/dist/hooks/magic-context/transform.d.ts.map +1 -1
  61. package/dist/{index-q0t189ay.js → index-9zhhvr4w.js} +27 -35
  62. package/dist/{index-0ze9p983.js → index-mmvhrqqb.js} +1428 -191
  63. package/dist/index.js +604 -763
  64. package/dist/plugin/hooks/create-session-hooks.d.ts.map +1 -1
  65. package/dist/plugin/messages-transform.d.ts.map +1 -1
  66. package/dist/plugin/rpc-handlers.d.ts +2 -0
  67. package/dist/plugin/rpc-handlers.d.ts.map +1 -1
  68. package/dist/{recomp-orchestrator-c3ff16k7.js → recomp-orchestrator-jsde4ygw.js} +2 -2
  69. package/dist/shared/models-dev-cache.d.ts +2 -0
  70. package/dist/shared/models-dev-cache.d.ts.map +1 -1
  71. package/dist/shared/rpc-server.d.ts.map +1 -1
  72. package/dist/shared/rpc-types.d.ts +15 -0
  73. package/dist/shared/rpc-types.d.ts.map +1 -1
  74. package/dist/shared/rpc-utils.d.ts +9 -0
  75. package/dist/shared/rpc-utils.d.ts.map +1 -1
  76. package/dist/shared/tail-hygiene-status.d.ts +15 -0
  77. package/dist/shared/tail-hygiene-status.d.ts.map +1 -0
  78. package/dist/shared/window-geometry.d.ts +3 -2
  79. package/dist/shared/window-geometry.d.ts.map +1 -1
  80. package/package.json +3 -1
  81. package/src/config/schema/magic-context.ts +2 -2
  82. package/src/shared/models-dev-cache.test.ts +25 -0
  83. package/src/shared/models-dev-cache.ts +5 -4
  84. package/src/shared/rpc-server.ts +1 -0
  85. package/src/shared/rpc-types.ts +16 -0
  86. package/src/shared/rpc-utils.test.ts +25 -0
  87. package/src/shared/rpc-utils.ts +80 -0
  88. package/src/shared/tail-hygiene-status.ts +57 -0
  89. package/src/shared/window-geometry.test.ts +34 -1
  90. package/src/shared/window-geometry.ts +37 -40
  91. package/src/tui/index.tsx +11 -1
  92. package/src/tui/slots/sidebar-content.tsx +17 -5
  93. package/src/tui-compiled/index.tsx +311 -289
  94. package/src/tui-compiled/slots/sidebar-content.tsx +316 -287
@@ -12,6 +12,7 @@ import packageJson from "../../../package.json";
12
12
  import { badgeTextColor } from "../badge-contrast";
13
13
  import { loadSidebarSnapshot } from "../data/context-db";
14
14
  import { formatThresholdPercent } from "../../shared/format-threshold";
15
+ import { formatTailHygiene } from "../../shared/tail-hygiene-status";
15
16
  import { compactionOffSidebarRows, nativeCompactionContextLabel } from "../compaction-off";
16
17
  import { computeEffectiveOrder, DEFAULT_SLOT_ORDER, PLUGIN_KEY, queueTuiPreferenceUpdate, readTuiPreferencesFile, readTuiPreferencesFileSync, resolveMagicContextPrefs, watchTuiPreferences } from "../../shared/tui-preferences";
17
18
 
@@ -212,7 +213,7 @@ const TokenBreakdown = props => {
212
213
  key: "conv",
213
214
  tokens: s.conversationTokens,
214
215
  color: COLORS.conversation,
215
- label: "Conversation"
216
+ label: "Conversation*"
216
217
  });
217
218
 
218
219
  // Tool Calls = tool_use/tool_result/tool/tool-invocation parts in messages
@@ -280,43 +281,47 @@ const TokenBreakdown = props => {
280
281
  _$insert(_el$, (() => {
281
282
  var _c$ = _$memo(() => !!!props.collapsed);
282
283
  return () => _c$() && (() => {
283
- var _el$4 = _$createElement("box");
284
+ var _el$4 = _$createElement("box"),
285
+ _el$5 = _$createElement("text");
286
+ _$insertNode(_el$4, _el$5);
284
287
  _$setProp(_el$4, "flexDirection", "column");
285
288
  _$setProp(_el$4, "marginTop", 0);
286
289
  _$insert(_el$4, () => segments().map(seg => {
287
290
  const pct = (seg.tokens / totalTokens() * 100).toFixed(0);
288
291
  return (() => {
289
- var _el$5 = _$createElement("box"),
290
- _el$6 = _$createElement("text"),
291
- _el$7 = _$createElement("text"),
292
- _el$8 = _$createTextNode(` (`),
293
- _el$9 = _$createTextNode(`%)`);
294
- _$insertNode(_el$5, _el$6);
295
- _$insertNode(_el$5, _el$7);
296
- _$setProp(_el$5, "width", "100%");
297
- _$setProp(_el$5, "flexDirection", "row");
298
- _$setProp(_el$5, "justifyContent", "space-between");
299
- _$insert(_el$6, () => seg.label);
292
+ var _el$7 = _$createElement("box"),
293
+ _el$8 = _$createElement("text"),
294
+ _el$9 = _$createElement("text"),
295
+ _el$0 = _$createTextNode(` (`),
296
+ _el$1 = _$createTextNode(`%)`);
300
297
  _$insertNode(_el$7, _el$8);
301
298
  _$insertNode(_el$7, _el$9);
302
- _$insert(_el$7, () => compactTokens(seg.tokens), _el$8);
303
- _$insert(_el$7, pct, _el$9);
299
+ _$setProp(_el$7, "width", "100%");
300
+ _$setProp(_el$7, "flexDirection", "row");
301
+ _$setProp(_el$7, "justifyContent", "space-between");
302
+ _$insert(_el$8, () => seg.label);
303
+ _$insertNode(_el$9, _el$0);
304
+ _$insertNode(_el$9, _el$1);
305
+ _$insert(_el$9, () => compactTokens(seg.tokens), _el$0);
306
+ _$insert(_el$9, pct, _el$1);
304
307
  _$effect(_p$ => {
305
308
  var _v$4 = seg.key,
306
309
  _v$5 = seg.color,
307
310
  _v$6 = props.theme.textMuted;
308
- _v$4 !== _p$.e && (_p$.e = _$setProp(_el$5, "key", _v$4, _p$.e));
309
- _v$5 !== _p$.t && (_p$.t = _$setProp(_el$6, "fg", _v$5, _p$.t));
310
- _v$6 !== _p$.a && (_p$.a = _$setProp(_el$7, "fg", _v$6, _p$.a));
311
+ _v$4 !== _p$.e && (_p$.e = _$setProp(_el$7, "key", _v$4, _p$.e));
312
+ _v$5 !== _p$.t && (_p$.t = _$setProp(_el$8, "fg", _v$5, _p$.t));
313
+ _v$6 !== _p$.a && (_p$.a = _$setProp(_el$9, "fg", _v$6, _p$.a));
311
314
  return _p$;
312
315
  }, {
313
316
  e: undefined,
314
317
  t: undefined,
315
318
  a: undefined
316
319
  });
317
- return _el$5;
320
+ return _el$7;
318
321
  })();
319
- }));
322
+ }), _el$5);
323
+ _$insertNode(_el$5, _$createTextNode(`* includes Reasoning; hygiene excludes it`));
324
+ _$effect(_$p => _$setProp(_el$5, "fg", props.theme.textMuted, _$p));
320
325
  return _el$4;
321
326
  })();
322
327
  })(), null);
@@ -331,42 +336,42 @@ const StatRow = props => {
331
336
  return props.theme.text;
332
337
  });
333
338
  return (() => {
334
- var _el$0 = _$createElement("box"),
335
- _el$1 = _$createElement("text"),
336
- _el$10 = _$createElement("text"),
337
- _el$11 = _$createElement("b");
338
- _$insertNode(_el$0, _el$1);
339
- _$insertNode(_el$0, _el$10);
340
- _$setProp(_el$0, "width", "100%");
341
- _$setProp(_el$0, "flexDirection", "row");
342
- _$setProp(_el$0, "justifyContent", "space-between");
343
- _$insert(_el$1, () => props.label);
339
+ var _el$10 = _$createElement("box"),
340
+ _el$11 = _$createElement("text"),
341
+ _el$12 = _$createElement("text"),
342
+ _el$13 = _$createElement("b");
344
343
  _$insertNode(_el$10, _el$11);
345
- _$insert(_el$11, () => props.value);
344
+ _$insertNode(_el$10, _el$12);
345
+ _$setProp(_el$10, "width", "100%");
346
+ _$setProp(_el$10, "flexDirection", "row");
347
+ _$setProp(_el$10, "justifyContent", "space-between");
348
+ _$insert(_el$11, () => props.label);
349
+ _$insertNode(_el$12, _el$13);
350
+ _$insert(_el$13, () => props.value);
346
351
  _$effect(_p$ => {
347
352
  var _v$7 = props.theme.textMuted,
348
353
  _v$8 = fg();
349
- _v$7 !== _p$.e && (_p$.e = _$setProp(_el$1, "fg", _v$7, _p$.e));
350
- _v$8 !== _p$.t && (_p$.t = _$setProp(_el$10, "fg", _v$8, _p$.t));
354
+ _v$7 !== _p$.e && (_p$.e = _$setProp(_el$11, "fg", _v$7, _p$.e));
355
+ _v$8 !== _p$.t && (_p$.t = _$setProp(_el$12, "fg", _v$8, _p$.t));
351
356
  return _p$;
352
357
  }, {
353
358
  e: undefined,
354
359
  t: undefined
355
360
  });
356
- return _el$0;
361
+ return _el$10;
357
362
  })();
358
363
  };
359
364
  const SectionHeader = props => (() => {
360
- var _el$12 = _$createElement("box"),
361
- _el$13 = _$createElement("text"),
362
- _el$14 = _$createElement("b");
363
- _$insertNode(_el$12, _el$13);
364
- _$setProp(_el$12, "width", "100%");
365
- _$setProp(_el$12, "marginTop", 1);
366
- _$insertNode(_el$13, _el$14);
367
- _$insert(_el$14, () => props.title);
368
- _$effect(_$p => _$setProp(_el$13, "fg", props.theme.text, _$p));
369
- return _el$12;
365
+ var _el$14 = _$createElement("box"),
366
+ _el$15 = _$createElement("text"),
367
+ _el$16 = _$createElement("b");
368
+ _$insertNode(_el$14, _el$15);
369
+ _$setProp(_el$14, "width", "100%");
370
+ _$setProp(_el$14, "marginTop", 1);
371
+ _$insertNode(_el$15, _el$16);
372
+ _$insert(_el$16, () => props.title);
373
+ _$effect(_$p => _$setProp(_el$15, "fg", props.theme.text, _$p));
374
+ return _el$14;
370
375
  })();
371
376
 
372
377
  // Live recomp / session-upgrade progress. Renders while an upgrade runs (and
@@ -425,59 +430,59 @@ const RecompProgressSection = props => {
425
430
  }
426
431
  });
427
432
  return [(() => {
428
- var _el$15 = _$createElement("box"),
429
- _el$16 = _$createElement("text"),
430
- _el$17 = _$createElement("b"),
431
- _el$18 = _$createElement("text");
432
- _$insertNode(_el$15, _el$16);
433
- _$insertNode(_el$15, _el$18);
434
- _$setProp(_el$15, "width", "100%");
435
- _$setProp(_el$15, "marginTop", 1);
436
- _$setProp(_el$15, "flexDirection", "row");
437
- _$setProp(_el$15, "justifyContent", "space-between");
438
- _$insertNode(_el$16, _el$17);
439
- _$insert(_el$17, verb);
440
- _$insert(_el$18, () => label().text);
433
+ var _el$17 = _$createElement("box"),
434
+ _el$18 = _$createElement("text"),
435
+ _el$19 = _$createElement("b"),
436
+ _el$20 = _$createElement("text");
437
+ _$insertNode(_el$17, _el$18);
438
+ _$insertNode(_el$17, _el$20);
439
+ _$setProp(_el$17, "width", "100%");
440
+ _$setProp(_el$17, "marginTop", 1);
441
+ _$setProp(_el$17, "flexDirection", "row");
442
+ _$setProp(_el$17, "justifyContent", "space-between");
443
+ _$insertNode(_el$18, _el$19);
444
+ _$insert(_el$19, verb);
445
+ _$insert(_el$20, () => label().text);
441
446
  _$effect(_p$ => {
442
447
  var _v$9 = props.theme.text,
443
448
  _v$0 = label().color;
444
- _v$9 !== _p$.e && (_p$.e = _$setProp(_el$16, "fg", _v$9, _p$.e));
445
- _v$0 !== _p$.t && (_p$.t = _$setProp(_el$18, "fg", _v$0, _p$.t));
449
+ _v$9 !== _p$.e && (_p$.e = _$setProp(_el$18, "fg", _v$9, _p$.e));
450
+ _v$0 !== _p$.t && (_p$.t = _$setProp(_el$20, "fg", _v$0, _p$.t));
446
451
  return _p$;
447
452
  }, {
448
453
  e: undefined,
449
454
  t: undefined
450
455
  });
451
- return _el$15;
456
+ return _el$17;
452
457
  })(), _$memo(() => _$memo(() => !!(phase() === "recomp" && props.progress.totalMessages > 0))() && (() => {
453
- var _el$19 = _$createElement("box"),
454
- _el$20 = _$createElement("text"),
455
- _el$21 = _$createElement("text"),
456
- _el$22 = _$createTextNode(`%`);
457
- _$insertNode(_el$19, _el$20);
458
- _$insertNode(_el$19, _el$21);
459
- _$setProp(_el$19, "width", "100%");
460
- _$setProp(_el$19, "flexDirection", "row");
461
- _$setProp(_el$19, "justifyContent", "space-between");
462
- _$insert(_el$20, () => progressBar(fraction()));
458
+ var _el$21 = _$createElement("box"),
459
+ _el$22 = _$createElement("text"),
460
+ _el$23 = _$createElement("text"),
461
+ _el$24 = _$createTextNode(`%`);
463
462
  _$insertNode(_el$21, _el$22);
464
- _$insert(_el$21, pct, _el$22);
463
+ _$insertNode(_el$21, _el$23);
464
+ _$setProp(_el$21, "width", "100%");
465
+ _$setProp(_el$21, "flexDirection", "row");
466
+ _$setProp(_el$21, "justifyContent", "space-between");
467
+ _$insert(_el$22, () => progressBar(fraction()));
468
+ _$insertNode(_el$23, _el$24);
469
+ _$insert(_el$23, pct, _el$24);
465
470
  _$effect(_p$ => {
466
471
  var _v$1 = props.theme.accent,
467
472
  _v$10 = props.theme.textMuted;
468
- _v$1 !== _p$.e && (_p$.e = _$setProp(_el$20, "fg", _v$1, _p$.e));
469
- _v$10 !== _p$.t && (_p$.t = _$setProp(_el$21, "fg", _v$10, _p$.t));
473
+ _v$1 !== _p$.e && (_p$.e = _$setProp(_el$22, "fg", _v$1, _p$.e));
474
+ _v$10 !== _p$.t && (_p$.t = _$setProp(_el$23, "fg", _v$10, _p$.t));
470
475
  return _p$;
471
476
  }, {
472
477
  e: undefined,
473
478
  t: undefined
474
479
  });
475
- return _el$19;
480
+ return _el$21;
476
481
  })()), _$memo(() => _$memo(() => !!((phase() === "recomp" || phase() === "migration") && props.progress.note))() && (() => {
477
- var _el$23 = _$createElement("text");
478
- _$insert(_el$23, () => props.progress.note);
479
- _$effect(_$p => _$setProp(_el$23, "fg", props.theme.textMuted, _$p));
480
- return _el$23;
482
+ var _el$25 = _$createElement("text");
483
+ _$insert(_el$25, () => props.progress.note);
484
+ _$effect(_$p => _$setProp(_el$25, "fg", props.theme.textMuted, _$p));
485
+ return _el$25;
481
486
  })()), _$memo(() => _$memo(() => !!(phase() === "recomp" && props.progress.kind !== "embed"))() && _$createComponent(StatRow, {
482
487
  get theme() {
483
488
  return props.theme;
@@ -497,10 +502,10 @@ const RecompProgressSection = props => {
497
502
  },
498
503
  dim: true
499
504
  })), _$memo(() => _$memo(() => !!((phase() === "failed" || phase() === "skipped") && props.progress.message))() && (() => {
500
- var _el$24 = _$createElement("text");
501
- _$insert(_el$24, () => props.progress.message);
502
- _$effect(_$p => _$setProp(_el$24, "fg", props.theme.textMuted, _$p));
503
- return _el$24;
505
+ var _el$26 = _$createElement("text");
506
+ _$insert(_el$26, () => props.progress.message);
507
+ _$effect(_$p => _$setProp(_el$26, "fg", props.theme.textMuted, _$p));
508
+ return _el$26;
504
509
  })())];
505
510
  };
506
511
  const SidebarContent = props => {
@@ -722,122 +727,122 @@ const SidebarContent = props => {
722
727
  return props.theme.accent;
723
728
  });
724
729
  return (() => {
725
- var _el$25 = _$createElement("box"),
726
- _el$26 = _$createElement("box"),
727
- _el$27 = _$createElement("box"),
728
- _el$28 = _$createElement("text"),
729
- _el$29 = _$createElement("b"),
730
+ var _el$27 = _$createElement("box"),
731
+ _el$28 = _$createElement("box"),
732
+ _el$29 = _$createElement("box"),
730
733
  _el$30 = _$createElement("text"),
731
- _el$31 = _$createTextNode(`v`);
732
- _$insertNode(_el$25, _el$26);
733
- _$setProp(_el$25, "width", "100%");
734
- _$setProp(_el$25, "flexDirection", "column");
735
- _$setProp(_el$25, "border", SINGLE_BORDER);
736
- _$setProp(_el$25, "paddingTop", 1);
737
- _$setProp(_el$25, "paddingBottom", 1);
738
- _$setProp(_el$25, "paddingLeft", 1);
739
- _$setProp(_el$25, "paddingRight", 1);
740
- _$insertNode(_el$26, _el$27);
741
- _$insertNode(_el$26, _el$30);
742
- _$setProp(_el$26, "flexDirection", "row");
743
- _$setProp(_el$26, "justifyContent", "space-between");
744
- _$setProp(_el$26, "alignItems", "center");
745
- _$setProp(_el$26, "onMouseDown", () => props.controller.toggleCollapsed());
734
+ _el$31 = _$createElement("b"),
735
+ _el$32 = _$createElement("text"),
736
+ _el$33 = _$createTextNode(`v`);
746
737
  _$insertNode(_el$27, _el$28);
738
+ _$setProp(_el$27, "width", "100%");
739
+ _$setProp(_el$27, "flexDirection", "column");
740
+ _$setProp(_el$27, "border", SINGLE_BORDER);
741
+ _$setProp(_el$27, "paddingTop", 1);
742
+ _$setProp(_el$27, "paddingBottom", 1);
747
743
  _$setProp(_el$27, "paddingLeft", 1);
748
744
  _$setProp(_el$27, "paddingRight", 1);
749
745
  _$insertNode(_el$28, _el$29);
750
- _$insert(_el$29, () => collapsed() ? "▶ " : "▼ ", null);
751
- _$insert(_el$29, headerLabel, null);
746
+ _$insertNode(_el$28, _el$32);
747
+ _$setProp(_el$28, "flexDirection", "row");
748
+ _$setProp(_el$28, "justifyContent", "space-between");
749
+ _$setProp(_el$28, "alignItems", "center");
750
+ _$setProp(_el$28, "onMouseDown", () => props.controller.toggleCollapsed());
751
+ _$insertNode(_el$29, _el$30);
752
+ _$setProp(_el$29, "paddingLeft", 1);
753
+ _$setProp(_el$29, "paddingRight", 1);
752
754
  _$insertNode(_el$30, _el$31);
753
- _$insert(_el$30, () => packageJson.version, null);
754
- _$insert(_el$25, (() => {
755
+ _$insert(_el$31, () => collapsed() ? "▶ " : "▼ ", null);
756
+ _$insert(_el$31, headerLabel, null);
757
+ _$insertNode(_el$32, _el$33);
758
+ _$insert(_el$32, () => packageJson.version, null);
759
+ _$insert(_el$27, (() => {
755
760
  var _c$2 = _$memo(() => !!s()?.lastTransformError);
756
761
  return () => _c$2() && (() => {
757
- var _el$32 = _$createElement("box"),
758
- _el$33 = _$createElement("text"),
759
- _el$34 = _$createTextNode(`⚠ `);
760
- _$insertNode(_el$32, _el$33);
761
- _$setProp(_el$32, "marginTop", 1);
762
- _$setProp(_el$32, "width", "100%");
763
- _$insertNode(_el$33, _el$34);
764
- _$insert(_el$33, () => s().lastTransformError, null);
765
- _$effect(_$p => _$setProp(_el$33, "fg", props.theme.error, _$p));
766
- return _el$32;
762
+ var _el$34 = _$createElement("box"),
763
+ _el$35 = _$createElement("text"),
764
+ _el$36 = _$createTextNode(`⚠ `);
765
+ _$insertNode(_el$34, _el$35);
766
+ _$setProp(_el$34, "marginTop", 1);
767
+ _$setProp(_el$34, "width", "100%");
768
+ _$insertNode(_el$35, _el$36);
769
+ _$insert(_el$35, () => s().lastTransformError, null);
770
+ _$effect(_$p => _$setProp(_el$35, "fg", props.theme.error, _$p));
771
+ return _el$34;
767
772
  })();
768
773
  })(), null);
769
- _$insert(_el$25, (() => {
774
+ _$insert(_el$27, (() => {
770
775
  var _c$3 = _$memo(() => !!s()?.dreamerProgress);
771
776
  return () => _c$3() && (() => {
772
- var _el$35 = _$createElement("box"),
773
- _el$36 = _$createElement("text"),
774
- _el$37 = _$createTextNode(`Dreamer `),
775
- _el$38 = _$createTextNode(`: `),
776
- _el$39 = _$createTextNode(`/`),
777
- _el$40 = _$createTextNode(` processed`);
778
- _$insertNode(_el$35, _el$36);
779
- _$setProp(_el$35, "marginTop", 1);
780
- _$setProp(_el$35, "width", "100%");
781
- _$insertNode(_el$36, _el$37);
782
- _$insertNode(_el$36, _el$38);
783
- _$insertNode(_el$36, _el$39);
784
- _$insertNode(_el$36, _el$40);
785
- _$insert(_el$36, () => s().dreamerProgress.task, _el$38);
786
- _$insert(_el$36, () => s().dreamerProgress.processed, _el$39);
787
- _$insert(_el$36, () => s().dreamerProgress.total, _el$40);
788
- _$effect(_$p => _$setProp(_el$36, "fg", props.theme.warning, _$p));
789
- return _el$35;
777
+ var _el$37 = _$createElement("box"),
778
+ _el$38 = _$createElement("text"),
779
+ _el$39 = _$createTextNode(`Dreamer `),
780
+ _el$40 = _$createTextNode(`: `),
781
+ _el$41 = _$createTextNode(`/`),
782
+ _el$42 = _$createTextNode(` processed`);
783
+ _$insertNode(_el$37, _el$38);
784
+ _$setProp(_el$37, "marginTop", 1);
785
+ _$setProp(_el$37, "width", "100%");
786
+ _$insertNode(_el$38, _el$39);
787
+ _$insertNode(_el$38, _el$40);
788
+ _$insertNode(_el$38, _el$41);
789
+ _$insertNode(_el$38, _el$42);
790
+ _$insert(_el$38, () => s().dreamerProgress.task, _el$40);
791
+ _$insert(_el$38, () => s().dreamerProgress.processed, _el$41);
792
+ _$insert(_el$38, () => s().dreamerProgress.total, _el$42);
793
+ _$effect(_$p => _$setProp(_el$38, "fg", props.theme.warning, _$p));
794
+ return _el$37;
790
795
  })();
791
796
  })(), null);
792
- _$insert(_el$25, (() => {
797
+ _$insert(_el$27, (() => {
793
798
  var _c$4 = _$memo(() => !!(s() && s().inputTokens > 0));
794
799
  return () => _c$4() && (() => {
795
- var _el$41 = _$createElement("box");
796
- _$setProp(_el$41, "flexDirection", "column");
797
- _$insert(_el$41, (() => {
800
+ var _el$43 = _$createElement("box");
801
+ _$setProp(_el$43, "flexDirection", "column");
802
+ _$insert(_el$43, (() => {
798
803
  var _c$7 = _$memo(() => (s()?.contextLimit ?? 0) > 0);
799
804
  return () => _c$7() && (() => {
800
- var _el$42 = _$createElement("box"),
801
- _el$43 = _$createElement("text"),
802
- _el$44 = _$createTextNode(` / `);
803
- _$insertNode(_el$42, _el$43);
804
- _$setProp(_el$42, "width", "100%");
805
- _$setProp(_el$42, "flexDirection", "row");
806
- _$setProp(_el$42, "justifyContent", "space-between");
807
- _$insert(_el$42, (() => {
808
- var _c$8 = _$memo(() => !!compactionOff());
809
- return () => _c$8() ? (() => {
810
- var _el$45 = _$createElement("text"),
811
- _el$46 = _$createElement("b");
812
- _$insertNode(_el$45, _el$46);
813
- _$insert(_el$46, () => nativeCompactionContextLabel(s()));
814
- _$effect(_$p => _$setProp(_el$45, "fg", contextSummaryColor(), _$p));
815
- return _el$45;
816
- })() : (() => {
805
+ var _el$44 = _$createElement("box"),
806
+ _el$45 = _$createElement("text"),
807
+ _el$46 = _$createTextNode(` / `);
808
+ _$insertNode(_el$44, _el$45);
809
+ _$setProp(_el$44, "width", "100%");
810
+ _$setProp(_el$44, "flexDirection", "row");
811
+ _$setProp(_el$44, "justifyContent", "space-between");
812
+ _$insert(_el$44, (() => {
813
+ var _c$0 = _$memo(() => !!compactionOff());
814
+ return () => _c$0() ? (() => {
817
815
  var _el$47 = _$createElement("text"),
818
- _el$48 = _$createElement("b"),
819
- _el$49 = _$createTextNode(`%`),
820
- _el$50 = _$createTextNode(` / `),
821
- _el$51 = _$createTextNode(`%`);
816
+ _el$48 = _$createElement("b");
822
817
  _$insertNode(_el$47, _el$48);
823
- _$insertNode(_el$47, _el$50);
824
- _$insertNode(_el$47, _el$51);
825
- _$insertNode(_el$48, _el$49);
826
- _$insert(_el$48, () => s().usagePercentage.toFixed(1), _el$49);
827
- _$insert(_el$47, () => formatThresholdPercent(s().executeThreshold), _el$51);
828
- _$insert(_el$47, () => s().executeThresholdClamped ? "*" : "", null);
818
+ _$insert(_el$48, () => nativeCompactionContextLabel(s()));
829
819
  _$effect(_$p => _$setProp(_el$47, "fg", contextSummaryColor(), _$p));
830
820
  return _el$47;
821
+ })() : (() => {
822
+ var _el$49 = _$createElement("text"),
823
+ _el$50 = _$createElement("b"),
824
+ _el$51 = _$createTextNode(`%`),
825
+ _el$52 = _$createTextNode(` / `),
826
+ _el$53 = _$createTextNode(`%`);
827
+ _$insertNode(_el$49, _el$50);
828
+ _$insertNode(_el$49, _el$52);
829
+ _$insertNode(_el$49, _el$53);
830
+ _$insertNode(_el$50, _el$51);
831
+ _$insert(_el$50, () => s().usagePercentage.toFixed(1), _el$51);
832
+ _$insert(_el$49, () => formatThresholdPercent(s().executeThreshold), _el$53);
833
+ _$insert(_el$49, () => s().executeThresholdClamped ? "*" : "", null);
834
+ _$effect(_$p => _$setProp(_el$49, "fg", contextSummaryColor(), _$p));
835
+ return _el$49;
831
836
  })();
832
- })(), _el$43);
833
- _$insertNode(_el$43, _el$44);
834
- _$insert(_el$43, () => compactTokens(s().inputTokens), _el$44);
835
- _$insert(_el$43, () => compactTokens(s().contextLimit), null);
836
- _$effect(_$p => _$setProp(_el$43, "fg", contextSummaryColor(), _$p));
837
- return _el$42;
837
+ })(), _el$45);
838
+ _$insertNode(_el$45, _el$46);
839
+ _$insert(_el$45, () => compactTokens(s().inputTokens), _el$46);
840
+ _$insert(_el$45, () => compactTokens(s().contextLimit), null);
841
+ _$effect(_$p => _$setProp(_el$45, "fg", contextSummaryColor(), _$p));
842
+ return _el$44;
838
843
  })();
839
844
  })(), null);
840
- _$insert(_el$41, _$createComponent(TokenBreakdown, {
845
+ _$insert(_el$43, _$createComponent(TokenBreakdown, {
841
846
  get theme() {
842
847
  return props.theme;
843
848
  },
@@ -848,19 +853,43 @@ const SidebarContent = props => {
848
853
  return collapsed();
849
854
  }
850
855
  }), null);
851
- _$effect(_$p => _$setProp(_el$41, "marginTop", collapsed() ? 0 : 1, _$p));
852
- return _el$41;
856
+ _$insert(_el$43, (() => {
857
+ var _c$8 = _$memo(() => !!!collapsed());
858
+ return () => _c$8() && (() => {
859
+ var _el$54 = _$createElement("text");
860
+ _$insertNode(_el$54, _$createTextNode(`Conversation includes reasoning estimates; hygiene excludes reasoning.`));
861
+ _$effect(_$p => _$setProp(_el$54, "fg", props.theme.textMuted, _$p));
862
+ return _el$54;
863
+ })();
864
+ })(), null);
865
+ _$insert(_el$43, (() => {
866
+ var _c$9 = _$memo(() => s().tailHygiene !== undefined);
867
+ return () => _c$9() && _$createComponent(StatRow, {
868
+ get theme() {
869
+ return props.theme;
870
+ },
871
+ label: "Hygiene",
872
+ get value() {
873
+ return formatTailHygiene(s().tailHygiene);
874
+ },
875
+ get warning() {
876
+ return !s().tailHygiene.evaluable;
877
+ }
878
+ });
879
+ })(), null);
880
+ _$effect(_$p => _$setProp(_el$43, "marginTop", collapsed() ? 0 : 1, _$p));
881
+ return _el$43;
853
882
  })();
854
883
  })(), null);
855
- _$insert(_el$25, (() => {
884
+ _$insert(_el$27, (() => {
856
885
  var _c$5 = _$memo(() => !!collapsed());
857
886
  return () => _c$5() && (() => {
858
- var _el$52 = _$createElement("box");
859
- _$setProp(_el$52, "width", "100%");
860
- _$setProp(_el$52, "flexDirection", "column");
861
- _$insert(_el$52, (() => {
862
- var _c$9 = _$memo(() => !!compactionOff());
863
- return () => _c$9() ? compactionOffSidebarRows(s()).map(row => _$createComponent(StatRow, {
887
+ var _el$56 = _$createElement("box");
888
+ _$setProp(_el$56, "width", "100%");
889
+ _$setProp(_el$56, "flexDirection", "column");
890
+ _$insert(_el$56, (() => {
891
+ var _c$1 = _$memo(() => !!compactionOff());
892
+ return () => _c$1() ? compactionOffSidebarRows(s()).map(row => _$createComponent(StatRow, {
864
893
  get theme() {
865
894
  return props.theme;
866
895
  },
@@ -877,117 +906,117 @@ const SidebarContent = props => {
877
906
  return row.label !== "Memories";
878
907
  }
879
908
  })) : [(() => {
880
- var _el$53 = _$createElement("box"),
881
- _el$54 = _$createElement("text");
882
- _$insertNode(_el$53, _el$54);
883
- _$setProp(_el$53, "width", "100%");
884
- _$setProp(_el$53, "flexDirection", "row");
885
- _$setProp(_el$53, "justifyContent", "space-between");
886
- _$insertNode(_el$54, _$createTextNode(`Historian`));
887
- _$insert(_el$53, (() => {
888
- var _c$0 = _$memo(() => !!s()?.historianRunning);
889
- return () => _c$0() ? (() => {
890
- var _el$67 = _$createElement("text");
891
- _$insertNode(_el$67, _$createTextNode(`comparting ⟳`));
892
- _$effect(_$p => _$setProp(_el$67, "fg", props.theme.warning, _$p));
893
- return _el$67;
909
+ var _el$57 = _$createElement("box"),
910
+ _el$58 = _$createElement("text");
911
+ _$insertNode(_el$57, _el$58);
912
+ _$setProp(_el$57, "width", "100%");
913
+ _$setProp(_el$57, "flexDirection", "row");
914
+ _$setProp(_el$57, "justifyContent", "space-between");
915
+ _$insertNode(_el$58, _$createTextNode(`Historian`));
916
+ _$insert(_el$57, (() => {
917
+ var _c$10 = _$memo(() => !!s()?.historianRunning);
918
+ return () => _c$10() ? (() => {
919
+ var _el$71 = _$createElement("text");
920
+ _$insertNode(_el$71, _$createTextNode(`comparting ⟳`));
921
+ _$effect(_$p => _$setProp(_el$71, "fg", props.theme.warning, _$p));
922
+ return _el$71;
894
923
  })() : (() => {
895
- var _el$69 = _$createElement("text");
896
- _$insertNode(_el$69, _$createTextNode(`idle`));
897
- _$effect(_$p => _$setProp(_el$69, "fg", props.theme.textMuted, _$p));
898
- return _el$69;
924
+ var _el$73 = _$createElement("text");
925
+ _$insertNode(_el$73, _$createTextNode(`idle`));
926
+ _$effect(_$p => _$setProp(_el$73, "fg", props.theme.textMuted, _$p));
927
+ return _el$73;
899
928
  })();
900
929
  })(), null);
901
- _$effect(_$p => _$setProp(_el$54, "fg", props.theme.textMuted, _$p));
902
- return _el$53;
930
+ _$effect(_$p => _$setProp(_el$58, "fg", props.theme.textMuted, _$p));
931
+ return _el$57;
903
932
  })(), _$createComponent(Show, {
904
933
  get when() {
905
934
  return s()?.dreamerProgress;
906
935
  },
907
936
  children: progress => (() => {
908
- var _el$71 = _$createElement("box"),
909
- _el$72 = _$createElement("text"),
910
- _el$74 = _$createElement("text"),
911
- _el$75 = _$createTextNode(` `),
912
- _el$76 = _$createTextNode(`/`);
913
- _$insertNode(_el$71, _el$72);
914
- _$insertNode(_el$71, _el$74);
915
- _$setProp(_el$71, "width", "100%");
916
- _$setProp(_el$71, "flexDirection", "row");
917
- _$setProp(_el$71, "justifyContent", "space-between");
918
- _$insertNode(_el$72, _$createTextNode(`Dreamer`));
919
- _$insertNode(_el$74, _el$75);
920
- _$insertNode(_el$74, _el$76);
921
- _$insert(_el$74, () => progress().task, _el$75);
922
- _$insert(_el$74, () => progress().processed, _el$76);
923
- _$insert(_el$74, () => progress().total, null);
937
+ var _el$75 = _$createElement("box"),
938
+ _el$76 = _$createElement("text"),
939
+ _el$78 = _$createElement("text"),
940
+ _el$79 = _$createTextNode(` `),
941
+ _el$80 = _$createTextNode(`/`);
942
+ _$insertNode(_el$75, _el$76);
943
+ _$insertNode(_el$75, _el$78);
944
+ _$setProp(_el$75, "width", "100%");
945
+ _$setProp(_el$75, "flexDirection", "row");
946
+ _$setProp(_el$75, "justifyContent", "space-between");
947
+ _$insertNode(_el$76, _$createTextNode(`Dreamer`));
948
+ _$insertNode(_el$78, _el$79);
949
+ _$insertNode(_el$78, _el$80);
950
+ _$insert(_el$78, () => progress().task, _el$79);
951
+ _$insert(_el$78, () => progress().processed, _el$80);
952
+ _$insert(_el$78, () => progress().total, null);
924
953
  _$effect(_p$ => {
925
954
  var _v$19 = props.theme.textMuted,
926
955
  _v$20 = props.theme.warning;
927
- _v$19 !== _p$.e && (_p$.e = _$setProp(_el$72, "fg", _v$19, _p$.e));
928
- _v$20 !== _p$.t && (_p$.t = _$setProp(_el$74, "fg", _v$20, _p$.t));
956
+ _v$19 !== _p$.e && (_p$.e = _$setProp(_el$76, "fg", _v$19, _p$.e));
957
+ _v$20 !== _p$.t && (_p$.t = _$setProp(_el$78, "fg", _v$20, _p$.t));
929
958
  return _p$;
930
959
  }, {
931
960
  e: undefined,
932
961
  t: undefined
933
962
  });
934
- return _el$71;
963
+ return _el$75;
935
964
  })()
936
965
  }), (() => {
937
- var _el$56 = _$createElement("box"),
938
- _el$57 = _$createElement("text"),
939
- _el$59 = _$createElement("text");
940
- _$insertNode(_el$56, _el$57);
941
- _$insertNode(_el$56, _el$59);
942
- _$setProp(_el$56, "width", "100%");
943
- _$setProp(_el$56, "flexDirection", "row");
944
- _$setProp(_el$56, "justifyContent", "space-between");
945
- _$insertNode(_el$57, _$createTextNode(`Memories`));
946
- _$insert(_el$59, (() => {
947
- var _c$1 = _$memo(() => (s()?.memoryBlockCount ?? 0) > 0);
948
- return () => _c$1() ? `${s().memoryBlockCount}/${s()?.memoryCount ?? 0}` : String(s()?.memoryCount ?? 0);
966
+ var _el$60 = _$createElement("box"),
967
+ _el$61 = _$createElement("text"),
968
+ _el$63 = _$createElement("text");
969
+ _$insertNode(_el$60, _el$61);
970
+ _$insertNode(_el$60, _el$63);
971
+ _$setProp(_el$60, "width", "100%");
972
+ _$setProp(_el$60, "flexDirection", "row");
973
+ _$setProp(_el$60, "justifyContent", "space-between");
974
+ _$insertNode(_el$61, _$createTextNode(`Memories`));
975
+ _$insert(_el$63, (() => {
976
+ var _c$11 = _$memo(() => (s()?.memoryBlockCount ?? 0) > 0);
977
+ return () => _c$11() ? `${s().memoryBlockCount}/${s()?.memoryCount ?? 0}` : String(s()?.memoryCount ?? 0);
949
978
  })());
950
979
  _$effect(_p$ => {
951
980
  var _v$15 = props.theme.textMuted,
952
981
  _v$16 = props.theme.textMuted;
953
- _v$15 !== _p$.e && (_p$.e = _$setProp(_el$57, "fg", _v$15, _p$.e));
954
- _v$16 !== _p$.t && (_p$.t = _$setProp(_el$59, "fg", _v$16, _p$.t));
982
+ _v$15 !== _p$.e && (_p$.e = _$setProp(_el$61, "fg", _v$15, _p$.e));
983
+ _v$16 !== _p$.t && (_p$.t = _$setProp(_el$63, "fg", _v$16, _p$.t));
955
984
  return _p$;
956
985
  }, {
957
986
  e: undefined,
958
987
  t: undefined
959
988
  });
960
- return _el$56;
989
+ return _el$60;
961
990
  })(), (() => {
962
- var _el$60 = _$createElement("box"),
963
- _el$61 = _$createElement("text"),
964
- _el$63 = _$createElement("text"),
965
- _el$64 = _$createTextNode(`C:`),
966
- _el$65 = _$createTextNode(` Q:`),
967
- _el$66 = _$createTextNode(` N:`);
968
- _$insertNode(_el$60, _el$61);
969
- _$insertNode(_el$60, _el$63);
970
- _$setProp(_el$60, "width", "100%");
971
- _$setProp(_el$60, "flexDirection", "row");
972
- _$setProp(_el$60, "justifyContent", "space-between");
973
- _$insertNode(_el$61, _$createTextNode(`Status`));
974
- _$insertNode(_el$63, _el$64);
975
- _$insertNode(_el$63, _el$65);
976
- _$insertNode(_el$63, _el$66);
977
- _$insert(_el$63, () => s()?.compartmentCount ?? 0, _el$65);
978
- _$insert(_el$63, () => s()?.pendingOpsCount ?? 0, _el$66);
979
- _$insert(_el$63, () => s()?.sessionNoteCount ?? 0, null);
991
+ var _el$64 = _$createElement("box"),
992
+ _el$65 = _$createElement("text"),
993
+ _el$67 = _$createElement("text"),
994
+ _el$68 = _$createTextNode(`C:`),
995
+ _el$69 = _$createTextNode(` Q:`),
996
+ _el$70 = _$createTextNode(` N:`);
997
+ _$insertNode(_el$64, _el$65);
998
+ _$insertNode(_el$64, _el$67);
999
+ _$setProp(_el$64, "width", "100%");
1000
+ _$setProp(_el$64, "flexDirection", "row");
1001
+ _$setProp(_el$64, "justifyContent", "space-between");
1002
+ _$insertNode(_el$65, _$createTextNode(`Status`));
1003
+ _$insertNode(_el$67, _el$68);
1004
+ _$insertNode(_el$67, _el$69);
1005
+ _$insertNode(_el$67, _el$70);
1006
+ _$insert(_el$67, () => s()?.compartmentCount ?? 0, _el$69);
1007
+ _$insert(_el$67, () => s()?.pendingOpsCount ?? 0, _el$70);
1008
+ _$insert(_el$67, () => s()?.sessionNoteCount ?? 0, null);
980
1009
  _$effect(_p$ => {
981
1010
  var _v$17 = props.theme.textMuted,
982
1011
  _v$18 = props.theme.textMuted;
983
- _v$17 !== _p$.e && (_p$.e = _$setProp(_el$61, "fg", _v$17, _p$.e));
984
- _v$18 !== _p$.t && (_p$.t = _$setProp(_el$63, "fg", _v$18, _p$.t));
1012
+ _v$17 !== _p$.e && (_p$.e = _$setProp(_el$65, "fg", _v$17, _p$.e));
1013
+ _v$18 !== _p$.t && (_p$.t = _$setProp(_el$67, "fg", _v$18, _p$.t));
985
1014
  return _p$;
986
1015
  }, {
987
1016
  e: undefined,
988
1017
  t: undefined
989
1018
  });
990
- return _el$60;
1019
+ return _el$64;
991
1020
  })(), _$createComponent(Show, {
992
1021
  get when() {
993
1022
  return s()?.recompProgress;
@@ -1002,38 +1031,38 @@ const SidebarContent = props => {
1002
1031
  })
1003
1032
  })];
1004
1033
  })());
1005
- return _el$52;
1034
+ return _el$56;
1006
1035
  })();
1007
1036
  })(), null);
1008
- _$insert(_el$25, (() => {
1037
+ _$insert(_el$27, (() => {
1009
1038
  var _c$6 = _$memo(() => !!!collapsed());
1010
1039
  return () => _c$6() && [_$memo(() => _$memo(() => !!(!compactionOff() && sections().historian))() && [(() => {
1011
- var _el$77 = _$createElement("box"),
1012
- _el$78 = _$createElement("text"),
1013
- _el$79 = _$createElement("b");
1014
- _$insertNode(_el$77, _el$78);
1015
- _$setProp(_el$77, "width", "100%");
1016
- _$setProp(_el$77, "marginTop", 1);
1017
- _$setProp(_el$77, "flexDirection", "row");
1018
- _$setProp(_el$77, "justifyContent", "space-between");
1019
- _$insertNode(_el$78, _el$79);
1020
- _$insertNode(_el$79, _$createTextNode(`Historian`));
1021
- _$insert(_el$77, (() => {
1022
- var _c$10 = _$memo(() => !!s()?.historianRunning);
1023
- return () => _c$10() ? (() => {
1024
- var _el$81 = _$createElement("text");
1025
- _$insertNode(_el$81, _$createTextNode(`comparting ⟳`));
1026
- _$effect(_$p => _$setProp(_el$81, "fg", props.theme.warning, _$p));
1027
- return _el$81;
1040
+ var _el$81 = _$createElement("box"),
1041
+ _el$82 = _$createElement("text"),
1042
+ _el$83 = _$createElement("b");
1043
+ _$insertNode(_el$81, _el$82);
1044
+ _$setProp(_el$81, "width", "100%");
1045
+ _$setProp(_el$81, "marginTop", 1);
1046
+ _$setProp(_el$81, "flexDirection", "row");
1047
+ _$setProp(_el$81, "justifyContent", "space-between");
1048
+ _$insertNode(_el$82, _el$83);
1049
+ _$insertNode(_el$83, _$createTextNode(`Historian`));
1050
+ _$insert(_el$81, (() => {
1051
+ var _c$12 = _$memo(() => !!s()?.historianRunning);
1052
+ return () => _c$12() ? (() => {
1053
+ var _el$85 = _$createElement("text");
1054
+ _$insertNode(_el$85, _$createTextNode(`comparting ⟳`));
1055
+ _$effect(_$p => _$setProp(_el$85, "fg", props.theme.warning, _$p));
1056
+ return _el$85;
1028
1057
  })() : (() => {
1029
- var _el$83 = _$createElement("text");
1030
- _$insertNode(_el$83, _$createTextNode(`idle`));
1031
- _$effect(_$p => _$setProp(_el$83, "fg", props.theme.textMuted, _$p));
1032
- return _el$83;
1058
+ var _el$87 = _$createElement("text");
1059
+ _$insertNode(_el$87, _$createTextNode(`idle`));
1060
+ _$effect(_$p => _$setProp(_el$87, "fg", props.theme.textMuted, _$p));
1061
+ return _el$87;
1033
1062
  })();
1034
1063
  })(), null);
1035
- _$effect(_$p => _$setProp(_el$78, "fg", props.theme.text, _$p));
1036
- return _el$77;
1064
+ _$effect(_$p => _$setProp(_el$82, "fg", props.theme.text, _$p));
1065
+ return _el$81;
1037
1066
  })(), _$createComponent(StatRow, {
1038
1067
  get theme() {
1039
1068
  return props.theme;
@@ -1198,10 +1227,10 @@ const SidebarContent = props => {
1198
1227
  _v$12 = props.theme.accent,
1199
1228
  _v$13 = badgeTextColor(props.theme.accent, props.theme.background),
1200
1229
  _v$14 = props.theme.textMuted;
1201
- _v$11 !== _p$.e && (_p$.e = _$setProp(_el$25, "borderColor", _v$11, _p$.e));
1202
- _v$12 !== _p$.t && (_p$.t = _$setProp(_el$27, "backgroundColor", _v$12, _p$.t));
1203
- _v$13 !== _p$.a && (_p$.a = _$setProp(_el$28, "fg", _v$13, _p$.a));
1204
- _v$14 !== _p$.o && (_p$.o = _$setProp(_el$30, "fg", _v$14, _p$.o));
1230
+ _v$11 !== _p$.e && (_p$.e = _$setProp(_el$27, "borderColor", _v$11, _p$.e));
1231
+ _v$12 !== _p$.t && (_p$.t = _$setProp(_el$29, "backgroundColor", _v$12, _p$.t));
1232
+ _v$13 !== _p$.a && (_p$.a = _$setProp(_el$30, "fg", _v$13, _p$.a));
1233
+ _v$14 !== _p$.o && (_p$.o = _$setProp(_el$32, "fg", _v$14, _p$.o));
1205
1234
  return _p$;
1206
1235
  }, {
1207
1236
  e: undefined,
@@ -1209,7 +1238,7 @@ const SidebarContent = props => {
1209
1238
  a: undefined,
1210
1239
  o: undefined
1211
1240
  });
1212
- return _el$25;
1241
+ return _el$27;
1213
1242
  })();
1214
1243
  };
1215
1244
  export function createSidebarContentSlot(api) {